在构建知识图谱或进行图数据库功能测试时,经常需要模拟具有层级关系的实体数据。本文将以两个具体的实例——人物“刘德华”与植物“番茄”——演示如何在 Neo4j 中批量创建根节点及其子节点,模拟一个简单的知识结构。
一、节点簇根节点 id=50000(刘德华)
目标概述:创建以ID 50000为根节点的节点簇,该根节点代表“刘德华”实体,并为其创建8个属性子节点,总体结构规划如下图所示:

图1:节点簇总体结构示意图
本次操作将在之前已完成的ID为40000的节点簇基础上,继续构建此节点簇。
操作步骤:
-
创建根节点
首先,创建一个标签为 LiuDeHua 的根节点,其ID设为50000,并包含名称和类别信息。
CREATE (root:LiuDeHua {id: 50000, name: '刘德华[中国香港男演员、歌手、制片人、填词人]', categary: '百科'});
-
批量创建子节点
接着,匹配已创建的根节点,并一次性为其创建8个子节点,分别代表外文名、别名、国籍、民族、星座、血型、身高和体重等属性。每个子节点通过 HAS_CHILD 关系与根节点相连。
MATCH (root:LiuDeHua {id: 50000})
CREATE (child1599813694131:LiuDeHua {id: 1599813694131, name: 'AndyLau,LauTakWah', categary: '外文名'})
CREATE (root)-[:HAS_CHILD]->(child1599813694131);
MATCH (root:LiuDeHua {id: 50000})
CREATE (child1599813694132:LiuDeHua {id: 1599813694132, name: '华仔,华Dee,华哥等', categary: '别名'})
CREATE (root)-[:HAS_CHILD]->(child1599813694132);
... (其余6个子节点创建语句,结构类似)
执行效果:完成上述操作后,在Neo4j浏览器中可查看到如下图所示的节点与关系网络。

图2:刘德华节点簇创建完成效果图
二、节点簇根节点 id=60000(番茄)
目标概述:创建以ID 60000为根节点的节点簇,该根节点代表“番茄”实体,并为其创建8个分类学上的属性子节点。

图3:番茄节点簇结构规划图
操作步骤:
-
创建根节点
创建一个标签为 Tomato 的根节点。
CREATE (root:Tomato {id: 60000, name: '番茄[茄科茄属植物]', categary: '百科'});
-
批量创建子节点
匹配番茄根节点,创建其拉丁学名、别名以及界、门、纲、亚纲、目、科等分类学子节点。这演示了如何利用 Node.js 或其它后端语言程序化生成此类批量Cypher语句。
MATCH (root:Tomato {id: 60000})
CREATE (child1599813839207:Tomato {id: 1599813839207, name: 'Solanumlycopersicum', categary: '拉丁学名'})
CREATE (root)-[:HAS_CHILD]->(child1599813839207);
MATCH (root:Tomato {id: 60000})
CREATE (child1599813839208:Tomato {id: 1599813839208, name: '蕃柿、西红柿、洋柿子', categary: '别名'})
CREATE (root)-[:HAS_CHILD]->(child1599813839208);
... (其余6个分类学子节点创建语句)
执行效果:完成创建后,效果如下图所示。

图4:番茄节点簇创建完成效果图
通过以上两个实例,详细展示了在Neo4j中使用Cypher语句手动或通过脚本批量构建具有层级关系的图数据的方法。这种方法适用于知识图谱数据初始化、功能测试验证等场景,有助于理解和掌握Neo4j的数据建模与操作。
|