apoc.meta.graph.of

详细信息

语法

apoc.meta.graph.of([ graph, config ]) :: (nodes, relationships)

描述

检查给定的子图并返回一个元图 (meta-graph)。

输入参数

名称

类型

描述

graph(图)

ANY

用于提取元数据的图。默认值为:{}

config

MAP

为消除误报而检查其关系的节点数量,以及每个采样节点要读取的关系数量。值为 -1 表示读取全部;{ sample = 1 :: INTEGER, maxRels = -1 :: INTEGER, addRelationshipsBetweenNodes = true :: BOOLEAN }。默认值为:{}

返回参数

名称

类型

描述

节点

LIST<NODE>

表示元数据的节点。

relationships

LIST<RELATIONSHIP>

表示元数据的关系。

配置参数

该过程支持以下配置参数

配置参数
名称 类型 默认 描述

sample

INTEGER(整数)

1

为消除误报而检查其关系的节点数量。请参阅下方的“采样”部分。

maxRels(最大关系数)

INTEGER(整数)

100

按关系类型以及起始和结束标签进行分析的关系数量,旨在删除/添加因采样结果而错误插入/未插入的关系。

addRelationshipsBetweenNodes (在节点间添加关系)

布尔值 (BOOLEAN)

true

每个关系类型要采样的关系数量。

采样

此过程通过使用数据库统计信息来工作。每个标签都会返回一个新节点,其连接关系是根据 [:R]→(:N) 和 (:M)→[:R] 的配对组合计算得出的。例如,对于图 (:A)-[:R]→(:B)-[:R]→(:C),路径 (:B)-[:R]→(:B) 将根据 [:R]→(:B) 和 (:B)-[:R] 的组合进行计算。默认情况下,此过程将对数据进行后处理,删除所有不存在的关系。这是通过扫描节点及其关系来完成的。如果未找到该关系,它将从最终结果中删除。这会减慢处理速度,但会生成准确的模式。

请参阅 apoc.meta.graphSample 以避免执行任何后处理。

也可以指定要扫描的节点和关系数量。配置参数 sample 提供跳过计数,maxRels 参数提供每个节点要检查的最大关系数。如果将 sample 设置为 100,这意味着每个标签每 100 个节点将被检查一次;对于 maxRels,值 100 意味着对于读取的每个节点,仅读取前 100 个关系。请注意,如果设置了这些值,且在这些约束内未找到关系,则假定该关系不存在,这可能会导致漏报 (false negatives)。

如果 sample 值高于该标签的节点总数,则只会检查一个节点。

使用示例

支持的输入图类型

类型 描述

STRING

Cypher 查询

虚拟图

apoc.graph.* 返回的虚拟图 (Virtual Graph)

MAP

包含两个字段的映射:nodes(节点列表,**必需**),relationships(关系列表)

如果您有一个非常复杂的图,并且想要分析并获取有关其中特定子图的信息,则可以利用 apoc.meta.graph.of 过程。

对于给定的图模型

apoc.meta.graph.example

您可以按以下方式利用 apoc.meta.graph.of 过程

apoc.meta.graph.of

这将提取所提供查询的元图,并附带一些统计信息,例如查询中涉及的每个节点的 count(计数)。

如果您需要更多详细信息,也可以查看 apoc.meta.graph 文档