使用图进行数据建模
之前给大家提供过一种构建疫情知识图谱的思路,将病例与病例之间的联系、病例与行程轨迹之间的联系利用neo4j进行表示。上述思路大家可以参考我的博客:https://blog.csdn.net/petrichor316/article/details/123745787,不少同学反馈写的不错,思路清晰,也很明了,在这里一并谢谢各位咯!一同进步!
本篇博客主要介绍构建知识图谱的图查询构建的语言:Cypher语言
主要介绍create函数以及 match函数,本博客主要为简单的例子,后续会分享更为复杂的语句给大家
cypther语言的特性
为了各位能够简单直观的理解其中包含的几个元素,还是先给各位上图!
大家直观的能看到什么?
就我直观能看到的,首先蓝色的圆圈表示病例,粉色的圆圈表示地址。其次呢,就是带有方向的箭头,上面有两种,一种是病例和病例之间的表示病例之间的关系,另一种是病例和地址之间的,表示病例在什么地址干了什么事儿。那好,就直观所看到的,有两种元素:节点和联系。
那好,再给各位看一幅局部的图。
这张图呢,是点击158号病例之后所提示的,我们看到右侧,蓝色的里边写着“病例”,下边呢有他所属的地址、年龄、性别等。这个时候我们又看到了两种元素:标签(如:病例)、属性(如:地址、年龄、性别)。
那么,我们就从上边两幅图了解到一张图主要包含的有四个元素,他们有一下的几个特征,结合上边两张图来理解,就不是那么的生涩了。
- 带标签的属性图由节点、联系、属性和标签构成
- 节点上包含属性,同时每一个节点都能够包含一个或者多个标签
- 节点与节点之间用联系来连接,同时联系具有方向性,联系的方向和名字使得节点的结构富有语义化。
- 联系同节点一样也可以赋予属性,可以给图算法提供元数据,并能够赋予额外的语义(如特性和权重)
除此之外再给各位看一幅图,构建莎士比亚的关系图:
具体代码下载见:https://download.csdn.net/download/petrichor316/85358854
也可联系我所要代码哦~
cypher语言举例《特战荣耀》的人物联系
最近有一部超火的电视剧,叫做《特战荣耀》,不知道各位有没有看过,有不少女生被燕破岳(杨洋)迷的神魂颠倒,也有不少男生被郭笑笑(蒋璐霞)帅的五体投地。那么就用这部电视剧里的人物关系简单来介绍一下cypher语句的用法。比如说,我们想要描述燕破岳是一名士兵,被他的连长(李祥)和教导员(陈民涛)管理时,可以使用下边的语句:
create (燕破岳:士兵 {姓名:'燕破岳',演员:'杨洋',职衔:'士兵'})<-[:管理]-(李祥:领导 {姓名:'李祥',演员:'吴健',职衔:'连长'})-[:同级]->(陈民涛:领导 {姓名:'陈民涛',演员:'叶琪山',职衔:'教导员'})-[:`管理`]->(燕破岳)
代码拿去试试啊!如图所示:
接下来我们简要说明一下上述代码的含义:
- 每一个括号(*)里的都是一个节点,每一个[😗*]都是一个关系
- 分别用 -> 和 <- 表示箭头(关系)的方向
- 在括号里,第一个可以认为是这个节点的“代号”,{}前的为标签,{}里的为各种属性
- 属性中具体的需要加引号(英文状态下)
**注意:**冒号一定为英文格式的
这样是不是我们就能很好地理解在cypher的特性中所描述的四种元素:节点、联系、属性、标签?
每一种子句的用法
上边我们只是简要的介绍了create这一句法的使用方式,除此之外还有 match, return以及其他的子句,这里只做简单的叙述,真有需要时,那就直接找一个相关的例子往里套用即可啦!
match 函数
match子句是查询的核心,-> 和 <- 表示联系的方向。这句代码的含义为我要找b和c,那b和c是什么关系呢?
首先b是管理a的,而a的标签为一名士兵,并且姓名为燕破岳(当然这里输入其他的属性也可以),其次b和c是同级的关系。那么这样就可以返回b和c的关系,如图所示:
match (a:士兵 {姓名:'燕破岳'})<-[:管理]-(b)-[:同级]->(c) return b,c
match () [*1..5] ()
这一句话表示第一个括号表示的节点到第二个括号表示的节点可以有1~5个联系
return 函数
在上一个函数的例子中,最后为return b,c 这表示在给定的前提条件下,我们通过条件匹配到了b和c,并在最后返回b和c节点。
return ditinct asset
表示返回不同的标签为asset的值
下边的几个函数语句我们只作为简单介绍,在后续的博客有利用到会在着重强调
where 函数
提供过滤模式匹配结果的条件
create 和create unipue 函数
用来创建节点和联系
merge 函数
保证给出的模式在图中一定存在,要么复用已经存在的与断言匹配的节点和联系,要么创造新的节点
delete函数
删除节点、联系以及属性
match (n) detach delete n
我们通常用这一语句将所有的图像节点与联系进行删除
set 函数
用来设置属性值
foreach 函数
对每一个列表中的元素执行更新操作
union 函数
合并两个或更多查询的结果
with 函数
链式查询,前一个查询的结果作为后一个查询的条件
start 函数
ch 函数
对每一个列表中的元素执行更新操作
union 函数
合并两个或更多查询的结果
with 函数
链式查询,前一个查询的结果作为后一个查询的条件
start 函数
在图中指定一个或多个起始点,它可以是节点,也可以是联系
附本人邮箱:630317316@qq.com
如果有人需要我的具体代码,或者入门知识图谱的过程,也欢迎各位与我联系
欢迎各位加我qq一起探讨哦(qq:630317316)
如果大家觉着我提供了一种思路,请大家随意打赏!~~