python中的Freebase查询示例

2024-06-28 15:46:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道我有阅读障碍,也没有博士学位,但我总是觉得谷歌的API难以理解。在

我只需要一个关于以下方面的例子: 获取“/music/genre”列表,然后获取第一个流派的子流派(“/music/genre/subgenre”)。然后打印/common/topic/alias(如果有的话)。在

我的代码:

import json
import requests


query = json.dumps( [{'id': None, 'name': None, 'type': '/music/genre'}])
r = requests.get('https://www.googleapis.com/freebase/v1/mqlread?query=%s' % query )


for i in r.json()['result'][:1]:
    print requests.get('https://www.googleapis.com/freebase/v1/mqlread?query=%s' % json.dumps([i]) ).text

但是后面的打印返回:

^{pr2}$

如果我试图通过以下方式获取“/en/blues”as the example here主题:

print requests.get('https://www.googleapis.com/freebase/v1/topic/en/blues').text

它返回与/en/blues查询相关的列表。在

我还尝试了以下方法直接获取子类型列表:

for i in r.json()['result'][:1]:
    i['type'] = '/music/genre/subgenre'
    print requests.get('https://www.googleapis.com/freebase/v1/mqlread?query=%s' % json.dumps([i]) ).text

但返回一个空数组。在


Tags: httpscomjson列表getwwwmusicquery
1条回答
网友
1楼 · 发布于 2024-06-28 15:46:53

在使用Python或其他编程语言之前,您应该先在query editor中完成查询。This query将为您提供一个起点:

[{
  "id": null,
  "name": null,
  "type": "/music/genre",
  "subgenre": [{
    "id": null,
    "name": null,
    "subgenre": [{
      "id": null,
      "name": null,
      "limit": 10
    }]
  }],
  "limit": 10
}]

该查询执行两个级别的子类型,实际上您不需要以编程方式执行这两个级别的子类型,因为您可能会遍历/music/genre类型的所有实例,捕获所有父类型和子类型。在

实际上,由于只有283种类型,所以您可以在一个查询中完成所有这些任务,即使执行这种重量级查询通常被认为是不好的形式:

^{pr2}$

将为您提供所有283个父类型及其所有子类型(即所有父子节点对或弧)。在

相关问题 更多 >