Examples from the lectures
From info216
This page contains code examples from the lectures.
S02
Getting started with RDFlib
from inspect import formatargspec
from rdflib import Graph, Literal, RDF, FOAF, Namespace
g = Graph()
EX = Namespace('http://ex.org/')
g.add((EX.Bob, RDF.type, FOAF.Person))
g.add((EX.Alice, RDF.type, FOAF.Person))
g.add((EX.Carol, RDF.type, FOAF.Person))
g.add((EX.Bob, FOAF.knows, EX.Alice))
g.add((EX.Bob, FOAF.knows, EX.Carol))
g.add((EX.Bob, FOAF.name, Literal('Bob')))
g.add((EX.Alice, FOAF.name, Literal('Alice')))
g.add((EX.Carol, FOAF.name, Literal('Carol')))
g.namespace_manager.bind('ex', EX)
print(g.serialize(format='json-ld'))
for p, o in g[ EX.Bob : : ]:
print(p, o)
g2 = Graph()
g2.parse('https://www.wikidata.org/entity/Q935079.ttl')
print(g2.serialize())
S03
Local query with RDFlib
from rdflib import Graph, Namespace
REX = Namespace('http://example.org/royal#')
g = Graph()
g.parse('family.ttl', format='ttl')
res = g.query("""
CONSTRUCT {
?child fam:aunt ?aunt .
} WHERE {
?child fam:hasParent / fam:hasSister ?aunt .
}
""",
initNs={
'fam': 'http://example.org/family#'
},
initBindings={
'child': REX.SverreMagnus
})
S04
Remote query with SPARQLWrapper
import SPARQLWrapper
endpoint = 'http://sandbox.i2s.uib.no/bigdata/namespace/kb/sparql'
paper_uri = 'http://semanticscholar.org/paper/c93a37e6922e09f34fc093f7e4f9675775d4557d'
client = SPARQLWrapper.SPARQLWrapper(endpoint=endpoint)
client.setReturnFormat('json')
client.setQuery(f'''
DESCRIBE <{paper_uri}>
''')
res = client.queryAndConvert()
Remote update with SPARQLWrapper
client.setReturnFormat('xml')
client.setMethod('POST')
client.setQuery('''
DELETE DATA {
<http://example.org/Abra> <http://example.org/ka> <http://example.org/Dabra> .
}
''')
res = client.queryAndConvert()
client.setMethod('GET')
Local update with RDFlib
from rdflib import Graph, Namespace
g = Graph()
g.parse('family.ttl', format='turtle')
FAM = Namespace('http://example.org/family#')
g.update('''
DELETE {
?child fam:hasAunt ?parent .
} INSERT {
?child fam:hasAunt ?sister .
} WHERE {
?child fam:hasParent ?parent .
?parent fam:hasSister ?sister .
}
''',
initNs={
'fam': FAM
})
print(g.serialize(format='turtle'))