CN103198133A - 一种将XPath查询转换为树形数据结构的查询优化方法 - Google Patents
一种将XPath查询转换为树形数据结构的查询优化方法 Download PDFInfo
- Publication number
- CN103198133A CN103198133A CN2013101259555A CN201310125955A CN103198133A CN 103198133 A CN103198133 A CN 103198133A CN 2013101259555 A CN2013101259555 A CN 2013101259555A CN 201310125955 A CN201310125955 A CN 201310125955A CN 103198133 A CN103198133 A CN 103198133A
- Authority
- CN
- China
- Prior art keywords
- query
- tree
- node
- ast
- data structure
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种将XPath查询转换为树形数据结构的查询优化方法,所述方法包括:将带有位置谓词的XPath查询语句转换为抽象语法树AST;将抽象语法树AST中不同类型的节点对象转换成小枝模式树形结构中的节点对象。本发明提出了一种小枝模式树形数据结构以及小枝模式转换方法,在一定程度上优化了小枝模式查询;且本发明提出的在位置谓词节点对象中存储其参考位置的方法,在小枝查询时,能够快速定位相对求值节点,加快了小枝模式查询处理中对位置查询的求值。
Description
技术领域
本发明涉及XML查询优化领域,尤其涉及一种有位置谓词的XPath查询转换为树形数据结构的查询优化方法。
背景技术
XML因其具有自描述性,可扩展性以及开放性等优点使其得到了广泛的应用,随着XML数据的不断增长,对大规模XML数据的管理需求也日渐迫切,出现了XML数据库等商业产品。XML数据的查询因此而显得尤为重要,而XML查询标准之一XPath也得到了广泛研究和实现。因XML文档半结构化的特性使得传统的关系数据库的查询算法对其并不适用,因此相继提出了一些针对XPath查询的算法。目前研究比较广泛的有小枝模式匹配算法,即将XPath查询表示成一棵用节点和边进行标记的小枝模式查询树,XPath查询也就变成了在XML数据中找出所有和这个小枝模式匹配的数据片段。
目前有不少有关小枝模式查询处理的方法,每种方法都有其小枝模式的内部表示,但针对有位置谓词的小枝模式查询方法涉及甚少。
在XPath中,带位置谓词的表达式的查询语义是求满足特定结构和位置条件的节点集。特别值得注意的是,表达式外是否有圆括号,和位置谓词的求值有着密切的关系。例如,XPath查询语句Q1和Q2:
Q1=//bookstore/book[title=“计算机”and price<30]/author[2]
Q2=(//bookstore/book[title=“计算机”and price<30]/author)[2]
Q1表示在图书库中查找书名为《计算机》且售价小于30元每本书的第二作者信息,位置求职是相对于book这个步而言的;Q2表示在书名为《计算机》且售价小于30元的书的所有作者信息中取第二个作者信息,位置求职是相对于XML数据文档的根。由这两个例子可以看出加圆括号和不加圆括号的求职语义是完全不同的,这也需要在查询处理时区别对待。
在实际应用中,位置谓词查询的使用场合非常广泛,如何在小枝模式中有效地处理位置谓词查询有着其重要的意义。
发明内容
为解决上述中存在的问题与缺陷,本发明提供了一种将XPath查询转换为树形数据结构的查询优化方法。所述技术方案如下:
一种将XPath查询转换为树形数据结构的查询优化方法,包括:
A将带有位置谓词的XPath查询语句转换为抽象语法树AST;
B将抽象语法树AST中不同类型的节点对象转换成小枝模式树形结构中的节点对象。
本发明提供的技术方案的有益效果是:
小枝模式树形数据结构以及小枝模式转换方法在一定程度上优化了小枝模式查询;且本发明提出的在位置谓词节点对象中存储其参考位置的方法,在小枝查询时,能够快速定位相对求值节点,加快了小枝模式查询处理中对位置查询的求值。
附图说明
图1是将XPath查询转换为树形数据结构的查询优化方法流程图;
图2是为查询Q1的小枝模式查询树结构图;
图3是为查询Q2的小枝模式查询树结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述:
本实施例提供了一种将XPath查询转换为树形数据结构的查询优化方法的方法,如图1所示该方法包括:
步骤10将带有位置谓词的XPath查询语句转换为抽象语法树AST(Abstract Syntax Tree);
上述XPath查询语句通过词法、语法分析并简化为抽象语法树。
步骤20将抽象语法树AST中不同类型的节点对象转换成小枝模式树形结构中的节点对象。
自顶向下遍历抽象语法树,每种AST节点对象调用其对应的转换接口,将其转换成小枝模式查询树中对应的节点对象。其过程具体包括如下:
步骤201定义一个ASTVisitor抽象类,通过一转换接口实现对所有AST节点转换的总控制,和通过AST节点类型调用对应的具体转换虚接口。
步骤202实现一个继承ASTVisitor抽象类的具体转换类,并实现每个具体的转换接口,根据AST节点对象的组成部分,分别制定转换规则,将其转换为正确的小枝模式查询节点对象。
步骤203在查询过程中,计算并标记出位置谓词PQNode节点的参考位置集。先在转换类型中定义一个集合变量LeveI,用来存储转换过程中的当前模式树层次集,为了支持路径的集合运算,当前树层次值需要用集合来存储。树层次采用从0开始计数,每转换生成一个有效的定位步EQNode节点,树层次就加1,特殊的查询节点生成时,树的层次不变,如SQNode节点不包含在计数内。接着在谓词转换时,对于有位置谓词的语法树节点,其参考位置集用RefLevel存储,其值等于位置谓词应用到的表达式的上一层模式树层次集Level。
抽象语法树AST:XPath查询语句通过词法语法分析后,得到符合要求的语法树,然后通过简化形成本发明的抽象语法树,它体现了查询语句的树状语法结构。抽象语法树中的节点类型是按照XPath标准中表达式类型进行定义的。每个类型的表达式都有其特定的组成部分,故AST中每个节点类型也有其对应的组成部分。如导航节点由步节点集合组成;步节点由轴,节点测试等组成;谓词节点由谓词表达式和其限定的表达式组成;逻辑表达式节点由其包含的项节点集合组成。
小枝模式查询树:由查询节点和边组成的树形结构。查询节点主要包括SQNode,FQNode,PQNode和EQNode。
SQNode:表示AND/OR逻辑表达式以及UNION集合表达式的节点。
FQNode:描述XPath查询中函数的节点。
PQNode:描述位置谓词信息以及值比较谓词中的比较运算符和常量值信息的节点。
EQNode:描述一个定位步信息的节点,主要包含了定位步的轴、自身节点、谓词节点和next节点。
边描述了小枝模式查询树中自顶向下前后两个查询节点间的关系,包括:
next关系:两个查询节点间先后关系,后者是前者的下一个定位步。
谓词关系:两个查询节点间后者是前者的谓词节点。
包含关系:后者是前者中的一个包含项节点。
图2和图3分别展示了查询Q1和Q2对应的小枝模式查询树结构图。查询Q1和Q2的区别是Q2多了一个括号限定,在抽象语法树AST中将位置谓词前的括号内容整体作为一个位置谓词应用到的表达式,Q2中“//bookstore/book[title=“计算机”and price<30]/author”被看作位置谓词“2”应用到的表达式,位置谓词的参考位置集就等于这个表达式的上一层,也就是文档根的模式树层次集{0}。Q1中,位置谓词“2”应用到的表达式是author步,其参考位置集等于author步的上一层book步所在的模式树层次集{2}。其中://,bookstore、/,book、and、/,author、/,title、/,price、表示除PQNode以外的查询节点QNode;=,2,pos、=,计算机和<,30表示PQNode含有比较操作符,具体的值,位置谓词标记;虚线表示谓词关系;箭头表示next关系;实线表示包含关系。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种将XPath查询转换为树形数据结构的查询优化方法,包括:其特征在于,所述方法包括:
A将带有位置谓词的XPath查询语句转换为抽象语法树AST;
B将抽象语法树AST中不同类型的节点对象转换成小枝模式树形结构中的节点对象。
2.根据权利要求1所述的将XPath查询转换为树形数据结构的查询优化方法,其特征在于,所述XPath查询语句通过词法、语法分析并简化为抽象语法树。
3.根据权利要求1所述的将XPath查询转换为树形数据结构的查询优化方法,其特征在于,所述步骤B还包括:
通过一转换接口实现对AST节点转换的总控制,和通过AST节点类型调用对应的具体转换虚接口;
根据AST节点对象的组成部分,制定转换规则,将AST中不同类型的节点对象转换为正确的小枝模式查询节点对象;
计算并标记出位置谓词PQNode节点的参考位置集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310125955.5A CN103198133B (zh) | 2013-04-12 | 2013-04-12 | 一种将XPath查询转换为树形数据结构的查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310125955.5A CN103198133B (zh) | 2013-04-12 | 2013-04-12 | 一种将XPath查询转换为树形数据结构的查询优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198133A true CN103198133A (zh) | 2013-07-10 |
CN103198133B CN103198133B (zh) | 2016-09-14 |
Family
ID=48720690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310125955.5A Active CN103198133B (zh) | 2013-04-12 | 2013-04-12 | 一种将XPath查询转换为树形数据结构的查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103198133B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302842A (zh) * | 2014-07-31 | 2016-02-03 | 北大方正集团有限公司 | 一种数据处理方法及装置 |
CN106446134A (zh) * | 2016-09-20 | 2017-02-22 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN110928550A (zh) * | 2019-11-19 | 2020-03-27 | 上海工程技术大学 | 基于关键词Trie树消除GCC抽象语法树冗余的方法 |
WO2022253047A1 (zh) * | 2021-06-01 | 2022-12-08 | 华为技术有限公司 | 基于网络配置协议的查询信息的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1941743A (zh) * | 2006-09-21 | 2007-04-04 | 复旦大学 | Xml流数据的复杂小枝模式查询匹配方法 |
CN101089851A (zh) * | 2007-07-12 | 2007-12-19 | 复旦大学 | 基于部分二进制前缀编码的xml流缓存管理方法 |
CN101114291A (zh) * | 2007-08-24 | 2008-01-30 | 西安交通大学 | 一种基于多样性xml文档近似查询方法 |
-
2013
- 2013-04-12 CN CN201310125955.5A patent/CN103198133B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1941743A (zh) * | 2006-09-21 | 2007-04-04 | 复旦大学 | Xml流数据的复杂小枝模式查询匹配方法 |
CN101089851A (zh) * | 2007-07-12 | 2007-12-19 | 复旦大学 | 基于部分二进制前缀编码的xml流缓存管理方法 |
CN101114291A (zh) * | 2007-08-24 | 2008-01-30 | 西安交通大学 | 一种基于多样性xml文档近似查询方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302842A (zh) * | 2014-07-31 | 2016-02-03 | 北大方正集团有限公司 | 一种数据处理方法及装置 |
CN106446134A (zh) * | 2016-09-20 | 2017-02-22 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN106446134B (zh) * | 2016-09-20 | 2019-07-09 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN110928550A (zh) * | 2019-11-19 | 2020-03-27 | 上海工程技术大学 | 基于关键词Trie树消除GCC抽象语法树冗余的方法 |
CN110928550B (zh) * | 2019-11-19 | 2023-11-24 | 上海工程技术大学 | 基于关键词Trie树消除GCC抽象语法树冗余的方法 |
WO2022253047A1 (zh) * | 2021-06-01 | 2022-12-08 | 华为技术有限公司 | 基于网络配置协议的查询信息的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103198133B (zh) | 2016-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3120852C (en) | Elimination of query fragment duplication in complex database queries | |
US11481439B2 (en) | Evaluating XML full text search | |
US7644066B2 (en) | Techniques of efficient XML meta-data query using XML table index | |
US11599535B2 (en) | Query translation for searching complex structures of objects | |
KR101432700B1 (ko) | 쿼리의 최적화를 위한 방법 | |
EP1577796A1 (en) | Improved Query Optimizer Using Implied Predicates | |
US20060230016A1 (en) | Systems and methods for statistics over complex objects | |
US8825621B2 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
US8180791B2 (en) | Combining streaming and navigation for evaluating XML queries | |
US10423623B2 (en) | Hierarchy modeling and query | |
CN105630881A (zh) | 一种rdf的数据存储方法和查询方法 | |
CN101710336A (zh) | 一种利用关系中间件加速数据处理的方法 | |
CN103198133A (zh) | 一种将XPath查询转换为树形数据结构的查询优化方法 | |
US20080033967A1 (en) | Semantic aware processing of XML documents | |
Leeka et al. | RQ-RDF-3X: going beyond triplestores | |
CN105574007A (zh) | 一种基于关系数据库的xml数据在存储方法 | |
Bieliková et al. | Lightweight semantics over web information systems content employing knowledge tags | |
CN202093561U (zh) | 电力设计中处理资料关系的*** | |
Mathis | Extending a tuple-based XPath algebra to enhance evaluation flexibility | |
Liu et al. | Storing and querying fuzzy XML data in relational databases | |
Al-Ghezi | Universal Workload-based Graph Partitioning and Storage Adaption for Distributed RDF Stores | |
Heese | Query graph model for sparql | |
CN109635160A (zh) | 一种基于xbrl的快速检索的实现方法 | |
CN105159876A (zh) | 基于cas梳理报表元素和确定报表建模结构的方法 | |
Beneventano et al. | Quality–Driven Query Processing Techniques in the MOMIS Integration System |
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 |