一种处理图数据的方法及系统与流程

文档序号:16135281发布日期:2018-12-01 00:52阅读:214来源:国知局

本发明实施例涉及图数据处理技术领域,具体涉及一种处理图数据的方法及系统。

背景技术

随着图数据在现实生活中的广泛应用,如何高效处理图数据,即如何对图数据进行高效地管理和计算,成为了一个热点问题。

社区结构作为图的一个重要属性,对优化图数据的管理和计算具有重要的价值和意义。graphchi-db是现有的一个图数据库系统,它能存储有向有权图。但是graphchi-db对社区相关的查询计算等无相关支持,无法进行基于社区结构的过滤和查询计算,从而导致对图数据处理的效率不够高效。

因此,如何避免上述缺陷,从而提高对图数据处理的效率,成为一个亟须解决的问题。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供一种处理图数据的方法及系统。

第一方面,本发明实施例提供一种处理图数据的方法,所述方法包括:

接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;

解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

第二方面,本发明实施例提供一种处理图数据的系统,所述系统包括:

语言模块,用于接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;

处理模块,用于解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,

所述处理器和所述存储器通过所述总线完成相互间的通信;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:

接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;

解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:

所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如下方法:

接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;

解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

本发明实施例提供的处理图数据的方法及系统,通过接收依据基于社区结构的图数据库系统的语言进行编写的处理指令,生成表示处理指令的语义的中间信息,并解析出对应的数据处理方式,执行该处理指令,能够提高对图数据处理的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例处理图数据的方法流程示意图;

图2为本发明实施例处理图数据的流程图;

图3为本发明实施例处理图数据的系统结构示意图;

图4为本发明实施例提供的电子设备实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例处理图数据的方法流程示意图,如图1所示,本发明实施例提供的一种处理图数据的方法,包括以下步骤:

s101:接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的。

具体地,系统接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的。即该处理指令是依据支持社区相关处理的语言进行编写的程序代码,通常,由于处理指令的可读性不强,不便于识别处理指令所表示的内容,可以对处理指令进行解析,从而生成能够表示处理指令的语义的中间信息(中间信息便于识别出处理指令要表示的内容)。中间信息进一步可以理解为对处理指令解析出来的分词所表示的信息,举例说明如下,如下处理指令为插入边的语句:

insertedgestmt:=insertedgesedgewithvaluestmtlist

insertedgestmt对应的是插入边的语句,insert和edges是两个关键字。edgewithvaluestmtlist对应包含至少一个edgewithvaluestmt(含待插入边信息)的信息列表。每条边的信息edgewithvaluestmt由以下组成:包含边信息的三元组(起点id、终点id、边类型id)、关键字values、左括号、属性列表、右括号。其中,边的属性列表的第一个属性可以是边的id,后面可以是用户自己设定的属性。参照上述举例,insert对应的中间信息是“插入”动作;edges对应的中间信息是“边”对象;edgewithvaluestmtlist对应的中间信息是“边的信息列表”。

s102:解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

具体地,系统解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。相关信息可以为图数据中结点间的边、结点的属性、边的属性以及结点和社区间的从属关系。所述数据处理方式可以包括数据更新处理方式和/或数据查询计算处理方式;相应地,所述根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令,包括:

若所述数据处理方式为所述数据更新处理方式,调用所述数据更新处理方式对应的第一应用程序编程接口,并通过所述第一应用程序编程接口获取所述相关信息,以进行数据更新处理;

和/或,

若所述数据处理方式为所述数据查询计算处理方式,调用所述数据查询计算处理方式对应的第二应用程序编程接口,并通过所述第二应用程序编程接口获取所述相关信息,根据所述相关信息进行数据查询计算处理。

所述数据更新处理方式可以包括:

对所述结点做插入、删除和属性修改;

和/或,

对所述边做插入、删除和属性修改。

在所述根据所述相关信息进行数据查询计算处理的步骤之后,所述方法还包括:

在前台界面显示所述数据查询计算处理的处理结果。

参照上述举例,对中间信息的解析结果为:根据边的信息列表进行边插入,对应的数据处理方式为数据更新处理方式,调用数据更新处理方式对应的第一应用程序编程接口,并通过该第一应用程序编程接口获取该相关信息,以进行插入边的处理。

