最初の質問に答えるには、はい、両方のツールで同じクエリを使用したため、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());