虚拟节点与关系(图投影)
虚拟节点和关系在图中并不实际存在,它们仅通过查询返回,并可用于表示图投影。
它们可用于可视化地投影数据,例如,将多个关系聚合为一个,或将中间节点折叠为虚拟关系。我们可以将引文图投影为虚拟的作者-作者图或论文-论文图,其中包含它们之间聚合的关系,甚至可以将 Twitter 数据转换为用户-用户提及图。
我们可以组合真实实体和虚拟实体,例如,通过在两个真实节点之间创建虚拟关系,或者从虚拟节点创建到真实节点的虚拟关系。
使用虚拟节点
虚拟节点无法从图中查询,因为它们必须保存在本地查找结构中。这意味着某些内置的 Cypher 函数可能无法工作。例如,在虚拟节点或关系上使用 `/docs/cypher-manual/2025.05/functions/list/#functions-labels[labels()
^]` 函数将返回空列表 `[]`。
APOC 提供了便于使用虚拟节点和关系的函数。
限定名称 | 类型 |
---|---|
apoc.any.properties |
|
apoc.any.property |
|
apoc.map.groupBy |
|
apoc.node.id |
|
apoc.node.labels |
|
apoc.rel.endNode |
|
apoc.rel.id |
|
apoc.rel.startNode |
|
apoc.rel.type |
|
Virtual Nodes and Relationships have negative ids. |
虚拟实体还具有以下用例
-
仅将节点/关系的选定属性返回给可视化(例如,移除大型或敏感属性)。
-
可视化图算法发现的集群。
-
将信息聚合到更高的抽象级别。
-
在较长路径中跳过中间节点。
-
出于安全原因隐藏属性或中间节点/关系
-
图分组
-
将来自其他源(计算、RDBMS、文档数据库、CSV、XML、JSON)的数据可视化为图,甚至无需存储
-
投影部分数据
有关如何使用这些过程的更多信息,请参阅