1

我对这些话题很陌生。我阅读了 sparql 文档,并试图获取特定人的性别。例如说我想要Larry_Page 性别。我能够获得 lary_page 的所有属性(基于以下页面:),http://dbpedia.org/resource/Larry_Page但它没有任何名为 Gender 的属性。那么我怎样才能得到一个特定人的性别......???谁能告诉我答案。

4

1 回答 1

2

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

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

请注意,其中一些可能链接到其他资源,例如Maleor Female,而其他将仅包含诸如maleorfemale的字符串(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 回答