|
|
Line 1: |
Line 1: |
| 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:
| |
| <syntaxhighlight>
| |
| @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" .
| |
| </syntaxhighlight>
| |
|
| |
| ==Lecture 2: RDF==
| |
| Blank nodes for anonymity, or when we have not decided on a URI:
| |
| <syntaxhighlight lang="Python">
| |
| 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'))
| |
| </syntaxhighlight>
| |
|
| |
| Blank nodes used to group related properties:
| |
| <syntaxhighlight>
| |
| 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'))
| |
| </syntaxhighlight>
| |
|
| |
| Literals:
| |
| <syntaxhighlight>
| |
| 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'))
| |
| </syntaxhighlight>
| |
|
| |
| Alternative container (open):
| |
| <syntaxhighlight>
| |
| 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'))
| |
| </syntaxhighlight>
| |
|
| |
| Sequence container (open):
| |
| <syntaxhighlight>
| |
| 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'))
| |
| </syntaxhighlight>
| |
|
| |
| Collection (closed list):
| |
| <syntaxhighlight>
| |
| 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'))
| |
| </syntaxhighlight>
| |
|
| |
|
| =Example lab solutions= | | =Example lab solutions= |