如何在Freebase中使用OR运算符?

时间:2014-09-05 16:06:56

标签: web-services google-api freebase

案例:

所以,我使用OR operator or ONE OF来吸引来自两个国家/地区的人。 查询如下所示:

[{
  "id":    null,
  "type":  "/people/person",
  "/people/person/nationality": {
    "name|=": [
      "Jordan",
      "Ottoman Empire"
    ]
  },
  "name":  null,
  "limit": 30
}]

查询工作正常,但如果您将限制增加到40,它将无法工作。返回的错误是"唯一查询最多可能有一个结果。得到2"。这意味着两个民族都有一个人,乔丹"和"奥斯曼帝国"。

问题:

对于" ONE OF"运营商,但不是" OR"运营商。 Freebase中是否有任何运算符可以查询" ANY OF"或者真实"或者"涵盖这些案件?

1 个答案:

答案 0 :(得分:0)

您收到错误是因为您使用了对象表示法({}),它需要在您返回两个结果的地方获得单个结果,并且那些需要数组([])。

话虽如此,我认为您真正需要做的是将|=运营商提升到/people/person/nationality级别。还要注意,即使只是要求一个人的国籍结果,你也需要数组符号,因为它是多重的(例如Sirhan Sirhan同时拥有约旦和强制巴勒斯坦国籍)。

这是一个可以执行您想要的查询(尽管您应该使用国家/地区的ID而不是英文标签):

[{
  "id": null,
  "name": null,
  "nationality": [],
  "type": "/people/person",
  "nationality|=": [
    "Jordan",
    "Ottoman Empire"
  ]
}]