2012-02-28 30 views
3

我想弄清楚如何編寫一個MQL查詢來獲取與給定單詞關聯的所有類型的列表。Freebase MQL列出給定單詞的所有常見類型?

比如我想:

{ 
    "id":null, 
    "name":null, 
    "name~=": "SOME_WORD", 
    "type":"/type/type", 
    "domain": { 
    "id": null, 
    "/freebase/domain_profile/category": { 
     "id": "/category/commons" 
    } 
    } 
}​ 

我發現這列出所有下議院類型或類別,但還沒有想出如何將它縮小爲一個給定的輸入。

[{ 
    "id": null, 
    "name": null, 
    "type": "/freebase/domain_profile", 
    "category": { 
    "id": "/category/commons" 
    } 
}]​ 
+2

查詢你給列出所有*域*(即類型組),這是在類別/類別/公地。你在尋找域,類型或類型的實例嗎?你是否想輸入「船」並取回「帆船」和「軍艦」,或者你想讓你的輸入成爲「USS憲法」並取回「帆船」和「軍艦」或......? – 2012-02-29 20:05:01

+0

我在尋找的是freebase建議的變體。我說一句話,它會返回一個類型列表。 IE瀏覽器。美國憲法將返回「船」,「書名」等。 – ere 2012-03-01 08:32:44

回答

4

有幾種不同的方法可以做到這一點,每種方法都有不同的權衡。

  1. 使用搜索API與查詢像這樣

    https://www.googleapis.com/freebase/v1/search?indent=true&filter=%28all%20name {}全:%22uss%20constitution%22%29

你會回來的JSON結果看起來像這個:

{ 
    "status": "200 OK", 
    "result": [ 
    { 
     "mid": "/m/07y14", 
     "name": "USS Constitution", 
     "notable": { 
     "name": "Ship", 
     "id": "/boats/ship" 
     }, 
     "lang": "en", 
     "score": 1401.410400 
    }, 
    ... 

你可以通過將「{full}」切換到「{phrase}」來使匹配更加自由l給你一個子串匹配而不是完全匹配。

注意事項: - 你只會得到一個「顯着型」和它是由固定的遊離鹼的(不明)算法 - 我不認爲有辦法讓這兩個憲法號&美國標準憲法結果 - 您可以通過添加& mql_output = {「type」:[]}來獲得所有類型的列表,但是您將丟失「notable」類型。我不認爲有一種方法可以在一次通話中同時獲得。

  1. 使用MQL

該查詢返回所需的基本信息:

[{ 
    "name~=":"uss constitution", 
    "type":[], 
    "/common/topic/notable_types" : [] 
}]​ 

注意事項:

  • 它不會找到 「憲法號」,這是一個別名而不是主要名稱(儘管如此,MQL cookbook中有一個配方)
  • 它不會找到「美國。憲法「
  • 的‘notable_types’API是MQL延伸和擴展MQL沒有新的遊離鹼API支持的,僅遺留棄用API
  • 你綁到任何(未知)算法的遊離鹼用於計算」知名度」

取決於你試圖完成什麼,你可能需要的東西比這更復雜的(以及在遊離鹼有什麼更深的認識),但這應該讓你的基本知識去。

0

你嘗試:

[{ 
"name": "David Bowie", 
"type": [] 
}]