CN110990426B - 一种基于树搜索的rdf查询方法 - Google Patents

一种基于树搜索的rdf查询方法 Download PDF

Info

Publication number
CN110990426B
CN110990426B CN201911233788.XA CN201911233788A CN110990426B CN 110990426 B CN110990426 B CN 110990426B CN 201911233788 A CN201911233788 A CN 201911233788A CN 110990426 B CN110990426 B CN 110990426B
Authority
CN
China
Prior art keywords
node
graph
query
nodes
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.)
Active
Application number
CN201911233788.XA
Other languages
English (en)
Other versions
CN110990426A (zh
Inventor
董荣胜
刘江江
李凤英
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guilin University of Electronic Technology
Original Assignee
Guilin University of Electronic Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201911233788.XA priority Critical patent/CN110990426B/zh
Publication of CN110990426A publication Critical patent/CN110990426A/zh
Application granted granted Critical
Publication of CN110990426B publication Critical patent/CN110990426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于树搜索的RDF查询方法,将RDF查询问题转化为子图同态问题,构建了邻接边、逆邻接表、P‑In和P‑Out四种索引,用于减少查询图中变量节点的候选域;在执行图匹配算法之前,该方法基于贪心思想为查询图生成一个节点匹配序列,该序列能在匹配过程中尽可能早的引入更多约束,用于减少匹配阶段的搜索空间。在匹配阶段,基于深度优先遍历该序列与数据图所构成的搜索空间树,通过子图同态约束修剪搜索空间树中不可行的分支。本发明能够较好回答大规模RDF数据查询问题。

Description

一种基于树搜索的RDF查询方法
技术领域
本发明涉及大规模RDF数据查询领域,具体是一种基于树搜索的RDF查询方法。
背景技术
资源描述框架(Resource Description Framework,简称RDF)是由W3C提出的对万维网上信息进行描述的一个框架,它为Web上的各种应用提供信息描述规范。RDF可以使用<S,P,O>三元组描述Web资源,其中S通常被称为主语,P被称为谓词,O被称为宾语。RDF被广泛的应用到各种领域如社交网络、生命科学、医疗和科学研究等。SPARQL是W3C为实现RDF数据的检索标准所定义的查询语言。随着语义网关系抽取技术的迅速发展,RDF数据集中的三元组已经达到数亿级规模,提高SPARQL的查询性能已经成为一个亟待解决的技术问题。
目前,基于数据组织与存储的方案上可以分为三种查询技术,基于关系型数据库、基本三元组和基于图的RDF查询技术。基于关系型数据库的存储模式是指将RDF的数据直接存储在关系数据库中,这种存储模式可以直接利用关系数据库的成熟、高效的数据管理和操纵技术,然而在进行SPARQL查询时,简单的三元组存储方式存在大量的自连接操作;基于基本三元组的存储方式是指将三元组分别按S,P,O的不同顺序直接利用B+树、哈希等索引结构来存储,并在该索引结构上实现对RDF数据的查询,基于基本三元组的存储方式通常采用了穷举的方式建立索引,在加快查询的同时带来了内存空间消耗较大的问题;而基于图的存储方式能够提供RDF数据的原生支持,且将RDF查询问题转化为大图匹配问题,成为RDF查询技术中的一个重要分支。针对目前基于关系型数据库、基本三元组存储模式存在的问题,本发明采用基于图的存储模式将RDF查询问题转化为大图匹配问题,有效避免了大量的自连接操作。本发明仅构造了4种索引,避免了使用完全索引所带来空间消耗大的问题,提出一种基于树搜索的大规模RDF数据查询的方法,能够有效提高大规模RDF数据的检索效率。
发明内容
本发明的目的在于提供一种基于树搜索的RDF查询方法,该方法基于贪心思想为查询图生成一个匹配序列,该序列能在匹配过程中尽可能早的引入更多约束,用于减少匹配阶段的搜索空间,该方法能够有效提高查询效率而无需任何复杂的推理和修剪规则。
实现本发明目的的技术方案是:
一种基于树搜索的RDF查询方法,RDF数据集为<S,P,O>三元组的集合,查询问题满足SPARQL标准,由于在实际的查询问题通常很少出现P为变量的情况,因此本发明不考虑P为变量的情况,包括如下步骤:
1)将RDF数据建模为有向标签数据图G=<V′,L′v,M′v,E′,L′e,M′e>,其中V′是由RDF数据中的S和O组成的节点集合,L′v为数据图中节点的标签的集合,M′v:V′→L′v表示数据图中节点到标签的双射函数,E′表示数据图中连接S和O的有向边的集合,L′e为数据图中边的标签,M′e:E′→L′e表示数据图中边到标签的双射函数,在将RDF数据转换为RDF数据图时,分别构建RDF数据对应的ID三元组集合、节点映射表vHash、逆节点映射表vHash-、边映射表eHash和逆边映射表eHash-
2)针对SPARQL中变量,为了有效减少变量节点的候选域,分别构建邻接边、逆邻接表、P-In和P-Out四种索引;
3)将SPARQL查询建模为有向标签查询图Q=<V,Lv,Mv,E,Le,Me>,其中V是由SPARQL查询图中的S和O组成的节点集合,Lv为查询图中的节点的标签,Mv:V→Lv表示查询图中的节点到标签的双射函数,E表示查询图中的连接S和O的有向边的集合,Le为查询图中的边的标签,Me=E→Le表示查询图中的边到标签的双射函数;
4)根据查询图中每个候选节点的数量,平均度及查询图节点度为依据,确定查询图初始节点的选择;
5)基于贪心思想,为查询图输出一个查询图节点匹配序列μ和一个标识序列μ中节点父节点的序列μpt;
6)在查询匹配过程中,根据步骤5)输出的查询图节点匹配序列μ和RDF数据图组成一颗搜索空间树(SST),采用深度优先策略对搜索空间树进行遍历,在遍历过程中,采用子图同态约束修剪不满足的分支,输出所有满足子图同态的分支,即得到查询结果。
所述步骤1)中的构建RDF数据对应的ID三元组集合,包括如下步骤:
1-1)在将RDF数据建模为有向标签图时,维护一个名为vHash的哈希节点映射表,即将相同的S或O映射到同一个节点,每个节点对应唯一的节点ID和标签(Label),同时构建一个节点ID到S/O的逆节点哈希映射表vHash-
1-2)在将RDF数据建模为有向标签图时,同时维护一个名为eHash的哈希边映射表,其作用是将相同的P映射到一个具有相同标签的有向边,每条边对应唯一的边标签,同时构建一个边标签到P的哈希逆边映射表eHash-
1-3)根据步骤1-1)和步骤1-2)的转换,将RDF三元组的集合转化为一个ID三元组的集合,分别存储RDF数据的ID三元组集合、节点映射表vHash、逆节点映射表vHash-、边映射表eHash和逆边映射表eHash-
所述步骤2)中的构建邻接边、逆邻接表、P-In和P-Out四种索引,包括如下步骤:
2-1)在SPARQL查询图中,若变量节点u0存在入射边,且与之相连的为一个常量节点u1,在本方法中,由于使用邻接表的方法存储转换后的RDF数据图,因此,可以通过访问常量节点u1的邻接表并验证边的标签获得变量节点u0的候选域;
2-2)在SPARQL查询图中,若变量节点u0存在出射边,且与之相连的为一个常量节点u1,以冗余的方式构建逆邻接表,通过访问变量u0相关的常量节点u1减少逆邻接表的候选域;
2-3)在SPARQL查询图中,若变量节点u0存在出射边,且与之相连的为一个变量节点u1,通过构建数据图中边标签相关的起始节点集合p-In(ei)={vi|<vi,vj>∈E′,L′<vi,vj>=ei},以减少变量节点的候选域,其中vi,vj是数据图G中的节点,ei为查询图中边的标签;
2-4)在SPARQL查询图中,若变量节点u0存在入射边,且与之相连的为一个变量节点u1,通过构建数据图边标签相关的终止节点集合p-Out(ei)={vj|<vi,vj>∈E,L(<vi,vj>)=ei},以减少变量节点的候选域,其中vi,vj是数据图G中的节点,ei为查询图中边的标签。
所述步骤3)中的将SPARQL查询建模为有向标签图Q=<V,Lv,Mv,E,Le,Me>,包括如下步骤:
3-1)在SPARQL查询中,将相同的S和O建模为同一个节点,对应唯一的节点ID,S或O通常包含常量和变量的情况;对于SPARQL中S或O为常量的情况,其对应的数据图节点的标签可以使用S或O访问步骤1)中构造的vHash表获得该节点的标签;对于S或O为变量的情况,使用{*}作为该节点的标签;
3-2)对于SPARQL查询中的P,通过访问步骤1)所得到的边映射表eHash获得有向边所对应的标签;
3-3)采用邻接表的方式对SPARQL查询进行存储。
所述步骤4),具体包括如下步骤:
4-1)使用startVertexList表示查询图初始节点的候选域,初始化startVertexList为所有查询图的节点;
4-2)从候选集合startVertexList中移除度为1的变量节点且该节点的邻居仍为变量节点;
4-3)若startVertexList不空,则依次为startVertexList中每个节点u计算得分,得分计算公式为:
Figure GDA0003797143670000041
其中v=Mhom(u),T(L(u),G)为数据图G中与节点u具有相同标签L(u)的节点个数,avgdeg(v)为数据图中节点u的候选节点的平均度,deg(u)为节点u的度,最后选择得分最低的节点作为初始节点;
4-4)若startVertexList为空,则该查询图中只包含两个变量节点,使用步骤4-3)中的公式计算节点的得分,仍然选择得分最低的节点作为初始节点。
所述步骤5),具体包括如下步骤:
5-1)在查询图节点的排序过程中,其目的是为查询图输出一个节点匹配序列μ和一个标识序列μ中节点的父节点的序列μpt,首先,使用步骤4)获得初始节点u′0,并插入μ中,并设置初始节点u′0的父节点为空节点;假设um是当前序列μ要插入的第m个节点,其中um的候选集为未插入序列μ的节点但同时是序列μ中节点的邻居节点的集合;
5-2)在排序的过程中,迭代执行,直到所有的节点都被插入到序列μ中,对于um的每一个候选节点,使用以下四条规则计算得分,其中ui为已排序序列μ中的节点;
(1)Nm,vis=|{ui:0≤i<m,(um,ui)∈E}|,表示集合μ中与um相连的节点个数;
(2)
Figure GDA0003797143670000051
表示与um相连且至少与集合μ内一个节点相连的节点个数;
(3)Nm,ver=|min{P(ui,um):ui∈μ}|,计算节点验证集的大小,节点验证集合的大小由与节点um相关联的最小边验证集的大小得出,待插入的节点um及其邻居节点ui的边验证集可定义为:
P(ui,um)={(vi,vm)∈E′:(ui,um)∈E,L(vi,vm)=L(ui,um),ui∈μ},用于表示数据图中um的所有候选节点和ui的所有候选节点之间存在的边且边的标签为L(ui,um)的边的集合,取与um相关的边的最小验证集的大小Nm,ver=|min{P(ui,um):ui∈μ}|作为该节点的验证次数,用于粗略的估计选择um候选节点的代价;
(4)
Figure GDA0003797143670000052
表示不在集合μ中,也不与集合μ中的任意顶点相连,但与顶点um相连的节点个数;
若um的候选集合存在多个节点,则依次考虑每个候选节点Nm,vis,Nm,neig,Nm,ver,Nm,unv的得分,假设ua和ub是um的两个候选节点,依次判断以下四种规则,若满足当前选项,则选择ua为待插入节点;
(a)|Na,vis|>|Nb,vis|
(b)|Na,vis|=|Nb,vis|,|Na,neig|>|Nb,neig|
(c)|Na,vis|=|Nb,vis|,|Na,neig|=|Nb,neig|,|Na,ver|<|Nb,ver|
(d)|Na,vis|=|Nb,vis|,|Na,neig|=|Nb,neig|,|Na,ver|=|Nb,ver|,|Na,unv|>|Nb,unv|
若ua和ub在Nm,vis,Nm,neig,Nm,ver,Nm,unv有相同的得分,则任意选择一个节点,算法迭代的执行,直到所有的节点插入到μ中。
所述步骤6),具体包括如下步骤:
6-1)对于查询图起始节点u0的候选集,若u0为变量节点,则通过索引获得变量节点的最小候选域;若为常量节点,则通过标签映射表vHash获得u0在数据图中唯一映射的节点v0
6-2)假设当前分支为M={(u0,v0),(u1,v1),...,(um-1vm-1)},(um,vm)为当前分支中待验证的节点,其中vi=Mhom(ui),0<i≤m,对于um的每一个候选节点vm,依次判断是否满足以下子图同态约束:
i.Lv(ui)=Lv′(vi),即查询图节点um和数据图节点vm具有相同的标签;
ii.|Neig-(um)|≤|Neig-(vm)|,|Neig+(um)|≤|Neig+(vm)|,其中|Neig-(um)|表示节点的入度,|Neig+(um)|表示节点的出度,即数据图中的节点vm的入度和出度分别大于等于查询图中的节点um的入度和出度;
iii.
Figure GDA0003797143670000061
且L<ui,um>=<vi,vj>,vm到已匹配序列(v0,v1,...,vm-1)中任一节点um与节点到序列(u0,u1,...,um-1)中的任一节点具有相同的拓扑结构,并且对应的边由相同的标签,如果存在边<um,ui>,则具有相同的约;
6-3)若当前候选节点vm不满足子图同态约束,判断当前候选节点是否为最后一个候选节点,若为最后一个候选节点,则退回到上一个节点,否则执行步骤6-4);
6-4)若um的某个候选节点vm满足子图同态约束,且当前查询图节点为变量节点,则将当前查询图变量节点标签设置为数据图候选节点vm的标签,否则执行步骤6-5);
6-5)若当前查询图的节点已经全部匹配结束,则该匹配序列为一个完整匹配序列,通过逆节点映射表vHash-,输出该完整匹配序列中所有查询图变量节点相匹配的数据图节点所对应的标签,即SPARQL查询的一个结果;否则,执行步骤6-6);
6-6)若当前查询图的还有节点尚未完全匹配,则继续匹配序列μ中的第m+1个节点,该节点的候选节点可由序列中节点μpt(um+1)的邻接表或逆邻接表表获得,否则继续执行步骤6-2)。
与现有技术相比,本发明的积极效果为:
本发明将RDF查询问题转化为子图同态问题,借助图匹配技术回答SPARQL查询,构建了邻接边、逆邻接表、P-In和P-Out四种索引,用于减少查询图中变量节点的候选域;在执行图匹配算法之前,该方法基于贪心思想为查询图生成一个匹配序列,该序列能在匹配过程中尽可能早的引入更多约束,用于减少匹配阶段的搜索空间。与现有的基于数据库存储的RDF查询技术相比,通过访问图的邻接表,有效的避免了大量的自连接操作;与基于完全索引的RDF查询技术相比,本发明仅构造简单的索引,能够加载更多的RDF数据;本发明提出一种变量排序规则,在匹配过程种,该序列能尽可能早的修剪搜索空间树的分支,而未使用任何复杂的预测规则和修剪规则,能够较好回答大规模RDF数据查询问题。
附图说明
图1为本发明实施例中本方法的整体框架图。
具体实施方式
下面结合附图和实施例对本发明内容作进一步阐述,但不是对本发明的限定。
实施例:
一种基于树搜索的RDF查询方法,针对大规模RDF数据进行查询,整个方法的流程如图1所示,该方法主要分为离线阶段和在线阶段,离线阶段主要为数据的预处理阶段,主要包括RDF数据的转换和索引的构建。在线阶段主要包括为查询图输出一个节点匹配序列,并执行查询图和数据图的图匹配,以RDF数据集为<S,P,O>三元组的集合为例,查询问题满足SPARQL标准,由于在实际的查询问题通常很少出现P为变量的情况,因此本发明不考虑P为变量的情况,包括如下步骤:
1)将RDF数据建模为有向标签数据图G=<V′,L′v,M′v,E′,L′e,M′e>,其中V′是由RDF数据中的S和O组成的节点集合,L′v为数据图中节点的标签的集合,M′v:V′→L′v表示数据图中节点到标签的双射函数,E′表示数据图中连接S和O的有向边的集合,L′e为数据图中边的标签,M′e:E′→L′e表示数据图中边到标签的双射函数。在将RDF数据转换为RDF数据图时,分别构建RDF数据对应的ID三元组集合、节点映射表vHash、逆节点映射表vHash-、边映射表eHash和逆边映射表eHash-
2)针对SPARQL中变量,为了有效减少变量节点的候选域,分别构建邻接边、逆邻接表、P-In和P-Out四种索引;
3)将SPARQL查询建模为有向标签查询图Q=<V,Lv,Mv,E,Le,Me>,其中V是由SPARQL查询图中的S和O组成的节点集合,Lv为查询图中的节点的标签,Mv:V→Lv表示查询图中的节点到标签的双射函数,E表示查询图中的连接S和O的有向边的集合,Le为查询图中的边的标签,Me=E→Le表示查询图中的边到标签的双射函数;
4)根据查询图中每个候选节点的数量,平均度及查询图节点度为依据,确定查询图初始节点的选择;
5)基于贪心思想,为查询图输出一个查询图节点匹配序列μ和一个标识序列μ中节点父节点的序列μpt;
6)在查询匹配过程中,根据步骤5)输出的查询图节点匹配序列μ和RDF数据图组成一颗搜索空间树(SST),采用深度优先策略对搜索空间树进行遍历,在遍历过程中,采用子图同态约束修剪不满足的分支,输出所有满足子图同态的分支,即得到查询结果。
所述步骤1)中的构建RDF数据对应的ID三元组集合,包括如下步骤:
1-1)在将RDF数据建模为有向标签图时,维护一个名为vHash的哈希节点映射表,即将相同的S或O映射到同一个节点,每个节点对应唯一的节点ID和标签(Label),同时构建一个节点ID到S/O的逆节点哈希映射表vHash-
1-2)在将RDF数据建模为有向标签图时,同时维护一个名为eHash的哈希边映射表,其作用是将相同的P映射到一个具有相同标签的有向边,每条边对应唯一的边标签,同时构建一个边标签到P的哈希逆边映射表eHash-
1-3)根据步骤1-1)和步骤1-2)的转换,将RDF三元组的集合转化为一个ID三元组的集合,分别存储RDF数据的ID三元组集合、节点映射表vHash、逆节点映射表vHash-、边映射表eHash和逆边映射表eHash-
所述步骤2)中的构建邻接边、逆邻接表、P-In和P-Out四种索引,包括如下步骤:
2-1)在SPARQL查询图中,若变量节点u0存在入射边,且与之相连的为一个常量节点u1,在本方法中,由于使用邻接表的方法存储转换后的RDF数据图,因此,可以通过访问常量节点u1的邻接表并验证边的标签获得变量节点u0的候选域;
2-2)在SPARQL查询图中,若变量节点u0存在出射边,且与之相连的为一个常量节点u1,以冗余的方式构建逆邻接表,通过访问变量u0相关的常量节点u1减少逆邻接表的候选域;
2-3)在SPARQL查询图中,若变量节点u0存在出射边,且与之相连的为一个变量节点u1,通过构建数据图中边标签相关的起始节点集合p-In(ei)={vi|<vi,vj>∈E′,L′<vi,vj>=ei},以减少变量节点的候选域,其中vi,vj是数据图G中的节点,ei为查询图中边的标签;
2-4)在SPARQL查询图中,若变量节点u0存在入射边,且与之相连的为一个变量节点u1,通过构建数据图边标签相关的终止节点集合p-Out(ei)={vj|<vi,vj>∈E,L(<vi,vj>)=ei},以减少变量节点的候选域,其中vi,vj是数据图G中的节点,ei为查询图中边的标签。
所述步骤3)中的将SPARQL查询建模为有向标签图Q=<V,Lv,Mv,E,Le,Me>,包括如下步骤:
3-1)在SPARQL查询中,将相同的S和O建模为同一个节点,对应唯一的节点ID,S或O通常包含常量和变量的情况;对于SPARQL中S或O为常量的情况,其对应的数据图节点的标签可以使用S或O访问步骤1)中构造的vHash表获得该节点的标签;对于S或O为变量的情况,使用{*}作为该节点的标签;
3-2)对于SPARQL查询中的P,通过访问步骤1)所得到的边映射表eHash获得有向边所对应的标签;
3-3)采用邻接表的方式对SPARQL查询进行存储。
所述步骤4),具体包括如下步骤:
4-1)使用startVertexList表示查询图初始节点的候选域,初始化startVertexList为所有查询图的节点;
4-2)从候选集合startVertexList中移除度为1的变量节点且该节点的邻居仍为变量节点;
4-3)若startVertexList不空,则依次为startVertexList中每个节点u计算得分,得分计算公式为:
Figure GDA0003797143670000101
其中v=Mhom(u),T(L(u),G)为数据图G中与节点u具有相同标签L(u)的节点个数,avgdeg(v)为数据图中节点u的候选节点的平均度,deg(u)为节点u的度,最后选择得分最低的节点作为初始节点;
4-4)若startVertexList为空,则该查询图中只包含两个变量节点,使用步骤4-3)中的公式计算节点的得分,仍然选择得分最低的节点作为初始节点。
所述步骤5),具体包括如下步骤:
5-1)在查询图节点的排序过程中,其目的是为查询图输出一个节点匹配序列μ和一个标识序列μ中节点的父节点的序列μpt,首先,使用步骤4)获得初始节点u′0,并插入μ中,并设置初始节点u0的父节点为空节点;假设um是当前序列μ要插入的第m个节点,其中um的候选集为未插入序列μ的节点但同时是序列μ中节点的邻居节点的集合;
5-2)在排序的过程中,迭代执行,直到所有的节点都被插入到序列μ中,对于um的每一个候选节点,使用以下四条规则计算得分,其中ui为已排序序列μ中的节点;
(1)Nm,vis=|{ui:0≤i<m,(um,ui)∈E}|,表示集合μ中与um相连的节点个数;
(2)
Figure GDA0003797143670000111
表示与um相连且至少与集合μ内一个节点相连的节点个数;
(3)Nm,ver=|min{P(ui,um):ui∈μ}|,计算节点验证集的大小,节点验证集合的大小由与节点um相关联的最小边验证集的大小得出,待插入的节点um及其邻居节点ui的边验证集可定义为:
P(ui,um)={(vi,vm)∈E′:(ui,um)∈E,L(vi,vm)=L(ui,um),ui∈μ},用
于表示数据图中um的所有候选节点和ui的所有候选节点之间存在的边且边的标签为L(ui,um)的边的集合,取与um相关的边的最小验证集的大小Nm,ver=|min{P(ui,um):ui∈μ}|作为该节点的验证次数,用于粗略的估计选择um候选节点的代价;
(4)
Figure GDA0003797143670000112
表示不在集合μ中,也不与集合μ中的任意顶点相连,但与顶点um相连的节点个数;
若um的候选集合存在多个节点,则依次考虑每个候选节点Nm,vis,Nm,neig,Nm,ver,Nm,unv的得分,假设ua和ub是um的两个候选节点,依次判断以下四种规则,若满足当前选项,则选择ua为待插入节点;
(a)|Na,vis|>|Nb,vis|
(b)|Na,vis|=|Nb,vis|,|Na,neig|>|Nb,neig|
(c)|Na,vis|=|Nb,vis|,|Na,neig|=|Nb,neig|,|Na,ver|<|Nb,ver|
(d)|Na,vis|=|Nb,vis|,|Na,neig|=|Nb,neig|,|Na,ver|=|Nb,ver|,|Na,unv|>|Nb,unv|
若ua和ub在Nm,vis,Nm,neig,Nm,ver,Nm,unv有相同的得分,则任意选择一个节点,算法迭代的执行,直到所有的节点插入到μ中。
所述步骤6),具体包括如下步骤:
6-1)对于查询图起始节点u0的候选集,若u0为变量节点,则通过索引获得变量节点的最小候选域;若为常量节点,则通过标签映射表vHash获得u0在数据图中唯一映射的节点v0
6-2)假设当前分支为M={(u0,v0),(u1,v1),...,(um-1vm-1)},(um,vm)为当前分支中待验证的节点,其中vi=Mhom(ui),0<i≤m,对于um的每一个候选节点vm,依次判断是否满足以下子图同态约束:
i.Lv(ui)=Lv′(vi),即查询图节点um和数据图节点vm具有相同的标签;
ii.|Neig-(um)|≤|Neig-(vm)|,|Neig+(um)|≤|Neig+(vm)|,其中|Neig-(um)|表示节点的入度,|Neig+(um)|表示节点的出度,即数据图中的节点vm的入度和出度分别大于等于查询图中的节点um的入度和出度;
iii.
Figure GDA0003797143670000121
且L<ui,um>=<vi,vj>,vm到已匹配序列(v0,v1,...,vm-1)中任一节点um与节点到序列(u0,u1,...,um-1)中的任一节点具有相同的拓扑结构,并且对应的边由相同的标签,如果存在边<um,ui>,则具有相同的约;
6-3)若当前候选节点vm不满足子图同态约束,判断当前候选节点是否为最后一个候选节点,若为最后一个候选节点,则退回到上一个节点,否则执行步骤6-4);
6-4)若um的某个候选节点vm满足子图同态约束,且当前查询图节点为变量节点,则将当前查询图变量节点标签设置为数据图候选节点vm的标签,否则执行步骤6-5);
6-5)若当前查询图的节点已经全部匹配结束,则该匹配序列为一个完整匹配序列,通过逆节点映射表vHash-,输出该完整匹配序列中所有查询图变量节点相匹配的数据图节点所对应的标签,即SPARQL查询的一个结果;否则,执行步骤6-6);
6-6)若当前查询图的还有节点尚未完全匹配,则继续匹配序列μ中的第m+1个节点,该节点的候选节点可由序列中节点μpt(um+1)的邻接表或逆邻接表表获得,否则继续执行步骤6-2)。

