Запросы с пробелами Sparql - PullRequest
       37

Запросы с пробелами Sparql

6 голосов
/ 29 января 2012

Скажи, если я хочу вернуть результат "весело" тройки. Я не знаю, как объяснить расстояние между словами. Ниже приведен запрос, который я пробовал, но он не сработал. Дайте мне знать, если кто-то может заметить, что я делаю не так

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

Ответы [ 2 ]

9 голосов
/ 30 января 2012

Краткий ответ: Вы не можете, по крайней мере, напрямую.

Немного более длинный ответ: сам RDF использует ссылки RDF URI.Язык запросов SPARQL, с другой стороны, использует IRI (причина в том, что RDF предшествует IRI, и понятие ссылок на RDF URI было разработано в ожидании того, как должны были выглядеть IRI. Они почти поняли это правильно :)).

К сожалению, существует несоответствие между определениями ссылок RDF URI и IRI, и вы только что затронули один из случаев: в то время как ссылки UD RDF допускают пробелы, IRI - нет.Синтаксис 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")
}
2 голосов
/ 30 января 2012
  1. Это owl:sameAs, а не owl:sameas.Заглавная буква A.
  2. В IRI не должно быть пробелов.
...