トリプル ストアに同じトリプルが 2 回含まれている場合、この冗長性に関する信頼できる立場は (存在する場合) ?
さらに、トリプルストアは、同じコンテキスト内で同じトリプルを 2 回格納することを許可されるべきですか?
rdflib では、同じトリプルを 2 回 (またはそれ以上) 保存できるようです。これがリーダー
import rdflib
from rdflib import store
s = rdflib.plugin.get('MySQL', store.Store)('rdfstore')
config_string = "host=localhost,password=foo,user=foo,db=foo"
rt = s.open(config_string,create=False)
if rt != store.VALID_STORE:
s.open(config_string,create=True)
graph = rdflib.ConjunctiveGraph(s, identifier = rdflib.URIRef("urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52"))
rows = graph.query("SELECT ?id ?value { ?id <http://localhost#ha> ?value . }")
for r in rows:
print r[0], r[1]
そしてこれがライター
import rdflib
from rdflib import store
s = rdflib.plugin.get('MySQL', store.Store)('rdfstore')
config_string = "host=localhost,password=foo,user=foo,db=foo"
rt = s.open(config_string,create=False)
if rt != store.VALID_STORE:
s.open(config_string,create=True)
graph = rdflib.ConjunctiveGraph(s, identifier = rdflib.URIRef("urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52"))
graph.add( ( rdflib.URIRef("http://localhost/1000"), rdflib.URIRef("http://localhost#ha"), rdflib.Literal("18")) )
graph.commit()
これは私が得るものです
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py
table kb_7b066eca61_relations Doesn't exist
table kb_7b066eca61_relations Doesn't exist
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py
sbo@dhcp-045:~/tmp/gd $ python ./writer2.py
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py
http://localhost/1000 18
sbo@dhcp-045:~/tmp/gd $ python ./writer2.py
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py
http://localhost/1000 18
http://localhost/1000 18
私には、それはバグのように見えます。修正されたバージョンは、両方のトリプルが同じコンテキストに属していることを示しており、実際には 2 つのトリプルもあります。
len : 2
http://localhost/1000 18
http://localhost/1000 18
(rdflib.URIRef('http://localhost/1000'), rdflib.URIRef('http://localhost#ha'), rdflib.Literal(u'18'), <Graph identifier=urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52 (<class 'rdflib.Graph.Graph'>)>)
(rdflib.URIRef('http://localhost/1000'), rdflib.URIRef('http://localhost#ha'), rdflib.Literal(u'18'), <Graph identifier=urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52 (<class 'rdflib.Graph.Graph'>)>)