Chris Enroute
Chris Enroute

Reputation: 11

How to extract persons on a wikipedia list using dbpedia/sparql

I'm trying to extract all persons that won a (Gold) medal at the Olympics and ideally their birth location using the dbpedia SPARQL query. Basically it's this list I'm aiming at: https://de.wikipedia.org/wiki/Liste_der_olympischen_Medaillengewinner_aus_Spanien

I guess it must somehow work with this piece of code:

yago-res:wikicategory_Olympic_bronze_medalists_for_Spain

This doesn't work:

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

any ideas?

Upvotes: 1

Views: 443

Answers (1)

William Kinaan
William Kinaan

Reputation: 28829

To get all the spanish persons that have won the gold medal in olympic

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

If you look at what dbpedia has, there is no class:

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

but there is

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

and

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

and

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

so a work around could be:

    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"))
}

The birthPlace should be optional because there are 3994 persons that dbpedia doesn't have their birth place

Upvotes: 1

Related Questions