数据类型
本章介绍GSQL图形查询语言原生支持的数据类型。 在查询中,大多数数据对象都是以下三者之一:
-
1.查询的输入参数
-
2.遍历图形时遇到的顶点,边和它们的属性
-
3.在查询中定义的变量, 它们用于协助查询的计算工作。
本节介绍了语法定义的EBNF范式:
EBNF范式的数据类型
lowercase :
=
[
a
-
z
]
uppercase :
=
[
A
-
Z
]
letter :
=
lowercase
|
uppercase
digit :
=
[
0
-
9
]
integer
:
=
[
"-"
]
digit
+
real
:
=
[
"-"
](
"."
digit
+
)
|
[
"-"
](
digit
+
"."
digit
*
)
numeric
:
=
integer
|
real
stringLiteral :
=
'"'
[
~
[
"] | '\\' ('"
'
|
'\\'
)]
*
'"'
name :
=
(
letter
|
"_"
)
[
letter
|
digit
|
"_"
]
*
// Can be a single "_" or start with "_"
type
:
=
baseType
|
name
|
accumType
|
STRING COMPRESS
baseType :
=
INT
|
UINT
|
FLOAT
|
DOUBLE
|
STRING
|
BOOL
|
VERTEX
[
"<"
name
">"
]
|
EDGE
|
JSONOBJECT
|
JSONARRAY
|
DATETIME
filePath :
=
name
|
stringLiteral
typedef :
=
TYPEDEF TUPLE
"<"
tupleType
">"
name
tupleType :
=
(
baseType name
)
|
(
name baseType
)
[
","
(
baseType name
)
|
(
name baseType
)]
*
parameterType :
=
baseType
|
[
SET
|
BAG
]
"<"
baseType
">"
|
FILE
标识符语言元素实例的名字。 在GSQL图形查询语言中,标识符用于命名元素,例如查询,变量或用户定义函数。 在EBNF范式中,标识符称为名称(name)。 它可以是一系列字母,数字或下划线(“_”)但不支持其他标点符号。 初始字符只能是字母或下划线。
name (标识符)
name :
=
(
letter
|
"_"
)
[
letter
|
digit
|
"_"
]
*
不同类型的数据可以在不同的上下文中使用。 EBNF范式定义了几种数据类型。 最基本的称为基本类(baseType)。 其他独立的类型包括文件(FILE)和压缩字符串。 剩下的类型是由独立数据类型构建的复合数据类型,或其他类型的超集。 下面的表格详述了他们的定义和用途。
EBNF 字符
|
描述
|
实际中的例子
|
baseType
|
INT, UINT, FLOAT, DOUBLE, STRING,BOOL, DATETIME, VERTEX, EDGE,
JSONOBJECT, 或JSONARRAY
|
• 全局变量
• 查询返回值
|
tupleType
|
baseType的序列
|
用户自定义元组
|
accumType
|
支持累加操作的专用数据类型
|
遍历一组顶点或边时,累积和聚合数据
(详见“查询语言规范-累加器”一章)
|
FILE
|
文件对象
|
全局的顺序数据对象,链接到文本文件
|
parameterType
|
一个 SET 或BAG 的baseType或文件对象
|
查询参数
|
STRING
COMPRESS
|
压缩字符串
|
当不同值的数量有限,可使STRING的存储空间更紧凑
|
elementType
|
baseType, 压缩字符串, 或标识符
|
大多数不同类型的容器累加器的元素: SetAccum, BagAccum,GroupByAccum, MapAccum 元素的键
|
type
|
baseType, 压缩字符串, 标识符或accumType
|
• ListAccum的元素, MapAccum 元素的值
• 局部变量
|
本查询语言支持以下基本类,它们可以在其范围内的任何位置声明或复制。 在定义全局变量,局部变量,查询返回值,参数,元组的一部分或容器累加器的元素时,可以使用任何这些基本类。 累加器则将在后续的章节中详细介绍。
BNF范式
baseType :
=
INT
|
UINT
|
FLOAT
|
DOUBLE
|
STRING
|
BOOL
|
VERTEX
[
"<"
name
">"
]
|
EDGE
|
JSONOBJECT
|
JSONARRAY
|
DATETIME
每种基本类的默认值如下表所示。 默认值是基本类变量的初始值(详见“变量类型”一章),或某些函数的默认返回值(详见“运算符,函数和表达式”一章)。
类型
|
默认值
|
INT, UINT, FLOAT, DOUBLE
|