知识图谱和图数据库Neo4j

发布于:2025-06-12 ⋅ 阅读:(30) ⋅ 点赞:(0)

知识图谱概述

知识图谱(Knowledge Graph)是一种结构化的语义知识库,它以图形的方式组织和整合信息,使得数据之间的关系变得直观和易于理解。

知识图谱由节点(实体)和边(关系)组成。注意图数据库中,由于关系也具有属性,因此节点和关系都被视为实体

节点代表实物,如人、地点、物品等

边代表实体之间的关系,如“属于”、“创造”、“位于”等。

每个节点和边都可以带有属性,提供更详细的信息。

知识图谱的构建通常包括以下几个步骤

  • 数据抽取:从各种数据源中提取信息,如文本、数据库、网页等。
  • 实体识别:识别出数据中的关键实体。
  • 关系抽取:确定实体之间的关系。
  • 实体链接:将识别出的实体与已知的知识库中的实体进行链接。
  • 知识融合:整合来自不同源的知识,解决冲突和歧义。
  • 存储与查询:将构建好的知识图谱存储在图数据库中,并提供查询接口。

图数据库

图数据库(Graph Database)是一种用于存储和管理图形结构数据的数据库。

在图数据库中,数据结构的核心是节点(Node)、关系(Relationship)和属性(Property)。在此之上构成一个图,从图中还可以提取出子图。

Neo4j安装配置

Neo4j是目前最常使用的图数据库管理系统。它是一个高性能的NoSQL数据库

Neo4j使用Cypher作为查询语言

Neo4j依赖于Java环境,因此首先需要安装JDK

sudo apt update
sudo apt install openjdk-11-jdk
java -version

curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 5" | sudo tee -a /etc/apt/sources.list.d/neo4j.list
sudo apt update
sudo apt install neo4j

systemctl start neo4j

访问http://localhost:7474,默认用户名为neo4j,密码为neo4j

Neo4j的主要配置文件位于/etc/neo4j/neo4j.conf

默认情况下,Neo4j只监听localhost。若需远程访问,需修改以下配置

dbms.security.auth_enabled=true
dbms.default_listen_address=0.0.0.0
dbms.default_advertised_address=your-server-ip
Neo4j基本操作

操作可在http://localhost:7474UI上进行,也可用python的包操作(更方便)

create创建节点

通过CREATE创建一个节点
()代表一个节点,节点包括标示符和标签label
{}包含了属性如果想返回创建的数据,需要指定标示符,即return标示符;
创建多个节点数据,多个元素间用逗号或者用create分开

示例
1.创建一个无属性的节点
CREATE (f1:Fruit) 
RETURN f1

2.创建有属性的节点
CREATE (f2:Fruit {name: "apple", color: "green"}) 
RETURN f2

3.一次创造多个节点(多节点之间用create隔离)
CREATE (f3:Fruit {name: "apple", color: "yellow"})
CREATE (f4:Fruit {name: "banana", color: "yellow"})

4.创建一个有多个标签的节点
CREATE (f5:Fruit:OnSale {name: "orange"})

create创建节点关系

关系是有标签的,也是有有属性无属性两类

–> 表示一个有指向的关系
[] 能够添加标示符,属性,类型等信息
先用"match(标示符:标签)"匹配到才能创建关系

示例
1.创建无属性的指向关系
MATCH (f3:Fruit {name: "apple", color: "yellow"}), (f4:Fruit {name: "banana"})
CREATE (f3)-[:SameColor]->(f4)
# 删除该关系
# MATCH (f3:Fruit {name: "apple", color: "yellow"})-[r:SameColor]->(f4:Fruit {name: "banana"})
# DELETE r


2.创建有属性的关系
MATCH (f2:Fruit {name: "apple"}), (f3:Fruit {name: "apple"})
CREATE (f2)-[:rules{color:"DiffColor",kind:"SameKind"}]->(f3)

                                                            
3.创建新节点及关系
CREATE (f5:Fruit {name: "apple"})-[:价格 {价格差: "20r"}]->(f6:Fruit {name: "strawberry"})

删除一个节点

先创建一个节点
CREATE (f7:Fruit {name: "banana", color: "yellow"})

示例
1.通过name属性删除节点
MATCH (f:Fruit {name: "banana", color: "yellow"})
DELETE f
在有关系时使用下面语句
MATCH (f:Fruit {name: "banana", color: "yellow"})
DETACH DELETE f

2.通过id属性删除一个节点及其所有的关系
MATCH (f)
WHERE id(f) = 2
DETACH DELETE f

删除一个标签下的所有节点与关系

MATCH (f:Fruit)
WHERE f.color = 'green'
DETACH DELETE f

删除所有节点与关系

MATCH (n)
DETACH DELETE n

显示所有数据

MATCH (n) RETURN n	# 返回图数据库中所有的节点
MATCH (n)-[r]->(m) RETURN n, r, m	# 返回所有节点以及它们之间的关系

参考链接

https://www.oryoy.com/news/ubuntu-huan-jing-xia-neo4j-tu-shu-ju-ku-de-an-zhuang-yu-pei-zhi-zhi-nan.html
https://github.com/liuhuanyong/QASystemOnMedicalKG
https://blog.csdn.net/weixin_45922644/category_12909166.html