Получение свойств перенаправленного ресурса

Как получить все свойства http://dbpedia.org/resource/Milano? Я пробовал с этим запросом, но у меня есть несколько результатов, и я не понимаю причину:

select ?prop ?c 
where {<http://dbpedia.org/resource/Milano> ?prop ?c.}

результаты SPARQL


person user2837896    schedule 15.10.2013    source источник
comment
Можем ли мы увидеть весь запрос, пожалуйста (+ префиксы и т. д.)? Было ли это против общедоступной конечной точки в dbpedia?   -  person Tom    schedule 15.10.2013
comment
Можете уточнить, в чем именно проблема? Этот запрос возвращает 10 результатов, но я предполагаю, что вы ищете всю информацию о Милане, верно? Страница Википедии «Милан» перенаправляет на страницу «Милан», и именно на ресурсе DBpedia «Милан» содержится большая часть информации. Я опубликовал ответ, основанный на этом предположении. Если вы можете подтвердить, что это именно то, о чем вы спрашиваете, мы можем обновить вопрос с некоторыми разъяснениями (повысив вероятность того, что будущие пользователи найдут его).   -  person Joshua Taylor    schedule 15.10.2013
comment
Вы добились каких-либо успехов в этом?   -  person Joshua Taylor    schedule 27.11.2013


Ответы (1)


Вопрос не совсем ясен, но ожидайте, что проблема, о которой вы спрашиваете, заключается в том, почему вы получаете тройки о dbpedia:Milano, но не dbpedia:Milan. Этот запрос, как вы можете видеть в результатах, возвращает только десять строк:

select ?prop ?c
where {
  <http://dbpedia.org/resource/Milano> ?prop ?c.
}

результаты SPARQL

Одна из этих строк, однако,

prop                                          c
http://dbpedia.org/ontology/wikiPageRedirects http://dbpedia.org/resource/Milan

Таким образом, простой ответ — «запрос для Милана» с таким запросом:

select ?prop ?c
where {
  <http://dbpedia.org/resource/Milan> ?prop ?c.  # you can use dbpedia:Milan, too
}

результаты SPARQL

Более сложный ответ вернул бы тройки для dbpedia:Milano и любые тройки всего, на что он перенаправляет (и, я полагаю, все, на что перенаправляется любой из них, и так далее, хотя я думаю, что Википедия ограничивает перенаправляется на один уровень в глубину). Вы можете сделать это с помощью запроса пути свойства в SPARQL:

select ?prop ?c
where {
  dbpedia:Milano dbpedia-owl:wikiPageRedirects* ?subject .
  ?subject ?prop ?c.
}

результаты SPARQL

В этом запросе ?subject будет всем, что связано путем нулевой длины или больше (так что, учитывая данные, которые мы видели, ?subject будет связано как минимум с dbpedia:Milano и dbpedia:Milan. Если вы хотите сохранить информацию о предмете запроса различные триплеты, которые вы используете, вы можете добавить ?subject к строке select, чтобы получить select ?subject ?prop ?c.

Если вас не волнует конкретное значение ?subject, вам вообще не нужно привязывать ?subject, и вы можете использовать пустой узел в запросе:

select ?prop ?c
where {
  dbpedia:Milano dbpedia-owl:wikiPageRedirects* [ ?prop ?c ] .
}

Результаты SPARQL

Предостережение

К сожалению, хотя этот последний запрос допустим для SPARQL, Virtuoso говорит, что это ошибка. К счастью, это последнее уточнение совершенно необязательно; это не жизненно важно для решения. Если бы вы запрашивали другую конечную точку, вы могли бы использовать ее. Ошибка, которую выдает Virtuoso:

Virtuoso 37000 Error SP031: SPARQL compiler: Object of transitive triple pattern should be variable or QName or literal, not blank node

SPARQL query:
define sql:big-data-const 0 
#output-format:text/html
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> select ?prop ?c
where {
  dbpedia:Milano dbpedia-owl:wikiPageRedirects* [ ?prop ?c ] .
}

Я связался со списком рассылки Virtuoso, и они подтвердили, что это ошибка Virtuoso и что они ее исправят. Однако я не знаю, сколько времени потребуется, чтобы исправление дошло до конечной точки DBpedia.

person Joshua Taylor    schedule 15.10.2013
comment
Я спросил об этом в списке рассылки пользователей Jena и получил ответ, что запрос должен быть в порядке. Теперь я отправил сообщение в список рассылки Virtuoso и жду ответа… - person Joshua Taylor; 15.10.2013
comment
Только что ответил на ваше электронное письмо, эта форма запроса является законной, поэтому в Virtuoso есть ошибка. - person RobV; 15.10.2013
comment
@RobV Я люблю время, когда Интернет меняется; Дэйв Рейнольдс и Энди Сиборн тоже очень быстро ответили. Теперь я жду известий от людей Virtuoso. - person Joshua Taylor; 15.10.2013