apoc.meta.graph过程
|
语法 |
|
||
描述 |
检查整个图谱并返回一个元图谱(meta-graph)。 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
检查关系的节点数量以消除误报,以及每个采样节点要读取的关系数量。值为 -1 表示读取全部; |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
表示元数据的节点。 |
|
|
|
表示元数据的关系。 |
|
配置参数
此过程支持以下配置参数
| 名称 | 类型 | 默认 | 描述 |
|---|---|---|---|
|
|
1 |
用于检查关系以消除误报的节点数量。 |
|
|
-1 |
每个采样节点要读取的关系数量。值为 -1 表示读取全部。 |
采样
此过程通过使用数据库统计信息来工作。每个标签都会返回一个新节点,其连接关系是根据 [: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 值高于该标签的节点总数,则只会检查一个节点。
使用示例
本节中的示例基于以下示例图
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (TomH:Person {name:'Tom Hanks', born:1956})
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);
CALL apoc.meta.graph()