Neo4j简介
图数据库是 NoSQL(非关系型数据库)的一种,它应用图形数据结构的特点(节点、属性和边)存储数据实体和相互之间的关系信息。
Neo4j 是当前较为主流和先进的原生图数据库之一,提供原生的图数据存储、检索和处理。支持ACID、集群、备份和故障转移,具有较高的可用性和稳定性;它具备非常好的直观性,通过图形化的界面表示节点和关系;同时它具备较高的可扩展性,能够承载上亿的节点、关系和属性,通过 REST 接口或者面向对象的 JAVA API进行访问。
基本概念
- 节点。对象实例,带有属性
- 关系。相当于图里的边,有向并带有属性
- 属性。key-value对
本文所用数据集介绍
39健康网。包括15项信息,其中7类实体,约3.7万实体,21万实体关系。
- 实体信息
- diseases 疾病
- aliases 别名
- symptoms 症状
- parts 部位
- departments 科室
- complications 并发症
- drugs 药品
- 实体关系
- disease_to_symptom 疾病与症状关系
- disease_to_alias 疾病与别名关系
- diseases_to_part 疾病与部位关系
- disease_to_department 疾病与科室关系
- disease_to_complication 疾病与并发症关系
- disease_to_drug 疾病与药品关系
代码解读
主体类 MedicalGraph 介绍
class MedicalGraph:
def __init__(self):
pass
# 读取文件,获得实体,实体关系
def read_file(self):
pass
# 创建节点
def create_node(self, label, nodes):
pass
# 创建疾病节点的属性
def create_diseases_nodes(self, disease_info):
pass
# 创建知识图谱实体
def create_graphNodes(self):
pass
# 创建实体关系边
def create_graphRels(self):
pass
# 创建实体关系边
def create_relationship(self, start_node, end_node, edges, rel_type, rel_name):
pass
运行结果图
在neo4j中,我们可以看到自己建立好的node和relationship
更多效果图如下: