#sparql #dbpedia #countries
#sparql #dbpedia #Страны
Вопрос:
Что я хочу от моего запроса sparql, так это не только получить список всех европейских стран, но и получить всю имеющуюся у них информацию. Например, их капитал, валюта, areaKM и так далее. Конечная цель — использовать наборы данных, которые я приобрел в protege. Запрос, который я пробовал, выглядел следующим образом:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yago: <http://dbpedia.org/class/yago/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX db: <http://dbpedia.org/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT DISTINCT ?country ?capital ?area ?currency ?wealth
WHERE {
?country rdf:type yago:EuropeanCountries;
dbo:capital ?capital;
dbp:areaKm ?area;
dbp:currencyCode ?currency;
dbp:gdpPppPerCapita ?wealth .
}
Сначала казалось, что это работает, но со вчерашнего дня этого больше не будет. Итак, мой вопрос в том, как мне получить все европейские страны и их свойства, предоставленные dbpedia, используя sparql.
Заранее спасибо!
Ответ №1:
Со вчерашнего дня DBpedia 2016-04 загружается в http://dbpedia.org/sparql и, насколько я вижу, данные YAGO не загружены (пока?)
По крайней мере, этот упрощенный запрос уже не возвращает никакого результата:
PREFIX yago: <http://dbpedia.org/class/yago/>
SELECT DISTINCT * WHERE {
?country a yago:EuropeanCountries
}
Альтернативный запрос с использованием категорий DBpedia (и ваш тип YAGO более или менее совпадает):
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX yago: <http://dbpedia.org/class/yago/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT DISTINCT *
WHERE
{ ?country dct:subject <http://dbpedia.org/resource/Category:Countries_in_Europe> ;
dbo:capital ?capital
OPTIONAL
{ ?country dbp:areaKm ?area }
OPTIONAL
{ ?country dbp:currencyCode ?currency }
OPTIONAL
{ ?country dbp:gdpPppPerCapita ?wealth }
}
Обратите внимание, что я помещаю некоторые свойства в НЕОБЯЗАТЕЛЬНЫЙ, как минимум, для dbp:currencyCode
, и dbp:gdpPppPerCapita
данных нет (больше?).