具有多个唯一子项的Freebase查询

时间:2013-01-01 18:39:00

标签: freebase mql

假设我想要播放所有至少有两个(不同)演员称为“John”的电影:

Example query

[{
  "type":"/film/film",
  "name":null,
  "limit":10,
  "/film/film/initial_release_date":"2005"
  "starring":[{
    "a:actor": [{
       "type": "/film/actor",
       "name": null,
       "name~=": "John",
    }],
    "b:actor": [{
       "type": "/film/actor",
       "name": null,
       "name~=": "John",
    }]
  }]
}]

如果您运行示例查询,您将看到它将列出其中只有一个“John”的电影。如何修复我的查询以使用重复的子项排除这些结果?

1 个答案:

答案 0 :(得分:3)

一般情况下,您必须进行客户端过滤; MQL中的查询是“树状的”,因为查询的一部分不能引用另一部分而不是通用图。

在这种情况下,你可以寻找有不止一个“约翰”的电影;但是,MQL不允许您对派生属性(如“count”)进行过滤,因此您可以做的最好的事情是reverse sort based on the count,然后只要用“count”命中第一个条目就停止处理: 1.但是,如果您删除固定的1935发布日期(MQL中的排序会导致性能下降),那么查询会超时,因此您可能只会遇到简单的客户端过滤。