Neptune 中使用 SERVICE 扩展的 SPARQL 联合查询 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 终端节点时,SPARQL 1.1 Federation 代表您发出服务请求。您负责验证外部 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-2Q-2 进行计算,并将结果发送回 Neptune-1

  3. Neptune-1 联接两个模式的解,并将结果发回给客户。

下图显示了该流程。


        显示评估 SPARQL 联合查询模式并将响应发送回客户端的流程图。
注意

默认情况下,优化器决定在查询执行的哪个时刻执行 SERVICE 指令。您可以使用 joinOrder 查询提示覆盖此位置。

Neptune 中联合查询的访问控制

Neptune 使用 Amazon Identity and Access Management (IAM) 进行身份验证和授权。联合查询的访问控制可以涉及多个 Neptune 数据库实例。这些实例可能对访问控制有不同的要求。在某些情况下,这可能会限制您进行联合查询的能力。

请考虑上一节介绍的简单示例。Neptune-1 使用与调用它时相同的凭证调用 Neptune-2

  • 如果 Neptune-1 需要 IAM 身份验证和授权,而 Neptune-2 不需要,那么只要您有适当的 IAM 权限就可以让 Neptune-1 进行联合查询。

  • 如果 Neptune-1Neptune-2 都需要 IAM 身份验证和授权,则您需要为两个数据库都附加 IAM 权限才能进行联合查询。

  • 但是,在 Neptune-1 未启用 IAM 但 Neptune-2 启用 IAM 的情况下,您无法进行联合查询。原因是 Neptune-1 无法检索您的 IAM 凭证并将其传递给 Neptune-2 来授权执行查询的第二部分。