翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SPARQL SERVICE
拡張機能を使用した Neptune のフェデレーティッドクエリ
Amazon Neptune は、 SERVICE
キーワードを使用するSPARQLフェデレーティッドクエリ拡張機能を完全にサポートします。(詳細については、SPARQL「1.1 フェデレーティッドクエリ
注記
この機能は、リリース 1.0.1.0.200463.0 (2019-10-15) で始めることで使用できます。
SERVICE
キーワードは、リモートSPARQLエンドポイントに対してSPARQLクエリの一部を実行し、最終的なクエリ結果を作成するようにクエリエンジンに指示します。READ
オペレーションのみ可能です。WRITE
および DELETE
オペレーションはサポートされていません。Neptune は、仮想プライベートクラウド () 内でアクセス可能なSPARQLエンドポイントに対してのみフェデレーティッドクエリを実行できますVPC。ただし、 でリバースプロキシを使用してVPC、 内で外部データソースにアクセスできるようにすることもできますVPC。
注記
SPARQL SERVICE
を使用して同じ 内の 2 つ以上の Neptune クラスターにクエリをフェデレーションする場合VPC、セキュリティグループは、これらのすべての Neptune クラスターが相互に通信できるように設定する必要があります。
重要
SPARQL 1.1 フェデレーションは、クエリとパラメータを外部SPARQLエンドポイントに渡すときに、ユーザーに代わってサービスリクエストを行います。外部SPARQLエンドポイントがアプリケーションのデータ処理とセキュリティ要件を満たしていることを確認するのはお客様の責任です。
Neptune フェデレーティッドクエリの例
次の簡単な例は、SPARQLフェデレーティッドクエリの仕組みを示しています。
顧客が次のクエリを http://neptune-1:8182/sparql
でNeptune-1に送信するとします。
SELECT * WHERE { ?person rdf:type foaf:Person . SERVICE <http://neptune-2:8182/sparql> { ?person foaf:knows ?friend . } }
Neptune-1は最初のクエリパターン (
?person rdf:type foaf:Person
) を評価し (Q 1)、結果を使用して?person
を Q-2 (?person foaf:knows ?friend
) で解決します。それから結果のパターンをhttp://neptune-2:8182/sparql
で Neptune-2 へ送ります。Neptune-2 は Q-2 を評価し、結果を Neptune-1 に返します。
Neptune-1 は両方のパターンのソリューションに参加し、結果をお客様に返します。
このフローを、次の図に示します。
注記
「デフォルトでは、オプティマイザは、クエリ実行のどの時点で 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-1 と Neptune-2 の両方にIAM認証と認可が必要な場合は、フェデレーティッドクエリを行うために両方のデータベースのIAMアクセス許可をアタッチする必要があります。両方のクラスターも同じ AWS アカウントと同じリージョンにある必要があります。クロスリージョンおよび/またはクロスアカウントフェデレーティッドクエリアーキテクチャは現在サポートされていません。
ただし、Neptune-1 が有効になっていないIAMが Neptune-2 が有効になっている場合は、フェデレーティッドクエリを作成することはできません。その理由は、Neptune-1 がIAM認証情報を取得して Neptune-2 に渡し、クエリの 2 番目の部分を承認できないためです。