Как запрашивать связанные данные с помощью SPARQL

Можно ли запрашивать связанные данные с помощью SPARQL?

Например, у меня есть файл RDF (скажем, этот) и запрос SPARQL, подобный этому :

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX cc: <http://creativecommons.org/ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX s: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX con: <http://www.w3.org/2000/10/swap/pim/contact#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>

select ?friends (COUNT(?cff) as ?count_friends_of_friends) where { 
  ?me foaf:knows ?friends .
  ?friends foaf:knows ?cff .
}

Я не получил никаких результатов. Следит ли SPARQL по связанным ресурсам? Или мне нужно делать несколько запросов?


person Slevin    schedule 06.07.2014    source источник
comment
SPARQL сам по себе просто запрашивает одну модель RDF - нет никаких требований или ожиданий, что по его ссылкам будут переходить.   -  person DNA    schedule 06.07.2014
comment
См. Также stackoverflow.com/questions/4969377/   -  person DNA    schedule 06.07.2014


Ответы (1)


Нет, SPARQL не отслеживает связанные ресурсы при их распространении. Похоже, вы ищете федеративные запросы. Дополнительную информацию можно найти в Спецификации W3C: http://www.w3.org/TR/sparql11-federated-query/

SPARQL - это язык запросов. Это позволяет делать запросы к RDF-графам. Если графы распределены, то вам нужна федерация запросов.

По умолчанию URI не обязательно должны быть разрешаемыми, это просто идентификаторы (‹#a> - действительный URI). Например, ваш фрагмент RDF может сообщать, что <http://www.w3.org/People/Berners-Lee/card#i> foaf:knows <http://www.lassila.org/ora.rdf#me> последний URL может вернуть 404.

person Daniel Garijo    schedule 03.10.2014