我对这些话题很陌生。我阅读了 sparql 文档,并试图获取特定人的性别。例如说我想要Larry_Page 性别。我能够获得 lary_page 的所有属性(基于以下页面:),http://dbpedia.org/resource/Larry_Page
但它没有任何名为 Gender 的属性。那么我怎样才能得到一个特定人的性别......???谁能告诉我答案。
问问题
1792 次
1 回答
2
DBpedia 并不是一个特别完整的数据集。对于您正在查看的人,很可能根本没有定义任何类型的性别属性-类似于此线程中的答案中概述的情况。
即使有,请记住它可以由各种属性和值表示,因此您必须检查所有这些以至少使用定义它的数据。快速检查至少向我显示以下可能存储您感兴趣的信息的属性:
请注意,其中一些可能链接到其他资源,例如Male
or Female
,而其他将仅包含诸如male
orfemale
的字符串(FOAF 规范明确指出
通常但不一定是“男性”或“女性”
)。
例如,以下查询返回Scheherazade的性别:
SELECT ?gl
WHERE {
dbpedia:Scheherazade dbpedia-owl:gender ?g.
?g rdfs:label ?gl.
FILTER(lang(?gl) = "en").
}
同样,以下查询列出了许多人的姓名和性别:
SELECT ?pn ?gl
WHERE {
?person dbpedia-owl:gender ?g.
?person a dbpedia-owl:Person.
?person dbpprop:name ?pn.
{
?person dbpedia-owl:gender dbpedia:Male.
} UNION {
?person dbpedia-owl:gender dbpedia:Female.
}.
?g rdfs:label ?gl.
FILTER(lang(?gl) = "en").
}
但是,此查询只能捕获为其设置了相应类型和性别属性的那些人。Larry Page 永远不会与当前数据集一起出现在该列表中,因为它没有相应的性别属性。作为另一个实际示例,请参阅这个非常相似的查询,它返回一个不同的(非空)列表:
SELECT ?pn ?gl
WHERE {
?person dbpedia-owl:gender ?g.
?person a dbpedia-owl:Person.
?person dbpprop:name ?pn.
{
?person dbpedia-owl:gender dbpedia:Man.
} UNION {
?person dbpedia-owl:gender dbpedia:Woman.
}.
?g rdfs:label ?gl.
FILTER(lang(?gl) = "en").
}
另一个查询返回另一个列表:
SELECT ?pn ?gl
WHERE {
?person ?gender ?gl.
?person a dbpedia-owl:Person.
?person dbpprop:name ?pn.
FILTER((?gl = "Female"@en) || (?gl = "Male"@en)).
}
编辑: DBpedia 的默认命名空间前缀自编写此答案以来已更改。映射如下:
dbpedia
->http://dbpedia.org/resource/
(现在dbr
)dbpedia-owl
->http://dbpedia.org/ontology/
(现在dbo
)dbpprop
->http://dbpedia.org/property/
(现在dbp
)
于 2013-11-10T14:30:13.403 回答