本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Neptune SPARQLexplain
運算子
下列各節說明 Amazon Neptune 中目前可用的 SPARQL explain
功能的運算子和參數。
重要
SPARQL explain
功能仍在精簡中。這裡記載的運算子和參數在未來的版本中可能會加以變更。
主題
- 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
、sum
、 min
等。
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
– 使用從基礎資料庫中投影出來的相符元組封裝基礎模式。
子區段 Statistics & Operator histogram
包含DataflowOp
計劃執行時間的詳細資訊,以及每個運算子使用CPU的時間明細。下方有一個表格,可列印 執行之計劃的詳細執行期統計資料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,以及可選擇性地建立聯結基礎的圖形組合。如果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,以及可選擇性地建立聯結基礎的圖形組合。如果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
運算子
使用 SPARQLLIMIT
和 OFFSET
子句的語義,在傳入的解決方案串流上實作切片。
引數
limit
– (選用) 對要轉送之解決方案的限制。offset
– (選用) 評估解決方案以進行轉送的偏移量。
SolutionInjection
運算子
該運算子不會接收任何輸入,其會將靜態解決方案插入查詢計劃,並在 solutions
引數中加以記錄。
查詢計劃一律會從插入的靜態項目開始執行。如果可以結合各種來源的靜態繫結,進而從查詢本身衍生取得 (例如從 VALUES
或 BIND
子句) 要插入的靜態解決方案,則 SolutionInjection
運算子就會插入這些衍生的靜態解決方案。在最簡單的情況下,這會反映出外部 VALUES
子句所指示的繫結。
如果不能自查詢衍生取得任何靜態解決方案,SolutionInjection
就會插入空白的解決方案,也就是所謂的通用解決方案。在整個查詢評估過程中,系統會擴展並倍增這個解決方案。
引數
solutions
– (必要) 運算子插入的解決方案序列。
Sort
運算子
該運算子會使用指定排序條件來排列解決方案集。
引數
sortOrder
– (必要) 變數的排序清單,各包含ASC
(遞增) 或DESC
(遞減) 識別符,其會按照順序來排列解決方案集。
VariableAlignment
運算子
該運算子會逐一檢查所有解決方案,並針對其中的兩個變數執行校準作業。此處的變數指的是指定的 sourceVar
值和指定的 targetVar
值。
如果解決方案中的 sourceVar
和 targetVar
值相同,系統就會將該變數視為已經過校準並轉送解決方案,然後投射出多餘的 sourceVar
。
若變數繫結至不同值,解決方案就會完全遭到排除。
引數
sourceVar
– (必要) 要與目標變數相比的來源變數。若在解決方案中成功完成校準,表示兩個變數擁有相同值,且系統會投射出來源變數。targetVar
– (必要) 與來源變數相比的目標變數。即使校準成功,該值仍會保留不變。