【问题标题】:How can I get a list of all film ids from Freebase?如何从 Freebase 获取所有电影 ID 的列表?
【发布时间】:2013-12-04 01:30:42
【问题描述】:

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

今天查看开发人员指南后,我意识到 Freebase 已经取得了相当大的进步,而且我发现我之前使用的转储文件不再可用。我还看到转储文件格式现在是 RDF,据我所知,转储文件现在只能作为单个 22GB 存档使用。

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

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

【问题讨论】:

    标签: rdf freebase mql


    【解决方案1】:

    目前没有计划替换 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 来获取完整的结果列表。

    【讨论】:

    • 您知道一种获取特定转储的方法吗,就像书籍和作者的三倍?我真的需要它,如果该转储可用而无需获取完整转储,这将很有帮助。
    【解决方案2】:

    您只需打开以下链接即可试用 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 链接”的“链接”按钮,向您显示要执行的 URL。 我手动添加了 'cursor=' 参数。我认为查询编辑器为此提供了一个选项,但我找不到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      相关资源
      最近更新 更多