Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Whitespace for ngql operators functions #1249

Merged
merged 2 commits into from
Nov 24, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions docs-2.0/3.ngql-guide/5.operators/1.comparison.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 比较符

Nebula Graph支持的比较符如下
Nebula Graph 支持的比较符如下

| 符号 | 说明 |
|:----|:----:|
Expand All @@ -17,8 +17,8 @@ Nebula Graph支持的比较符如下。
| `<=` | 小于等于 |
| `%` | 取模 |
| `-` | 负数符号 |
| `IS NULL` | 为NULL|
| `IS NOT NULL` | 不为NULL |
| `IS NULL` | 为 NULL|
| `IS NOT NULL` | 不为 NULL |
| `IS EMPTY` | 不存在|
| `IS NOT EMPTY` | 存在 |

Expand All @@ -30,11 +30,11 @@ Nebula Graph支持的比较符如下。

- `EMPTY`当前仅用于判断,不支持函数或者运算操作,包括且不限于`GROUP BY`、`count()`、`sum()`、`max()`、`hash()`、`collect()`、`+`、`*`。

## OpenCypher兼容性
## OpenCypher 兼容性

- `NULL`的比较操作和openCypher不同,行为也可能会改变。在openCypher中,`IS [NOT] NULL`通常与`OPTIONAL MATCH`一起使用,但是nGQL不支持`OPTIONAL MATCH`。
- `NULL`的比较操作和 openCypher 不同,行为也可能会改变。在 openCypher 中,`IS [NOT] NULL`通常与`OPTIONAL MATCH`一起使用,但是 nGQL 不支持`OPTIONAL MATCH`。

- openCypher中没有`EMPTY`,因此不支持在MATCH语句中使用`EMPTY`。
- openCypher 中没有`EMPTY`,因此不支持在 MATCH 语句中使用`EMPTY`。

## 示例

Expand All @@ -44,7 +44,7 @@ Nebula Graph支持的比较符如下。

!!! Note

nGQL中的相等符号是`==`,openCypher中的相等符号是`=`。
nGQL 中的相等符号是`==`,openCypher 中的相等符号是`=`。

```ngql
nebula> RETURN 'A' == 'a', toUpper('A') == toUpper('a'), toLower('A') == toLower('a');
Expand Down Expand Up @@ -165,8 +165,6 @@ nebula> MATCH (n:player) \
| n.age IS NULL | n.name IS NOT NULL | n.empty IS NULL |
+---------------+--------------------+-----------------+
| false | true | true |
| false | true | true |
| false | true | true |
+---------------+--------------------+-----------------+
...
```
Expand Down
8 changes: 4 additions & 4 deletions docs-2.0/3.ngql-guide/5.operators/2.boolean.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 布尔符

Nebula Graph支持的布尔符如下
Nebula Graph 支持的布尔符如下

| 符号 | 说明 |
| :------- | :-------------: |
Expand All @@ -9,10 +9,10 @@ Nebula Graph支持的布尔符如下。
| NOT | 逻辑非 |
| XOR | 逻辑异或 |

对于以上运算的优先级,请参见[运算优先级](9.precedence.md)。
对于以上运算的优先级,请参见 [运算优先级](9.precedence.md)。

对于带有`NULL`的逻辑运算,请参见[NULL](../3.data-types/5.null.md)。
对于带有`NULL`的逻辑运算,请参见 [NULL](../3.data-types/5.null.md)。

## 历史兼容问题

在Nebula Graph 2.0中,非0数字不能转换为布尔值
在 Nebula Graph 2.0 中,非 0 数字不能转换为布尔值
14 changes: 7 additions & 7 deletions docs-2.0/3.ngql-guide/5.operators/4.pipe.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# 管道符

nGQL支持使用管道符(|)将多个查询组合起来。
nGQL 支持使用管道符(|)将多个查询组合起来。

## openCypher兼容性
## openCypher 兼容性

管道符仅适用于原生nGQL
管道符仅适用于原生 nGQL

## 语法

nGQL和SQL之间的一个主要区别是子查询的组成方式
nGQL 和 SQL 之间的一个主要区别是子查询的组成方式

- 在SQL中,子查询是嵌套在查询语句中的。
- 在 SQL 中,子查询是嵌套在查询语句中的。

