我注意到在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查询中必不可少的内容吗?
答案 0 :(得分:2)
在调用evaluate之前,您是否在从prepareTupleQuery返回的查询对象上调用了setIncludeInferred?
默认情况下IncludeInferred为False。我认为有效值是错误的(没有推理),“rdfs ++”或True,以及“限制”,如HTTP http查询参数的HTTP rest文档中所述。 Python实现只传递值。
http://www.franz.com/agraph/support/documentation/v4/http-protocol.html#header2-364