Claims (5)

1.一种基于树搜索的RDF查询方法,其特征在于, RDF数据集为<S,P,O>三元组的集合,查询问题满足SPARQL标准,包括如下步骤:
1)将RDF数据建模为有向标签数据图G=<V′,L′v,M′v,E′,L′e,M′e>,其中V′是由RDF数据中的S和O组成的节点集合,L′v为数据图中节点的标签的集合,M′v:V′→L′v表示数据图中节点到标签的双射函数,E′表示数据图中连接S和O的有向边的集合,L′e为数据图中边的标签,M′e:E′→L′e表示数据图中边到标签的双射函数,在将RDF数据转换为RDF数据图时,分别构建RDF数据对应的ID三元组集合、节点映射表vHash、逆节点映射表vHash-、边映射表eHash和逆边映射表eHash-
2)针对SPARQL中变量,为了有效减少变量节点的候选域,分别构建邻接边、逆邻接表、P-In和P-Out四种索引;
3)将SPARQL查询建模为有向标签查询图Q=<V,Lv,Mv,E,Le,Me>,其中V是由SPARQL查询图中的S和O组成的节点集合,Lv为查询图中的节点的标签,Mv:V→Lv表示查询图中的节点到标签的双射函数,E表示查询图中的连接S和O的有向边的集合,Le为查询图中的边的标签,Me=E→Le表示查询图中的边到标签的双射函数;
4)根据查询图中每个候选节点的数量,平均度及查询图节点度为依据,确定查询图初始节点的选择;
5)基于贪心思想,为查询图输出一个查询图节点匹配序列μ和一个标识序列μ中节点父节点的序列μpt;
6)在查询匹配过程中,根据步骤5)输出的查询图节点匹配序列μ和RDF数据图组成一颗搜索空间树,采用深度优先策略对搜索空间树进行遍历,在遍历过程中,采用子图同态约束修剪不满足的分支,输出所有满足子图同态的分支,即得到查询结果;
所述步骤2)中的构建邻接边、逆邻接表、P-In和P-Out四种索引,包括如下步骤:
2-1)在SPARQL查询图中,若变量节点u0存在入射边,且与之相连的为一个常量节点u1,通过访问常量节点u1的邻接表并验证边的标签获得变量节点u0的候选域;
2-2)在SPARQL查询图中,若变量节点u0存在出射边,且与之相连的为一个常量节点u1,以冗余的方式构建逆邻接表,通过访问变量u0相关的常量节点u1减少逆邻接表的候选域;
2-3)在SPARQL查询图中,若变量节点u0存在出射边,且与之相连的为一个变量节点u1,通过构建数据图中边标签相关的起始节点集合p-In(ei)={vi|<vi,vj>∈E′,L′<vi,vj>=ei},以减少变量节点的候选域,其中vi,vj是数据图G中的节点,ei为查询图中边的标签;
2-4)在SPARQL查询图中,若变量节点u0存在入射边,且与之相连的为一个变量节点u1,通过构建数据图边标签相关的终止节点集合p-Out(ei)={vj|<vi,vj>∈E,L(<vi,vj>)=ei},以减少变量节点的候选域,其中vi,vj是数据图G中的节点,ei为查询图中边的标签;
所述步骤5),具体包括如下步骤:
5-1)在查询图节点的排序过程中,其目的是为查询图输出一个节点匹配序列μ和一个标识序列μ中节点的父节点的序列μpt,首先,使用步骤4)获得初始节点u′0,并插入μ中,并设置初始节点u′0的父节点为空节点;假设um是当前序列μ要插入的第m个节点,其中um的候选集为未插入序列μ的节点但同时是序列μ中节点的邻居节点的集合;
5-2)在排序的过程中,迭代执行,直到所有的节点都被插入到序列μ中,对于um的每一个候选节点,使用以下四条规则计算得分,其中ui为已排序序列μ中的节点;
(1)Nm,vis=|{ui:0≤i<m,(um,ui)∈E}|,表示集合μ中与um相连的节点个数;
(2)
Figure FDA0003797143660000021
表示与um相连且至少与集合μ内一个节点相连的节点个数;
(3)Nm,ver=|min{P(ui,um):ui∈μ}|,计算节点验证集的大小,节点验证集合的大小由与节点um相关联的最小边验证集的大小得出,待插入的节点um及其邻居节点ui的边验证集可定义为:
P(ui,um)={(vi,vm)∈E′:(ui,um)∈E,L(vi,vm)=L(ui,um),ui∈μ},用于表示数据图中um的所有候选节点和ui的所有候选节点之间存在的边且边的标签为L(ui,um)的边的集合,取与um相关的边的最小验证集的大小Nm,ver=|min{P(ui,um):ui∈μ}|作为该节点的验证次数,用于粗略的估计选择um候选节点的代价;
(4)
Figure FDA0003797143660000031
表示不在集合μ中,也不与集合μ中的任意顶点相连,但与顶点um相连的节点个数;
若um的候选集合存在多个节点,则依次考虑每个候选节点Nm,vis,Nm,neig,Nm,ver,Nm,unv的得分,假设ua和ub是um的两个候选节点,依次判断以下四种规则,若满足当前选项,则选择ua为待插入节点;
(a)|Na,vis|>|Nb,vis|
(b)|Na,vis|=|Nb,vis|,|Na,neig|>|Nb,neig|
(c)|Na,vis|=|Nb,vis|,|Na,neig|=|Nb,neig|,|Na,ver|<|Nb,ver|
(d)|Na,vis|=|Nb,vis|,|Na,neig|=|Nb,neig|,|Na,ver|=|Nb,ver|,|Na,unv|>|Nb,unv|
若ua和ub在Nm,vis,Nm,neig,Nm,ver,Nm,unv有相同的得分,则任意选择一个节点,算法迭代的执行,直到所有的节点插入到μ中。
2.根据权利要求1所述的一种基于树搜索的RDF查询方法,其特征在于,所述步骤1)中的构建RDF数据对应的ID三元组集合,包括如下步骤:
1-1)在将RDF数据建模为有向标签图时,维护一个名为vHash的哈希节点映射表,即将相同的S或O映射到同一个节点,每个节点对应唯一的节点ID和标签Label,同时构建一个节点ID到S/O的逆节点哈希映射表vHash-
1-2)在将RDF数据建模为有向标签图时,同时维护一个名为eHash的哈希边映射表,其作用是将相同的P映射到一个具有相同标签的有向边,每条边对应唯一的边标签,同时构建一个边标签到P的哈希逆边映射表eHash-
1-3)根据步骤1-1)和步骤1-2)的转换,将RDF三元组的集合转化为一个ID三元组的集合,分别存储RDF数据的ID三元组集合、节点映射表vHash、逆节点映射表vHash-、边映射表eHash和逆边映射表eHash-
3.根据权利要求1所述的一种基于树搜索的RDF查询方法,其特征在于,所述步骤3)中的将SPARQL查询建模为有向标签图Q=<V,Lv,Mv,E,Le,Me>,包括如下步骤:
3-1)在SPARQL查询中,将相同的S和O建模为同一个节点,对应唯一的节点ID,S或O通常包含常量和变量的情况;对于SPARQL中S或O为常量的情况,其对应的数据图节点的标签可以使用S或O访问步骤1)中构造的vHash表获得该节点的标签;对于S或O为变量的情况,使用{*}作为该节点的标签;
3-2)对于SPARQL查询中的P,通过访问步骤1)所得到的边映射表eHash获得有向边所对应的标签;
3-3)采用邻接表的方式对SPARQL查询进行存储。
4.根据权利要求1所述的一种基于树搜索的RDF查询方法,其特征在于,所述步骤4),具体包括如下步骤:
4-1)使用startVertexList表示查询图初始节点的候选域,初始化startVertexList为所有查询图的节点;
4-2)从候选集合startVertexList中移除度为1的变量节点且该节点的邻居仍为变量节点;
4-3)若startVertexList不空,则依次为startVertexList中每个节点u计算得分,得分计算公式为:
Figure FDA0003797143660000041
其中v=Mhom(u),T(L(u),G)为数据图G中与节点u具有相同标签L(u)的节点个数,avgdeg(v)为数据图中节点u的候选节点的平均度,deg(u)为节点u的度,最后选择得分最低的节点作为初始节点;
4-4)若startVertexList为空,则该查询图中只包含两个变量节点,使用步骤4-3)中的公式计算节点的得分,仍然选择得分最低的节点作为初始节点。
5.根据权利要求1所述的一种基于树搜索的RDF查询方法,其特征在于,所述步骤6),具体包括如下步骤:
6-1)对于查询图起始节点u0的候选集,若u0为变量节点,则通过索引获得变量节点的最小候选域;若为常量节点,则通过标签映射表vHash获得u0在数据图中唯一映射的节点v0
6-2)假设当前分支为M={(u0,v0),(u1,v1),...,(um-1vm-1)},(um,vm)为当前分支中待验证的节点,其中vi=Mhom(ui),0<i≤m,对于um的每一个候选节点vm,依次判断是否满足以下子图同态约束:
i.Lv(ui)=Lv′(vi),即查询图节点um和数据图节点vm具有相同的标签;
ii.|Neig-(um)|≤|Neig-(vm)|,|Neig+(um)|≤|Neig+(vm)|,其中|Neig-(um)|表示节点的入度,|Neig+(um)|表示节点的出度,即数据图中的节点vm的入度和出度分别大于等于查询图中的节点um的入度和出度;
iii.
Figure FDA0003797143660000051
且L<ui,um>=<vi,vj>,vm到已匹配序列(v0,v1,...,vm-1)中任一节点um与节点到序列(u0,u1,...,um-1)中的任一节点具有相同的拓扑结构,并且对应的边由相同的标签,如果存在边<um,ui>,则具有相同的约;
6-3)若当前候选节点vm不满足子图同态约束,判断当前候选节点是否为最后一个候选节点,若为最后一个候选节点,则退回到上一个节点,否则执行步骤6-4);
6-4)若um的某个候选节点vm满足子图同态约束,且当前查询图节点为变量节点,则将当前查询图变量节点标签设置为数据图候选节点vm的标签,否则执行步骤6-5);
6-5)若当前查询图的节点已经全部匹配结束,则该匹配序列为一个完整匹配序列,通过逆节点映射表vHash-,输出该完整匹配序列中所有查询图变量节点相匹配的数据图节点所对应的标签,即SPARQL查询的一个结果;否则,执行步骤6-6);
6-6)若当前查询图的还有节点尚未完全匹配,则继续匹配序列μ中的第m+1个节点,该节点的候选节点可由序列中节点μpt(um+1)的邻接表或逆邻接表表获得,否则继续执行步骤6-2)。
CN201911233788.XA 2019-12-05 2019-12-05 一种基于树搜索的rdf查询方法 Active CN110990426B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911233788.XA CN110990426B (zh) 2019-12-05 2019-12-05 一种基于树搜索的rdf查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911233788.XA CN110990426B (zh) 2019-12-05 2019-12-05 一种基于树搜索的rdf查询方法

