如何从Freebase获取所有电影ID列表?

时间:2013-12-03 14:07:34

标签: rdf freebase mql

在我几年前工作的项目中,我正在构建一组有关Freebase电影的数据。一个简单的shell脚本下载了“film.tsv”文件(来自http://download.freebase.com/datadumps/latest/browse/film/film.tsv)。然后我使用该文件中的“id”字段为每部电影构建必要的MQL请求(检索我感兴趣的其他属性,例如演员,流派)。

今天看了开发人员的指南之后,我意识到Freebase已经发生了相当大的变化,我发现之前使用的转储文件已经不再可用了。我还看到转储文件格式现在是RDF,从我可以看出的转储文件现在只能作为一个22GB的存档。

如果可能的话,我希望每次想要重建我的数据集时都避免下载22G文件,因此可以再检索单个转储文件,例如喜欢film.tsv文件?

如果没有,是否有其他方法可以获得完整的电影ID列表?

2 个答案:

答案 0 :(得分:4)

目前还没有为film.tsv计划更换。您可以从RDF dump获取当前的电影ID列表,如下所示:

zgrep $'\ttype\.object\.type\tfilm\.film' freebase-rdf.gz

然后,当您需要更新列表时,您可以在MQL Read API查询自上次更新以来添加的新电影列表:

[{
  "type": "/film/film",
  "id": null,
  "name": null,
  "timestamp": null,
  "timestamp>=": "2013-12",
  "sort": "-timestamp"
}]

由于API一次返回200个结果,因此您需要使用a cursor来获取完整的结果列表。

答案 1 :(得分:0)

您只需打开以下链接即可试用MQL。

https://www.googleapis.com/freebase/v1/mqlread?query=[{%22type%22:%20%22/film/film%22,%22id%22:%20null,%22limit%22:300}]&cursor=

你必须提出很多要求。

在每个响应中,您会收到一个游标,您在下一个请求时将其用作cursor =的参数。 AFAIK的默认限制是200。 您无法随意增加限制。 也许可以优化查询,以便响应不包含类型。

您可以在此处http://tinyurl.com/pn5o52w修改查询 在右上角,您有一个带有“MQLRead链接”的“链接”按钮,显示要执行的网址。 我手动添加了'cursor ='参数。我认为查询编辑器提供了一个选项,但我找不到它。