一种基于关系数据库的资源描述框架查询方法和系统的制作方法

文档序号:6370316阅读:208来源:国知局
专利名称:一种基于关系数据库的资源描述框架查询方法和系统的制作方法
技术领域
本发明涉及语义网数据检索技术,具体涉及ー种基于关系数据库的资源描述框架(RDF)查询方法和系统。
背景技术
语义网(Semantic Web)成为近几年来互联网发展的ー个热点,代表智能网络未来的语义网是ー个以知识为中心的模型。除了人类可读的文档和XML消息格式之外,它还增加了机器可以理解和处理的数据。资源描述框架(ResourceDescription Framework, RDF)是描述 Web 资源的标准数据模型。由于Web数据的半结构化特性,RDF查询语言应该支持对半结构化数据的查询。万维网联盟(W3C)提出的 SRARQL(SPARQL Protocol and RDF Query Language, SPARQL 协定与RDF查询语言)语言就是这样一种针对RDF图的半结构化查询语言。SPARQL对于语义网就像SQL对于关系数据库ー样重要。SPARQL跟其他查询语言的不同之处在于它能够融合不同的异构数据源来进行查询。它基于RDF图模式进行查询,允许应用程序对分布式RDF数据库进行复杂的查询,从RDF图中查询信息,并根据要求返回不同形式的结果,并得到了互相竞争的多种框架的支持。目前SPARQL还仅仅只是ー个协议标准,没有开发出成熟的数据库系统对其进行完全的支持。考虑到SPARQL是ー种沿袭传统数据库查询模式的语言,采用“select-from-where”查询模式,便于用户掌握和理解;但是它仅支持遍历查询RDF文件,其查询效率是相当低效的。而现有传统数据库在查询优化等技术方面已经相当成熟,查询数据的效率相对高效,但是其查询语言SQL不具有语义性。因此,需要在用户和关系数据库之间建立ー个透明的查询引擎,接受用户提交的SPARQL查询语句并将其转换为关系数据库可以处理的SQL语句,SQL语句直接对关系数据库进行操作,最后该引擎将SQL查询结果按照SPARQL查询语句转换为用户所需的RDF查询结果;这样RDF查询语言不仅具有本身语义性的优点,而且同时具有对海量数据查询的高效性。现有技术采用三元组(垂直表)的形式对RDF数据进行存储,这种存储方式具体实现是将RDF三元组的主语、谓语、宾语分离出来,分别存在数据库的statements表的subject、predicate、object 列中。将SPARQL转化为SQL语句后,即可使用SQL语言对存储有三元组数据的数据库进行查询。SPARQL查询的核心是RDF图匹配方式,该方式用SPARQL查询中描述的RDF图模式来对数据库中原始RDF图数据进行完全匹配。完全匹配要求所有的RDF图分支均匹配才输出結果。SPARQL可以由很复杂的RDF图模式表示,但其中最基本的是基本RDF图模式,复杂的SPARQL查询就是在基本图模式的基础上进行一些交并操作来进行结果的选择。汪锦岭等人提出ー种采用“与或匹配树”的主顶点方式来进行高效RDF图匹配。该方法的主要思想是根据元语句中节点的深度关系来进行多次匹配。其先由与或树判断各节点的深度,避免环结构。然后将RDF图模式根基节点加入主顶点集中,然后匹配以所有主顶点集中的顶点为主语的三元组,若有匹配,则将该三元组的宾语加入主顶点集中,所有匹配尝试完以后删除原先的主顶点。如此依次循环。主要体现的是一个路径的思想,对原RDF图按路径逐级进行匹配。,但是该方法主要应用于模糊匹配或者本体推理方面会比较有效,对于SPARQL这种完全匹配方法存在一定的局限性。由于该方法在毎次匹配以后需要跟主程序进行交互,并修改数据结构中的内容以生成下一轮匹配条件,过程复杂且时间开销较大,效率相对低下。 同时,Artem Chebotko等人提出的“模式树”方法针对可选图模式(optionalpattern)创建了模式树,通过父子节点的关系来表示可选图模式依附的主模式。若加入并图模式,由于其子图模式不存在主从之分,无法直接在两个模式间建立这种父子关系,并且跟可选图模式无法做区分。刘静也提出过“模式树”的方法,基本上与Artem Chebotko的方法一致,但是其方法中关于平行可选图模式的理解有待讨论。由此,亟需ー种简单高效的RDF查询方法和系统使得在保持查询语言语义性的前提下提闻查询效率。

