4

我正在尝试编写一个 MQL 查询来格式化 freebase 中的搜索结果(搜索 API 中的“输出”参数)。我本质上想找到给定搜索结果的所有属性的(简单)值(事先不知道结果的类型)。“简单”是指仅当值是复杂对象时的默认属性。

例如,如果我搜索“Yo La Tengo”,这会将我带到“/en/yo_la_tengo”的结果,我希望能够获得该组的成员(我只需要名称,而不是乐器或开始日期)、专辑(再次,只是名称),电影贡献(再次,只是名称)等。

鉴于我对类型一无所知,是否有一种简单的方法可以通过搜索输出查询来做到这一点?我想我可以使用某种反射魔法,并且我尝试过使用“/type/reflect”,但我没有得到任何结果。我是 MQL 的新手(虽然我有丰富的 SQL 经验),所以这有点令人生畏。有任何想法吗?

编辑:所以澄清一下,我认为我看到的问题是由于调解类型,如“表演”(电影中的演员)或“婚姻”。例如,关于Yo La Tengo的查询,我可以看到我感兴趣的大多数(全部?)信息,但是关于 [The Muppet Movie] 的类似查询(freebase.com/api/service/search?limit=1&mql_output=%5B%7B%22%2Ftype %2Freflect%2Fany_reverse%22%3A%5B%7B%7D%5D%2C%22%2Ftype%2Freflect%2Fany_master%22%3A%5B%7B%7D%5D%2C%22%2Ftype%2Freflect%2Fany_value%22 %3A%5B%7B%7D%5D%7D%5D&query=%20Muppet%20Movie -- 抱歉,我认为我是垃圾邮件发送者,所以我无法将其设为链接),我没有看到 Frank Oz 的参考资料完全没有(可能是因为他的表现被引用了)。有没有一种通用的方法让我“遵循”中介类型来获取它们的所有属性?例如,

4

2 回答 2

2

不仅要查询每个属性,而且还要在这些属性的另一层深入搜索所有搜索结果,这将是一项非常昂贵的操作。这个的用例是什么?你真的有一个用户可以看到并有效吸收所有这些信息的用户界面吗?但是,要直接回答这个问题,不可能使用搜索 API 上的 mql_output 自动解压缩中介类型。

我建议将有关搜索查询的一组基本信息与有关用户表示感兴趣的主题的一组更深入的信息(例如,通过悬停在上面)结合起来。这种 UI 体验类似于 Freebase Suggest。

自从最初提出这个问题以来的几年里,已经添加了一些额外的有用的东西,比如“显着”的伪属性,它可以让你看到这个主题的显着之处。

当然,每个人都需要迁移到新的 API,所以查询将是: https ://www.googleapis.com/freebase/v1/search?query=%22the%20muppet%20movie%22&limit=1&indent=true

https://www.googleapis.com/freebase/v1/topic/en/the_muppet_movie

于 2012-07-23T19:07:29.617 回答
1

AFAIK 在完全 MQL 中无法做到这一点,但您可以:

  1. 获取一个对象或对象类型的所有属性,然后
  2. 以编程方式构造另一个 MQL 查询以获取您想了解更多的那些对象。

这个例子

[{
  "type|=": [
    "/film/actor",
    "/tv/tv_actor",
    "/celebrities/celebrity"
  ],
  "*": [{}]
}]​

它获取所有类型为actortv_actor名人的对象的所有属性。当你运行它时,你会看到你可以探索的所有可能的“跟随”点。

这不完全是你想要的,但它应该让你更接近。

于 2010-11-09T02:24:08.500 回答