2012-03-24 78 views
1

我試圖使用freebase返回一個城市相關國家的ISO代碼。freebase api獲取城市的國家代碼

我有這個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 

回答

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使用。沒有記錄可用。如果它不在代碼中,那麼破解這個小部件就不會太難。

+0

是的,不幸的是,在新的搜索API和新的Freebase建議中不贊成使用mql_output。您需要從jQuery執行單獨的MQL讀取API調用以查找ISO代碼。 – 2012-03-29 18:24:26