SPARQL查询提取dbpedia页面的值

时间:2017-05-24 00:23:53

标签: sparql dbpedia

我有一个人的网址http://dbpedia.org/page/John_Terry 而且我试图提取他的名字,职位,俱乐部和出生日期的价值。 理想情况下,输出将是:

姓名|职位| DOB |会

John Terry |后卫| 1980-12-07 |切尔西

以下是我在进行一些挖掘后尝试查询:

SELECT ?name ?pos ?birthDate ? where { ?x owl:sameAs? dbpedia:John_Terry . ?x dbpedia-owl:name ?name . ?x dbpedia-owl:birthDate ?birthDate . ?x dbpedia-owl:position ?pos . ?x dbpedia-owl:currentClub ?club }

我理解的不是理想的做法。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

为什么owl:sameAs三重模式为完全不同的资源dbpedia:Anthony_Martial?同样意味着资源dbpedia:Anthony_Martialdbpedia:John_Terry都相同,这里没有意义,对吧?

您拥有要获取相关信息的资源dbpedia:John_Terry,即您的?x

更多评论: *没有属性dbpedia-owl: name,您可以使用foaf:name。 *没有财产dbpedia-owl:currentClubdbpedia-owlhttp://dbpedia.org/ontology/的(已弃用)前缀,但currentClub的正确名称空间为http://dbpedia.org/property/ 及其书面current c lub,此处没有骆驼案例

可能的解决方案:

PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?name ?pos ?birthDate  ?club WHERE { 
  dbpedia:John_Terry foaf:name ?name ;
                     dbo:birthDate ?birthDate ;
                     dbo:position ?pos ;
                     dbp:currentclub ?club

}

返回

+------------------------+-------------------------------------------------------------+------------+------------------------------------------+
|          name          |                             pos                             | birthDate  |                   club                   |
+------------------------+-------------------------------------------------------------+------------+------------------------------------------+
| "John George Terry"@en | http://dbpedia.org/resource/Defender_(association_football) | 1980-12-07 | http://dbpedia.org/resource/Chelsea_F.C. |
+------------------------+-------------------------------------------------------------+------------+------------------------------------------+
相关问题