CN112732746A - 一种基于sparql端点联合的动态连接排序方法 - Google Patents
一种基于sparql端点联合的动态连接排序方法 Download PDFInfo
- Publication number
- CN112732746A CN112732746A CN202110051652.8A CN202110051652A CN112732746A CN 112732746 A CN112732746 A CN 112732746A CN 202110051652 A CN202110051652 A CN 202110051652A CN 112732746 A CN112732746 A CN 112732746A
- Authority
- CN
- China
- Prior art keywords
- query
- sub
- statement
- subset
- determining
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000005457 optimization Methods 0.000 abstract description 17
- 238000012163 sequencing technique Methods 0.000 abstract description 7
- 238000011156 evaluation Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于SPARQL端点联合的动态连接排序方法,方法包括:根据SPARQL语句确定所有子查询语句;评估每个子查询语句的代价;选择代价最小的子查询语句;基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;重复执行,直至所有子查询语句均被选择;按选择顺序排列并连接所有子查询语句,得到最终查询语句。本发明的方案,评估每个子查询语句的代价;选择代价最小的子查询语句;重复执行基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;直至所有子查询语句均被选择;按选择顺序排列并连接所有子查询语句,得到最终查询语句,提高了连接排序的优化速率,改善了联合查询的性能。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种基于SPARQL端点联合的动态连接排序方法。
背景技术
关联数据技术极大地促进了单个存储库中数据的释放;然而,对这些数据在单个SPARQL(全称为SPARQL Protocol and RDF Query Language,是为RDF开发的一种查询语言和数据获取协议)端点的搜索仍在进行中,即使在链接的数据空间中它也很难真正的确认数据从各自的“竖井”中解脱。为了能够在多个端点搜索,许多联合查询系统已经开发。尽管很难断言这些查询系统的性能接近生产水平,研究团体在不断尝试改进这种性能。
联合查询本身必须探索多个端点,在遍历这些端点过程中,从一个端点得到的结果必须与从下一个端点得到的结果连接。为了有效地执行多个搜索空间上的搜索,选择最佳的连接顺序是关键。
连接排序优化多年来一直是热门的研究课题,然而,在这些研究中,常见的方法是静态连接优化的方法。考虑在SPARQL查询性能上连接排序的重要性,但这种连接排序不能在查询开始有效地进行优化。
发明内容
(一)要解决的技术问题
为了解决现有技术的上述问题,本发明提供一种基于SPARQL端点联合的动态连接排序方法。
(二)技术方案
为了达到上述目的,本发明采用的主要技术方案包括:
一种基于SPARQL端点联合的动态连接排序方法,所述方法包括:
S101,获取SPARQL语句;
S102,根据所述SPARQL语句确定所有子查询语句;
S103,评估每个子查询语句的代价;
S104,选择代价最小的子查询语句;
S105,基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;
S106,重复执行S105,直至所有子查询语句均被选择;
S107,按选择顺序排列并连接所有子查询语句,得到最终查询语句。
可选地,所述S105具体包括:
S105-1,将未选择的子查询语句形成查询集合;
S105-2,若查询集合中元素数量为1,则将所述查询集合中的子查询语句作为下一个选择的子查询语句;
S105-3,若查询集合中元素数量大于1,则基于选择的子查询语句,确定未选择的子查询语句的代价,将代价最小的未选择的子查询作为下一个选择的子查询语句。
可选地,所述S105-3具体包括:
S105-3-1,确定整数k;
S105-3-2,确定因子Z=min{k,N},其中,min{}为取小函数,N为查询集合中元素数量;
S105-3-3,从1至Z依次选择一个值,基于选择的子查询语句,确定每个选择的值对应的最佳结果集合,形成最佳结果总集;
S105-3-4,根据最佳结果总集,确定代价最小的未选择的子查询语句;
S105-3-5,将S105-3-4中确定的未选择的子查询语句作为下一个选择的子查询语句。
可选地,所述S105-3-3具体包括:
对于1至Z中的任一值z,
从1至z中依次选择一个数,在所述查询集合的所有子集中,选择元素数量为当前选择的数的子集,形成第一子集集合;
设置第一子集集合的最佳结果集为空;
对于第一子集集合中的每一个子集O,根据O中所有查询语句加选择的子查询语句的代价与P中所有查询语句加选择的子查询语句的代价确定对应O的最佳结果,并将对应O的最佳结果加入所述第一子集集合的最佳结果集中;其中P为集合,集合中的元素为属于第一子集集合但不属于O的所有元素;
将最终的第一子集集合的最佳结果集确定为z对应的最佳结果集合。
可选地,所述根据O中所有查询语句加选择的子查询语句的代价与P中所有查询语句加选择的子查询语句的代价确定对应O的最佳结果,具体包括:
在O中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于O的语句S1;
在P中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于P的语句S2;
将S1与S2的结合join确定为对应O的最佳结果。
可选地,所述S105-3-4具体包括:
从最佳结果总集中确定第二子集集合和第三子集集合;
根据所述第二子集集合和第三子集集合对所述查询集合进行更新;
在更新后的查询集合中确定代价最小的查询语句,并将其确定为代价最小的未选择的子查询语句。
可选地,所述从最佳结果总集中确定第二子集集合和第三子集集合,具体包括:
将所述查询集合中,元素数量为Z的子集形成第二子集集合;
在所述最佳结果集合中确定包含所述第二子集结合元素的元素,形成第三子集集合。
可选地,所述根据所述第二子集集合和第三子集集合对所述查询集合进行更新,具体包括:
确定第三子集集合中各元素的代价;
将所述查询集合更新为所述查询集合与第三子集集合的交集;所述第三子集集合为第二子集集合与第三子集集合中代价小的元素的并。
可选地,所述从最佳结果总集中确定第二子集集合和第三子集集合之后,还包括:
从最佳结果总集中删除第二子集集合对应的最佳结果集。
可选地,所述S105-3-1具体包括:
k=S102中确定的子查询语句总数量;或者,
k=当前选择的子查询语句的数量*S102中确定的子查询语句总数量/2;或者,
k=当前选择的子查询语句的数量*S102中确定的子查询语句总数量/(S102中确定的子查询语句总数量-当前的子查询语句的数量);或者,
k=S104中选择的子查询语句的代价*S102中确定的子查询语句总数量/当前的子查询语句的总代价。
(三)有益效果
本发明的有益效果是:评估每个子查询语句的代价;选择代价最小的子查询语句;重复执行基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;直至所有子查询语句均被选择;按选择顺序排列并连接所有子查询语句,得到最终查询语句,提高了连接排序的优化速率,改善了联合查询的性能。
附图说明
图1为本申请一实施例提供的一种基于SPARQL端点联合的动态连接排序方法的流程示意图;
图2为本申请一实施例提供的连接操作示意图;
图3为本申请一实施例提供的一种COUNT查询评估子查询选择性示意图;
图4为本申请一实施例提供的一种跨领域查询时间示意图;
图5为本申请一实施例提供的一种生命科学领域查询时间示意图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
随着万维网向语义网络的发展,大量的由多个领域相互关联的网络数据集陆续产生了。联合查询是通过SPARQL端点能够在同一时间在多个数据源上运行的查询。在联合查询中,每一个数据源可能由非平凡大小的搜索空间组成。因此,为了减少来自不同数据源的中间结果大小,发现最佳的连接顺序是优化联合查询性能的关键。
本发明提供一种基于SPARQL端点联合的动态连接排序方法,评估每个子查询语句的代价;选择代价最小的子查询语句;重复执行基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;直至所有子查询语句均被选择;按选择顺序排列并连接所有子查询语句,得到最终查询语句,提高了连接排序的优化速率,改善了联合查询的性能。
参见图1,本方案的实现过程如下。
S101,获取SPARQL语句。
本步骤中可以获取用户输入的SPARQL语句,也可以从包括SPARQL语句的文件中获取SPARQL语句。
本实施例不对SPARQL语句的获取方式进行限定。
S102,根据SPARQL语句确定所有子查询语句。
本步骤可以采用现有的确定方式确定SPARQL语句中的所有子查询语句,此处不做赘述。
S103,评估每个子查询语句的代价。
本步骤会对每个子查询语句的代价进行评估,此处的代价可以为执行子查询语句所得到的数据量,也可以为执行子查询语句所需的资源量。本实施例不对代价的具体含义进行具体限定。
另外,代价评估方法也采用现有方法,此处不做赘述。
S104,选择代价最小的子查询语句。
执行至此,已经从所有的子查询语句中选择一个代价最小的子查询语句,对于其他未做选择的子查询语句,会根据当前选择的代价最小的子查询语句依次进行选择,选择方案为S105和S106。
S105,基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句。
S105-1,将未选择的子查询语句形成查询集合。
此处的未选择的子查询语句为当前仍未做出选择的子查询语句,第一次执行S105时,未选择的子查询语句为除S104中选择的子查询语句之外的所有子查询语句,后续执行S105时,未选择的子查询语句为除S104中选择的子查询语句以及之前所有执行S105选择的子查询语句之外的所有子查询语句。
如查询集合Queries为{T1,T2,…,Tn},其中Tn为子查询语句。
S105-2,若查询集合中元素数量为1,则将查询集合中的子查询语句作为下一个选择的子查询语句。
若查询集合中元素数量为1,则说明此元素为最后一个未做选择的子查询语句,则将其作为下一个选择的子查询语句。
S105-3,若查询集合中元素数量大于1,则基于选择的子查询语句,确定未选择的子查询语句的代价,将代价最小的未选择的子查询作为下一个选择的子查询。
若查询集合中元素数量大于1,则说明有多个子查询语句未做选择,此时需要从中选择一个作为下一个选择的子查询语句。
具体的选择方案如下:
S105-3-1,确定整数k。
其中,k用于对循环数量进行调节。
k=S102中确定的子查询语句总数量。或者,
k=当前选择的子查询语句的数量*S102中确定的子查询语句总数量/2。或者,
k=当前选择的子查询语句的数量*S102中确定的子查询语句总数量/(S102中确定的子查询语句总数量-当前的子查询语句的数量)。或者,
k=S104中选择的子查询语句的代价*S102中确定的子查询语句总数量/当前的子查询语句的总代价。
S105-3-2,确定因子Z=min{k,N}。
其中,min{}为取小函数,N为查询集合中元素数量,如N=|Queries|。
S105-3-3,从1至Z依次选择一个值,基于选择的子查询语句,确定每个选择的值对应的最佳结果集合,形成最佳结果总集。
具体的,
对于1至Z中的任一值z,
S105-3-3-1、从1至z中依次选择一个数,在查询集合的所有子集中,选择元素数量为当前选择的数的子集,形成第一子集集合。
S105-3-3-2、设置第一子集集合的最佳结果集为空。
S105-3-3-3、对于第一子集集合中的每一个子集O,根据O中所有查询语句加选择的子查询语句的代价与P中所有查询语句加选择的子查询语句的代价确定对应O的最佳结果,并将对应O的最佳结果加入第一子集集合的最佳结果集中。
其中P为集合,集合中的元素为属于第一子集集合但不属于O的所有元素。
具体的,在O中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于O的语句S1。
在P中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于P的语句S2。
将S1与S2的结合join确定为对应O的最佳结果。
S105-3-3-4、将最终的第一子集集合的最佳结果集确定为z对应的最佳结果集合。
例如:
从1至z中依次选择一个数i,在查询集合Queries的所有子集中,选择元素数量为当前选择的数的子集,形成第一子集集合subQueries。即,第一子集集合中的任一元素均为一个集合,该集合为Queries的子集,且该集合中的元素数量为i。
设置第一子集集合的最佳结果集optimalResult(subQueries)为空,即optimalResult(subQueries)=Ф。
对于第一子集集合subQueries中的每一个子集O(即),根据O中所有查询语句加选择的子查询语句的代价与P中所有查询语句加选择的子查询语句的代价确定对应O的最佳结果,并将对应O的最佳结果加入第一子集集合的最佳结果集optimalResult(subQueries)中。
其中,P为集合,集合中的元素为属于第一子集集合subQueries但不属于O的所有元素。
具体的,在O中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于O的语句S1。
在P中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于P的语句S2。
将S1与S2的结合join确定为对应O的最佳结果。
将最终的第一子集集合的最佳结果集确定为z对应的最佳结果集合。
S105-3-4,根据最佳结果总集,确定代价最小的未选择的子查询语句。
本步骤实现过程如下:
S105-3-4-1,从最佳结果总集中确定第二子集集合和第三子集集合。
其中,将查询集合中,元素数量为Z的子集形成第二子集集合。
在最佳结果集合中确定包含第二子集结合元素的元素,形成第三子集集合。
如第二子集集合V∈Queries,且|V|=Z。
第三子集集合P∈optimalResult()。
S105-3-4-2,根据第二子集集合和第三子集集合对查询集合进行更新。
例如,确定第三子集集合中各元素的代价。将查询集合更新为查询集合与第三子集集合的交集。第三子集集合为第二子集集合与第三子集集合中代价小的元素的并。
S105-3-4-3,在更新后的查询集合中确定代价最小的查询语句,并将其确定为代价最小的未选择的子查询语句。
另外,从最佳结果总集中确定第二子集集合和第三子集集合之后,还会从最佳结果总集中删除第二子集集合对应的最佳结果集。
S105-3-5,将S105-3-4中确定的未选择的子查询语句作为下一个选择的子查询语句。
S106,重复执行S105,直至所有子查询语句均被选择。
S107,按选择顺序排列并连接所有子查询语句,得到最终查询语句。
在得到最终查询语句后,可以执行该查询语句进行数据查询。
通本发明提供的基于SPARQL端点联合的动态连接排序方法所决定连接顺序,是通过迭代的动态规划得到的,可以提高连接排序的优化速率,改善联合查询的性能。
在现有的关系数据库中,关联的数据项在由任意数量的列组成的表中维护;在RDF中,数据块是在三元组中维护的,这是类型化二进制关系的最小单位。因此,连接操作在处理SPARQL查询的时候的出现频率比处理一个相应的SQL查询更高。
假设有一个查询,可以分解为三个子查询:Qa,Qb和Qc。分别是来自三个不同端点的三个子查询的结果集Ra,Rb,Rc。最后的结果集能满足三个子查询设置的约束。在图2(c)中,三个圆圈Ra,Rb和Rc代表了三个子查询的结果集,灰色区域代表了最后的结果。为了得到最后的结果集,有六种不同的连接顺序,即,(1)A→B→C;(2)A→C→B;(3)B→A→C;(4)B→C→A;(5)C→A→B;和(6)C→B→A。不管哪种连接顺序被选中,最后的结果集都是相同的;然而,必须处理的中间结果的数量则是变化的。比如:首先执行子集Qc,|Rc|必须作为初始处理的中间结果集;然而,应该避免这个选择,因为它是生成这三种可能子查询中最大的中间结果集。
如果中间结果的大小是已知的或者是可以提前估计的,连接顺序则可能优化。比如,单个子查询的结果大小可以预先估计为|Ra|<|Rb|<|Rc|。基于这个信息,连接顺序可以被优化为A→B→C。以下是必要的操作并且必须按照给定的顺序发生:
1.得到结果集Ra。
2.使用结果集Ra的查询Qb中的绑定变量并且提交中间结果给Eb。
3.得到结果集RaRb。
4.使用结果集RaRb的查询Qc中的绑定变量并且提交中间结果给Ec。
5.得到最后的结果集RaRbRc。
在给定连接顺序下,必须处理的中间结果集的大小是|Ra|+|Ra∩Rb|。这就是大多数联合查询系统使用的静态连接优化。即为了更好地优化连接顺序,试图使用启发式或者统计信息去估计单个子查询的结果集大小。目前,Fedx,DARQ,SPLENDID,ADERIS,Avalanche等系统使用这种连接排序方法。
当查询变得复杂时,静态连接顺序优化方法将不再适用。在静态连接顺序优化中,假设了三个子查询,首先执行Qa,然后根据结果集的大小,执行Qb。注意,首先执行Qa后,在接下来的执行中有两个选择,即,Qb和Qc。尽管被评估的|Rb|比|Rc|小,但是选择Qc为接下来的执行在实际中是一个更优的选择。因为|Ra∩Rc|比|Ra∩Rb|小。如图2(b)和图2(a)所示。
在这种情况下为了选择最优的方案,本发明所提供的基于SPARQL端点联合的动态连接排序方法的查询过程如下:①评估所有子查询的大小获得|Ra|<|Rb|<|Rc|;②评估Qa,然后将Ra应用到Qb和Qc,若基于k得到|Ra∩Rc|小于|Ra∩Rb|;③评估|Ra∩Rb|,④连接Qc,因此,连接顺序是A→C→B。这里动态方法明显地比静态方法好,因为中间结果的空间|Ra|+|Ra∩Rc|比|Ra|+|Ra∩Rb|小。
本发明的基于SPARQL端点联合的动态连接排序方法,不需要任何预计算信息的COUNT查询。更具体地说,将之前子查询的结果绑定到每一个剩余子集中,创建COUNT查询,将其发送到相关数据源中来确定在目前条件下有多少的中间结果将会产生。
COUNT查询是“select count(*)”形式的SPARQL查询。这个查询评估子查询的结果大小。
在具体实现时,本发明中的子查询创建COUNT查询如下:(1)搜索从最佳结果集optimalResult中得到的有绑定值的三元组;(2)在剩余的子查询中绑定变量,即,SubQueries和它相应的值;(3)使用UNION关键字将一个子查询的多个小查询合并成一个大查询减少COUNT查询的数量。使用该方法的一个例子如图3所示,其中粗体字部分代表了绑定变量及其值。
本发明提供的基于SPARQL端点联合的动态连接排序方法具有较佳的实验效果。
例如,使用FedBench数据集进行评估。FedBench是一个综合基准套件,分析联合查询处理策略的效率。FedBench涵盖一个范围广泛的场景并且提供一个基准驱动以综合的方式执行基准。本发明选择来自FedBench基准上的跨领域(Cross Domain,CD)和生命科学领域(Life Science,LS)的数据集合。这样选择的原因是两个查询集都实现来自关联开放数据云的真实世界数据上的实际查询。查询关注多个数据源上的查询处理和不同的连接复杂性,查询结果集大小以及所涉及的数据源的数量和查询结构(即,星型,链型或混合型)等相关方面。表1提出了FedBench基准测试查询语句特征信息。
在这两个场景中使用的数据源是LOD的一部分。表2总结了FedBench数据集,在FedBench项目中提供了数据集的详细信息和多个先进的统计数据。
表1
表2
由于国内防火墙的限制和网络延迟,访问远程SPARQL端点很困难。因此本研究将基准测试所需要的数据集全部下载到一个独立的物理virtuoso服务器。所有的实验是在一个内存8G的计算机上进行的,Inter(R)Core(TM)i3-3110M CPU 2.04GHz,系统使用UBUNTO10.04和64位java VM 1.7.0_75。本实验是在本地网络上运行的,因此网络传输代价可以忽略不计。
通过对比本提案的基于SPARQL端点联合的动态连接排序方法以及其他动态连接方法的性能可知,FedX在联合SPARQL端点查询系统中是最快的。因此本发明在FedX上使用改进的动态连接优化方法前后的不同。而且,评估SPLENDID,因为它使用统计信息产生一个好的连接顺序并且在动态规划技术基础上优化计划。本实验取运行时间作为评估标准,每组查询执行5次,然后取平均值进行结果对比。实验结果如图5和图5所示,其中,FedX,SPLENDID是原来的查询系统,dynajion表示FedX使用动态连接优化方法后的系统。Dgjion表示使用本发明的基于SPARQL端点联合的动态连接排序方法后的Fedx的系统。
从图4和图5可以看出,除了查询LS6和LS1,FedX比使用动态连接优化方法的FedX快一些,但最大的差距小于0.5秒。这是因为动态连接优化方法最后生成的连接计划和FedX相同,代价的差异主要来自于动态连接排序优化方法的额外优化代价。而且,因为生命科学领域的查询比跨领域的查询繁琐,额外的代价将会减少。而使用基于SPARQL端点联合的动态连接排序方法后,对比发现,基于SPARQL端点联合的动态连接排序方法在这两个领域内都比动态连接方法运行时间稍微快了一些。而在生命科学领域从LS3,LS7这两个查询集可以明显看出基于SPARQL端点联合的动态连接排序方法的运行时间比原FedX运行时间快了,而LS2持平。从整体看运行时间有超过FedX的趋势。而从LS6可以看出本提案的基于SPARQL端点联合的动态连接排序方法的使用远胜于FedX系统。通过比较SPLENDID查询系统与本发明的基于SPARQL端点联合的动态连接排序方法的FedX系统,SPLENDID查询运行时间明显较长。
本发明的一个基于SPARQL端点联合的动态连接排序方法,将迭代的动态规划算法应用在动态连接优化算法中去评估连接子查询的中间结果的大小,选择中间结果最小的并在执行查询过程中动态连接这个子查询,确保所得连接子查询的结果集最优。通过FedBench基准上的数据进行实验评估,基于SPARQL端点联合的动态连接排序方法具有较佳的查询性能。
有益效果:本发明的方案,评估每个子查询语句的代价;选择代价最小的子查询语句;重复执行基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;直至所有子查询语句均被选择;按选择顺序排列并连接所有子查询语句,得到最终查询语句,提高了连接排序的优化速率,改善了联合查询的性能。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
最后应说明的是:以上所述的各实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于SPARQL端点联合的动态连接排序方法,其特征在于,所述方法包括:
S101,获取SPARQL语句;
S102,根据所述SPARQL语句确定所有子查询语句;
S103,评估每个子查询语句的代价;
S104,选择代价最小的子查询语句;
S105,基于选择的子查询语句,在未选择的子查询语句中确定下一个选择的子查询语句;
S106,重复执行S105,直至所有子查询语句均被选择;
S107,按选择顺序排列并连接所有子查询语句,得到最终查询语句。
2.根据权利要求1所述的方法,其特征在于,所述S105具体包括:
S105-1,将未选择的子查询语句形成查询集合;
S105-2,若查询集合中元素数量为1,则将所述查询集合中的子查询语句作为下一个选择的子查询语句;
S105-3,若查询集合中元素数量大于1,则基于选择的子查询语句,确定未选择的子查询语句的代价,将代价最小的未选择的子查询作为下一个选择的子查询语句。
3.根据权利要求2所述的方法,其特征在于,所述S105-3具体包括:
S105-3-1,确定整数k;
S105-3-2,确定因子Z=min{k,N},其中,min{}为取小函数,N为查询集合中元素数量;
S105-3-3,从1至Z依次选择一个值,基于选择的子查询语句,确定每个选择的值对应的最佳结果集合,形成最佳结果总集;
S105-3-4,根据最佳结果总集,确定代价最小的未选择的子查询语句;
S105-3-5,将S105-3-4中确定的未选择的子查询语句作为下一个选择的子查询语句。
4.根据权利要求3所述的方法,其特征在于,所述S105-3-3具体包括:
对于1至Z中的任一值z,
从1至z中依次选择一个数,在所述查询集合的所有子集中,选择元素数量为当前选择的数的子集,形成第一子集集合;
设置第一子集集合的最佳结果集为空;
对于第一子集集合中的每一个子集O,根据O中所有查询语句加选择的子查询语句的代价与P中所有查询语句加选择的子查询语句的代价确定对应O的最佳结果,并将对应O的最佳结果加入所述第一子集集合的最佳结果集中;其中P为集合,集合中的元素为属于第一子集集合但不属于O的所有元素;
将最终的第一子集集合的最佳结果集确定为z对应的最佳结果集合。
5.根据权利要求4所述的方法,其特征在于,所述根据O中所有查询语句加选择的子查询语句的代价与P中所有查询语句加选择的子查询语句的代价确定对应O的最佳结果,具体包括:
在O中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于O的语句S1;
在P中所有查询语句加选择的子查询语句中确定代价最小的查询语句,选择该查询语句中属于P的语句S2;
将S1与S2的结合join确定为对应O的最佳结果。
6.根据权利要求3所述的方法,其特征在于,所述S105-3-4具体包括:
从最佳结果总集中确定第二子集集合和第三子集集合;
根据所述第二子集集合和第三子集集合对所述查询集合进行更新;
在更新后的查询集合中确定代价最小的查询语句,并将其确定为代价最小的未选择的子查询语句。
7.根据权利要求6所述的方法,其特征在于,所述从最佳结果总集中确定第二子集集合和第三子集集合,具体包括:
将所述查询集合中,元素数量为Z的子集形成第二子集集合;
在所述最佳结果集合中确定包含所述第二子集结合元素的元素,形成第三子集集合。
8.根据权利要求6所述的方法,其特征在于,所述根据所述第二子集集合和第三子集集合对所述查询集合进行更新,具体包括:
确定第三子集集合中各元素的代价;
将所述查询集合更新为所述查询集合与第三子集集合的交集;所述第三子集集合为第二子集集合与第三子集集合中代价小的元素的并。
9.根据权利要求6所述的方法,其特征在于,所述从最佳结果总集中确定第二子集集合和第三子集集合之后,还包括:
从最佳结果总集中删除第二子集集合对应的最佳结果集。
10.根据权利要求3所述的方法,其特征在于,所述S105-3-1具体包括:
k=S102中确定的子查询语句总数量;或者,
k=当前选择的子查询语句的数量*S102中确定的子查询语句总数量/2;或者,
k=当前选择的子查询语句的数量*S102中确定的子查询语句总数量/(S102中确定的子查询语句总数量-当前的子查询语句的数量);或者,
k=S104中选择的子查询语句的代价*S102中确定的子查询语句总数量/当前的子查询语句的总代价。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051652.8A CN112732746B (zh) | 2021-01-13 | 2021-01-13 | 一种基于sparql端点联合的动态连接排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051652.8A CN112732746B (zh) | 2021-01-13 | 2021-01-13 | 一种基于sparql端点联合的动态连接排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732746A true CN112732746A (zh) | 2021-04-30 |
CN112732746B CN112732746B (zh) | 2023-05-12 |
Family
ID=75593215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110051652.8A Active CN112732746B (zh) | 2021-01-13 | 2021-01-13 | 一种基于sparql端点联合的动态连接排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732746B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130179467A1 (en) * | 2012-01-11 | 2013-07-11 | Google Inc. | Calculating Property Caching Exclusions In A Graph Evaluation Query Language |
CN104834754A (zh) * | 2015-05-29 | 2015-08-12 | 武汉大学 | 一种基于连接代价的sparql语义数据查询优化方法 |
CN105630881A (zh) * | 2015-12-18 | 2016-06-01 | 陕西师范大学 | 一种rdf的数据存储方法和查询方法 |
CN111241127A (zh) * | 2020-01-16 | 2020-06-05 | 华南师范大学 | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 |
-
2021
- 2021-01-13 CN CN202110051652.8A patent/CN112732746B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130179467A1 (en) * | 2012-01-11 | 2013-07-11 | Google Inc. | Calculating Property Caching Exclusions In A Graph Evaluation Query Language |
CN104834754A (zh) * | 2015-05-29 | 2015-08-12 | 武汉大学 | 一种基于连接代价的sparql语义数据查询优化方法 |
CN105630881A (zh) * | 2015-12-18 | 2016-06-01 | 陕西师范大学 | 一种rdf的数据存储方法和查询方法 |
CN111241127A (zh) * | 2020-01-16 | 2020-06-05 | 华南师范大学 | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112732746B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1738290B1 (en) | Partial query caching | |
US9342553B1 (en) | Identifying distinct combinations of values for entities based on information in an index | |
Naumann | Quality-driven query answering for integrated information systems | |
US7120623B2 (en) | Optimizing multi-predicate selections on a relation using indexes | |
US8166022B2 (en) | System, method, and apparatus for parallelizing query optimization | |
US8126870B2 (en) | System and methodology for parallel query optimization using semantic-based partitioning | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
US8332389B2 (en) | Join order for a database query | |
US8745037B2 (en) | Exploiting partitioning, grouping, and sorting in query optimization | |
US8965918B2 (en) | Decomposed query conditions | |
EP3014488B1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US20060242102A1 (en) | Relaxation-based approach to automatic physical database tuning | |
US20080294620A1 (en) | User-defined relevance ranking for search | |
Yin et al. | Robust query optimization methods with respect to estimation errors: A survey | |
US9317556B2 (en) | Accelerating database queries containing bitmap-based conditions | |
Sioulas et al. | Scalable multi-query execution using reinforcement learning | |
Khelil et al. | Combining graph exploration and fragmentation for scalable RDF query processing | |
US8478793B2 (en) | Virtual pair algorithm for outer join resolution | |
Jacob et al. | Sharing work in keyword search over databases | |
CN112732746B (zh) | 一种基于sparql端点联合的动态连接排序方法 | |
Wang et al. | Regular expression matching on billion-nodes graphs | |
Margoor et al. | Improving join reordering for large scale distributed computing | |
Zhu et al. | Optimization of monotonic linear progressive queries based on dynamic materialized views | |
Lee | MDH*: Multidimensional histograms for Linked Data queries | |
CN112749184B (zh) | 一种sparql联合查询的数据源选择方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |