2016-05-31 3 views
1

Я пытаюсь извлечь всех людей, которые выиграли (Золотую) медаль на Олимпиаде и, в идеале, их место рождения, используя запрос dbpedia SPARQL. В основном это этот список я направленный на: https://de.wikipedia.org/wiki/Liste_der_olympischen_Medaillengewinner_aus_SpanienКак извлечь людей в список википедии с помощью dbpedia/sparql

Я думаю, он должен каким-то образом работать с этим фрагментом кода:

yago-res:wikicategory_Olympic_bronze_medalists_for_Spain

Это не работает:

SELECT ?res  
WHERE { 
    ?res yago-res:wikicategory_Olympic_bronze_medalists_for_Spain . 
} 

любой идеи?

+0

, что это класс, который вам нужен? –

+0

http://mappings.dbpedia.org/server/ontology/classes/#Olympics? –

ответ

1

Чтобы получить все испанское лицо, которые завоевали золотую медаль в олимпийском

select ?person where 
{ 
    ?person a <http://dbpedia.org/class/yago/OlympicGoldMedalistsForSpain> 
} 

Если вы посмотрите на то, что DBpedia есть, нет класса:

http://dbpedia.org/class/yago/OlympicGoldMedalists 

но есть

http://dbpedia.org/class/yago/OlympicGoldMedalistsForItaly 

и

http://dbpedia.org/class/yago/OlympicGoldMedalistsForFrance 

и

http://dbpedia.org/class/yago/OlympicGoldMedalistsForGermany 

поэтому работа вокруг может быть:

select distinct ?person ?birthPlace where 
{ 
    ?goldForCountry rdfs:subClassOf yago:Medalist110305062 . 
    ?person a ?goldForCountry . 
    optional{ 
     ?person dbo:birthPlace ?birthPlace 
    } 
    filter (contains(str(?goldForCountry), "http://dbpedia.org/class/yago/OlympicGoldMedalistsFor")) 
} 

birthPlace должно быть обязательным, поскольку есть 3994 человек, которые DBpedia не имеют их место рождения

+0

Работает отлично. Большое спасибо. У вас есть идея, как добавить место рождения в окончательные результаты? –

+0

@ChrisEnroute проверить обновленный ответ пожалуйста –

+0

спасибо! Прекрасно работает. Я имел в виду место рождения, но не дату. Но получил его, заменив BirthDate на birthPlace. –

Смежные вопросы