[知识图谱]-Neo4j图数据库安装及药材图谱实现

参考:https://blog.csdn.net/Eastmount/article/details/83268410

(一)Neo4j图数据库安装

可以从官方网站下载Neo4j对应的版本,包括网页版、桌面版。

官网地址:https://neo4j.com/download/

安装桌面版:

下载安装包,然后一直下一步,直到安装完成运行,初始化。

(二 )药材图谱构建

1 导入数据创建实体

1)点击“Project”=>“Add Graph”增加新的图形。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第1张图片

2)在弹出的新界面中点击“Create a Local Graph”按钮,创建一个本地的图形。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第2张图片

3) 输入创建图形的名字及密码,如“Graph1022”、“123456”,点击创建。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第3张图片

4) 在“Graph1022”中点击“Start”按钮开启图数据库服务器。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第4张图片

5) 点击“Manage”管理页面,接着点击“Open Browser”打开浏览器。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第5张图片

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第6张图片

弹出如下所示界面,该界面中可以输入CQL语句编辑图数据库

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第7张图片

(三) 导入数据创建关系

1.假设该药材的供应链如下图所示,现在需要建立对应的简单图谱。

2.需要导入的实体数据主要有两类,企业类、药材类。如下所示:

(1) 企业 entity-01.csv

id	name	label
1	威门药业	企业
2	东莞焱兴实业	企业
3	银川塞外杞香	企业
4	安徽亳州药业	企业
5	抚松泓宇特产	企业
6	格尔木源鑫堂	企业
7	亳州一阳药业	企业
8	成都德音电商	企业
9	康美中药材	企业
10	亳州昌盛鑫参茸	企业
11	郑州伟丰生物	企业
12	山东大凯生物	企业

(2) 药材 entity-02.csv

id	name	label
13	北沙参	药材
14	枸杞子	药材
15	麦冬	药材
16	川楝子	药材
17	当归	药材
18	地黄	药材
19	桂枝	药材
20	人参	药材
21	党参	药材
22	白芷	药材
23	羌活	药材
24	细辛	药材
25	防风	药材
26	荆芥	药材
27	薄荷	药材
28	甘草	药材
29	乳糖	药材
30	糊精	药材

3.接着将需要导入的csv文件放置在该数据库的import文件夹下,然后执行如下语句。

LOAD CSV WITH HEADERS  FROM "file:///entity-01.csv" AS line
MERGE (p:Enterprise{id:line.id,name:line.name})

代码功能:载入CSV文件从import文件夹中,AS line表示按行读取文件内容,包括两个值:id 和 name,抽象的实体概念名字为Enterprise(企业)。

4.插入实体成功之后,执行下面语句显示所插入的实体。

match(n) return n

点击运行之后可以看到插入的12个企业实体

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第8张图片

5.执行如下语句插入30个药材实体。

LOAD CSV WITH HEADERS  FROM "file:///entity-02.csv" AS line
MERGE (p:Medicinal{id:line.id,name:line.name})

代码功能:载入CSV文件从import文件夹中,AS line表示按行读取文件内容,包括两个值:id 和 name,抽象的实体概念名字为Medicinal(药材)。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第9张图片

6.接着插入关系,包括三种:

(1) rela-11.csv:企业与企业的关系,企业买卖交易

from_id	pro1	pro2	pro3	pro4	pro5	pro6	pro7	to_id
1	交易	北沙参	威门药业股份有限公司	东莞市焱兴实业发展有限公司	936	10	9360	2
1	交易	枸杞子	威门药业股份有限公司	银川塞外杞香科贸有限公司	159	6	954	3
1	交易	麦冬	威门药业股份有限公司	安徽亳州药业集团	938	9	8442	4
1	交易	川楝子	威门药业股份有限公司	安徽亳州药业集团	767	4	3068	4
1	交易	当归	威门药业股份有限公司	安徽亳州药业集团	585	2	1170	4
1	交易	地黄	威门药业股份有限公司	安徽亳州药业集团	575	2	1150	4
1	交易	桂枝	威门药业股份有限公司	安徽亳州药业集团	787	7	5509	4
1	交易	人参	威门药业股份有限公司	抚松县泓宇特产有限公司	488	7	3416	5
1	交易	党参	威门药业股份有限公司	格尔木源鑫堂生物科技有限公司	861	1	861	6
1	交易	白芷	威门药业股份有限公司	亳州市一阳药业销售有限公司	282	3	846	7
1	交易	羌活	威门药业股份有限公司	亳州市一阳药业销售有限公司	853	1	853	7
1	交易	细辛	威门药业股份有限公司	亳州市一阳药业销售有限公司	560	3	1680	7
1	交易	防风	威门药业股份有限公司	成都德音电子商务有限公司	626	3	1878	8
1	交易	荆芥	威门药业股份有限公司	成都德音电子商务有限公司	62	3	186	8
1	交易	薄荷	威门药业股份有限公司	枣庄市台儿庄区康美中药材种植专业合作社	445	1	445	9
1	交易	甘草	威门药业股份有限公司	亳州市昌盛鑫参茸有限责任公司	426	5	2130	10
1	交易	乳糖	威门药业股份有限公司	郑州市伟丰生物科技有限公司	484	1	484	11
1	交易	糊精	威门药业股份有限公司	山东大凯生物科技有限公司	249	2	498	12

