View a markdown version of this page

Neptune 中使用 SERVICE 延伸模組的 SPARQL 聯合查詢 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Neptune 中使用 SERVICE 延伸模組的 SPARQL 聯合查詢

Amazon Neptune 完整支援使用 SERVICE 關鍵字的 SPARQL 聯合查詢延伸模組。(如需詳細資訊,請參閱 SPARQL 1.1 聯合查詢。)

SERVICE 關鍵字會指示 SPARQL 查詢引擎對遠端 SPARQL 端點執行部分查詢,並撰寫最終查詢結果。只有 READ 操作是可行的。不支援 WRITEDELETE 操作。Neptune 只能針對可在其虛擬私有雲端 (VPC) 內存取的 SPARQL 端點執行聯合查詢。不過,您也可以在 VPC 中使用反向代理,使外部資料來源可在 VPC 內存取。

注意

當 SPARQL SERVICE 用來將一個查詢聯合到相同 VPC 中兩個以上的 Neptune 叢集時,安全群組必須設定為允許所有這些 Neptune 叢集彼此通話。

重要

SPARQL 1.1 聯合會在將查詢和參數傳遞至外部 SPARQL 端點時,代您提出服務請求。您有責任驗證外部 SPARQL 端點是否滿足您應用程式的資料處理和安全需求。

Neptune 聯合查詢的範例

以下簡單範例說明 SPARQL 聯合查詢的運作方式。

假設客戶將以下查詢傳送至 Neptune-1,網址為 http://neptune-1:8182/sparql

SELECT * WHERE { ?person rdf:type foaf:Person . SERVICE <http://neptune-2:8182/sparql> { ?person foaf:knows ?friend . } }
  1. Neptune-1 評估第一個查詢模式 (Q-1),即 ?person rdf:type foaf:Person,會使用結果來解析 Q-2 (?person foaf:knows ?friend) 中的 ?person,並將產生的模式轉送至 Neptune-2,網址為 http://neptune-2:8182/sparql

  2. Neptune-2 評估 Q-2,並將結果傳回至 Neptune-1

  3. Neptune-1 聯結這兩種模式的解決方案,並將結果傳回給客戶。

下圖顯示此流程。

流程圖顯示正要評估的 SPARQL 聯合查詢模式,以及傳回給用戶端的回應。
注意

根據預設,最佳化工具會確定 SERVICE 指令在查詢執行中的哪個點執行。您可以使用 joinOrder 查詢提示覆寫此置放。

Neptune 中聯合查詢的存取控制

Neptune 使用 AWS Identity and Access Management (IAM) 進行身分驗證和授權。聯合查詢的存取控制可涉及多個 Neptune 資料庫執行個體。這些執行個體可能會有不同的存取控制需求。在某些情況下,這會限制您進行聯合查詢的能力。

考慮上一節中展示的簡單範例。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,以授權查詢的第二個部分。