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

知识,图谱,knowledge,graph,neo4j,使用,cql,太极拳,传承,谱系 · 浏览次数 : 365

小编点评

**内容生成指南** **1. 需求分析** * 确定要创建的内容类型 * 确定要创建的内容的名称 * 确定要创建的内容的属性 * 确定要创建的内容的格式 **2. 创建内容** * 创建新的内容类型 * 创建新的内容 * 创建新的属性 * 创建新的格式 **3. 将内容存储** * 将内容存储到数据库中 * 将内容存储到文件系统中 **4. 查询内容** * 查询数据库中的内容 * 查询文件系统中的内容 **5. 更新内容** * 更新数据库中的内容 * 更新文件系统中的内容 **6. 删除内容** * 删除数据库中的内容 * 删除文件系统中的内容 **7. 维护内容** * 定期维护内容 * 更新内容的属性 * 删除内容的格式

正文

看到后面的案例再实操作

删除数据库中以往的图

MATCH (n) DETACH DELETE n

创建节点

CREATE命令语法

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

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

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 (n:Drug) WHERE n.name="正如" RETURN n
# 没问题后,改成删除
MATCH (n:Drug) WHERE n.name="正如" DELETE n

查询节点

MATCH命令

MATCH 
(
   <node-name>:<label-name>
)

注意事项

  • 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 (<node1-name>:<label1-name>)-
	[<relationship-name>:<relationship-label-name>]
	->(<node2-name>:<label2-name>)
# <node1-name>  <节点1名> 它是From节点的名称。
# <node2-name>  <节点2名> 它是To节点的名称。
# <label1-name> <LABEL1名称> 它是From节点的标签名称
# <label2-name> <LABEL2名称> 它是To节点的标签名称。
# <relationship-name> <关系名称> 它是一个关系的名称。
# <relationship-label-name> <相关标签名称> 它是一个关系的标签名称。

删除关系

只删除关系

MATCH (p:Person)-[r:APPRENTICE]-(h:Hierarchy) where p.name='蒋发' and h.title='第二代传承人'
DELETE r

删除节点和关系
DELETE <node1-name>,<node2-name>,<relationship-name>

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

与知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL - 太极拳传承谱系表相似的内容:

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

目录创建节点删除节点查询节点创建关系新节点无属性关系删除关系案例 -- 太极拳传承谱系表创建传承人创建师徒关系创建第N代传承人案例 -- 批量执行 看到后面的案例再实操作 删除数据库中以往的图 MATCH (n) DETACH DELETE n 创建节点 CREATE命令语法 Neo4j CQL“C

知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - Python 操作

数据基于: [知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL - 太极拳传承谱系表](https://www.cnblogs.com/vipsoft/p/17631347.html) 这是一个非常简单的web应用程序,它使用我们的Movie图形数据集来提供列

知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - Java SpringBoot 操作 Neo4j

上一篇使用了 CQL 实现了太极拳传承谱,这次使用JAVA SpringBoot 实现,只演示获取信息,源码连接在文章最后 三要素 在知识图谱中,通过三元组 集合的形式来描述事物之间的关系: - 实体:又叫作本体,指客观存在并可相互区别的事物,可以是具体的人、事、物,也可以是抽象的概念或联系,实体是

知识图谱(Knowledge Graph)- Neo4j 5.10.0 CentOS 安装

[知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装](https://www.cnblogs.com/vipsoft/p/17623086.html) [知识图谱(Knowledge Graph)- Neo4j 5.10.0 CentOS 安装](https

知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装

[知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装](https://www.cnblogs.com/vipsoft/p/17623086.html) [知识图谱(Knowledge Graph)- Neo4j 5.10.0 CentOS 安装](https

知识图谱(Knowledge Graph)- Neo4j 5.10.0 Desktop & GraphXR

下载地址:https://neo4j.com/download/ ## 安装 ![image](https://img2023.cnblogs.com/blog/80824/202308/80824-20230816104928898-1342667053.png) 下载时会产生激活码(保存下来)

知识图谱(Knowledge Graph)- Neo4j 5.10.0 Desktop & GraphXR 连接自建数据库

``` #输入查看数据库连接 neo4j$ :server status ``` ![image](https://img2023.cnblogs.com/blog/80824/202308/80824-20230816130548712-41133454.png) 添加 远程连接,输入连接地址 !

知识图谱(Knowledge Graph)根本概念

[TOC] 2012年5月17日,Google 正式提出了知识图谱(Knowledge Graph)的概念,其初衷是为了优化搜索引擎返回的结果,增强用户搜索质量及体验。 假设我们想知道 “王健林的儿子” 是谁,百度或谷歌一下,搜索引擎会准确返回王思聪的信息,说明搜索引擎理解了用户的意图,知道我们要找

知识图谱实体对齐:无监督和自监督的方法

我们在前面介绍的都是有监督的知识图谱对齐方法,它们都需要需要已经对齐好的实体做为种子(锚点),但是在实际场景下可能并没有那么多种子给我们使用。为了解决这个问题,有许多无监督/自监督的知识图谱对齐方法被提出。其中包括基于GAN的方法,基于对比学习的方法等。他们在不需要事先给定锚点的情况下将来自不同知识图谱实体embeddings映射到一个统一的空间。

Vector | Graph:蚂蚁首个开源Graph RAG框架设计解读

引入知识图谱技术后,传统RAG链路到Graph RAG链路会有什么样的变化,如何兼容RAG中的向量数据库(Vector Database)和图数据库(Graph Database)基座,以及蚂蚁的Graph RAG开源技术方案和未来优化方向。