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

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

在 Neptune 中使用 SPARQL 联合查询SERVICE延期

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

注意

从开始,可以通过以下功能:1.0.1.0.200463.0 版本 (2019-10-15).

SERVICE 关键字指示 SPARQL 查询引擎针对远程 SPARQL 终端节点执行查询的一部分,并组成最终查询结果。仅限READ操作是可能的。WRITEDELETE不支持操作。Neptune 只能在其 Virtual Private Cloud (VPC) 中针对可访问的 SPARQL 终端节点运行联合查询。但是,您也可以在 VPC 中使用反向代理使外部数据源在 VPC 内可供访问。

注意

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

重要

将查询和参数传递到外部 SPARQL 终端节点时,SPARQL 1.1 Federation 代表您发出服务请求。您负责验证外部 SPARQL 终端节点是否满足应用程序的数据处理和安全要求。

Neptune 联合查询的示例

以下简单示例显示了如何使用 SPARQL 联合查询。

假设客户将以下查询发送到Neptune -1http://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) 这是?person rdf:type foaf:Person,使用结果来解决?personQ(?person foaf:knows ?friend),然后将生成的模式转发到Neptune -2http://neptune-2:8182/sparql.

  2. Neptune -2评估Q然后将结果发回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是,无法进行联合查询。原因是Neptune -1无法检索 IAM 凭证然后将其传递给Neptune -2授权查询的第二个部分。