2012-08-23 34 views
1

我幾乎在這個問題expresed一樣的要求:Get all nodes in a transitive relation在門徒SPARQL查詢結果不承認傳遞特性

我使用的門生3.4.8。這是一個Owl-Lite項目。 我有一個傳遞屬性「包含」,其被定義爲Node類型的對象屬性 節點具有A型的後代,B和C

我有鏈接到彼此個人通過包含屬性是這樣的:

一個含有B含有C

當我運行以下SPARQL查詢:

SELECT ?A ?B 
WHERE 
{ 
    ?A :contains ?B   
} 

我得到:

A1 B1 
B1 C1 

由於包含的傳遞性質,我希望得到

A1 C1 

了。 我在這裏做錯了什麼?我所連接的問題包括耶拿在答案中,在Jena模型中做這件事會有什麼不同?

回答

1

好吧,

而且搜索使我這個頁面:http://opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-jena-and-sparql

從這個頁面(可能)以下報價解釋行爲背後的原因我看到:

「對於我們的目的,SPARQL查詢可以通過Protege中的SPARQL查詢面板直接執行 或使用專門的Jena庫方法在JAVA 應用程序中執行。兩個 ap步驟能夠處理關於顯式對象和財產關係的查詢,但耶拿圖書館具有使用推理器的優勢。因此查詢中使用耶拿庫方法執行可以返回 結果採取帳戶也傳遞性和推斷的關係。」

0

SPARQL是一個RDF查詢語言,所以不是所有的SPARQL引擎應該實現OWL蘊涵(即使用OWL語義評估查詢)。進一步的細節在http://www.w3.org/TR/sparql11-entailment/

不知道哪個實現實際使用引擎蓋下的Protege ...