freebase api获取城市的国家代码

时间:2012-03-24 14:48:39

标签: freebase country-codes mql

我正在尝试使用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 个答案:

答案 0 :(得分:2)

基本上我是这样做的,但是,正如你所发现的那样,数据并不是完全填充的。为了提高找到某些东西的几率,你可以做一个调整就是增加一个额外的水平,例如,城市由一个国家所包含的州所包含。您在子查询中也缺少一组花括号,这可能会导致您的查询在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使用。它没有记录可用。如果它不在代码中,那么破解小部件来添加它也不会太难。