Examples from the lectures

From info216
Revision as of 13:02, 21 February 2022 by Sinoa (talk | contribs) (→‎S04)

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

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'))