本发明实施例提供的处理图数据的方法,通过接收依据基于社区结构的图数据库系统的语言进行编写的处理指令,生成表示处理指令的语义的中间信息,并解析出对应的数据处理方式,执行该处理指令,能够提高对图数据处理的效率。

图2为本发明实施例处理图数据的流程图,如图2所示:

接收用户的输入信息,输入信息可以包括:(1)用户直接输入的边文件和属性文件;(2)用户输入的纯文本。对第一种情况无需特别处理,对第二种情况,则可以通过信息提取模块从纯文本中提取出实体和边及相关属性,生成边文件和属性文件。

若用户提供了包含结点和社区间从属关系的社区信息文件,则直接将(1)中得到的边文件和属性文件与此社区信息文件输入存储模块进行存储;若用户未提供社区信息文件,则将边文件输入社区发现模块(对应图2的社区发现模块),通过该社区发现模块进行社区发现,生成社区信息文件,将(1)中得到的边文件和属性文件与此社区信息文件输入存储模块进行存储。

用户对系统中数据进行处理和使用时,是与语言模块直接交互的。用户输入语句,语言模块对语句进行解析生成表示所述处理指令的语义的中间信息,随后将中间信息输入处理模块(对应图2中的数据管理模块)进行解析。

处理模块中的中间结构解析器解析中间信息,若发现用户输入的是数据更新的相关内容,即结点或边的插入、删除和属性修改,则调用数据更新相关的api(对应第一应用程序编程接口),通过该api与存储模块的交互进行数据更新;若发现用户输入的是查询计算相关的语句,则调用查询计算相关api(对应第二应用程序编程接口),该api通过访问存储模块获得相关数据,使用这些数据进行计算获得处理结果(对应图2的查询或计算结果),可以在前台界面显示该处理结果。

在上述实施例的基础上,所述接收用户输入的对图数据的处理指令的步骤之前,所述方法还包括:

接收用户的输入信息;所述输入信息包括边文件和属性文件。

具体地,系统接收用户的输入信息;所述输入信息包括边文件和属性文件。边文件记录图中每条边关联的两个结点的id,每个结点可以表示社交网络中的一个人,结点之间由边连接,表示人与人之间的联系,该联系可以包括使用社交工具进行过的联系、存在血缘关系等的人身属性的联系等。属性文件记录结点和边的属性信息,如当结点对应的是人时,则结点的属性对应人的属性信息,例如人的姓名、性别、年龄、学历等;当两个结点的边表示两个人互相认识,则边的属性对应两个人认识这一事件的相关信息,例如认识的时间、认识的地点等。

若预先获取到包含所述图数据中结点和社区间的从属关系的社区信息文件,基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。

具体地,系统若预先获取到包含所述图数据中结点和社区间的从属关系的社区信息文件,基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。社区信息文件记录了某个结点属于某个社区的从属关系信息。

本发明实施例提供的处理图数据的方法,通过预先将边文件、属性文件和社区信息文件中的信息进行基于社区的存储,方便获取图数据和相关信息,保证能够对图数据进行处理。

在上述实施例的基础上,所述方法还包括:

若预先获取不到包含所述图数据中结点和社区间的从属关系的社区信息文件,采用预设社区发现算法获取所述图数据中的各结点所属的社区,将结点和社区间的从属关系存入社区信息文件,并基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。

具体地,系统若预先获取不到包含所述图数据中结点和社区间的从属关系的社区信息文件,采用预设社区发现算法获取所述图数据中的各结点所属的社区,将结点和社区间的从属关系存入社区信息文件,并基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。预设社区发现算法可以是lpa、hanp等。用户可以自己选择社区发现的算法,也可以由系统根据图数据对应的网络结构推荐最合适的社区发现算法。

本发明实施例提供的处理图数据的方法,通过采用先使用预设社区发现算法获取图数据中的各结点所属的社区,再存储结点和社区间的从属关系得到社区信息文件的方法,能够保证获取到社区信息文件。

在上述实施例的基础上,所述输入信息包括纯文本,所述纯文本不包括所述边文件和所述属性文件;相应地,所述方法还包括:

从所述纯文本中提取出所述边文件和所述属性文件。

