我正在使用Redland Python绑定将三元组添加到Virtuoso RDF.Storage(storage_name='virtuoso')中,并试图了解上下文是如何实现的。我得到了一些令人惊讶的结果。
如果我将三元组相加:
model.add_statements(context=something)我可以用以下命令把它们都找回来:
model.as_stream(context=something)不出所料。但是,如果我用相同的存储创建了一个新模型,并尝试这样做:
for stmt in model:
print stmt我没有得到任何结果,就好像模型是空的。另外,当我尝试以下操作时:
model.remove_statements_with_context(context=something)
for stmt in model.as_stream(context=something):
print stmt我仍然得到了所有的三元组;它们并没有像我期望的那样被删除。
最后,当我尝试简单的SPARQL查询,这些查询应该与上下文中存储的一些三元组相匹配时,我没有得到任何结果。
有没有人能帮我了解一下Redland contexts和Virtuoso在幕后发生了什么?
发布于 2013-01-30 18:21:30
您可以使用Virtuoso trace_on() function来启用传递到Virtuoso的查询等,以便记录在virtuoso.log文件中以供查看。
这将帮助您查看Redland层正在传递的内容,以及可能发生的任何错误等。
据我所知,我们还没有对Redland Python绑定进行任何测试,但是我们在Virtuoso open source tree中有一个C-based测试程序,它就是used for testing our Redland Storage provider。
我希望这能帮到你。
https://stackoverflow.com/questions/14592152
复制相似问题