知识图谱:Cypher语言基础

Cypher语言介绍

Cypher是一种声明式图数据库查询语言,它具有丰富的表现力,能高效地查询和更新图数据。Cypher借鉴了SQL语言的结构——查询可由各种各样的语句组合。
在Cypher语言中一个在图G上的查询Q可以认为是从空表到结果关系表的转换。一个Cypher 查询语言包括四部分:表达式、图模式、子句和查询。针对一个属性图而言,Cypher 语句既包括查询也包括数据更新和操作等功能。

基础语句

创建一个节点

CREATE (n:SIGN {PROPERTY}) RETURN n
CREATE (n:Person {name:'John'}) RETURN n
CREATE (n:Location {city:'Miami', state:'FL'})
  • CREATE 是创建操作,SIGN是标签,代表节点得类型。花括号中代表节点的属性。
  • 示例1语句表示的是创建一个标签为Person的节点,其中节点具有一个name属性,属性值为John。
  • 花括号中可以创建多个属性,示例2语句表示的是创建一个标签为Location的节点,其中节点具有2个属性,第一个为city属性,属性值为Miami;第二个为state属性,属性值为FL

创建关系

MATCH (a:SIGN {PROPERTY}),
      (b:SIGN {PROPERTY})
MERGE (a)-[:RELATION]->(b)

MATCH (a:Person {name:'Liz'}),
      (b:Person {name:'Mike'})
MERGE (a)-[:FRIENDS]->(b)
  • MATCH语句是查询操作,用来匹配一定模式,可以是简单的节点、关联,也可以是复杂的路径。
  • MERGE语句是创建关系的操作,建立一条由a到b的边,边的关系类型是RELATION
  • 示例语句表示的是找到两个标签为Person,name属性分别为Liz和Mike的节点,分别记为a和b;然后创建一条由a到b的边,边的关系类型为FRIENDS
  • 边也可以添加属性,例如:
MATCH (a:Person {name:'Shawn'}),
      (b:Person {name:'Sally'})
MERGE (a)-[:FRIENDS {since:2001}]->(b)

这里给FRIENDS添加了since属性,属性值为2001

  • 此外,不同节点类型的节点也可以创建关系,例如:
MATCH (a:Person {name:'John'}),
      (b:Location {city:'Boston'})
MERGE (a)-[:BORN_IN {year:1978}]->(b)

查询操作

1、查询所有对外有关系的节点

MATCH (a)-->() RETURN a

2、查询所有有关系的节点

MATCH (a)--() RETURN a

3、查询所有对外有关系的节点,以及关系类型

MATCH (a)-[r]->() RETURN a.name, type(r)

4、查询所有具有某种关系的节点

MATCH (n)-[:RELATION]-() RETURN n
MATCH (n)-[:MARRIED]-() RETURN n  //示例

示例语句表示的是查询所有有结婚关系的节点

修改与删除

1、增加/修改节点的属性

MATCH (a:SIGN {PROPERTY_1}) SET a.PROPERTY_1=x
MATCH (a:SIGN {PROPERTY_1}) SET a.PROPERTY_2=x
MATCH (a:Person {name:'Liz'}) SET a.age=34
  • 在这里,SET表示修改操作,如果属性不存在,则新建该属性并赋值
  • 示例语句表示的是对标签类型为Person,name属性为Liz的节点新增属性age,属性值为34

2、删除节点的属性

MATCH (a:SIGN {PROPERTY}) REMOVE a.PROPERTY

MATCH (a:Person {name:'Mike'}) SET a.test='test'
MATCH (a:Person {name:'Mike'}) REMOVE a.test
  • 删除节点的属性操作主要通过REMOVE
  • 示例语句表示的是新建一个test属性并赋值test,随后删除该属性

3、删除节点

MATCH (a:SIGN {PROPERTY}) DELETE a
MATCH (a:Location {city:'Portland'}) DELETE a
  • 删除节点操作是DELETE
  • 示例语句表示的是删除标签类型为Location,city属性为Portland的节点

4、删除所有内容

MATCH (n) DETACH DELETE n

示例演示

1、创建人物节点

CREATE (n:Person {name:'Mike', sex:'male'}) RETURN n
CREATE (n:Person {name:'Jenny', sex:'female'}) RETURN n
CREATE (n:Person {name:'White', sex:'male'}) RETURN n
CREATE (n:Person {name:'Jenson', sex:'male'}) RETURN n
CREATE (n:Person {name:'Mary', sex:'female'}) RETURN n
CREATE (n:Person {name:'John', sex:'male'}) RETURN n

