Python Examples
From Info216
This page will be updated with Python examples related to the labs as the course progresses.
Examples from the lectures
Lecture 1: Introduction to KGs
Turtle example:
@prefix ex: <http://example.org/> . ex:Roger_Stone ex:name "Roger Stone" ; ex:occupation ex:lobbyist ; ex:significant_person ex:Donald_Trump . ex:Donald_Trump ex:name "Donald Trump" .
Lecture 2: RDF
Blank nodes for anonymity, or when we have not decided on a URI:
from rdflib import Graph, Namespace, Literal, BNode, RDF, RDFS, DC, FOAF, XSD EX = Namespace('http://example.org/') g = Graph() g.bind('ex', EX) # this is why the line '@prefix ex: <http://example.org/> .' # and the 'ex.' prefix are used when we print out Turtle later robertMueller = BNode() g.add((robertMueller, RDF.type, EX.Human)) g.add((robertMueller, FOAF.name, Literal('Robert Mueller', lang='en'))) g.add((robertMueller, EX.position_held, Literal('Director of the Federal Bureau of Investigation', lang='en'))) print(g.serialize(format='turtle'))
Blank nodes used to group related properties:
from rdflib import Graph, Namespace, Literal, BNode, RDF, RDFS, DC, FOAF, XSD EX = Namespace('http://example.org/') g = Graph() g.bind('ex', EX) # This is a task in Exercise 2 print(g.serialize(format='turtle'))
Literals:
from rdflib import Graph, Namespace, Literal, BNode, RDF, RDFS, DC, FOAF, XSD EX = Namespace('http://example.org/') g = Graph() g.bind('ex', EX) g.add((EX.Robert_Mueller, RDF.type, EX.Human)) g.add((EX.Robert_Mueller, FOAF.name, Literal('Robert Mueller', lang='en'))) g.add((EX.Robert_Mueller, FOAF.name, Literal('رابرت مولر', lang='fa'))) g.add((EX.Robert_Mueller, DC.description, Literal('sixth director of the FBI', datatype=XSD.string))) g.add((EX.Robert_Mueller, EX.start_time, Literal(2001, datatype=XSD.integer))) print(g.serialize(format='turtle'))
Alternative container (open):
from rdflib import Graph, Namespace, Literal, BNode, RDF, RDFS, DC, FOAF, XSD EX = Namespace('http://example.org/') g = Graph() g.bind('ex', EX) muellerReportArchives = BNode() g.add((muellerReportArchives, RDF.type, RDF.Alt)) archive1 = 'https://archive.org/details/MuellerReportVolume1Searchable/' \ 'Mueller%20Report%20Volume%201%20Searchable/' archive2 = 'https://edition.cnn.com/2019/04/18/politics/full-mueller-report-pdf/index.html' archive3 = 'https://www.politico.com/story/2019/04/18/mueller-report-pdf-download-text-file-1280891' g.add((muellerReportArchives, RDFS.member, Literal(archive1, datatype=XSD.anyURI))) g.add((muellerReportArchives, RDFS.member, Literal(archive2, datatype=XSD.anyURI))) g.add((muellerReportArchives, RDFS.member, Literal(archive3, datatype=XSD.anyURI))) g.add((EX.Mueller_Report, RDF.type, FOAF.Document)) g.add((EX.Mueller_Report, DC.contributor, EX.Robert_Mueller)) g.add((EX.Mueller_Report, SCHEMA.archivedAt, muellerReportArchives)) print(g.serialize(format='turtle'))
Sequence container (open):
from rdflib import Graph, Namespace, Literal, BNode, RDF, RDFS, DC, FOAF, XSD EX = Namespace('http://example.org/') g = Graph() g.bind('ex', EX) donaldTrumpSpouses = BNode() g.add((donaldTrumpSpouses, RDF.type, RDF.Seq)) g.add((donaldTrumpSpouses, RDF._1, EX.IvanaTrump)) g.add((donaldTrumpSpouses, RDF._2, EX.MarlaMaples)) g.add((donaldTrumpSpouses, RDF._3, EX.MelaniaTrump)) g.add((EX.Donald_Trump, SCHEMA.spouse, donaldTrumpSpouses)) print(g.serialize(format='turtle'))
Collection (closed list):
from rdflib import Graph, Namespace, Literal, BNode, RDF, RDFS, DC, FOAF, XSD EX = Namespace('http://example.org/') g = Graph() g.bind('ex', EX) from rdflib.collection import Collection g = Graph() g.bind('ex', EX) donaldTrumpSpouses = BNode() Collection(g, donaldTrumpSpouses, [ EX.IvanaTrump, EX.MarlaMaples, EX.MelaniaTrump ]) g.add((EX.Donald_Trump, SCHEMA.spouse, donaldTrumpSpouses)) print(g.serialize(format='turtle')) g.serialize(destination='s02_Donald_Trump_spouses_list.ttl', format='turtle') print(g.serialize(format='turtle'))
Example lab solutions
Getting started (Lab 1)
from rdflib import Graph, Namespace g = Graph() ex = Namespace('http://example.org/') g.bind("ex", ex) #The Mueller Investigation was lead by Robert Mueller. g.add((ex.Mueller_Investigation, ex.leadBy, ex.Robert_Muller)) #It involved Paul Manafort, Rick Gates, George Papadopoulos, Michael Flynn, and Roger Stone. g.add((ex.Mueller_Investigation, ex.involved, ex.Paul_Manafort)) g.add((ex.Mueller_Investigation, ex.involved, ex.Rick_Gates)) g.add((ex.Mueller_Investigation, ex.involved, ex.George_Papadopoulos)) g.add((ex.Mueller_Investigation, ex.involved, ex.Michael_Flynn)) g.add((ex.Mueller_Investigation, ex.involved, ex.Michael_Cohen)) g.add((ex.Mueller_Investigation, ex.involved, ex.Roger_Stone)) # --- Paul Manafort --- #Paul Manafort was business partner of Rick Gates. g.add((ex.Paul_Manafort, ex.businessManager, ex.Rick_Gates)) # He was campaign chairman for Trump g.add((ex.Paul_Manafort, ex.campaignChairman, ex.Donald_Trump)) # He was charged with money laundering, tax evasion, and foreign lobbying. g.add((ex.Paul_Manafort, ex.chargedWith, ex.MoneyLaundering)) g.add((ex.Paul_Manafort, ex.chargedWith, ex.TaxEvasion)) g.add((ex.Paul_Manafort, ex.chargedWith, ex.ForeignLobbying)) # He was convicted for bank and tax fraud. g.add((ex.Paul_Manafort, ex.convictedFor, ex.BankFraud)) g.add((ex.Paul_Manafort, ex.convictedFor, ex.TaxFraud)) # He pleaded guilty to conspiracy. g.add((ex.Paul_Manafort, ex.pleadGuiltyTo, ex.Conspiracy)) # He was sentenced to prison. g.add((ex.Paul_Manafort, ex.sentencedTo, ex.Prison)) # He negotiated a plea agreement. g.add((ex.Paul_Manafort, ex.negoiated, ex.PleaBargain)) # --- Rick Gates --- #Rick Gates was charged with money laundering, tax evasion and foreign lobbying. g.add((ex.Rick_Gates, ex.chargedWith, ex.MoneyLaundering)) g.add((ex.Rick_Gates, ex.chargedWith, ex.TaxEvasion)) g.add((ex.Rick_Gates, ex.chargedWith, ex.ForeignLobbying)) #He pleaded guilty to conspiracy and lying to FBI. g.add((ex.Rick_Gates, ex.pleadGuiltyTo, ex.Conspiracy)) g.add((ex.Rick_Gates, ex.pleadGuiltyTo, ex.LyingToFBI)) #Use the serialize method to write out the model in different formats on screen print(g.serialize(format="ttl")) # g.serialize("lab1.ttl", format="ttl") #or to file #Loop through the triples in the model to print out all triples that have pleading guilty as predicate for subject, object in g[ : ex.pleadGuiltyTo : ]: print(subject, ex.pleadGuiltyTo, object) # Michael Cohen, Michael Flynn and the lying is part of lab 2 and therefore the answer is not provided this week #Write a method (function) that submits your model for rendering and saves the returned image to file. import requests import shutil def graphToImage(graph): data = {"rdf":graph, "from":"ttl", "to":"png"} link = "http://www.ldf.fi/service/rdf-grapher" response = requests.get(link, params = data, stream=True) # print(response.content) print(response.raw) with open("lab1.png", "wb") as fil: shutil.copyfileobj(response.raw, fil) graph = g.serialize(format="ttl") graphToImage(graph)