SPARQL在 Neptune 中使用扩展程序进行联合查询 SERVICE - Amazon Neptune

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

SPARQL在 Neptune 中使用扩展程序进行联合查询 SERVICE

Amazon Neptune 完全支持使用该SPARQL关键字的联合查询扩展插件。SERVICE(有关更多信息,请参阅 SPARQL1.1 联合查询。)

注意

SERVICE关键字指示SPARQL查询引擎对远程SPARQL端点执行部分查询并撰写最终的查询结果。只能执行 READ 操作。不支持 WRITEDELETE 操作。Neptune 只能对在其虚拟私有云 () VPC 中可访问的SPARQL端点运行联合查询。但是,您也可以在中使用反向代理VPC,使外部数据源可以在中访问VPC。

注意

当SPARQLSERVICE用于将查询联合到同一个集群中的两个或多个 Neptune 集群时,必须将安全组配置为允许所有这些 Neptune 集群相互通信。VPC

重要

SPARQL1.1 Federation 在向外部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-2Q-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 不需要,则只需让 Nep t une-1 获得相应的IAM权限即可进行联合查询。

  • 如果 Neptune-1Neptune-2 都需要IAM身份验证和授权,则需要为两个数据库附加IAM权限才能进行联合查询。两个集群还必须位于同一个 AWS 账户和同一区域。目前不支持跨区域和/或跨账户联合查询架构。

  • 但是,如果 Ne ptune-1 未启用,但 Ne ptune IAM -2 已启用,则无法进行联合查询。原因是 Neptune-1 无法检索您的IAM凭证并将其传递给 Ne ptune-2 以授权查询的第二部分。