具体地,系统从所述纯文本中提取出所述边文件和所述属性文件。可以训练一个双向gru加单词层attention的网络来进行文本中关系和属性的抽取,对于得到的关系进行整理、去重后,生成满足格式要求的边文件和属性文件。

本发明实施例提供的处理图数据的方法,对于不同的输入都能够获取到边文件和属性文件,保证对图数据处理的正常进行。

图3为本发明实施例处理图数据的系统结构示意图,如图3所示,本发明实施例提供了一种处理图数据的系统,包括语言模块301、和处理模块302,其中:

语言模块301用于接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;处理模块302用于解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

具体地,语言模块301用于接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;处理模块302用于解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

本发明实施例提供的处理图数据的系统,通过接收依据基于社区结构的图数据库系统的语言进行编写的处理指令,生成表示处理指令的语义的中间信息,并解析出对应的数据处理方式,执行该处理指令,能够提高对图数据处理的效率。

在上述实施例的基础上,所述系统还包括:

输入模块303用于接收用户的输入信息;所述输入信息包括边文件和属性文件;存储模块304用于若预先获取到包含所述图数据中结点和社区间的从属关系的社区信息文件,基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。

具体地,输入模块303用于接收用户的输入信息;所述输入信息包括边文件和属性文件;存储模块304用于若预先获取到包含所述图数据中结点和社区间的从属关系的社区信息文件,基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。

本发明实施例提供的处理图数据的系统,通过预先对边文件、属性文件和社区信息文件中的信息进行基于社区结构的存储,方便获取图数据,保证能够对图数据进行处理。

在上述实施例的基础上,所述系统还包括:

社区发现模块305用于若预先获取不到包含所述图数据中结点和社区间的从属关系的社区信息文件,采用预设社区发现算法获取所述图数据中的各结点所属的社区,将结点和社区间的从属关系存入社区信息文件,并基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。

具体地,社区发现模块305用于若预先获取不到包含所述图数据中结点和社区间的从属关系的社区信息文件,采用预设社区发现算法获取所述图数据中的各结点所属的社区,将结点和社区间的从属关系存入社区信息文件,并基于社区结构对所述边文件、所述属性文件和所述社区信息文件中的信息进行存储。

本发明实施例提供的处理图数据的系统,通过采用先使用预设社区发现算法获取图数据中的各结点所属的社区,再存储结点和社区间的从属关系得到社区信息文件的方法,能够保证获取到社区信息文件。

在上述实施例的基础上,所述输入信息包括纯文本,所述纯文本不包括所述边文件和所述属性文件;相应地,所述系统还包括:

信息提取模块306用于从所述纯文本中提取出所述边文件和所述属性文件。

具体地,信息提取模块306用于从所述纯文本中提取出所述边文件和所述属性文件。

本发明实施例提供的处理图数据的系统,对于不同的输入都能够获取到边文件和属性文件,保证对图数据处理的正常进行。

本发明实施例提供的处理图数据的系统具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。

下面继续结合图2对其中的几个主要模块进行进一步的介绍:

信息提取模块306

信息提取模块306的功能是从用户输入的文本中抽取出实体、关系及属性信息,生成对应的边信息文件和属性文件。可以训练一个双向gru加单词层attention的网络来进行文本中关系和属性的抽取,对于得到的关系进行整理、去重后,生成满足格式要求的边文件和属性文件。

社区发现模块305(对应图2中的社区发现模块)

当用户的文件输入不包括结点社区信息文件时,系统调用社区发现模块305对数据中的结点进行社区发现。社区发现模块305内实现了多种社区发现的算法,如lpa、hanp等。用户可以自己选择社区发现的算法,也可以由系统根据图数据对应的网络结构推荐最合适的社区发现算法。社区发现模块的输出是社区信息文件,文件中每行可以包含两个元素,分别是结点id和结点属于的社区的id。

存储模块304

存储模块304解析边信息文件、属性文件和社区信息文件,对图数据进行基于社区结构的存储。