发明内容
本发明的目的在于提供一套完整可行的机制来支持SPARQL查询转换成SQL查询,并将SQL语句返回的结果进行语义包装的方法和系统。本发明公开了ー种基于关系数据库的资源描述框架(RDF)查询方法,用于利用SPARQL语句对以三元组形式存储于关系数据库中的RDF数据进行查询,所述方法包括步骤100、根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串;步骤200、根据模式串生成模式树,其中,模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号;非叶子节点表示模式间的关系,其值为optional、union和join ;其中join表示不带关键词的组图模式的ー个分支;步骤300、根据各基本图模式对应的常量表、变量表和空节点表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段;步骤400、利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询;步骤500、根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询結果。本发明还公开了ー种基于关系数据库的资源描述框架(RDF)查询系统,用于利用SPARQL语句对以三元组形式存储于关系数据库中的RDF数据进行查询,所述系统包括查询语句处理装置,用于根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串;模式树生成装置,用于根据模式串生成模式树,其中,模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号;非叶子节点表示模式间的关系,其值为optional、union和join ;其中join表示不带关键词的组图模式的一个分支;SQL转换装置,根据各基本图模式对应的常量表、变量表和空节点表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段;
数据库查询装置,利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询;语义包装装置,根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询結果。本发明所述的基于关系数据的RDF查询方法和系统支持SPARQL查询转换成SQL查询,并将SQL语句返回的结果进行语义包装,即保留了 SPARQL查询的语义性,又充分利用了传统数据库的高效优势。


