Извлечение ресурса DBpedia по его строковому имени с помощью SPARQL
Я пытаюсь получить ресурс, описывающий страну Румыния по названию страны с этим запросом:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>
SELECT DISTINCT ?x WHERE {
?x foaf:name 'Romania'
}
Тем не менее, он ничего не извлекает. Как я могу получить ресурс http://dbpedia.org/resource/Romania
(:Romania
) по строке 'Romania'
, Если я хочу получить название страны по ресурсу страны, я использую следующий запрос, который работает нормально:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>
SELECT DISTINCT ?x WHERE {
:Romania foaf:name ?x
}
1 ответ
Это должно сделать это:
SELECT ?c
WHERE {
?c a dbo:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS { ?c dbo:dissolutionYear ?y }
}
Критическая причуда здесь в том, что "Romania"
без языкового тега отличается от "Romania"@en
, И затем у вас также есть куча исторических государств, которые также назывались Румыния, поэтому мы отфильтровываем любые из тех, которые имеют годы распада. Полнота данных DBpedia за годы роспуска не впечатляет, но все румынские, по крайней мере, отмечены.