【问题标题】:Execute Multiple Queries into single call onto Freebase将多个查询执行到对 Freebase 的单个调用中
【发布时间】:2015-01-29 09:41:51
【问题描述】:

我想将多个查询的结果放入对 freebase 的一次调用中,本章中有http://mql.freebaseapps.com/ch04.html。我正在使用python进行查询。我想这样查询

{                                       # Start the outer envelope
  "q1": {                               # Query envelope for query named q1
    "query":{First MQL query here}      # Query property of query envelope
  },                                    # End of first query envelope
  "q2": {                               # Start query envelope for query q2
    "query":[{Second MQL query here}]   # Query property of q2
  }                                     # End of second query envelope
}   

并得到类似的答案

{
  "q1": {
    "result":{First MQL result here},
    "code": "/api/status/ok"
  },
  "q2": {
    "result":[{Second MQL result here}],
    "code": "/api/status/ok"
  },
  "status": "200 OK",
  "code": "/api/status/ok",
  "transaction_id":[opaque string value]
}

在该链接上指定。我还遇到了一些关于 SO 的问题,它们是 -

但他们似乎使用的是旧 API,即“api.freebase.com”。更新后的 API 是“www.googleapis.com/freebase”

我尝试了以下代码,但它不起作用。

import json
import urllib

api_key = "freebase_api_key"
service_url = 'https://www.googleapis.com/freebase/v1/mqlread'
query1 = [{'id': None, 'name': None, 'type': '/astronomy/planet'}]
query2 = [{'id': None, 'name': None, 'type': '/film/film'}]
envelope = {
    'q1':query1,
    'q2':query2

}

encoded = json.dumps(envelope)
params = urllib.urlencode({'query':encoded})
url = service_url + '?' + params
print url
response = json.loads(urllib.urlopen(url).read())
print response

我收到错误

{u'error': {u'code': 400, u'message': u'Type /type/object does not have property q1', u'errors': [{u'domain': u'global', u'message': u'Type /type/object does not have property q1', u'reason': u'invalid'}]}}

如何将多个查询嵌入到单个 MQL 查询中

【问题讨论】:

    标签: python-2.7 semantic-web freebase mql


    【解决方案1】:

    我建议查看用于 Google API 的 Python 客户端库的 Batch 功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多