2

我需要使用 SPARQL 查询和 dbpedia.org 获取所有曾经为足球队效力过的球员

我可以使用http://dbpedia.org/sparql和以下查询获取当前团队成员:

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.
}

如何获得所有曾经为这支球队效力过的球员?

4

1 回答 1

4

我会使用这样的查询:

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

SPARQL 结果

使用optional可确保没有列出出生地或出生日期的玩家仍然可以包含在结果中。使用dbpedia-owl:Person有助于删除一些“脏”数据(即,具有dbpedia-owl:team属性但不是玩家的东西)。同样,添加dbpedia-owl:wikiPageID []可确保结果是作为文章存在的内容。如果你不包括它,那么你会得到像Manchester_United_F.C.__Ryan_Giggs__1这样的结果,这似乎是一种职业站实体。(请注意,Ryan Giggsdbpedia-owl:careerStation dbpedia:Ryan_Giggs__1。)

于 2014-12-31T17:24:25.577 回答