- 在nGQL中,子查询是通过类似shell中的管道符(`|`)实现的。
- 在 nGQL 中,子查询是通过类似 shell 中的管道符(`|`)实现的。

## 示例

Expand All @@ -31,7 +31,7 @@ nebula> GO FROM "player100" OVER follow \
+-------------+
```

用户可以使用`YIELD`显式声明需要返回的结果,如果不使用`YIELD`,默认返回目标点ID
用户可以使用`YIELD`显式声明需要返回的结果,如果不使用`YIELD`,默认返回目标点 ID

必须在`YIELD`子句中为需要的返回结果设置别名,才能在管道符右侧使用引用符`$-`,例如示例中的`$-.dstid`。

Expand Down
14 changes: 7 additions & 7 deletions docs-2.0/3.ngql-guide/5.operators/5.property-reference.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# 引用符

nGQL提供引用符来表示`WHERE`和`YIELD`子句中的属性,或者复合查询中管道符之前的语句输出结果。
nGQL 提供引用符来表示`WHERE`和`YIELD`子句中的属性,或者复合查询中管道符之前的语句输出结果。

## openCypher兼容性
## openCypher 兼容性

引用符仅适用于原生nGQL
引用符仅适用于原生 nGQL

## 引用符列表

|引用符|说明|
|:---|:---|
|`$^`|引用起始点。更多信息请参见[引用属性](../4.variable-and-composite-queries/3.property-reference.md)。|
|`$$`|引用目的点。更多信息请参见[引用属性](../4.variable-and-composite-queries/3.property-reference.md)。|
|`$-`|引用复合查询中管道符之前的语句输出结果。更多信息请参见[管道符](4.pipe.md)。|
|`$^`|引用起始点。更多信息请参见 [引用属性](../4.variable-and-composite-queries/3.property-reference.md)。|
|`$$`|引用目的点。更多信息请参见 [引用属性](../4.variable-and-composite-queries/3.property-reference.md)。|
|`$-`|引用复合查询中管道符之前的语句输出结果。更多信息请参见 [管道符](4.pipe.md)。|

## 示例

Expand All @@ -26,7 +26,7 @@ nebula> GO FROM "player100" OVER follow YIELD properties($^).age AS SrcAge, prop
| 42 | 41 |
+--------+---------+

# 返回player100追随的player的名称和团队
# 返回 player100 追随的 player 的名称和团队
nebula> GO FROM "player100" OVER follow \
YIELD dst(edge) AS id | \
GO FROM $-.id OVER serve \
Expand Down
24 changes: 11 additions & 13 deletions docs-2.0/3.ngql-guide/5.operators/6.set.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@

合并多个请求时,可以使用集合运算符,包括`UNION`、`UNION ALL`、`INTERSECT`和`MINUS`。

所有集合运算符的优先级相同,如果一个nGQL语句中有多个集合运算符,Nebula Graph会从左到右进行计算,除非用括号指定顺序。
所有集合运算符的优先级相同,如果一个 nGQL 语句中有多个集合运算符,Nebula Graph 会从左到右进行计算,除非用括号指定顺序。

## openCypher兼容性
## openCypher 兼容性

集合运算符仅适用于原生nGQL
集合运算符仅适用于原生 nGQL

## UNION、UNION DISTINCT、UNION ALL

```ngql
<left> UNION [DISTINCT | ALL] <right> [ UNION [DISTINCT | ALL] <right> ...]
```

- 运算符`UNION DISTINCT`(或使用缩写`UNION`)返回两个集合A和B的并集,不包含重复的元素。
- 运算符`UNION DISTINCT`(或使用缩写`UNION`)返回两个集合 A 和 B 的并集,不包含重复的元素。

- 运算符`UNION ALL`返回两个集合A和B的并集,包含重复的元素。
- 运算符`UNION ALL`返回两个集合 A 和 B 的并集,包含重复的元素。

- `left`和`right`必须有相同数量的列和数据类型。如果需要转换数据类型,请参见[类型转换](../3.data-types/9.type-conversion.md)。
- `left`和`right`必须有相同数量的列和数据类型。如果需要转换数据类型,请参见 [类型转换](../3.data-types/9.type-conversion.md)。

### 示例

Expand All @@ -44,11 +44,10 @@ nebula> GO FROM "player102" OVER follow \
+-------------+
| "player100" |
| "player101" |
| "player101" |
| "player125" |
+-------------+

# UNION也可以和YIELD语句一起使用,去重时会检查每一行的所有列,每列都相同时才会去重。
# UNION 也可以和 YIELD 语句一起使用,去重时会检查每一行的所有列,每列都相同时才会去重。
nebula> GO FROM "player102" OVER follow \
YIELD dst(edge) AS id, properties(edge).degree AS Degree, properties($$).age AS Age \
UNION /* DISTINCT */ \
Expand All @@ -70,9 +69,9 @@ nebula> GO FROM "player102" OVER follow \
<left> INTERSECT <right>
```