CQL代码如下,需要注意 from_id(关系起始) 和 to_id(关系介绍),包含的属性需要和CSV表格一致。

LOAD CSV WITH HEADERS FROM "file:///rela-11.csv" AS line
match (from:Enterprise{id:line.from_id}),(to:Enterprise{id:line.to_id})
merge (from)-[r:rel{pro1:line.pro1,pro2:line.pro2,pro3:line.pro3,pro4:line.pro4,pro5:line.pro5,pro6:line.pro6,pro7:line.pro7}]->(to)

结果如下图所示,可以看到企业之间交易关系。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第10张图片

(2) rela-12.csv:企业与药品的关系,威门药业购入药品。

from_id	pro1	pro2	pro3	pro4	to_id
1	买入	药品	威门药业股份有限公司	东莞市焱兴实业发展有限公司	13
1	买入	药品	威门药业股份有限公司	银川塞外杞香科贸有限公司	14
1	买入	药品	威门药业股份有限公司	安徽亳州药业集团	15
1	买入	药品	威门药业股份有限公司	安徽亳州药业集团	16
1	买入	药品	威门药业股份有限公司	安徽亳州药业集团	17
1	买入	药品	威门药业股份有限公司	安徽亳州药业集团	18
1	买入	药品	威门药业股份有限公司	安徽亳州药业集团	19
1	买入	药品	威门药业股份有限公司	抚松县泓宇特产有限公司	20
1	买入	药品	威门药业股份有限公司	格尔木源鑫堂生物科技有限公司	21
1	买入	药品	威门药业股份有限公司	亳州市一阳药业销售有限公司	22
1	买入	药品	威门药业股份有限公司	亳州市一阳药业销售有限公司	23
1	买入	药品	威门药业股份有限公司	亳州市一阳药业销售有限公司	24
1	买入	药品	威门药业股份有限公司	成都德音电子商务有限公司	25
1	买入	药品	威门药业股份有限公司	成都德音电子商务有限公司	26
1	买入	药品	威门药业股份有限公司	枣庄市台儿庄区康美中药材种植专业合作社	27
1	买入	药品	威门药业股份有限公司	亳州市昌盛鑫参茸有限责任公司	28
1	买入	药品	威门药业股份有限公司	郑州市伟丰生物科技有限公司	29
1	买入	药品	威门药业股份有限公司	山东大凯生物科技有限公司	30

CQL代码如下:

LOAD CSV WITH HEADERS FROM "file:///rela-12.csv" AS line
match (from:Enterprise{id:line.from_id}),(to:Medicinal{id:line.to_id})
merge (from)-[r:rel{pro1:line.pro1,pro2:line.pro2,pro3:line.pro3,pro4:line.pro4}]->(to)

结果如下图所示,可以看到企业药材之间关系。

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第11张图片

(3) rela-21.csv:企业与药品的关系,from_id企业卖出to_id药品。

from_id	pro1	pro2	to_id
2	药品	卖出	13
3	药品	卖出	14
4	药品	卖出	15
4	药品	卖出	16
4	药品	卖出	17
4	药品	卖出	18
4	药品	卖出	19
5	药品	卖出	20
6	药品	卖出	21
7	药品	卖出	22
7	药品	卖出	23
7	药品	卖出	24
8	药品	卖出	25
8	药品	卖出	26
9	药品	卖出	27
10	药品	卖出	28
11	药品	卖出	29
12	药品	卖出	30

CQL代码如下:

LOAD CSV WITH HEADERS FROM "file:///rela-21.csv" AS line
match (from:Enterprise{id:line.from_id}),(to:Medicinal{id:line.to_id})
merge (from)-[r:卖出{pro1:line.pro1,pro2:line.pro2}]->(to)

运行结果如下图所示:

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第12张图片

7.获取实体关系的顶层概念关系。

call db.schema

运行结果:

[知识图谱]-Neo4j图数据库安装及药材图谱实现_第13张图片

你可能感兴趣的:(知识图谱)