2013-06-05 2 views
0

Я пытаюсь запросить бесплатную базу, чтобы получить все фильмы, удостоенные наград, которые были направлены или действовали. Если я запустил это со Стивеном Спилбергом (который одновременно и руководил, и выступал в фильмах с наградами, она отлично работает:Комбинированный запрос в базе данных freebase

[{ 
    "/type/object/mid": "/m/06pj8", 
    "/film/director/film": [{ 
    "type": "/award/award_winning_work", 
    "name": null 
    }], 
    "/film/actor/film": [{ 
    "film": [{ 
     "type": "/award/award_winning_work", 
     "name": null 
    }] 
    }] 
}] 

но тот же запрос с Мэттом Дэймоном (/ м/0169dl) (который не направлен наградами фильмов, но действует в этих фильмах) ничего не возвращает. Я бы ожидал вернуть все фильмы, в которых Мэтт Деймон действовал, в этом случае.

благодарит

ответ

2

Вы не можете сделать это в одном запросе без немного пост-обработки, но добавление optional:true к подзапросов поможет вам закрыть

[{ 
    "/type/object/mid": "/m/06pj8", 
    "/film/director/film": [{ 
    "type": "/award/award_winning_work", 
    "name": null, 
    "optional": true 
    }], 
    "/film/actor/film": [{ 
    "film": [{ 
     "type": "/award/award_winning_work", 
     "name": null, 
     "optional": true 
    }] 
    }] 
}] 
+0

гениально! именно то, что я искал. просто интересно, знаете ли вы, почему он ничего не возвращает по умолчанию? что ожидаемое поведение? – jamborta

+1

Значение по умолчанию эквивалентно необязательному: false, и все фильтры AND вместе, поэтому любые темы, которые не соответствуют обоим подзапросам с помощью наградных работ, не соответствуют критериям. –