2012-01-29 2 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, а понятие ссылок URI RDF было разработано в ожидании того, что в конечном итоге ожидаются IRI). Они почти правильно поняли :)).

К сожалению, существует расхождение между определениями ссылок URI RDF и 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

2
  1. Пришло owl:sameAs не owl:sameas. Столица примечаний A.
  2. В IRI не может быть пробелов.
+0

приветствует советы – Sam