参考:https://blog.csdn.net/Eastmount/article/details/83268410
(一)Neo4j图数据库安装
可以从官方网站下载Neo4j对应的版本,包括网页版、桌面版。
官网地址:https://neo4j.com/download/
安装桌面版:
下载安装包,然后一直下一步,直到安装完成运行,初始化。
(二 )药材图谱构建
1 导入数据创建实体
1)点击“Project”=>“Add Graph”增加新的图形。
2)在弹出的新界面中点击“Create a Local Graph”按钮,创建一个本地的图形。
3) 输入创建图形的名字及密码,如“Graph1022”、“123456”,点击创建。
4) 在“Graph1022”中点击“Start”按钮开启图数据库服务器。
5) 点击“Manage”管理页面,接着点击“Open Browser”打开浏览器。
弹出如下所示界面,该界面中可以输入CQL语句编辑图数据库
(三) 导入数据创建关系
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个企业实体
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(药材)。
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)
结果如下图所示,可以看到企业之间交易关系。
(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)
结果如下图所示,可以看到企业药材之间关系。
(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)
运行结果如下图所示:
7.获取实体关系的顶层概念关系。
call db.schema
运行结果: