Neptune SPARQL explain 运算符 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Neptune SPARQL explain 运算符

以下部分介绍 Amazon Neptune 中当前可用的 SPARQL explain 特征的运算符和参数。

重要

SPARQL explain 功能仍在不断优化中。此处记录的运算符和参数可能会在未来版本中发生更改。

Aggregation 运算符

执行一个或多个聚合,同时实现 SPARQL 聚合运算符(如 countmaxminsum 等)的语义。

Aggregation 带有使用 groupBy 子句的可选分组和可选 having 约束。

参数
  • groupBy -(可选)提供一个 groupBy 子句,该子句指定作为传入解的分组依据的表达式序列。

  • aggregates -(必需)指定聚合表达式的排序列表。

  • having -(可选)添加约束以对组进行筛选,与 SPARQL 查询中的 having 子句的作用一样。

ConditionalRouting 运算符

根据某个给定条件路由传入解。满足该条件的解将会路由到 Out #1 引用的运算符 ID,而未满足该条件的解将不会路由到 Out #2 引用的运算符。

参数
  • condition -(必需)路由条件。

Copy 运算符

根据指定模式指定的方式委派解流。

模式
  • forward – 将解转发至由 Out #1 标识的下游运算符。

  • duplicate - 复制解并将其转发至由 Out #1Out #2 标识的两个运算符中的每一个。

Copy 没有任何参数。

DFENode 运算符

此运算符是对 DFE 备用查询引擎运行的计划的抽象。该运算符的参数中概述了详细的 DFE 计划。该参数目前已过载,无法包含 DFE 计划的详细运行时系统统计数据。它包含 DFE 在执行查询的各个步骤上所花费的时间。

DFE 查询计划的逻辑优化抽象语法树 (AST) 包含有关在计划时考虑的运算符类型以及运行运算符的相关最佳和最坏情况成本的信息。目前,AST 由以下类型的节点组成:

  • DFEJoinGroupNode – 表示一个或多个 DFEPatternNodes 的联接。

  • DFEPatternNode – 封装一种底层模式,使用该模式将匹配的元组投影到底层数据库之外。

小节 Statistics & Operator histogram 包含有关 DataflowOp 计划的执行时间和每个运算符使用的 CPU 时间细分的详细信息。下方有一个表,其中包含 DFE 执行的计划的详细运行时系统统计数据。

注意

由于 DFE 是在实验室模式下发布的实验特征,因此其 explain 输出的确切格式可能会发生变化。

Distinct 运算符

计算变量子集上的不同投影,从而消除重复项。因此,流入的解的数量大于或等于流出的解的数量。

参数
  • vars -(必需)要将 Distinct 投影应用于的变量。

Federation 运算符

将指定的查询传递到指定的远程 SPARQL 终端节点。

参数
  • endpoint -(必需)SPARQL SERVICE 语句中的端点 URL。这可以是常量字符串,或者如果查询终端节点是基于相同查询中的变量确定的,这也可以是变量名。

  • query -(必需)要发送到远程端点的重构查询字符串。即使客户端未指定任何前缀,引擎也会向该查询添加默认前缀。

  • silent -(必需)布尔值,指示关键字之后是否出现 SILENT 关键字。SILENT 告知引擎,即使远程 SERVICE 部分失败,也不要使整个查询失败。

Filter 运算符

筛选传入解。只有这些满足筛选条件的解才会转发至上游运算符,而所有其他解将被删除。

参数
  • condition -(必需)筛选条件。

HashIndexBuild 运算符

将绑定和假脱机的列表置于其名称由 solutionSet 参数定义的哈希索引中。通常情况下,后续运算符将针对此解集(根据名称引用)执行联接。

参数
  • solutionSet -(必需)哈希索引解的名称。

  • sourceType -(必需)从中获取要存储在哈希索引中的绑定的源的类型:

    • pipeline - 将来自运算符管道中的下游运算符的传入解假脱机到哈希索引中。

    • binding set - 将由 sourceBindingSet 参数指定的固定绑定集假脱机到哈希索引中。

  • sourceBindingSet -(可选)如果 sourceType 参数值为 binding set,此参数指定要假脱机到哈希索引中的静态绑定集。

HashIndexJoin 运算符

将传入解与由 solutionSet 参数标识的哈希索引解集进行联接。

