GraphGists

关联艺术家 - Kurt Cobain 和 Dave Grohl

Bandtrace 是一个基于 Neo4j 的音乐百科全书。本GraphGist演示了如何找到关联艺术家,即未直接关联的艺术家。

设置艺术家

首先,让我们使用 CREATE 语句创建一些艺术家节点。每个节点都有一个名称(例如 Kurt Cobain)和一个类型为 Artist标签

CREATE
    (kurt:Artist { name:"Kurt Cobain" }),
    (dave:Artist { name:"Dave Grohl" }),
    (nirvana:Artist { name:"Nirvana" }),
    (foo:Artist { name:"Foo Fighters" }),
    (qotsa:Artist { name:"Queens of the Stone Age" })

如果我们查看图,可以看到所有艺术家节点都已创建,但它们之间没有关系。

所以,让我们通过 MEMBER_OF 关系将 Kurt CobainNirvana 关联起来。这里我们首先在图中 MATCH 两个节点,然后 CREATE 它们之间命名的关系。

MATCH
    (kurt:Artist { name:"Kurt Cobain" }),
    (nirvana:Artist { name:"Nirvana" })
CREATE
    (kurt)-[:MEMBER_OF]->(nirvana)

然后我们可以将 Dave Grohl 与其他乐队关联起来

MATCH
    (dave:Artist { name:"Dave Grohl" }),
    (nirvana:Artist { name:"Nirvana" }),
    (foo:Artist { name:"Foo Fighters" }),
    (qotsa:Artist { name:"Queens of the Stone Age" })
CREATE
    (dave)-[:MEMBER_OF]->(nirvana),
    (dave)-[:MEMBER_OF]->(foo),
    (dave)-[:MEMBER_OF]->(qotsa)

现在图看起来更清晰了!

查找关联艺术家

关联艺术家 指未直接相互关联的艺术家。例如,*Dave Grohl* 和 *Kurt Cobain* 通过 *Nirvana* 是关联艺术家(对于社交图谱,这通常被称为“朋友的朋友”)。

因此,要查找与 *Nirvana* 关联的艺术家,可以使用以下查询

MATCH
    (nirvana:Artist { name:"Nirvana" })-[:MEMBER_OF]-()-[:MEMBER_OF]-(connected)
RETURN
    connected

瞧!

附注:如果您想自己查询图,只需在下方输入Cypher查询即可

© . All rights reserved.