哈喽大家好啊,我是Hydra。
虽然距离中秋放假还要熬过漫长的两天,不过也有个好消息,今天是《雷神4》上线Disney+流媒体的日子(也就是说我们稍后就可以网盘见了)~
了解北欧神话的小伙伴们应该知道,它的神话体系可以用一个字来形容,那就是『乱』!就像是雷神3中下面这张错综复杂的关系网,也只能算是其中的一支半节。
而我们在上一篇文章中,介绍了关于知识图谱的一些基本理论知识,俗话说的好,光说不练假把式,今天我们就来看看,如何在springboot项目中,实现并呈现这张雷神中复杂的人物关系图谱。
本文将通过下面几个主要模块,构建自然界中实体间的联系,实现知识图谱描述:
-
图数据库neo4j安装
-
简单CQL入门
-
springboot整合neo4j
-
文本SPO抽取
-
动态构建知识图谱
Neo4j安装
知识图谱的底层依赖于关键的图数据库,在这里我们选择Neo4j,它是一款高性能的 nosql 图形数据库,能够将结构化的数据存储在图而不是表中。
首先进行安装,打开官网下载Neo4j的安装包,下载免费的community社区版就可以,地址放在下面:
https://neo4j.com/download/other-releases/
需要注意的是,neo4j 4.x以上的版本都需要依赖 jdk11环境,所以如果运行环境是jdk8的话,那么还是老老实实下载3.x版本就行,下载解压完成后,在bin
目录下通过命令启动:
neo4j console
启动后在浏览器访问安装服务器的7474端口,就可以打开neo4j的控制台页面:
通过左侧的导航栏,我们依次可以查看存储的数据、一些基础查询的示例以及一些帮助说明。
而顶部带有$
符号的输入框,可以用来输入neo4j特有的CQL查询语句并执行,具体的语法我们放在下面介绍。
简单CQL入门
就像我们平常使用关系型数据库中的SQL语句一样,neo4j中可以使用Cypher查询语言(CQL)进行图形数据库的查询,我们简单来看一下增删改查的用法。
添加节点
在CQL中,可以通过CREATE
命令去创建一个节点,创建不含有属性节点的语法如下:
CREATE (<node-name>:<label-name>)
在CREATE
语句中,包含两个基础元素,节点名称node-name
和标签名称lable-name
。标签名称相当于关系型数据库中的表名,而节点名称则代指这一条数据。
以下面的CREATE
语句为例,就相当于在Person
这张表中创建一条没有属性的空数据。
CREATE (索尔:Person)
而创建包含属性的节点时,可以在标签名称后面追加一个描绘属性的json
字符串:
CREATE (
<node-name>:<label-name>
{
<key1>:<value1>,
…
<keyN>:<valueN>
}
)
用下面的语句创建一个包含属性的节点:
CREATE (洛基:Person {name:"洛基",title:"诡计之神"})
查询节点
在创建完节点后,我们就可以使用MATCH
匹配命令查询已存在的节点及属性的数据,命令的格式如下:
MATCH (<node-name>:<label-name>)
通常,MATCH
命令在后面配合RETURN
、DELETE
等命令使用,执行具体的返回或删除等操作。
执行下面的命令:
MATCH (p:Person) RETURN p
查看可视化的显示结果:
<