ISO 专家解读 | 什么是 GQL 国际标准图查询语言

简介: 4 月 12 日,图查询标准语言 GQL(Graph Query Language)正式发布。与此同时,悦数图数据库 v5.0 宣布原生支持 GQL。GQL 一经问世,便在图行业内外引起广泛关注, ISO 数据库语言项目召集人 Keith W. Hare 发布了一篇对 GQL 的解读文章。让我们跟随专家的视角,来了解一下什么是 GQL,以及 GQL 数据库语言的功能。

新的属性图数据库语言标准,ISO/IEC 39075 信息技术 — 数据库语言 — GQL,近日已经发布。但GQL 是什么,这个数据库语言标准中包含了什么内容?

GQL 这一新数据库语言标准由国际标准委员会 ISO/IEC JTC1 SC32 WG3 数据库语言团队开发。忽略上面的 ISO/IEC JTC1 标准层次结构的缩写,SC32 WG3 是一个国际委员会,同时负责开发和强化 SQL 数据库语言。SC32 WG3 的参与者(个别专家)由世界各国的标准流程指派。

当标准委员会开始讨论一个新的属性图数据库语言标准时,SC32 WG3 选择了 “GQL” 这个名字。可能大家觉得 GQL 是 Graph Query Language(图查询语言)的缩写,但是这个名字主要是为了体现 GQL 与 SQL 数据库语言是并列的。

SQL 国际标准的首个版本(ISO/IEC 9075 - 数据库语言 — SQL)发布于 1987 年。从那时起,SQL 标准经过了多次修订,并融入了多种新技术。2019 年,一个新项目获批,主要是制定专注属性图数据库的平行标准,即数据库语言 GQL。这对标准机构和行业的重要程度不言而喻,因为这是 ISO 在近 35 年内首次发布的、新的数据库查询语言。

近几年,属性图数据库在大数据、NoSQL 技术领域变得越发重要。属性图数据的一大特点是,在数据中会创建关系,用户可直接编写声明式查询而无需指定关系。与将数据结构化为表的关系型模型不同,属性图模型在数据库内将数据结构化为图。这让基于模式的分析成为可能,并且可用极小的成本添加新类型数据。现实生活中,关于图的应用从数字孪生(Digital Twin)到反洗钱(Anti-Money Laundering),再到药物发现(Drug Discovery)、供应链分析(Supply Chain),以及为生成式人工智能(GenAI)提供的知识图谱支持,等等。这种新模型与语言的结合前景,以及在数据库领域内的显著且持续增长的用量,很大程度上是 SQL 的新 ISO 兄弟语言 GQL 的基础。

属性图数据库存储和检索点(顶点)和边(关系)。而 GQL 标准规定的声明式语言受启发于现有属性图数据库产品和 SQL 标准。

GQL 标准是一个完整的数据库语言,支持创建、读取、更新和修改属性图数据。而这里的属性图数据可以是 Schema Free 的,也可以通过完整的属性图模式(Graph Type)进行约束。

GQL 标准约定了多种多样的数据类型,来支持字符和字节字符串、定点数、浮点数以及嵌套数据。GQL 查询中所用的图模式匹配(GPM,Graph Pattern Matching)语言非常强大,允许用户编写相对简单的查询来进行复杂的数据分析。

作为一种数据库语言,GQL 不只是一种图查询语言。与 SQL 一样,它设定了一个从持久化且可扩展的目录初始化的运行时环境。目录列出了存储的数据对象,这些对象通过经过身份验证的会话,并利用事务性工作单元来进行访问。它支持插入、更新、删除和读取属性图,这些属性图是由目录中的条目创建和引用的。这些图的内容可以是无约束的,也可以由管理员定义的数据模型(图类型)进行约定。这些图类型是 GQL 中“GQL-schema”的一部分,即目录中用于存放元数据和数据定义的专用容器。此外,通过定义数据的所有权归经过身份验证的用户所有,GQL-schema 也支持了一个基本的安全模型。

