我尝试了这个查询来获取所有菜肴实例的列表。
[{
"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”,但没有起作用。
假设我有一个名字“比萨饼”,我尝试了这个查询来获得“比萨饼”的细节:
{
"*": null,
"name": "pizza",
"type": "/food/dish"
}但这并没有给我描述和图片像这个页面http://www.freebase.com/m/0663v
问题2:如何获取所有信息,或者至少像上面的自由基页面中的描述和图像URL?
奖励:我试图通过Freebase Node.js here https://github.com/spencermountain/Freebase.js做任何事情
发布于 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": []添加到查询中即可。请注意,许多菜没有配料,但比萨有:
{
"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下可用。例如,对于查询
[{
"id": "/en/minestrone",
"/common/topic/image": [{
"id": null,
"name": null
}]
}]您可以得到以下图像及其描述:
{
"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是:
[{
"id": null,
"name": null,
"type": "/food/dish",
"/common/topic/image": [{
"id": null,
"name": null
}],
"/dining/cuisine/ingredients": []
}]..。并且HTTP信封将包含cursor的一个键和一个值。
发布于 2013-09-29 14:58:05
关于问题1的答案,见Nitzan的答复。
对于第二个问题,获取描述和图像的最简单方法是使用主题API例如https://www.googleapis.com/freebase/v1/topic/m/0663v
https://stackoverflow.com/questions/19073979
复制相似问题