【问题标题】:How to build correct SPARQL Query如何构建正确的 SPARQL 查询
【发布时间】:2023-04-08 22:59:01
【问题描述】:

我需要使用 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.
}

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

【问题讨论】:

  • 我认为 ?city 之后的点应该是分号。否则你上面的查询是不正确的,因为最后一个词缺少主题。
  • 当然。谢谢。例如,您能否使用 SPARQL 帮助获取任何足球运动员的家乡?
  • 由于我目前无法到达 dbpedia 的 sparql 端点,因此无法进一步帮助您。
  • 这里有几个问题:(i) DBpedia 有你要找的数据吗? (ii) 如果有,它是如何存储的? (iii) 什么 SPARQL 查询将检索该信息?一旦你回答了 (i) 和 (ii),那么 (iii) 就不会太难了。你有(i)和(ii)的答案吗?您可能只需要手动浏览一些 DBpedia,直到找到信息,或者发现它不存在。毕竟,这就是任何想回答这个问题的人都必须做的事情。

标签: rdf sparql semantic-web dbpedia linked-data


【解决方案1】:

我会使用这样的查询:

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 results

使用可选可确保未列出出生地或出生日期的玩家仍可包含在结果中。使用 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。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2014-05-30
    • 2016-08-25
    相关资源
    最近更新 更多