一种XML数据的快速查询方法技术

技术编号:16399230 阅读:55 留言:0更新日期:2017-10-17 19:38
本发明专利技术公开一种XML数据的快速查询方法,在XML数据中进行由多个具有复杂层次结构关系的标签路径组成的层次融合式查询,构建了解决此问题的查询模型——XML多标签路径查询(XMTQ)。XMTQ模型基于简洁的查询接口(QI)、查询导航树数据结构模型(QGT)和查询处理引擎(QE),其中在QI中只提供要查询的标签路径即可,不需关注其复杂的结构关系,可由模型自适应标签路径之间的结构关系,也支持谓词表达式参数接口;QGT具有“树干”标签节点遍历结果共享和快捷的遍历导航路线特征,可以指导QE更快速、更精准地遍历、跳过无关分支、查询并获取相关的标签值。通过测试表明XMTQ模型针对大规模XML数据查询多个层次复杂的标签路径具有突出的查询时空效率。

A fast query method for XML data

The invention discloses a method for fast query for XML data, are composed by a plurality of label path has complex hierarchical structure level fusion query in the XML data, construct the query model to solve the problem about the XML multi label path (XMTQ). XMTQ model based on simple query interface (QI), navigation query tree data structure model (QGT) and the query processing engine (QE), which can provide only a label path to query in QI, do not need to pay attention to the structure of the complex relationship, the relationship model between the adaptive label path, also support the predicate expression parameters interface; QGT has the \trunk\ tag node traversal result sharing and fast traversal of navigation line features, can guide the QE more quickly and more accurately traversal, skip irrelevant branches, query and access to the relevant tag value. Tests show that the XMTQ model has prominent query temporal and spatial efficiency for querying multiple hierarchical complex tag paths for large-scale XML data.

