欢迎来到xiaoyufuture的博客

时钟canvas
疑无路,柳暗花明又一村。山重水复
切换亮暗主题

知识图谱入门篇(一)

参考资料/视频👇

知识图谱的应用

1. 搜索引擎
2. 智能问答
3. 推荐系统
4. 语义理解
5. 决策分析
6. 智慧物联
7. ......

知识图谱构建流程

1. 数据获取
2. 实体识别
3. 关系抽取
4. 数据存储
5. 图谱应用

Neo4j 的使用(以股票知识图谱为例)

股票数据

公司代码 公司简称 上市日期
600298 安琪酵母 2000-08-18
600036 招商银行 2002-04-09
300496 中科创达 2015-12-10
000988 华工科技 2000-06-08
002736 国信证券 2014-12-29

建立不同类型的节点

🔔创建节点的 Cypher 命令

create (Variable:Lable{Key1:Value1,Key2:Value2}) return Variable

—— 建立股票节点

# 【1】------删除数据库中以往的图,确保一个空白的环境进行操作------
# MATCH是匹配操作,而小括号()代表一个节点node(可理解为括号类似一个圆形),括号里面的n为标识符
match(n) detach delete n
# 【2-1】------创建一个股票节点------
# CREATE是创建操作,Stock是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典
# 这条语句的含义就是创建一个标签为Stock的节点,该节点具有name属性,属性值是'安琪酵母'
create (n:Stock{name:'安琪酵母',code:'600298',launchdate:date("2000-08-18")}) return n
# 【2-2】------创建多个股票节点------
# 在Cypher语言中,当想要创建多个节点时,每个节点都需要一个唯一的变量名
create (a:Stock{name:'招商银行',code:'600036',launchDate:date("2002-04-09")}),
(b:Stock{name:'中科创达',code:'300496',launchDate:date("2015-12-10")}),
(c:Stock{name:'华工科技',code:'000988',launchDate:date("2000-06-08")}),
(d:Stock{name:'国信证券',code:'002736',launchDate:date("2014-12-29")})

图1 创建一个股票节点

图2 同时创建多个股票节点

——建立证券交易所节点

create (Variable:Lable{Key1:Value1,Key2:Value2}) return Variable
# 【3】------创建多个证券交易所节点------
create (n:SecuritiesExchange{name:'上海证券交易所'}),
(:SecuritiesExchange{name:'深圳证券交易所'}) return n

图3 同时创建多个证券交易所节点

——建立省市地方名称节点

create (Variable:Lable{Key1:Value1,Key2:Value2}) return Variable
# 【4】------创建多个省市地方节点------
create (n:Province{name:'湖北'}),(:Province{name:'北京'}),(:Province{name:'广东'}) return n

图4 同时创建多个省市地方节点

建立节点之间的关系

——建立股票节点和证券交易所节点的关系

# 【5】------创建股票节点'安琪酵母'和证券交易所节点'上海证券交易所'的关系------
match (a:Stock),(b:SecuritiesExchange)
where a.name='安琪酵母' and b.name='上海证券交易所'
create (a)-[r:Exchange]->(b) return r

图5 创建股票节点和证券交易所节点间的关系

——建立股票节点和省市名称节点的关系

# 【6】------创建股票节点'安琪酵母'和省市名称节点'湖北'的关系------
match (a:Stock),(b:Province)
where a.name='安琪酵母' and b.name='湖北'
create (a)-[r:Area]->(b) return r

图6 创建股票节点和省市名称节点间的关系

查询节点和关系

—— 查询某个股票的节点

# 【7】------查询股票节点'安琪酵母'------
match (a:Stock)
where a.name='安琪酵母'
return a

图7 查询股票节点

——查询某个标签的所有节点

# 【8】------查询股票标签的所有节点------
match (a:Stock)
return a

图8 查询某标签的所有节点

——查询两个节点之间的关系

# 【9】------查询股票节点'安琪酵母'和省市名称节点'湖北'间的关系------
match (:Stock {name:'安琪酵母'})-[r]->(:Province{name:'湖北'})
return type(r)

图9 查询节点之间的关系

——通过函数type获取关系的类型

# 【10】------通过type函数获取股票节点'安琪酵母'所有关系的类型------
match (:Stock {name:'安琪酵母'})-[r]->()
return type(r)

图10 查询某节点所有关系的类型

删除节点和关系

—— 删除股票的节点

# 【11】------删除股票节点'中科创达'------
# 若该节点存在关系,则先删除关系,再删除节点
match (a:Stock)
where a.name='中科创达'
delete a

图11 删除股票节点'中科创达'

—— 删除某个标签的节点

# 【12-1】------删除标签'股票'节点------
match (a:Stock)
delete a
# 【12-2】------删除所有节点------
match (a)
delete a

图12 删除标签节点

—— 删除两个节点的关系

# 【13】------删除节点'安琪酵母'和节点'湖北'之间的关系------
match (:Stock{name:'安琪酵母'})-[r]->(:Province{name:'湖北'})
delete r

图13 删除两节点关系前(左)删除两节点关系后(右)

—— 删除全部关系

#【14】------删除节点'安琪酵母'的所有关系------
match (:Stock{name:'安琪酵母'})-[r]->()
delete r

图14 删除节点所有关系

更新图形

🔔更新图形的 Cypher 命令

set 子句用于更新节点的标签和实体的属性
remove 子句用于删除实体的属性和节点的标签

—— 增加节点属性

#【15】------为股票'安琪酵母'及创建新属性:名称简写------
match (a:Stock)
where a.name='安琪酵母'
set a.abbreviation='AQJM'
return a

图15 增加节点属性

—— 删除节点属性

#【16】------删除股票'安琪酵母'的某一属性------
match (a:Stock)
where a.name='安琪酵母'
remove a.abbreviation

图16 删除节点属性

posted on   xiaoyufuture  阅读(74)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

目录导航