- 运算符`INTERSECT`返回两个集合A和B的交集
- 运算符`INTERSECT`返回两个集合 A 和 B 的交集

- `left`和`right`必须有相同数量的列和数据类型。如果需要转换数据类型,请参见[类型转换](../3.data-types/9.type-conversion.md)。
- `left`和`right`必须有相同数量的列和数据类型。如果需要转换数据类型,请参见 [类型转换](../3.data-types/9.type-conversion.md)。

### 示例

Expand All @@ -85,7 +84,6 @@ nebula> GO FROM "player102" OVER follow \
+----+--------+-----+
| id | Degree | Age |
+----+--------+-----+
+----+--------+-----+
```

## MINUS
Expand All @@ -94,7 +92,7 @@ nebula> GO FROM "player102" OVER follow \
<left> MINUS <right>
```

运算符`MINUS`返回两个集合A和B的差异,即`A-B`。请注意`left`和`right`的顺序,`A-B`表示在集合A中,但是不在集合B中的元素
运算符`MINUS`返回两个集合 A 和 B 的差异,即`A-B`。请注意`left`和`right`的顺序,`A-B`表示在集合 A 中,但是不在集合 B 中的元素

### 示例

Expand All @@ -120,7 +118,7 @@ nebula> GO FROM "player102" OVER follow \

## 集合运算符和管道符的优先级

当查询包含集合运算符和管道符(|)时,[管道符](../5.operators/4.pipe.md)的优先级高。例如`GO FROM 1 UNION GO FROM 2 | GO FROM 3`相当于`GO FROM 1 UNION (GO FROM 2 | GO FROM 3)`。
当查询包含集合运算符和管道符(|)时,[管道符](../5.operators/4.pipe.md) 的优先级高。例如`GO FROM 1 UNION GO FROM 2 | GO FROM 3`相当于`GO FROM 1 UNION (GO FROM 2 | GO FROM 3)`。

### 示例

Expand Down
6 changes: 3 additions & 3 deletions docs-2.0/3.ngql-guide/5.operators/7.string.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 字符串运算符

Nebula Graph支持使用字符串运算符进行连接、搜索、匹配运算。支持的运算符如下。
Nebula Graph 支持使用字符串运算符进行连接、搜索、匹配运算。支持的运算符如下。

| 名称 | 说明 |
|:----- | :------------------ |
Expand Down Expand Up @@ -109,9 +109,9 @@ nebula> RETURN 'apple' ENDS WITH 'app', 'apple' ENDS WITH 'e', 'apple' ENDS WITH

!!! Note

当前仅opencypher兼容语句(`MATCH`、`WITH`等)支持正则表达式,原生nGQL语句(`FETCH`、`GO`、`LOOKUP`等)不支持正则表达式。
当前仅 opencypher 兼容语句(`MATCH`、`WITH`等)支持正则表达式,原生 nGQL 语句(`FETCH`、`GO`、`LOOKUP`等)不支持正则表达式。

Nebula Graph支持使用正则表达式进行过滤,正则表达式的语法是继承自`std::regex`,用户可以使用语法`=~ '<regexp>'`进行正则表达式匹配。例如:
Nebula Graph 支持使用正则表达式进行过滤,正则表达式的语法是继承自`std::regex`,用户可以使用语法`=~ '<regexp>'`进行正则表达式匹配。例如:

