我正在尝试使用dbpedia SPARQL查询提取所有在奥运会上获得(金牌)奖牌的人,最理想的是他们的出生地点。基本上这是我的目标:https://de.wikipedia.org/wiki/Liste_der_olympischen_Medaillengewinner_aus_Spanien
我想它必须以某种方式处理这段代码:
yago-res:wikicategory_Olympic_bronze_medalists_for_Spain
这不起作用:
SELECT ?res
WHERE {
?res yago-res:wikicategory_Olympic_bronze_medalists_for_Spain .
}
任何想法?
答案 0 :(得分: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没有他们的出生地