• 知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL - 太极拳传承谱系表


    看到后面的案例再实操作

    删除数据库中以往的图

    MATCH (n) DETACH DELETE n
    

    创建节点

    CREATE命令语法

    Neo4j CQL“CREATE”命令用于创建没有属性的节点。 它只是创建一个没有任何数据的节点。

    CREATE (
       :
       {
          :
          ........
          :
       }
    )
    
    语法元素 描述
    它是我们将要创建的节点名称,创建关系时使用到,注意命名
    它是一个节点标签名称
    ... 属性是键值对。 定义将分配给创建节点的属性的名称
    ... 属性是键值对。 定义将分配给创建节点的属性的值

    1、Neo4j数据库服务器使用此将此节点详细信息存储在Database.As中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。

    2、Neo4j数据库服务器创建一个作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。

     
    CREATE (cwt:Person { name:"陈王廷",generation:"创始人"})
    CREATE (jf:Person { name:"蒋发",generation:"第二代"})
    CREATE (sl:Person { name:"所乐",generation:"第二代"})
    CREATE (rx:Person { name:"汝信",generation:"第二代"})
    
    CREATE (zr:Person { name:"正如",generation:"第三代"})
    CREATE (xr:Person { name:"恂如",generation:"第三代"})
    CREATE (sr:Person { name:"申如",generation:"第三代"})
    CREATE (dp:Person { name:"大鹏",generation:"第三代"})
    CREATE (dk:Person { name:"大鹍",generation:"第三代"})
    
    

    image

    查询节点

    MATCH命令

    MATCH 
    (
       :
    )
    

    注意事项

    • Neo4j 数据库服务器使用此 将此节点详细信息存储在 Database.As 中作为 Neo4j DBA 或 Developer,我们不能使用它来访问节点详细信息。
    • Neo4j 数据库服务器创建一个 作为内部节点名称的别名。作为 Neo4j DBA 或 Developer,我们应该使用此标签名称来访问节点详细信息。
    # 查询Dept下的内容
    MATCH (dept:Dept) return dept
    
    # 查询Employee标签下 id=123,name="Lokesh"的节点
    MATCH (p:Employee {id:123,name:"Lokesh"}) RETURN p
    
    ## 查询Employee标签下name="Lokesh"的节点,使用(where命令)
    MATCH (p:Employee)
    WHERE p.name = "Lokesh"
    RETURN p
    

    MATCH & RETURN匹配和返回

    MATCH (n:Person {name:"陈长兴"}) RETURN n
    
    MATCH (n:Person {name:"陈长兴"}) RETURN n.generation
    

    image
    image

    创建关系

    根据属性图模型,关系应该是定向的。 否则,Neo4j将抛出一个错误消息。

    基于方向性,Neo4j关系被分为两种主要类型。

    • 单向关系
    • 双向关系

    在以下场景中,我们可以使用Neo4j CQL CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。

    • 在两个现有节点之间创建无属性的关系
    • 在两个现有节点之间创建有属性的关系
    • 在两个新节点之间创建无属性的关系
    • 在两个新节点之间创建有属性的关系
    • 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
    CREATE (m:Movie:Cinema:Film:Picture)
    

    新节点无属性关系

    CREATE (:)-
    	[:]
    	->(:)
    #   <节点1名> 它是From节点的名称。
    #   <节点2名> 它是To节点的名称。
    #   它是From节点的标签名称
    #   它是To节点的标签名称。
    #  <关系名称> 它是一个关系的名称。
    #  <相关标签名称> 它是一个关系的标签名称。
    

    删除关系

    DELETE ,,

    MATCH (p:Person)-[r:APPRENTICE]-(h:Hierarchy) where p.name='蒋发' and h.title='第二代传承人'
    DELETE p,h,r
    
    # 删除所有关系
    MATCH ()-[r]-() DELETE r
    

    案例 -- 太极拳传承谱系表

    image

    创建传承人

    # 清数据
    MATCH (n) DETACH DELETE n
    

    创建传承人

    CREATE (cwt:Person { name:"陈王廷",generation:"创始人"})
    CREATE (jf:Person { name:"蒋发",generation:"第二代"})
    CREATE (sl:Person { name:"所乐",generation:"第二代"})
    CREATE (rx:Person { name:"汝信",generation:"第二代"})
    
    CREATE (zr:Person { name:"正如",generation:"第三代"})
    CREATE (xr:Person { name:"恂如",generation:"第三代"})
    CREATE (sr:Person { name:"申如",generation:"第三代"})
    CREATE (dp:Person { name:"大鹏",generation:"第三代"})
    CREATE (dk:Person { name:"大鹍",generation:"第三代"})
    
    CREATE (jx:Person { name:"继夏",generation:"第四代"})
    CREATE (jb:Person { name:"敬伯",generation:"第四代"})
    CREATE (jue:Person { name:"爵",generation:"第四代"})
    CREATE (zs:Person { name:"善志",generation:"第四代"})
    CREATE (st:Person { name:"善通",generation:"第四代"})
    
    CREATE (dx:Person { name:"大兴",generation:"第五代"})
    CREATE (yz:Person { name:"耀兆",generation:"第五代"})
    CREATE (gz:Person { name:"公兆",generation:"第五代"})
    CREATE (bw:Person { name:"秉旺",generation:"第五代"})
    CREATE (br:Person { name:"秉壬",generation:"第五代"})
    CREATE (bq:Person { name:"秉奇",generation:"第五代"})
    
    CREATE (ccx:Person { name:"陈长兴",generation:"第六代"})
    CREATE (yb:Person { name:"有本",generation:"第六代"})
    CREATE (yh:Person { name:"有恒",generation:"第六代"})
    
    CREATE (ylc:Person { name:"杨露禅",generation:"第七代"})
    CREATE (gy:Person { name:"耕耘",generation:"第七代"})
    
    
    CREATE (ybh:Person { name:"杨班候",generation:"第八代"})
    CREATE (yx:Person { name:"延熙",generation:"第八代"})
    CREATE (yn:Person { name:"延年",generation:"第八代"})
    
    CREATE (cfk:Person { name:"陈发科",generation:"第九代"})
    CREATE (wy:Person { name:"王雁",generation:"第九代"})
    CREATE (cbz:Person { name:"陈宝璩",generation:"第九代"})
    CREATE (wep:Person { name:"王二平",generation:"第九代"})
    
    CREATE (wfl:Person { name:"王福礼",generation:"第十代"})
    CREATE (zlh:Person { name:"朱老虎",generation:"第十代"})
    CREATE (wcj:Person { name:"王长江",generation:"第十代"})
    CREATE (cez:Person { name:"曹二柱",generation:"第十代"})
    
    CREATE (zl:Person { name:"朱路",generation:"第十一代"})
    CREATE (zf:Person { name:"朱峰",generation:"第十一代"})
    CREATE (zc:Person { name:"朱超",generation:"第十一代"})
    CREATE (zbl:Person { name:"朱堡垒",generation:"第十一代"})
    CREATE (zzl:Person { name:"张中林",generation:"第十一代"})
    

    创建师徒关系

    查出现有的节点。创建关系

    
    # 运行时删除注释
    # t 是师傅(陈王廷),s1,s2,s3 是弟子
    match(t:Person),(s1:Person),(s2:Person),(s3:Person) where t.name='陈王廷' and s1.name='蒋发' and s2.name='所乐' and s3.name='汝信' 
    CREATE 
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t),
    (s3)-[:APPRENTICE]->(t)
    
    # t 是师傅(汝信),s1,s2,s3 是弟子
    match(t:Person),(s1:Person),(s2:Person) where t.name='汝信' and s1.name='大鹏' and s2.name='大鹍'
    CREATE 
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t) 
    
    
    match(t:Person),(s1:Person) where t.name='大鹏' and s1.name='善志'
    CREATE 
    (s1)-[:APPRENTICE]->(t)
    
    match(t:Person),(s1:Person),(s2:Person) where t.name='善志' and s1.name='秉旺' and s2.name='秉壬'
    CREATE 
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t) 
     
    match(t:Person),(s1:Person) where t.name='秉旺' and s1.name='陈长兴' 
    CREATE 
    (s1)-[:APPRENTICE]->(t) 
    
    match(t:Person),(s1:Person),(s2:Person) where t.name='陈长兴' and s1.name='杨露禅' and s2.name='耕耘'
    CREATE 
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t) 
    
    
    match(t:Person),(s1:Person),(s2:Person) where t.name='耕耘' and s1.name='延熙' and s2.name='延年'
    CREATE
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t)
    
    
    match(t:Person),(s1:Person),(s2:Person),(s3:Person),(s4:Person) where t.name='延熙' and s1.name='陈发科' and s2.name='王雁' and s3.name='陈宝璩' and s4.name='王二平'
    CREATE 
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t),
    (s3)-[:APPRENTICE]->(t),
    (s4)-[:APPRENTICE]->(t)
    
    match(t:Person),(s1:Person),(s2:Person),(s3:Person),(s4:Person) where t.name='王雁' and s1.name='王福礼' and s2.name='朱老虎' and s3.name='王长江' and s4.name='曹二柱'
    CREATE  
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t),
    (s3)-[:APPRENTICE]->(t),
    (s4)-[:APPRENTICE]->(t)
    
    
    match(t:Person),(s1:Person),(s2:Person),(s3:Person),(s4:Person),(s5:Person) where t.name='朱老虎' and s1.name='朱路' and s2.name='朱峰' and s3.name='朱超' and s4.name='朱堡垒'  and s5.name='张中林' 
    CREATE
    (s1)-[:APPRENTICE]->(t),
    (s2)-[:APPRENTICE]->(t),
    (s3)-[:APPRENTICE]->(t),
    (s4)-[:APPRENTICE]->(t),
    (s5)-[:APPRENTICE]->(t)
    
    

    image

    使用新节点创建关系

    创建第N代传承人

    # 创建辈份-- 执行时要去掉注释
    CREATE (FirstGeneration:Hierarchy {title:'陈氏太极创始人'})
    # 分开执行
    match(t:Hierarchy),(s1:Person) where t.title='陈氏太极创始人' and s1.name='陈王廷'
    CREATE
    (s1)-[:BELONG_TO]->(t)
    
    # 创建辈份 -- 执行时要去掉注释
    CREATE (SecondGeneration:Hierarchy {title:'第二代传承人'})
    # 创建关系 -- 执行时要去掉注释
    match(t:Hierarchy),(s1:Person),(s2:Person),(s3:Person) where t.title='第二代传承人' and s1.name='蒋发' and s2.name='所乐' and s3.name='汝信'
    CREATE 
    (s1)-[:BELONG_TO]->(t),
    (s2)-[:BELONG_TO]->(t),
    (s3)-[:BELONG_TO]->(t)
    

    image

    案例 -- 批量执行

    新节点创建关系

    CREATE (FirstGeneration:Hierarchy {title:'陈氏太极创始人'})
    CREATE (cwt:Person { name:"陈王廷",generation:"创始人"})
    CREATE
    (cwt)-[:BELONG_TO]->(FirstGeneration)
    
    CREATE (SecondGeneration:Hierarchy {title:'第二代传承人'})
    CREATE (jf:Person { name:"蒋发",generation:"第二代"})
    CREATE (sl:Person { name:"所乐",generation:"第二代"})
    CREATE (rx:Person { name:"汝信",generation:"第二代"})
    CREATE
    (jf)-[:BELONG_TO]->(SecondGeneration),
    (sl)-[:BELONG_TO]->(SecondGeneration),
    (rx)-[:BELONG_TO]->(SecondGeneration),
    (jf)-[:APPRENTICE]->(cwt),
    (sl)-[:APPRENTICE]->(cwt),
    (rx)-[:APPRENTICE]->(cwt)
    
    
    CREATE (Thirdly:Hierarchy {title:'第三代传承人'})
    CREATE (zr:Person { name:"正如",generation:"第三代"})
    CREATE (xr:Person { name:"恂如",generation:"第三代"})
    CREATE (sr:Person { name:"申如",generation:"第三代"})
    CREATE (dp:Person { name:"大鹏",generation:"第三代"})
    CREATE (dk:Person { name:"大鹍",generation:"第三代"})
    CREATE
    (zr)-[:BELONG_TO]->(Thirdly),
    (xr)-[:BELONG_TO]->(Thirdly),
    (sr)-[:BELONG_TO]->(Thirdly),
    (dp)-[:BELONG_TO]->(Thirdly),
    (dk)-[:BELONG_TO]->(Thirdly),
    (zr)-[:APPRENTICE]->(sl),
    (xr)-[:APPRENTICE]->(sl),
    (sr)-[:APPRENTICE]->(sl),
    (dp)-[:APPRENTICE]->(rx),
    (dk)-[:APPRENTICE]->(rx)
    
    
    CREATE (Fourth:Hierarchy {title:'第四代传承人'})
    CREATE (jx:Person { name:"继夏",generation:"第四代"})
    CREATE (jb:Person { name:"敬伯",generation:"第四代"})
    CREATE (jue:Person { name:"爵",generation:"第四代"})
    CREATE (zs:Person { name:"善志",generation:"第四代"})
    CREATE (st:Person { name:"善通",generation:"第四代"})
    CREATE
    (jx)-[:BELONG_TO]->(Fourth),
    (jb)-[:BELONG_TO]->(Fourth),
    (jue)-[:BELONG_TO]->(Fourth),
    (zs)-[:BELONG_TO]->(Fourth),
    (st)-[:BELONG_TO]->(Fourth),
    (zs)-[:APPRENTICE]->(dp),
    (st)-[:APPRENTICE]->(dk)
    
    
    CREATE (Fifth:Hierarchy {title:'第五代传承人'})
    CREATE (dx:Person { name:"大兴",generation:"第五代"})
    CREATE (yz:Person { name:"耀兆",generation:"第五代"})
    CREATE (gz:Person { name:"公兆",generation:"第五代"})
    CREATE (bw:Person { name:"秉旺",generation:"第五代"})
    CREATE (br:Person { name:"秉壬",generation:"第五代"})
    CREATE (bq:Person { name:"秉奇",generation:"第五代"})
    CREATE
    (dx)-[:BELONG_TO]->(Fifth),
    (yz)-[:BELONG_TO]->(Fifth),
    (gz)-[:BELONG_TO]->(Fifth),
    (bw)-[:BELONG_TO]->(Fifth),
    (br)-[:BELONG_TO]->(Fifth),
    (bq)-[:BELONG_TO]->(Fifth),
    (bw)-[:APPRENTICE]->(zs),
    (br)-[:APPRENTICE]->(zs),
    (bq)-[:APPRENTICE]->(st)
    
    
    CREATE (Sixth:Hierarchy {title:'第六代传承人'})
    CREATE (ccx:Person { name:"陈长兴",generation:"第六代"})
    CREATE (yb:Person { name:"有本",generation:"第六代"})
    CREATE (yh:Person { name:"有恒",generation:"第六代"})
    CREATE
    (ccx)-[:BELONG_TO]->(Sixth),
    (yb)-[:BELONG_TO]->(Sixth),
    (yh)-[:BELONG_TO]->(Sixth),
    (ccx)-[:APPRENTICE]->(bw)
    
    
    CREATE (Seventh:Hierarchy {title:'第七代传承人'})
    CREATE (ylc:Person { name:"杨露禅",generation:"第七代"})
    CREATE (gy:Person { name:"耕耘",generation:"第七代"})
    CREATE
    (ylc)-[:BELONG_TO]->(Seventh),
    (gy)-[:BELONG_TO]->(Seventh),
    (ylc)-[:APPRENTICE]->(ccx),
    (gy)-[:APPRENTICE]->(ccx)
    
    
    CREATE (Eighth:Hierarchy {title:'第八代传承人'})
    CREATE (ybh:Person { name:"杨班候",generation:"第八代"})
    CREATE (yx:Person { name:"延熙",generation:"第八代"})
    CREATE (yn:Person { name:"延年",generation:"第八代"})
    CREATE
    (ybh)-[:BELONG_TO]->(Eighth),
    (yx)-[:BELONG_TO]->(Eighth),
    (yn)-[:BELONG_TO]->(Eighth),
    (yx)-[:APPRENTICE]->(gy),
    (yn)-[:APPRENTICE]->(gy)
    
    CREATE (Ninth:Hierarchy {title:'第九代传承人'})
    CREATE (cfk:Person { name:"陈发科",generation:"第九代"})
    CREATE (wy:Person { name:"王雁",generation:"第九代"})
    CREATE (cbz:Person { name:"陈宝璩",generation:"第九代"})
    CREATE (wep:Person { name:"王二平",generation:"第九代"})
    CREATE
    (cfk)-[:BELONG_TO]->(Ninth),
    (wy)-[:BELONG_TO]->(Ninth),
    (cbz)-[:BELONG_TO]->(Ninth),
    (wep)-[:BELONG_TO]->(Ninth),
    (cfk)-[:APPRENTICE]->(yx),
    (wy)-[:APPRENTICE]->(yx),
    (cbz)-[:APPRENTICE]->(yx),
    (wep)-[:APPRENTICE]->(yx)
    
    CREATE (Tenth:Hierarchy {title:'第十代传承人'})
    CREATE (wfl:Person { name:"王福礼",generation:"第十代"})
    CREATE (zlh:Person { name:"朱老虎",generation:"第十代"})
    CREATE (wcj:Person { name:"王长江",generation:"第十代"})
    CREATE (cez:Person { name:"曹二柱",generation:"第十代"})
    CREATE
    (wfl)-[:BELONG_TO]->(Tenth),
    (zlh)-[:BELONG_TO]->(Tenth),
    (wcj)-[:BELONG_TO]->(Tenth),
    (cez)-[:BELONG_TO]->(Tenth),
    (wfl)-[:APPRENTICE]->(wy),
    (zlh)-[:APPRENTICE]->(wy),
    (wcj)-[:APPRENTICE]->(wy),
    (cez)-[:APPRENTICE]->(wy)
    
    CREATE (Eleventh:Hierarchy {title:'第十一代传承人'})
    CREATE (zl:Person { name:"朱路",generation:"第十一代"})
    CREATE (zf:Person { name:"朱峰",generation:"第十一代"})
    CREATE (zc:Person { name:"朱超",generation:"第十一代"})
    CREATE (zbl:Person { name:"朱堡垒",generation:"第十一代"})
    CREATE (zzl:Person { name:"张中林",generation:"第十一代"})
    CREATE
    (zl)-[:BELONG_TO]->(Eleventh),
    (zf)-[:BELONG_TO]->(Eleventh),
    (zc)-[:BELONG_TO]->(Eleventh),
    (zbl)-[:BELONG_TO]->(Eleventh),
    (zzl)-[:BELONG_TO]->(Eleventh),
    (zl)-[:APPRENTICE]->(zlh),
    (zf)-[:APPRENTICE]->(zlh),
    (zc)-[:APPRENTICE]->(zlh),
    (zbl)-[:APPRENTICE]->(zlh),
    (zzl)-[:APPRENTICE]->(zlh)
    

    image

    姓:surname 或者 family name或者 last name
    名:first name 或者 forename 或者 given name
    字:style name,有时也作courtesy name
    号:pseudonym,有时也做(hao)

    人称:一般可以翻译成 nicknames
    谥号:posthumous title

    https://www.w3cschool.cn/neo4j/neo4j_cql_create_node.html

  • 相关阅读:
    RocketMQ存储设计的奥妙
    【深度学习】实验6答案:图像自然语言描述生成(让计算机“看图说话”)
    (续)SSM整合之springmvc笔记(拦截器)(P164-168)
    2023-09-04 LeetCode每日一题(序列化和反序列化二叉搜索树)
    【C++】入门(二):引用、内联、auto
    Hive 和 HDFS、MySQL 之间的关系
    026试用流程图框架jsPlumb和VueFlow,作为可视化编程实现参考
    强推这款丝滑酷炫酷的keychron K8键盘
    6.7-IP地址(IPv4) 6.8-IP地址掩码 6.9-计算机IP所属网段
    提升个人认知的六个学习方法
  • 原文地址:https://www.cnblogs.com/vipsoft/p/17631347.html