本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SPARQL 搭配 使用的查詢提示 DESCRIBE
SPARQL DESCRIBE
查詢提供彈性機制來請求資源描述。不過,SPARQL規格並未定義 的精確語義DESCRIBE
。
從引擎 1.2.0.2 版開始,Neptune 支援適用於不同情況的數種不同 DESCRIBE
模式和演算法。
此範例資料集可協助說明不同的模式:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix : <https://example.com/> . :JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JohnDoe :firstName "John" . :JaneDoe :knows _:b1 . _:b1 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . :RichardRoe :firstName "Richard" . _:s1 rdf:type rdf:Statement . _:s1 rdf:subject :JaneDoe . _:s1 rdf:predicate :knows . _:s1 rdf:object :JohnDoe . _:s1 :knowsFrom "Berlin" . :ref_s2 rdf:type rdf:Statement . :ref_s2 rdf:subject :JaneDoe . :ref_s2 rdf:predicate :knows . :ref_s2 rdf:object :JohnDoe . :ref_s2 :knowsSince 1988 .
下列範例假設:JaneDoe
正在使用類似這樣的SPARQL查詢請求資源的描述:
DESCRIBE <https://example.com/JaneDoe>
describeMode
SPARQL 查詢提示
hint:describeMode
SPARQL 查詢提示用於選取 Neptune 支援的下列其中一種SPARQLDESCRIBE
模式:
ForwardOneStep
DESCRIBE 模式
您可以使用如下的 describeMode
查詢提示調用 ForwardOneStep
模式:
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "ForwardOneStep" }
ForwardOneStep
模式只會傳回要描述之資源的屬性和正向連結。在範例情況下,這表示它傳回具有 :JaneDoe
(要描述的資源) 的三元組做為主旨:
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b301990159 .
請注意,相較於輸入資料集,DESCRIBE查詢可能會傳回具有空白節點的三倍,例如 IDs ,這些節點每次_:b301990159
都有不同的節點。
SymmetricOneStep
DESCRIBE 模式
SymmetricOneStep
如果您不提供查詢提示, 是預設DESCRIBE模式。您也可以使用如下的 describeMode
查詢提示明確地調用它:
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SymmetricOneStep" }
在 SymmetricOneStep
語義下,DESCRIBE
會傳回要描述之資源的屬性、正向連結和反向連結:
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b318767375 . _:b318767631 rdf:subject :JaneDoe . :RichardRoe :knows :JaneDoe . :ref_s2 rdf:subject :JaneDoe .
簡潔邊界描述 (CBD
) DESCRIBE 模式
簡潔界限描述 (CBD
) 模式是使用如下的 describeMode
查詢提示來調用的:
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "CBD" }
在 CBD
語義下,DESCRIBE
會傳回要描述之資源的簡潔界限描述 (如 W3C 定義
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b285212943 . _:b285212943 :knows :RichardRoe . _:b285213199 rdf:subject :JaneDoe . _:b285213199 rdf:type rdf:Statement . _:b285213199 rdf:predicate :knows . _:b285213199 rdf:object :JohnDoe . _:b285213199 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .
資源 RDF(即RDF圖形中的節點) 的精簡邊界描述是圍繞該節點置中且可以獨立運作的最小子圖。實際上,這表示如果您將此圖形視為一棵樹,將指定的節點作為根,則沒有空白節點 (bnode) 作為該樹的葉子。由於 bnode 無法從外部處理或在後續查詢中使用,因此只瀏覽圖形從目前節點中尋找下一個單一跳轉,這是不夠的。您還必須前進足夠遠才能找到可以在後續查詢中使用的項目 (也就是說,bnode 以外的項目)。
計算 CBD
鑑於來源RDF圖表中的特定節點 (起始節點或根目錄),該節點CBD的 計算方式如下:
子圖形中包含了來源圖形中的所有陳述式,其中陳述式的「主旨」是起始節點。
遞迴地,對於子圖形中迄今為止具有空白節點「物件」的所有陳述式,子圖形中包含了來源圖形中的所有陳述式,其中陳述式的「主旨」是該空白節點,並且尚未包含在子圖形中。
遞迴地,對於子圖中包含的所有陳述式,對於來源圖表中這些陳述式的所有修改,包含從每個修改
rdf:Statement
節點CBD開始的 。
這會導致物件節點為IRI參考或常值,或空白節點無法作為圖形中任何陳述式的主旨的子圖。請注意, CBD無法使用單一 SPARQLSELECT或 CONSTRUCT查詢計算。
對稱精簡邊界描述 (SCBD
) DESCRIBE 模式
對稱簡潔界限描述 (SCBD
) 模式是使用如下的 describeMode
查詢提示來調用的:
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SCBD" }
在 SCBD
語義下,DESCRIBE
會傳回資源的對稱簡潔界限描述 (如 W3C 在使用 VoID 詞彙描述連結的資料集
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b335544591 . _:b335544591 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . _:b335544847 rdf:subject :JaneDoe . _:b335544847 rdf:type rdf:Statement . _:b335544847 rdf:predicate :knows . _:b335544847 rdf:object :JohnDoe . _:b335544847 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .
在 SCBD CBD和 SymmetricOneStep
模式中, ForwardOneStep
和 的優點是空白節點一律會展開,以包含其表示式。這可能是重要的優勢,因為您無法使用 查詢空白節點SPARQL。此外, CBD和 SCBD 模式也會考慮修改。
請注意,describeMode
查詢提示也可以是 WHERE
子句的一部分:
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE ?s WHERE { hint:Query hint:describeMode "CBD" . ?s rdf:type <https://example.com/Person> }
describeIterationLimit
SPARQL 查詢提示
hint:describeIterationLimit
SPARQL 查詢提示針對 CBD和 等迭代DESCRIBE演算法執行的迭代擴展數量上限,提供選擇性限制SCBD。
DESCRIBE 限制是ANDed在一起的。因此,如果同時指定了反覆運算限制和陳述式限制,則必須符合這兩個限制,才能切斷DESCRIBE查詢。
此值的預設值為 5。您可以將其設定為 ZERO(0),以指定反覆擴展數目的 NO 限制。
describeStatementLimit
SPARQL 查詢提示
hint:describeStatementLimit
SPARQL 查詢提示針對DESCRIBE查詢回應中可能存在的陳述式數量上限提供選用限制。它僅適用於迭代DESCRIBE演算法,例如 CBD和 SCBD。
DESCRIBE 限制是ANDed在一起的。因此,如果同時指定了反覆運算限制和陳述式限制,則必須符合這兩個限制,才能切斷DESCRIBE查詢。
此值的預設值為 5000。您可以將其設定為 ZERO(0),以指定對傳回的陳述式數目沒有限制。