2012-01-29 9 views
6

トリプルの結果「お楽しみ」を返したいとします。私は言葉の間のスペースをどのように説明するのか分からない。以下は私が試したクエリですが、うまくいきませんでした。誰かが私が間違っていることを見つけられるかどうかを教えてください。スペースで照会するSparql

<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> }"; 

答えて

9

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

少し長めの回答:RDF自体はRDF URI参照を使用します。一方、SPARQLクエリ言語はIRIを使用しています(その理由は、RDFがIRIに先行し、RDF URI参照の概念がIRIが最終的にどのように見えるかを予測して開発されたためです)。

残念ながら、RDF URI参照とIRIの定義には矛盾があり、RDF URI参照では空白を許可していますが、IRIではそうではありません。 SPARQL構文では、例のURI参照などのURI参照に対処できません。詳細はthis discussionをご覧ください。

ベストベットですか? URI refで空白を使用しないでください。それらをアンダースコアに置き換えてください。

すべてのことが言われているが、クエリの仕事を作るための回避策があります:

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") 
} 
+0

おそらく空白を避けるために行うでしょう – Sam

2
  1. それはowl:sameAsないowl:sameasです。大文字の注記。
  2. IRIにスペースを入れることはできません。
+0

歓迎のためのヒント – Sam

関連する問題