Freebase query - exclusion of certain values

左心房为你撑大大i 提交于 2019-12-10 14:28:22

问题


I want to retrieve name of all movies and their genre. It's ok if information about genre is empty, but if genre is known I want to retrieve it.

"/film/film/genre": [{"id":null,"optional":"optional"}]

But I'm not interested in gay pornography, so I want to exclude all movies with genre "/en/gay_pornography".

"/film/film/genre": [{"id|=":["/en/gay_pornography"],"optional":"forbidden"}]

The problem is, how to combine it in one query? I.e. how to get all movies, even those with no genre and exclude pr0n?

Edit: it's required to exclude multiple genres, e.g. also /en/pornographic_movie


回答1:


You're basically there: you just need two "genre" clauses. MQL lets you do this by allowing arbitrary prefixes on any clause:

[{
  "id":   null,
  "type": "/film/film",
  "genre": [{
    "id":       null,
    "optional": true
  }],
  "forbid:genre": {
    "id|=": [
      "/en/gay_pornography",
      "/en/pornographic_movie"
    ],
    "optional": "forbidden"
  }
}]​

http://tinyurl.com/4449ufg




回答2:


Use the "but not" operator:

 "genre": [{
    "id":       null,
    "id!=":     "/en/gay_pornography",
    "optional": true
  }]

Full example: http://tinyurl.com/3tjdb4j

Edit: This doesn't answer the question. It just prevents that particular id from being listed as a genre of the film but doesn't forbid the film. @phillip-kendal's answer is correct.



来源:https://stackoverflow.com/questions/5603996/freebase-query-exclusion-of-certain-values

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!