2、创建地点节点


CREATE (n:Company {name:'Microsoft'}) RETURN n
CREATE (n:Company {name:'Ubisoft'}) RETURN n
CREATE (n:Company {name:'NVIDIA'}) RETURN n
CREATE (n:Company {name:'Huawei'}) RETURN n
CREATE (n:Company {name:'Xiaomi'}) RETURN n

CREATE (n:Municipality {name:'Beijing'}) RETURN n
CREATE (n:Municipality {name:'Shanghai'}) RETURN n
CREATE (n:City {name:'Nanjing'}) RETURN n
CREATE (n:City {name:'Wenzhou'}) RETURN n
CREATE (n:City {name:'Jiaxing'}) RETURN n
CREATE (n:City {name:'Nantong'}) RETURN n
CREATE (n:Province {name:'Jiangsu'}) RETURN n
CREATE (n:Province {name:'Zhejiang'}) RETURN n
CREATE (n:Country {name:'China'}) RETURN n

3、创建关系

MATCH(a:Person {name:'John'}),
     (b:Person {name:'Mary'})
MERGE(a)-[:Spouse]->(b)

MATCH(a:Person {name:'Jenson'}),
     (b:Person {name:'Jenny'})
MERGE(a)-[:Spouse]->(b)

MATCH(a:Person {name:'Mike'}),
     (b:Person {name:'White'})
MERGE(a)-[:Brothers]->(b)

MATCH(a:Person {name:'Mike'}),
     (b:Company {name:'NVIDIA'})
MERGE(a)-[:Works_in]->(b)

MATCH(a:Person {name:'White'}),
     (b:Company {name:'Huawei'})
MERGE(a)-[:Works_in]->(b)

MATCH(a:Person {name:'Jenny'}),
     (b:Company {name:'Huawei'})
MERGE(a)-[:Works_in]->(b)

MATCH(a:Person {name:'Jenson'}),
     (b:Company {name:'Microsoft'})
MERGE(a)-[:Works_in]->(b)

MATCH(a:Person {name:'Mary'}),
     (b:Company {name:'Microsoft'})
MERGE(a)-[:Works_in]->(b)

MATCH(a:Person {name:'John'}),
     (b:Company {name:'Xiaomi'})
MERGE(a)-[:Works_in]->(b)

MATCH(a:Company {name:'NVIDIA'}),
     (b:Municipality {name:'Shanghai'})
MERGE(a)-[:Located_in]->(b)

MATCH(a:Company {name:'Ubisoft'}),
     (b:Municipality {name:'Shanghai'})
MERGE(a)-[:Located_in]->(b)

MATCH(a:Company {name:'Microsoft'}),
     (b:Municipality {name:'Beijing'})
MERGE(a)-[:Located_in]->(b)

MATCH(a:Company {name:'Xiaomi'}),
     (b:Municipality {name:'Beijing'})
MERGE(a)-[:Located_in]->(b)

MATCH(a:Municipality {name:'Shanghai'}),
     (b:Country {name:'China'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:Municipality {name:'Beijing'}),
     (b:Country {name:'China'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:Province {name:'Jiangsu'}),
     (b:Country {name:'China'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:Province {name:'Zhejiang'}),
     (b:Country {name:'China'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:City {name:'Hangzhou'}),
     (b:Province {name:'Zhejiang'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:City {name:'Wenzhou'}),
     (b:Province {name:'Zhejiang'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:City {name:'Jiaxing'}),
     (b:Province {name:'Zhejiang'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:City {name:'Nanjing'}),
     (b:Province {name:'Jiangsu'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:City {name:'Nantong'}),
     (b:Province {name:'Jiangsu'})
MERGE(a)-[:Belongs_to]->(b)

MATCH(a:Person {name:'Mary'}),
     (b:City {name:'Wenzhou'})
MERGE(a)-[:Born_in]->(b)

MATCH(a:Person {name:'Mike'}),
     (b:City {name:'Nantong'})
MERGE(a)-[:Born_in]->(b)

4、结果

知识图谱:Cypher语言基础

Original: https://blog.csdn.net/u014300149/article/details/113501454
Author: 努力学习计算机的小蒟蒻
Title: 知识图谱:Cypher语言基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/556009/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球