Извлечение ресурса DBpedia по его строковому имени с помощью SPARQL - PullRequest
7 голосов
/ 07 мая 2011

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

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 Ответ

10 голосов
/ 07 мая 2011

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

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

Результаты SPARQL

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

...