本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
海王星操作员 SPARQL explain
以下各节介绍了 Amazon Neptune 中目前提供的该SPARQLexplain
功能的运算符和参数。
重要
该SPARQLexplain
功能仍在完善中。此处记录的运算符和参数可能会在未来版本中发生更改。
主题
- Aggregation 运算符
- ConditionalRouting 运算符
- Copy 运算符
- DFENode 运算符
- Distinct 运算符
- Federation 运算符
- Filter 运算符
- HashIndexBuild 运算符
- HashIndexJoin 运算符
- MergeJoin 运算符
- NamedSubquery 运算符
- PipelineJoin 运算符
- PipelineCountJoin 运算符
- PipelinedHashIndexJoin 运算符
- Projection 运算符
- PropertyPath 运算符
- TermResolution 运算符
- Slice 运算符
- SolutionInjection 运算符
- Sort 运算符
- VariableAlignment 运算符
Aggregation
运算符
执行一个或多个聚合,实现SPARQL聚合运算符(例如count
、、max
min
sum
、等)的语义。
Aggregation
带有使用 groupBy
子句的可选分组和可选 having
约束。
参数
groupBy
-(可选)提供一个groupBy
子句,该子句指定作为传入解的分组依据的表达式序列。aggregates
-(必需)指定聚合表达式的排序列表。having
—(可选)添加约束条件以筛选群组,如SPARQL查询中的having
子句所暗示的那样。
ConditionalRouting
运算符
根据某个给定条件路由传入解。满足该条件的解将会路由到 Out #1
引用的运算符 ID,而未满足该条件的解将不会路由到 Out #2
引用的运算符。
参数
condition
-(必需)路由条件。
Copy
运算符
根据指定模式指定的方式委派解流。
模式
forward
– 将解转发至由Out #1
标识的下游运算符。duplicate
- 复制解并将其转发至由Out #1
和Out #2
标识的两个运算符中的每一个。
Copy
没有任何参数。
DFENode
运算符
此运算符是DFE备用查询引擎运行的计划的抽象。该运算符的参数中概述了详细的DFE计划。该参数当前已过载,无法包含DFE计划的详细运行时统计信息。它包含了执行查询的各个步骤所花费的时间DFE。
DFE查询计划的逻辑优化的抽象语法树 (AST) 中包含有关规划时考虑的运算符类型以及运行运算符的相关最佳和最坏情况成本的信息。目前AST由以下类型的节点组成:
DFEJoinGroupNode
– 表示一个或多个DFEPatternNodes
的联接。DFEPatternNode
– 封装一种底层模式,使用该模式将匹配的元组投影到底层数据库之外。
小节包含有关DataflowOp
计划执行时间和每个操作员所用CPU时间的细分的详细信息。Statistics & Operator histogram
下方有一个表格,它打印了由执行的计划的详细运行时统计信息DFE。
注意
由于DFE是在实验室模式下发布的实验功能,因此其explain
输出的确切格式可能会发生变化。
Distinct
运算符
计算变量子集上的不同投影,从而消除重复项。因此,流入的解的数量大于或等于流出的解的数量。
参数
vars
-(必需)要将Distinct
投影应用于的变量。
Federation
运算符
将指定的查询传递到指定的远程SPARQL端点。
参数
endpoint
—(必需)SPARQLSERVICE
语句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
— 使用SPARQLOPTIONAL
运算符语义的optional
联接。minus
—minus
操作使用运SPARQLMINUS
算符语义保留不存在联接伙伴的映射。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
— 使用SPARQLOPTIONAL
运算符语义的optional
联接。minus
—minus
操作使用运SPARQLMINUS
算符语义保留不存在联接伙伴的映射。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
— 使用SPARQLOPTIONAL
运算符语义的optional
联接。minus
—minus
操作使用运SPARQLMINUS
算符语义保留不存在联接伙伴的映射。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
— 使用SPARQLOPTIONAL
运算符语义的optional
联接。minus
—minus
操作使用运SPARQLMINUS
算符语义保留不存在联接伙伴的映射。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
— 将诸如文字之类的术语映射URIs到相应的内部 ID 值(编码为内部值)。id2value
— 将内部 ID 值映射到相应的术语,例如文字和URIs(内部值的解码)。
参数
vars
—(必需)指定IDs应映射其字符串或内部字符串的变量。
Slice
运算符
使用 SPARQL's LIMIT
和OFFSET
子句的语义在传入的解决方案流上实现切片。
参数
limit
–(可选)针对要进行转发的解的限制。offset
–(可选)用于计算解以进行转发的偏移。
SolutionInjection
运算符
未接收输入。将解静态注入查询计划中并将其记录在 solutions
参数中。
查询计划始终以此静态注入开始。如果要注入的静态解可通过组合各种来源的静态绑定(例如,来自 VALUES
或 BIND
子句)从查询本身进行派生,则 SolutionInjection
运算符将注入这些派生的静态解。在最简单的情况下,这些反映了外部 VALUES
子句所隐含的绑定。
如果没有任何静态解可从查询派生,SolutionInjection
将注入空的所谓的通用解,它将在整个查询-评估过程中进行扩展和增加。
参数
solutions
-(必需)该运算符注入的解的序列。
Sort
运算符
使用指定的排序条件对解集排序。
参数
sortOrder
-(必需)变量的排序列表,每个变量包含一个ASC
(升序)或DESC
(降序)标识符,用于对解集排序。
VariableAlignment
运算符
逐个检查解,同时对两个变量中的每个变量执行对齐:指定的 sourceVar
和指定的 targetVar
。
如果解中的 sourceVar
和 targetVar
具有相同的值,则这些变量将被视为对齐并将转发解,同时会投影出多余的 sourceVar
。
如果这些变量绑定到不同的值,则将完全筛选出该解。
参数
sourceVar
-(必需)要与目标变量比较的源变量。如果解中的对齐成功,则表示这两个变量具有相同的值,将投影出源变量。targetVar
-(必需)要与源变量进行比较的目标变量。即使在对齐成功时也将保留。