2017-05-08 19 views
-1

このSPARQLクエリではアスタリスクとは何ですか?このSPARQLクエリではアスタリスクとは何ですか?

SELECT ?uri ?type 
WHERE{ 
    ?uri a ?type. 
    ?type rdfs:subClassOf* example:Device. 
} 

「サブクラスのサブクラス」という意味ですか? 他の述語と一緒に使用できますか?

+1

Ehm、私の側からの質問:あなたの最初の質問の私の答えを読んだことがありますか:http://stackoverflow.com/questions/43827050/what-does-a-mean-in-this-sparql-query SPARQL 1.1のプロパティパス(https://www.w3.org/TR/sparql11-query/#propertypaths)へのリンクを示しました。 – AKSW

+0

はい。その参照は非常に良いです。それに基づいて、私はその意味が「サブクラスのサブクラス」だと思う。私はただ確認しようとしています。 – Juan

+0

いいえ、 'p *'はあなたの場合 'p = rdfs:subClassOf'のプロパティ' p'の推移的クロージャです。 – AKSW

答えて

1

述語の後のアスタリスクは、0回以上のrdfs:subClassOfの出現を伴うプロパティパスに従うことを意味します。

あなたのフレーズ「サブクラスのサブクラス」は正しいですが、「サブクラスのサブクラス」と言いますが、*プロパティパスは再帰的です。 AKSWのコメントの技術文書から分かるように、オカレンス数(または深さ)に制限をつけてもしなくても、どちらの方向に行くかは他にもいくつかあります。

ここからはかなり良い例がありますMarklogic ...これは1.1エンドポイント内で動作するはずです。

https://developer.marklogic.com/features/semantics/path-examples

はい、プロパティパスだけではなくRDFS、任意の述語/プロパティに適用されます:subClassOfの。

1

パス要素の後のアスタリスク(*)は、「この要素のゼロ以上」を意味します。

パスに他の要素がない場合は、?a something *?bは、?bがパスの要素をまったく持たずに直接?aでもよいことを意味します。

?item wdt:P31/wdt:P279* ?class. 
# means: 
?item wdt:P31 ?class 
# or 
?item wdt:P31/wdt:P279 ?class 
# or 
?item wdt:P31/wdt:P279/wdt:P279 ?class 
# or 
?item wdt:P31/wdt:P279/wdt:P279/wdt:P279 ?class 

パスであり、他の要素が存在しない場合は、?*?はBのことを意味何か?Bもちょうどかもしれない?直接、それらの間にはパス要素を全く。詳細な答えはhereを参照してください。

関連する問題