SPARQL で使用されるクエリヒント DESCRIBE - Amazon Neptune

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

SPARQL で使用されるクエリヒント DESCRIBE

SPARQL DESCRIBE クエリは、リソースの説明をリクエストするための柔軟なメカニズムを提供します。ただし、SPARQL仕様では の正確なセマンティクスは定義されていませんDESCRIBE

エンジンリリース 1.2.0.2 以降、Neptune はさまざまな状況に適したいくつかの異なる DESCRIBE モードとアルゴリズムをサポートしています。

このサンプルデータセットは、さまざまなモードを説明するのに役立ちます。

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix : <https://example.com/> . :JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JohnDoe :firstName "John" . :JaneDoe :knows _:b1 . _:b1 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . :RichardRoe :firstName "Richard" . _:s1 rdf:type rdf:Statement . _:s1 rdf:subject :JaneDoe . _:s1 rdf:predicate :knows . _:s1 rdf:object :JohnDoe . _:s1 :knowsFrom "Berlin" . :ref_s2 rdf:type rdf:Statement . :ref_s2 rdf:subject :JaneDoe . :ref_s2 rdf:predicate :knows . :ref_s2 rdf:object :JohnDoe . :ref_s2 :knowsSince 1988 .

以下の例では、次のようなSPARQLクエリを使用してリソースの説明:JaneDoeがリクエストされていることを前提としています。

DESCRIBE <https://example.com/JaneDoe>

describeMode SPARQL クエリヒント

hint:describeMode SPARQL クエリヒントは、Neptune でサポートされている次のいずれかのSPARQLDESCRIBEモードを選択するために使用されます。

ForwardOneStep DESCRIBE モード

次のような describeMode クエリヒントで ForwardOneStep モードを呼び出します。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "ForwardOneStep" }

ForwardOneStep モードは、記述されるリソースの属性と転送リンクのみを返します。この例では、これは、記述されるリソース :JaneDoe をサブジェクトとして持つトリプルを返すことを意味します。

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b301990159 .

DESCRIBE クエリは、入力データセットと比較して、IDs毎回異なる _:b301990159などの空白ノードを持つトリプルを返す場合があることに注意してください。

SymmetricOneStep DESCRIBE モード

SymmetricOneStep クエリヒントを指定しない場合、 はデフォルトDESCRIBEモードです。また、次のような describeMode クエリヒントを使って明示的に呼び出すこともできます。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SymmetricOneStep" }

SymmetricOneStep セマンティクスでは、DESCRIBE は、記述されるリソースの属性、送信リンク、逆リンクを返します。

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b318767375 . _:b318767631 rdf:subject :JaneDoe . :RichardRoe :knows :JaneDoe . :ref_s2 rdf:subject :JaneDoe .

簡潔な境界説明 (CBD) DESCRIBE モード

Concise Bounded Description (CBD) モードは、次のような describeMode クエリヒントを使用して呼び出されます。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "CBD" }

CBD セマンティクスでは、DESCRIBE は、記述されるリソースの Concise Bounded Description (W3C によって定義) を返します。

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b285212943 . _:b285212943 :knows :RichardRoe . _:b285213199 rdf:subject :JaneDoe . _:b285213199 rdf:type rdf:Statement . _:b285213199 rdf:predicate :knows . _:b285213199 rdf:object :JohnDoe . _:b285213199 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .

RDF リソース (つまり、RDFグラフ内のノード) の簡潔な境界付き説明は、スタンドアロンできるそのノードを中心とする最小のサブグラフです。実際には、このグラフを、指定されたノードをルートとするツリーと考えると、そのツリーの葉のような空白のノード (bnode) は存在しないということです。bnode は外部からアドレス指定することも、後続のクエリで使用することもできないため、現在のノードから次のシングルホップを見つけるには、グラフをブラウズするだけでは不十分です。また、後続のクエリで使用できるもの (つまり、bnode 以外のもの) を見つけるにも、十分に調査する必要があります。

の計算 CBD

ソースRDFグラフ内の特定のノード (開始ノードまたはルート) を指定すると、そのノードCBDの は次のように計算されます。

  1. ステートメントのサブジェクトが開始ノードであるソースグラフ内のすべてのステートメントをサブグラフに含めます。

  2. 再帰的に、サブグラフ内のこれまでに空白のノードオブジェクトを持つすべてのステートメントについて、ソースグラフ内の、ステートメントのサブジェクトがその空白のノードであり、サブグラフにまだ含まれていないすべてのステートメントをサブグラフに含めます。

  3. 再帰的には、これまでのサブグラフに含まれるすべてのステートメントについて、ソースグラフ内のこれらのステートメントのすべての再確認について、各再確認のrdf:StatementノードからのCBD先頭を含めます。

これにより、オブジェクトノードがIRIリファレンスまたはリテラルであるか、グラフ内のステートメントのサブジェクトとして機能していない空白ノードであるサブグラフになります。は、単一の SPARQL SELECT または CONSTRUCTクエリを使用して計算CBDできないことに注意してください。

Symmetric Concise Bounded Description (SCBD) DESCRIBE モード

Symmetric Concise Bounded Description (SCBD) モードは、次のような describeMode クエリヒントを使用して呼び出されます。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SCBD" }

SCBD セマンティクスでは、DESCRIBE は、リソースの Symmetric Concise Bounded Description (W3C によって「リンクされたデータセットを VoID ボキャブラリで記述する」で定義) を返します 。

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b335544591 . _:b335544591 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . _:b335544847 rdf:subject :JaneDoe . _:b335544847 rdf:type rdf:Statement . _:b335544847 rdf:predicate :knows . _:b335544847 rdf:object :JohnDoe . _:b335544847 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .

CBD および SymmetricOneStep モードSCBDに対する ForwardOneStepおよび モードの利点は、空白ノードが常に拡張され、その表現が含まれることです。これは、 を使用して空のノードをクエリできないため、重要な利点である可能性がありますSPARQL。さらに、 CBDおよび SCBD モードでは、再編成も考慮されます。

describeMode クエリヒントは WHERE 句の一部にもなることに注意してください。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE ?s WHERE { hint:Query hint:describeMode "CBD" . ?s rdf:type <https://example.com/Person> }

describeIterationLimit SPARQL クエリヒント

hint:describeIterationLimit SPARQL クエリヒントは、 CBDや などの反復DESCRIBEアルゴリズムに対して実行される反復拡張の最大数に関するオプションの制約を提供しますSCBD。

DESCRIBE 制限はANDedまとめてあります。したがって、反復制限とステートメント制限の両方が指定されている場合、DESCRIBEクエリがカットされる前に両方の制限を満たす必要があります。

この値のデフォルトは 5 です。(ZERO0) に設定して、反復拡張の数に制限なしを指定できます。

describeStatementLimit SPARQL クエリヒント

hint:describeStatementLimit SPARQL クエリヒントは、DESCRIBEクエリレスポンスに存在する可能性のあるステートメントの最大数に関するオプションの制約を提供します。これは、 CBDや などの反復DESCRIBEアルゴリズムにのみ適用されますSCBD。

DESCRIBE 制限はANDedまとめてあります。したがって、反復制限とステートメント制限の両方が指定されている場合、DESCRIBEクエリがカットされる前に両方の制限を満たす必要があります。

この値のデフォルトは 5000 です。これを ZERO (0) に設定して、返されるステートメントの数に NO 制限を指定できます。