使用Python从Grakn获取数据



我将Grakn与Python驱动程序一起使用。我正在尝试一个用例,用户可以搜索一首歌曲,例如Despacito,然后获得其他类似歌曲的推荐。结果必须包含来自同一制作人的同一流派的歌曲。当我搜索一首歌时,我能够得到相关的实体,如歌手、制作人和歌曲的流派。我接下来想要的是与这个制作人和流派相关的其他歌曲。

from grakn.client import GraknClient
uri = "localhost:48555"
keyspace = "grakn_demo"
client = GraknClient(uri=uri)
session = client.session(keyspace=keyspace)
tx = session.transaction().write()
graql = 'match $s isa song, has producer "Records X", song-name "Despacito", singer "Luis Fonsi", genre "Reggaeton"; get;' 
tx.query(graql)

如果你有制作人和流派的具体名称,你可以使用这个查询

match $s isa song, 
has producer "Records X", 
has song-name $songName, 
has singer $singerName, 
has genre "Reggaeton"; 
get;

你会得到所有的歌曲(以及他们的名字和歌手(,有流派"Reggaeton"和制作人"Records X"。

如果你不知道流派和制作人的名字,你可以先通过歌曲名称获得它们,然后执行秒查询来获得similar歌曲

查询以按歌曲名称获取制作人和流派。之后,您可以使用第一个查询

match $s isa song, 
has producer $producer, 
has song-name "Despacito", 
has genre $genre; 
get;

Graql根据您提供的约束给出结果,基本上排除了任何与您给出的标准不匹配的结果。在查询中,您将$s限制为具有特定的song-namesinger。消除这些限制将给你所要求的结果:

match $s isa song, has producer "Records X", has genre "Reggaeton"; get;

这现在适用于任何有特定制作人和流派的歌曲。:(

最新更新