Database Neo4j:如何将标签显示为节点?

Database Neo4j:如何将标签显示为节点?,database,graph,neo4j,Database,Graph,Neo4j,我有一个关于Neo4j的问题。我需要将图形数据库中的标签显示为节点,就像我的数据库中只有两种类型的标签(例如,Thing和Person),我希望有两个额外的节点-Thing和Person与普通节点有关系 示例-我有以下内容: 橙色节点是人,红色节点是物。所以我想为图中的每个标签都有额外的标签节点。所以我想要这个: 这是自动创建的吗?您真的不想这样做,因为有N个节点的可视化将与特殊的“标签”节点有N个无关的关系,这使得很难(甚至不可能)看到实际数据。对不同的标签使用不同的颜色是一个很好的折衷方

我有一个关于Neo4j的问题。我需要将图形数据库中的标签显示为节点,就像我的数据库中只有两种类型的标签(例如,Thing和Person),我希望有两个额外的节点-Thing和Person与普通节点有关系

示例-我有以下内容:

橙色节点是人,红色节点是物。所以我想为图中的每个标签都有额外的标签节点。所以我想要这个:


这是自动创建的吗?

您真的不想这样做,因为有N个节点的可视化将与特殊的“标签”节点有N个无关的关系,这使得很难(甚至不可能)看到实际数据。对不同的标签使用不同的颜色是一个很好的折衷方案

在任何情况下,结果面板的顶部(在neo4j浏览器中)都会告诉您哪个颜色属于哪个标签,这样您就可以轻松获得所需的信息

[更新]

然而,如果你真的需要这样做,没有“自动化”的方法。但是您可以使用一些APOC过程来创建不存储在DB中但可以可视化的数据

例如,如果原始密码查询为:

MATCH path=(p:Person)-[r:RELTYPE]->(t:Thing)
RETURN *
您可以使用此查询生成适当的虚拟节点和关系:

MATCH path=(p:Person)-[r:RELTYPE]->(t:Thing)
WITH COLLECT(path) AS paths, COLLECT(DISTINCT p) AS ps, COLLECT(DISTINCT t) AS ts
CALL apoc.create.vNode(['V_Label'], {label: 'Person'}) YIELD node AS pLabel
CALL apoc.create.vNode(['V_Label'], {label: 'Thing'}) YIELD node AS tLabel
UNWIND ps AS person
CALL apoc.create.vRelationship(person, 'IS', {}, pLabel) YIELD rel AS pRel
WITH paths, ts, pLabel, tLabel, COLLECT(pRel) AS pRels
UNWIND ts AS thing
CALL apoc.create.vRelationship(thing, 'IS', {}, tLabel) YIELD rel AS tRel
RETURN *
产生可视化的示例:


由于学术原因,我确实需要这样做——数据库是我毕业论文的一部分。你知道我该怎么做吗?谢谢;)是的,我的解决方案会更复杂,但非常感谢您提供有关虚拟节点的信息-->我认为这正是我需要的;)