1

免费用户!

我试图得到这个结果:

  • 2011 年死亡的所有人名单
  • 2011年死亡的所有美国人名单

我使用带有简单查询的python代码:

import freebase
r = freebase.mqlreaditer({"/people/deceased_person/date_of_death":'2011', "name":None})
for i in r:
    print i

但是输出给了我 20 个名字。将结果与本文 (http://en.wikipedia.org/wiki/Category:2011_deaths) 进行比较 - 5,612 个名称,显然有一些错误。

任何想法如何获得正确的结果?

4

1 回答 1

1

您编写的查询:

{
  "name": null,
  "/people/deceased_person/date_of_death": "2011"
}​

这只查找死亡日期在 Freebase 中记录为“2011”的人。您打算查询的是在 2011 年 1 月 1 日或之后但在 2012 年 1 月 1 日之前死亡的人。该查询如下所示:

{
  "id": null,
  "name": null,
  "type": "/people/deceased_person",
  "date_of_death": null,
  "date_of_death>=": "2011",
  "date_of_death<": "2012"
}​

您可以进一步细化该查询以仅搜索这样的美国人:

{
  "id": null,
  "name": null,
  "type": "/people/deceased_person",
  "date_of_death": null,
  "date_of_death>=": "2011",
  "date_of_death<": "2012",
  "/people/person/nationality": {
    "id": "/en/united_states"
  }
}​

请注意,由于国籍是 /people/person 而不是 /people/deeased_person (声明的类型)的一部分,因此我需要使用完整的属性 ID,而 date_of_death 可以使用缩短的 ID。

于 2012-10-29T18:41:56.473 回答