来自AllegroGraph Python API的Prolog查询中的OWL推理

时间:2012-05-07 21:39:37

标签: python prolog triplestore allegrograph

我注意到在AllegroGraph Python API教程here中,每当他们想要使用OWL推理时,他们都使用conn.getStatements方法而不是发出Prolog或SPARQL查询。是否可以通过发出Prolog或SPARQL查询而不是使用conn.getStatements方法从OWL推理器推断出三元组?我尝试了一个Prolog查询:

(select (?x ?y) (q ?x !ex:owned-by ?y))

我将所有者定义为owl:inverseOf ex:owns并且在我的商店中拥有三个ex:someone ex:owns ex:something,但我没有得到任何结果。我确实得到了使用conn.getStatements的结果,所以我错过了Prolog查询中必不可少的内容吗?

1 个答案:

答案 0 :(得分:2)

在调用evaluate之前,您是否在从prepareTupleQuery返回的查询对象上调用了setIncludeInferred?

http://www.franz.com/agraph/support/documentation/v4/python-tutorial/python-API-40.html#Query%20Class

默认情况下IncludeInferred为False。我认为有效值是错误的(没有推理),“rdfs ++”或True,以及“限制”,如HTTP http查询参数的HTTP rest文档中所述。 Python实现只传递值。

http://www.franz.com/agraph/support/documentation/v4/http-protocol.html#header2-364