1

试图获取一些电影及其类型,但在类型数组中遗漏任何包含类型“惊悚片”的记录。

我如何不仅忽略“惊悚片”的类型键本身,而且压制整个电影的结果?在我当前的查询中,Thriller 已从流派数组中删除,但仍显示父对象(电影)。

这是我在查询编辑器中的当前工作:http: //tinyurl.com/d2g54lj

[{
  'type':'/film/film',
  'limit':5,
  'name':null,
  '/film/film/genre': [],
  '/film/film/genre!=': "Thriller",
}]​
4

2 回答 2

1

提供的答案是正确的,但也改变了查询中的一些其他内容。这是与原始查询的直接等价物:

[{
  "type":          "/film/film",
  "limit":         5,
  "name":          null,
  "genre": [],
  "x:genre": {"name":"Thriller",
              "optional":"forbidden"},
}]​

重要的部分是“可选”:“禁止”。使用的默认属性是“名称”,但我们需要在使用子条款时明确指定它(以允许我们指定“可选”关键字)。正如@kook 所做的那样,使用 ids 而不是名称实际上更可靠,所以这是一种改进,但我希望人们能够看到修复损坏查询所需的最低限度。

我们可以将属性名称从 "/film/film/genre" 缩写为 "genre",因为 "type":"/film/film" 包含在内(我们也不需要使用 /type/object 来表示 /type/object 等属性/姓名)。

于 2011-12-03T19:35:36.467 回答
0

回答我自己的问题。

所以诀窍是使用!=(但不使用)运算符,而是实际翻转它并使用带有“禁止”的“|=”(其中一个)运算符,如下所示:

[{
  'type':'/film/film',
  'limit':5,
  'name':null,
  '/film/film/genre': [{
    "id":       null,
    "optional": true
    }],
  "forbid:/film/film/genre": {
    "id|=": [
      "/en/thriller",
      "/en/slapstick"
    ],
    "optional": "forbidden"
  }
}]​

感谢以下帖子:

Freebase 查询 - 排除某些值

于 2011-12-03T15:19:44.190 回答