Запросы с помощью Spaces 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> }";

person Sam    schedule 29.01.2012    source источник


Ответы (2)


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

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

К сожалению, существует несоответствие между определениями ссылок RDF URI и IRI, и вы только что столкнулись с одним из случаев: в то время как ссылки RDF URI разрешают пробелы, 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")
}
person Jeen Broekstra    schedule 29.01.2012
comment
отличный ответ, вероятно, будет избегать пробелов - person Sam; 30.01.2012

  1. Это owl:sameAs, а не owl:sameas. Обратите внимание на заглавную букву А.
  2. У вас не может быть пробелов в IRI.
person user205512    schedule 29.01.2012