0

我正在使用 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 的幕后情况?

4

1 回答 1

1

您可以使用 Virtuoso trace_on() 函数来启用将传递给 Virtuoso 的查询等记录到virtuoso.log文件中以供查看。

这应该可以帮助您查看 Redland 层传递的内容以及可能发生的任何错误等。

据我所知,我们还没有对 Redland Python 绑定进行任何测试,但我们在Virtuoso 开源树中确实有一个C基于测试程序,用于测试我们的 Redland Storage 提供程序

我希望这有帮助 ...

于 2013-01-30T10:21:30.387 回答