我有一个人的网址http://dbpedia.org/page/John_Terry 而且我试图提取他的名字,职位,俱乐部和出生日期的价值。 理想情况下,输出将是:
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
}
我理解的不是理想的做法。 提前谢谢。
答案 0 :(得分:1)
为什么owl:sameAs
三重模式为完全不同的资源dbpedia:Anthony_Martial
?同样意味着资源dbpedia:Anthony_Martial
和dbpedia:John_Terry
都相同,这里没有意义,对吧?
您拥有要获取相关信息的资源dbpedia:John_Terry
,即您的?x
。
更多评论:
*没有属性dbpedia-owl: name
,您可以使用foaf:name
。
*没有财产dbpedia-owl:currentClub
。 dbpedia-owl
是http://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. |
+------------------------+-------------------------------------------------------------+------------+------------------------------------------+