悦数图数据库

首页>博客>行业科普>GQL图模式匹配原理与应用

GQL图模式匹配原理与应用

GQL图模式匹配

GQL是一种基于图数据模型的面向对象的语义查询语言,它是一种具有图结构用户界面(GUI)和操作对象(Object)的高级编程语言。GQL语言中有大量的模式匹配操作,如基本的“搜索”、“匹配”等。本文通过对 GQL中模式匹配的基本操作进行详细分析,阐述了 GQL中模式匹配的原理和方法,并通过一个简单的例子说明了模式匹配在 GQL系统中的应用。

定义

GQL图模式匹配是指从一个图数据模型中的一个节点出发,返回与该节点相关联的另一个节点。通常情况下,图中的节点可以是实体、属性或者关系。在图数据模型中,每个节点都有一个唯一的 ID (或者称为路径 ID),表示该节点在图中的位置。对于给定的图,通过连接两个节点(或者称为路径),可以找到其中的一个节点。

GQL图模式匹配是一种基于图论的操作,它由模式匹配算法和 GQL查询组成。模式匹配算法是一种基于图理论的匹配算法,它是把一个问题描述为一个图模型。在这个问题中,问题的关键在于确定某个特定节点上元素是否为某条路径上元素。当问题描述为图模型时,这个问题就可以转化为给定一个图,在这张图中寻找某条路径上元素的问题。

为了实现模式匹配,需要定义两个基本概念:一是路径;二是模式。路径是由节点连接起来形成的一条路径,而模式则是两个节点之间相关联的一条路径。

GQL图模式匹配查询中使用的匹配算法称为模式匹配算法。它由两个步骤组成: (1)识别和确定数据所代表的实体或属性; (2)找到所识别出的实体或属性之间可能存在的“路径”或“模式”。如果数据中包含多个实体或属性,则可能存在多条路径和多个模式; (3)确定所要查找对象中最可能存在的那条路径和那个模式; (4)如果在查询中没有发现匹配,则返回“不匹配”结果。

模式匹配是 GQL语言中最为重要、应用最为广泛、且最具挑战性的操作之一。GQL语言中定义了很多基本操作和方法,如:“匹配”、“搜索”、“重排”等,它们在 GQL系统中都有着广泛的应用。

匹配操作的基本过程

GQL图模式匹配中的匹配操作包括两种类型:一种是基于模式匹配的匹配操作,另一种是基于查询的匹配操作。模式匹配是一种基于模式的匹配算法,在这种算法中,一个节点中包含多个节点之间的模式,每个节点都与其对应的多个节点相关联。当查询时,首先将查询中所要匹配的属性映射到对应的图中,然后查找图中所有节点对应的模式,如果找到对应的模式则返回结果给查询者,否则返回错误结果。

GQL图模式匹配有三种类型: (1)基于模式搜索(Pattern search):根据节点在图中的位置搜索其中包含相应模式元素(或属性)的图。当所找到的节点包含多个模式元素时,将其与其中一个模式元素进行比较。如果该节点包含多个相同元素且与另一个节点有某种属性关联时,则返回结果。 (2)基于查询进行匹配:查询中所要匹配的属性与某个特定图中包含相应数据元素相关联。 (3)基于模式匹配和查询进行组合:将多个表之间进行组合。

GQL图模式匹配的分类

基本的匹配操作包括“匹配”、“排序”、“删除”和“添加”等,这四种基本操作组成了 GQL系统中模式匹配的整个过程。

1.匹配:将输入中的数据和一组已知数据进行比较,如果找到相同的数据则认为是匹配,否则认为不是。 2.排序:将输入中的数据按照某种规则进行排序,如果找到了一个已知数据大于输入中所有数据时,就认为是排序。 3.删除:将输入中的数据删除,即将输入中不存在的数据进行删除。 4.添加:将输入中不存在的数据添加到已有数据中。 5.添加和删除都属于基本操作,它们之间可以相互转化。例如“添加”和“删除”可以相互转换为“添加”和“删除”。 6.特殊操作是在基本操作的基础上进行操作,即在进行匹配时,需要对输入中的某种组合进行特殊处理才能完成匹配。例如“搜索”需要在输入模式下进行搜索,而“匹配”则需要在输入模式下进行搜索。 7.高级操作是对基本操作和特殊操作的综合,它涉及到了上述所有基本操作和特殊操作。例如“查询”、“排序”、“删除”和“添加”等都是高级操作。高级操作只能通过将输入模式转换为相应的组合模式来实现,而不能直接通过代码实现。

匹配的基本算法

模式匹配是一种非常重要的计算,其目的是找出给定数据集中的所有对象的子集。其基本过程包括以下几个步骤: 1.从数据集中选取一个匹配集合(匹配项)。 2.计算每个匹配项的相似度,若匹配项的相似度大于给定的阈值(一般设为0.9),则认为该数据集中没有这个匹配项。否则将待匹配数据集中的所有对象选取出来作为已有匹配项,即开始新一轮的计算。 3.若某个匹配项的相似度大于给定阈值,则将该数据集中所有对象选取出来作为已有匹配项;否则将待匹配数据集中所有对象选取出来作为新一轮的计算。 4.将上述步骤循环进行直到所有数据集中没有匹配项为止。 5.将待匹配对象集合中的元素(即匹配项)进行排序,得到一个有序集合。然后根据序列为匹配项建立一个有序表,并为该有序表找到一个最大匹配值,即为该数据集中最相似的对象。 6.最后对排序后的数据集进行相应处理,使之成为符合一定要求的新数据集。

模式匹配在 GQL中的应用举例

假设有一个名为“小红”的用户,他的数据表包含一组“小红”,的属性分别为“小红、小红的朋友”。当用户要求查询“小红的母亲是谁?”可以这样查询,此时,系统中有一个名为“小红”的图数据库,在图数据库中搜索“小红的母亲是谁?”,并返回结果集给用户。

上述例子中,图数据库包含两个节点:“小红”和“小红的母亲”,以及一个边:“小红的父亲”。为了查询这个图数据库,需要使用 GQL语言进行模式匹配操作。

在此将模式匹配作为一个基本操作来介绍。在上述例子中,如果要查询用户名为“小红”的数据表,就可以使用以下 GQL程序进行模式匹配:

首先定义一个名为“小红”的图数据库作为 GQL语言中的数据表,然后通过模式匹配操作在图数据库中搜索“小红”。

查找结果:在图数据库中找到了小红、其母亲和其朋友这三个节点。在此过程中,使用了两个操作:1)查找结果集;

2)使用模式匹配操作搜索到了数据表。

经过行业多年的讨论和行动,图查询语言 GQL(Graph Query Language)在 2024 年 4 月 12 日正式发布。GQL 是由国际标准化组织(ISO) 和 国际电工委员会(IEC) 共同制定的图数据库查询语言标准,正式编号为 ISO/IEC 39075。GQL 为管理和查询图数据确立了统一的标准。

与此同时,作为国内图数据库领域的先驱,悦数图数据库正式发布原生支持 GQL 的全新 v5.0 版本。该版本在继续提升分布式图数据库能力的同时,从概念定义、数据存储、计算框架、解析和执行计划等对齐 GQL 标准,完整支持 GQL 标准里的数据查询语言(DQL)、数据操控语言(DML)和数据定义语言(DDL),而并非是对 GQL 的简单兼容或适配,从而帮助企业用户全面拥抱 GQL,完整赋能基于 GQL 标准的分布式图数据库的能力。