2013-04-10 46 views
1

因此,假設我使用Freebase API搜索城市。說,舊金山:在單個請求中獲取鏈接主題的信息

https://www.googleapis.com/freebase/v1/topic/m/0d6lp?limit=20&filter=/common/topic/description&filter=/common/topic/article&filter=/location/location/geolocation&filter=/location/location/containedby&filter=/travel/travel_destination/tourist_attractions

我得到一組數據,包括「/位置/位置/ containedby」,是指由其他實體這一塊被遏制。這就是我能夠找出城市屬於哪個國家和國家的方式。

問題是我只能得到那些實體名稱和中間名,而不是'/ common/topic/notable_for',因此,我必須對每個實體分別進行查詢,只詢問notable_for屬性,找出哪些其中之一是一個國家,一個國家或我不需要的其他東西。

在示例中,這是查詢,這決定了美國是一個國家的一個: https://www.googleapis.com/freebase/v1/topic/m/09c7w0?filter=/common/topic/notable_for 這是每個城市3〜6次之間執行。

有沒有辦法告訴API在特定主題上包含關於這些鏈接實體的更多信息?就像這種情況一樣,要在鏈接的實體上包含'/ common/topic/notable_for'。這將節省大量的查詢,並在我的情況下爲最終用戶節省時間。

謝謝你的時間!

回答

0

實際上,您可以使用Freebase Search API上的新output parameter獲得這些結果。就像這樣:

query=/m/0d6lp 
output=(description /location/location/geolocation (/location/location/containedby notable)) 

Try it out

+0

啊,太好了!我很欣賞你的迴應,儘管這個解決方案更接近我目前的實施。並完成工作。謝謝! – ArtPulse 2013-04-17 20:09:44

0

如果你想更好地控制返回的信息,我建議使用MQL讀取API。然後,您可以指定嵌套查詢,請求使用它們的類型返回contained_by位置(或者,您可以明確地過濾到僅屬於某個國家或州的那些位置)。

相關問題