Извлечение ресурса DBpedia по его строковому имени с помощью SPARQL

Я пытаюсь получить ресурс, описывающий страну Румыния по названию страны с этим запросом:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>

SELECT DISTINCT ?x WHERE {
     ?x foaf:name 'Romania'
}

Результаты SPARQL

Тем не менее, он ничего не извлекает. Как я могу получить ресурс 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
}

Результаты SPARQL

1 ответ

Это должно сделать это:

SELECT ?c
WHERE {
  ?c a dbo:Country ;
     foaf:name "Romania"@en .
  FILTER NOT EXISTS { ?c dbo:dissolutionYear ?y }
}

Результаты SPARQL

Критическая причуда здесь в том, что "Romania" без языкового тега отличается от "Romania"@en, И затем у вас также есть куча исторических государств, которые также назывались Румыния, поэтому мы отфильтровываем любые из тех, которые имеют годы распада. Полнота данных DBpedia за годы роспуска не впечатляет, но все румынские, по крайней мере, отмечены.

Другие вопросы по тегам