6

私はセサミ 2.7.2 をテストしてきましたが、DESCRIBE クエリに空白ノード クロージャが含まれていないという事実に直面したとき、大きな驚きを覚えました [編集: これの正しい用語は、簡潔な境界記述の CBD です]。

私が正しく理解していれば、SPARQL仕様はそれについてかなり緩く、返されるものは実際にはプロバイダー次第であると言っていますが、bnode(describeクエリの結果)は使用できないため、その選択にはまだ驚いています後続の SPARQL クエリで。

問題は、次のことを<uri1>せずにリソースの閉じた説明を取得するにはどうすればよいかということです。

  1. クエリDESCRIBE <uri1>
  2. 結果を繰り返し処理して、どのオブジェクトが空白ノードであるかを判断します
  3. それからDESCRIBE ?b WHERE { <uri1> pred_relating_to_bnode_ ?b }
  4. 再帰的に実行し、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 .
4

1 に答える 1