首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Freebase中获取每个菜页的菜品清单和详细信息?

在Freebase中获取每个菜页的菜品清单和详细信息?
EN

Stack Overflow用户
提问于 2013-09-29 03:06:03
回答 2查看 611关注 0票数 2

我尝试了这个查询来获取所有菜肴实例的列表。

代码语言:javascript
复制
[{
  "id": null,
  "name": null,
  "type": "/food/dish"
}]

但它只给了我第一页:

http://www.freebase.com/query?autorun=1&q=%5B%7B%22id%22:null,%22name%22:null,%22type%22:%22/food/dish%22%7D%5D

问题1:如何添加分页以获得所有2.5K左右的dish实例?我试图添加“游标: 2”,但没有起作用。

假设我有一个名字“比萨饼”,我尝试了这个查询来获得“比萨饼”的细节:

代码语言:javascript
复制
{
  "*": null,
  "name": "pizza",
  "type": "/food/dish"
}

但这并没有给我描述和图片像这个页面http://www.freebase.com/m/0663v

问题2:如何获取所有信息,或者至少像上面的自由基页面中的描述和图像URL?

奖励:我试图通过Freebase Node.js here https://github.com/spencermountain/Freebase.js做任何事情

EN

回答 2

Stack Overflow用户

发布于 2013-09-29 05:31:27

我建议你把这个问题分成两个问题,这样每个问题都有自己的主题,这样以后的访问者就更容易搜索了。

尽管如此:

问题1

通过将limit:添加到查询中,可以增加每个页面获得的结果数。无论如何,您将不得不使用分页。要使用分页,需要将cursor参数添加到mqlread HTTP请求中。再说一遍:cursor不是MQL查询本身的一部分,而是提交它的HTTP信封的一部分。

对于第一个查询,发出一个空的cursor,对于后续的查询,使用mqlread返回给您的cursor值。

请注意,所有这些都需要通过API来完成,而不是直接使用freebase,因此URL必须是:

https://www.googleapis.com/freebase/v1/mqlread?cursor=&query=[{"id":null,"name":null,"type":"/food/dish","limit":5}]

还请注意,如果您计划这样做,除了测试之外,您还需要从Google获得一个密钥。

最后,请注意Freebase中的一些字符串是“freebase编码的”,请阅读有关如何在结果中解码它们的内容。

问题2

如果只需要成分名称,那么只需将"/dining/cuisine/ingredients": []添加到查询中即可。请注意,许多菜没有配料,但比萨有:

代码语言:javascript
复制
{
  "id": "/m/0663v",
  "name": null,
  "type": "/food/dish",
  "/dining/cuisine/ingredients": []
}

获取图像意味着将"/common/topic/image": [{}]添加到查询中,并对每个图像使用返回的id

从给定的图像id获取图像URL是通过将https://usercontent.googleapis.com/freebase/v1/image/先于id完成的。

编辑

汤姆正确地指出,我忘记了图像描述。在返回的name:数组中,每个图像的描述将在/common/topic/image下可用。例如,对于查询

代码语言:javascript
复制
[{
  "id": "/en/minestrone",
  "/common/topic/image": [{
    "id": null,
    "name": null
  }]
}]

您可以得到以下图像及其描述:

代码语言:javascript
复制
{
  "result": [{
    "id": "/en/minestrone",
    "/common/topic/image": [
      {
        "id": "/wikipedia/images/commons_id/1492185",
        "name": "MinestroneSoup"
      },
      {
        "id": "/wikipedia/images/commons_id/12565901",
        "name": "Homemade minestrone"
      }
    ]
  }]
}

那么,你最后的MQL是:

代码语言:javascript
复制
[{
  "id": null,
  "name": null,
  "type": "/food/dish",
  "/common/topic/image": [{
    "id": null,
    "name": null
  }],
  "/dining/cuisine/ingredients": []
}]

..。并且HTTP信封将包含cursor的一个键和一个值。

票数 5
EN

Stack Overflow用户

发布于 2013-09-29 14:58:05

关于问题1的答案,见Nitzan的答复。

对于第二个问题,获取描述和图像的最简单方法是使用主题API例如https://www.googleapis.com/freebase/v1/topic/m/0663v

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19073979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档