一种基于邻居向量的RDF Top-k查询方法技术

技术编号:24574839 阅读:41 留言:0更新日期:2020-06-21 00:13
本发明专利技术公开了一种基于邻居向量的RDF Top‑k查询方法,该方法在离线阶段,将RDF数据和SPARQL查询分别建模为RDF数据图和SPARQL查询图,并构造邻接表、逆邻接表、标签节点反向列表索引、节点邻居节点标签列表索引、节点

RDF Top-k query method based on neighbor vector

【技术实现步骤摘要】
一种基于邻居向量的RDFTop-k查询方法
本专利技术涉及大规模RDF数据查询
,具体是一种基于邻居向量的RDFTop-k查询方法。
技术介绍
资源描述框架(ResourceDescriptionFramework,简称RDF)是由W3C提出的对万维网上信息进行描述的一个框架,它为Web上的各种应用提供信息描述规范。SPARQL是W3C为实现RDF数据的检索标准所定义的查询语言。许多应用在生成RDF数据时产生错误数据(如手动数据输入引入错误等)从而导致RDF数据变脏。此外,在智能问答场景中,在将用户提出的自然语言问题转化为符合SPARQL查询标准的问题时,通常会引入标签噪声和结构噪声。对带有噪声的SPARQL查询执行精确查找,系统很难找出完全符合SPARQL查询问题的答案,因此,无法有效满足用户的查询需求。如何在有脏数据和带有噪音的SPARQL的情况下,获得用户满意的Top-k查询,是当前研究RDF查询的一个热点。目前,RDF数据上的Top-k查询主要为关键词查询,一种方法为对关键词直接构造查询结果的方式,另一种方法通常是对关键词构造出形式化查询结果进行查询。基于关键词直接构造查询结果的方法,通常需要借助有效的索引,如基于关键词的倒排索引,摘要索引等进行子图定位,在RDF数据中找到包含关键词的最小子图结构。而对关键词构造出形式化查询的方法,通常包括关键词映射、构建查询和对查询进行排序三个步骤。针对目前SPARQL中存在的噪声等问题,本专利技术提供一种基于邻居向量的近似子图匹配方法。在离线阶段,将RDF数据和SPARQL查询分别建模为RDF数据图和SPARQL查询图,并构造邻接表、逆邻接表、标签节点反向列表索引、节点邻居节点标签列表索引、节点h-hop邻居节点集合等、P-In和P-Out。在匹配阶段,采用一种基于卡方统计技术对节点的邻居节点的结构以及邻居节点的标签进行相似度量,并采用树生成的方式进行扩展匹配。最后,得到Top-k个和SPARQL查询图近似的匹配序列,并输出SPARQL查询变量对应的匹配节点标签。
技术实现思路
本专利技术的目的在于提供一种邻居向量的Top-kRDF查询方法,该方法采用一种卡方统计方法对候选节点的背景结构、标签分布和h-hop邻居节点进行相似度量,并采用生成树的方式进行扩展;该方法能够有效输出带有噪声的Top-kRDF查询结果。实现本专利技术目的的技术方案是:一种基于邻居向量的RDFTop-k查询方法,所述RDF的数据集为<S,P,O>三元组的集合,查询问题满足SPARQL标准,包括如下步骤:1)分别将RDF数据和SPARQL查询建模为有向标签RDF数据图G和SPARQL查询图Q,使用邻接表对RDF数据图G和SPARQL查询图Q进行存储,并构建逆邻接表;2)分别为RDF数据图G和SPARQL查询图Q创建标签节点反向列表索引ILG和ILQ,创建节点邻居节点标签列表索引LNLG和LNLQ,创建边标签相关的起始节点和终止节点列表索引P-In和P-Out,为RDF数据图G的每个节点u创建h-hop邻接节点集合;3)为SPARQL查询图Q中的每一个节点构建节点标签匹配对,得到节点标签匹配对列表VPL;4)构建大根堆PH,依次计算节点标签匹配对列表VPL每一个节点标签匹配对<ui,vi>的卡方值构建三元组并依次插入到堆PH中;5)从堆PH中提取卡方值最大的三元组以节点<u,v>为根以生成树的方式进行扩展匹配,得到一个近似匹配序列M(i),并添加到近似匹配序列集合M中;重复该步骤,直到得到满足用户所需的k个近似匹配序列;6)输出M中每一个近似匹配序列中查询图Q中变量节点所匹配的数据图G中节点的标签。所述的步骤1),具体包括如下步骤:1-1)将RDF数据建模为有向标签RDF数据图G=<V,Lv,E,Le>,其中,V表示RDF数据图G中的节点集合,V中的每一个节点对应RDF三元组<S,P,O>中的S和O;Lv表示RDF数据图G中的节点的标签集合;E表示图G中节点之间有向边的集合,对应于RDF三元组<S,P,O>中的S和O之间的P;Le表示图G中有向边标签的集合;使用邻接表的方式存储RDF数据图,同时构建逆邻接表;1-2)将SPARQL查询建模为有向标签SPARQL查询图Q=<V′,L′v,E′,L′e>,其中,V′表示SPARQL查询图中的节点集合,V′中的每一个节点对应SPARQL三元组<S,P,O>中的S和O;L′v表示SPARQL查询图中的节点的标签集合,若SPARQL查询中S和O为变量节点,则采用符号{*}作为变量节点标签;E′表示SPARQL查询图中节点之间有向边的集合,对应于SPARQL三元组<S,P,O>中S和O之间的P;L′e表示SPARQL查询图中有向边标签的集合;使用邻接表方式存储SPARQL查询图,同时构建逆邻接表。所述的步骤2),具体包括如下步骤:2-1)为RDF数据图G构建标签节点反向列表索引ILG,若给定一个标签L(v),RDF数据图G中存在该标签,快速定位到标签为L(v)的节点v,即将标签映射到节点ID;为SPARQL查询图Q构建标签节点反向列表索引ILQ,给定一个标签能快速定位到查询图节点ID;2-2)为RDF数据图G的每一个节点v构建邻居节点标签列表索引其中,NG(v)表示节点v的邻居节点,在构建的过程中,将节点的邻居节点标签按照标签ID从小到大排序;为SPARQL查询图构建节点邻居节点标签列表索引其中,NQ(u)表示节点u的邻居节点,节点的邻居节点标签按照标签ID从小到大排序;2-3)在SPARQL查询中,为有效减少变量节点ui的候选域,分别构建邻接表、逆邻接表、边标签相关的起始节点和终止节点列表索引P-In和P-Out;具体的构造方式为:若变量节点ui存在有向出射边<ui,uj>,其中uj为节点ui的邻接点,若uj为常量节点,则通过构建节点uj的逆邻接表以减少变量节点ui的候选域;若uj为变量节点,则通过在数据图中G构建有向边标签<ui,uj>的起始节点的集合P-In,以减少变量节点ui的候选域;若变量节点ui存在有向入射边<uj,ui>,若uj为常量节点,则通过节点uj的邻接表以减少变量节点ui的候选域;若uj为变量节点,则可以通过在数据图中G构建有向边<ui,uj>标签的终止节点的集合P-Out,以减少变量节点ui的候选域;对于查询图中的变量节点,使用以上四种变量节点索引进一步减少变量节点的候选集;2-4)为RDF数据图G中每一个节点v构造h-hop邻居节点集合,表示为Nh(v)={<v′,i>:d(v,v′)<h,i≤h},其中,v′表示RDF数据图G中与节点v的最短路径长度小于等于h的节点。所述的步骤3)具体是:对于SPARQL查询图Q中的每一个节点ui,若该节点为常量节点,通过RDF数据图中节点标签反向列表索引ILG获得和节点本文档来自技高网
...

