SERVICE 拡張機能を使用した Neptune でのSPARQLフェデレーティッドクエリ - Amazon Neptune

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

SERVICE 拡張機能を使用した Neptune でのSPARQLフェデレーティッドクエリ

Amazon Neptune は、 SERVICEキーワードを使用する SPARQL 横串検索拡張機能を完全にサポートしています。(詳細については、SPARQL 1.1 横串検索」を参照してください。)

注記

この機能は、リリース 1.0.1.0.200463.0 (2019-10-15) で始めることで使用できます。

SERVICE キーワードは、リモート SPARQL エンドポイントに対してクエリの一部を実行し、最終的なクエリ結果を構成するように SPARQL クエリエンジンに指示します。READ オペレーションのみ可能です。WRITE および DELETE オペレーションはサポートされていません。Neptune は、Virtual Private Cloud (SPARQL) 内でアクセス可能な VPC エンドポイントに対してのみフェデレーティッドクエリを実行できます。ただし、VPC でリバースプロキシを使用して、VPC 内で外部データソースにアクセスできるようにすることもできます。

注記

SPARQL SERVICEを使用してクエリを同じ VPC 内の 2 つ以上の Neptune クラスターにフェデレーションする場合、セキュリティグループは、これらのすべての Neptune クラスターが相互に通信できるように設定する必要があります。

重要

SPARQL 1.1 フェデレーションは、クエリとパラメータを外部 SPARQL エンドポイントに渡すときに、ユーザーに代わってサービスリクエストを行います。外部 SPARQL エンドポイントがアプリケーションのデータ処理とセキュリティ要件を満たしていることを確認するのはお客様の責任です。

Neptune フェデレーティッドクエリの例

次の簡単な例は、SPARQL 横串検索の仕組みを示しています。

顧客が次のクエリを http://neptune-1:8182/sparqlNeptune-1に送信するとします。

SELECT * WHERE { ?person rdf:type foaf:Person . SERVICE <http://neptune-2:8182/sparql> { ?person foaf:knows ?friend . } }
  1. Neptune-1は最初のクエリパターン (?person rdf:type foaf:Person) を評価し (Q 1)、結果を使用して ?personQ-2 (?person foaf:knows ?friend) で解決します。それから結果のパターンを http://neptune-2:8182/sparqlNeptune-2 へ送ります。

  2. Neptune-2Q-2 を評価し、結果を Neptune-1 に返します。

  3. Neptune-1 は両方のパターンのソリューションに参加し、結果をお客様に返します。

このフローを、次の図に示します。

評価中の SPARQL 横串検索パターンとクライアントに返されるレスポンスを示すフロー図。
注記

「デフォルトでは、オプティマイザは、クエリ実行のどの時点で SERVICE 命令が実行されるかを決定します。この配置は、joinOrder クエリのヒントを使って上書きできます。

Neptune でのフェデレーティッドクエリのアクセスコントロール

Neptune は、認証と認可に AWS Identity and Access Management (IAM) を使用します。フェデレーティッドクエリのアクセスコントロールには、複数の Neptune DB インスタンスが含まれる場合があります。これらのインスタンスは、アクセスコントロールに関する要件が異なる場合があります。特定の状況では、これによってフェデレーティッドクエリの実行が制限される場合があります。

前のセクションで説明した簡単な例を考えてみましょう。Neptune-1 は呼び出されたのと同じクレデンシャルで Neptune 2 を呼び出します。

  • Neptune-1 に IAM 認証と認可が必要だが、Neptune-2 には必要でない場合、Neptune-1 がフェデレーティッドクエリを行うのに必要なのは適切な IAM アクセス許可だけです。

  • Neptune-1Neptune-2 の両方に IAM 認証と認可が必要な場合は、両方のデータベースに IAM アクセス許可をアタッチしてフェデレーティッドクエリを作成する必要があります。両方のクラスターは、同じ AWS アカウントと同じリージョンに存在する必要があります。クロスリージョンおよび/またはクロスアカウントフェデレーティッドクエリアーキテクチャは現在サポートされていません。

  • ただし、Neptune-1 が IAM 対応ではなく、Neptune-2 が の場合、横串検索を行うことはできません。これは、Neptune-1 が IAM 認証情報を取得して Neptune-2 に渡してクエリの 2 番目の部分を認可できないためです。