freebase api получает код страны для города - PullRequest
1 голос
/ 24 марта 2012

Я пытаюсь использовать freebase для возврата кода ISO, связанного с городами.

У меня есть этот MQL, который работает, но он не работает в некоторых городах, и, вероятно, есть более простой способ сделатьто же самое?

{
  "id": "/en/amarillo",
  "/location/location/containedby": [
    "/location/country/iso3166_1_alpha2": null,
    "type": "/location/country"
  ]

}​

Иногда это не работает для небольших городов.Еще лучше был бы способ использовать предложение Freebase (которое я использую, чтобы собрать город), чтобы вернуть код ISO в том же запросе?

jQuery ->
    $("#city_name")
        .suggest(type: "/location/citytown")
        .bind "fb-select", (e, data) ->
            $("#city_freebase_id").val data.id

1 Ответ

2 голосов
/ 29 марта 2012

Я бы так и сделал, но, как вы обнаружили, данные не до конца заполнены. Один из твиков, который вы могли бы сделать, чтобы улучшить свои шансы найти что-то, состоял бы в том, чтобы подняться на дополнительный уровень в случае, если, например, город находится в штате, который содержится в стране. Вам также не хватает набора фигурных скобок в вашем подзапросе, что, вероятно, приведет к сбою запроса в API (редактор запросов молча исправляет подобные вещи).

Пересмотренный запрос, который поднимается на дополнительный уровень и фиксирует фигурные скобки, будет выглядеть так:

{
  "id":   "/en/avondale",
  "/location/location/containedby": [{
    "/location/country/iso3166_1_alpha2": null,
    "type":          "/location/country"
  }],
  "l2:/location/location/containedby": [{
    "id":null,
    "/location/location/containedby": [{
      "/location/country/iso3166_1_alpha2": null,
      "type":          "/location/country"
    }]
  }]
}​

В API поиска есть параметр mql_output, который можно использовать, чтобы делать то, что вы хотите, но я не уверен, что он используется Freebase Suggest. Это не задокументировано, чтобы быть доступным. Если его нет в коде, было бы несложно взломать виджет, чтобы добавить это.

...