案例:
所以,我使用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"
]
}]