简介

GSQL™软件为TigerGraph公司研发的用于存储和分析大数据的图数据库计算平台,该平台包含一系列完整的生态系统,包括图模型建立、数据加载、图数据查询与分析。本文档详细介绍了GSQL语言的语法和功能。

本文档是参考手册而不是教程。 在使用本文档之前,用户应阅读GSQL演示示例v2.1(GSQL Demo Examples v2.1 )。 同时,GSQL用户手册和教程也针对某些特殊的方面进行了详述。 本文档最适用于那些已经有一定GSQL基础,并希望针对某些细节寻找答案的读者。

本文档是GSQL语言参考的第1部分,主要介绍基础知识,定义图形数据库模型以及加载数据的方法。 第2部分详述了如何运行查询。

此外,我们还提供了GSQL语法手卡(GSQL Reference Card)。手卡上列出了最常用的GSQL命令的语法,用于定义图形和数据加载。 您可以在我们的用户文档首页(User Document home page)上找到该语法资料。

GSQL 执行过程

GSQL的运行过程包括四个主要步骤:

  1. 定义图数据库模型。

  2. 将数据加载到TigerGraph中。

  3. 创建和安装查询。

  4. 运行查询。

在导入初始数据和并创建查询之后,用户可立即运行查询,亦可加载更多数据或创建其他查询。 本文档提供了步骤1和步骤2的详细规范与细节。附录中的流程图则直观地展示了整个运算过程中必要且被允许操作的命令。

语法基础

标识符(Identifiers)

标识符由用户自定义。标识符由字母,数字和下划线组成。标识符可能不以数字开头。标识符区分大小写。

关键词(Keywords)和预留词(Reserved Words)

关键词是本语言中预先定义过语义的单词,不区分大小写。预留词为本语言预留的词汇,现在或将来可能会用到。预留词不能作为用户自定义的标识符使用。在大多数情况下,关键词也是预留词。例如,VERTEX是一个关键词,也是预留词,因此VERTEX不能用作为用户自定义标识符使用。

语句(Statements)

每行通常只对应一个语句(多行模式除外)。大多数情况下,最高一级的语句末尾没有标点符号。但某些语句(例如CREATE LOADING JOB)是包含一组语句的语句块,可能需要一些标点符号来分隔块内的语句。

注释(Comments)

在命令文件中,注释文本会被编译器剔除。

整行注释以#或//开头。注释可以与代码在同一行。标记左侧为代码,右侧为注释。

多行注释块以/ *开头,以* /结尾。

符号表示方法

本文档中的代码示例包括模板代码(即描述正式代码的语法)和实际代码示例。 实际代码示例可以直接运行,例如copy-and-paste示例。模板代码则无法直接运行,因为它包含了一些占位符(placeholder names)和其他额外的符号来解释该语法。示例的上下文会清楚描述该示例为模板代码还是实际代码。

本手册将使用编程语言通用符, 但特别要注意以下几点:

Shell提示符

本文档中的大多数示例都在GSQL shell中进行。 当需要用户提供细节时,GSQL shell提示符表示为:>

当操作系统要从GSQL shell之外发出系统指令时,提示符表示为:os $

关键词

在GSQL语言中,关键词不区分大小写,但用户定义的标识符区分大小写。 在下面的所有示例中,关键词全部用大写字母表示,以明确关键词和用户自定义标识符之间的区别。

在极少数情况下,某些选项关键词区分大小写。 例如,若要从图存储中删除所有数据,命令为:

clear graph store –HARD

其中选项-HARD必须全部为大写字母。

占位标识符和占位符值

在模板代码中,任何非关键词,文字或标点符号的标记均为占位标识符或占位符值。例:

CREATE UNDIRECTED EDGE edge_type_name (FROM vertex_type_name1 ,
 TO vertex_type_name2 , 
 attribute_name type [DEFAULT default_value ],...) 

用户自定义标识符是edge_type_ n ame , vertex_type_name1, vertex_type_name2, attribute_name 和 default_value。 type则是属性的各种数据类型之一(在“创建顶点”一章中详述)。

  • 引号

引号应该如示例中所示方法使用(除非另有说明)。 字符串的占位符在模板代码中不会带引号,但如果将模板转换为实际代码,则应在字符串值两边添加引号。

  • 选项

竖条| 用于分隔不同选项,它表示开发者需要在这一组选项中选择一个。 例如:下面示例中表示关键词VERTEX或EDGE需要二选一。 另外请注意引号的用法。

示例代码:

LOAD " file_path " TO VERTEX|EDGE object_type_name VALUES (id_expr, attr_expr1 , attr_expr2 ,...)

一个可能的实例:

LOAD "data/users.csv" TO VERTEX user VALUES ($0, $1, $2)
  • 可选项

方括号内为可选项,并允许嵌套。 方括号本身很少被用作GSQL语言本身的一部分。

示例:在RUN JOB语句中,-n标志是可选项。 如果使用该选项,则-n后面必须跟一个值。

RUN JOB [-n count ] job_name 

有时,选项是嵌套的,这意味着只有在外层选项使用的前提下,才能使用内层选项:

RUN JOB [-n [ first_line_num , ] last_line_num ] job_name 

例如,当且仅当首先定义了last_line_num时才可以定义first_line_num。 这些选项为此语句提供了三种可能的形式:

RUN JOB job_name 
RUN JOB -n last_line_num job_name 
RUN JOB -n first_line_num , last_line_num job_name 
  • 重复零次或多次

在模板代码中,有时希望表达某个语句被重复任意次数。 例如,一个顶点的定义可能包含零个或多个用户定义属性。 一次加载作业可能包含一个或多个LOAD语句。 在模板代码中,如果一个星号紧跟在选项的方括号后面,则括号内的参数可以重复零次或任意次数。 例如:

TO VERTEX|EDGE object_name VALUES ( id_expr [, attr_expr ]*)

表示VALUES列表包含至少一个属性表达式(attr_expr ),并可附加任意数量的该属性表达式。 附加的属性表达式之间用逗号分隔。

  • 长句

为了更方便地显示,本指南中的长句有时可能被分隔为多行。 这仅用于清晰表述的目的; 实际代码必须作为单行输入(除非使用多行模式)。 必要时,示例中会在语句开始之前标识shell提示符,以清楚地标记每个语句的开始位置。

例如:SELECT查询在语法上是单个语句,因此GSQL要求将其作为单行输入。

长语句显示为一行:
SELECT *|attribute_name FROM vertex_type_name [WHERE conditions] [ORDER BY attribute1,attribute2,...] [LIMIT k]

但是,当每行显示一个子句时,该语句更易于阅读和理解:

多行模式的长句,但只有一个提示符
> SELECT *|attribute_name

   FROM vertex_type_name

   [WHERE conditions]

   [ORDER BY attribute1,attribute2,...]

   [LIMIT k]

Last updated