2012-05-07 40 views
1

我注意到,在AllegroGraph Python API教程here中,只要他們想使用OWL推理,他們就會使用conn.getStatements方法而不是發佈Prolog或SPARQL查詢。是否可以通過發佈Prolog或SPARQL查詢而不是使用conn.getStatements方法來從OWL推理器中獲取三元組?我嘗試了Prolog的查詢:在AllegroGraph Python API的Prolog查詢中進行OWL推理

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

我在那裏擁有定義逐個爲owl:inverseOf ex:owns和曾在我的商店三重ex:someone ex:owns ex:something,我沒有得到結果。我確實從conn.getStatements得到了結果,所以我在Prolog查詢中丟失了一些重要的東西?

回答

2

您是否在調用evaluate之前調用了prepareTupleQuery返回的查詢對象上的setIncludeInferred方法?

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

IncludeInferred默認爲false。我相信有效值是false(無推理),「rdfs ++」或True和「restriction」,正如HTTP推理http查詢參數的HTTP rest文檔中所述。 Python實現只是傳遞值。

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

+0

啊,那就是我所缺少的。謝謝! –