图I是本发明实施例的资源描述框架查询方法的流程图;图2是本发明实施例中进行基本图模式信息提取的具体流程图;图3是本发明实施例中SPARQL查询的基本RDF图模式的示例图;图4是图3中所述RDF图模式分解为三元组集合的示意图;图5为本发明实施例中元素结构表的示意图;图6为本发明实施例中对示例三元组集合生成的变量表的示意图;图7为本发明实施例中生成模式树的过程示意图;图8为本发明实施例中生成模式树所用的optional、union和join模板的示意图;图9为本发明实施例中所生成得到的模式树的示意图;图10为本发明实施例的嵌套树的optional节点属性值添加过程的示意图;图11是本发明实施例基于关系数据库的资源描述框架(RDF)查询系统的系统框图。
具体实施例方式下面结合附图并通过具体实施方式
来进ー步说明本发明的技术方案。资源描述框架(RDF)使用Web标识符来标识事物,并通过属性和属性值来描述资源。其中,资源是可拥有URI的任何事物,比如http://www. w3school. com, cn/rdf :属性是拥有名称的资源,比如"author"或"hom印age";而属性值是某个属性的值,比如"David"或〃http://www. w3school. com. cn〃(请注意ー个属性值可以是另外ー个资源)。资源、属性和属性值三者构成了 RFD表达式的三元组(triples)的基本结构。在三元组中,资源本身是主语(subject),属性名称是谓语(predicate),属性值是宾语(object)。一组这样的三元组被称为RDF图,这可以用具有一个节点和有向边的图来表示,在图中每个三元组对应于节点-边-节点的连接,对应于边的谓语表示ー个关系,边的方向很重要,它总是指向宾语。且这个的起始节点和终止节点分别对应三元组的主语和宾语。图模式是描述RDF图的一种有效方法,用RDF词汇和查询变量描述所要查询RDF图的ー个子图,它在结构上与RDF图类似,只不过构成它的基本元素除了可以是RDF词汇也
可以是变量。 SPARQL查询语言采用RDF图模式来描述ー个RDF查询,一般由四个部分组成声明部分(prefix/base)、结果集部分(select/construct/describe/ask)、数据源部分(from)和查询模式部分(where)。声明部分主要进行前缀的声明,以简短的词汇来表示URI信息,使得查询模式的部分书写较为简単;结果集部分给出所需的结果变量以及返回的结果形式,跟SQL中的选择投影一致;数据源部分指定RDF图进行查询,多数情况下均省略了 ;查询模式部分提供多种复杂的查询图模式来组合查询,包括基本图模式、组图模式、可选图模式(optional)、并图模式(union)、命名图模式(graph)以及值约束(filter),是SPARQL查询的核心部分。其中,对各类图模式具体说明如下(I)基本图模式是由ー个或多个三元组(triples)组成,描述ー个基本的RDF图,用符号P来表不。(2)组图模式{PI} {P2}简单地将几个基本图模式并列在一起,组图模式的任何一个解都要满足组成组图模式的所有子图模式。(3)可选图模式P1 optional {P2}其表示在图模式Pl的基础上,若有满足P2的RDF图結果,则Pl的模式解被P2横向地扩充;若没有满足条件的RDF图結果,也不会对Pl的模式解产生影响。其中Pl称为主模式,P2称为从模式。(4)并图模式{Pl}union{P2}。匹配的图模式只要满足Pl或P2即可,若两者都满足,则生成两个相同的結果。(5)命名图模式为查询模式指定RDF图,或查找符合搜索条件的匹配结果所在RDF 图。(6)值约束对变量进行限制,对查询结果进一歩地筛选。一般合并到基本图模式里进行。模式解(pattern solution)是当图模式匹配到RDF图的某个子图时,查询变量与之所对应RDF词汇之间的绑定关系就是图模式匹配RDF图模式的解。用符号S表示。其中命名图模式相当于在限制的RDF图上做查询,跟查询模式的语义没有关系,其操作原理跟一般的图模式并无ニ义,因此本发明仅针对不带命名图模式的处理进行。上述第(2)、(3)、(4)三种图模式是在基本图模式的基础之上建立的,并且可以互相嵌套。其中可选图模式存在的平行关系或嵌套关系。平行可选图模式的基本形式是Ploptional {P2} optional {P3}。根据 SPARQL 规范,此关系等价于{PI optional P2} optionalP3。该过程匹配方式为P2先扩充Pl的模式解SI,得到中间解S1>2。再用P3来扩充S1>2得到最終解S,匹配前提是P1。刘静的“模式树”方法关于平行可选图模式扩充模式解的原则如下P3只是扩充在P2中没有的变量,对于P2己有的变量,除非这个变量的没有绑定值(值为空),否则不进行扩充。虽然从人类的说话习惯来看似乎合情合理,但是规范中将Ploptional {P2}封装为ー个整体作为P3的主模式,依据最基本的可选图模式的求解情况可知,从模式是不能改变主模式中的任何解的,因此P3扩充时只是建立在Pl的基础上,而跟P2是没有关系的。相应地,嵌套可选图模式的基本形式是Pl optional {P2 optional {P3}}。由于optional关键词是左相关的,因此此处不能把P2 optional {P3}当成整体,而是先Ploptional {P2},得到中间解S1,2。然后在图模式Pl,P2的基础之上,若有满足P3的RDF图模式,则S1>2被P3横向地扩充。
由以上分析可知,平行可选图模式与嵌套可选图模式的匹配顺序是一致的,所不同的是在平行图模式中的P3是建立在Pl的基础之上,不管P2是否有匹配,P3都会根据其自身匹配情况对S1>2进行扩充。P3的參照模式是Pl,匹配条件是P3与Pl中的共同变量要有相同的值。而嵌套可选图模式的P3是建立在Pl和P2的基础上,必须在Pl和P2都有匹配的基础之上,对Sli2进行扩充。由于P2是在Pl的基础之上进行匹配的,也就是只要记录在P2扩充的属性列上不为空,则Pl —定存在匹配。所以,实现的时候P3的參照模式是P2,而匹配条件是P3与P1、P2中的共同变量要有相同的值。可选图模式的两种情況平行可选图模式或者嵌套可选图模式采用不同的方式进行左外连接操作,但两者的共性是同一 optional节点的非最左节点都要依赖于最左节点,并且匹配顺序是从左到右。这是由optional的左相关性決定的。本发明实施例所提出的基本原理在于将用户提交的SPARQL查询语句分块进行处理,对where语句中包含的所有基本图模式进行主语、谓语、宾语的分离,提取出含有变量的成分存入“变量表”,记录其出现的三元组编号以及角色(主语、谓语、宾语)形成链表,通过这个链表来表示基本图模式中各个三元组之间的关系,将其转化成SQL语句段;将SPARQL的查询模式部分用模式树的方法表示出来,并依据模式树所代表的基本图模式之间的关系来完成SQL语句段之间的连接联合操作,此过程中同时完成的还有SQL语句段的补全,最終形成完整的SQL查询,提交给数据库;将从关系数据库中获得的查询结果进行语义包装并返回给用户。图I是本发明实施例的资源描述框架查询方法的流程图。如图I所示,所述方法包括步骤100、根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串。要对SPARQL查询转换到SQL,就必须进行SPARQL查询语义的解读,根据其语法意义来选用相对应的SQL操作。SPARQL提供了四种查询形式,分别为 select、ask、construct 和 describe。Select用于返回查询的变量及其绑定;ask的查询过程与select —致,但仅返回查询是否存在模式解的布尔值construct用于根据限定带有变量的RDF图模式模板返回带有该变量查询结果的RDF图describe用于返回与查询资源相关的RDF数据集。其中,select子句跟SQL中的select子句一致,直接对应于投影操作即可,只需将变量名转换成列名。另外几种结果集方式(construct、describe、ask)都是建立在select查询之上的,只需要在select查询结果基础上进行相应的结果集处理获得需要形式的返回结果即可。SPARQL查询模式的核心是三元组语句,因此将SPARQL中的查询模式分解为多个语句模式的集合,将语句模式作为匹配的基本単元。进ー步将SPARQL查询模式转换到SQL,实际上就是将SPARQL查询模块中的三元组语句在数据库中一一进行匹配,匹配条件为语句中所提供的已知数据对象的值,未知的变量以及带有部分变量含义的空结点起到桥梁的作用来联系各三元组,使其成为有机整体,而且变量还作为查询结果的输出源。在不引起混淆的情况下,不妨将查询模式中三元组的数据元素(主语、谓语、宾语)统称为结点,原SPARQL查询模式到RDF图的匹配就由树或网结构的匹配到被分解成多个节点到关系表中三元组之间的匹配了。数据单元划分得越小,匹配难度系数就越低,就能更准确快捷地找到匹配项。 图2是本发明一个实施例中进行基本图模式信息提取的具体流程图。如图2所示,在该实施例中,步骤100进ー步包括步骤101、提取申明部分并利用申明部分内容替换SPARQL语句中的前缀。关键词prefix/base、select/ask/describe/constructs from、where {}(可省略where)等将SPARQL查询语句段分离成四个部分,即申明部分、结果集部分、数据源部分、查询模式部分。根据申明部分prefix/bases所记录的前缀,还原查询模式中的前缀。如用prefixfoaf:<http://xmlns. com/foaf/0. l/> JdS 原 foaf:name 的结果为 <http://xmlns. com/foaf/0. I/name>步骤102、从SPARQL查询语句段提取结果集部分的语句,根据结果集部分语句建立结果变量表及结果集约束条件。其中,步骤102可细分为如下步骤步骤1021、从SPARQL查询语句段提取结果集部分语句。步骤1022、判断查询形式是否select,如果是则转向步骤1023,如果否则转向步骤 1024。步骤1023、直接根据结果集部分的变量建立结果变量表,结束步骤102。步骤1024、判断查询形式是ask/construct/describe中的哪一种,如果为construct则转向步骤1025,如果为describe则转向步骤1026,如果为ask则转向步骤1027。步骤1025、根据结果集部分语句限定构建construct模板,即采用RDF文件格式构建成RDF的基本单元模板,作为结果集返回约束条件,转向步骤1023。步骤1026、根据结果集部分语句限定将具体资源值记录到describe表作为结果集返回约束条件,转向步骤1023.步骤1027、直接建立仅包含的空结果变量表,结束步骤102。当然,本领域技术人员也能够了解可以采用一次判断后根据判断结果是select/ask/construct/describe中的哪ー种分别采取上述不同处理方式的流程来执行步骤102。步骤103、将SPARQL查询语句段中的查询模式部分根据关键词union、optional以及成对的“ H”划分为多个基本模式。将基本图模式编号,替换原有具体的图模式(RDF图形式),形成最初的模式串。如“ Pl optional {{P2} optional {P3}} union {P4} {P5} ”。
步骤104、对步骤103中的划分得到的基本图模式进行处理以得到符合“主谓宾”
三元组模板的三元组集合。提取数据对象需要对基本图模式进行三元组的提取和分离。SPARQL查询语言允许很多的省略和嵌套,根据相关语义将隐含的完整三元组恢复出来。如[dc: title “tomorrow” ] dc: creator “John”.等价于aO dc:title “tomorrow,,·aO dc:creator “John,,·
不仅要找出省略的空结点a0,还找到联系两个三元组的纽带——共同主语aO.根据SPARQL语言规范,这里需要找出的还包括的省略成分有共享主语、共享主谓、空结点的填充、容器collection的解释等。提取出来的三元组符合采用标准turtle语法的“主谓宾”三元组模板,有利于后面步骤的进行。步骤105、对姆ー个规范三元组集合构建常量表mach_i、查询变量表verset_i、空节点表blank」。SPARQL查询语句的基本模式中每个三元组会对SQL进行一次独立的完全匹配,实际操作过程是捜索在对应属性列上与给定定值相等的记录,并按要求返回该记录的部分或全部属性值。因此,SPARQL查询语句的每个三元组可以近似看成为已知值和变量的集合。称其为“近似”是因为空结点也含有不完全变量的作用,具体见实施方案中的描述。其中已知值成为单次匹配的条件,变量以多次匹配的桥梁作为匹配条件,同时也是返回结果的来源。下述过程描述了将RDF基本图模式转换成节点信息的过程。该方法先将SPARQL查询语句分解成三元组。如图3所示SPARQL查询基本图模式,其中阴影节点表示已知量,非阴影节点表示变量,标向箭头表示谓语,谓语的箭头方向由主语指向宾语。从谓语的角度来看,很明显的看出该三元组可以拆分成7个三元组如图4中所示。其中,各三元组中至少有ー个节点与其他三元组中的某个节点相同,这样才能体现ー个RDF图有机整体。在这些相同节点中,由于已知量是定值,在匹配中生成各自的匹配条件,互相之间不需要存在联系,使得查询过程简洁。而变量由于没有指定值,从单个三元组来说,属于查询的返回结果,而从RDF图查询整体来说,却又成为了查询匹配的约束以及联系所在,表示采用相同标识的节点具有同一值,需要建立相应的等价关系。因此,根据这些变量节点的信息,将相关三元组匹配串联起来,在图4中用虚线部分表示。根据图4所示的三元组集合信息进ー步可以生成表示该信息的常量表、变量表和空节点表。上述三种表在本发明中由相同的数据结构实现,称为元素结构表。图5是元素结构表的示意图。如图5所示元素结构表包括数组部分和链表部分,其中数组部分的数据元素包含value、count和链表指针三个数据项。链表部分包括表示元素位置的自由节点。在元素结构表中,value —项记录各类型元素的有效值。即在常量表中记录的是完整的常量值,在变量表中记录变量名称,空节点表中表示空节点标识。Countー项表示该元素所出现过的次数,同时该数字也表示了其后所带的链表的长度。Locationー项存储的是元素出现的位置。由于RDF图模式的多个三元组之间相互拥有共同的元素,以将三元组联系成一个图的形式。于是中间节点(度大于2的节点)就成为了联系各三元组的纽带。
生成元素结构表的主要步骤如下步骤1051、根据正则表达式,依次提取出RDF图模式中的主语、谓语和宾语。同时在处理过程中能够判断出当前元素是常量、变量还是空节点。根据类型选择即将存入的元素结构表。步骤1052、在相应元素结构表中搜寻■数组部分存储的主记录,即value部分。如果捜索到与当前元素有效值相同的数据项,则将该元素的当前位置(所在的三元组编号以及所充当的主谓宾成分)存入对应数据项所带链表的表头位置,同时将count自增I ;如果没有找到相同的数据项,则将该元素有效值存入数组中,count部分置为I,将元素的当前位置记录在后置链表中。常量“a”的有效值就为a,变量“?b”的有效值为b,空节点“_:c”的有效值为C。
图6示出了根据上述步骤对图4所示三元组集合生成的变量表。此处在不引起误解的情况下,借用谓语的标识来表示各个三元组,S表示主语,O表示宾语。实际过程中,由于谓语通常是ー个URI,不便于用来做标识,可以灵活采用其他方式来表示。很明显的可以看出,用与或匹配树来逐层进行处理的方式,上述RDF图的匹配需要经过“ABE”、“ACFE”、“ACG”、“AD”四条路径来进行逐层匹配,而经过我们的处理过程以后仅仅只需生成三条SQL中的where子句(D只出现在ー个三元组中,不构成关键变量节点)“PL 0=P4. S,,“Ρ2· 0=P5. S=P6. S”“Ρ5· 0=P7. S”而且整个处理过程清晰易懂,不需要进行递归、跳转等处理对于空间点,实际上空节点不带有任何具体的信息,可以指代与其本身具有不同名字的空节点,而空节点名字的作用实际上是对不同的空节点进行区分,如同一个RDF文件里“」a”与“」b”表示指代的是不同的顶点,而在不同地方若均出现了“_:a”,则说明“_:a”所表示的成分指代的是同一个顶点。而在查询中,“_:c”只用来匹配RDF图中为空节点的顶点,并不要求该空节点的名字也为“C”。从某种程度上来说,空节点实际上是具有某些限制的变量,即要求该变量是空节点的形式,但不用来作为结果的返回源。建立空结点表bnode_i的具体方法与varset_i表的建立一致,针对的是“形式的空结点。主要用来约束用同一个空结点表示的不同位置的数据对象,要求值一致。三元组其他非变量非空节点的元素即用来提供匹配的基本条件,将这些元素的出现的基本模式编号、所在三元组中位置记录下来,最終形成常量表match_i。步骤106、判断基本图模式中是否存在filter关键字,如果存在转步骤107,否则,转步骤108。步骤107、根据filter关键词,提取出滤值条件,并记录模式编号。步骤108、判断基本图模式中是否存在结果集修饰,如果存在转步骤107否则,结束步骤100。步骤109、查询模式部分由结果集修饰符limit等与ー个或多个基本模式依靠关键词的搭配组合而成,将结果集修饰符分离,并记录进modifier表基本图模式信息处理完毕后,会得到结果变量表var_set、describe表/construct模板、结果集修饰符单元modifier表、模式串、滤值表filter、各基本图模式的变量表varset_i和空结点表bnode_i表、常量表match_i。除了模式串是用来生成模式树所需,其余表格都被用在查询转换为SQL的时候。步骤200、根据模式串生成模式树。模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号。非叶子节点表示模式间的关系,其值为optional、union和join。其中join表示不带关键词的组图模式的ー个分支。optional节点用来描述可选图模式,其第一个节点表示主模式,其余子节点表示从模式,模式按从左到右的顺序对应于SQL中的左外连接(left outer join)操作。其中某个optional的子节点也为optional,则说明存在嵌套可选图模式;若某个optional关键词有三个以上的子节点,则说明存在平行可选图模式。Union节点用来描述并图模式,且互相为并列关系,对应于SQL中的union操作。Join节点表示组图模式,其子节点之间也是并列关系,对应于SQL中的join操作 。在SPARQL的查询模式被明确划分成多个基本图模式以后,整个where子句片段所含有的信息量就是各模式间的关系,形式类似于“PI optional {{P2} optional {P3}}union {P4}. {P5}”,称为模式串。由于optional关键词的特殊性,需要根据大括号“ ”来区分平行或嵌套关系。而基本图模式可能本身就带有大括号,如一个简单的基本图模式查询Pl与基本图模式{P1}的查询结果是一致的。为了使模式串仅简洁地表示模式的关系,在生成模式树时不需要做过多的判断操作,需要对基本图模式的括号进行清理。具体操作原则是若ー个基本图模式如Pl直接被一対“ H ”包围,则自动消去这对大括号。如此反复多次对每个基本图模式进行检查,直到不存在一対“ H ”里只有ー个基本图模式的情況。如“ Pl optional {{P2} optional {P3}} union {P4} {P5} ” 清理后就变成了“ Pl optional {P2optional P3} union P4 P5,,。清理过后的新模式串的每ー个字符都是创建模式树所不可缺少的部分,包括大括号“ H ”。依照optional、union、以及join模式样板创建模式树。步骤200具体包括如下步骤步骤201、创建初始空节点N。此空节点并非SPARQL查询中的空结点,而仅仅表示尚未赋值而已。设置当前模式指针current,指示当前处理的有效模式,简记为current节点。此时current节点为N。步骤202、读取模式串;步骤203、判断读取的模式串元素是模式Px、optional/union关键词、“ {”符号和“} ”符号中的哪ー种,如果是模式Px,则转步骤204 ;如果是optionalAmion关键词,贝Ij转步骤205 ;如果是符号,则转步骤206 ;如果是符号,则转步骤207 ;步骤204、判断current节点类型;如果current节点为空节点,则将该空节点赋值为Px,并判断current节点上是否存在父节点,如果有,则将current指针指向当前current节点的父节点current =current, parent,若current节点没有父节点,则保持原来的current节点不做处理。如果current节点为jo in节点,则生成一个新节点Px作为jo in节点的最右孩子。current节兒小变。如果current节点为其他类型,则提取join模板,将current节点作为join节点的左孩子,Px作为join节点的右孩子,current指针指向join节点。
处理完毕转步骤208。步骤205、判断current节点类型;如果current节点为空节点将该空节点赋值为一致的关键词,并生成一个新的空节点作为该关键词节点的右孩子,current指向该最右孩子。如果current节点值与读取的关键词一致,则创建一个空节点,添加为current节点的最右孩子,并将该空节点设置为current节点;如果current节点为其他类型,则提取ー个与关键词相对应的模板,将current节点作为模板中根节点(与该关键词一致)的左孩子,current指向模板根节点的空节点右孩 子。处理完毕转步骤208。步骤206、生成一个空节点,作为current节点的左孩子,current指向该左孩子。由于简化后的模式串中,“ {”符号只可能出现在optional或union关键词后表示模式中存在嵌套模式,因此current —定指向某个空节点,再生成一个空节点,作为current节点的左孩子,current指向该左孩子。步骤207、“} ”符号与“ {”相对应,表示从当前嵌套模式中跳出,current指向当前current 节兒的父节点current = current, parent 步骤208、判断是否以及读取到模式串尾部,如果否则转步骤202,如果是则模式串读取完毕,模式树生成完毕。图8示出了上述步骤中使用的optional、union和join模板样式。图7 不出了由前例中模式串“ Pl optional {P2 optional P3} union P4.P5”生成模式树的过程。图9 不出了图 7 最终由“ Pl optional {P2 optional P3} union P4.P5” 生成的模式树。构建模式树以后,根据模式树所表达出来的关系就可以生成查询条件了。整个过程大体上是由叶结点上溯至根节点的过程,生成完整SQL查询语言。本例中的模式树表示Pl和P2的模式解进行联合union操作,共同作为P3的主模式,根据P3是否有匹配RDF图进行模式解的添加,采用左外连接left join操作;所得结果与P4做连接操作,说明最終匹配既要满足前面的整体解,又要满足P4。步骤300、根据结果变量表var_set、结果集修饰符单元modifier表、模式串、滤值表filter、各基本图模式的变量表varset_i和空结点表bnode_i表、常量表match_i分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段。上述步骤100中生成的各独立表多对应的SQL片段关系如下表所示。
权利要求
1.一种基于关系数据库的资源描述框架(RDF)查询方法,用于利用SPARQL语句对以三元组形式存储于关系数据库中的RDF数据进行查询,所述方法包括 步骤100、根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串; 步骤200、根据模式串生成模式树,其中,模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号;非叶子节点表示模式间的关系,其值为optional、union和join ;其中join表示不带关键词的组图模式的一个分支;步骤300、根据各基本图模式对应的常量表、变量表和空节点表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段; 步骤400、利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询; 步骤500、根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询結果。
2.如权利要求I所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在干,所述步骤100包括 步骤101、提取申明部分并利用申明部分内容替换SPARQL语句中的前缀; 步骤102、从SPARQL查询语句段提取结果集部分的语句,根据结果集部分语句建立结果变量表及结果集约束条件; 步骤103、将SPARQL查询语句段中的查询模式部分根据关键词unioruoptional以及成对的“ H”划分为多个基本图模式;将基本图模式编号,替换原有具体图模式,形成模式串;步骤104、对于划分得到的基本图模式进行预处理以获得符合“主谓宾”三元组模板的三元组集合; 步骤105、对每ー个三元组集合分辨构建常量表、查询变量表、空节点表,其中,所述常量表用于存储所述三元组集合中常量的常量值、出现次数和位置,所述变量表用于所述三元组集合中变量的变量名称、出现次数和位置,所述空节点表用于存储所述三元组集合中空节点的空节点标识、出现次数和位置。
3.如权利要求2所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在干,所述步骤105包括 根据正则表达式,依次提取出所述三元组集合中各三元组的主语、谓语和宾语;同时在处理过程中判断当前元素是常量、变量还是空节点,井根据类型选择即将存入的元素结构表; 在对应的元素结构表中搜寻数组部分存储的元素有效值,如果搜索到与当前元素有效值相同的数据项,则将该元素的当前位置存入对应数据项所带链表的表头位置,同时将出现次数自增I ;如果没有找到相同的数据项,则将该元素有效值存入数组中,出现次数部分置为1,将元素的当前位置记录在后置链表中。
4.如权利要求I所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在干,所述步骤200包括 步骤201、创建初始模式树空白节点,其表示尚未赋值的模式树节点,设置当前模式指针,用于指示当前处理的有效模式树节点current节点; 步骤202、读取模式串; 步骤203、判断读取的模式串元素是模式PX、optional/union关键词、“ {”符号和“} ”符号中的哪ー种,如果是基本图模式PX,则转步骤204 ;如果是optionalAinion关键词,贝U转步骤205 ;如果是符号,则转步骤206 ;如果是符号,则转步骤207 ; 步骤204、判断current节点类型; 如果current节点为空节点,则将该空节点赋值为所述基本图模式PX,并判断current节点上是否存在父节点,如果有,则将当前模式指针指向current节点的父节点若current节点没有父节点,则保持原来的current节点不做处理; 如果current节点为join节点,则生成一个新节点作为join节点的最右孩子;current节兒小变; 如果current节点为其他类型的节点,则提取join模板,将current节点作为join节点的左孩子,所述基本图模式PX作为join节点的右孩子,当前模式指针指向join节点;处理完毕转步骤208 ; 步骤205、判断current节点类型; 如果current节点为空节点将该空节点赋值为一致的关键词,并生成ー个新的空节点作为该关键词节点的右孩子,当前模式指针指向该最右孩子; 如果current节点值与读取的关键词一致,则创建一个空节点,添加为current节点的最右孩子,并将该空节点设置为current节点; 如果current节点为其他类型,则提取ー个与关键词相对应的模板,将current节点作为模板中根节点的左孩子,当前模式指针指向模板根节点的空节点右孩子; 处理完毕转步骤208 ; 步骤206、生成一个空节点,作为current节点的左孩子,current指向该左孩子; 步骤207、当前模式指针指向当前current节点的父节点; 步骤208、判断是否以及读取到模式串尾部,如果否则转步骤202,如果是则模式串读取完毕,模式树生成完毕。
5.如权利要求I所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在干,所述步骤300中生成各基本图模式的SQL子查询片段包括 步骤301、根据结果变量表,建立select子句,选取后续生成的from集中跟所述结果变量表中的变量名一致的属性列; 步骤302、根据SPARQL中提供的已知量建立每个基本图模式的SQL查询匹配;由于每个三元组是对数据库中三元组记录的一次匹配,因此需要对每个三元组与数据库的匹配建立别名,则根据已知量构建的SQL约束语句; 步骤303、根据该基本图模式的变量表,捜索出现次数大于I的単元,对以该単元为头结点的链表,建立等价关系; 步骤304、根据该基本模式的空白节点表,捜索出现次数大于I的単元,对以该单元为头结点的链表,建立等价关系; 步骤305、对每个基本图模式,执行一次完整的Select — Where查询,其中select子句是根据每个基本图模式的变量表与全局的结果变量表来进行选取,选取在结果变量表和变量表中均出现过的变量,在变量表找到这些变量出现的任意ー个位置,构造select子句,并以变量名对其进行重命名。
6.如权利要求I所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在干,所述步骤300中根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段包括 步骤310、提取当前最近叶结点处的union或join关键词节点,提取其下所属的子树; 步骤320、根据各基本图模式对应的SQL子查询片段将仅包含optional关键词节点或不包括任何关键词节点的子树转换为与该子树对应的子树SQL查询片段; 步骤330、将子树的SQL片段联合或连接起来所生成的SQL查询,新生成的SQL查询当成基本图模式的SQL子查询片段替代整棵以union或join为根节点的子树获得更新的模式树; 步骤340、判断所述更新的模式树是否仅剩下ー个基本图模式节点或剩下可选图模式子树,如果是转步骤350,否则转步骤310 ; 步骤350、步骤350、如果只剩下ー个基本图模式节点,则直接提取该节点对应的SQL查询片段,如果仅剩下可选图模式字数,则可选图模式子树再进行一次与子树SQL片段一致的操作即生成了整棵模式树的SQL转换。
7.一种基于关系数据库的资源描述框架(RDF)查询系统,用于利用SPARQL语句对以三元组形式存储于关系数据库中的RDF数据进行查询,所述系统包括 查询语句处理装置,用于根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串; 模式树生成装置,用于根据模式串生成模式树,其中,模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号;非叶子节点表示模式间的关系,其值为optional、union和join ;其中join表示不带关键词的组图模式的一个分支; SQL转换装置,根据各基本图模式对应的常量表、变量表和空节点表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段; 数据库查询装置,利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询; 语义包装装置,根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询結果。
全文摘要
本发明公开了一种基于关系数据库的资源描述框架查询方法和系统,其中,所述方法包括根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串;根据模式串生成模式树;根据各基本图模式对应的元素结构表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段;利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询;根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询结果。
文档编号G06F17/30GK102693310SQ20121016777
公开日2012年9月26日 申请日期2012年5月28日 优先权日2012年5月28日
发明者吴少智, 吴跃, 陈佳, 黎明 申请人:无锡成电科大科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1