当前位置: 首页 > 专利查询>陆嘉恒专利>正文

一种针对扩展XML树型结构的查询方法技术

技术编号:4226167 阅读:283 留言:0更新日期:2012-04-11 18:40
本发明专利技术属于信息技术领域XML数据查询技术,具体涉及对一种扩展的ZML树型结构的查询方法。针对当前所提出的查询方法的问题,即由于主存的限制不得不输出一些不确定元素,以及能处理的最优查询类范围较小的问题,本发明专利技术提出一种新的整体方法,能够处理含有父子关系,祖先-后裔关系,通配符,有序约束和负边的查询。通过利用与分支查询结点相关的集合S来保存可能匹配的元素,并记录映射关系,当元素匹配查询模式时,输出最终的查询结果。此方法不仅能最优的处理更多的查询类,而且使得中间结果大大减少,同时避免了无用结果的输出。通过实验表明,此方法在性能,输出结点数量上都有优势,而且在主存空间变化时,此方法仍具有明显的最优性。

【技术实现步骤摘要】

本专利技术属于信息
中XML数据查询技术,具体涉及一种对扩展的XML树型结构的查询方法。
技术介绍
随着XML数据在商业、企业中的广泛使用以及在交换信息中的流行,有效的处理XML数据查询也变得越来越重要。一个XML查询模式通常能用一个有根的标签树(或者是小枝树)来表示。例如,图1(a)为一个XPath查询A和一个相关的XML树模型,此查询用来找到有一个孩子结点B和C的所有结点。在图(b)的查询中,查询结果是结点A1和A2。 对XML树模型进行有效的匹配是XML查询处理中的一个核心的操作。近几年提出了多种有效地匹配XML树的查询方法,包括基于堆栈的查询方法,但其即使在查询结果很小的时候,输出的中间结果也可能很大;还提出整体处理树模型的方法TwigStack,它虽然能确保不输出无用的中间查询结果,但是只能处理含有祖先-后裔关系的查询。还提出一些整体处理方法像TwigStackList,TSGeneric,iTwigJoin,TJFast,TwigStackList-Not等等,但依然存在以下的一些问题。 以前提出的XML树模型查询的方法只集中在有父子关系和祖先-后裔关系的查询上。对于像XPath,XQuery查询语言中用到的包含了通配符,负边,有序约束的XML树模型查询的处理方法则很少。此专利技术将使用了负边,通配符和有序约束的XML树模型称为扩展XML树模型。图2中有四个扩展XML树模型。查询(a)包括一个通配符结点”*”,它可以匹配XML数据库中的任意单一结点。查询(b)中包括一个负边,用 表示。此查询表示A有一个孩子B,但没有孩子C。在XPath语言中,负边可用布尔型函数”not”来表示。查询(c)有一个有序约束,与一个XPath“//A/B”相同。”<”表示A的所有孩子结点是有序的。查询(d)包含了通配符,负边和有序约束。 以前提出的XML树模型匹配方法并不能完全发挥出整体处理树模型方法的最优性。当前面临的问题是(1)如何识别能够对查询进行最优处理的查询类;(2)对无法确保最优处理的查询,如何有效的找到查询结果。 以前提出的方法通过为树模型中的所有结点找到匹配的元素而解决问题。但是,这在实际应用中是不需要的。以XPath“//A//C”为例,只有元素C及其子树是最后的结果。在先前的方法中,为了找到这个查询结果,首先需要找到所有查询结点的组合,并对这些返回结点进行处理,找到最终合适的结果,这就使得查询过程中输出许多与未返回结点相匹配的元素,这对最终结果是没有用的。此专利技术中,提出一种新的方式来记录映射关系并避免输出未返回结点。 此专利技术针对可能包括父子关系,祖先-后裔关系,有序约束,负边和通配符的扩展XML树模型的查询,提出新的查询方法用来识别对查询进行最优处理的大的查询类。对扩展XML树模型的查询分为三类(1)查询Q/,//,*是有父子关系,祖先-后裔关系和通配符的查询;(2)查询Q/,//,*,<是有父子关系,祖先-后裔关系,通配符和有序约束的查询;(3)查询 是有父子关系,祖先-后裔关系,通配符,有序约束和负边的查询,如图3所示。
技术实现思路
此专利技术中首先提出最优查询类,然后针对扩展XML树模型,提出一种新的整体查询方法。通过此方法获得含有通配符查询(Q/,//,*)的结果,并经过扩展,使得能够处理包含有序约束(Q/,//,*,<)和负边( )的查询。 具体介绍如下 1.扩展XML树模型的查询Q 一个XML数据库D通常用一个有根的,用标签表示的树来模拟,元素标签和属性被映射到树的结点上,用边表示直接的嵌套关系。以下用“结点”表示一个查询结点,用“元素”表示D中的一个数据元素。 扩展XML树的查询Q中的结点包括元素标签,属性和字符数据。用“*”表示通配符,用来匹配任意的单一树元素。其中有四种查询边,它们是(正边,负边)和(父子边,祖先-后裔边)之间的结合。比如在图2(b)中,(A,B)是一个正的父子边,(A,C)是一个负的父子边。用符号 表示负边;有两种查询结点有序结点和无序结点。用“<”表示有序结点关系。比如,图2(c)和(d)中的结点A是有序结点。在每个扩展树模型查询中,有一个或多个结点被选为输出结点,用下划线表示。例如,在图2(a)中,C是一个选定的输出结点。 给定一个有n个选定输出结点的扩展XML树查询Q和一个XML数据库D。与查询Q的匹配用从Q中的结点到D中元素的映射表示,并使得满足(i)查询结点类型(比如标签名称)能被相应的数据库元素满足并且通配符”*”能匹配任意单一数据库元素。(ii)查询结点间的正边(包括正的父子边和正的祖先-后裔边)能被相应的数据库元素满足;(iii)在不存在相应的数据库元素时,负边(包括负的父子边和负的祖先-后裔边)能被满足;(iv)每个有序结点的孩子的顺序关系被相应的数据库元素满足。比如,图4展示了从一个扩展XML树模型到一个文档树中的映射关系。 定义最优查询类如下 最优查询类当且仅当一个查询Q中的父子关系发生在以下边E上时,查询Q是最优查询类的子类。 (1)给定Q中任意的输出结点q,E是路径中从q到root的边;或者 (2)令E=(a,b)则a是一个有序的结点,b是a的第一个孩子结点;或者 (3)E是一个负边。 对于满足最优查询类条件的查询,查询的具体方法如下介绍。 2.获得查询Q/,//,*结果的方法 在后面的叙述中,将此专利技术中的查询方法称为TreeMatch。 2.1数据结构 Tq与每个查询结点q相关的输入列表。列表中包含有相同名称q的XML元素的扩展前缀编码,所有元素根据文档顺序进行排序,这些元素用eq表示。每个列表有一个指针,可以通过单向的移动来以升序浏览一遍所有的元素。每个列表中的标签只能被读取一次。 Sq与每个分支查询结点q(不是每个查询结点)相关的集合。集合中的每个元素eq用一个三元组表示(label,bitVector,outputList)。label是eq的扩展前缀编码,bitVector用来判断当前元素在文档中是否有合适的孩子或者后裔元素。bitVector(eq)的长度与q的孩子结点的数量是相等的。给定一个结点qc∈children(q),当且仅当文档中有一个元素eqc使得eq与eqc也满足q与qc的查询关系,bitVector(eq,qc)=“1”。outputList中含有可能对最后查询结果有贡献的元素。对Sq集合中的每个元素eq,(i)如果bitVector(eq)中值全为1,则eq就一定能匹配以q为根结点的子树。(ii)当且仅当eq匹配整个树查询,每个元素e∈outputList(eq)都是查询结果。 例1图5举例说明了一个文档中的查询结点A的集合SA。SA中有两个元素。由于A1(“0”)只有一个孩子B1,没有孩子元素能与C匹配,因此bitVector(A1)=”10”.相对比而言,bitVector(A2)=”11”,由于A2(“0.1”)有两个孩子B2和C1,且满足查询中的父子关系。由于在bitVector(A2)中所有的值都为1,因此对输出结点B来说,B2(“0.1.0”)一定是一个查询结果。 2.2Q/,//,*的查本文档来自技高网
...

【技术保护点】
一种针对扩展XML树型结构的查询方法,其特征在于,提出扩展XML树模型是指包含了通配符,有序约束和负边的XML树模型。

【技术特征摘要】

【专利技术属性】
技术研发人员:陆嘉恒
申请(专利权)人:陆嘉恒
类型:发明
国别省市:11[中国|北京]

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

1