参数
  • solutionSet -(必需)要对其进行联接的解集的名称。这必须是已在之前某一步中使用 HashIndexBuild 运算符构建的哈希索引。

  • joinType -(必需)要执行的联接类型:

    • join - 一个常规联接,要求所有共享变量之间的完全匹配。

    • optional - 一个 optional 联接,该联接使用 SPARQL OPTIONAL 运算符语义。

    • minus - minus 运算使用 SPARQL MINUS 运算符语义保留不存在任何联接合作伙伴的映射。

    • existence check - 检查是否有联接合作伙伴,并将 existenceCheckResultVar 变量绑定到此检查的结果。

  • constraints -(可选)联接期间要考虑的其它联接约束。不满足这些约束的联接将被丢弃。

  • existenceCheckResultVar -(可选)仅用于 joinType 等于 existence check 的联接(请参阅之前的 joinType 参数)。

MergeJoin 运算符

针对多个解集的合并联接,由 solutionSets 参数标识。

参数
  • solutionSets -(必需)要联接在一起的解集。

NamedSubquery 运算符

触发由 subQuery 参数标识的子查询的评估并将结果假脱机到由 solutionSet 参数指定的解集中。该运算符的传入解将转发至子查询,然后转发至下一个运算符。

参数
  • subQuery -(必需)要计算的子查询的名称。子查询将在输出中明确显示。

  • solutionSet -(必需)要在其中存储子查询结果的解集的名称。

PipelineJoin 运算符

接收上一个运算符的输出作为输入并将它与 pattern 参数定义的元组模式进行联接。

参数
  • pattern—(必需)模式,其形式为连接底层的图元组 subject-predicate-object,可选为-graph 元组。如果为该模式指定 distinct,联接将仅从由 projectionVars 参数指定的投影变量中提取不同的解,而不是所有匹配的解。

  • inlineFilters -(可选)要应用于模式中的变量的一组筛选条件。将结合这些筛选条件对模式进行评估。

  • joinType -(必需)要执行的联接类型:

    • join - 一个常规联接,要求所有共享变量之间的完全匹配。

    • optional - 一个 optional 联接,该联接使用 SPARQL OPTIONAL 运算符语义。

    • minus - minus 运算使用 SPARQL MINUS 运算符语义保留不存在任何联接合作伙伴的映射。

    • existence check - 检查是否有联接合作伙伴,并将 existenceCheckResultVar 变量绑定到此检查的结果。

  • constraints -(可选)联接期间要考虑的其它联接约束。不满足这些约束的联接将被丢弃。

  • projectionVars -(可选)投影变量。与 distinct := true 结合使用以强制提取某指定变量集中的不同投影。

  • cutoffLimit -(可选)提取的联接合作伙伴的数量的截止限制。尽管默认情况下没有任何限制,但您可以在执行联接时将此值设置为 1 以实施 FILTER (NOT) EXISTS 子句,这样可足以证明或反证是否有联接合作伙伴。

PipelineCountJoin 运算符

PipelineJoin 的变体。它仅对匹配的联接合作伙伴进行计数并将计数绑定到由 countVar 参数指定的变量,而不是进行联接。

参数
  • countVar -(必需)应将计数结果(即联接合作伙伴的数量)绑定到的变量。

  • pattern—(必需)模式,其形式为连接底层的图元组 subject-predicate-object,可选为-graph 元组。如果为该模式指定 distinct,联接将仅从由 projectionVars 参数指定的投影变量中提取不同的解,而不是所有匹配的解。

  • inlineFilters -(可选)要应用于模式中的变量的一组筛选条件。将结合这些筛选条件对模式进行评估。

  • joinType -(必需)要执行的联接类型:

    • join - 一个常规联接,要求所有共享变量之间的完全匹配。

    • optional - 一个 optional 联接,该联接使用 SPARQL OPTIONAL 运算符语义。

    • minus - minus 运算使用 SPARQL MINUS 运算符语义保留不存在任何联接合作伙伴的映射。

    • existence check - 检查是否有联接合作伙伴,并将 existenceCheckResultVar 变量绑定到此检查的结果。

  • constraints -(可选)联接期间要考虑的其它联接约束。不满足这些约束的联接将被丢弃。

  • projectionVars -(可选)投影变量。与 distinct := true 结合使用以强制提取某指定变量集中的不同投影。

  • cutoffLimit -(可选)提取的联接合作伙伴的数量的截止限制。尽管默认情况下没有任何限制,但您可以在执行联接时将此值设置为 1 以实施 FILTER (NOT) EXISTS 子句,这样可足以证明或反证是否有联接合作伙伴。

PipelinedHashIndexJoin 运算符

这是一个 all-in-one 生成哈希索引和连接运算符。它获取一个绑定列表,将绑定假脱机到哈希索引中,然后根据哈希索引连接传入的解。

