什么是图?
图有两个元素,一个是节点(node)另一个是节点间的关系(relationship).
什么是图数据库?
图数据库就是用来管理图数据模型的数据库。与其他数据库不同,关系在图数据库中是首要的,不需要添加外键来连接两个节点。图数据库存储了节点及其关系组成的结构系统,可以更加方便的描述我们的现实世界。
什么是neo4j?
- Neo4j是一个数据库 - 用它来可靠地存储信息并在以后找到它
- Neo4j的数据模型是Graph,特别是Property Graph
- Cypher是Neo4j的图形查询语言(SQL用于图形!)
- Cypher是一种声明性查询语言:它描述了您感兴趣的内容,而不是如何获取。
- Cypher意味着非常易读和富有表现力
什么是Cypher?
Cypher是一种声明性查询语言
在Cyphter中节点(node)和关系(relationship)的表达方式
nodes:
使用()来表达节点,我们可以为节点命名一个变量名(varaible),以便可以在可以引用它。同时节点需要声明类型,使用“:Type”。使用{}来声明节点具有的属性,示例如下:
() 标示空节点
(matrix) 该节点的名称为matrix
(:Movie) 该节点的类型为Movie
(matrix:Movie) 节点名为matrix类型为Movie的节点
(matrix:Movie {title: "The Matrix"}) matrix的节点具有title属性值为“The Matrix”
(matrix:Movie {title: "The Matrix", released: 1999})
(matrix:Movie:Promoted) 节点可以有多个类型
我们可以使用Match和Return来查找和返回几点,如查找类型为Movie,电影名title为The Matrix的电影节点可以使用
MATCH (movie:Movie {title:"The Matrix"})
RETURN movie
relationships:
关系是从一个节点指向另一个节点的箭头:
(节点1)-[关系1]->(节点2)
或者
(节点1)<-[关系2]-(节点2)
关系和节点一样也可以有变量声明,也有类型,有对应的属性。
例如我们要查找一个演员在电影中的角色
MATCH (actor:Person)-[rel:ACTED_IN]->(movie:Movie)
RETURN rel.roles
rel:就是关系变量
ACTED_IN:就是关系类型
roles:就是关系所具有的的属性。
patterns:
将节点和关系连接起来就被称为pattern(模式)。
为了方便重用,我们可以给模式赋予变量,以便于在其他地方引用示例:
MATCH cast = (:Person)-[:ACTED_IN]->(:Movie)
RETURN cast
cast代表了电影、演员和演员在电影中角色这样一个模型。可以使用nodes(cast)返回模型的节点,rels(cast)代表模型中节点的关系,length(cast)代表所有的模型数量。