```ngql
nebula> RETURN "384748.39" =~ "\\d+(\\.\\d{2})?";
Expand Down
2 changes: 1 addition & 1 deletion docs-2.0/3.ngql-guide/5.operators/8.list.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 列表运算符

Nebula Graph支持使用列表(List)运算符进行运算。支持的运算符如下。
Nebula Graph 支持使用列表(List)运算符进行运算。支持的运算符如下。

| 名称 | 说明 |
|:----- |:------------------|
Expand Down
9 changes: 4 additions & 5 deletions docs-2.0/3.ngql-guide/5.operators/9.precedence.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# 运算符优先级

nGQL运算符的优先级从高到低排列如下(同一行的运算符优先级相同):

nGQL 运算符的优先级从高到低排列如下(同一行的运算符优先级相同):

- `-`(负数)
- `!`、`NOT`
Expand Down Expand Up @@ -34,8 +33,8 @@ nebula> RETURN (2+3)*5;
+-----------+
```

## openCypher兼容性
## openCypher 兼容性

在openCypher中,比较操作可以任意连接,例如`x < y <= z`等价于`x < y AND y <= z`。
在 openCypher 中,比较操作可以任意连接,例如`x < y <= z`等价于`x < y AND y <= z`。

在nGQL中,`x < y <= z`等价于`(x < y) <= z`,`(x < y)`的结果是一个布尔值,再将布尔值和`z`比较,最终结果是`NULL`。
在 nGQL 中,`x < y <= z`等价于`(x < y) <= z`,`(x < y)`的结果是一个布尔值,再将布尔值和`z`比较,最终结果是`NULL`。
52 changes: 26 additions & 26 deletions docs-2.0/3.ngql-guide/6.functions-and-expressions/1.math.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,46 @@

## 函数说明

Nebula Graph支持以下内置数学函数
Nebula Graph 支持以下内置数学函数

|函数| 说明 |
|:---- |:----|
|double abs(double x) | 返回x的绝对值。 |
|double floor(double x) | 返回小于或等于x的最大整数。|
|double ceil(double x) | 返回大于或等于x的最小整数。|
|double round(double x) | 返回离x最近的整数值,如果x恰好在中间,则返回离0较远的整数。|
|double sqrt(double x) | 返回x的平方根。 |
|double cbrt(double x) | 返回x的立方根。 |
|double hypot(double x, double y) | 返回直角三角形(直角边长为x和y)的斜边长。 |
|double abs(double x) | 返回 x 的绝对值。 |
|double floor(double x) | 返回小于或等于 x 的最大整数。|
|double ceil(double x) | 返回大于或等于 x 的最小整数。|
|double round(double x) | 返回离 x 最近的整数值,如果 x 恰好在中间,则返回离 0 较远的整数。|
|double sqrt(double x) | 返回 x 的平方根。 |
|double cbrt(double x) | 返回 x 的立方根。 |
|double hypot(double x, double y) | 返回直角三角形(直角边长为 x 和 y)的斜边长。 |
|double pow(double x, double y) | 返回$x^y$的值。 |
|double exp(double x) | 返回$e^x$的值。 |
|double exp2(double x) | 返回$2^x$的值。 |
|double log(double x) | 返回以自然数e为底x的对数。 |
|double log2(double x) | 返回以2为底x的对数。 |
|double log10(double x) | 返回以10为底x的对数。 |
|double sin(double x) | 返回x的正弦值。 |
|double asin(double x) | 返回x的反正弦值。|
|double cos(double x) | 返回x的余弦值。|
|double acos(double x) | 返回x的反余弦值。 |
|double tan(double x) | 返回x的正切值。|
|double atan(double x) | 返回x的反正切值。 |
|double rand() | 返回[0,1)内的随机浮点数。 |
|int rand32(int min, int max) | 返回`[min, max)`内的一个随机32位整数。<br>用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。<br>如果不传入参数,此时会从带符号的32位int范围内随机返回。|
|int rand64(int min, int max) | 返回`[min, max)`内的一个随机64位整数。<br>用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。<br>如果不传入参数,此时会从带符号的64位int范围内随机返回。|
|double log(double x) | 返回以自然数 e 为底 x 的对数。 |
|double log2(double x) | 返回以 2 为底 x 的对数。 |
|double log10(double x) | 返回以 10 为底 x 的对数。 |
|double sin(double x) | 返回 x 的正弦值。 |
|double asin(double x) | 返回 x 的反正弦值。|
|double cos(double x) | 返回 x 的余弦值。|
|double acos(double x) | 返回 x 的反余弦值。 |
|double tan(double x) | 返回 x 的正切值。|
|double atan(double x) | 返回 x 的反正切值。 |
|double rand() | 返回 [0,1) 内的随机浮点数。 |
|int rand32(int min, int max) | 返回`[min, max)`内的一个随机 32 位整数。<br>用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。<br>如果不传入参数,此时会从带符号的 32 位 int 范围内随机返回。|
|int rand64(int min, int max) | 返回`[min, max)`内的一个随机 64 位整数。<br>用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。<br>如果不传入参数,此时会从带符号的 64 位 int 范围内随机返回。|
|collect() | 将收集的所有值放在一个列表中。|
|avg() | 返回参数的平均值。|
|count() | 返回参数的数量。|
|max() | 返回参数的最大值。|
|min() | 返回参数的最小值。|
|std() | 返回参数的总体标准差。|
|sum() | 返回参数的和。|
|bit_and() | 逐位做AND操作。|
|bit_or() | 逐位做OR操作。|
|bit_xor() | 逐位做XOR操作。|
|bit_and() | 逐位做 AND 操作。|
|bit_or() | 逐位做 OR 操作。|
|bit_xor() | 逐位做 XOR 操作。|
|int size() | 返回列表或映射中元素的数量。|
|int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为1。|
|int sign(double x) | 返回x的正负号。<br>如果x为`0`,则返回`0`。<br>如果x为负数,则返回`-1`。<br>如果x为正数,则返回`1`。|
|double e() | 返回自然对数的底e(2.718281828459045)。 |
|int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为 1。|
|int sign(double x) | 返回 x 的正负号。<br>如果 x 为`0`,则返回`0`。<br>如果 x 为负数,则返回`-1`。<br>如果 x 为正数,则返回`1`。|
|double e() | 返回自然对数的底 e(2.718281828459045)。 |
|double pi() | 返回数学常数π(3.141592653589793)。|
|double radians() | 将角度转换为弧度。`radians(180)`返回`3.141592653589793`。 |

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# collect函数
# collect 函数

