我很难找到一个明确,明智的rdflib使用上下文的例子.
ConjunctiveGraph不接受上下文,并且不推荐使用Graph.我应该如何在同一个全局ConjunctiveGraph中的不同上下文中创建和操作?
ConjunctiveGraph不接受上下文,并且不推荐使用Graph.我应该如何在同一个全局ConjunctiveGraph中的不同上下文中创建和操作?
解决方法
是.这是代码
- 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,charlie) )
- love_ctx.add( (bob,hates,charlie) )
- love_ctx.add( (charlie,bob) )
- food_ctx.add( (alice,likes,chocolate) )
- food_ctx.add( (alice,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
这是输出
- 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/#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/#charlie'))
- (rdflib.URIRef('http://example.com/#charlie'),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/#bob'))
- food context
- (rdflib.URIRef('http://example.com/#alice'),rdflib.URIRef('http://example.com/#pizza'))