2012-01-29 104 views
6

說出是否要返回三重結果「有趣」。我不知道如何解釋詞語之間的空白。下面是我試過的一個查詢,但沒有奏效。讓我知道如果任何人能發現什麼,我做錯了用Spatial查詢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引用。有關更多詳細信息,請參閱this discussion

你最好打賭嗎?避免在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") 
} 
+0

偉大的答案很可能會避免空間的提示 – Sam 2012-01-29 23:50:22

2
  1. owl:sameAsowl:sameas。注資A.
  2. 不能有空格光圈。
+0

歡呼聲謝謝 – Sam 2012-01-29 23:49:59