2011-12-03 7 views
1

映画やジャンルを取得しようとしましたが、ジャンルの「ジャンル」のジャンルに「スリラー」というジャンルを含むレコードは除外しています。Freebase MQL - 配列要素の値が存在する場合、親オブジェクトを表示しないでください。

「スリラー」のジャンルキー自体を無視するだけでなく、映画全体の結果をスケルチするにはどうすればよいですか?現在の質問では、スリラーはジャンルの配列から削除されますが、親オブジェクト(フィルム)は引き続き表示されます。自分の質問に答える http://tinyurl.com/d2g54lj

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

答えて

1

提供答えは正しいのですが、あまりにもクエリにいくつかの他のものに変更されます。

重要な部分は「オプション」:「禁止」です。使用されるデフォルトのプロパティは "name"ですが、( "optional"キーワードを指定できるように)副節を使用するときに明示的に指定する必要があります。 @kookのように名前の代わりにIDを使用すると、実際にはより信頼性が高いので、改善されましたが、壊れたクエリを修正するのに必要な最小限のものを人々が見られるようにしたいと考えました。

"type": "/ film/film"が含まれているので、プロパティ名を "/ film/film/genre"から "genre"に短縮することができます(/ type/objectは、 /型/オブジェクト/名前)。

0

は、ここに私の現在のクエリエディタで精密検査です。

:そうのように、「禁止」で|「=」(の1つ)オペレータ

だからトリックは !=(ではない)演算子を使用していないが、実際にその頭の上にそれを反転して使用しています次のポストへ
[{ 
    '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 query - exclusion of certain values

+0

誰も誤解されていないことを確認するだけで、重要な部分は「オプション」です。「禁断」ではなく「禁止」です。これは、JSONが重複する辞書キーを許可しないため、使用されるランダムラベルです。コロンの前には "foo:"または "f:"または "x:"などの何かがあります。 –

関連する問題