SPARQL クエリヒント - Amazon Neptune

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

SPARQL クエリヒント

クエリヒントを使用して Amazon Neptune の特定の SPARQL クエリの最適化と評価戦略を指定することができます。

クエリヒントは、以下の部分で SPARQL クエリに組み込まれている追加の 3 つのパターンで表されます。

scope hint value
  • scope - クエリ内の特定のグループまたは完全なクエリなど、クエリヒントが適用されるクエリの部分を決定します。

  • hint – 適用するヒントのタイプを特定します。

  • value – 検討中のシステムアスペクトの動作を決めます。

クエリのヒントとスコープは、Amazon Neptune 名前空間 http://aws.amazon.com/neptune/vocab/v01/QueryHints# の事前定義された条件として表示されます。このセクションの例には、クエリで定義され、クエリに含まれている hint プレフィックスとして名前空間が含まれています。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>

たとえば、以下は SELECT クエリに joinOrder ヒントを含める方法を示します。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> SELECT ... { hint:Query hint:joinOrder "Ordered" . ... }

前述のクエリは、Neptune エンジンに、クエリ内の結合を評価するように指示します。指定された順序付けを行い、自動並べ替えを無効にします。

クエリヒントを使用するときは、以下について検討します。

  • 単一のクエリでさまざまなクエリヒントを組み合わせることができます。たとえば、ボトムアップ評価のためにサブクエリに注釈を追加するには bottomUp クエリヒントを使用できます。また、サブクエリ内の結合の順序を修正するには joinOrder クエリヒントを使用できます。

  • 別の重複していないスコープで同じクエリを複数回使用できます。

  • クエリヒントはヒントです。クエリエンジンは通常、特定のクエリヒントを考慮することを目的としていますが、それらを無視することもあります。

  • クエリヒントはセマンティクスを維持します。クエリヒントを追加しても、クエリの出力は変更されません (順序保証が指定されていない場合、つまり、ORDER BY を使用して結果の順序が明示的に適用されない場合を除く)。

以下のセクションでは、Neptune で使用可能なクエリヒントとその使用方法に関する詳しい情報が記載されています。

Neptune における SPARQL クエリヒントの範囲。

次の表は、Amazon Neptune で使用可能なスコープ、関連付けられたヒント、SPARQL クエリヒントの説明を示します。これらのエントリの hint プレフィックスは、ヒントの Neptune 名前空間を表します。

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
範囲 サポートされるヒント 説明
hint:Query

joinOrder

クエリヒントはクエリ全体に適用されます。
hint:Query

queryTimeout

タイムアウト値はクエリ全体に適用されます。
hint:Query

RangeSafe

タイプ昇格は、クエリ全体に対して無効になっています。
hint:Query

queryId

クエリ ID 値はクエリ全体に適用されます。
hint:Query

useDFE

DFE の使用は、クエリ全体に対して有効 (IPA 無効になっています)。
hint:Group

joinOrder

クエリヒントは指定されたグループの最上位の要素に適用されますが、ネストされた要素 (サブクエリなど) や親要素には適用されません。
hint:SubQuery

evaluationStrategy

ヒントは指定されて、ネストされた SELECT サブクエリに適用されます。サブクエリの前に計算されたソリューションを考慮せずに、サブクエリは個別に評価されます。