GraphGists

关联艺术家 - 科特·柯本和戴夫·格罗尔

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

设置艺术家

首先,让我们使用CREATE 语句创建一些艺术家。每个节点都有一个名称(例如科特·柯本)和一个类型为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 关系将科特·柯本涅槃乐队 映射在一起。在这里,我们首先MATCH 图形中的两个节点,然后CREATE 它们之间的命名关系。

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

然后我们可以将戴夫·格罗尔 链接到其他乐队

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)

现在图形看起来好多了!

查找关联艺术家

关联艺术家 是彼此没有直接链接的艺术家。例如,戴夫·格罗尔科特·柯本 通过涅槃乐队 成为关联艺术家(对于社交图形,这通常被称为朋友的朋友)。

因此,要查找与涅槃乐队 关联的艺术家,可以使用以下查询

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

瞧!

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