【NebulaGraph】图模式与更多的示例nGQL语句(三)

示例语句,用户可以在 GitHub 的 features 目录内查看超过 2500 条 nGQL 示例。 https://github.com/vesoft-inc/nebula/tree/master/tests/tck/features

1. 图模式

1.1 单点模式

点用一对括号来描述,通常包含一个名称。例如:

(a)

示例为一个简单的模式,描述了单个点,并使用变量a命名该点。

1.2 多点关联模式

多个点通过边相连是常见的结构,模式用箭头来描述两个点之间的边。例如:

(a)-[]->(b)

示例为一个简单的数据结构:两个点和一条连接两个点的边,两个点分别为a和b,边是有方向的,从a到b。

这种描述点和边的方式可以扩展到任意数量的点和边,例如:

(a)-[]->(b)<-[]-(c)

这样的一系列点和边称为路径(path)。
详细说明

  1. 节点 a、b 和 c
    a、b 和 c 代表图中的三个节点。

  2. 边 []
    [] 表示一条边,可以是有方向的,也可以是无方向的。如果需要指定边的类型或属性,可以在[]中添加具体信息,例如边的类型或过滤条件。

  3. 方向-> <-
    (a)-[]->(b) 表示从节点 a 指向节点 b 的一条有向边。
    (b)<-[]-(c) 表示从节点 c 指向节点 b 的一条有向边。
    换句话说,b 是两个边的连接点。

只有在涉及某个点时,才需要命名这个点。如果不涉及这个点,则可以省略名称,例如:

(a)-[]->()<-[]-(c)

例子
省略未使用的节点或边的名称可以让查询更简洁。如果中间节点或边不需要引用,只是作为结构匹配的一部分,这种方式更直观、高效。

MATCH (a)-[]->()<-[]-(c)
RETURN a, c

这段查询表示:

  • 匹配满足这种结构的所有 a 和 c,并返回它们。
  • 未命名节点和边只是结构的一部分,不参与结果返回或进一步的过滤。

1.3 Tag 模式

模式除了简单地描述图中的点之外,还可以描述点的 Tag。例如:

(a:User)-[]->(b)

模式也可以描述有多个 Tag 的点,例如:

(a:User:Admin)-[]->(b)

1.4 属性模式

点和边是图的基本结构。nGQL 在这两种结构上都可以增加属性,方便实现更丰富的模型。

在模式中,属性的表示方式为:用花括号括起一些键值对,用英文逗号分隔,并且需要指定属性所属的 Tag 或者 Edge type。

例如一个点有两个属性:

(a:player{name: "Tim Duncan", age: 42})

在这个点上可以有一条边是:

(a)-[e:follow{degree: 95}]->(b)

1.5 边模式

描述一条边最简单的方法是使用箭头连接两个点。

可以用以下方式描述边以及它的方向性。如果不关心边的方向,可以省略箭头,例如:

(a)-[]-(b)

和点一样,边也可以命名。一对方括号用于分隔箭头,变量放在两者之间。例如:

(a)-[r]->(b)

和点上的 Tag 一样,边也可以有类型。描述边的类型,例如:

(a)-[r:REL_TYPE]->(b)

和点上的 Tag 不同,一条边只能有一种 Edge type。但是如果我们想描述多个可选 Edge type,可以用管道符号(|)将可选值分开,例如:

(a)-[r:TYPE1|TYPE2]->(b)

和点一样,边的名称可以省略,例如:

(a)-[:REL_TYPE]->(b)

1.6 变长模式

在图中指定边的长度来描述多条边(以及中间的点)组成的一条长路径,不需要使用多个点和边来描述。例如:

(a)-[*2]->(b)

该模式描述了 3 点 2 边组成的图,它们都在一条路径上(长度为 2),等价于:

(a)-[]->()-[]->(b)

也可以指定长度范围,这样的边模式称为variable-length edges,例如:

(a)-[*3..5]->(b)

*3..5表示最小长度为 3,最大长度为 5。

该模式描述了 4 点 3 边、5 点 4 边或 6 点 5 边组成的图。

也可以指定长度范围的上限或下限,也可以两个都不指定,例如:

(a)-[*..5]->(b)  // 最小长度为 1,最大长度为 5。
(a)-[*3..]->(b)  // 最小长度为 3,最大长度为无穷大。
(a)-[*]->(b)     // 最小长度为 1,最大长度为无穷大。

1.7 路径变量

一系列连接的点和边称为路径。nGQL 允许使用变量来命名路径,例如:

p = (a)-[*3..5]->(b) // 从 a 到 b, 最小长度为 3,最大长度为 5 的路径

可以在 MATCH 语句中使用路径变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boy快快长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值