Publications (2)

Publication Number Publication Date
CN110990426A CN110990426A (zh) 2020-04-10
CN110990426B true CN110990426B (zh) 2022-10-14

Family

ID=70090310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911233788.XA Active CN110990426B (zh) 2019-12-05 2019-12-05 一种基于树搜索的rdf查询方法

Country Status (1)

Country Link
CN (1) CN110990426B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114661757B (zh) * 2020-12-22 2024-04-19 华东师范大学 一种基于异构计算机fpga的子图匹配方法和系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462609A (zh) * 2015-01-06 2015-03-25 福州大学 结合星型图编码的rdf数据存储与查询方法
CN104572970A (zh) * 2014-12-31 2015-04-29 浙江大学 一种基于本体库内容的sparql查询语句生成系统
CN105955999A (zh) * 2016-04-20 2016-09-21 华中科技大学 一种大规模RDF图的ThetaJoin查询处理方法
CN107193882A (zh) * 2017-04-27 2017-09-22 东南大学 RDF数据上基于图匹配的why‑not查询回答方法
CN107247738A (zh) * 2017-05-10 2017-10-13 浙江大学 一种基于spark的大规模知识图谱语义查询方法
CN107291807A (zh) * 2017-05-16 2017-10-24 中国科学院计算机网络信息中心 一种基于图遍历的sparql查询优化方法
CN107992608A (zh) * 2017-12-15 2018-05-04 南开大学 一种基于关键字上下文的sparql查询语句自动生成方法
CN108804580A (zh) * 2018-05-24 2018-11-13 湖南大学 一种在联邦型rdf数据库中查询关键字的方法
CN109684325A (zh) * 2018-11-07 2019-04-26 天津大学 一种高效的rdf数据存储查询系统
CN109992593A (zh) * 2019-03-13 2019-07-09 中南大学 一种基于子图匹配的大规模数据并行查询方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8756237B2 (en) * 2012-10-12 2014-06-17 Architecture Technology Corporation Scalable distributed processing of RDF data
US10204174B2 (en) * 2015-12-15 2019-02-12 Oracle International Corporation Efficient method for subgraph pattern matching

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572970A (zh) * 2014-12-31 2015-04-29 浙江大学 一种基于本体库内容的sparql查询语句生成系统
CN104462609A (zh) * 2015-01-06 2015-03-25 福州大学 结合星型图编码的rdf数据存储与查询方法
CN105955999A (zh) * 2016-04-20 2016-09-21 华中科技大学 一种大规模RDF图的ThetaJoin查询处理方法
CN107193882A (zh) * 2017-04-27 2017-09-22 东南大学 RDF数据上基于图匹配的why‑not查询回答方法
CN107247738A (zh) * 2017-05-10 2017-10-13 浙江大学 一种基于spark的大规模知识图谱语义查询方法
CN107291807A (zh) * 2017-05-16 2017-10-24 中国科学院计算机网络信息中心 一种基于图遍历的sparql查询优化方法
CN107992608A (zh) * 2017-12-15 2018-05-04 南开大学 一种基于关键字上下文的sparql查询语句自动生成方法
CN108804580A (zh) * 2018-05-24 2018-11-13 湖南大学 一种在联邦型rdf数据库中查询关键字的方法
CN109684325A (zh) * 2018-11-07 2019-04-26 天津大学 一种高效的rdf数据存储查询系统
CN109992593A (zh) * 2019-03-13 2019-07-09 中南大学 一种基于子图匹配的大规模数据并行查询方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Querying Semantic Web Data with SPARQL;Marcelo Arenas等;《PODS "11: Proceedings of the thirtieth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systemsJune》;20111231;第305–316页 *
Scalable SPARQL querying of large RDF graphs;J Huang等;《Proceedings of the VLDB Endowment》;20110831;第1123–1134页 *
基于RDF图结构切分的高效子图匹配方法;关皓元等;《计算机应用》;20180315(第07期);第74-80+85页 *
基于包含度的子图匹配方法;李瑞远等;《软件学报》;20170331(第06期);第282-302页 *
海量RDF数据存储查询研究;肖佳等;《北京信息科技大学学报(自然科学版)》;20170615(第03期);第66-72页 *

