知识存储-cypher查询语句基础(1)

1、概述

我们在进行关系型数据库操作的时候使用sql,在使用其他数据库时使用sparsql,在操作neo4j时使用cypher语法。这是一种非常简单的查询语法,方便我们掌握。

1)neo4j中的相关概念

节点:

节点是图数据库中的一个基本元素,表示一个具体的实体,可以类比成关系数据库中的记录

关系:

关系是图数据库中节点之间的连接,也表示成节点之间的边,neo4j中关系是双向的

属性:

属性是对节点以及关系的一种说明,可以类比成关系数据库中的字段或者列,这里需要强调的是,在图数据库中关系也是可以设计属性的。

标签:

标签(label)是同一类节点的组合,但是并不是在同一标签下的节点一定包含相同属性。

路径:

路径是图数据库建立之后,任意两个节点之间的连通管理,是关系的组合。

2、使用cypher语言

cypher是一种非常简洁的图查询语言,可以在shell与浏览器端直接执行。其基本语法包含以下四个部分:

start:设定查找的起始节点

match:匹配图形模式, 可以定位感兴趣数据的子图形

where:对查询数据进行过滤

limit:限制查询数量

return:返回结果

注意:在新版本的neo4j中start可以省略

2.1 neo4j movie实例的说明

知识存储-cypher查询语句基础(1)_第1张图片

如上图所示,整个图数据库节点包含两种label

1、person 电影的参演者或者导演

2、movie 电影

关系主要有两种:

1、acted_in : 某人参演某电影

2、directed:某人导演了某电影

属性若干:

1、person属性:born出生日期,name:姓名

2、movie属性:release发行年份 tagline:介绍 title:电影名称

3、acted_in属性:roles参演角色

4、directed属性:无

所有查询都基于上述实例模型进行。

2.2 neo4j movie数据库查询

  • 查询所有数据
match (n) return n
  • 查询所有数据,并限制查询数量
match (n) return n limit 10
知识存储-cypher查询语句基础(1)_第2张图片

注意:查询结果可以以图,文本,以及服务器返回代码形式(json)进行呈现

  • 查询某个标签的所有节点
match (p:Person) return p limit 10
知识存储-cypher查询语句基础(1)_第3张图片
  • 查询某个标签的所有节点的指定属性
match (p:Person) return p.born limit 10
知识存储-cypher查询语句基础(1)_第4张图片

  • 查询所有person并且在1960年之后出生
match (p:Person) where p.born>=1960 return p limit 2
match (p:Person) where p.name='Tom Hanks' return p
match (p:Person { name:'Tom Hanks' } ) return p
  • 查询汤姆汉克斯相关的所有电影
match (p:Person{name:'Tom Hanks'})--(movie) return p,movie

知识存储-cypher查询语句基础(1)_第5张图片

  • 查询汤姆汉克斯导演的所有电影
match (p:Person{name:'Tom Hanks'})-[r:DIRECTED]-(movie:Movie) return p,movie
知识存储-cypher查询语句基础(1)_第6张图片
  • 查询整个图中所存在的关系
match (p:Person)-[r]-(movie:Movie) return type(r)
知识存储-cypher查询语句基础(1)_第7张图片
  • 去除上面结果中的重复元素
match (p:Person)-[r]-(movie:Movie) return distinct type(r)

知识存储-cypher查询语句基础(1)_第8张图片

  • 查询参演 Apollo 13 这部电影的所有演员
match (p:Person)-[:ACTED_IN]->(movie:Movie{title:"Apollo 13"}) return p,movie
知识存储-cypher查询语句基础(1)_第9张图片
  • 查询参演Apollo 13 这部电影的所有演员以及导演
match (p:Person)-[:ACTED_IN]->(movie:Movie{title:"Apollo 13"})<-[:DIRECTED]-(p1:Person) return p1,p,movie
知识存储-cypher查询语句基础(1)_第10张图片
  • 查询两人之间的间接关系
match r=(p:Person{name:"Carrie-Anne Moss"})-[*1..3]-(p1:Person{name:"Lilly Wachowski"})return r
知识存储-cypher查询语句基础(1)_第11张图片
  • 查询两人之间的间接关系的另外一种方式
match (p:Person{name:"Carrie-Anne Moss"}),(p1:Person{name:"Lilly Wachowski"}),r=((p)-[*..3]-(p1)) return r
  • 查询两人之间的间接关系的最短路径
match (p:Person{name:"Carrie-Anne Moss"}),
(p1:Person{name:"Lilly Wachowski"}),
r=shortestPath((p)-[*..3]-(p1)) 
return r
知识存储-cypher查询语句基础(1)_第12张图片



你可能感兴趣的:(知识图谱)