apoc.meta.relTypeProperties

详细信息

语法

apoc.meta.relTypeProperties([ config ]) :: (relType, sourceNodeLabels, targetNodeLabels, propertyName, propertyTypes, mandatory, propertyObservations, totalObservations)

描述

检查整个图数据库,并返回一张包含其中 RELATIONSHIP(关系)值相关元数据的表。

输入参数

名称

类型

描述

config

MAP

{ includeLabels = [] :: LIST<STRING>, includeRels = [] :: LIST<STRING>, excludeLabels = [] :: LIST<STRING>, excludeRels = [] :: LIST<STRING>, sample = 1000 :: INTEGER, maxRels = 100 :: INTEGER }。默认值为:{}

返回参数

名称

类型

描述

relType

STRING

关系的类型。

sourceNodeLabels(源节点标签)

LIST<STRING>

属于起始节点的标签。

targetNodeLabels(目标节点标签)

LIST<STRING>

属于结束节点的标签。

属性名称 (propertyName)

STRING

属性的名称。

属性类型 (propertyTypes)

LIST<STRING>

该属性拥有的类型。

强制性 (mandatory)

布尔值 (BOOLEAN)

该属性是否在给定类型的所有节点上都存在。

propertyObservations(属性观测次数)

INTEGER(整数)

该属性被观测到的次数。

totalObservations(总观测次数)

INTEGER(整数)

该标签被查看到的次数。

配置参数

此过程支持以下配置参数

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

includeLabels(包含标签)

LIST<STRING>

[]

需要包含的节点标签。默认为包含所有节点标签。

includeRels(包含关系)

LIST<STRING>

[]

需要包含的关系类型。默认为包含所有关系类型。

excludeLabels(排除标签)

LIST<STRING>

[]

需要排除的节点标签。默认为包含所有节点标签。

excludeRels(排除关系)

LIST<STRING>

[]

需要排除的关系类型。默认为包含所有关系类型。

sample

INTEGER(整数)

1000

采样的节点数量。将 sample 设置为 -1 将移除采样。

maxRels(最大关系数)

INTEGER(整数)

100

每个采样节点读取的关系数量。

采样 (Sampling)

指定 sample 参数(默认为 1000)以分析数据的子集。

采样以及每个标签的节点计数用于计算跳过值(skip value)。由于此值是使用随机数生成器生成的,因此通过采样方法获得的结果在后续运行中可能会有所不同。

示例 1. 计算数据采样的跳过计数

如果数据库包含 500 个标签为 Foo 的节点,则该标签的跳过计数计算如下

每个节点标签的跳过计数是通过生成 (totalNodesForLabel / sample) ± 0.1 之间的随机数来确定的。

采样 10:skipCount = 500 / 10 = 50
得到的跳过计数将在 45 到 55 之间。

采样 50:skipCount = 500 / 50 = 10
得到的跳过计数将在 9 到 11 之间。

采样 100:skipCount = 500 / 100 = 5
得到的跳过计数将为 5。

跳过计数表示在检查一个节点之前跳过的节点数量。例如,跳过计数为 5 时,每 5 个节点检查一次。因此,采样数值越大,采样的节点就越多。

要停止采样,请设置 sample: -1

已弃用的参数
名称 类型 默认 描述

标签

LIST<STRING>

[]

已弃用,请使用 includeLabels

rels

LIST<STRING>

[]

已弃用,请使用 includeRels

excludes(排除项)

LIST<STRING>

[]

已弃用,请使用 excludeLabels

用法示例

本节中的示例基于以下示例图

CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (TomH:Person {name:'Tom Hanks', born:1956})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})
CREATE (TheMatrixRevolutions:Movie {title:'The Matrix Revolutions', released:2003, tagline:'Everything that has a beginning has an end'})
CREATE (SomethingsGottaGive:Movie {title:"Something's Gotta Give", released:2003})
CREATE (TheDevilsAdvocate:Movie {title:"The Devil's Advocate", released:1997, tagline:'Evil has its winning ways'})

CREATE (YouveGotMail:Movie {title:"You've Got Mail", released:1998, tagline:'At odds in life... in love on-line.'})
CREATE (SleeplessInSeattle:Movie {title:'Sleepless in Seattle', released:1993, tagline:'What if someone you never met, someone you never saw, someone you never knew was the only someone for you?'})
CREATE (ThatThingYouDo:Movie {title:'That Thing You Do', released:1996, tagline:'In every life there comes a time when that thing you dream becomes that thing you do'})
CREATE (CloudAtlas:Movie {title:'Cloud Atlas', released:2012, tagline:'Everything is connected'})

CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded)
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixRevolutions)
CREATE (Keanu)-[:ACTED_IN {roles:['Julian Mercer']}]->(SomethingsGottaGive)
CREATE (Keanu)-[:ACTED_IN {roles:['Kevin Lomax']}]->(TheDevilsAdvocate)

CREATE (TomH)-[:ACTED_IN {roles:['Joe Fox']}]->(YouveGotMail)
CREATE (TomH)-[:ACTED_IN {roles:['Sam Baldwin']}]->(SleeplessInSeattle)
CREATE (TomH)-[:ACTED_IN {roles:['Mr. White']}]->(ThatThingYouDo)
CREATE (TomH)-[:ACTED_IN {roles:['Zachry', 'Dr. Henry Goose', 'Isaac Sachs', 'Dermot Hoggins']}]->(CloudAtlas)

CREATE (LillyW)-[:DIRECTED]->(TheMatrix);

我们可以通过运行以下查询,根据数据库内容的一个采样来返回数据库的元数据

CALL apoc.meta.relTypeProperties();
结果
relType sourceNodeLabels(源节点标签) targetNodeLabels(目标节点标签) 属性名称 (propertyName) 属性类型 (propertyTypes) 强制性 (mandatory) propertyObservations(属性观测次数) totalObservations(总观测次数)

":`ACTED_IN`"

["Person"]

["Movie"]

"roles"

["StringArray"]

FALSE

9

9

":`DIRECTED`"

["Person"]

["Movie"]

NULL

NULL

FALSE

0

1

我们可以通过指定 rels 配置参数来返回关系类型的子集元数据。以下查询返回 ACTED_IN 标签的元数据

CALL apoc.meta.relTypeProperties({rels: ["ACTED_IN"]});
结果
relType sourceNodeLabels(源节点标签) targetNodeLabels(目标节点标签) 属性名称 (propertyName) 属性类型 (propertyTypes) 强制性 (mandatory) propertyObservations(属性观测次数) totalObservations(总观测次数)

":`ACTED_IN`"

["Person"]

["Movie"]

"roles"

["StringArray"]

FALSE

9

9

我们可以通过指定 maxRels 参数来控制采样的关系数量。以下查询基于每种关系类型最多采样 3 个关系来返回元数据

CALL apoc.meta.relTypeProperties({maxRels: 3});
结果
relType sourceNodeLabels(源节点标签) targetNodeLabels(目标节点标签) 属性名称 (propertyName) 属性类型 (propertyTypes) 强制性 (mandatory) propertyObservations(属性观测次数) totalObservations(总观测次数)

":`ACTED_IN`"

["Person"]

["Movie"]

"roles"

["StringArray"]

FALSE

3

9

":`DIRECTED`"

["Person"]

["Movie"]

NULL

NULL

FALSE

0

1