节点:表示一个实体记录,就像关系数据库当中一条记录,一个节点包含多个属性和标签
关系:关系用于将节点关联起来构成图,关系也称为图论的边
属性:节点和关系都可以有多个属性,属性是由键值对组成的,就像JAVA中的哈希
标签:标签指示一组拥有相同属性的节点,但不强制要求相同,一个节点可以有多个标签
路径:图中任意两个节点都存在由关系组成的路径,路径有长短之分
Cypher查询语言
Cypher是一种声明式图数据库查询语言,类似关系数据库当中的SQL,Cypher设计借鉴了其他如SQL、python语言惯用做法
MATCH:匹配图模式
WHERE:过滤条件
RETURN定义返回的结果
基本语法:
增(CREATE)
删(DELETE)
改(SET)
查(MATCH)
函数
With
例子:
最近《延禧攻略》比较火,以此为例,将剧中的部分任务进行简单的构建人物图谱
1、创建人物节点:
create(:yanxi_gonglve{name:"魏璎珞"})
运行之后的结果如下所示:
按照上述的方式,依次建立以下的节点:
create(:yanxi_gonglve{name:"乾隆"})
create(:yanxi_gonglve{name:"富察皇后"})
create(:yanxi_gonglve{name:"高贵妃"})
create(:yanxi_gonglve{name:"娴妃"}),(:yanxi_gonglve{name:"纯妃"})
create(:yanxi_gonglve{name:"傅恒"}),(:yanxi_gonglve{name:"海兰察"})
create(:yanxi_gonglve{name:"尔晴"}),(:yanxi_gonglve{name:"明玉"})
结果如下所示:
这样的一个一个的点之间是没有关系的,要想让这些点之间有联系,需要对两两之间的关系进行建立
2、创建人物之间的关系
match(a:yanxi_gonglve{name:"魏璎珞"})match(b:yanxi_gonglve{name:"乾隆"})create(a)-[r:令妃]->(b)
运行的结果如下所示:
按照上述的方式,人物之间所存在的关系进行建立:
match(a:yanxi_gonglve{name:"魏璎珞"})match(b:yanxi_gonglve{name:"富察皇后"})create(a)-[r:主仆]->(b)
match(a:yanxi_gonglve{name:"魏璎珞"})match(b:yanxi_gonglve{name:"尔晴"})create(a)-[r:生恨]->(b)
match(a:yanxi_gonglve{name:"娴妃"})match(b:yanxi_gonglve{name:"魏璎珞"})create(a)-[r:暗算]->(b)
match(a:yanxi_gonglve{name:"娴妃"})match(b:yanxi_gonglve{name:"乾隆"})create(a)-[r:娴妃]->(b)
match(a:yanxi_gonglve{name:"娴妃"})match(b:yanxi_gonglve{name:"纯妃"})create(a)-[r:利用]->(b)
match(a:yanxi_gonglve{name:"纯妃"})match(b:yanxi_gonglve{name:"魏璎珞"})create (a)-[r:生恨]->(b)
match(a:yanxi_gonglve{name:"纯妃"})match(b:yanxi_gonglve{name:"傅恒"})create (a)-[r:喜欢]->(b)
match(a:yanxi_gonglve{name:"海兰察"})match(b:yanxi_gonglve{name:"傅恒"})create (a)-[r:同侍卫]->(b)
match(a:yanxi_gonglve{name:"尔晴"})match(b:yanxi_gonglve{name:"傅恒"})create (a)-[r:嫁入]->(b)
match(a:yanxi_gonglve{name:"富察皇后"})match(b:yanxi_gonglve{name:"傅恒"})create (b)-[r:姐姐]->(a)
match(a:yanxi_gonglve{name:"富察皇后"})match(b:yanxi_gonglve{name:"明玉"})create (a)-[r:宫女]->(b)
match(a:yanxi_gonglve{name:"富察皇后"})match(b:yanxi_gonglve{name:"尔晴"})create (a)-[r:大宫女]->(b)
match(a:yanxi_gonglve{name:"傅恒"})match(b:yanxi_gonglve{name:"魏璎珞"})create (a)-[r:喜欢]->(b)
match(a:yanxi_gonglve{name:"高贵妃"})match(b:yanxi_gonglve{name:"富察皇后"})create (a)-[r:暗算]->(b)
match(a:yanxi_gonglve{name:"高贵妃"})match(b:yanxi_gonglve{name:"乾隆"})create (a)-[r:贵妃]->(b)
match(a:yanxi_gonglve{name:"乾隆"})match(b:yanxi_gonglve{name:"富察皇后"})create (a)-[r:皇后]->(b)
match(a:yanxi_gonglve{name:"乾隆"})match(b:yanxi_gonglve{name:"富察皇后"})create (a)-[r:皇后]->(b)
结果如下所示:
在工具的左侧部分会增加一些“关系”,具体如下图所示:
涉及到的Cyper查询语言如下所示:
若在有关系的节点上只删除节点则会报错,因此在删除节点的时候,将节点上的所有关系也进行删除
后续会继续更细有关于知识图谱的内容,有同道者,可以互相交流哦