Freebase query - exclusion of certain values
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|=":["开发者_如何学JAVA/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
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
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.
精彩评论