Freebase MQL列出给定单词的所有公共类型?

时间:2012-02-28 23:40:11

标签: json freebase mql

我正在试图弄清楚如何编写MQL查询以获取与给定单词关联的所有类型的列表。

例如我试过:

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

我发现这列出了所有Commons类型或类别,但尚未找到如何缩小给定输入的范围。

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

2 个答案:

答案 0 :(得分:4)

有几种不同的方法可以做到这一点,每种方式都有不同的权衡。

  1. 将Search API与此类

    一起使用

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

  2. 您将获得如下所示的JSON结果:

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

    您可以通过将“{full}”切换为“{phrase}”来使匹配更加自由,这将为您提供子字符串匹配,而不是精确匹配。

    注意事项:   - 你只会得到一个“值得注意的类型”,它由Freebase的(未知)算法修复   - 我认为没有办法同时获得USS宪法和美国标准宪法结果   - 您可以通过添加& mql_output = {“type”:[]}来获取所有类型的列表,但是您将失去“值得注意的”类型。我认为没有办法在一次通话中同时获得两者。

    1. 使用MQL
    2. 此查询返回您想要的基本信息:

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

      注意事项:

      • 它不会找到“uss constitution”这是别名而不是主要名称(虽然MQL cookbook中有一个食谱)
      • 找不到“美国宪法”
      • “notable_types”API是一个MQL扩展,新的Freebase API不支持MQL扩展,只有旧版弃用的API
      • 你被Freebase用于计算“notability”的任何(未知)算法所束缚

      根据您要完成的任务,您可能需要比此更复杂的东西(以及对Freebase中的内容有更深入的了解),但这应该让您了解基础知识。

答案 1 :(得分:0)

你有没有尝试过:

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