我正在进入SPARQL,我想设置一个简单的请求,但它似乎并不那么容易......
我想从一个出生在一个特殊国家的俱乐部获得所有足球运动员。
我有要求让所有球员来自俱乐部。 e.g:
SELECT ?player WHERE {
<http://dbpedia.org/resource/Hertha_BSC> dbpedia2:name ?player
}
如何让所有玩家都出生,例如德国有过滤器选项?
我已经尝试过这种方式,但似乎我没有得到什么......
prefix dbo:<http://dbpedia.org/ontology/>
SELECT ?player WHERE {
<http://dbpedia.org/resource/Hertha_BSC> dbpedia2:name ?player .
?birth dbo:birthPlace ?player.
filter (regex(?birth, "Germany")).
}
如果你能帮助我,我将不胜感激。
编辑: 在Median Hilal帮助之后,我试图用“过滤器”完成它,但它不起作用。
SELECT distinct ?player WHERE {
?player a <http://dbpedia.org/ontology/SoccerPlayer>.
?player <http://dbpedia.org/property/currentclub>
<http://dbpedia.org/resource/Hertha_BSC>.
optional {?subject <http://dbpedia.org/ontology/birthPlace>/<http://dbpedia.org/ontology/country> ?<http://dbpedia.org/resource/Germany>. }
filter (!bound(?subject)).
}
ORDER BY ASC(?player)
有什么建议吗?
答案 0 :(得分:3)
你的两个问题都没有意义。我认为以下内容很有用
SELECT distinct * WHERE {
?player a <http://dbpedia.org/ontology/SoccerPlayer>.
#get all soccer players
?player <http://dbpedia.org/property/currentclub> ?club.
#get the clubs, you can use <http://dbpedia.org/resource/Hertha_BSC> instead of ?club for Hertha Berlin
?player <http://dbpedia.org/ontology/birthPlace>/<http://dbpedia.org/ontology/country>? <http://dbpedia.org/resource/Germany>.
# get birth places which are either Germany or places located in Germany
}