Examples from the lectures: Difference between revisions
From info216
(→S04) |
(→S03) |
||
Line 36: | Line 36: | ||
==S03== | ==S03== | ||
===Local query with RDFlib=== | |||
<syntaxhighlight> | <syntaxhighlight> | ||
from rdflib import Graph, Namespace | from rdflib import Graph, Namespace |
Revision as of 13:03, 21 February 2022
This page contains code examples from the lectures.
S02
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'))