3

遵循关于信封参数的 Freebase 文档,运行

{
  "cursor":true,
  "query":[{
    "type":"/music/album",
    "artist":"The Police",
    "name":null,
    "limit":10
  }]
}​

导致 "Key cursor is a reserved word"@Domenic注释错误。

怎么了?


编辑 1

所以这个没有游标的查询有效,但这个查询没有,因为cursor 是一个变量名,而不是用引号括起来的字符串

作为用户,键入损坏的版本是有意义的,"cursor"因为读取的参数类型表同时具有query"cursor"as type: stringquery如果将其括在引号中,则会出错"query"

但是,即"cursor"使用引号括起来仍然不起作用:它会为每个查询生成相同的数据。

4

1 回答 1

1

看起来这可能是查询编辑器太聪明并为我们修复问题的另一种情况。如果您将上面的查询复制并粘贴到查询编辑器中并按运行,您将收到您报告的此错误:

{
  "code":          "/api/status/error",
      "messages": [{
    "code":    "/api/status/error/mql/type",
    "info": {
      "expected_type": "/type/object",
      "property":      "cursor"
    },
    "message": "Key cursor is a reserved word",
    "path":    "",
    "query": {
      "cursor":       true,
      "error_inside": ".",
      "query": [{
        "artist": "The Police",
        "limit":  10,
        "name":   null,
        "type":   "/music/album"
      }]
    }
  }],
  "status":        "200 OK",
  "transaction_id": "cache;cache03.p01.sjc1:8101;2011-11-04T17:42:13Z;0057"
}

但是,如果您单击该查询的永久链接,它会将其更改为该查询并自动将 cursor 属性设置为 true。

[{
  "type":   "/music/album",
  "artist": "The Police",
  "name":   null,
  "limit":  10
}]​

发生这种情况是因为 MQL 读取服务期望查询嵌套在查询信封内,但查询编辑器只接受您提供的查询并自动将其包装在适合您的查询信封中。

在新版本的MQL 读取服务中,我们取消了查询信封​​,现在光标只是 HTTP GET 请求的一个参数。

于 2011-11-04T17:57:31.643 回答