SPARQL使用的查詢提示 DESCRIBE - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SPARQL使用的查詢提示 DESCRIBE

SPARQLDESCRIBE查詢提供了一種靈活的機制來請求資源描述。但是,這些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 .

下列範例假設使用這樣的SPARQL查詢要求資源:JaneDoe的描述:

DESCRIBE <https://example.com/JaneDoe>

describeModeSPARQL詢提示

hint:describeModeSPARQL詢提示可用來選取 Neptune 支援的下列其中一SPARQLDESCRIBE種模式:

ForwardOneStepDESCRIBE模式

您可以使用如下的 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查詢可能會返回三元空白節點,例如_:b301990159,它們IDs每次都有不同,相比於輸入數據集。

SymmetricOneStepDESCRIBE模式

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的計算方式如下:

  1. 子圖形中包含了來源圖形中的所有陳述式,其中陳述式的「主旨」是起始節點。

  2. 遞迴地,對於子圖形中迄今為止具有空白節點「物件」的所有陳述式,子圖形中包含了來源圖形中的所有陳述式,其中陳述式的「主旨」是該空白節點,並且尚未包含在子圖形中。

  3. 遞歸地,對於到目前為止子圖中包含的所有語句,對於源圖中這些語句的所有具體性,包括從每個具體化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 .

CBD和SCBD超過ForwardOneStepSymmetricOneStep模式的優點在於,空白節點始終展開以包含它們的表示。這可能是一個重要的優勢,因為您無法使用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> }

describeIterationLimitSPARQL詢提示

hint:describeIterationLimitSPARQL查詢提示會針對反覆運DESCRIBE算演算法 (例如和) 所要執行的最大反覆展開數目提供選擇性限制。CBD SCBD

DESCRIBE限制在ANDed一起。因此,如果同時指定了迭代限制和語句限制,則在切斷DESCRIBE查詢之前必須滿足這兩個限制。

此值的預設值為 5。您可以將其設定為 ZERO (0) 以指定反覆擴充的次數沒有限制。

describeStatementLimitSPARQL詢提示

hint:describeStatementLimitSPARQL查詢提示會針對查DESCRIBE詢回應中可能存在的最大陳述式數目提供選擇性條件約束。它僅適用於迭代DESCRIBE算法,例如CBD和SCBD。

DESCRIBE限制在ANDed一起。因此,如果同時指定了迭代限制和語句限制,則在切斷DESCRIBE查詢之前必須滿足這兩個限制。

此值的預設值為 5000。您可以將其設置為ZERO(0)來指定返回的語句數沒有限制。