SPARQL DESCRIBE のデフォルトグラフに対する動作 - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SPARQL DESCRIBE のデフォルトグラフに対する動作

SPARQL DESCRIBE クエリフォームを使用すると、データの構造を知らなくても、またクエリを作成しなくても、リソースに関する情報を取得できます。この情報をどのように組み立てるかは、SPARQL の実装に任されています。Neptune には、DESCRIBE が使用できるさまざまなモードやアルゴリズムを呼び出すクエリヒントがいくつか用意されています。

Neptune の実装では、モードに関係なく、DESCRIBESPARQL デフォルトグラフにあるデータのみを使用します。これは SPARQL がデータセットを扱う方法と一致しています (SPARQL 仕様の「RDF データセットの指定」を参照) 。

Neptune では、FROMFROM NAMED 句を使用して特定の名前付きグラフが指定されない限り、デフォルトのグラフには、データベース内のすべての名前付きグラフの和集合に含まれるすべてのユニークなトリプルが含まれます。Neptune のすべての RDF データは、名前付きのグラフに保存されます。名前付きグラフのコンテキストなしでトリプルが挿入された場合、Neptune は http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph という名前付きグラフに格納します。

FROM 句を使用して 1 つ以上の名前付きグラフが指定された場合、デフォルトのグラフは、それらの名前付きグラフに含まれるすべてのユニークなトリプルを結合したグラフになります。FROM 句がなく、FROM NAMED 句が 1 つ以上ある場合、デフォルトのグラフは空になります。

SPARQL DESCRIBE の例

以下のデータを考慮します。

PREFIX ex: <https://example.com/> GRAPH ex:g1 { ex:s ex:p1 "a" . ex:s ex:p2 "c" . } GRAPH ex:g2 { ex:s ex:p3 "b" . ex:s ex:p2 "c" . } ex:s ex:p3 "d" .

このクエリでは:

PREFIX ex: <https://example.com/> DESCRIBE ?s FROM ex:g1 FROM NAMED ex:g2 WHERE { GRAPH ex:g2 { ?s ?p "b" . } }

Neptune は以下を返します。

ex:s ex:p1 "a" . ex:s ex:p2 "c" .

ここでは、グラフパターン GRAPH ex:g2 { ?s ?p "b" } が最初に評価され、その結果として ?s のバインディングが行われ、次に DESCRIBE 部分がデフォルトのグラフ (現在は ex:g1) に対して評価されます。

ただし、このクエリでは:

PREFIX ex: <https://example.com/> DESCRIBE ?s FROM NAMED ex:g1 WHERE { GRAPH ex:g1 { ?s ?p "a" . } }

Neptune は何も返しません。なぜなら、FROM NAMED 句があり、FROM 句がない場合、デフォルトのグラフは空になるからです。

次のクエリでは、DESCRIBE が使用され、FROM または FROM NAMED 句はありません。

PREFIX ex: <https://example.com/> DESCRIBE ?s WHERE { GRAPH ex:g1 { ?s ?p "a" . } }

この状況では、デフォルトのグラフは、データベース内のすべての名前付きグラフの和集合に含まれるすべてのユニークなトリプルで構成されます(正式にはRDFマージ)。そのため、Neptune は次のように返します。

ex:s ex:p1 "a" . ex:s ex:p2 "c" . ex:s ex:p3 "b" . ex:s ex:p3 "d" .