CN115495617A - 一种属性图的压缩索引及查询方法 - Google Patents
一种属性图的压缩索引及查询方法 Download PDFInfo
- Publication number
- CN115495617A CN115495617A CN202211020089.9A CN202211020089A CN115495617A CN 115495617 A CN115495617 A CN 115495617A CN 202211020089 A CN202211020089 A CN 202211020089A CN 115495617 A CN115495617 A CN 115495617A
- Authority
- CN
- China
- Prior art keywords
- vertex
- attribute
- adjacent
- compression
- edge
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种属性图的压缩索引及查询方法,应用于属性图数据库系统,属性图数据库系统维护的属性图包括由多个顶点、边以及它们对应的属性,方法包括:根据属性图构建每个顶点的邻接表;根据每个顶点的邻接表构建图结构的压缩结构;根据图结构的压缩结构计算顶点/边编号,根据顶点/边编号和对应位数组获取属性在属性压缩索引中的定位,并从属性压缩索引进行属性值的提取;属性压缩索引包括顶点属性压缩索引和边属性压缩索引;位数组对应记录所有边属性/顶点属性的起始位置;根据图结构的压缩结构和属性压缩索引进行属性图的查询。本发明方法提升了属性图数据库的查询效率和降低了存储空间。
Description
技术领域
本发明属于数据处理技术领域,具体涉及一种属性图的压缩索引及查询方法。
背景技术
随着社交网络、电子商务等领域的快速发展,属性图数据库的应用愈发广泛,它支持高效的复杂关联关系分析,处理复杂、关联的网状数据的效率远高于传统关系型数据库。然而图数据通常较为复杂、庞大,这可能会导致图数据库在进行查询操作时读取大量数据,从而使查询效率低下。现有的图数据库通常使用以下方式提高查询效率:1.采用邻接表的方式存储图结构,所谓邻接表就是属性图中每个顶点对应一个列表,如这个顶点存在相邻顶点,则把相邻顶点依次存放于此列表中;通过邻接表建立图索引,可以加速获取顶点的关联边、关联顶点。2.使用B树等建立属性索引,加速在属性上的顶点和边检索。
但是,上述建立图或属性索引的方法在数据规模巨大时仍然存在查询效率低下的问题。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种属性图的压缩索引及查询方法。本发明要解决的技术问题通过以下技术方案实现:
本发明实施例提供了一种属性图的压缩索引及查询方法,应用于属性图数据库系统,所述属性图数据库系统维护的属性图包括由多个顶点、边以及它们对应的属性,所述方法包括:
根据所述属性图构建每个顶点的邻接表;
根据每个顶点的所述邻接表构建图结构的压缩结构;
根据所述图结构的压缩结构计算顶点/边编号,根据所述顶点/边编号和对应位数组获取属性在属性压缩索引中的定位,并从所述属性压缩索引进行属性值的提取;所述属性压缩索引包括顶点属性压缩索引和边属性压缩索引;所述位数组对应记录所有边属性/顶点属性的起始位置;
根据所述图结构的压缩结构和属性压缩索引进行属性图的查询;
其中,所述图结构的压缩结构包括编码序列、每个顶点的邻接表在编码序列中的起始位置、每个顶点的邻接表的差值总数、每个顶点的邻接表的第一个顶点编号;所述编码序列通过计算邻接表中相邻顶点编号之间的差值,并对所述差值编码得到的。
在本发明的一个实施例中,所述图结构的压缩结构包括外邻压缩结构和入邻压缩结构。
在本发明的一个实施例中,通过所述图结构的压缩结构访问邻接表中每个顶点对应邻接顶点编号表示为:
其中,i表示第i个顶点,Adji[j]表示第i个顶点通过所述图结构的压缩结构访问的邻接表中第j个邻接顶点编号,Sam[i]表示第i个顶点的邻接表的第一个顶点编号,Adji[j-1]表示第i个顶点通过所述图结构的压缩结构访问的邻接表中第j-1个邻接顶点编号,decompress()表示解码函数,入参为S、pos、nbits,S表示编码序列,nbits表示解码位数,X[i+1]存储第i+1个顶点的邻接表在编码序列中的起始位置,X[i]存储第i个顶点的邻接表在编码序列中的起始位置,Ngap[i+1]存储到第i+1个顶点的邻接表的差值总数,Ngap[i]存储到第i个顶点的邻接表的差值总数,pos=X[i]+(j-1)*nbits。
在本发明的一个实施例中,根据所述图结构的压缩结构计算顶点编号,根据所述顶点编号和对应位数组获取顶点属性在顶点属性压缩索引中的定位,并从所述顶点属性压缩索引进行顶点属性值的提取,包括:
根据顶点属性集建立顶点属性高阶熵压缩全文索引;所述顶点属性集包括所有顶点的顶点属性;
根据所述顶点编号和对应位数组计算该顶点编号在所述顶点属性集中的起始位置和结束位置;
根据所述顶点属性的起始位置和所述结束位置从所述顶点属性高阶熵压缩全文索引中提取对应的顶点属性值。
在本发明的一个实施例中,根据所述图结构的压缩结构计算边编号,根据所述边编号和对应位数组获取边属性在边属性压缩索引中的定位,并从所述边属性压缩索引进行属性值的提取,包括:
根据边属性集建立边属性高阶熵压缩全文索引;所述边属性集包括所有相邻顶点之间的边属性;
根据所述顶点编号获取对应边编号;
根据所述边编号和对应位数组计算该边编号在所述边属性集中的起始位置和结束位置;
根据所述边属性集中的起始位置和结束位置从所述边属性高阶熵压缩全文索引中提取对应的边属性值。
在本发明的一个实施例中,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化给定顶点编号和预设距离;
将所述给定顶点编号转换为给定全局编号;
将所述给定全局编号入队到FIFO队列中,初始化输出结果集;
从所述FIFO队列取出中间顶点编号,判断所述中间顶点编号与所述给定全局编号之间的距离是否小于所述预设距离,若小于,则查找所述给定顶点编号对应的未曾探索过的邻接顶点编号,并将所述邻接顶点编号入队到所述FIFO队列,并将该邻接顶点编号添加进所述输出结果集中,重复上述从所述FIFO队列取出过程,直至所述FIFO队列为空,返回所述输出结果集;
其中,所述邻接顶点编号通过所述图结构的压缩结构访问来获取。
在本发明的一个实施例中,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化给定顶点编号、预设距离和预设过滤条件;
将所述给定顶点编号转换为给定全局编号;
将所述给定全局编号入队到FIFO队列中,初始化输出结果集;
从所述FIFO队列取出中间顶点编号,判断所述中间顶点编号与所述给定全局编号之间的距离是否小于所述预设距离,若小于,则查找所述给定顶点编号对应的未曾探索过的邻接顶点编号,检查所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件,若满足,则将所述邻接顶点编号入队到所述FIFO队列,并将该邻接顶点编号添加进所述输出结果集中,重复上述从所述FIFO队列取出过程,直至所述FIFO队列为空,返回所述输出结果集;
其中,所述邻接顶点编号通过所述图结构的压缩结构访问来获取;
所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件通过所述边属性压缩索引提取的边属性值来检查。
在本发明的一个实施例中,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化第一给定顶点编号、第二给定顶点编号和预设过滤条件;
判断所述第一给定顶点编号和第二给定顶点编号是否为同一顶点,若是返回距离为0,否则将所述第一给定顶点编号和所述第二给定顶点编号转换为第一给定全局编号和第二给定全局编号;将所述第一给定全局编号入队到FIFO队列中,初始化距离为0,从所述FIFO队列取出中间顶点编号,判断所述中间顶点编号与所述第二给定全局编号是否为同一顶点,若是则返回距离,否则查找所述第一给定顶点编号对应的未曾探索过的邻接顶点编号,检查所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件,若满足,则将所述邻接顶点编号入队到所述FIFO队列,并将距离加1,重复上述从所述FIFO队列取出过程,直至所述FIFO队列为空,返回距离;
其中,所述邻接顶点编号通过所述图结构的压缩结构访问来获取;
所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件通过所述边属性压缩索引提取的边属性值来检查。
在本发明的一个实施例中,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化给定顶点编号、给定顶点属性、预设距离和预设过滤条件;
将所述给定顶点编号转换为给定全局编号;
将所述给定全局编号入队到第一FIFO队列中,初始化输出结果集;
从所述第一FIFO队列取出第一中间顶点编号,判断所述第一中间顶点编号与所述给定全局编号之间的距离是否小于所述预设距离,若小于,则查找所述给定顶点编号对应的未曾探索过的第一邻接顶点编号,并入队所述第一FIFO队列,检查所述第一中间顶点编号与所述第一邻接顶点编号是否满足所述预设过滤条件,若满足,查找所述第一邻接顶点编号的顶点属性,比较所述第一邻接顶点编号的顶点属性和所述给定顶点属性是否同属性,若同属性,则将所述第一邻接顶点编号入队到第二FIFO队列,从所述第二FIFO队列中取出第二中间顶点编号,查找所述第一邻接顶点编号的未曾探索过的第二邻接顶点编号,根据所述第二邻接顶点编号的标签获取所述第二中间顶点编号的相关信息,并将该第二中间顶点编号的相关信息添加进所述输出结果集中,重复上述从所述第二FIFO队列取出过程,直至所述第二FIFO队列为空,继续重复上述从所述第一FIFO队列取出过程,直至所述第一FIFO队列为空,返回所述输出结果集;
其中,所述第一邻接顶点编号、所述第二邻接顶点编号均通过所述图结构的压缩结构访问来获取;
所述第一中间顶点编号与所述第一邻接顶点编号是否满足所述预设过滤条件通过所述边属性压缩索引提取的边属性值来检查;
所述第二中间顶点编号的相关信息通过所述顶点属性压缩索引提取的顶点属性值来获取。
本发明的有益效果:
本发明提出的属性图的压缩索引及查询方法,不再是采用传统邻接表存储及查询方式,而是为了降低存储过程中数据的存储量,提出了一种构建新的邻接表存储及查询方式,具体地:根据每个顶点的邻接表构建图结构的压缩结构,由构建的图结构的压缩结构来访问邻接表中每个顶点对应邻接顶点编号,实现属性图的压缩存储,使得属性图数据库的查询效率获得提升;同时,本发明属性图数据库查询过程中,还通过对顶点属性和边属性建立对应的顶点属性压缩索引、边属性压缩索引,支持在顶点和边的属性压缩索引上的各种类型属性图的查询操作,进一步达到提升属性图数据库的查询效率。
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
图1是本发明实施例提供的一种属性图的压缩索引及查询方法的流程示意图;
图2是本发明实施例提供的属性图的图结构示意图;
图3是本发明实施例提供的提取边属性的流程示意图;
图4是本发明实施例提供的提取顶点属性的流程示意图;
图5是本发明实施例提供的根据图结构的压缩结构在属性图上进行查询的流程示意图;
图6是本发明实施例提供的一种根据图结构的压缩结构和边属性在属性图上进行查询的流程示意图;
图7是本发明实施例提供的另一种根据图结构的压缩结构和边属性在属性图上进行查询的流程示意图;
图8是本发明实施例提供的根据图结构的压缩结构、顶点属性和边属性在属性图上进行查询的流程示意图;
图9是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
为了提高属性图数据库的查询效率,请参见图1,本发明实施例提供了一种属性图的压缩索引及查询方法,应用于属性图数据库系统,属性图数据库系统维护的属性图包括由多个顶点、边以及它们对应的属性,对应方法包括以下步骤:
S10、根据属性图构建每个顶点的邻接表。
在本发明实施例中,S10中的邻接表可以为传统邻接表的表示方式,在这里用于确定后续本发明实施例构建图结构的压缩结构。
如2所示,属性图数据库系统中维护的属性图包括由多个顶点和边构成的图结构,每个顶点具有其对应的顶点属性,包括外邻接点、入邻接点、标签,连接相邻顶点的边具有其对应的边属性。其中,外邻接点由该顶点对应的外邻(出)边确定的,入邻接点由该顶点对应的入邻(入)边确定的,比如VID=0的顶点,箭头指向VID=0的顶点的其他顶点即为其入邻接点,箭头从VID=0的顶点指向的其他顶点即为外邻接点。
以VID=0的顶点为例,VID=0的顶点属性包括:VID=3的顶点、VID=4的顶点、VID=5的顶点、VID=7的顶点组成的外邻接点,以及VID=1的顶点组成的入邻接点,VID=0的顶点标签为director Tom.23、VID=1的顶点标签为director Tim.34、VID=3的顶点标签为film Ben,VID=4的顶点标签为film Seas、VID=5的顶点标签为student Lam.MIT、VID=7的顶点标签为film Bear,连接VID=0的顶点与VID=1的顶点的边的边属性为likes且值为90、likes且值为87,连接VID=0的顶点与VID=3的顶点的边的边属性为guide且日期为1995~2000,连接VID=0的顶点与VID=4的顶点的边的边属性为guide且日期为1993~1995,连接VID=0的顶点与VID=5的顶点的边的边属性为likes且值为90,连接VID=0的顶点与VID=7的顶点的边的边属性为guide且日期为2000~2010。其他顶点具有同样的顶点属性和边属性,以构成如图2所示的完整属性图结构。
S20、根据每个顶点的邻接表构建图结构的压缩结构。
若按传统邻接表直接以顶点编号VID存储时,若VID数据量比较大时,会存在数据存储规模比较大的问题。由于传统邻接表存储数据规模大,导致查询效率低,如何优化邻接表的表示方式以降低数据存储规模,进而提高查询效率是一种可行方案。经发明人研究,根据每个顶点的邻接表可以构建图结构的压缩结构,本发明实施例图结构的压缩结构包括编码序列、每个顶点的邻接表在编码序列中的起始位置、每个顶点的邻接表的差值总数、每个顶点的邻接表的第一个顶点编号;编码序列通过计算邻接表中相邻顶点编号之间的差值,并对差值编码得到的。
由图2可见,对于任意一顶点对应有外邻接点和入邻接点,根据外邻接点和入邻接点可以分别构建该顶点对应的图结构的压缩结构,即本发明实施例图结构的压缩结构包括外邻压缩结构和入邻压缩结构。
对于外邻接点查询,本发明实施例提出了外邻压缩结构,包括S、X、Ngap和Sam结构,由S、X、Ngap和Sam结构来访问邻接表中每个顶点对应邻接顶点的编号,S表示所有顶点的邻接表内相邻顶点编号之间的差值编码得到编码序列集合,X表示每个顶点的邻接表在编码序列中的起始位置,Ngap表示到每个顶点的邻接表的差值总数,Sam表示每个顶点的邻接表的第一个顶点编号。以图2所示图结构为例,每个顶点的邻接表按照顶点编号(图2中顶点编号均为预处理后的全局编号)排序,具体说明构建外邻压缩结构的过程,构建的外邻压缩结构如表1所示的S、X、Ngap和Sam结构中数据。
表1每个顶点的外邻压缩结构
表1中,第一行j表示每个顶点的外邻接点元素在传统邻接表中的存储下标,每个顶点的外邻接点的存储均从0开始,Adji表示访问第i个顶点的邻接表,gap表示相邻顶点编号之间的差值。
比如以VID=0的顶点为例,对应外邻接点包括VID=3的顶点、VID=4的顶点、VID=5的顶点、VID=7的顶点,即为表1中Adji访问结果,每个顶点均以其第一个邻接点为起始点,则:
按计算每个顶点的邻接表中相邻顶点编号之间的差值,即为表1中gap记录数据,邻接表中记录的是VID=3的顶点、VID=4的顶点、VID=5的顶点、VID=7的顶点,以VID=3的顶点为起始点,此点不需要计算gap值,则计算每个顶点的邻接表中相邻顶点编号之间的差值gap为1(3与4的差值)、1(4与5的差值)、2(5与7的差值);
接着,根据差值编码得到外邻压缩结构中的编码序列,根据差值可以看出最大数值为2,只需要两位编码即可表示所有数值,对所有差值编码得到外邻压缩结构中编码序列,1编码为01,2编码为10,差值1、1、2编码序列记为010110;
接着,统计每个顶点的邻接表在编码序列中的起始位置,VID=0顶点为起始顶点,默认VID=0顶点的邻接表在编码序列中的起始位置X记为0,下一VID=1顶点的邻接表在编码序列中的起始位置X记为6;可以看出,每个顶点的邻接表在编码序列中的起始位置X为对该顶点之前所有顶点的邻接表的编码序列的统计值;
接着,计算每个顶点邻接表中顶点编号数目,VID=0顶点在邻接表中有4个邻接顶点编号,然后根据邻接表中顶点编号数目统计到每个顶点的邻接表的差值总数Ngap,VID=0顶点为起始顶点,到该顶点的邻接表的差值总数Ngap记为0,到下一VID=1顶点的邻接表的差值总数Ngap记为4;可以看出,到每个顶点的邻接表的差值总数Ngap为对该顶点之前所有顶点的邻接表的邻接顶点数目的统计值;
接着,将每个顶点的邻接表的第一个顶点编号记为Sam,VID=0顶点的在邻接表中首个顶点编号为VID=3顶点,则将VID=3顶点确定为VID=0顶点在外邻压缩结构中第一个顶点编号Sam。
同理,以VID=1的顶点为例,对应外邻接点的相关数据为j=0~4这几列数据,可以看出最终Adji访问结果包括VID=0的顶点、VID=0的顶点(与第一个VID=0的顶点边属性不同)、VID=2的顶点、VID=6的顶点、VID=6的顶点(与第一个VID=6的顶点边属性不同),以VID=0的顶点为起始点,对应的差值gap为0、2、4、0;差值最大值为4,需要三位编码,即编码序列为000010100000,将VID=0顶点的编码序列010110与VID=1顶点的编码序列000010100000连接而成的集合记为所有顶点的编码序列S;由上可知VID=1顶点的邻接表在编码序列中的起始位置X为6,对应下一VID=2顶点的邻接表在编码序列中的起始位置X为6+12=18;由上可知到VID=1顶点的邻接表的差值总数Ngap为4,对应到下一VID=2顶点的邻接表的差值总数Ngap为4+5(5为VID=1顶点的外邻接点数目)=9;VID=0顶点为VID=1顶点邻接表的第一个顶点编号Sam。
依次类推,构建得到本发明实施例如表1所示的外邻压缩结构。
假设图2中属性图的总顶点个数为n,相邻顶点之间的总边个数为m,使用log|S|位表示X的每个元素,使用log m位表示Ngap中的每个元素,使用log n位表示Sam中的每个元素,因此X的编码长度为n×log|S|,Ngap的编码长度为n×log m,Sam的编码长度为n×logn。可见,本发明实施例S、X、Ngap和Sam结构来表示邻接表的存储,可以实现简明存储。
对于入邻接点查询,使用如同外邻压缩结构的压缩方法,实现对入邻接点的压缩存储如表2所示,在此不再赘述构建入邻压缩结构的过程。
表2每个顶点的入邻压缩结构
表1和表2清晰的分析了如何实现对图2的简明压缩存储,将传统通过邻接表的存储方式,转换为通过构建的图结构的压缩结构实现简明存储。
进一步地,针对本发明实施例提出的压缩存储方式,在这里,本发明实施例还设计了对应通过图结构的压缩结构访问邻接表中每个顶点对应邻接顶点编号的方法,可以公式表示为:
其中,i表示第i个顶点,Adji[j]表示第i个顶点通过图结构的压缩结构访问的邻接表中第j个邻接顶点编号,Sam[i]表示第i个顶点的邻接表的第一个顶点编号,Adji[j-1]表示第i个顶点通过图结构的压缩结构访问的邻接表中第j-1个邻接顶点编号,decompress()表示解码函数,入参为S、pos、nbits,S表示编码序列,nbits表示解码位数,X[i+1]存储第i+1个顶点的邻接表在编码序列中的起始位置,X[i]存储第i个顶点的邻接表在编码序列中的起始位置,Ngap[i+1]存储到第i+1个顶点的邻接表的差值总数,Ngap[i]存储到第i个顶点的邻接表的差值总数,pos=X[i]+(j-1)*nbits。
通过表1和表2可以看出,本发明实施例以图结构的压缩结构存储方式,大幅降低了数据存储规模,而在访问数据时,通过公式(1)即可快速访问对应顶点。
S30、根据图结构的压缩结构计算顶点/边编号,根据顶点/边编号和对应位数组获取属性在属性压缩索引中的定位,并从属性压缩索引进行属性值的提取;属性压缩索引包括顶点属性压缩索引和边属性压缩索引;位数组对应记录所有边属性/顶点属性的起始位置。
本发明实施例还提出基于图结构的压缩结构来获取属性压缩索引的方式进行属性值提取,具体属性压缩索引包括顶点属性压缩索引和边属性压缩索引,对应进行属性提取得到的属性值为顶点属性值和边属性值。
针对通过顶点属性压缩索引提取顶点属性值,本发明实施例提供了一种可选方案,将图2中所有顶点属性都视为字符串,基于Huo等人提出的压缩索引框架GeCSA构建顶点属性集上的高阶熵压缩全文索引,称为VIndex。使用VIndex和extract算法,可以实现顶点属性提取。基于该顶点属性提取思想,本发明实施例结合上述图结构的压缩结构来实现顶点属性提取,具体地:
根据图结构的压缩结构计算顶点编号,根据顶点编号和对应位数组获取顶点属性在顶点属性压缩索引中的定位,并从顶点属性压缩索引进行顶点属性值的提取,请参见图3,包括:
S301、根据顶点属性集建立顶点属性高阶熵压缩全文索引;顶点属性集包括所有顶点的顶点属性;
S302、根据顶点编号和对应位数组计算该顶点编号在顶点属性集中的起始位置和结束位置;
S303、根据顶点属性的起始位置和结束位置从顶点属性高阶熵压缩全文索引中提取对应的顶点属性值。
比如,以图2属性图G为例,令TV=TV[0,nV-1]表示定义在大小为σV的字母表上长度为nV的属性图G的顶点属性集。令TV[i,j]表示TV的子串,即TV中符号在位置i,i+1,...,j处的连接,将属性图G中的所有顶点属性都视为字符串。基于Huo等人提出的压缩索引框架GeCSA,构建TV上的顶点属性高阶熵压缩全文索引,称为VIndex。使用VIndex和extract算法,可以实现属性G中顶点v(∈V)上的顶点属性提取。顶点属性提取查询恢复属性字符串TV[stpos,stpos+len-1],此时stpos和len是顶点v的属性串在TV中的起始位置和长度。
表3给出了图2属性图G的顶点所属类别、顶点属性集和对应的位数组。表3中:第一列表示顶点编号;第二列表示给定顶点所属类别;第三列表示顶点属性集(Vertexattributes);最后一列表示位数组VB,它隐含地包含TV中每个顶点属性串的起始位置。对于0≤j≤nV,如果j是TV中属性字符串的起始位置,则定义位数组VB[j]=1,否则位数组VB[j]=0。表3中最后一列显示了满足位数组VB[j]=1的位置j。例如,位数组VB[16]=1表示位置j=16是顶点属性“Alice 30”的起始位置。通过调用select1(VB,i)来获取该顶点属性的起始位置,其中1≤i≤n。表3中的第三列(Vertex attributes列)的第一个子列是每个顶点所属类内编号vid。
表3属性图G的顶点所属类别、顶点属性集和对应的位数组
Vid | Vertex labels | Vertex attributes | VB[j]=1 |
0 | director | 0 Tom 23 | 0 |
1 | director | 1 Tim 34 | 8 |
2 | actor | 0 Alice 30 | 16 |
3 | film | 0 Ben | 26 |
4 | film | 1 Seas | 31 |
5 | student | 0 Lam MIT | 37 |
6 | studentactor | 0 Mary Harvard | 46 |
7 | film | 2 Bear | 60 |
8 | actor | 1 Agela Matrix | 66 |
9 | 80 |
接着,使用表3中的示例说明extractV()是如何进行顶点属性提取。给定顶点Vid,使用位数组VB定位给定顶点Vid的顶点属性在顶点属性高阶熵压缩全文索引VIndex中的起始位置和结束位置。以Vid=2为例说明:调用getPos(2)函数,可得stpos=select1(VB,3)=16,endpos=select1(VB,4)-1=25,则要取出的属性串长度为len=endpos-stpos+1=10,然后调用extractV(16,10)函数,返回顶点属性串substr=“0Alice 30”,即顶点Vid=2所关联的顶点属性。其中,Vid=2这样的顶点编号可以通过如表1和表2所示的图结构的压缩结构来访问获取;具体extractV()算法可以采用现有方案实现,在此不再赘述。
可见,本发明实施例预先根据如图2所示的属性图中所有顶点的顶点属性,构建顶点属性高阶熵压缩全文索引,定义位数组VB,它隐含地包含每个顶点属性串的起始位置。通过图结构的压缩结构快速获取顶点编号Vid,通过调用select1(VB,Vid+1)和select1(VB,Vid+2)-1分别计算出顶点编号Vid对应顶点属性串的开始位置和结束位置,即顶点属性压缩索引,最终调用extractV()算法来得到所求顶点编号Vid对应顶点属性串,这里记为extractV(Vid),通过extractV(Vid)获取顶点编号Vid对应顶点属性。
针对通过边属性压缩索引提取边属性值,本发明实施例提供了一种可选方案,将图2中所有边属性都视为字符串,基于Huo等人提出的压缩索引框架GeCSA,构建边属性集上的高阶熵压缩全文索引,称为EIndex。使用EIndex和extract算法,可以实现边属性提取。基于该边属性提取思想,本发明实施例结合上述图结构的压缩结构来实现边属性提取,具体地:
根据图结构的压缩结构计算边编号,根据边编号和对应位数组获取边属性在边属性压缩索引中的定位,并从边属性压缩索引进行属性值的提取,请参见图4,包括:
S401、根据边属性集建立边属性高阶熵压缩全文索引;边属性集包括所有相邻顶点之间的边属性;
S402、根据顶点编号获取对应边编号;
S403、根据边编号和对应位数组计算该边编号在边属性集中的起始位置和结束位置;
S404、根据边属性集中的起始位置和结束位置从边属性高阶熵压缩全文索引中提取对应的边属性。
比如,同样以图2属性图G为例,令TE=TE[0,nE-1]表示定义在字母σE上长度为nE的G的边属性集。令TE[i,j]表示TE的子串,即TE中符号在位置i,i+1,...,j处的连接,将属性图G中的所有边属性都视为字符串。基于Huo等人提出的压缩索引框架GeCSA,构建TE上的边属性高阶熵压缩全文索引,称为EIndex。使用EIndex和extract算法,可以实现图G中边e(∈E)上的边属性提取。边属性提取查询恢复属性字符串TE[stpos,stpos+len-1],此时stpos和len是关联边e的属性串在TE中的起始位置和长度。
表4给示了图2属性图G的边属性集和对应位数组。表4中:第一列表示关联边编号;第二列表示边属性集;最后一列表示位数组EB,它隐含地包含TE中每条边上属性串的起始位置。对于0≤j≤nE,如果j是TE中属性串的起始位置,则定义位数组EB[j]=1,否则位数组EB[j]=0。表3中最后一列显示了满足位数组EB[j]=1的位置j。例如,位数组EB[15]=1表示位置j=15是边属性“guide 1993-1995”的起始位置。通过调用select1(EB,i)来获取该边属性的起始位置,其中1≤i≤m。
表4属性图G的边属性和对应位数组
Eid | Edge attributes | EB[j]=1 |
0 | guide 1995-2000 | 0 |
1 | guide 1993-1995 | 15 |
2 | likes 90 | 30 |
3 | guide 2000-2010 | 38 |
4 | likes 90 | 53 |
5 | likes 87 | 61 |
6 | likes 85 | 69 |
7 | likes 85 | 77 |
8 | likes 87 | 85 |
9 | likes 100 | 94 |
10 | serve 1998-2001 | 104 |
11 | likes 78 | 119 |
12 | likes 100 | 127 |
13 | 136 |
接着,使用表4中的示例说明extractE()是如何进行边属性提取。给定边Eid,使用位数组EB定位边Eid的属性在边属性高阶熵压缩全文索引EIndex中的起始位置和结束位置。以Eid=4为例,调用getPos(4)函数,可得stpos=select1(EB,5)=53,endpos=select1(EB,6)-1=60,则要取出的属性串长度为len=endpos-stpos+1=8.然后调用extractE(53,8)函数,返回边属性串substr=“likes 90”,即边Eid=4所关联的边属性。其中,Eid=4这样的关联边编号是通过如表1和表2所示的图结构的压缩结构来访问得到的顶点编号获取的,比如通过图结构的压缩结构获取顶点编号VID=0的顶点,该顶点对应有4条外邻边和2条入邻边,对于外邻边根据顶点编号顺序对应其关联边编号,而对于入邻边可以预先转化为相邻顶点的外邻边,同样可以根据顶点编号顺序对应其关联边编号;同理,通过图结构的压缩结构访问得到的顶点编号Vid=1,确定顶点编号Vid=1对应其关联边编号;依次类推,可以确定所有顶点编号对应关联边编号;每一外邻边对应其关联边编号,根据这些关联边编号来进一步进行边属性提取。
可见,本发明实施例预先根据如图2所示的属性图中所有相邻顶点之间的边属性,构建边属性高阶熵压缩全文索引,定义位数组EB,它隐含地包含了每条相邻顶点之间边对应边属性的起始位置。通过图结构的压缩结构快速获取顶点编号Vid,通过顶点编号Vid查找关联边编号,定义Eid为关联边编号,通过调用select1(EB,Eid+1)和select1(EB,Eid+2)-1分别计算出边属性串中关联边编号Eid对应的开始位置和结束位置,即边属性压缩索引,最终调用extractE()算法来得到所求的边属性串,这里记为extractE(Eid),通过extractE(Eid)获取关联边编号Eid对应边属性。
S40、根据图结构的压缩结构和属性压缩索引进行属性图的查询。
基于上述图结构的压缩结构存储,本发明实施例提出了一种根据图结构的压缩结构进行属性图的查询的可选方案,请参见图5,包括:
初始化给定顶点编号vid和预设距离k;
将给定顶点编号vid转换为给定全局编号Vid;
将给定全局编号Vid入队到FIFO队列Q中,初始化输出结果集A;
从FIFO队列Q取出中间顶点编号u,判断中间顶点编号u与给定全局编号Vid之间的距离是否小于预设距离k,若小于,则查找给定顶点编号vid对应的未曾探索过的邻接顶点编号v,并将邻接顶点编号v入队到FIFO队列Q,并将该邻接顶点编号v添加进输出结果集A中,重复上述从FIFO队列Q取出过程,直至FIFO队列Q为空,返回输出结果集A;
其中,邻接顶点编号v通过访问图结构的压缩结构来获取;用u.id表示中间顶点编号u的全局编号Vid,则Ngap[u.id+1]-Ngap[u.id]表示中间顶点编号u的邻接顶点个数num;再由公式(1)计算Adju.id[j]可得中间顶点编号u的第j个邻接顶点编号v(0≤j≤num-1)。
可见,本发明实施例给定一个人(顶点)的编号vid和整数k,就可以查询返回与给定人的距离最多为k的所有人。查询过程维护了一个FIFO队列Q,包含尚未探索邻接点编号且与给定全局编号Vid的距离小于k的顶点,通过在压缩空间中按邻接顶点编号与给定顶点编号vid的距离顺序探索满足预设距离k的顶点,由于查询数据存储量小,查询过程计算量小,从而提高了查询效率。
进一步地,由图2可见,属性图中连接相邻顶点的边具有不同的边属性,在属性图上进行查询过程中,利用图结构的压缩结构和边属性,即利用了更多的信息进行过滤,可以充分利用边的边属性来进一步提高查询效率。因此,本发明实施提供了一种根据图结构的压缩结构和属性压缩索引进行属性图的查询的可选方案,请参见图6,包括:
初始化给定顶点编号vid、预设距离k和预设过滤条件;
将给定顶点编号vid转换为给定全局编号Vid;
将给定全局编号Vid入队到FIFO队列Q中,初始化输出结果集A;
从FIFO队列Q取出中间顶点编号u,判断中间顶点编号u与给定全局编号Vid之间的距离是否小于预设距离k,若小于,则查找给定顶点编号vid对应的未曾探索过的邻接顶点编号v,检查中间顶点编号u与邻接顶点编号v是否满足预设过滤条件,若满足,则将邻接顶点编号v入队到FIFO队列Q,并将该邻接顶点编号v添加进输出结果集A中,重复上述从FIFO队列Q取出过程,直至FIFO队列Q为空,返回输出结果集A;
其中,邻接顶点编号v通过访问图结构的压缩结构来获取;用u.id表示中间顶点编号u的全局编号Vid,则Ngap[u.id+1]-Ngap[u.id]表示中间顶点编号u的邻接顶点个数num;再由公式(1)计算Adju.id[j]可得中间顶点编号u的第j个邻接顶点编号v(0≤j≤num-1);
中间顶点编号u与邻接顶点编号v是否满足预设过滤条件通过边属性压缩索引提取的边属性值来检查;利用Ngap[k](u.id≤k≤u.id+num-1)可以获取中间顶点编号u的第k条外邻(出)边的Eid,然后调用extractE(Eid)获取外邻边上的边属性,该边属性表示不同的过滤条件,比如图2中的“likes”、“guide”、“serve”等。
可见,本发明实施例给定一个人的编号vid和整数k,就可以查询返回具有预设过滤条件且与给定人的距离最多为k的所有人。本发明实施例通过调用extractE获取边属性来检查存在边的两个顶点之间的预设过滤条件,保持查询过程计算量小的优势外,还进一步提高了查询准确度。
进一步地,本发明实施提供了另一种根据图结构的压缩结构和属性压缩索引进行属性图的查询的可选方案,请参见图7,包括:
初始化第一给定顶点编号vid1、第二给定顶点编号vid2和预设过滤条件;
判断第一给定顶点编号vid1和第二给定顶点编号vid2是否为同一顶点,若是返回距离l为0,否则将第一给定顶点编号vid1和第二给定顶点编号vid2转换为第一给定全局编号Vid1和第二给定全局编号Vid2;将第一给定全局编号Vid1入队到FIFO队列Q中,初始化距离l为0,从FIFO队列Q取出中间顶点编号u,判断中间顶点编号u与第二给定全局编号Vid2是否为同一顶点,若是则返回距离l,否则查找第一给定顶点编号vid1对应的未曾探索过的邻接顶点编号v,检查中间顶点编号u与邻接顶点编号v是否满足预设过滤条件,若满足,则将邻接顶点编号v入队到FIFO队列Q,并将距离l+1,重复上述从FIFO队列Q取出过程,直至FIFO队列Q为空,返回距离l;
其中,邻接顶点编号v通过访问图结构的压缩结构来获取;用u.id表示中间顶点编号u的全局编号Vid,则Ngap[u.id+1]-Ngap[u.id]表示中间顶点编号u的邻接顶点个数num;再由公式(1)计算Adju.id[j]可得中间顶点编号u的第j个邻接顶点编号v(0≤j≤num-1)。
中间顶点编号u与邻接顶点编号v是否满足预设过滤条件通过边属性压缩索引提取的边属性值来检查;利用Ngap[k](u.id≤k≤u.id+num-1)可以获取中间顶点编号u的第k条外邻(出)边的Eid,然后调用extractE(Eid)获取外邻边上的边属性。
可见,本发明实施例可以解决比较复杂的属性图的查询,比如属性图Q13问题查询,给定PersonX和PersonY,在由Knows关系诱导的子图中找到它们之间的最短路径,实现过程包括:
(a1)、判断给定的两个给定顶点编号vid1和给定顶点编号vid2是否为同一顶点,若是则返回距离l为0,否则继续。
(a2)、将给定顶点编号vid1、给定顶点编号vid2转换成全局编号Vid1和全局编号Vid2;
(a3)、将全局编号Vid1入队到FIFO队列Q中,初始化距离l为0,并执行以下步骤直到FIFO队列Q为空:
(b1)、从FIFO队列Q中取出中间顶点编号u;
(b2)、若中间顶点编号u与全局编号Vid2为同一顶点,则返回距离l;
(b3)、查找中间顶点编号u的未曾探索过的邻接顶点编号v,检查连接中间顶点编号u和邻接顶点编号v的边的边属性是否具有好友关系(这里预设过滤条件设计为友好关系),若具有好友关系则将邻接顶点编号v入队FIFO队列Q,同时距离l增1。
(a4)、若给定顶点编号vid1、给定顶点编号vid2之间不存在路径,则返回-1。
进一步地,由图2可见,每个属性图中顶点还包括标签信息,在属性图上查询过程中,利用图结构的压缩结构、顶点属性和边属性,即利用了更多的信息进行过滤,提高查询效率。因此,本发明实施提供了一种根据图结构的压缩结构和属性压缩索引进行属性图的查询的可选方案,请参见图8,包括:
初始化给定顶点编号vid、给定顶点属性、预设距离k和预设过滤条件;
将给定顶点编号vid转换为给定全局编号Vid;
将给定全局编号Vid入队到第一FIFO队列Q中,初始化输出结果集A;
从第一FIFO队列Q取出第一中间顶点编号u,判断第一中间顶点编号u与给定全局编号Vid之间的距离是否小于预设距离k,若小于,则查找给定顶点编号vid对应的未曾探索过的第一邻接顶点编号v,并入队第一FIFO队列Q,检查第一中间顶点编号u与第一邻接顶点编号v是否满足预设过滤条件,若满足,查找第一邻接顶点编号v的顶点属性,比较第一邻接顶点编号v的顶点属性和给定顶点属性是否同属性,若属于同属性,则将第一邻接顶点编号v入队到第二FIFO队列P,从第二FIFO队列P中取出第二中间顶点编号p,查找第一邻接顶点编号v的未曾探索过的第二邻接顶点编号v1,根据第二邻接顶点编号v1的标签获取第二中间顶点编号p的相关信息,并将该第二中间顶点编号p的相关信息添加进输出结果集A中,重复上述从第二FIFO队列P取出过程,直至第二FIFO队列P为空,继续重复上述从第一FIFO队列Q取出过程,直至第一FIFO队列Q为空,返回输出结果集A;
其中,第一邻接顶点编号v、第二邻接顶点编号v1通过访问第二邻接表来获取;用u.id表示第一中间顶点编号u的全局编号Vid,则Ngap[u.id+1]-Ngap[u.id]表示第一中间顶点编号u的邻接顶点个数num;再由公式(1)计算Adju.id[j]可得第一中间顶点编号u的第j个第一邻接顶点编号v(0≤j≤num-1);同理,邻接顶点编号v1可以根据公式(1)计算Adju1.id[j]可得;
第一中间顶点编号u与第一邻接顶点编号v是否满足预设过滤条件通过边属性压缩索引提取的边属性值来检查;利用Ngap[k](u.id≤k≤u.id+num-1)可以获取第一中间顶点编号u的第k条外邻(出)边的Eid,然后调用extractE(Eid)获取外邻边上的边属性值;
获取第二中间顶点编号p的相关信息通过顶点属性压缩索引提取的顶点属性值来获取;根据第二中间顶点编号p的标签判断调用extractV(v1.id)获取第二邻接顶点编号v1的顶点属性,根据该顶点属性对应获取第二中间顶点编号p的相关信息,或是调用extractE(v1.id)获取第二邻接顶点编号v1的边属性,再调用extractV(v1.id)获取第二邻接顶点编号v1的顶点属性,根据该顶点属性对应获取第二中间顶点编号p的相关信息;第二中间顶点编号p的标签可以通过将给定顶点编号vid转换为给定全局编号Vid过程中获取。
可见,本发明实施例可以解决比较复杂的属性图的查询,比如属性图Q1问题查询,给定名字(first name)及其编号vid,返回最多k=20个同名好友,按与给定人的距离递增(最多3个)输出;对于相同距离内的人,按姓氏(last name)排序,返回结果应含工作场所和学习地点的列表。具体地:
首先进行预处理,将给定顶点编号vid转换为全局编号Vid。
将全局编号Vid入队到FIFO队列Q中,并执行以下步骤直到FIFO队列Q为空:
(c1)、从FIFO队列Q中取出中间顶点编号u;
(c2)、如果中间顶点编号u到全局编号Vid的距离小于k,则查找中间顶点编号u的未曾探索过的邻接顶点编号v入队FIFO队列Q;
(c3)、查看中间顶点编号u和邻接顶点编号v的外邻边属性,检查是否具有好友关系(这里预设过滤条件设计为友好关系);
(c4)、具有友好关系,则通过调用extractV(v.id)获得该邻接顶点编号v上的名字属性,与给定顶点编号vid的名字比较,若同名则将邻接顶点编号v入队到FIFO队列P,执行以下步骤直到FIFO队列P为空:
(d1)、从FIFO队列P中取出中间顶点编号p;
(d2)、查找中间顶点编号p的未曾探索过的邻接顶点编号v1。
(d3)、对中间顶点编号p的每个邻接顶点编号v1,判断其顶点属性,这里顶点属性为标签,如果标签为“place”,则调用extractV(v.id)得到该顶点上的顶点属性索引,对应确定该顶点属性为所在地,如果标签为“organization”,则调用extractE得到中间顶点编号p到邻接顶点编号v1的外邻(出)边上的边属性索引,对应确定该边属性,如果该边上的边属性值包括“workAt”或者“studyAt”,则继续调用extractV(v.id),得到中间顶点编号p相关信息,比如包括工作地或者学习地及其日期。
(d4)、通过调用extractV(v.id)获得该顶点上的顶点属性,这里顶点属性为名字属性,与给定顶点编号vid的名字比较,若同名则将邻接顶点编号v1入队到FIFO队列P。
需要说明的是,上述如图5、图6、图7、图8所示的查询过程中,不同类之间的顶点可能存在相同的编号,需要进行预处理,将给定顶点编号vid映射到全局编号Vid。本发明实施例提供了一种将给定顶点编号vid映射到全局编号Vid可选方案:使用映射函数来获得给定顶点编号vid在全局系统中的起始位置,然后使用最小完美哈希函数MPHash将给定顶点编号vid映射到所属类的类内编号,该起始位置与类内编号相加得到与给定顶点编号vid关联的全局编号Vid,同时映射过程中,全局编号Vid携带有给定顶点编号vid的标签信息。比如,现有两种类型的顶点person和city;person类别的顶点有10个,编号vid为1到10;city类别的顶点也有10个,编号vid也为1到10;两个类别的编号顶点vid出现了重复的现象,会对查询造成影响,所以需要将编号vid利用哈希映射为全局编号Vid,使得不同类之间一定不会有相同的编号Vid。
需要说明的是,本发明实施例可以以构建外邻压缩结构和入邻压缩结构,查询过程不同,调用外邻压缩结构和入邻压缩结构情况不同,在查询过程中,可以根据实际需要考虑入外邻压缩结构和/或入邻压缩结构作为查询的考虑条件,在这里不再赘述哪种查询需要调用外邻压缩结构,哪种查询需要调用入邻压缩结构。
综上所述,本发明实施例提出的属性图的压缩索引及查询方法,不再是采用传统邻接表存储及查询方式,而是为了降低存储过程中数据的存储量,提出了一种构建新的邻接表存储及查询方式,具体地:根据每个顶点的邻接表构建图结构的压缩结构,由构建的图结构的压缩结构来访问邻接表中每个顶点对应邻接顶点编号,实现属性图的压缩存储,使得属性图数据库的查询效率获得提升;同时,本发明实施例属性图数据库查询过程中,还通过对顶点属性和边属性建立对应的顶点属性压缩索引、边属性压缩索引,支持在顶点和边的属性压缩索引上的各种类型属性图的查询操作,进一步达到提升属性图数据库的查询效率。
基于上述方法的同一发明构思,请参见图9,本发明实施例提供了一种电子设备,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901、通信接口902、存储器903通过通信总线904完成相互的通信;
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现上述属性图的压缩索引及查询方法的步骤。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述属性图的压缩索引及查询方法的步骤。
对于装置/电子设备/存储介质实施例而言,由于其基本相近于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看说明书及其附图,可理解并实现所述公开实施例的其他变化。在说明书中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现本发明实施例中列举的若干项功能。相互不同的实施例中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种属性图的压缩索引及查询方法,其特征在于,应用于属性图数据库系统,所述属性图数据库系统维护的属性图包括由多个顶点、边以及它们对应的属性,所述方法包括:
根据所述属性图构建每个顶点的邻接表;
根据每个顶点的所述邻接表构建图结构的压缩结构;
根据所述图结构的压缩结构计算顶点/边编号,根据所述顶点/边编号和对应位数组获取属性在属性压缩索引中的定位,并从所述属性压缩索引进行属性值的提取;所述属性压缩索引包括顶点属性压缩索引和边属性压缩索引;所述位数组对应记录所有边属性/顶点属性的起始位置;
根据所述图结构的压缩结构和属性压缩索引进行属性图的查询;
其中,所述图结构的压缩结构包括编码序列、每个顶点的邻接表在编码序列中的起始位置、每个顶点的邻接表的差值总数、每个顶点的邻接表的第一个顶点编号;所述编码序列通过计算邻接表中相邻顶点编号之间的差值,并对所述差值编码得到的。
2.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,所述图结构的压缩结构包括外邻压缩结构和入邻压缩结构。
3.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,通过所述图结构的压缩结构访问邻接表中每个顶点对应邻接顶点编号表示为:
其中,i表示第i个顶点,Adji[j]表示第i个顶点通过所述图结构的压缩结构访问的邻接表中第j个邻接顶点编号,Sam[i]表示第i个顶点的邻接表的第一个顶点编号,Adji[j-1]表示第i个顶点通过所述图结构的压缩结构访问的邻接表中第j-1个邻接顶点编号,decompress()表示解码函数,入参为S、pos、nbits,S表示编码序列,nbits表示解码位数,X[i+1]存储第i+1个顶点的邻接表在编码序列中的起始位置,X[i]存储第i个顶点的邻接表在编码序列中的起始位置,Ngap[i+1]存储到第i+1个顶点的邻接表的差值总数,Ngap[i]存储到第i个顶点的邻接表的差值总数,pos=X[i]+(j-1)*nbits。
4.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,根据所述图结构的压缩结构计算顶点编号,根据所述顶点编号和对应位数组获取顶点属性在顶点属性压缩索引中的定位,并从所述顶点属性压缩索引进行顶点属性值的提取,包括:
根据顶点属性集建立顶点属性高阶熵压缩全文索引;所述顶点属性集包括所有顶点的顶点属性;
根据所述顶点编号和对应位数组计算该顶点编号在所述顶点属性集中的起始位置和结束位置;
根据所述顶点属性的起始位置和所述结束位置从所述顶点属性高阶熵压缩全文索引中提取对应的顶点属性值。
5.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,根据所述图结构的压缩结构计算边编号,根据所述边编号和对应位数组获取边属性在边属性压缩索引中的定位,并从所述边属性压缩索引进行属性值的提取,包括:
根据边属性集建立边属性高阶熵压缩全文索引;所述边属性集包括所有相邻顶点之间的边属性;
根据所述顶点编号获取对应边编号;
根据所述边编号和对应位数组计算该边编号在所述边属性集中的起始位置和结束位置;
根据所述边属性集中的起始位置和结束位置从所述边属性高阶熵压缩全文索引中提取对应的边属性值。
6.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化给定顶点编号和预设距离;
将所述给定顶点编号转换为给定全局编号;
将所述给定全局编号入队到FIFO队列中,初始化输出结果集;
从所述FIFO队列取出中间顶点编号,判断所述中间顶点编号与所述给定全局编号之间的距离是否小于所述预设距离,若小于,则查找所述给定顶点编号对应的未曾探索过的邻接顶点编号,并将所述邻接顶点编号入队到所述FIFO队列,并将该邻接顶点编号添加进所述输出结果集中,重复上述从所述FIFO队列取出过程,直至所述FIFO队列为空,返回所述输出结果集;
其中,所述邻接顶点编号通过所述图结构的压缩结构访问来获取。
7.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化给定顶点编号、预设距离和预设过滤条件;
将所述给定顶点编号转换为给定全局编号;
将所述给定全局编号入队到FIFO队列中,初始化输出结果集;
从所述FIFO队列取出中间顶点编号,判断所述中间顶点编号与所述给定全局编号之间的距离是否小于所述预设距离,若小于,则查找所述给定顶点编号对应的未曾探索过的邻接顶点编号,检查所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件,若满足,则将所述邻接顶点编号入队到所述FIFO队列,并将该邻接顶点编号添加进所述输出结果集中,重复上述从所述FIFO队列取出过程,直至所述FIFO队列为空,返回所述输出结果集;
其中,所述邻接顶点编号通过所述图结构的压缩结构访问来获取;
所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件通过所述边属性压缩索引提取的边属性值来检查。
8.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化第一给定顶点编号、第二给定顶点编号和预设过滤条件;
判断所述第一给定顶点编号和第二给定顶点编号是否为同一顶点,若是返回距离为0,否则将所述第一给定顶点编号和所述第二给定顶点编号转换为第一给定全局编号和第二给定全局编号;将所述第一给定全局编号入队到FIFO队列中,初始化距离为0,从所述FIFO队列取出中间顶点编号,判断所述中间顶点编号与所述第二给定全局编号是否为同一顶点,若是则返回距离,否则查找所述第一给定顶点编号对应的未曾探索过的邻接顶点编号,检查所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件,若满足,则将所述邻接顶点编号入队到所述FIFO队列,并将距离加1,重复上述从所述FIFO队列取出过程,直至所述FIFO队列为空,返回距离;
其中,所述邻接顶点编号通过所述图结构的压缩结构访问来获取;
所述中间顶点编号与所述邻接顶点编号是否满足所述预设过滤条件通过所述边属性压缩索引提取的边属性值来检查。
9.根据权利要求1所述的属性图的压缩索引及查询方法,其特征在于,根据所述图结构的压缩结构和属性压缩索引进行属性图的查询,包括:
初始化给定顶点编号、给定顶点属性、预设距离和预设过滤条件;
将所述给定顶点编号转换为给定全局编号;
将所述给定全局编号入队到第一FIFO队列中,初始化输出结果集;
从所述第一FIFO队列取出第一中间顶点编号,判断所述第一中间顶点编号与所述给定全局编号之间的距离是否小于所述预设距离,若小于,则查找所述给定顶点编号对应的未曾探索过的第一邻接顶点编号,并入队所述第一FIFO队列,检查所述第一中间顶点编号与所述第一邻接顶点编号是否满足所述预设过滤条件,若满足,查找所述第一邻接顶点编号的顶点属性,比较所述第一邻接顶点编号的顶点属性和所述给定顶点属性是否同属性,若同属性,则将所述第一邻接顶点编号入队到第二FIFO队列,从所述第二FIFO队列中取出第二中间顶点编号,查找所述第一邻接顶点编号的未曾探索过的第二邻接顶点编号,根据所述第二邻接顶点编号的标签获取所述第二中间顶点编号的相关信息,并将该第二中间顶点编号的相关信息添加进所述输出结果集中,重复上述从所述第二FIFO队列取出过程,直至所述第二FIFO队列为空,继续重复上述从所述第一FIFO队列取出过程,直至所述第一FIFO队列为空,返回所述输出结果集;
其中,所述第一邻接顶点编号、所述第二邻接顶点编号均通过所述图结构的压缩结构访问来获取;
所述第一中间顶点编号与所述第一邻接顶点编号是否满足所述预设过滤条件通过所述边属性压缩索引提取的边属性值来检查;
所述第二中间顶点编号的相关信息通过所述顶点属性压缩索引提取的顶点属性值来获取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211020089.9A CN115495617A (zh) | 2022-08-24 | 2022-08-24 | 一种属性图的压缩索引及查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211020089.9A CN115495617A (zh) | 2022-08-24 | 2022-08-24 | 一种属性图的压缩索引及查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115495617A true CN115495617A (zh) | 2022-12-20 |
Family
ID=84465988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211020089.9A Pending CN115495617A (zh) | 2022-08-24 | 2022-08-24 | 一种属性图的压缩索引及查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115495617A (zh) |
-
2022
- 2022-08-24 CN CN202211020089.9A patent/CN115495617A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334574B (zh) | 一种基于协同矩阵分解的跨模态检索方法 | |
US11227118B2 (en) | Methods, devices, and systems for constructing intelligent knowledge base | |
CN109670163B (zh) | 信息识别方法、信息推荐方法、模板构建方法及计算设备 | |
US8171029B2 (en) | Automatic generation of ontologies using word affinities | |
US9898515B1 (en) | Data extraction and transformation method and system | |
JP5306359B2 (ja) | 複数言語によるデータ記録を関連付ける方法およびシステム | |
US20100106713A1 (en) | Method for performing efficient similarity search | |
CN109166615B (zh) | 一种随机森林哈希的医学ct图像存储与检索方法 | |
CN108647322B (zh) | 基于词网识别大量Web文本信息相似度的方法 | |
CN110019474B (zh) | 异构数据库中的同义数据自动关联方法、装置及电子设备 | |
WO2021047373A1 (zh) | 基于大数据的列数据处理方法、设备及介质 | |
CN112800769B (zh) | 命名实体识别方法、装置、计算机设备和存储介质 | |
CN110442702A (zh) | 搜索方法、装置、可读存储介质和电子设备 | |
CN106708929A (zh) | 视频节目的搜索方法和装置 | |
CN111899821A (zh) | 处理医疗机构数据的方法、构建数据库的方法和装置 | |
WO2020037794A1 (zh) | 一种英文地名的索引建立方法及其查询方法和装置 | |
WO2021068565A1 (zh) | 表格智能查询方法、装置、电子设备及计算机可读存储介质 | |
CN109344276B (zh) | 一种图像指纹生成方法、图像相似度比较方法及存储介质 | |
CN106933824A (zh) | 在多个文档中确定与目标文档相似的文档集合的方法和装置 | |
CN109614521B (zh) | 一种高效的隐私保护子图查询处理方法 | |
CN113591476A (zh) | 一种基于机器学习的数据标签推荐方法 | |
CN116383412B (zh) | 基于知识图谱的功能点扩增方法和系统 | |
CN113407576A (zh) | 基于降维算法的数据关联方法及系统 | |
US10824811B2 (en) | Machine learning data extraction algorithms | |
US8554696B2 (en) | Efficient computation of ontology affinity matrices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |