如何建立正确的SPARQL查询 [英] How to build correct SPARQL Query
问题描述
我需要使用SPARQL查询和dbpedia.org来获得曾经为足球队效力的所有球员
I need to get all players who have ever played for football team using SPARQL query and dbpedia.org
我可以使用 http://dbpedia.org/sparql 和以下查询获取当前的团队成员:>
I can get current team members using http://dbpedia.org/sparql and this query:
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX p: <http://dbpedia.org/property/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT * WHERE {
<http://dbpedia.org/resource/Manchester_United_F.C.> p:name ?player.
?player dbpedia-owl:birthPlace ?city;
dbpedia-owl:birthDate ?dob.
}
如何获得曾经为这支足球队效力的所有球员?
How to get all players who have ever played for this football team ?
推荐答案
我将使用这样的查询:
select distinct ?player ?birthPlace ?birthDate where {
?player dbpedia-owl:team <http://dbpedia.org/resource/Manchester_United_F.C.> ;
a dbpedia-owl:Person ;
dbpedia-owl:wikiPageID [] .
optional { ?player dbpedia-owl:birthPlace ?birthPlace }
optional { ?player dbpedia-owl:birthDate ?birthDate }
}
使用可选可确保没有列出出生地或出生日期的球员仍可包含在结果中.使用 dbpedia-owl:Person 有助于删除一些脏"数据(即具有 dbpedia-owl:team 属性但不是播放器的东西).同样,添加 dbpedia-owl:wikiPageID [] 可确保结果是作为文章存在的内容.如果不包括在内,则会得到类似 Manchester_United_F.C .__ Ryan_Giggs__1 的结果,这似乎是职业站的一种实体. (请注意, Ryan Giggs 具有例如 dbpedia-owl:careerStation dbpedia:Ryan_Giggs__1 >.)
Using optional ensures that players without listed birthplaces or birthdates can still be included in the results. Using a dbpedia-owl:Person helps remove some "dirty" data (i.e., things that have a dbpedia-owl:team property, but that aren't players). Similarly, adding dbpedia-owl:wikiPageID [] ensures that the results are things that exist as articles. If you don't include that, then you get results like Manchester_United_F.C.__Ryan_Giggs__1, which appears to be a sort of career station entity. (Note that Ryan Giggs has, e.g., dbpedia-owl:careerStation dbpedia:Ryan_Giggs__1.)
这篇关于如何建立正确的SPARQL查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!