上节课,我们在Neo4j的云服务上创建了一个实例,这节课开始,我们就可以在这个实例上,学习Neo4j的专用CQL语句了。在正式学习CQL语句之前,还有必要先介绍几个知识图谱的基本概念,帮助大家理解CQL语句中的关键字。

基本概念

实体/节点(Entity/Node):指现实世界中具体的事物,比如周星驰、霸王别姬等。

标签(Label):指抽象的概念或类别,比如“人”,“电影”等。

属性(Property):指实体的特征,比如人的姓名、年龄、性别,电影的名称、时长、上映时间等。

关系/边(Relation/Edge):指实体之间的联系,比如人和人之间的朋友关系,某个人是某部电影的导演等。

除了以上概念之外,还有事件、语义、本体这些概念,在后面的项目中遇到了,再给大家补充。了解以上概念之后,接下来就可以开始创建节点了。

创建节点

创建节点的完整语法如下:

CREATE (node:Label {property1: value1, property2: value2, ...})

其中,Label是节点的标签。property1、property2等是节点的属性名,value1、value2等是属性的值。

示例

例1:创建一个名为"周星驰"的人物节点,标签为"Person",有属性"age"和"gender",语法如下:

CREATE (chow:Person {name:'周星驰', age:61, gender:'男'})

例2:创建一部名为"功夫"的电影节点,标签为"Movie",有属性"评分"、"上映时间",语法如下:

CREATE (n:Movie {name:'功夫', 评分:8.9, 上映时间:'2004-12-23'})

以上例子中,我们尝试用中文作属性名,实验表明也是可以的,属性对的语法类似Python的字典,键不需要引号包裹。

例3:创建一部名为"喜剧之王"的电影节点,要求多次执行不重复创建。

MERGE (n:Movie {name:'家有喜事', 评分:8.5, 上映时间:'1992-01-25'})

需要注意的是,MERGE本质上是一个先查询,再创建的过程,所以执行效率上不如CREATE。如果在业务上,确定不会重复执行的情况下,可以优先使用CREATE。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/read/567