Freebase API - изброяване на туристическите атракции на града по уместност

Опитвам се да използвам Freebase, за да изброявам туристически атракции за градове по уместност.

С помощта на API за теми е лесно да извлечете резултати за определен град, използвайки неговия MID (напр. "/m/04jpl" за Лондон)

https:// www.googleapis.com/freebase/v1/topic/m/04jpl/?&filter=/travel/travel_destination/tourist_attractions

Това обаче дава ограничени 10 резултата. Отговорът завършва с "count": 87.0". Как да получа всичките 87? Възможно е да щракнете върху връзката „Общо 87 стойности“ на страницата Freebase в Лондон. Ефективно, искам да направя същото тук.

Осъзнавам, че мога да използвам MQL, но искам резултатите да бъдат класирани по уместност, а не по времево клеймо. С помощта на API за търсене е възможно да се класира по безплатна база, обект или схема, така че предпочитам да използвам това.

Първо, разгледах схемата за изход за търсене за API за търсене. Въпреки това, дори извеждането на „всички“ не доведе до резултати за туристическа атракция. Използването на метасхема с API за търсене НАПРАВИ работа. Използвах "part_of", за да избера Лондон. Работи обаче само за някои местоположения:

https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction%20part_of:/m/04jpl)&indent=true

Това, което НАИСТИНА искам да мога да направя, е да го накарам да работи за сравнително неизвестно местоположение като "Лъфборо " (MID /m/01z21p). Както можете да видите, заместването на /m/04jpl с /m/01z21p не дава резултати:

https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction%20part_of:/m/01z21p)&indent=true

Разглеждайки „Loughborough“, виждаме, че неговата туристическа атракция като „Loughborough Town Hall“ има „ /travel/tourist_attraction/near_travel_destination“ на „Лъфборо“. Как да съставя този филтър?

Искам нещо като следното (което всъщност работи):

https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction)&filter=(/travel/tourist_attraction/near_travel_destination:/m/01z21p)&indent= вярно

Благодаря!

ЗАБЕЛЕЖКА: За да въведете връзките в браузъра си, трябва да премахнете интервала между https:// и www. Бих го направил, но все още нямам необходимите разрешения тук, за да публикувам повече от 2 връзки.


person stationone    schedule 05.03.2014    source източник


Отговори (1)


Реших този проблем с помощта на 2 извиквания на API на Freebase.

1) MQL заявка, която получава списък с всички туристически атракции за определен MID. Тези резултати не са класирани по никакъв полезен начин. Също така връщам номера на резултата, за да направя обработката малко по-лесна по-късно

https://www.googleapis.com/freebase/v1/mqlread?query={"mid":"/m/04jpl","/travel/travel_destination/tourist_attractions":[{"mid":null}],"resultnumber:/travel/travel_destination/tourist_attractions":[{"return":"count"}]}

След това списъкът с върнатите MID се използва за създаване на нова заявка (с помощта на цикъл for). Трябва да въведете всички MID, върнати от горната заявка, така че всички да могат да бъдат класирани заедно.

2) https://www.googleapis.com/freebase/v1/search?limit=10&filter=(any%20mid:/m/0gsxw%20mid:/m/01d_0p%20mid:/m/07gyc)&scoring=entity

Най-добре е да изберете формат за връщане, който връща само MID, за да сте сигурни, че времето за зареждане не е дълго.

След това имате класиран списък от MID! Ще ви е необходима една последна заявка, за да върнете каквито и подробности да желаете.

Надявам се, че това се оказа полезно.

person stationone    schedule 13.04.2014