GQL 吸收了众多现有商业图查询语言的特性,包括由 Neo4j Inc. 开发的 openCypher、Tigergraph Inc. 的 GSQL、Oracle Inc. 的 PGQL,以及 LDBC 的研究语言 G-Core。此外,它还与 SQL/PGQ 共享一个从 Cypher 派生的图模式匹配子语言(非正式称为 GPML4),该语言是 SQL 的只读扩展,允许将通过专用视图访问的表格数据当作属性图处理。GPML 通过将模式图与数据图进行匹配,返回数据图的子图的表格表示形式。

属性图的应用场景

属性图被私人和公共金融机构广泛使用,用来识别潜在的犯罪行为,如:洗钱。这种使用场景既出于需要,有时也是法律要求。例如,一系列的资金转移——从 A 到 B,再从 B 到 C,最后从 C 回到 A——可能暗示洗钱活动的存在。同样地,在评估投资组合风险、借贷双方的偿债能力、反欺诈、提供客户 360 度全方位视图以及其他多种场景中,属性图也发挥着重要作用。

属性图同样用于模拟公共事业基础设施,如:水资源分配、电力分配和电信网络。在这些场景中,典型的查询包括:评估在配电网络特定节点增加新负载或分布式发电设施(例如:风能或太阳能)可能带来的影响和收益,以及进行网络设计、维护、故障诊断和安全管理。

属性图的其他应用场景还包括(但不限于)社交网络、物料清单、访问控制、产品推荐、引用网络、路由策略、影响力检测、蛋白质交互网络、影响评估,以及生成式 AI。

GQL 示例

以下示例主要介绍了如何使用 GQL 部分功能:

查询和图模式匹配

添加、修改以及删除数据

事务处理

Schema Free 图和 Fixed Schema 图

查询和图模式匹配

GQL 查询采用了一种功能丰富的图模式匹配(GPM)语言。以下示例演示了如何查找与名为“Avery”的点存在一跳关系的所有点:

MATCH (a {firstname: 'Avery'})-[b]->(c)RETURN a, b, c

这里这里 MATCH 语句定义了变量 a、b 和 c,并能在查询的后续部分引用,本例中是在

RETURN语句中。而用户编写查询语句时,不用预先了解“Avery”与其他点之间的具体关系。

事实上,GQL 标准并未规定返回数据的显示方式。下面是一种可能的展示方式,以可视化图的形式:

图可视化工具能够展示出查询到的数据之间的关系,并在需要时展开显示更多细节。

而数据的另一种展示方式是文本。

MATCH (a {firstname: 'Avery'})-[b]->(c)RETURN a.firstname, b, c.name+------------------------------------------------------------+| a.firstname | b | c.name |+------------------------------------------------------------+| "Avery" | [:LivesIn {since: 1980-07-15}] | "Granville" || "Avery" | [:HasPet] | "Unique" |+------------------------------------------------------------+

GQL GPM 支持更复杂的查询,例如:量化路径模式。例如:

/ 简单的查询 /MATCH ((a)-[r]->(b)){1,5}RETURN a, r, b

此示例将查找一个点 a 认识(r)另外一个点 b 的路径,而这个路径长度最多为 5,即一个五跳查询。当然,GQL 支持你演变出更复杂的量化路径模式。

增删改图数据

上面示例中的 GQL 数据是使用 INSERT 语句创建的。例如:

/ 插入 1 个点 /INSERT (:Pet {name: 'Unique', pettype: 'Dog'})

在这个示例中,“Pet”是一个标签,而“name”和“pettype”是标签的属性。标签是可以存在或不存在的标识符。属性则是名称和值的组合。无论是点(顶点)还是边(关系),都可以拥有标签和属性。

在 GQL 表达中,点被圆括号()包围,边则被方括号[]包围。

同样的,GQL 的插入语句也能用上复杂的图模式。下面的语句将插入两个点,以及它们之间的一条边。