参数
  • sourceType -(必需)从中获取要存储在哈希索引中的绑定的源的类型,如下一种:

    • pipeline - 使 PipelinedHashIndexJoin 将来自运算符管道中的下游运算符的传入解假脱机到哈希索引中。

    • binding set - 使 PipelinedHashIndexJoin 将由 sourceBindingSet 参数指定的固定绑定集假脱机到哈希索引中。

  • sourceSubQuery –(可选)如果 sourceType 参数值为 pipeline,则此参数指定要计算并假脱机到哈希索引中的子查询。

  • sourceBindingSet –(可选)如果 sourceType 参数值为 binding set,此参数指定要假脱机到哈希索引中的静态绑定集。

  • joinType -(必需)要执行的联接类型:

    • join - 一个常规联接,要求所有共享变量之间的完全匹配。

    • optional - 一个 optional 联接,该联接使用 SPARQL OPTIONAL 运算符语义。

    • minus - minus 运算使用 SPARQL MINUS 运算符语义保留不存在任何联接合作伙伴的映射。

    • existence check - 检查是否有联接合作伙伴,并将 existenceCheckResultVar 变量绑定到此检查的结果。

  • existenceCheckResultVar –(可选)仅用于 joinType 等于 existence check 的联接(请参阅上面的 joinType 参数)。

Projection 运算符

针对变量子集投影。流入的解数量等于流出的解数量,但解的形状有所不同,具体取决于模式设置。

模式
  • retain - 仅保留解中由 vars 参数指定的变量。

  • drop - 删除由 vars 参数指定的所有变量。

参数
  • vars -(必需)要保留或删除的变量,取决于模式设置。

PropertyPath 运算符

启用递归属性路径,例如 +*。Neptune 基于 iterationTemplate 参数指定的模板实现了定点迭代方法。已知的左侧或右侧变量将在每次固定点迭代中绑定到模板中,直到再也找不到新解。

参数
  • iterationTemplate -(必需)用于实施固定点迭代的子查询模板的名称。

  • leftTerm -(必需)属性路径左侧的术语(变量或常量)。

  • rightTerm -(必需)属性路径右侧的术语(变量或常量)。

  • lowerBound -(必需)固定点迭代的下限(* 查询的下限为 0,或 + 查询的下限为 1)。

TermResolution 运算符

将内部字符串标识符值转换回其相应的外部字符串,或将外部字符串转换为内部字符串标识符值,具体取决于模式。

模式
  • value2id - 将文本和 URI 等术语映射到相应的内部 ID 值(编码为内部值)。

  • id2value - 将内部 ID 值映射到相应的术语(如文本和 URI)(解码为内部值)。

参数
  • vars -(必需)指定其字符串或内部字符串 ID 应进行映射的变量。

Slice 运算符

在传入解流中使用 SPARQL 的 LIMITOFFSET 子句的语义实施切片。

参数
  • limit –(可选)针对要进行转发的解的限制。

  • offset –(可选)用于计算解以进行转发的偏移。

SolutionInjection 运算符

未接收输入。将解静态注入查询计划中并将其记录在 solutions 参数中。

查询计划始终以此静态注入开始。如果要注入的静态解可通过组合各种来源的静态绑定(例如,来自 VALUESBIND 子句)从查询本身进行派生,则 SolutionInjection 运算符将注入这些派生的静态解。在最简单的情况下,这些反映了外部 VALUES 子句所隐含的绑定。

如果没有任何静态解可从查询派生,SolutionInjection 将注入空的所谓的通用解,它将在整个查询-评估过程中进行扩展和增加。

参数
  • solutions -(必需)该运算符注入的解的序列。

Sort 运算符

使用指定的排序条件对解集排序。

参数
  • sortOrder -(必需)变量的排序列表,每个变量包含一个 ASC(升序)或 DESC(降序)标识符,用于对解集排序。

VariableAlignment 运算符

逐个检查解,同时对两个变量中的每个变量执行对齐:指定的 sourceVar 和指定的 targetVar

如果解中的 sourceVartargetVar 具有相同的值,则这些变量将被视为对齐并将转发解,同时会投影出多余的 sourceVar

如果这些变量绑定到不同的值,则将完全筛选出该解。

参数
  • sourceVar -(必需)要与目标变量比较的源变量。如果解中的对齐成功,则表示这两个变量具有相同的值,将投影出源变量。

  • targetVar -(必需)要与源变量进行比较的目标变量。即使在对齐成功时也将保留。