2013-06-17 2 views
0

Я ищу, чтобы извлечь список туристических достопримечательностей и их информацию о городе, штате и стране из Freebase. Имущество, которое имеет место, составляет "/ location/location/containsby". Существуют разные типы для этого объекта: «местоположение/местоположение» или «/ base/biblioness/bibs_location». Если у объекта есть «/ base/biblioness/bibs_location», я могу получить значение «город», «состояние» и т. Д. Однако, если объект имеет только тип «/ location/location», мне нужно пойти и получить его «содержащийся «поле» и повторите описанную выше логику.Условный запрос в Freebase API

Мой вопрос: могу ли я выполнить условный запрос в Freebase, например, если type == "/ location/location /" get xyz. если типа == «/ база/biblioness/bibs_location» получить а

MQL:

[{ 
    "type": "/travel/tourist_attraction", 
    "id":  null, 
    "name": null, 
    "name~=": "^San Diego", 
    "/location/location/containedby": { 
    "type": "/base/biblioness/bibs_location", 
    "name": null, 
    "id": null 
    }, 
    "/location/location/geolocation": [{ 
    "id":  null, 
    "latitude": null, 
    "longitude": null 
    }] 
}] 

ответ

0

MQL не поддерживает условную логику, но вы можете запросить всю информацию, что вы потенциально заинтересованы, делая подзапросы необязательными, чтобы они не отфильтровывали результаты, а затем смотрели на то, что вы вернетесь. Это потребует условного кода в вашем процессоре результатов, но вам не придется делать несколько запросов. Например, вы можете запросить несколько уровней /location/location/contained, а также /base/biblioness/bibs_location/state и все, что захотите.

Прежде чем вы потратите слишком много времени на это, вы можете проверить, насколько хорошо заселен /base/biblioness/bibs_location. Мне кажется, что у него менее 2 тыс. Сущностей.