Neo4j入门(六)从计算节点的出度、入度开始

您所在的位置:网站首页 入度,出度 Neo4j入门(六)从计算节点的出度、入度开始

Neo4j入门(六)从计算节点的出度、入度开始

2024-07-12 05:15| 来源: 网络整理| 查看: 265

  本文将会介绍一些较高级的Neo4j查询Cypher语句,先从计算节点的出度、入度开始。   在此之前,我们先构建一个简单的电影知识图谱。

图谱构建

  我们将构建一个IMDB排名前250的电影知识图谱,其数据来源可访问网址:https://www.imdb.cn/imdb250/6,电影数据示例如下: 示例电影数据   其中节点的Schema如下:

节点类型属性Moviename,language,releaseDate,minutesPersonnameCountrynameGenrename

其中Movie为电影节点,Person为人物节点,包含导演、编剧、主演,Country为国家或地区,Genre为电影类型。关系Schema如下:

头结点尾结点关系备注MoviePersondirector电影的导演MoviePersoneditor电影的编剧MoviePersonactor电影的主演MovieCountrycountry电影所属国家或地区MovieGenrehas电影类型

根据上述数据源及Schema,我们构建的电影图谱示例如下:

电影图谱示例

Cypher查询 查询节点的出度、入度

  首先我们查询某个节点的出度,比如我们想知道肖申克的救赎的出度(即有多少关系以该节点为头结点),则可以使用如下查询语句:

match (n:Movie{name: '肖申克的救赎'}) with n, size((n)-[]->()) as s return s;

返回结果如下:

s 9

  如果我们想查询某个节点的入度,比如我们想知道前250部电影中有多少部是美国拍的,则可以使用如下查询语句:

match (n:Country{name: '美国'}) with n, size((n) (m) return p;

返回结果如下图:

阿甘正传的导演及电影类型

匹配多种类型节点

  匹配多种类型的节点时,不像匹配多种关系使用|那么方便,比如我们想知道图谱中的电影及国家,则可以使用如下查询语句:

match (n) where n:Movie or n:Country return n.name; 限定条件的节点出度、入度

  比如我们想知道肖申克的救赎的主演和导演数量,则可以使用如下查询语句:

match (n:Movie{name: '肖申克的救赎'}) with n, size((n)-[:actor|director]->()) as s return s;

返回结果如下:

s 6

又比如我们想知道一共有多少部剧情片和爱情片,则可以使用如下查询语句:

match (n:Genre) where n.name = '剧情' or n.name = '爱情' with n, size((n)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3