`collect()`函数返回一个符合表达式返回结果的列表。该函数可以将多条记录或值合并进一个列表,实现数据聚合。

`collect()`是一个聚合函数,类似SQL中的`GROUP BY`。
`collect()`是一个聚合函数,类似 SQL 中的`GROUP BY`。

## 示例

Expand Down Expand Up @@ -34,7 +34,7 @@ nebula> UNWIND [1, 2, 1] AS a \
| 1 | [1, 1] | 2 |
+---+------------+------------------+

# 降序排列,限制输出行数为3,然后将结果输出到列表中。
# 降序排列,限制输出行数为 3,然后将结果输出到列表中。
nebula> UNWIND ["c", "b", "a", "d" ] AS p \
WITH p AS q \
ORDER BY q DESC LIMIT 3 \
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# reduce函数
# reduce 函数

`reduce()`将表达式逐个应用于列表中的元素,然后和累加器中的当前结果累加,最后返回完整结果。该函数将遍历给定列表中的每个元素`e`,在`e`上运行表达式并和累加器的当前结果累加,将新的结果存储在累加器中。这个函数类似于函数式语言(如Lisp和Scala)中的fold或reduce方法
`reduce()`将表达式逐个应用于列表中的元素,然后和累加器中的当前结果累加,最后返回完整结果。该函数将遍历给定列表中的每个元素`e`,在`e`上运行表达式并和累加器的当前结果累加,将新的结果存储在累加器中。这个函数类似于函数式语言(如 Lisp 和 Scala)中的 fold 或 reduce 方法

## openCypher兼容性
## openCypher 兼容性

在openCypher中,`reduce()`函数没有定义。nGQL使用了Cypher方式实现`reduce()`函数。
在 openCypher 中,`reduce()`函数没有定义。nGQL 使用了 Cypher 方式实现`reduce()`函数。

## 语法

Expand Down
Loading