1

私はこの質問で表現されたほぼ同じ要件を持っています:推移的な関係にあるすべてのノードを取得します

Protege3.4.8を使用しています。これはOwl-Liteプロジェクトです。タイプNodeのオブジェクトプロパティとして定義されている推移的なプロパティ"contains"があり、タイプA、B、Cの子孫があります。

次のようなプロパティを含むことで相互にリンクする個人がいます。

AはCを含むBはCを含む

次のSPARQLクエリを実行すると:

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

私は得る:

A1 B1
B1 C1

包含の推移的な性質のため、私は取得することを期待します

A1 C1 

それも。私はここで何が間違っているのですか?私がリンクした質問には、回答にイエナが含まれていますが、イエナモデルでこれを行うと違いがありますか?

4

2 に答える 2

1

Ok、

さらに検索すると、次のページに移動しました:http: //opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-jena-and-sparql

このページからの次の引用は(おそらく)私が見ている動作の背後にある理由を説明しています:

「私たちの目的では、SPARQLクエリは、ProtegeのSPARQLクエリパネルから直接実行することも、特殊なJenaライブラリメソッドを使用してJAVAアプリケーション内から実行することもできます。どちらのアプローチでも、明示的なオブジェクトとプロパティの関係に関するクエリを処理できますが、Jenaライブラリには利点があります。したがって、Jenaライブラリのメソッドを使用して実行されたクエリは、遷移関係と推測された関係も考慮に入れて結果を返すことができます。」

于 2012-08-23T11:41:20.447 に答える
0

SPARQLはRDFクエリ言語であるため、すべてのSPARQLエンジンがOWL含意を実装する必要はありません(つまり、クエリの評価にOWLセマンティクスを使用する必要があります)。詳細については、http://www.w3.org/TR/sparql11-entailment/をご覧ください。

どの実装が実際に内部でProtegeを使用しているかわからない...

于 2012-09-04T08:41:48.910 に答える