6

トリプルの「楽しんでいる」という結果を返したい場合は言います。単語間のスペースをどのように説明すればよいかわかりません。以下は私が試したクエリですが、うまくいきませんでした。誰かが私が間違っていることを見つけることができるかどうか教えてください

<rdf:Description rdf:about="http://website.com/urls/playing games">
    <owl:sameAs rdf:resource="http://website.com/urls/having fun"/>
</rdf:Description>

"PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?y owl:sameAs+ <http://website.com/urls/playing fun> }";
4

2 に答える 2

9

簡単な答え: できません。少なくとも直接はできません。

少し長い答え: RDF 自体は RDF URI 参照を使用します。一方、SPARQL クエリ言語は IRI を使用します (その理由は、RDF が IRI よりも前から存在し、RDF URI 参照の概念が、IRI が最終的にどのように見えると予想されるかを見越して開発されたためです。彼らはほとんどそれを正しく理解していました :))。

残念ながら、RDF URI 参照と IRI の定義には矛盾があり、RDF URI 参照では空白が許可されていますが、IRI では許可されていないケースの 1 つに当てはまります。SPARQL 構文は、例のような URI 参照に対応できません。詳細については、このディスカッションをご覧ください。

あなたの最善の策は?URI 参照でスペースを使用しないでください。それらをアンダースコアに置き換えるか、単に削除してください。

そうは言っても、クエリを機能させるための回避策があります。

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT ?y 
WHERE { 
   ?y owl:sameAs+ ?x
   FILTER (str(?x) = "http://website.com/urls/playing fun")
}
于 2012-01-29T20:50:36.550 に答える
2
  1. そうでowl:sameAsはありませんowl:sameas。大文字の A に注意してください。
  2. IRI にスペースを含めることはできません。
于 2012-01-29T20:55:02.937 に答える