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

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

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

  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 .

在 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),以指定對傳回的陳述式數目沒有限制。