我将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-name
和singer
。消除这些限制将给你所要求的结果:
match $s isa song, has producer "Records X", has genre "Reggaeton"; get;
这现在适用于任何有特定制作人和流派的歌曲。:(