如何在Freebase中使用OR运算符



案例:

所以,我使用OR运算符或ONE OF as来获取来自两个国家中任何一个国家的人员。查询看起来像:

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

查询运行良好,但如果将限制增加为40,则查询将不起作用。返回的错误为"唯一查询最多可能有一个结果。得到2"。这意味着"约旦"one_answers"奥斯曼帝国"都存在一个人。

问题:

这对于"ONE OF"运算符是有意义的,但对于"OR"运算符则没有意义。Freebase中是否有任何运算符可以查询"any OF"或true"or"来涵盖这些情况?

您得到错误是因为您使用了对象表示法({}),该表示法在返回两个结果的地方需要一个结果,而这些结果需要一个数组([])。

话虽如此,我认为您真正需要做的是将|=操作符提升到/people/person/nationality。还要注意的是,即使只是询问一个人的国籍结果,你也需要数组符号,因为它是多值的(例如,Sirhan Sirhan的国籍是约旦和强制性巴勒斯坦)。

这里有一个查询可以做你想做的事(尽管你真的应该使用国家的ID,而不是他们的英文标签):

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

相关内容

  • 没有找到相关文章

最新更新