Freebase:格式化搜索结果,列出未知类型对象的所有属性

时间:2010-10-25 15:59:52

标签: search freebase mql

我正在尝试编写MQL查询来格式化freebase中的搜索结果(搜索API中的“output”参数)。我基本上想要找到给定搜索结果的所有属性的(简单)值(不知道任何关于结果的类型的先验)。 “简单”,我指的是如果值是复杂对象,则只有默认属性。

例如,如果我搜索“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 - 抱歉,SO认为我是垃圾邮件发送者所以我可以' t使这个链接),我根本没有看到Frank Oz的参考(可能是因为他的表现被引用了)。是否有一种通用的方式让我“跟随”中介类型来获取所有属性?例如,是否有一个输出MQL可以让我在演出中获得演员(当从电影搜索结果链接时)给予配偶婚姻(当从一个人链接时) ?

2 个答案:

答案 0 :(得分:2)

不仅要查询每个属性,而且要跟踪这些属性,图中所有搜索结果的深层次将是一个非常昂贵的操作。这有什么用例?你真的有一个UI,用户可以看到并有效地吸收所有这些信息吗?要直接回答这个问题,不可能在搜索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

答案 1 :(得分:1)

AFAIK没有办法在完全MQL中执行此操作,但您可以:

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

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

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

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