在SPARQL中获取特定人的性别。。。?
我对这些话题很陌生。我阅读了sparql文档,并试图了解某个人的性别。比如说我想要拉里•佩奇性别。我能够获得lary_页面的所有属性(基于以下页面:),但它没有任何称为性别的属性。那么我怎样才能知道某个人的性别。。。???有谁能告诉我答案吗?DBpedia不是一个特别完整的数据集。很有可能,对于你正在看的人来说,根本没有定义任何类型的性别属性——类似于中的答案中概述的情况 即使有,也要记住,它可以由各种属性和值表示,因此您必须检查所有属性和值,以至少使用定义它的数据。快速检查至少会显示以下属性,这些属性可能存储您感兴趣的信息:在SPARQL中获取特定人的性别。。。?,sparql,dbpedia,Sparql,Dbpedia,我对这些话题很陌生。我阅读了sparql文档,并试图了解某个人的性别。比如说我想要拉里•佩奇性别。我能够获得lary_页面的所有属性(基于以下页面:),但它没有任何称为性别的属性。那么我怎样才能知道某个人的性别。。。???有谁能告诉我答案吗?DBpedia不是一个特别完整的数据集。很有可能,对于你正在看的人来说,根本没有定义任何类型的性别属性——类似于中的答案中概述的情况 即使有,也要记住,它可以由各种属性和值表示,因此您必须检查所有属性和值,以至少使用定义它的数据。快速检查至少会显示以下属性,
男性
或女性
(FOAF规范明确规定
通常但不一定是“男性”或“女性”
)
例如,以下查询返回的性别为: 同样,以下查询列出了许多人的姓名和性别:
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 ?gender ?gl.
?person a dbpedia-owl:Person.
?person dbpprop:name ?pn.
FILTER((?gl = "Female"@en) || (?gl = "Male"@en)).
}
EDIT:DBpedia的默认名称空间前缀在编写此答案后已更改。映射如下:
->dbpedia
(现在是http://dbpedia.org/resource/
)dbr
->dbpediaowl
(现在是http://dbpedia.org/ontology/
)dbo
->dbpprop
(现在为dbp)http://dbpedia.org/property/
dbpedia owl
已重命名为dbo
,dbpedia
已重命名为dbr
。例如,如果在第一个查询中进行这些替换,则结果集不是空的。我刚刚用我的答案中的前两个查询尝试了这个方法,它成功了。@fanbondi:我编辑了我的答案,将使用过的前缀映射到实际的URI前缀。请注意,在您的特定情况下,一个可能的混淆源是您链接到的SNORQL前端包含了附加的前缀dbpedia:
声明,它声明的dbpedia
前缀与以前不同(与我在本回答中使用的前缀不同)。在这个答案中,dbpedia
映射到http://dbpedia.org/resource/
,而不是http://dbpedia.org/
。
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)).
}