【技术保护点】
1.一种基于邻居向量的RDF Top-k查询方法,所述RDF的数据集为<S,P,O>三元组的集合,查询问题满足SPARQL标准,其特征在于,包括如下步骤:/n1)分别将RDF数据和SPARQL查询建模为有向标签RDF数据图G和SPARQL查询图Q,使用邻接表对RDF数据图G和SPARQL查询图Q进行存储,并构建逆邻接表;/n2)分别为RDF数据图G和SPARQL查询图Q创建标签节点反向列表索引IL

【技术特征摘要】
1.一种基于邻居向量的RDFTop-k查询方法,所述RDF的数据集为<S,P,O>三元组的集合,查询问题满足SPARQL标准,其特征在于,包括如下步骤:
1)分别将RDF数据和SPARQL查询建模为有向标签RDF数据图G和SPARQL查询图Q,使用邻接表对RDF数据图G和SPARQL查询图Q进行存储,并构建逆邻接表;
2)分别为RDF数据图G和SPARQL查询图Q创建标签节点反向列表索引ILG和ILQ,创建节点邻居节点标签列表索引LNLG和LNLQ,创建边标签相关的起始节点和终止节点列表索引P-In和P-Out,为RDF数据图G的每个节点u创建h-hop邻接节点集合;
3)为SPARQL查询图Q中的每一个节点构建节点标签匹配对,得到节点标签匹配对列表VPL;
4)构建大根堆PH,依次计算节点标签匹配对列表VPL每一个节点标签匹配对<ui,vi>的卡方值构建三元组并依次插入到堆PH中;
5)从堆PH中提取卡方值最大的三元组以节点<u,v>为根以生成树的方式进行扩展匹配,得到一个近似匹配序列M(i),并添加到近似匹配序列集合M中;重复该步骤,直到得到满足用户所需的k个近似匹配序列;
6)输出M中每一个近似匹配序列中查询图Q中变量节点所匹配的数据图G中节点的标签。


