如何使用Freebase MQL查找相关的相关歌曲或艺术家?

时间:2014-07-12 23:45:04

标签: google-api freebase mql

我有任何Freebase mid,例如:/m/0mgcr,即后代。

使用MQL查找相关艺术家的最佳方式是什么?

或者,如果我有一首歌,例如:/m/0l_f7f,即后代的 Original Prankster

使用MQL查找相关歌曲的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

因此,修订后的问题是,如果是一位音乐艺术家,则会找到所有其他音乐艺术家,他们分享与第一位艺术家相同类型的全部

MQL没有任何可以在查询树的各个部分工作的运算符,所以这不能在单个查询中完成,但考虑到您可能通过编程执行此操作语言,只需两步即可完成。

首先,我们将为我们的主题艺术家获取所有类型,按照他们使用this query包含的艺术家数量进行排序(尽管最后一部分并非严格必要):

[{
  "id": "/m/0mgcr",
  "name": null,
  "/music/artist/genre": [{
    "name": null,
    "id": null,
    "artists": {
      "return": "count"
    },
    "sort": "artists.count"
  }]
}]

然后,使用具有最少数量的艺术家的类型以获得最大的选择性,我们将添加其他类型以使其更具体。这里是一个version of the query,其中有三种最具体类型的艺术家(基础类型加上两个):

[{
  "id": "/m/0mgcr",
  "name": null,
  "/music/artist/genre": [{
    "name": null,
    "id": null,
    "artists": {
      "return": "count"
    },
    "sort": "artists.count",
    "limit": 1,
    "a:artists": [{
      "name": null,
      "id": null,
      "a:genre": {
        "id": "/en/ska_punk"
      },
      "b:genre": {
        "id": "/en/melodic_hardcore"
      }
    }]
  }]
}]

这给了我们:Zero Zero,Millencolin,Michael John Burkett,NOFX,Bigwig,Huelga de Hambre,Freygolo,The Vandals

有关此查询的注意事项是,此片段:

    "sort": "artists.count",
    "limit": 1,

将我们最初的流派选择限制为具有最少艺术家(即Skate Punk)的单一流派,而前缀表示法:

      "a:genre": {"id": "/en/ska_punk"},
      "b:genre": {"id": "/en/melodic_hardcore"}

是为了解决没有多个具有相同名称的密钥的JSON限制。前缀被忽略,只需要是唯一的(这与查询中其他位置a:artists的原因相同。

所以,在完成了整个小练习之后,我会说可能有更好的方法来做这件事。您可以使用评分函数获得更好的结果,而不是绝对匹配,该评分函数会查看最特定类型或其他指标的%重叠。普通乐队成员,合作,同期录音历史等等也可以作为你的得分因素。当然,这完全超出了原始MQL的功能,您可能希望将音乐域(或某些子集)的Freebase数据加载到图形数据库中以运行这些评分算法。

事实上,last.fm和Google都认为更好的列表会包括Sum 41,blink-182,Bad Religion,Green Day等乐队。