编写Freebase MQL查询,获取有关给定主题的所有内容?

时间:2009-03-29 02:59:31

标签: freebase mql

我想编写一个查询来获取有关某个主题的所有知识(只需要深入一层。

Freebase MQL Editor工作时,他们为“我们所知道的关于Jimi Hendrix的一切”提供了以下示例:

{
  "*" : null,
  "name" : "Jimi Hendrix",
  "type" : "/music/artist"
}

问题是查询绑定到“/ music / artist”类型,并且只返回与该类型相关的属性。如果您将查询更改为使用其他类型,则会得到完全不同的结果集。

{
  "*" : null,
  "name" : "Jimi Hendrix",
  "type" : "/people/person"
}

如何编写一个真正可以获取Freebase了解Jimi Hendrix所有内容的查询?

3 个答案:

答案 0 :(得分:4)

为此,您需要一种更高级的查询类型,查看构成Freebase图表的基础链接(/ type / link)。每个链接都有一个源,一个目标和一个分配给它的属性,可以像这样查询它们:

[
  {
    "master_property" : null,
    "source" : {
      "id" : "/en/jimi_hendrix"
    },
    "target" : null,
    "target_value" : null,
    "type" : "/type/link"
  }
]

这些被称为外向链接并代表您通常在Freebase UI中看到的大多数值,但您也可以交换源和目标以获取传入链接列表链接:

[
  {
    "master_property" : null,
    "source" : null,
    "target" : {
      "id" : "/en/jimi_hendrix"
    },
    "type" : "/type/link"
  }
]

这些链接包含其他主题的属性,这些主题将Jimi Hendrix作为其值,并且这些值并未全部显示在Freebase Jimi Hendrix页面上,以便将信息量保持在可管理的水平。

答案 1 :(得分:3)

Freebase主题API可能就是您所追求的目标:

http://www.freebase.com/experimental/topic/standard?id=/en/jimi_hendrix

主题API将获取与图表中主题直接相关的所有属性。 API包装了一系列MQL查询以获取JSON中的所有数据和输出。

Google“ Freebase主题HTTP API ”以获取更多信息。

答案 2 :(得分:2)

过了一段时间,我们认为这是一个典型的用例,所以我们为此做了一个全新的API:

http://www.freebase.com/docs/topic_api

这将为您提供上述查询的所有属性,以及调解员和其他好东西。

请注意,如果您想要Freebase中所有主题的所有属性,那么您应该使用data dumps而不是运行时查询语言(它会快很多倍)。