基于Neo4j搭建图谱可视化应用(一)

前言


基于实验室爬取的专利数据搭建了一个基于Neo4j图数据库的可视化小应用,本节先叙述数据来源以及数据结构,到图数据库的搭建。

一、产生初始化数据

数据结构

1.节点

论文:paper_id,authors, name,单位(unit),年份,期刊,关键词,领域,地区

专利:patent_id, name, 申请人(单位),发明人,申请时间,公布时间,领域,类型,地区

项目:project_id,authors, name,单位(unit),立项年份,中文关键词,领域,地区(省份代号),类型

人才:expert_id, 人名,职称,职位,单位,学历,云词,地区,邮箱,电话,毕业院校,领域

单位:单位id,地区,单位名称,单位类型,企业社会统一信用码,省份,市,区

2.关系

​ 论文—->人才(作者)
​ 人才—->论文(发表)
​ 论文—->单位(归属)

​ 专利—->人才(发明人)
​ 人才—->专利(申请)
​ 专利—->单位(申请人)
​ 单位—->专利(申请)

​ 项目—->人才(负责人)
​ 人才—->项目(承担)
​ 单位—->项目(承担)

​ 人才—->单位(工作)

3.总结

数据结构为5种节点以及11种关系。

数据格式

专家表

node_id: ID name title position unit degree email telephone school research_field :LABEL
757756fe-c2d1-404e-9cb5-7dd987225095 兰洪亮 国家空域技术重点实验室 Expert
75775a62-b236-4068-a22d-a4b74f66d713 李树栋 国防科技大学 Expert
75775c72-ed54-4ae3-828a-0cb981297efd 曹东 中国大唐集团环境技术有限公司 Expert

其中node_id:ID和:LABEL是很重要的两个标签。

node_id:ID表示的是记录的唯一标识,每条记录要求唯一,且在关系表中通过ID来关联节点。

:LABEL表示的是表的名称

论文表

node_id:ID name authors unit year journal_name keywords subject_code area_code :LABEL
0188eaa1-1a28-4154-b904-e00140bf0da5 高斯贝尔GD-6020数字机顶盒维修 温海波;张艳;赵文松 辽宁省灯塔广电中心 2017 数码世界 电子信息 21 Paper
0188ecee-fabf-11e6-b478-005056b3f30e 2015—2016财政年度上半年日本主要粉末冶金企业产品销售呈增长态势 孙世杰 2016 粉末冶金工业 机械电子与制造 99 Paper

专利表

node_id:ID name applicant inventors application_date publication_date subject_code area_code patent_type :LABEL
02a8166e-b7a8-11e6-af90-005056b3f30e 一种公路警示限高杆 不公告发明人 2013/12/14 2014/3/26 机械电子与制造 37 发明专利 Patent
02a81712-b7aa-11e6-af90-005056b3f30e 低层建筑外墙的清洗设备 天津悦辰清洗设备科技有限公司 杨正海 2011/9/8 2012/4/25 其他 12 实用新型 Patent

项目表

node_id:ID name member unit year keywords_ch area_code project_type :LABEL
00002051-f413-4908-a4a9-87b76519b398 矢量数学形态学理论及其在高维数据处理中的应用 雷涛 兰州交通大学 2012 数学形态学;矢量排序;模糊词典编纂顺序;高维数据;对偶性 62 国家自然科学基金 Project
00007cd8-a4da-40b7-a818-52db17a92e16 TNF-α诱导PDIP1基因转录的调控机制 周建林 湖南师范大学 2005 PDIP1;TNF-α;转录调控 国家自然科学基金 Project

单位表

node_id:ID unit area_code type_code CreditCode area_level1 area_level2 area_level3 :LABEL
1 龙岩学院 35 高校 福建 Unit
2 齐齐哈尔高等师范专科学校 23 高校 黑龙江 Unit

专家论文表

:START_ID :END_ID :TYPE
c69d90aa-f4f0-4054-bde3-83c6723da0ec 30257381-fa8a-11e6-b478-005056b3f30e 发表
739d8e9d-42ed-492f-9002-b64ef35e058e 30257381-fa8a-11e6-b478-005056b3f30e 发表

专家专利表

:START_ID :END_ID :TYPE
000000ef-6d13-4eaf-8361-9ff1a0c40f53 7fccd160-b7aa-11e6-af90-005056b3f30e 申请
00000884-a9f3-4993-8365-f892d43daa8b 12aa4838-b7ab-11e6-af90-005056b3f30e 申请

