Как получить все свойства http://dbpedia.org/resource/Milano? Я пробовал с этим запросом, но у меня есть несколько результатов, и я не понимаю причину:
select ?prop ?c
where {<http://dbpedia.org/resource/Milano> ?prop ?c.}
Как получить все свойства http://dbpedia.org/resource/Milano? Я пробовал с этим запросом, но у меня есть несколько результатов, и я не понимаю причину:
select ?prop ?c
where {<http://dbpedia.org/resource/Milano> ?prop ?c.}
Вопрос не совсем ясен, но ожидайте, что проблема, о которой вы спрашиваете, заключается в том, почему вы получаете тройки о dbpedia:Milano
, но не dbpedia:Milan
. Этот запрос, как вы можете видеть в результатах, возвращает только десять строк:
select ?prop ?c
where {
<http://dbpedia.org/resource/Milano> ?prop ?c.
}
Одна из этих строк, однако,
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
}
Более сложный ответ вернул бы тройки для dbpedia:Milano
и любые тройки всего, на что он перенаправляет (и, я полагаю, все, на что перенаправляется любой из них, и так далее, хотя я думаю, что Википедия ограничивает перенаправляется на один уровень в глубину). Вы можете сделать это с помощью запроса пути свойства в SPARQL:
select ?prop ?c
where {
dbpedia:Milano dbpedia-owl:wikiPageRedirects* ?subject .
?subject ?prop ?c.
}
В этом запросе ?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, 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.