我对关联数据和rdflib非常陌生,我完全迷失了方向。我正在尝试使用rdflib创建一个持久化存储,并使用'Sleepycat‘加载DBLP数据库rdf文件,然后开始查询it.This,这就是我所做的:
import rdflib
graph = rdflib.Graph("Sleepycat")
graph.open("C:\Users\Maral\Desktop\Springer-DBLP\Mydblp", create=True)
graph.parse("C:\Users\Maral\Desktop\dblp.rdf", format = 'xml')它花了近2个小时,但现在似乎dblp.rdf是加载,解析和存储在Mydblp中。但是len(graph)返回0,我不知道如何访问和查询数据。
我遗漏了什么步骤吗?数据是否正确加载?所有的示例都是关于将三元组添加到图中,但我只想查询已经存在的内容。
谢谢。
发布于 2017-04-07 04:18:57
这是一个有效的示例,
from rdflib import ConjunctiveGraph, Namespace, Literal
from rdflib.store import NO_STORE, VALID_STORE
graph = ConjunctiveGraph('Sleepycat')
rt = graph.open("C:\Users\Maral\Desktop\Springer-DBLP\Mydblp", create=False)
if rt == NO_STORE:
# There is no underlying Sleepycat infrastructure, create it
graph.open(path, create=True)
else:
assert rt == VALID_STORE, 'The underlying store is corrupt'
print('Triples in graph before add: ', len(graph))
ontologies = rdflib.Graph()
ontologies.parse('C:\Users\Maral\Desktop\dblp.rdf',format='xml')
for onto in ontologies:
graph.add(onto)
print ('Triples in graph after add: ', len(graph))
print (graph.serialize(format='xml'))
# close when done, otherwise sleepycat will leak lock entries.
graph.close()发布于 2017-10-30 16:50:35
几天前我也遇到了同样的问题。经过相当多的实验,我能够在我本地的triplestore上运行SPARQL查询。虽然这个问题早在一年前就提出了,但我希望我的ans能帮助其他人。
下面是我所做的(跳过将三元组添加到三元组存储中的部分):
from rdflib import ConjunctiveGraph, Namespace, Literal
import rdflib
from rdflib import plugin
path = './mytriplestore'
graph = ConjunctiveGraph('Sleepycat')
graph.open(path, create = False)
query = """SELECT *
WHERE {
?s ?p ?o.
}
Limit 10"""
qres = graph.query(query)
print qres
for row in qres:
print rowhttps://stackoverflow.com/questions/40104729
复制相似问题