3

2 つの異なるエンジンで 1 つの SPARQL クエリを試しました。

  1. Protege 4.3 - SPARQL クエリ タブ
  2. イエナ 2.11.0

クエリは同じですが、これら 2 つのツールによって返される結果は異なります。

DESCRIBE次のようなクエリを試しました。

DESCRIBE ?x
WHERE { ?x :someproperty "somevalue"}

?xprotege からの結果は、主語/目的語として取るタプルを与えてくれます。jena のものは?x主語としてのみ使用されます。

私の質問は次のとおりです。

  1. SPARQL の構文は統一されていますか?
  2. プロテジで働きたい場合DESCRIBE、イエナで何をすればいいですか?
4

1 に答える 1

3

最初の質問に答えるには、はい、両方のツールで同じクエリを使用したため、SPARQL 構文は統一されています。しかし、あなたが実際に求めているのは、2 つのツールの結果が異なるかどうかです。つまり、SPARQL ユニフォームのセマンティクスです。

yesの場合DESCRIBE、結果は SPARQL 仕様によって異なることが明示的に許可されます。つまり、no SPARQL のセマンティクスは均一ではありませんが、これは の場合のみですDESCRIBE

SPARQL 仕様のセクション 16.4 DESCRIBE (参考情報)を参照してください。

クエリ パターンは、結果セットを作成するために使用されます。このDESCRIBEフォームは、ソリューションで識別されたリソースのそれぞれを、IRI によって直接指定されたリソースとともに取得し、ターゲット RDF データセットを含む利用可能な情報から取得できる「説明」を取得することによって、単一の RDF グラフを組み立てます。説明はクエリ サービスによって決定されます。

ここで重要な部分は、説明がクエリ サービスによって決定されることを示す最後の 2 文です。これは、Protege と Jena の両方の回答が正しいことを意味します。なぜなら、彼らは説明をどのように形成するかを選択できるからです。

Jena DESCRIBE 処理の変更

質問の 2 番目の部分に答えるにはDESCRIBE、カスタムのDescribeHandlerと関連するDescribeHandlerFactoryを実装することで、Jena がクエリを処理する方法を変更できます。次に、次のようにファクトリを登録する必要があります。

DescribeHandlerRegistry.get().set(new YourDescribeHandlerFactory());
于 2014-01-22T03:14:42.660 に答える