【问题标题】:How to use OR operator in Freebase?如何在 Freebase 中使用 OR 运算符?
【发布时间】:2023-03-15 13:57:01
【问题描述】:

案例:

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

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

查询可以正常工作,但如果您将限制增加到 40,它将无法正常工作。返回的错误是“唯一查询可能最多有一个结果。得到 2”。这意味着存在“约旦”和“奥斯曼帝国”两个国籍的人。

问题:

对于“ONE OF”运算符有意义,但对于“OR”运算符则不适用。 Freebase 中是否有任何运算符可以查询“ANY OF”或真正的“OR”来涵盖这些情况?

【问题讨论】:

    标签: web-services google-api freebase


    【解决方案1】:

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

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

    这是一个查询,可以满足您的需求(尽管您应该真正使用国家/地区的 ID 而不是它们的英文标签):

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

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 1970-01-01
      • 2022-01-02
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 2018-12-14
      • 2014-10-15
      相关资源
      最近更新 更多