/ 插入 2 个点及 1 条边 /INSERT (:Person {firstname: 'Avery' ,lastname: 'Stare' ,joined: date("2022-08-23")}) -[:LivesIn {since: date("2022-07-15")}]-> (:City {name: 'Granville' ,state: 'OH' ,country: 'USA'})

MATCH语句的结果后面也可以接着INSERT语法:

/ 新建一条连接 Avery 和宠物狗 Unique 的边 /MATCH (a {firstname: 'Avery'}) ,(d {name: 'Unique'})INSERT (a)-[:HasPet]->(d)

在这个示例中,a 和 d 是别名。MATCH 语句定义了它们,并持续有效直到整条 GQL 语句的结束。MATCH 的结果是两个点表达式返回的点的笛卡尔积。由于每个点表达式仅返回一个点,因此INSERT操作将只插入一条边。

修改 GQL 数据的方法包括:识别要更新的点或边,再设置或删除它们的属性。例如:

MATCH (d:Pet) where d.name="Unique"SET d.weight_kg=26
MATCH (e {lastname: 'Stare'})REMOVE e.joined

GQL 数据的删除是通过识别点,断开(DETACH )其关系,再删除点来实现的。例如:

/ 删除 Avery 和相关的点 /MATCH (a {firstname: 'Avery'})-[b]->(c)DETACH DELETE a, c

事务

GQL 支持可序列化的事务,且支持额外的自定义事务模式。事务可以通过显式或隐式的START TRANSACTION语句启动,并通过COMMIT或ROLLBACK语句结束。GQL 还支持自动事务的启动和提交。

Schema Free 与 Fixed Schema 图

GQL 支持 Schema Free 图,这种图对输入数据没有任何限制;同时也支持 Fixed Schema 图,这种图可以通过定义图类型来创建,图类型明确定义了可以存在于该图中的点和关系的类型。

Schema Free 图接受插入任意数据。这方便快速启动数据系统,但数据的控制问题则留给了应用开发者,或者是用户。

GQL 标准还支持创建图类型。图类型是一种数据模板,通过明确规定在基于特定图类型创建的 Fixed Schema 图中能够包含的点类型和边类型,从而限制图库的内容。一个 Fixed Schema 图只能包含图类型中规定的点类型和边类型。

管理员可以在 GQL 模式下,通过目录层次结构,基于图类型创建图。也可以基于单一图类型创建多个图。

以下图类型定义了 2 种点类型和 2 种边类型:

/ 示例改编自 Alastair Green 2024-03-26 /CREATE GRAPH TYPE /MyFolder/control/fraud_TYPE // DDL (customer:Customer => {id::STRING, name::STRING}), (account:Account => {no::STRING, acct_type::STRING }), (customer)-[:HOLDS]->(account), (account)-[:TRANSFER {amount::INTEGER}]->(account)

使用图类型创建图时,图的内容将被限制为图类型中所描述的点类型和边类型。

CREATE GRAPH /MyFolder/control/fraud / 图名为 “fraud” / TYPED /MyFolder/control/fraud_TYPE / 图类型是 fraud_TYPE /

当数据修改完成时,修改内容必须符合图类型指定的限制。如果数据不符合图类型定义,则该语句会导致异常,并且将进行事务回滚。

USE GRAPH fraudINSERT // DML (d:Customer {id: 'AB23', name: 'Doe'}), (r:Customer {id: 'CH45', name: 'Reiss'}), (a1:Account {no: '25673890', type: 'C'}), (a2:Account {no: '05663981', type: 'C'}), (d)-[:HOLDS]->(a1), (r)-[:HOLDS]->(a2), (a1)-[:TRANSFER {amount: 5000}]->(a2)USE GRAPH fraudMATCH // DQL (c1:Customer)-[:HOLDS]->(a1:Account) -[t:TRANSFER]-> (a2:Account)<-[:HOLDS]-(c2:Customer)RETURN c1.name, a1.no, t.amount, c2.name, a2.no/'Doe', '25673890', 5000, 'Reiss', '05663981' 1 row returned/

