《一种基于XML的WEB数据快速查询方法.pdf》由会员分享,可在线阅读,更多相关《一种基于XML的WEB数据快速查询方法.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103186674 A (43)申请公布日 2013.07.03 CN 103186674 A *CN103186674A* (21)申请号 201310112178.0 (22)申请日 2013.04.02 G06F 17/30(2006.01) (71)申请人 浪潮电子信息产业股份有限公司 地址 250014 山东省济南市高新区舜雅路 1036 号 (72)发明人 张砚波 (54) 发明名称 一种基于 XML 的 Web 数据快速查询方法 (57) 摘要 本发明提供一种基于 XML 的 Web 数据快 速查询方法, 在现在 Web 领域, 对数据的快速 查找和响应。
2、成为影响用户使用的重要指标, 而 大 部 分 的 Web 的 数 据 是 以 XML 提 供 的 文 档结构来实现的, 针对 XML 匹配等方面存在 的问题提出了一种灵活的模式树匹配方法 HPM(High-Performance-Match), 该方法能够在 XML 中直接找到一个查询模式树的匹配结果, 所 有的中间结果集在堆栈中保存起来, 通过连接运 算很好的形成最后的查询匹配结果, 提高了查询 匹配的成功概率, 达到了快速响应用户需求的目 的。 (51)Int.Cl. 权利要求书 2 页 说明书 4 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2。
3、页 说明书4页 附图3页 (10)申请公布号 CN 103186674 A CN 103186674 A *CN103186674A* 1/2 页 2 1. 一种基于 XML 的 Web 数据快速查询方法 , 其特征在于通过双层的双向树索引结构 HPT 在 XML 中直接找到一个查询模式树的匹配结果, 所有的中间结果集在堆栈中保存起来, 最终形成最后的查询匹配结果, 以此提高查询匹配的成功概率, 达到了快速响应用户需求 的目的, 具体内容如下 : 两层的 HPT 双向树索引结构, HPT 是 High-Performance-Tree 的英文缩写, HPT 双向树 索引结构, 包括组层和元素层。
4、, 元素层提供详细的子节点到父节点的连接, 能够方便的找到 相关节点的父节点, 因此双向树索引结构HPT是一种能够处理XML结构查询的快速索引, 组 层内的元素索引是基于组的, 这样方便结构查询时根据组进行, 去掉多余的查询空间, 减少 匹配次数能够提高效率和方便查询, 传统的路径索引方法是同一个组内元素是无序的, 而 双向树索引结构 HPT 是把具有相同路径信息的节点放到一个组内, 也就是说, 如果两个节 点是等同的, 在该索引结构中就把它们放到一个组内, 这样就能大大的提高 XML 数据的查 询效率, HPT 索引结构的定义及具体实现方式如下 : HPT 双向树索引结构中的每个节点 g 称。
5、为一个组, 每个组的信息包括标识符 g.id 和组 名称 g.name, 查询匹配时, 根据查询模式树中节点名称和 g.name 进行匹配, 第一, 每个组包 括一个元素数组 g.pid, 在组中用一个数组保存组中元素的父节点信息, 第二, HPT 中边 是有方向的, 假设有边g1g2, 那么组g1叫做组g2的父组, 组g2叫做组g1的子组 ; 第三, 组 g 中数组 g.pid 的索引下标为 k 的数值表示组 g 中的第 (k+l) 个元素, g.Pidk 的值 表示组中第 (k+l) 个元素的父节点在组 g 的父组中的数组的索引位置 ; 为了提高查询效率, 减少匹配次数采用 HPM 模式树。
6、匹配方法进行查询模式树的匹配, HPM 是 High-Performance-Match 的英文缩写, HPM 模式树匹配方法如下 : 设定查询 HPM 模式树节点 q 和 XML 数据源中节点 p, 如果 q 是叶子节点, 且节点 p 和节 点 q 标记相同, 则称 p 和 q 相匹配 ; 如果 q 是非叶子节点, 同时存在节点 p 和以 p 为根结点 的子树和查询模式树中节点 q 以及以 q 为根结点的子树相匹配, 那么 p 和 q 相匹配, 在 HPM 模式树匹配方法中, 对查询模式树中的每一个节点, 设计一个栈和一个列表, 栈用来存储和 查询模式树节点相匹配的数据源中的节点集合, 列表。
7、存储的是查询模式树对应的 HPT 中组 p 中的元素数组, Gpcurrent 表示目前正在匹配的组中的节点, 该方法的基本实现流程为 : 给一个查询模式树和生成的数据源 HPT, 首先调用广度优先算法把查询模式树中的节 点压栈, 然后在栈上调用 HPM 模式树匹配方法, 在数据源中找到与查询模式树中节点相匹 配的节点, 并且把结果存储在堆栈中, 最后调用函数把中间结果连接起来得到与查询模式 树相匹配的节点集合 ; HPM 模式树匹配算法的具体实现方式如下 : 首先利用广度优先对查询模式树进行遍历, 然后对遍历到的节点压栈, 得到查询模式 树栈 S, HPM 式树匹配算法是用来查找查询模式树栈。
8、 S 在 XML 数据源中相匹配的节点, 在 HPM 式树匹配算法中, 对应一个查询模式树的 q 节点, Sq.value 表示栈 Sq 中 Gq.value 的值 集合, 它表示栈 Sq 中元素的父节点在父组中的位置, 再 HPM 模式树匹配算法判断查询模式 树节点 q 是不是叶子节点 ; 判断方法如下, 首先将查询模式树节点 q 出栈, 如果 q 是叶子节点, 那么在数据源中对 应的组 Gq 中节点都和 q 相匹配, 则需要把组 q 中所有节点都放入栈 Sq ; 如果 q 不是叶子节 点, 需要首先查找节点 q 的所有子节点 qi(i=0,N-1) 和子节点数目 N, 然后遍历与查询 权 。
9、利 要 求 书 CN 103186674 A 2 2/2 页 3 节点q相匹配的组Gq, 对组的每一个节点Gq-Current进行匹配, 判断节点Gq-Current是 否存在 N 个子节点分别和 qi 匹配, 如果存在, 说明当前节点 Gq-Current 满足以 q 为根结 点的查询模式树分支匹配, 则把节点对 (Gq-Current, Gq-Current.value) 放入栈 Sq 中, HPM 式树匹配算法执行后, 所有满足子匹配的节点都放入对应的栈中。 权 利 要 求 书 CN 103186674 A 3 1/4 页 4 一种基于 XML 的 Web 数据快速查询方法 技术领域 0。
10、001 本发明涉及计算机应用技术领域 , 具体地说是一种基于 XML 的 Web 数据快速查询 方法。 背景技术 0002 目前, Web 应用中如何在 XML 文档中高效的查询是一个关键问题, 尤其是路径表达 式的计算。 在XPath中使用传统的路径表达式来浏览XML文档的嵌套层次结构, 而在XQuery 查询语言中, 传统的路径表达式不仅是结构化文档上的一个基本操作, 而且成为几乎所有 复杂操作的组成部分, 但是这种 XML 查询计算的方法需要遍历整个文档, 效率低下。 0003 在现阶段, 这种传统的 XML 查询算法以及策略主要存在以下个方面的问题 : 1) 这些算法大都是基于先匹配后。
11、合并步骤进行查询匹配处理, 缺点是产生了大量无用 的中间结果, 产生了许多无用的重复匹配 ; 2) 现在算法存在着传统索引效率不高的问题, 导致了查询的效率下降比较大 ; 3) 对查询结果的连接算法存在着输入集合中的元素必须有序, 传统的索引结构是无序 的, 因此会产生大量不必要的重复匹配, 引起性能的下降。 发明内容 0004 本发明的目的是提供一种基于 XML 的 Web 数据快速查询方法。 0005 本发明的目的是按以下方式实现的, 通过双层的双向树索引结构 HPT 在 XML 中直 接找到一个查询模式树的匹配结果, 所有的中间结果集在堆栈中保存起来, 最终形成最后 的查询匹配结果, 以。
12、此提高查询匹配的成功概率, 达到了快速响应用户需求的目的, 具体内 容如下 : 两层的 HPT 双向树索引结构, HPT 是 High-Performance-Tree 的英文缩写, HPT 双向树 索引结构, 包括组层和元素层, 元素层提供详细的子节点到父节点的连接, 能够方便的找到 相关节点的父节点, 因此双向树索引结构HPT是一种能够处理XML结构查询的快速索引, 组 层内的元素索引是基于组的, 这样方便结构查询时根据组进行, 去掉多余的查询空间, 减少 匹配次数能够提高效率和方便查询, 传统的路径索引方法是同一个组内元素是无序的, 而 双向树索引结构 HPT 是把具有相同路径信息的节点。
13、放到一个组内, 也就是说, 如果两个节 点是等同的, 在该索引结构中就把它们放到一个组内, 这样就能大大的提高 XML 数据的查 询效率, HPT 索引结构的定义及具体实现方式如下 : HPT 中的每个节点 g 称为一个组, 每个组的信息包括标识符 g.id 和组名称 g.name, 查 询匹配时, 根据查询模式树中节点名称和 g.name 进行匹配, 第一, 每个组包括一个元素数 组 g.pid, 在组中用一个数组保存组中元素的父节点信息, 第二, HPT 中边是有方向的, 假 设有边 g1g2, 那么组 g1 叫做组 g2 的父组, 组 g2 叫做组 g1 的子组 ; 第三, 组 g 中数。
14、组 g.pid 的索引下标为 k 的数值表示组 g 中的第 (k+l) 个元素, g.Pidk 的值表示组中第 (k+l) 个元素的父节点在组 g 的父组中的数组的索引位置 ; 说 明 书 CN 103186674 A 4 2/4 页 5 为了提高查询效率, 减少匹配次数采用 HPM 模式树匹配方法进行查询模式树的匹配, HPM 是 High-Performance-Match 的英文缩写, HPM 模式树匹配方法如下 : 设定查询 HPM 模式树节点 q 和 XML 数据源中节点 p, 如果 q 是叶子节点, 且节点 p 和节 点 q 标记相同, 则称 p 和 q 相匹配 ; 如果 q 是非。
15、叶子节点, 同时存在节点 p 和以 p 为根结点 的子树和查询模式树中节点 q 以及以 q 为根结点的子树相匹配, 那么 p 和 q 相匹配, 在 HPM 模式树匹配方法中, 对查询模式树中的每一个节点, 设计一个栈和一个列表, 栈用来存储和 查询模式树节点相匹配的数据源中的节点集合, 列表存储的是查询模式树对应的 HPT 中组 p 中的元素数组, Gpcurrent 表示目前正在匹配的组中的节点, 该方法的基本实现流程为 : 给一个查询模式树和生成的数据源 HPT, 首先调用广度优先算法把查询模式树中的节 点压栈, 然后在栈上调用 HPM 模式树匹配方法, 在数据源中找到与查询模式树中节点相。
16、匹 配的节点, 并且把结果存储在堆栈中, 最后调用函数把中间结果连接起来得到与查询模式 树相匹配的节点集合 ; HPM 模式树匹配算法的具体实现方式如下 : 首先利用广度优先对查询模式树进行遍历, 然后对遍历到的节点压栈, 得到查询模式 树栈 S, HPM 式树匹配算法是用来查找查询模式树栈 S 在 XML 数据源中相匹配的节点, 在 HPM 式树匹配算法中, 对应一个查询模式树的 q 节点, Sq.value 表示栈 Sq 中 Gq.value 的值 集合, 它表示栈 Sq 中元素的父节点在父组中的位置, 再 HPM 模式树匹配算法判断查询模式 树节点 q 是不是叶子节点 ; 判断方法如下,。
17、 首先将查询模式树节点 q 出栈, 如果 q 是叶子节点, 那么在数据源中对 应的组 Gq 中节点都和 q 相匹配, 则需要把组 q 中所有节点都放入栈 Sq ; 如果 q 不是叶子节 点, 需要首先查找节点 q 的所有子节点 qi(i=0,N-1) 和子节点数目 N, 然后遍历与查询 节点q相匹配的组Gq, 对组的每一个节点Gq-Current进行匹配, 判断节点Gq-Current是 否存在 N 个子节点分别和 qi 匹配, 如果存在, 说明当前节点 Gq-Current 满足以 q 为根结 点的查询模式树分支匹配, 则把节点对 (Gq-Current, Gq-Current.value)。
18、 放入栈 Sq 中, HPM 式树匹配算法执行后, 所有满足子匹配的节点都放入对应的栈中。 0006 本发明的有益效果是 : 针对 XML 读取访问等方面存在的问题提出了一种灵 活的模式树匹配算法 HPM, 该算法基于文中设计的一种两层的双向树索引结构 HPT (High-Performance-Tree), 能够在 XML 文档中直接找到一个查询模式树的匹配结果, 不会 产生无用的中间结果集, 然后将中间结果集保存在堆栈中, 然后通过连接运算形成最后的 查询匹配结果, 提高了查询匹配的成功概率。 附图说明 0007 图 1 是一个简单的 XML 文档拓扑结构示例图 ; 图 2 是传统索引结构。
19、图 ; 图 3 是 HPT 索引结构示例图 ; 图 4 是 HPM 查询模式树 ; 图 5 是 HPM 堆栈示意图 ; 图 6 是查询模式树中间匹配栈结构示意图 ; 图 7 是匹配结果栈结构示例图。 说 明 书 CN 103186674 A 5 3/4 页 6 具体实施方式 0008 本发明中两层的双向树索引结构 HPT 的主要实现思路为 : HPT 是本文中设计的一种两层的双向树索引结构, 包括组层和元素层, 该索引结构是一 个两层树结构, 组层可以提供一个简单的结构关系, 元素层提供详细的子节点到父节点的 连接, 能够方便的找到相关节点的父节点, 因此HPT是一种能够处理XML结构查询的快。
20、速索 引。 组层内的元素索引是基于组的, 这样方便结构查询时根据组进行, 可以去掉多余的查询 空间, 减少匹配次数能够提高效率和方便查询。 HPT与传统的路径索引方法的同一个组内元 素是无序的相比, HPT 索引把具有相同路径信息的节点放到一个组内。也就是说, 如果两个 节点是等同的, 在该索引结构中就把它们放到一个组内, 这样就可以大大的提高 XML 数据 的查询效率。 0009 本发明中 HPM 模式树匹配算法的主要实现思路为 : HPM 模式树匹配算法是本专利中为提高查询效率设计的一个算法。我们设定查询模式 树节点 q 和 XML 数据源中节点 p, 如果 q 是叶子节点, 且节点 p 。
21、和节点 q 标记相同, 则称 p 和 q 相匹配 ; 如果 q 是非叶子节点, 同时存在节点 p 和以 p 为根结点的子树和查询模式树中节 点 q 以及以 q 为根结点的子树相匹配, 那么 p 和 q 相匹配。在 HPM 算法中, 对查询模式树中 的每一个节点, 我们设计了一个栈和一个列表, 栈用来存储和查询模式树节点相匹配的数 据源中的节点集合, 列表存储的是查询模式树对应的HPT中组p中的元素数组。 Gpcurrent 表示目前正在匹配的组中的节点。该算法基本实现流程为 : 给一个查询模式树和生成的数 据源 HPT, 首先调用广度优先算法把查询模式树中的节点压栈, 然后在栈上调用 HPM 。
22、方法, 在数据源中找到与查询模式树中节点相匹配的节点, 并且把结果存储在堆栈中, 最后调用 函数把中间结果连接起来得到与查询模式树相匹配的节点集合。 0010 本发明中涉及的 HPT 索引结构的主要定义及实现方式如下 : HPT 中的每个节点 g 称为一个组, 每个组的信息包括标识符 g.id 和组名称 g.name, 查询匹配时, 根据查询模式 树中节点名称和g.name进行匹配, 例如, 1:a。 每个组包括一个元素数组g.pid, 在组中用 一个数组保存组中元素的父节点信息, 第二, HPT 中边是有方向的, 假设有边 g1g2, 那么 组 g1 叫做组 g2 的父组, 组 g2 叫做组。
23、 g1 的子组 ; 第三, 组 g 中数组 g.pid 的索引下标为 k 的数值表示组 g 中的第 (k+l) 个元素, g.Pidk 的值表示组中第 (k+l) 个元素的父节点 在组 g 的父组中的数组的索引位置。 实施例 0011 利用 HPT 索引可以解决高效查询问题, 它用数组索引表示元素信息和利用数组的 值指向父元素。图 2 中 HPT 索引结构给出了 XML 数据树 ( 图 1) 的 HPT 表示 T。在 T 中, 保存的是 Id 的相对信息。例如, 组 2 中的节点 3、 7、 13、 15 在 HPT 中被转化为 0、 l、 2、 3, 通 过这些相对位置可以直接映射为数组索引。
24、, HPT 中的每个组 g 都和一个数组相关联, 表示 为 T.grpsg.pid。数组中的索引 k 表示一个节点, 简称为 node-k, 并且值 T.grpsg. pidk 指向父节点。比如, 在查询条件 a/cd and e 中, 查询条件是找到满足条件父节点 为 a 和包含子节点 d 和 e 的 a 节点。在图 2 中包括数组索引 1、 2 和 3, 则满足条件的节点就 是 node-1 node-2 node-3, 通过 HPT 索引结构, 能够提高查询速率。 说 明 书 CN 103186674 A 6 4/4 页 7 0012 本发明中涉及的模式树匹配算法 HPM 的主要实现方式。
25、如下 : HPM 算法首先利用广度优先对查询模式树进行遍历, 然后对遍历到的节点压栈, 得到查 询模式树栈 S。例如, 对图 3 中查询模式树遍历之后压栈为图 3。HPM 方法是用来查找查询 模式树栈 S 在 XML 数据源中相匹配的节点。在 HPM 该方法中, 对应一个查询模式树的 q 节 点, Sq.value 表示栈 Sq 中 Gq.value 的值集合, 它表示栈 Sq 中元素的父节点在父组中的位 置。IsLeaf(q) 方法判断查询模式树节点 q 是不是叶子节点。 0013 下面详细说明 HPM(S) 方法, 首先将查询模式树节点 q 出栈, 如果 q 是叶子节点, 那 么在数据源中。
26、对应的组 Gq 中节点都和 q 相匹配, 则需要把组 q 中所有节点都放入栈 Sq ; 如 果 q 不是叶子节点, 需要首先查找节点 q 的所有子节点 qi(i=0,N-1) 和子节点数目 N, 然后遍历与查询节点q相匹配的组Gq, 对组的每一个节点Gq-Current进行匹配, 判断节点 Gq-Current是否存在N个子节点分别和qi匹配, 如果存在, 说明当前节点Gq-Current满 足以 q 为根结点的查询模式树分支匹配, 则把节点对 (Gq-Current, Gq-Current.value) 放入栈 Sq 中。方法 HPM( ) 执行后, 所有满足子匹配的节点都放入对应的栈中。 。
27、0014 例如, 查询模式树 ( 图 3) 在数据源 ( 图 2) 执行 HPM 方法后子匹配结果为图 4 所 示。然后把栈中的子节点匹配结果连接起来, 得到在数据源和查询模式树相匹配的节点序 列如图 4 所示, 整个 HPM 算法执行结束, 一共在数据源中得到 4 个匹配结果。如果需要得到 查询模式树的子树其它匹配, 也可以直接通过图 4, 调用合适的连接运算, 得到匹配结果, 不 必要再重新执行一次算法 HPM。 0015 除说明书所述的技术特征外, 均为本专业技术人员的已知技术。 说 明 书 CN 103186674 A 7 1/3 页 8 图 1 图 2 说 明 书 附 图 CN 103186674 A 8 2/3 页 9 图 3 图 4 图 5 说 明 书 附 图 CN 103186674 A 9 3/3 页 10 图 6 图 7 说 明 书 附 图 CN 103186674 A 10 。