2009-11-24 6 views
6

Ich habe Probleme, ein klares, sinnvolles Beispiel für die Verwendung von Kontext mit RDFLIB zu finden. ConjunctiveGraph akzeptiert keine Kontexte und Graph ist veraltet. Wie soll ich verschiedene Kontexte im selben globalen ConjunctiveGraph erstellen und bearbeiten?Verwendung von Kontexten in rdflib

+0

vielleicht habe ich es ... mal sehen, ob ich meine eigene Frage beantworten kann .. –

Antwort

11

Ja. Dies ist der Code

import rdflib 
from rdflib.Graph import Graph 

conj=rdflib.ConjunctiveGraph() 

NS=rdflib.Namespace("http://example.com/#") 
NS_CTX=rdflib.Namespace("http://example.com/context/#") 

alice=NS.alice 
bob=NS.bob 
charlie=NS.charlie 

pizza=NS.pizza 
meat=NS.meat 
chocolate=NS.chocolate 

loves=NS.loves 
hates=NS.hates 
likes=NS.likes 
dislikes=NS.dislikes 

love_ctx=Graph(conj.store, NS_CTX.love) 
food_ctx=Graph(conj.store, NS_CTX.food) 

love_ctx.add((alice, loves, bob)) 
love_ctx.add((alice, loves, charlie)) 
love_ctx.add((bob, hates, charlie)) 
love_ctx.add((charlie, loves, bob)) 

food_ctx.add((alice, likes, chocolate)) 
food_ctx.add((alice, likes, meat)) 
food_ctx.add((alice, dislikes, pizza)) 

print "Full context" 
for t in conj: 
    print t 

print "" 
print "Contexts" 
for c in conj.contexts(): 
    print c 

print "love context" 
for t in love_ctx: 
    print t 

print "food context" 
for t in food_ctx: 
    print t 

Und dies ist der Ausgang

Full context 
(rdflib.URIRef('http://example.com/#bob'), rdflib.URIRef('http://example.com/#hates'), rdflib.URIRef('http://example.com/#charlie')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#likes'), rdflib.URIRef('http://example.com/#chocolate')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#likes'), rdflib.URIRef('http://example.com/#meat')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#dislikes'), rdflib.URIRef('http://example.com/#pizza')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#loves'), rdflib.URIRef('http://example.com/#bob')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#loves'), rdflib.URIRef('http://example.com/#charlie')) 
(rdflib.URIRef('http://example.com/#charlie'), rdflib.URIRef('http://example.com/#loves'), rdflib.URIRef('http://example.com/#bob')) 

Contexts 
<http://example.com/context/#food> a rdfg:Graph;rdflib:storage [a rdflib:Store;rdfs:label 'IOMemory']. 
<http://example.com/context/#love> a rdfg:Graph;rdflib:storage [a rdflib:Store;rdfs:label 'IOMemory']. 
love context 
(rdflib.URIRef('http://example.com/#bob'), rdflib.URIRef('http://example.com/#hates'), rdflib.URIRef('http://example.com/#charlie')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#loves'), rdflib.URIRef('http://example.com/#bob')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#loves'), rdflib.URIRef('http://example.com/#charlie')) 
(rdflib.URIRef('http://example.com/#charlie'), rdflib.URIRef('http://example.com/#loves'), rdflib.URIRef('http://example.com/#bob')) 
food context 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#likes'), rdflib.URIRef('http://example.com/#chocolate')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#likes'), rdflib.URIRef('http://example.com/#meat')) 
(rdflib.URIRef('http://example.com/#alice'), rdflib.URIRef('http://example.com/#dislikes'), rdflib.URIRef('http://example.com/#pizza')) 
Verwandte Themen