代码之家  ›  专栏  ›  技术社区  ›  Stefano Borini

在RDflib中使用上下文

  •  6
  • Stefano Borini  · 技术社区  · 16 年前

    我很难找到一个清晰、合理的使用RDflib上下文的例子。 Concepegraph不接受上下文,图形已被弃用。我应该如何在同一个全局结膜生长图中创建和操作不同的上下文?

    1 回复  |  直到 16 年前
        1
  •  12
  •   Stefano Borini    16 年前

    对。这是密码

    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
    

    这就是输出

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