结点和边的属性信息存储在外部的关系型数据库中,通过关系型数据库提供的api对其中的数据进行管理和更新,便于进行属性的增减与属性值的修改。边信息存储在文件中,文件中的边信息用region、block、list三层结构进行存储。其中每个list存储的是以某个结点为起点的若干条边,block存储若干list,region则存储若干block。其中,每个block中存储的所有list中的边的起点都是属于同一社区的,而每个region中存储的block也是属于同一社区的(即每个region中的所有block的所有list中存储的边的起点均属于同一社区)。一个社区可以存储在多个region中,每个region可以存储至多一个社区的信息。block结构是磁盘操作的基本单位,因此通过将block的大小设置为磁盘块大小的整数倍或整数倍的倒数可以提升磁盘访问效率。同时,对于list中的每条边,还存储了下一条有相同终点的边的存储的位置,便于遍历一个结点的所有入边。

为了高效地访问结点的所有出边,建立b+树索引。其中b+树的叶子结点包含的信息包括结点的id、结点所属社区id、存储有这个结点的出边的所有block在文件中的首地址。当存储某个结点的出边的block数量过多时,将这部分信息存储到另一个文件中,同时在该叶子结点中存储这部分信息在这个文件中的存储位置。通过b+树索引,既能快速获取结点所属的社区,又能高效地获得结点出边的存储位置。

在分布式存储任务中,可以通过基于社区结构的数据划分来提升分布式存储的效果。每次首先将一个社区内所有的结点和以这些结点为起点的所有边分配给一台机器,随后将与这个社区联系紧密的社区中的结点和边也分配给这台机器,直到这台机器中存储的边数超过了给定的阈值,则开始向下一台分配数据。这是一种贪心的方法,能在使得关系紧密的结点大部分存储在相同的机器上的同时,尽量保证各机器间负载均衡,从而减少查询和计算处理过程中机器间的数据请求,提升数据处理的效率。

语言模块301

语言模块301的目的在于给用户提供一个方便、快速管理数据的方式。针对基于社区结构的图数据库系统,在基于社区结构的图数据库系统的语言中添加了对社区的相关支持,包括插入结点时给定结点所属社区、在指定社区中进行查询计算、查询社区相关的信息(如结点所属社区、社区中有哪些结点)等。

处理模块302(对应图2中的数据管理模块)

通过处理模块302调用计算和查询相关的api,以实现目标功能,如查询结点的邻居结点、查询结点间距离、查询结点的介数中心度和子图匹配等。在基于社区结构的图数据库系统中,计算和查询可以利用社区信息进行优化,例如上述的子图匹配算法,可以通过将匹配过程分为社区内子图匹配和社区间子图匹配的方法提升匹配速度。基于社区结构的图数据库系统能在查询和计算中利用社区结构信息进行剪枝、优化,加快查询和计算的速度。

本发明实施例所具有的效果如下:

输入方面,支持多种输入模式,提供了从文本中抽取实体、关系和属性的接口;对于社区结构未知的图数据,提供了社区发现的相关接口。

存储方面,构造了region、block、list三层存储结构,同时建立b+树索引,能高效访问结点相关的边信息。基于社区结构的图划分,使得在分布式任务中,联系紧密的结点尽可能存储在相同机器的同时,尽量保证机器间负载均衡,减少查询计算中机器间的请求,提高查询计算的速度和效率。

语言方面,设计了一种基于社区结构的图数据库系统的语言,在支持基本的数据插入、删除、更新、查询和计算等操作的同时,添加了对社区相关的支持,例如支持插入结点到指定社区中、支持查询过程中基于社区结构的过滤、支持查询结点所属社区的相关信息等。现有的语言难以利用系统中的社区信息,这种语言能充分利用系统中的社区相关信息,丰富系统的功能。

查询和计算方面,能根据社区进行参与查询和计算的数据的筛选和过滤,扩展了查询和计算的功能,加快了查询和计算的速度;能通过系统中存储的社区结构信息对查询和计算进行剪枝和优化,提升了速度和效率。而这些是现有系统难以做到的。

图4为本发明实施例提供的电子设备实体结构示意图,如图4所示,所述电子设备包括:处理器(processor)401、存储器(memory)402和总线403;

其中,所述处理器401、存储器402通过总线403完成相互间的通信;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收用户输入的对图数据的处理指令,根据所述处理指令生成表示所述处理指令的语义的中间信息;所述处理指令是依据基于社区结构的图数据库系统的语言进行编写的;解析所述中间信息,并获取解析结果对应的数据处理方式,根据所述数据处理方式和预先存储的图数据的相关信息执行所述处理指令。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1