点和边与表格相比如何?

在 SQL 数据库中,数据以记录的形式存储在表格中,每个表格都有固定的结构。表格之间的关系可以通过约束来强制实施,但编写查询的人(或程序)需要理解表格之间的关系。

在属性图数据库中,抽象级别被提高,允许将一组表格视为一个单元(称为“数据乘积 Data Product”)。

带有特定标签(或多个标签)的点,在功能上类似于一个表格。然而,MATCH 查询可以根据点的指定特征来访问点,而不受标签的限制。

边被用来描述节点之间的关系。编写查询的人(或程序)可以查询这些关系,而不需要预先知道这些关系的具体情况。

总结

本文简要介绍了 GQL 数据库语言的功能。完整的 GQL 语言还支持额外的功能,这些超出了本文档的范围。GQL 数据库语言的设计考虑了未来的发展,将来准备在目录中加入更多形式的数据,并已经为返回非表格结果(例如图)做好了准备。

作为国内图数据库领域的先驱,杭州悦数一直致力于推进图行业前沿技术的进步发展。我们的多位图数据库研发专家是ISO/IEC JTC 1/SC 32/WG 3 工作组成员,参与 GQL 标准的制定以及后续版本的更新。后续,我们的专家将更详细地介绍 GQL 以及它对于图行业、对于企业用户的意义和能力,敬请关注。

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
7月前
|
存储 XML JSON
【软件设计师备考 专题 】深入理解代码标准和文件格式标准
【软件设计师备考 专题 】深入理解代码标准和文件格式标准
116 0
|
7月前
|
存储 数据采集 人工智能
信息系统框架标准TOGAF
信息系统框架标准TOGAF
245 7
|
自然语言处理
IEC 61131-3标准编程入门
IEC 61131-3标准编程入门
|
7月前
|
设计模式 uml
【软件设计师备考 专题 】标准制订过程和各类标准的基本知识
【软件设计师备考 专题 】标准制订过程和各类标准的基本知识
85 0
|
7月前
|
网络协议 物联网 网络架构
【网络奇缘】- 计算机网络|分层结构|ISO模型
【网络奇缘】- 计算机网络|分层结构|ISO模型
73 0
|
人工智能 缓存 芯片
Chiplet 团体标准《小芯片接口总线技术》标准草案介绍
Chiplet 团体标准《小芯片接口总线技术》标准草案介绍
1303 0
Chiplet 团体标准《小芯片接口总线技术》标准草案介绍
|
存储 安全 算法
阿里云主导的ITU-T国际标准物联网标识协作服务标准正式发布
由阿里云牵头制定的国际标准ITU-T Y.4462《开放物联网身份标识协作服务要求及功能架构》已正式发布,标准通过将阿里云的优秀物联网安全实践以标准的形式推广到全球产业界,帮助行业解决物联网设备标识关联服务,也是中国互联网公司在IoT身份标识领域正式发布的首个国际标准。
412 12
阿里云主导的ITU-T国际标准物联网标识协作服务标准正式发布
|
程序员
计算机数据表示方法及工业标准IEEE754讲解教程
计算机数据表示方法及工业标准IEEE754讲解教程
322 0
计算机数据表示方法及工业标准IEEE754讲解教程
|
人工智能
IEEE通过共享学习标准立项 蚂蚁金服引领国际标准制定
近日,在IEEE正式立项《共享学习系统技术框架及要求》(Standard for Technical Framework and Requirements of Shared Machine Learning)国际标准,标准编号为IEEE P2830 。
927 0
IEEE通过共享学习标准立项 蚂蚁金服引领国际标准制定
|
人工智能 物联网 区块链
关于区块链标准、定义,IEEE的最新研讨讲了这几点
委员会委员、受邀的数十位业界顶级专家和多名IEEE高管就基于区块链的资产交易的应用场景、专利分布、支撑技术、政策监管等方面进行了详细而深入的探讨。
1390 0

热门文章

最新文章