Neo4j 应用案例——科研导图

1. 存在问题

目前,我国已经是科技大国,但是我国科研界也存在明显的痛点问题:

  • 重复科研问题
  • 科研资料搜索技术智能水平较低
  • 科研社交问题
  • 科研成果抄袭问题

Neo4j无疑是解决上上述提及的科研痛点问题的有力工具。

2. 创建科研导图示范案例

(1)功能:本案例用于描述研究人员、论文、关键词、学术期刊等之间的关系。
(2)执行程序。

create
(张教授:研究人员{姓名:"张教授"}),
(李老师:研究人员{姓名:"李老师"}),
(王老师:研究人员{姓名:"王老师"}),
(论文1:论文{论文名:'论文1'}),
(论文2:论文{论文名:'论文2'}),
(论文3:论文{论文名:'论文3'}),
(论文4:论文{论文名:'论文4'}),
(论文5:论文{论文名:'论文5'}),
(论文6:论文{论文名:'论文6'}),
(论文7:论文{论文名:'论文7'}),
(论文8:论文{论文名:'论文8'}),
(学术期刊1:学术期刊{刊名:'学术期刊1'}),
(学术期刊2:学术期刊{刊名:'学术期刊2'}),
(学术期刊3:学术期刊{刊名:'学术期刊3'}),
(关键词1_1:关键词{词名:'关键词1_1'}),
(关键词1_2:关键词{词名:'关键词1_2'}),
(关键词1_3:关键词{词名:'关键词1_3'}),
(关键词2_1:关键词{词名:'关键词2_1'}),
(关键词2_2:关键词{词名:'关键词2_2'}),
(关键词2_3:关键词{词名:'关键词2_3'}),
(关键词3_1:关键词{词名:'关键词3_1'}),
(关键词3_2:关键词{词名:'关键词3_2'}),
(关键词3_3:关键词{词名:'关键词3_3'}),
(张教授)-[:作者]->(论文1),
(张教授)-[:作者]->(论文2),
(张教授)-[:作者]->(论文3),
(张教授)-[:作者]->(论文4),
(张教授)-[:作者]->(论文5),
(张教授)-[:作者]->(论文6),
(张教授)-[:作者]->(论文7),
(张教授)-[:作者]->(论文8),
(李老师)-[:作者]->(论文1),
(李老师)-[:作者]->(论文2),
(王老师)-[:作者]->(论文5),
(王老师)-[:作者]->(论文6),
(论文1)-[:发表]->(学术期刊1),
(论文2)-[:发表]->(学术期刊1),
(论文3)-[:发表]->(学术期刊1),
(论文4)-[:发表]->(学术期刊2),
(论文5)-[:发表]->(学术期刊2),
(论文6)-[:发表]->(学术期刊2),
(论文7)-[:发表]->(学术期刊3),
(论文8)-[:发表]->(学术期刊3),

(论文1)-[:关键词]->(关键词1_1),
(论文1)-[:关键词]->(关键词1_2),
(论文1)-[:关键词]->(关键词1_3),
(论文2)-[:关键词]->(关键词2_1),
(论文2)-[:关键词]->(关键词2_2),
(论文2)-[:关键词]->(关键词2_3),
(论文3)-[:关键词]->(关键词2_3),
(论文4)-[:关键词]->(关键词1_2),
(论文5)-[:关键词]->(关键词3_1),
(论文5)-[:关键词]->(关键词3_2),
(论文5)-[:关键词]->(关键词3_3),
(论文6)-[:关键词]->(关键词2_1),
(论文7)-[:关键词]->(关键词3_1),
(论文8)-[:关键词]->(关键词3_2)
return *

(3)执行结果
在这里插入图片描述
(4)汇总计算三位作者所发表的文章数量。

执行下面程序:

match (p:研究人员)-[a:作者]->(论文) return p.姓名 as 作者姓名,
count(论文) as 发表论文数 order by 发表论文数 desc

程序执行结果如下图。
在这里插入图片描述

3. 文献搜索

(1)需求描述
科研文献检索是每个科研工作者在日常科研工作中常常需要面临的的问题,但是现存的检索系统往往采用全文检索,全文检索的好处是精度较高,可是也存在效率较低,并且可靠性关联度不高的问题。
如果使用Neo4j进行检索,不仅可以快速检索出匹配度最高的论文,还可以把关联度较高的论文也一同检索出来,极大地丰富了检索内容的多样性。
(2)功能:创建相似论文图谱。
(3)执行程序。

create
(论文1:论文图谱{论文名:'论文1'}),
(论文2:论文图谱{论文名:'论文2'}),
(论文3:论文图谱{论文名:'论文3'}),
(论文4:论文图谱{论文名:'论文4'}),
(论文5:论文图谱{论文名:'论文5'}),
(论文6:论文图谱{论文名:'论文6'}),
(论文7:论文图谱{论文名:'论文7'}),
(论文1)-[:相似]->(论文2),
(论文1)-[:相似]->(论文3),
(论文2)-[:相似]->(论文4),
(论文2)-[:相似]->(论文5),
(论文3)-[:相似]->(论文5),
(论文5)-[:相似]->(论文6),
(论文7)-[:相似]->(论文2),
(论文7)-[:相似]->(论文6)
return *

(4)执行结果
在这里插入图片描述
(5)找出论文1与论文6这两篇论文之间相似传递的路径。

执行程序:

match n = allshortestpaths((论文1:论文图谱{论文名:'论文1'})
-[*..6]->(论文6:论文图谱{论文名:'论文6'})) return n;

执行结果
在这里插入图片描述

4. 科研合作图谱

(1)需求描述
在科研导图的分析中还有一项重要的工作,那就是研究不同科研人员之间的合作和不同科研机构之间的合作。当某个科研人员或者某个科研机构有意向寻找合作伙伴时,合作图谱可以起到较大的辅助作用。
(2)功能:创建科研合作知识图谱。
(3)执行程序。

create
(作者1:论文作者{作者名:'作者1'}),
(作者2:论文作者{作者名:'作者2'}),
(作者3:论文作者{作者名:'作者3'}),
(作者4:论文作者{作者名:'作者4'}),
(作者5:论文作者{作者名:'作者5'}),
(作者6:论文作者{作者名:'作者6'}),
(作者1)-[:论文合作]->(作者2),
(作者1)-[:论文合作]->(作者3),
(作者2)-[:论文合作]->(作者4),
(作者2)-[:论文合作]->(作者5),
(作者3)-[:论文合作]->(作者5),
(作者5)-[:论文合作]->(作者6)
return *

(4)执行结果
在这里插入图片描述
(5)找到两位作者的最短路径。
执行程序:

match n =allshortestpaths((作者1:论文作者{作者名:'作者1'})
-[*..6]->(作者5:论文作者{作者名:'作者5'})) return n;

执行结果。
在这里插入图片描述

发布了36 篇原创文章 · 获赞 42 · 访问量 190万+

猜你喜欢

转载自blog.csdn.net/fufu_good/article/details/104592754