【技术实现步骤摘要】
一种XML数据的快速查询方法
本专利技术属于信息交换和查询领域,尤其涉及一种XML数据的快速查询方法,具体为在XML数据中进行由多个具有复杂结构关系的标签路径组成的层次融合式查询,并返回二维结果值集合。
技术介绍
XML(extensiblemarkuplanguage),即可扩展的标记语言,是一套定义语义标记的规范。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。随着网络应用的快速发展,使得XML类型的数据成为基于互联网数据交换的主流数据形式。XML格式数据具有天然的层次结构关系即树形结构关系,因此在很多应用场合下针对XML数据的查询也具有层次关系特性。在传统关系数据库中一种常见的层次数据查询应用:有条件地从不同层级的数据表中检索多个字段的数据。假定以下关系:部门(部门编号,部门名称);员工(员工编号,部门编号,员工姓名,职位,性别,年龄),部门和员工之间是一对多的关系(树状结构),对应的简写:Dept(dep_id,dep_name)和Emp(emp_id,dep_id,name,title,gender,age)。显然部门表和员工表是不同层次关系的表,后者是前者的子表,现在要检索出“年龄大于40岁的所有的员工姓名、职位和所属部门名称”,那么对应的SQL脚本语句如下:SELECTemp.name,emp.title,dept.dept_nameFROMdept,empWHEREdept.dept_id=emp.dep_idANDage>40;总结这种层次表联接(融合性)查询具有以下特点:1)数据的循环层次,结果集是以员工层次为中心的循环数据集而不是部门,在SQL中缺省以最低层次为循环中心;2)员工表中必须要有部门编号,标注自己所属部门;3)连接操作体现出层次之间的关联关系同时又具有隔离性,即具有相同部门编号的员工(在员工表中)的所属部门信息(在部门表中)也相同,同时不同的部门拥有不同的员工,即使有跨部门员工,此员工信息也会出现多次(部门编号不同,一对多关系);4)要查询的字段也具有层次融合性,每个员工除了自己的专有信息外还包括所属部门的名字。作为数据交换的主体,XML又具有很强的层级结构自描述特性,上面的两张具有“父子关系”的数据表(部门表和员工表)可以很容易转换成二级循环(部门和员工)的XML格式数据,下层XML分支嵌套在上层的某个循环分支中,即多个员工信息(同一部门的员工)的下层分支嵌入到所属部门的上层分支中,具有天然或缺省的层次联接条件,不需要在员工层标明部门编号(部门编号作为嵌入的员工层分支的祖先节点形式存在),避免了上述特点2)节省了存储空间。基于此,针对此类XML数据提出上述的层次融合式查询需求也是很自然的事情。那么目前的针对XML的查询处理技术是不是能够很好的解决上述问题呢?XPath是一种在XML文档中查找信息的语言,是W3C推荐标准,迄今为止,学术界集中讨论的基于XML的处理都是围绕着XPath展开的。XPath借助于路径表达式来选取XML文档中的节点、节点集合、原子值、以及节点和原子值的混合。通过沿着位置路径表达式(path)或者步(steps)来选取相关节点。但是由于语法上的限制,一般情况下XPath返回的都是一维的结果集,结果集的元素之间都是兄弟关系,即使使用联合操作"|"强行合并两个表达式返回的值集合也不能得到正确的层次融合式结果集。因此单独使用XPath不能直接返回具有不同层次结构关系的多个字段(或者标签路径)的值集合。XQuery建立在XPath表达式基础之上用于XML的数据查询语言,XQuery在XPath之后成为W3C推荐标准。XQuery天生支持XPath并将其作为XQuery语法的一部分,XQuery显然能完成XPath所能完成的任何任务。但是XQuery是图灵完备的(Turing-complete),可以被看作是一种通用语言,因而很容易克服XPath的诸多局限,XQuery提供了一批重要的内置函数和运算符,而且还提供了表达对结果集进行任意转换的功能。但XQuery使用的复杂性明显增加,使用XQuery返回具有不同层次结构关系的结果集往往需要编写非常复杂多层嵌套的XQuery脚本,甚至需要编程语言的帮助下才能完成融合式的查询,而且脚本的执行在时空效率上要依赖于所选择的XQuery查询引擎。
技术实现思路
本专利技术要解决的技术问题是,提供一种XML数据的快速查询方法,能够满足查询自适应性和较高时空效率的要求。为实现上述目的,本专利技术采用如下的技术方案:一种XML数据的快速查询方法,包括以下步骤:步骤1、查询参数预处理:构建谓词表达式语法计算树、查询导航树步骤、101如果谓词表达式不存在的话,跳转到步骤104,如果存在,顺序执行下一步骤;步骤102、按照表达式EBNF范式,语法分析谓词条件表达式,并把操作数作为叶子节点,把相关的操作符作为其父节点,依次类推构造谓词语法计算树;步骤103、把每个条件表达式子项中的标签路径追加到查询标签路径表中;步骤104、针对查询标签列表中的每一个标签路径,分拆成一组标签序列;步骤105至107针对此标签路径的标签序列,按照顺序处理每一个标签:如果此标签没在查询树结构中,则创建新的节点结构编入查询树中,在节点中放入此标签的详细信息,同时把导航信息放入此节点中,包括:“父子”指针、“子父”指针,按照顺序检查下一个标签、重复执行步骤105;如果在查询树结构中已经存在,顺序查找下一个标签,重复执行步骤105;直到标签序列结束执行步骤108。步骤108遍历查询导航树,继续丰富节点的导航信息。步骤2、查询处理并提供二维结果集步骤201、解析目标XML数据读入内存中,构造数据对象树,此对象树节点中只存在“父子关系”的向下单向指针,无“子父关系”的向上指针;步骤202、遍历查询导航树同时遍历XML数据树,对于查询树中的查询节点和数据树中的相关数据节点采用“双树剪枝”算法作遍历检查处理:查询标签节点存在但无数据标签节点与之对应,则以此查询节点为根节点的查询分支不再遍历;查询节点和数据节点的标签名相同,则通过此标签节点或者收集其标签路径的结果值放入缓存;数据标签节点存在但无查询标签节点与之对应,则遍历跳过以此数据节点为根节点的数据分支;步骤203和204、如果遍历到已标注谓词计算位置的标签节点上,则提取表达式中的各标签路径对应值,然后开始按照谓词表达式语法计算树结构要求计算表达式,结果为真则执行步骤205,结果为假则执行步骤206;步骤205、收集本次的标签对应值并放入缓存中;步骤206、越过此指定循环点路径的分支,继续下一个分支,如果是最后的数据分支,则执行步骤207,如果不是则执行步骤202;步骤207、收集所有缓存中的标签对应结果集,合并组成二维标签结果集,并返回。作为优选,采用双树剪枝算法作遍历检查处理过程为:遍历的过程中,当前标签节点要选定下一个孩子标签节点时:假定Nq为当前查询树节点,NLqc为Nq的所有孩子节点集合,其标签列表为TLqc,Nqc为Nq的目标孩子节点,Tqc为其标签;Nd为当前数据树节点,其标签和Nq节点的本文档来自技高网
...
一种XML数据的快速查询方法

