私はセサミ 2.7.2 をテストしてきましたが、DESCRIBE クエリに空白ノード クロージャが含まれていないという事実に直面したとき、大きな驚きを覚えました [編集: これの正しい用語は、簡潔な境界記述の CBD です]。
私が正しく理解していれば、SPARQL仕様はそれについてかなり緩く、返されるものは実際にはプロバイダー次第であると言っていますが、bnode(describeクエリの結果)は使用できないため、その選択にはまだ驚いています後続の SPARQL クエリで。
問題は、次のことを<uri1>
せずにリソースの閉じた説明を取得するにはどうすればよいかということです。
- クエリ
DESCRIBE <uri1>
- 結果を繰り返し処理して、どのオブジェクトが空白ノードであるかを判断します
- それから
DESCRIBE ?b WHERE { <uri1> pred_relating_to_bnode_ ?b }
- 再帰的に実行し、bnode が見つかる限り連鎖します
私が間違っていなければ、深さ 2 の bnode は次のように記述する必要があります。
DESCRIBE ?b2 WHERE {<uri1> <p1&> ?b . ?b <p2> ?b2 }
これを行う簡単な方法がない限り?
DESCRIBE
最後に、次のような方法で現在返されている結果を取得できるリソースの閉じた説明を返す方が、より適切で簡単ではないでしょうか?
CONSTRUCT {<uri1> ?p ?o} WHERE {<uri1> ?p ?o}
編集:これは、ゴマから取り戻したい閉じた結果の例です
<urn:sites#1> a my:WebSite .
<urn:sites#1> my:domainName _:autos1 .
<urn:sites#1> my:online "true"^^xsd:boolean .
_:autos1 a rdf:Alt .
_:autos1 rdf:_1 _:autos2
_:autos2 my:url "192.168.2.111:15001"@fr
_:autos2 my:url "192.168.2.111:15002"@en
現在:DESCRIBE <urn:sites#1>
query と同じ結果を返すCONSTRUCT WHERE {<urn:sites#1> ?p ?o}
ので、それだけを取得します
<urn:sites#1> a my:WebSite .
<urn:sites#1> my:domainName _:autos1 .
<urn:sites#1> my:online "true"^^xsd:boolean .