专家项目表

:START_ID :END_ID :TYPE
bfdae5fe-0e63-4a8f-890b-c258aa1cfb1f 944b8083-829a-42c8-87ef-07946de274bc 承担
bfdae5fe-0e63-4a8f-890b-c258aa1cfb1f e3959c3a-fb37-47c2-b8a6-8aff716d6e04 承担

专家单位表

:START_ID :END_ID :TYPE
757756fe-c2d1-404e-9cb5-7dd987225095 58816 工作
75775a62-b236-4068-a22d-a4b74f66d713 33504 工作

论文专家表

:START_ID :END_ID :TYPE
30257381-fa8a-11e6-b478-005056b3f30e c69d90aa-f4f0-4054-bde3-83c6723da0ec 作者
30257381-fa8a-11e6-b478-005056b3f30e 739d8e9d-42ed-492f-9002-b64ef35e058e 作者

论文单位表

:START_ID :END_ID :TYPE
0188f08e-0ca3-11e7-b478-005056b3f30e 5145 归属
0188f2b5-9868-4261-a28f-04c20bdf27e6 2487 归属

专利专家表

:START_ID :END_ID :TYPE
7fccd160-b7aa-11e6-af90-005056b3f30e 000000ef-6d13-4eaf-8361-9ff1a0c40f53 发明人
12aa4838-b7ab-11e6-af90-005056b3f30e 00000884-a9f3-4993-8365-f892d43daa8b 发明人

专利单位表

:START_ID :END_ID :TYPE
02a81712-b7aa-11e6-af90-005056b3f30e 109130 申请人
02a8193e-b7aa-11e6-af90-005056b3f30e 109131 申请人

项目专家表

:START_ID :END_ID :TYPE
944b8083-829a-42c8-87ef-07946de274bc bfdae5fe-0e63-4a8f-890b-c258aa1cfb1f 负责人
e3959c3a-fb37-47c2-b8a6-8aff716d6e04 bfdae5fe-0e63-4a8f-890b-c258aa1cfb1f 负责人

单位专利表

:START_ID :END_ID :TYPE
109130 02a81712-b7aa-11e6-af90-005056b3f30e 申请
109131 02a8193e-b7aa-11e6-af90-005056b3f30e 申请

单位项目表

:START_ID :END_ID :TYPE
2559 00002051-f413-4908-a4a9-87b76519b398 承担
862 00007cd8-a4da-40b7-a818-52db17a92e16 承担

好了,终于列举完了所有的节点表以及关系表。

导入Neo4j数据库中的数据格式为csv格式的文件,这边我通过python对数据进行处理。主要用到了python中的两个包。一个是MySQLdb,另外一个是csv。

1
2
import MySQLdb
import csv

二、数据入库

我这边是将Neo4j安装在linux服务器下,Neo4j的版本为3.3.3版本,可以访问我的github进行下载。安装完neo4j后,进入到neo4j的bin目录,输入如下命令。其中,neo4j_data_new为存放数据的文件夹目录。

GitHub地址: https://github.com/hqf1996/Neo4j3.3.3-.git

1
[root@amdnode8 bin]# ./neo4j-admin import --database=graph.db --nodes /neo4j_data_new/paper.csv --nodes /neo4j_data_new/patent.csv --nodes /neo4j_data_new/project.csv --nodes /neo4j_data_new/unit.csv --nodes /neo4j_data_new/expert.csv --relationships /neo4j_data_new/UnitToPatent2.csv --relationships /neo4j_data_new/ExpertToUnit2.csv --relationships /neo4j_data_new/PatentToUnit2.csv --relationships /neo4j_data_new/UnitToProject2.csv --relationships /neo4j_data_new/ExpertToProject2.csv --relationships /neo4j_data_new/ProjectToExpert2.csv --relationships /neo4j_data_new/ExpertToPatent2.csv --relationships /neo4j_data_new/PatentToExpert2.csv --relationships /neo4j_data_new/PaperToUnit2.csv --relationships /neo4j_data_new/ExpertToPaper2.csv --relationships /neo4j_data_new/PaperToExpert2.csv

执行一段时间后,会生成graph.db的数据库文件。此时,重启数据库即可

1
./neo4j restart

此时,访问7474端口就可以查看新创建的图数据库了。

我们试着去写一条查询语句访问一下