CN102693310A - 一种基于关系数据库的资源描述框架查询方法和系统 - Google Patents
一种基于关系数据库的资源描述框架查询方法和系统 Download PDFInfo
- Publication number
- CN102693310A CN102693310A CN2012101677759A CN201210167775A CN102693310A CN 102693310 A CN102693310 A CN 102693310A CN 2012101677759 A CN2012101677759 A CN 2012101677759A CN 201210167775 A CN201210167775 A CN 201210167775A CN 102693310 A CN102693310 A CN 102693310A
- Authority
- CN
- China
- Prior art keywords
- node
- pattern
- sql
- parent map
- query
- 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 59
- 239000012634 fragment Substances 0.000 claims abstract description 37
- 238000006243 chemical reaction Methods 0.000 claims abstract description 22
- 230000008878 coupling Effects 0.000 claims description 27
- 238000010168 coupling process Methods 0.000 claims description 27
- 238000005859 coupling reaction Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 22
- 239000000284 extract Substances 0.000 claims description 16
- 230000008859 change Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 11
- 238000012856 packing Methods 0.000 claims description 8
- 238000012797 qualification Methods 0.000 claims description 7
- 239000012141 concentrate Substances 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 239000003607 modifier Substances 0.000 description 9
- 239000012467 final product Substances 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 244000188472 Ilex paraguariensis Species 0.000 description 3
- 230000013011 mating Effects 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 241000270666 Testudines Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009415 formwork Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000010297 mechanical methods and process Methods 0.000 description 1
- 230000005226 mechanical processes and functions Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于关系数据库的资源描述框架查询方法和系统,其中,所述方法包括根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串;根据模式串生成模式树;根据各基本图模式对应的元素结构表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段;利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询;根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询结果。
Description
技术领域
本发明涉及语义网数据检索技术,具体涉及一种基于关系数据库的资源描述框架(RDF)查询方法和系统。
背景技术
语义网(Semantic Web)成为近几年来互联网发展的一个热点,代表智能网络未来的语义网是一个以知识为中心的模型。除了人类可读的文档和XML消息格式之外,它还增加了机器可以理解和处理的数据。
资源描述框架(Resource Description Framework,RDF)是描述Web资源的标准数据模型。由于Web数据的半结构化特性,RDF查询语言应该支持对半结构化数据的查询。万维网联盟(W3C)提出的SRARQL(SPARQL Protocol and RDF QueryLanguage,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查询的语义性,又充分利用了传统数据库的高效优势。
附图说明
图1是本发明实施例的资源描述框架查询方法的流程图;
图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"或"homepage";而属性值是某个属性的值,比如"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查询的核心部分。
其中,对各类图模式具体说明如下:
(1)基本图模式是由一个或多个三元组(triples)组成,描述一个基本的RDF图,用符号P来表示。
(2)组图模式:{P1}{P2}简单地将几个基本图模式并列在一起,组图模式的任何一个解都要满足组成组图模式的所有子图模式。
(3)可选图模式:P1 optional{P2}其表示在图模式P1的基础上,若有满足P2的RDF图结果,则P1的模式解被P2横向地扩充;若没有满足条件的RDF图结果,也不会对P1的模式解产生影响。其中P1称为主模式,P2称为从模式。
(4)并图模式:{P1}union{P2}。匹配的图模式只要满足P1或P2即可,若两者都满足,则生成两个相同的结果。
(5)命名图模式:为查询模式指定RDF图,或查找符合搜索条件的匹配结果所在RDF图。
(6)值约束:对变量进行限制,对查询结果进一步地筛选。一般合并到基本图模式里进行。
模式解(pattern solution)是当图模式匹配到RDF图的某个子图时,查询变量与之所对应RDF词汇之间的绑定关系就是图模式匹配RDF图模式的解。用符号S表示。
其中命名图模式相当于在限制的RDF图上做查询,跟查询模式的语义没有关系,其操作原理跟一般的图模式并无二义,因此本发明仅针对不带命名图模式的处理进行。
上述第(2)、(3)、(4)三种图模式是在基本图模式的基础之上建立的,并且可以互相嵌套。
其中可选图模式存在的平行关系或嵌套关系。平行可选图模式的基本形式是P1 optional{P2}optional{P3}。根据SPARQL规范,此关系等价于{P1 optionalP2}optional P3。该过程匹配方式为P2先扩充P1的模式解S1,得到中间解S1, 2。再用P3来扩充S1,2得到最终解S,匹配前提是P1。刘静的“模式树”方法关于平行可选图模式扩充模式解的原则如下:P3只是扩充在P2中没有的变量,对于P2己有的变量,除非这个变量的没有绑定值(值为空),否则不进行扩充。虽然从人类的说话习惯来看似乎合情合理,但是规范中将P1 optional{P2}封装为一个整体作为P3的主模式,依据最基本的可选图模式的求解情况可知,从模式是不能改变主模式中的任何解的,因此P3扩充时只是建立在P1的基础上,而跟P2是没有关系的。
相应地,嵌套可选图模式的基本形式是P1 optional{P2 optional{P3}}。由于optional关键词是左相关的,因此此处不能把P2 optional{P3}当成整体,而是先P1 optional{P2},得到中间解S1,2。然后在图模式P1,P2的基础之上,若有满足P3的RDF图模式,则S1,2被P3横向地扩充。
由以上分析可知,平行可选图模式与嵌套可选图模式的匹配顺序是一致的,所不同的是在平行图模式中的P3是建立在P1的基础之上,不管P2是否有匹配,P3都会根据其自身匹配情况对S1,2进行扩充。P3的参照模式是P1,匹配条件是P3与P1中的共同变量要有相同的值。
而嵌套可选图模式的P3是建立在P1和P2的基础上,必须在P1和P2都有匹配的基础之上,对S1,2进行扩充。由于P2是在P1的基础之上进行匹配的,也就是只要记录在P2扩充的属性列上不为空,则P1一定存在匹配。所以,实现的时候P3的参照模式是P2,而匹配条件是P3与P1、P2中的共同变量要有相同的值。
可选图模式的两种情况:平行可选图模式或者嵌套可选图模式采用不同的方式进行左外连接操作,但两者的共性是同一optional节点的非最左节点都要依赖于最左节点,并且匹配顺序是从左到右。这是由optional的左相关性决定的。
本发明实施例所提出的基本原理在于:将用户提交的SPARQL查询语句分块进行处理,对where语句中包含的所有基本图模式进行主语、谓语、宾语的分离,提取出含有变量的成分存入“变量表”,记录其出现的三元组编号以及角色(主语、谓语、宾语)形成链表,通过这个链表来表示基本图模式中各个三元组之间的关系,将其转化成SQL语句段;将SPARQL的查询模式部分用模式树的方法表示出来,并依据模式树所代表的基本图模式之间的关系来完成SQL语句段之间的连接联合操作,此过程中同时完成的还有SQL语句段的补全,最终形成完整的SQL查询,提交给数据库;将从关系数据库中获得的查询结果进行语义包装并返回给用户。
图1是本发明实施例的资源描述框架查询方法的流程图。如图1所示,所述方法包括:
步骤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/construct、from、where{}(可省略where)等将SPARQL查询语句段分离成四个部分,即申明部分、结果集部分、数据源部分、查询模式部分。
根据申明部分prefix/bases所记录的前缀,还原查询模式中的前缀。如用prefix foaf:<http://xmlns.com/foaf/0.1/>还原foaf:name的结果为<http://xmlns.com/foaf/0.1/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以及成对的“{}”划分为多个基本模式。将基本图模式编号,替换原有具体的图模式(RDF图形式),形成最初的模式串。如“P1 optional{{P2}optional{P3}}union{P4}{P5}”。
步骤104、对步骤103中的划分得到的基本图模式进行处理以得到符合“主谓宾”三元组模板的三元组集合。
提取数据对象需要对基本图模式进行三元组的提取和分离。SPARQL查询语言允许很多的省略和嵌套,根据相关语义将隐含的完整三元组恢复出来。如:[dc:title“tomorrow”]dc:creator“John”.等价于
_:a0 dc:title“tomorrow”.
_:a0 dc:creator“John”.
不仅要找出省略的空结点:a0,还找到联系两个三元组的纽带——共同主语a0.根据SPARQL语言规范,这里需要找出的还包括的省略成分有:共享主语、共享主谓、空结点的填充、容器collection的解释等。提取出来的三元组符合采用标准turtle语法的“主谓宾”三元组模板,有利于后面步骤的进行。
步骤105、对每一个规范三元组集合构建常量表mach_i、查询变量表verset_i、空节点表blank_i。
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自增1;如果没有找到相同的数据项,则将该元素有效值存入数组中,count部分置为1,将元素的当前位置记录在后置链表中。常量“a”的有效值就为a,变量“?b”的有效值为b,空节点“_:c”的有效值为c。
图6示出了根据上述步骤对图4所示三元组集合生成的变量表。此处在不引起误解的情况下,借用谓语的标识来表示各个三元组,S表示主语,O表示宾语。实际过程中,由于谓语通常是一个URI,不便于用来做标识,可以灵活采用其他方式来表示。
很明显的可以看出,用与或匹配树来逐层进行处理的方式,上述RDF图的匹配需要经过“ABE”、“ACFE”、“ACG”、“AD”四条路径来进行逐层匹配,而经过我们的处理过程以后仅仅只需生成三条SQL中的where子句(D只出现在一个三元组中,不构成关键变量节点):
“P1.0=P4.S”
“P2.O=P5.S=P6.S”
“P5.O=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子句片段所含有的信息量就是各模式间的关系,形式类似于“P1 optional{{P2}optional{P3}}union{P4}.{P5}”,称为模式串。由于optional关键词的特殊性,需要根据大括号“{}”来区分平行或嵌套关系。而基本图模式可能本身就带有大括号,如一个简单的基本图模式查询P1与基本图模式{P1}的查询结果是一致的。为了使模式串仅简洁地表示模式的关系,在生成模式树时不需要做过多的判断操作,需要对基本图模式的括号进行清理。具体操作原则是:若一个基本图模式如P1直接被一对“{}”包围,则自动消去这对大括号。如此反复多次对每个基本图模式进行检查,直到不存在一对“{}”里只有一个基本图模式的情况。如“P1 optional{{P2}optional{P3}}union{P4}{P5}”清理后就变成了“P1optional{P2 optional P3}union P4 P5”。
清理过后的新模式串的每一个字符都是创建模式树所不可缺少的部分,包括大括号“{}”。依照optional、union、以及join模式样板创建模式树。
步骤200具体包括如下步骤:
步骤201、创建初始空节点N。此空节点并非SPARQL查询中的空结点,而仅仅表示尚未赋值而已。设置当前模式指针current,指示当前处理的有效模式,简记为current节点。此时current节点为N。
步骤202、读取模式串;
步骤203、判断读取的模式串元素是模式Px、optional/union关键词、“{”符号和“}”符号中的哪一种,如果是模式Px,则转步骤204;如果是optional/union关键词,则转步骤205;如果是“{”符号,则转步骤206;如果是“}”符号,则转步骤207;
步骤204、判断current节点类型;
如果current节点为空节点,则将该空节点赋值为Px,并判断current节点上是否存在父节点,如果有,则将current指针指向当前current节点的父节点:current=current.parent,若current节点没有父节点,则保持原来的current节点不做处理。
如果current节点为join节点,则生成一个新节点Px作为join节点的最右孩子。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示出了由前例中模式串“P1 optional{P2 optional P3}union P4.P5”生成模式树的过程。
图9示出了图7最终由“P1 optional{P2 optional P3}union P4.P5”生成的模式树。
构建模式树以后,根据模式树所表达出来的关系就可以生成查询条件了。整个过程大体上是由叶结点上溯至根节点的过程,生成完整SQL查询语言。本例中的模式树表示P1和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片段关系如下表所示。
Varset_i和Bnode_i中的i跟已知表值中记录的模式编号表示的是同一信息,第i子查询表示第i个基本模式所生成的SQL查询片段。根据模式树,就可以得到各SQL查询片段之间的关系,生成对应的SQL语句,在部分地方还需要对SQL查询片段作相应的修改,保证SPARQL查询段与最后生成的SQL语句段之间的等价性。
SPARQL查询的四种结果集都是以SQL的select方式为基础的,而这种方式跟SPARQL中的select是一致的。因此,SPARQL的四种查询本身是以其中的select为核心的,在转换的过程中,均以select为例。
基本图模式转换的主要步骤如下:
步骤301、根据var_set表,建立select子句。选取后续生成的from集中跟var_set表中的变量名一致的属性列。
步骤302、根据SPARQL中提供的已知量建立每个基本图模式的SQL查询匹配。由于每个三元组是对数据库中三元组记录的一次匹配,因此需要对每个三元组与数据库的匹配建立别名,以示区别。为了后续说明的方便,简称为对三元组的不同命名。如将第一个三元组“?a foaf:name“alice””命名为first。具体转换时需要对foaf前缀进行替换成全名,这里为了说明的简洁,暂不作替换,后续说明若无特殊说明亦采用该办法。则根据已知量构建的SQL约束语句(where子句)即为first.predicate=foaf:name。
步骤303、根据该基本模式的varset_i表,搜索count值大于1的单元,对以该单元为头结点的链表,建立等价关系。假设{[?a,2],(first,s),(third,o)}表示变量a共出现在两个位置——第1个三元组的主语位置和第3个三元组的宾语位置,则生成该基本模式对应的SQL段中where子句first.subject=third.object。
步骤304、根据该基本模式的bnode_i表,搜索count值大于1的单元,亦如变量一样建立等价关系,但是添加一条限制其为空结点的语句,如{[_:a0,2],(first,s),(third,o)}生成where子句
first.subject like‘_:*’,first.subject=third.object
步骤305、根据滤值表filter中的滤值条件中所约束的变量,搜索原varset_i表,找到它的任意一个位置节点,添加对应的SQL查询的where语句。如Filter{bound(?a)}对应的SQL子句为first.subject is not null。另外,filter中可以包含很复杂的自定义函数,这部分处理需要借助SQL函数来进行处理,因情况不同而采取不同的方法。
步骤306、对每个基本图模式,执行一次完整的Select-Where查询,将查询程序段记为sql_i。其中select子句是根据每个基本图模式的varset_i与全局的var_set表来进行选取。选取在var_set和varset_i中均出现过的变量,在varset_i找到这些变量出现的任意一个位置,构造select子句,并以变量名对其进行重命名。如?a为所选取的变量,生成部分select子句:select first.subject as a。
基本图模式查询转换为SQL查询片段初始化完成。下一步需要做的是将SQL查询连接成一个整体,需要依靠模式树的结构来完善SQL语句。
可选图模式的两种情况:平行可选图模式或者嵌套可选图模式采用不同的方式进行左外连接操作,但两者的共性是同一optional节点的非最左节点都要依赖于最左节点,并且匹配顺序是从左到右。这是由optional的左相关性决定的。
对于简单的平行可选图模式,只需要这一共性,就可生成SQL查询。
对于简单的嵌套可选图模式,任意一个节点依赖于其最左兄弟节点,并且依赖关系得以继承,即若该节A依赖于另外一个节点B,则该节点的任意一个子节点C必然依赖于B。
可以发现,嵌套可选图模式的法则对平行可选图模式也适用。
区分平行、嵌套可选图模式以后,对模式树的处理过程按以下步骤进行:
由于关键词union与join的子节点是并列关系,其子树之间互相没有关联操作,只在最终汇总到关键词的联合或连接操作时才生成查询约束条件。于是可以将union或join节点的子树分开处理。
步骤310、先找到在远离根节点的位置处,即最近叶结点处的union或join关键词节点,将其下所属的子树(子树中一定只包含基本图模式或者复杂可选图模式)独立生成SQL查询。
步骤320、分别对各子树进行SQL查询转换。
基本图模式则只需直接读取该模式的SQL查询片段即可。对于子树是复杂可选图模式,由于不管是平行可选还是嵌套可选,都会有一个最基本的主模式,作为所有其他模式匹配的前提,因此该子树的根节点一定为optional,最左孩子必定是模式节点Px。将当前optional设置属性值Px(模式编号)。
如果该optional节点还有optional子节点,则将Px也作为属性值赋给其子optional节点。搜索optional子节点,将子节点的最左孩子添加到其属性值中。按照这样的方法,搜索所有的optional节点,主要思想是继承父节点的属性值,并将自己的最左孩子也作为属性值。
图9示出了本发明实施例的嵌套树的optional属性值的添加过程。
由于模式树不一定是二叉树,根据伪中序遍历方式对该子模式树中的节点进行遍历,基本原理就是先访问最左节点,然后访问父节点,接着访问右边第一个子节点,访问父亲节点,再访问右边第二个子节点……最右访问最右节点结束,对于该模式树的任意子树均符合这一原理。遍历的一个序列就可以成为生成一个查询的依据。如上例中的子树遍历出来的结果是P1 optional P2 optionalP3,其中第一个optional的属性是P1,第二个optional的属性是P1、P2。生成连接片段SQL_1 left join SQL_2 on v1 left join SQL_3 on v2,其中SQL_i表示Pi对应的SQL子查询片段,v1条件表示P2与P1中的相同变量需要相等,v2条件表示P3与P1、P2中的相同变量都要相等。由于是几个查询结果做左外连接,变量必须存在才能进行比较,因此需要判断该变量是否出现在等值条件约束的几个基本图模式的select子句中,如有则不做处理,否则将该变量添加到这几个基本图模式的select子句中。
步骤330、将子树的SQL片段联合或连接起来所生成的SQL查询,其中做join连接操作的时候也需要像可选图模式那样生成相同变量等价条件以及判断相同变量是否存在于在子片段的select子句中,与前面所述操作一致(对于支持自然连接(natural join)的数据库系统,可以不生成等价条件,系统自动判断)。将新生成的SQL查询当成基本图模式的SQL子查询片段替代整棵以union或join为根节点的子树获得更新的模式树;
步骤340、判断所述更新的模式树是否仅剩下一个基本图模式节点或剩下可选图模式子树,如果是转步骤350,否则转步骤310。
步骤350、如果只剩下一个基本图模式节点,则直接提取该节点对应的SQL查询片段,如果仅剩下可选图模式字数,则可选图模式子树再进行一次与子树SQL片段一致的操作即生成了整棵模式树的SQL转换。
在整棵模式树的SQL查询结果之上根据var_set选择需要投影的列即可。转换为SQL查询片段就此完成。
最后将结果集修饰符单元modifier进行转换,orderby子句跟SQL里的一致,只需将变量转换成属性列即可。将Limit(数据量)和offset(偏移量)转换成rownumber进行操作。
如果存在describe表,则将describe表中的资源与SQL查询结果合并,对合并后的所有资源作为主语进行搜索,找到其属性及属性值,如果属性值为空结点,则以该空结点继续搜索下去,直到不为空结点为止。
步骤400、利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询。
步骤500、根据结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询结果。
查询转换单元完成了SPARQL-SQL的语义转换,得到的查询结果尚不一定能直接作为结果返回,需要经过结果语义包装单元的判断以及后期处理,才将最终结果返回。
结果语义包装单元先对结果集的关键词进行判定,如果是select,则可以直接将查询得到的关系表返回,如果用户要求返回xml文件,则进入xml处理单元;如果为ask,只需测试是否存在返回结果,如果存在,则将true传给ask模板(用于xml格式返回),否则为false;如果是describe,需要对查询结果进行RDF格式返回,采用RDF生成模板;如果是construct,对查询得到的结果以填表单的方式填入construct模板,最后生成完整的RDF文件。
xml格式的返回采用通用的处理方法,不赘述。针对describe和construct查询,返回的结果最终是以三元组的形式,其主谓宾关系很明确,用RDF文件才能更具体地表示它们之间的语义关系。RDF文件的题头部分包含的信息要更多一点,需要把前缀部分定义出来,题头定义为:<rdf:RDFxmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#>,前缀部分就仿照xmlns:rdf来进行定义。具体的三元组,依照下列规则来进行处理:
(1)主语是空结点:<rdf:Description rdf:nodeID="……">
(2)主语是资源:<rdf:Description rdf:about="……">
(3)宾语是资源:<predicate rdf:resource="……"/>
(4)宾语是空结点:<predicate rdf:nodeID="……"/>
(5)宾语是文字型:<predicate>object</predicate>
以上主语和宾语的任意组合就是一个三元组的具体描述方式。
将构建的三元组RDF片断一次加入RDF文件的正文部分,其语义性自动关联。将处理好的RDF文件返回给用户。
图11是本发明实施例基于关系数据库的资源描述框架(RDF)查询系统的系统框图,该系统用于利用SPARQL语句对以三元组形式存储于关系数据库中的RDF数据进行查询。如图11所示,所述系统包括:
查询语句处理装置,用于根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串;
模式树生成装置,用于根据模式串生成模式树,其中,模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号;非叶子节点表示模式间的关系,其值为optional、union和join;其中join表示不带关键词的组图模式的一个分支;
SQL转换装置,根据各基本图模式对应的常量表、变量表和空节点表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段;
数据库查询装置,利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询;
语义包装装置,根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询结果。
本发明所述的基于关系数据的RDF查询方法和系统支持SPARQL查询转换成SQL查询,并将SQL语句返回的结果进行语义包装,即保留了SPARQL查询的语义性,又充分利用了传统数据库的高效优势。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于关系数据库的资源描述框架(RDF)查询方法,用于利用SPARQL语句对以三元组形式存储于关系数据库中的RDF数据进行查询,所述方法包括:
步骤100、根据用户输入的SPARQL查询语句建立结果变量表、分离所述SPARQL查询语句获得各基本图模式,建立与各基本图模式对应的常量表、变量表和空节点表以及标识各基本图模式之间逻辑关系的模式串;
步骤200、根据模式串生成模式树,其中,模式树用树的结构来表示各图模式之间的关系,其中叶子节点表示基本图模式,其值为基本图模式的编号;非叶子节点表示模式间的关系,其值为optional、union和join;其中join表示不带关键词的组图模式的一个分支;
步骤300、根据各基本图模式对应的常量表、变量表和空节点表分别生成各基本图模式的SQL子查询片段,根据模式树表示的各基本图模式之间的关系将各SQL子查询片段连接成完整的SQL查询语句段;
步骤400、利用转换获得的SQL查询语句段对关系数据库中的RDF数据进行查询;
步骤500、根据SPARQL结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询结果。
2.如权利要求1所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在于,所述步骤100包括:
步骤101、提取申明部分并利用申明部分内容替换SPARQL语句中的前缀;
步骤102、从SPARQL查询语句段提取结果集部分的语句,根据结果集部分语句建立结果变量表及结果集约束条件;
步骤103、将SPARQL查询语句段中的查询模式部分根据关键词union、optional以及成对的“{}”划分为多个基本图模式;将基本图模式编号,替换原有具体图模式,形成模式串;
步骤104、对于划分得到的基本图模式进行预处理以获得符合“主谓宾”三元组模板的三元组集合;
步骤105、对每一个三元组集合分辨构建常量表、查询变量表、空节点表,其中,所述常量表用于存储所述三元组集合中常量的常量值、出现次数和位置,所述变量表用于所述三元组集合中变量的变量名称、出现次数和位置,所述空节点表用于存储所述三元组集合中空节点的空节点标识、出现次数和位置。
3.如权利要求2所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在于,所述步骤105包括:
根据正则表达式,依次提取出所述三元组集合中各三元组的主语、谓语和宾语;同时在处理过程中判断当前元素是常量、变量还是空节点,并根据类型选择即将存入的元素结构表;
在对应的元素结构表中搜寻数组部分存储的元素有效值,如果搜索到与当前元素有效值相同的数据项,则将该元素的当前位置存入对应数据项所带链表的表头位置,同时将出现次数自增1;如果没有找到相同的数据项,则将该元素有效值存入数组中,出现次数部分置为1,将元素的当前位置记录在后置链表中。
4.如权利要求1所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在于,所述步骤200包括:
步骤201、创建初始模式树空白节点,其表示尚未赋值的模式树节点,设置当前模式指针,用于指示当前处理的有效模式树节点current节点;
步骤202、读取模式串;
步骤203、判断读取的模式串元素是模式PX、optional/union关键词、“{”符号和“}”符号中的哪一种,如果是基本图模式PX,则转步骤204;如果是optional/union关键词,则转步骤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.如权利要求1所述的基于关系数据库的资源描述框架(RDF)查询方法,其特征在于,所述步骤300中生成各基本图模式的SQL子查询片段包括:
步骤301、根据结果变量表,建立select子句,选取后续生成的from集中跟所述结果变量表中的变量名一致的属性列;
步骤302、根据SPARQL中提供的已知量建立每个基本图模式的SQL查询匹配;由于每个三元组是对数据库中三元组记录的一次匹配,因此需要对每个三元组与数据库的匹配建立别名,则根据已知量构建的SQL约束语句;
步骤303、根据该基本图模式的变量表,搜索出现次数大于1的单元,对以该单元为头结点的链表,建立等价关系;
步骤304、根据该基本模式的空白节点表,搜索出现次数大于1的单元,对以该单元为头结点的链表,建立等价关系;
步骤305、对每个基本图模式,执行一次完整的Select-Where查询,其中select子句是根据每个基本图模式的变量表与全局的结果变量表来进行选取,选取在结果变量表和变量表中均出现过的变量,在变量表找到这些变量出现的任意一个位置,构造select子句,并以变量名对其进行重命名。
6.如权利要求1所述的基于关系数据库的资源描述框架(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结果集的限定以及用户设定对对查询结果进行语义包装向用户返回查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210167775.9A CN102693310B (zh) | 2012-05-28 | 2012-05-28 | 一种基于关系数据库的资源描述框架查询方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210167775.9A CN102693310B (zh) | 2012-05-28 | 2012-05-28 | 一种基于关系数据库的资源描述框架查询方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102693310A true CN102693310A (zh) | 2012-09-26 |
CN102693310B CN102693310B (zh) | 2016-08-03 |
Family
ID=46858743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210167775.9A Expired - Fee Related CN102693310B (zh) | 2012-05-28 | 2012-05-28 | 一种基于关系数据库的资源描述框架查询方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102693310B (zh) |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999563A (zh) * | 2012-11-01 | 2013-03-27 | 无锡成电科大科技发展有限公司 | 基于资源描述框架的网络资源语义检索方法及系统 |
CN103116625A (zh) * | 2013-01-31 | 2013-05-22 | 重庆大学 | 一种基于Hadoop的海量RDF数据分布式查询处理方法 |
CN103646051A (zh) * | 2013-11-27 | 2014-03-19 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理系统及方法 |
CN104021225A (zh) * | 2014-06-25 | 2014-09-03 | 郑州向心力通信技术股份有限公司 | 分组式数据查找抓取算法 |
CN104077297A (zh) * | 2013-03-27 | 2014-10-01 | 日电(中国)有限公司 | 基于本体的查询方法及装置 |
CN104657440A (zh) * | 2015-01-30 | 2015-05-27 | 欧阳江 | 结构化查询语句生成系统及方法 |
CN105138601A (zh) * | 2015-08-06 | 2015-12-09 | 中国科学院软件研究所 | 一种支持模糊约束关系的图模式匹配方法 |
WO2015188315A1 (zh) * | 2014-06-10 | 2015-12-17 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN105446966A (zh) * | 2014-05-30 | 2016-03-30 | 国际商业机器公司 | 生成关系数据转换为rdf格式数据的映射规则的方法和装置 |
CN103617265B (zh) * | 2013-12-03 | 2016-08-31 | 北京航空航天大学深圳研究院 | 一种基于本体语义信息的本体查询引擎优化系统 |
CN103778251B (zh) * | 2014-02-19 | 2016-09-07 | 天津大学 | 面向大规模rdf图数据的sparql并行查询方法 |
CN106156064A (zh) * | 2015-03-30 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 对数据库进行流量控制的方法及装置 |
CN106156238A (zh) * | 2015-04-27 | 2016-11-23 | 科大讯飞股份有限公司 | 本体信息查询方法及系统 |
CN106250370A (zh) * | 2016-08-02 | 2016-12-21 | 海信集团有限公司 | 一种获取近义词的方法和装置 |
CN106796513A (zh) * | 2014-07-18 | 2017-05-31 | 起元科技有限公司 | 管理沿袭信息 |
CN106844445A (zh) * | 2016-12-16 | 2017-06-13 | 天津大学 | 基于语义的资源描述框架rdf图划分方法 |
WO2017121355A1 (zh) * | 2016-01-12 | 2017-07-20 | 腾讯科技(深圳)有限公司 | 搜索处理方法以及装置 |
CN107203550A (zh) * | 2016-03-17 | 2017-09-26 | 华为技术有限公司 | 一种数据处理方法和数据库服务器 |
CN107480183A (zh) * | 2017-07-06 | 2017-12-15 | 广州索答信息科技有限公司 | 一种厨房领域知识图谱查询方法、装置和存储介质 |
CN107679055A (zh) * | 2017-06-25 | 2018-02-09 | 平安科技(深圳)有限公司 | 信息检索方法、服务器及可读存储介质 |
CN108256080A (zh) * | 2018-01-19 | 2018-07-06 | 深圳市富途网络科技有限公司 | 一种利用python语法语义构建复杂sql语句的方法及系统 |
CN108804580A (zh) * | 2018-05-24 | 2018-11-13 | 湖南大学 | 一种在联邦型rdf数据库中查询关键字的方法 |
CN108984633A (zh) * | 2018-06-21 | 2018-12-11 | 广东顺德西安交通大学研究院 | 一种基于节点上下文向量空间的rdf近似答案查询方法 |
CN109033260A (zh) * | 2018-07-06 | 2018-12-18 | 天津大学 | 基于rdf的知识图谱交互式可视化查询方法 |
CN109284340A (zh) * | 2018-09-14 | 2019-01-29 | 清华大学 | 资源受限智能对象中关系型数据的存储及检索方法 |
CN110032676A (zh) * | 2019-03-15 | 2019-07-19 | 中南大学 | 一种基于谓词关联的sparql查询优化方法及系统 |
CN110134335A (zh) * | 2019-05-10 | 2019-08-16 | 天津大学深圳研究院 | 一种基于键值对的rdf数据管理方法、装置及存储介质 |
WO2019172849A1 (en) * | 2018-03-06 | 2019-09-12 | Agency For Science, Technology And Research | Method and system for generating a structured knowledge data for a text |
CN110825739A (zh) * | 2019-10-30 | 2020-02-21 | 京东数字科技控股有限公司 | 建表语句生成方法、装置、设备及存储介质 |
CN111008309A (zh) * | 2019-12-06 | 2020-04-14 | 北京百度网讯科技有限公司 | 查询方法及装置 |
CN111897832A (zh) * | 2020-07-31 | 2020-11-06 | 深圳前海微众银行股份有限公司 | 模型部署方法、设备及可读存储介质 |
CN112749184A (zh) * | 2021-01-13 | 2021-05-04 | 首都师范大学 | 一种sparql联合查询的数据源选择方法 |
CN113312384A (zh) * | 2020-02-26 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 图数据的查询处理方法、装置及电子设备 |
CN113312431A (zh) * | 2020-05-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 数据库关联元素的识别方法及数据结构图的建立方法 |
CN114003775A (zh) * | 2021-10-29 | 2022-02-01 | 支付宝(杭州)信息技术有限公司 | 图数据处理、查询方法及其系统 |
CN114706846A (zh) * | 2021-12-31 | 2022-07-05 | 北京大学 | 查询数据的方法、装置、设备及存储介质 |
CN116108245A (zh) * | 2023-03-31 | 2023-05-12 | 支付宝(杭州)信息技术有限公司 | 图数据查询方法和查询引擎 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167254A1 (en) * | 2002-03-04 | 2003-09-04 | Hong Su | Method and system of valuing transformation between extensible markup language (XML) documents |
CN1560763A (zh) * | 2004-02-19 | 2005-01-05 | 北京大学 | 一种可扩展标记语言路径查询翻译为结构查询的方法 |
CN101183385A (zh) * | 2007-12-04 | 2008-05-21 | 西安交通大学 | 一种基于多模态索引结构的xml查询方法 |
-
2012
- 2012-05-28 CN CN201210167775.9A patent/CN102693310B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167254A1 (en) * | 2002-03-04 | 2003-09-04 | Hong Su | Method and system of valuing transformation between extensible markup language (XML) documents |
CN1560763A (zh) * | 2004-02-19 | 2005-01-05 | 北京大学 | 一种可扩展标记语言路径查询翻译为结构查询的方法 |
CN101183385A (zh) * | 2007-12-04 | 2008-05-21 | 西安交通大学 | 一种基于多模态索引结构的xml查询方法 |
Cited By (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999563A (zh) * | 2012-11-01 | 2013-03-27 | 无锡成电科大科技发展有限公司 | 基于资源描述框架的网络资源语义检索方法及系统 |
CN103116625A (zh) * | 2013-01-31 | 2013-05-22 | 重庆大学 | 一种基于Hadoop的海量RDF数据分布式查询处理方法 |
CN104077297A (zh) * | 2013-03-27 | 2014-10-01 | 日电(中国)有限公司 | 基于本体的查询方法及装置 |
CN104077297B (zh) * | 2013-03-27 | 2017-05-17 | 日电(中国)有限公司 | 基于本体的查询方法及装置 |
CN103646051A (zh) * | 2013-11-27 | 2014-03-19 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理系统及方法 |
CN103646051B (zh) * | 2013-11-27 | 2017-02-08 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理系统及方法 |
CN103617265B (zh) * | 2013-12-03 | 2016-08-31 | 北京航空航天大学深圳研究院 | 一种基于本体语义信息的本体查询引擎优化系统 |
CN103778251B (zh) * | 2014-02-19 | 2016-09-07 | 天津大学 | 面向大规模rdf图数据的sparql并行查询方法 |
CN105446966B (zh) * | 2014-05-30 | 2019-01-18 | 国际商业机器公司 | 生成关系数据转换为rdf格式数据的映射规则的方法和装置 |
CN105446966A (zh) * | 2014-05-30 | 2016-03-30 | 国际商业机器公司 | 生成关系数据转换为rdf格式数据的映射规则的方法和装置 |
CN105378724B (zh) * | 2014-06-10 | 2019-02-05 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
WO2015188315A1 (zh) * | 2014-06-10 | 2015-12-17 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN105378724A (zh) * | 2014-06-10 | 2016-03-02 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN104021225B (zh) * | 2014-06-25 | 2017-12-05 | 郑州向心力通信技术股份有限公司 | 分组式数据查找提取方法 |
CN104021225A (zh) * | 2014-06-25 | 2014-09-03 | 郑州向心力通信技术股份有限公司 | 分组式数据查找抓取算法 |
CN106796513A (zh) * | 2014-07-18 | 2017-05-31 | 起元科技有限公司 | 管理沿袭信息 |
CN104657440A (zh) * | 2015-01-30 | 2015-05-27 | 欧阳江 | 结构化查询语句生成系统及方法 |
CN106156064A (zh) * | 2015-03-30 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 对数据库进行流量控制的方法及装置 |
CN106156064B (zh) * | 2015-03-30 | 2020-01-17 | 阿里巴巴集团控股有限公司 | 对数据库进行流量控制的方法及装置 |
CN106156238A (zh) * | 2015-04-27 | 2016-11-23 | 科大讯飞股份有限公司 | 本体信息查询方法及系统 |
CN105138601A (zh) * | 2015-08-06 | 2015-12-09 | 中国科学院软件研究所 | 一种支持模糊约束关系的图模式匹配方法 |
CN105138601B (zh) * | 2015-08-06 | 2019-03-26 | 中国科学院软件研究所 | 一种支持模糊约束关系的图模式匹配方法 |
US10713302B2 (en) | 2016-01-12 | 2020-07-14 | Tencent Technology (Shenzhen) Company Limited | Search processing method and device |
WO2017121355A1 (zh) * | 2016-01-12 | 2017-07-20 | 腾讯科技(深圳)有限公司 | 搜索处理方法以及装置 |
CN107203550A (zh) * | 2016-03-17 | 2017-09-26 | 华为技术有限公司 | 一种数据处理方法和数据库服务器 |
CN107203550B (zh) * | 2016-03-17 | 2021-01-01 | 华为技术有限公司 | 一种数据处理方法和数据库服务器 |
CN106250370A (zh) * | 2016-08-02 | 2016-12-21 | 海信集团有限公司 | 一种获取近义词的方法和装置 |
CN106844445B (zh) * | 2016-12-16 | 2020-08-14 | 天津大学 | 基于语义的资源描述框架rdf图划分方法 |
CN106844445A (zh) * | 2016-12-16 | 2017-06-13 | 天津大学 | 基于语义的资源描述框架rdf图划分方法 |
WO2019000697A1 (zh) * | 2017-06-25 | 2019-01-03 | 平安科技(深圳)有限公司 | 信息检索方法、系统、服务器及可读存储介质 |
CN107679055B (zh) * | 2017-06-25 | 2021-04-27 | 平安科技(深圳)有限公司 | 信息检索方法、服务器及可读存储介质 |
CN107679055A (zh) * | 2017-06-25 | 2018-02-09 | 平安科技(深圳)有限公司 | 信息检索方法、服务器及可读存储介质 |
CN107480183A (zh) * | 2017-07-06 | 2017-12-15 | 广州索答信息科技有限公司 | 一种厨房领域知识图谱查询方法、装置和存储介质 |
CN108256080A (zh) * | 2018-01-19 | 2018-07-06 | 深圳市富途网络科技有限公司 | 一种利用python语法语义构建复杂sql语句的方法及系统 |
WO2019172849A1 (en) * | 2018-03-06 | 2019-09-12 | Agency For Science, Technology And Research | Method and system for generating a structured knowledge data for a text |
CN108804580A (zh) * | 2018-05-24 | 2018-11-13 | 湖南大学 | 一种在联邦型rdf数据库中查询关键字的方法 |
CN108804580B (zh) * | 2018-05-24 | 2021-05-25 | 湖南大学 | 一种在联邦型rdf数据库中查询关键字的方法 |
CN108984633B (zh) * | 2018-06-21 | 2020-10-20 | 广东顺德西安交通大学研究院 | 一种基于节点上下文向量空间的rdf近似答案查询方法 |
CN108984633A (zh) * | 2018-06-21 | 2018-12-11 | 广东顺德西安交通大学研究院 | 一种基于节点上下文向量空间的rdf近似答案查询方法 |
CN109033260A (zh) * | 2018-07-06 | 2018-12-18 | 天津大学 | 基于rdf的知识图谱交互式可视化查询方法 |
CN109033260B (zh) * | 2018-07-06 | 2021-08-31 | 天津大学 | 基于rdf的知识图谱交互式可视化查询方法 |
CN109284340B (zh) * | 2018-09-14 | 2020-11-20 | 清华大学 | 资源受限智能对象中关系型数据的存储及检索方法 |
CN109284340A (zh) * | 2018-09-14 | 2019-01-29 | 清华大学 | 资源受限智能对象中关系型数据的存储及检索方法 |
CN110032676B (zh) * | 2019-03-15 | 2022-08-05 | 中南大学 | 一种基于谓词关联的sparql查询优化方法及系统 |
CN110032676A (zh) * | 2019-03-15 | 2019-07-19 | 中南大学 | 一种基于谓词关联的sparql查询优化方法及系统 |
CN110134335A (zh) * | 2019-05-10 | 2019-08-16 | 天津大学深圳研究院 | 一种基于键值对的rdf数据管理方法、装置及存储介质 |
CN110134335B (zh) * | 2019-05-10 | 2022-08-12 | 天津大学深圳研究院 | 一种基于键值对的rdf数据管理方法、装置及存储介质 |
CN110825739A (zh) * | 2019-10-30 | 2020-02-21 | 京东数字科技控股有限公司 | 建表语句生成方法、装置、设备及存储介质 |
CN111008309B (zh) * | 2019-12-06 | 2023-08-08 | 北京百度网讯科技有限公司 | 查询方法及装置 |
CN111008309A (zh) * | 2019-12-06 | 2020-04-14 | 北京百度网讯科技有限公司 | 查询方法及装置 |
CN113312384A (zh) * | 2020-02-26 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 图数据的查询处理方法、装置及电子设备 |
CN113312384B (zh) * | 2020-02-26 | 2023-12-26 | 阿里巴巴集团控股有限公司 | 图数据的查询处理方法、装置及电子设备 |
CN113312431A (zh) * | 2020-05-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 数据库关联元素的识别方法及数据结构图的建立方法 |
CN111897832B (zh) * | 2020-07-31 | 2024-04-12 | 深圳前海微众银行股份有限公司 | 模型部署方法、设备及可读存储介质 |
CN111897832A (zh) * | 2020-07-31 | 2020-11-06 | 深圳前海微众银行股份有限公司 | 模型部署方法、设备及可读存储介质 |
CN112749184B (zh) * | 2021-01-13 | 2024-02-20 | 广东粤通天下科技有限公司 | 一种sparql联合查询的数据源选择方法 |
CN112749184A (zh) * | 2021-01-13 | 2021-05-04 | 首都师范大学 | 一种sparql联合查询的数据源选择方法 |
CN114003775A (zh) * | 2021-10-29 | 2022-02-01 | 支付宝(杭州)信息技术有限公司 | 图数据处理、查询方法及其系统 |
CN114706846A (zh) * | 2021-12-31 | 2022-07-05 | 北京大学 | 查询数据的方法、装置、设备及存储介质 |
CN114706846B (zh) * | 2021-12-31 | 2024-08-09 | 北京大学 | 查询数据的方法、装置、设备及存储介质 |
CN116108245A (zh) * | 2023-03-31 | 2023-05-12 | 支付宝(杭州)信息技术有限公司 | 图数据查询方法和查询引擎 |
Also Published As
Publication number | Publication date |
---|---|
CN102693310B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102693310A (zh) | 一种基于关系数据库的资源描述框架查询方法和系统 | |
CN102722542B (zh) | 一种资源描述框架图模式匹配方法 | |
Atzeni et al. | Semistructured and structured data in the web: Going back and forth | |
CN104205092B (zh) | 通过变换复杂三元组建立本体的方法和系统 | |
CN101436192B (zh) | 用于优化针对垂直存储式数据库的查询的方法和设备 | |
CN107491561B (zh) | 一种基于本体的城市交通异构数据集成系统及方法 | |
Abiteboul et al. | Correspondence and translation for heterogeneous data | |
CN101719156B (zh) | 一种在关系型数据库中无缝集成纯xml查询引擎的系统 | |
CN105630881B (zh) | 一种rdf的数据存储方法和查询方法 | |
CN107169033A (zh) | 基于数据模式转换和并行框架的关系数据查询优化方法 | |
CN103646032A (zh) | 一种基于本体和受限自然语言处理的数据库查询方法 | |
CN101561817A (zh) | 一种XQuery到SQL查询语言的转换算法及关系数据的查询方法 | |
CN103116625A (zh) | 一种基于Hadoop的海量RDF数据分布式查询处理方法 | |
WO2004053734A1 (en) | Evaluating relevance of results in a semi-structured data-base system | |
CN107992608B (zh) | 一种基于关键字上下文的sparql查询语句自动生成方法 | |
Abbes et al. | MongoDB-based modular ontology building for big data integration | |
CN103279543A (zh) | 海量图数据上的路径模式查询系统 | |
CN103279546A (zh) | 图数据查询方法 | |
CN107491476A (zh) | 一种适用于多种大数据管理系统的数据模型转换及查询分析方法 | |
CN101661469A (zh) | 学术文献关键词标引和检索系统及方法 | |
CN102819600A (zh) | 面向电力生产管理系统关系数据库的关键词搜索方法 | |
Michel et al. | A generic mapping-based query translation from SPARQL to various target database query languages | |
CN114372174A (zh) | 一种xml文档分布式查询方法及系统 | |
Černjeka et al. | NoSQL document store translation to data vault based EDW | |
Pluempitiwiriyawej et al. | Element matching across data-oriented XML sources using a multi-strategy clustering model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210118 Address after: No.2006 Xiyuan Avenue, Chengdu, Sichuan 611731 Patentee after: University of Electronic Science and technology of Sichuan foundation for education development Address before: Room 402, area a, Liye building, science and Technology Park, China sensor network university, Taike Park, Wuxi New District, Wuxi City, Jiangsu Province, 214135 Patentee before: WUXI UESTC TECHNOLOGY DEVELOPMENT Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 |