【技术保护点】
一种XML数据的快速查询方法,其特征在于,包括以下步骤:步骤1、查询参数预处理:构建谓词表达式语法计算树、查询导航树步骤、101如果谓词表达式不存在的话,跳转到步骤104,如果存在,顺序执行下一步骤;步骤102、按照表达式EBNF范式,语法分析谓词条件表达式,并把操作数作为叶子节点,把相关的操作符作为其父节点,依次类推构造谓词语法计算树;步骤103、把每个条件表达式子项中的标签路径追加到查询标签路径表中;步骤104、针对查询标签列表中的每一个标签路径,分拆成一组标签序列;步骤105至107针对此标签路径的标签序列,按照顺序处理每一个标签:如果此标签没在查询树结构中,则创建新的节点结构编入查询树中,在节点中放入此标签的详细信息,同时把导航信息放入此节点中,包括:“父子”指针、“子父”指针,按照顺序检查下一个标签、重复执行步骤105;如果在查询树结构中已经存在,顺序查找下一个标签,重复执行步骤105;直到标签序列结束执行步骤108。步骤108遍历查询导航树,继续丰富节点的导航信息。步骤2、查询处理并提供二维结果集步骤201、解析目标XML数据读入内存中,构造数据对象树,此对象树节点中只存在“父子关系”的向下单向指针,无“子父关系”的向上指针;步骤202、遍历查询导航树同时遍历XML数据树,对于查询树中的查询节点和数据树中的相关数据节点采用“双树剪枝”算法作遍历检查处理:查询标签节点存在但无数据标签节点与之对应,则以此查询节点为根节点的查询分支不再遍历;查询节点和数据节点的标签名相同,则通过此标签节点或者收集其标签路径的结果值放入缓存;数据标签节点存在但无查询标签节点与之对应,则遍历跳过以此数据节点为根节点的数据分支;步骤203和204、如果遍历到已标注谓词计算位置的标签节点上,则提取表达式中的各标签路径对应值,然后开始按照谓词表达式语法计算树结构要求计算表达式,结果为真则执行步骤205,结果为假则执行步骤206;步骤205、收集本次的标签对应值并放入缓存中;步骤206、越过此指定循环点路径的分支,继续下一个分支,如果是最后的数据分支,则执行步骤207,如果不是则执行步骤202;步骤207、收集所有缓存中的标签对应结果集,合并组成二维标签结果集,并返回。...

【技术特征摘要】
1.一种XML数据的快速查询方法,其特征在于,包括以下步骤:步骤1、查询参数预处理:构建谓词表达式语法计算树、查询导航树步骤、101如果谓词表达式不存在的话,跳转到步骤104,如果存在,顺序执行下一步骤;步骤102、按照表达式EBNF范式,语法分析谓词条件表达式,并把操作数作为叶子节点,把相关的操作符作为其父节点,依次类推构造谓词语法计算树;步骤103、把每个条件表达式子项中的标签路径追加到查询标签路径表中;步骤104、针对查询标签列表中的每一个标签路径,分拆成一组标签序列;步骤105至107针对此标签路径的标签序列,按照顺序处理每一个标签:如果此标签没在查询树结构中,则创建新的节点结构编入查询树中,在节点中放入此标签的详细信息,同时把导航信息放入此节点中,包括:“父子”指针、“子父”指针,按照顺序检查下一个标签、重复执行步骤105;如果在查询树结构中已经存在,顺序查找下一个标签,重复执行步骤105;直到标签序列结束执行步骤108。步骤108遍历查询导航树,继续丰富节点的导航信息。步骤2、查询处理并提供二维结果集步骤201、解析目标XML数据读入内存中,构造数据对象树,此对象树节点中只存在“父子关系”的向下单向指针,无“子父关系”的向上指针;步骤202、遍历查询导航树同时遍历XML数据树,对于查询树中的查询节点和数据树中的相关数据节点采用“双树剪枝”算法作遍历检查处理:查询标签节点存在但无数据标签节点与之对应,则以此查询节点为根节点的查询分支不再遍历;查询节点和数据节点的标签名相同,则通过此标签节点或者收集其标签路径的结果值放入缓存;数据标签节点存在但无查询标签节点与之对应,则遍历跳过以此数据节点...

【专利技术属性】
技术研发人员:谷晓钢黄玲琴
申请(专利权)人:江苏师范大学
类型:发明
国别省市:江苏,32

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

1