在SPARQL中获取特定人物的性别...?

时间:2013-11-10 08:06:44

标签: sparql dbpedia

我对这些主题不熟悉。我阅读了sparql文档,我试图得到一个特定的人的性别。比方说,我想要 Larry_Page性别。我能够获得lary_page的所有属性(基于以下页面:http://dbpedia.org/resource/Larry_Page)但它没有任何名为Gender的属性。那么我怎样才能得到某个人的性别...... ???任何人都可以告诉我答案。

1 个答案:

答案 0 :(得分:2)

DBpedia不是一个特别完整的数据集。对于您正在查看的人来说,很可能没有任何类型的性别属性被定义 - 类似于this thread中答案中概述的情况。

即使存在,请记住它可以通过各种属性和值表示,因此您必须检查所有这些属性和值,以至少使用定义它的数据。快速检查显示至少可以存储您感兴趣的信息的以下属性:

请注意,其中一些资源可能会链接到其他资源,例如MaleFemale,而其他资源只会包含malefemale等字符串(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