2015-03-22 3 views
1

Я пытаюсь перечислить все типы для конкретного идентификатора:Как инвертировать запрос MQL (для freebase)?

{ 
    "id": "/en/sony", 
    "type": [{ 
    "name": "Topic", 
    "id": null 
    }] 
} 

Этого запрос дает мне следующий результат: http://tinyurl.com/lubavey

{ 
    "result": { 
    "type": [ 
     { 
     "id": "/common/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/audiobase/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/fblinux/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/digitalcameras/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/popstra/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/televisions/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/ps3games/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/base/filmcameras/topic", 
     "name": "Topic" 
     }, 
     { 
     "id": "/m/04mny2g", 
     "name": "Topic" 
     } 
    ], 
    "id": "/en/sony" 
    } 
} 

Я хочу точно противоположный результат. Я хочу, чтобы все типы, которые не имеют имени как «Тема» с ними. Как я могу это достичь? Я пытался использовать ! оператор со свойством name который предлагается в справочном руководстве по MQL, но это дает мне ошибку:

"Can't use unqualified property names with ! reversing".

Что я должен сделать, чтобы удалить эту ошибку с ! и получить противоположный результат запроса?

ответ

1

Попробуйте с !=:

{ 
    "id": "/en/sony", 
    "type": [{ 
    "name!=": "Topic", 
    "id": null 
    }] 
} 

The != operator says that the constrained property can be anything but the specified value. (It does require that the property be something, however: it does not match object for which the property is null.)

Подробнее о != оператор здесь: http://wiki.freebase.com/wiki/MQL_operators#The_.22but_not.22_Operator_.21.3D

+0

спасибо Павлу! Он точно делает то, что я хотел. +1 для обмена ссылкой для оператора. –

+0

@RajeshSurana - я рад, что это помогло :) –