2.根据权利要求1所述的一种基于邻居向量的RDFTop-k查询方法,其特征在于,所述的步骤1),具体包括如下步骤:
1-1)将RDF数据建模为有向标签RDF数据图G=<V,Lv,E,Le>,其中,V表示RDF数据图G中的节点集合,V中的每一个节点对应RDF三元组<S,P,O>中的S和O;Lv表示RDF数据图G中的节点的标签集合;E表示图G中节点之间有向边的集合,对应于RDF三元组<S,P,O>中的S和O之间的P;Le表示图G中有向边标签的集合;使用邻接表的方式存储RDF数据图,同时构建逆邻接表;
1-2)将SPARQL查询建模为有向标签SPARQL查询图Q=<V′,L′v,E′,L′e>,其中,V′表示SPARQL查询图中的节点集合,V′中的每一个节点对应SPARQL三元组<S,P,O>中的S和O;L′v表示SPARQL查询图中的节点的标签集合,若SPARQL查询中S和O为变量节点,则采用符号{*}作为变量节点标签;E′表示SPARQL查询图中节点之间有向边的集合,对应于SPARQL三元组<S,P,O>中S和O之间的P;L′e表示SPARQL查询图中有向边标签的集合;使用邻接表方式存储SPARQL查询图,同时构建逆邻接表。


3.根据权利要求1所述的一种基于邻居向量的RDFTop-k查询方法,其特征在于,所述的步骤2),具体包括如下步骤:
2-1)为RDF数据图G构建标签节点反向列表索引ILG,若给定一个标签L(v),RDF数据图G中存在该标签,快速定位到标签为L(v)的节点v,即将标签映射到节点ID;为SPARQL查询图Q构建标签节点反向列表索引ILQ,给定一个标签能快速定位到查询图节点ID;
2-2)为RDF数据图G的每一个节点v构建邻居节点标签列表索引其中,NG(v)表示节点v的邻居节点,在构建的过程中,将节点的邻居节点标签按照标签ID从小到大排序;为SPARQL查询图构建节点邻居节点标签列表索引其中,NQ(u)表示节点u的邻居节点,节点的邻居节点标签按照标签ID从小到大排序;
2-3)在SPARQL查询中,为有效减少变量节点ui的候选域,分别构建邻接表、逆邻接表、边标签相关的起始节点和终止节点列表索引P-In和P-Out;具体的构造方式为:若变量节点ui存在有向出射边<ui,uj>,其中uj为节点ui的邻接点,若uj为常量节点,则通过构建节点uj的逆邻接表以减少变量节点ui的候选域;若uj为变量节点,则通过在数据图中G构建有向边标签<ui,uj>的起始节点的集合P-In,以减少变量节点ui的候选域;若变量节点ui存在有向入射边<uj,ui>,若uj为常量节点,则通过节点uj的邻接表以减少变量节点ui的候选域;若uj为变量节点,则可以通过在数据图中G构建有向边<ui,uj>标签的终止节点的集合P-Out,以减少变量节点ui的候选域;对于查询图中的变量节点,使用以上四种变量节点索引进一步减少变量节点的候选集;
2-4)为RDF数据图G中每一个节点v构造h-hop邻居节点集合,表示为Nh(v)={<v′,i>:d(v,v′)<h,i≤h},其中,v′表示RDF数据图G中与节点v的最短路径长度小于等于h的节点。


4.根据权利要求1所述的一种基于邻居向量的RDFTop-k查询方法,其特征在于,所述的步骤3)具体是:对于SPARQL查询图Q中的每一个节点ui,若该节点为常量节点,通过RDF数据图中节点标签反向列表索引ILG获得和节点ui标签相同的节点vi,构建节点标签匹配对(ui,vi)并插入到节点标签匹配对列表VPL中;若节点ui为变量节点,其标签未知,候选节点为RDF数据图中的所有节点,通过步骤2)所构建的邻接表、逆邻接表、P-In和P-Out索引以获得节点ui的最小候选域CR(ui),并将节点标签匹配节点对(ui,v′i)插入到节点对列表VPL中,其中v′i∈CR(ui)。


5.根据权利要求1所述的一种基于邻居向量的RDFTop-k查...

【专利技术属性】
技术研发人员:董荣胜刘江江
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西;45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1