Neo4j的Cypher查询语句详解(入门级)

最近翻了很多Neo4j查询语句,但一般讲解如何使用的比较多,讲语法理解的比较少。因此,结合自己自建的知识图谱,对匹配语句的语法做一个简单的解释。

一、知识图谱示例(图书)

如图:


  1. 图中的知识图谱是两本图书的部分相关属性信息,由若干三元组构成。
  2. 其中图谱中心香槟色的实体”9787111..."以及左下角香槟色的实体”9787111..."是图书的ISBN号,代表了两本图书,看起来是一样的,实际上是因为圆圈太小了没完全展示。中心的那个实际是: 9787111346883,左下角的那个实际是:9787111475637

 

二、查询内容及代码详解

我们要查询作者是“詹友刚”,并且所属学科为“材料加工工程”的书籍,在上图里可以发现上述两本图书都是满足的,查询语句示例如下:

MATCH  (Author:`作者`{name: '詹友刚' })<-[:被创作]-(Book:ISBN)
-[:所属学科]->(Sub:`学科分类`{name:'材料加工工程'})
RETURN Book

代码详解:

1.MATCH:关键字固定写法,意即“匹配”

2.RETURN Book:返回图书Book

 注意: 代码中(Book:ISBN),表示用Book代替ISBN,因此返回的是图书的ISBN 

3.实体用一对圆括号包起来,比如:

(Author:`作者`{name: '詹友刚' })、(Book:ISBN)、(Sub:`学科分类`{name:'材料加工工程'})

以“(Author:`作者`{name: '詹友刚' })”为例,其中

(1)冒号前面的内容表示给实体类型的别名,可以忽略不写,但返回值就要按原有实体类型来写

“作者”类型的实体别名是Author“学科分类”类型的实体别名是Sub

(2)冒号后面的内容由实体类型和实体属性-值对构成,实体属性-值对用一对花括号括起来。

根据下图可以看出,'詹友刚' 属于“作者”类型的实体,并且是“作者”的name。     

因此詹友刚这个实体就可以表示为(Author:`作者`{name: '詹友刚' })

4.关系用一对中括号包起来,比如:

[:被创作]、[:所属学科]

注意:这里的“被创作”、“所属学科”指的都是关系类型,我直接是以“关系类型名称”命名“关系名称”的,所以看起来好像我这里写的是关系名称,实际不是。如果不是直接以“关系类型名称”命名“关系名称”的话,比如是“被创作”类型的关系,关系名字为“著作者”,就是这样写的:

[:被创作{name:'著作者'}]

它的冒号前面也可以添加别名,作为关系名的别名。

5、无方向的关系不用加箭头,有方向的关系箭头永远指向实体

  • 实体1--关系2,表示无方向
  • 关系1->实体2,表示通过关系1,往实体2的方向查询
  • 实体a<-关系b,表示如果关系b指向实体a,则往关系b的方向查

三、查询结果,返回两本书的ISBN所有属性

返回图如下

返回信息如下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孩子快醒醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值