Also Published As

Publication number Publication date
CN110990426A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
CN110837602B (zh) 基于表示学习和多模态卷积神经网络的用户推荐方法
CN109240901B (zh) 性能分析方法、性能分析装置、存储介质和电子设备
CN112015868B (zh) 基于知识图谱补全的问答方法
CN111967972B (zh) 理财产品推荐方法及装置
CN108710663B (zh) 一种基于本体模型的数据匹配方法及系统
CN108038183A (zh) 结构化实体收录方法、装置、服务器和存储介质
CN107193882B (zh) RDF数据上基于图匹配的why-not查询回答方法
CN109614495B (zh) 一种结合知识图谱和文本信息的相关公司挖掘方法
CN109408578B (zh) 一种针对异构环境监测数据融合方法
CN111309979B (zh) 一种基于邻居向量的RDF Top-k查询方法
CN109804371B (zh) 用于语义知识迁移的方法和装置
CN111159371A (zh) 一种面向任务型对话系统的对话策略方法
CN111444220A (zh) 规则驱动和数据驱动相结合的跨平台sql查询优化方法
CN116127084A (zh) 基于知识图谱的微电网调度策略智能检索系统及方法
CN116561264A (zh) 一种基于知识图谱的智能问答系统的构建方法
CN110990426B (zh) 一种基于树搜索的rdf查询方法
CN115328883A (zh) 一种数据仓库建模方法和系统
Wang et al. Exploring semantics of software artifacts to improve requirements traceability recovery: a hybrid approach
CN114492443A (zh) 训练实体识别模型的方法及系统和实体识别方法及系统
CN116304115B (zh) 一种基于知识图谱的物资匹配替换方法和装置
WO2012133941A1 (en) Method for matching elements in schemas of databases using bayesian network
CN112735540A (zh) 一种分子优化方法、系统、终端设备及可读存储介质
US20230126509A1 (en) Database management system and method for graph view selection for a relational-graph database
CN117010373A (zh) 一种电力设备资产管理数据所属类别和组的推荐方法
WO2012091539A1 (en) A semantic similarity matching system and a method thereof

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20200410

Assignee: Guangxi Sujian Technology Co.,Ltd.

Assignor: GUILIN University OF ELECTRONIC TECHNOLOGY

Contract record no.: X2023980046272

Denomination of invention: A Tree Search Based RDF Query Method

Granted publication date: 20221014

License type: Common License

Record date: 20231108

Application publication date: 20200410

Assignee: Guangxi Huanzhi Technology Co.,Ltd.

Assignor: GUILIN University OF ELECTRONIC TECHNOLOGY

Contract record no.: X2023980046248

Denomination of invention: A Tree Search Based RDF Query Method

Granted publication date: 20221014

License type: Common License

Record date: 20231108

EE01 Entry into force of recordation of patent licensing contract