发明名称 基于XQuery的查询引擎系统
摘要 本发明公开了一种基于XQuery的查询引擎系统,包括中介器和包装器,中介器包括:词法分析模块,将XQuery语句分割为携带属性的令牌;语法分析模块,依据XQuery语法规范将令牌组织为抽象语法树;正规化模块,对语法树进行整理,产生形式良好的语法树;查询分解模块,遍历语法树,产生针对底层数据源的子查询,调用相应包装器;结果处理模块接收包装器传来的查询结果,并以XML形式将查询结果返回用户。包装器包括关系型数据源包装器和XML数据源包装器,接收中介器传来的XQuery子查询,转换为数据源支持的查询语言进行底层数据源查询,最终结果重构为XML格式传给结果处理模块。本发明提高了查询效率,对抽象语法树的正规化使得构造出的查询子句结构良好,可读性增强。
申请公布号 CN101667190B 申请公布日期 2011.07.27
申请号 CN200910070718.7 申请日期 2009.09.29
申请人 天津大学 发明人 冯志勇;李柳青;陈世展;刘超
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 天津市北洋有限责任专利代理事务所 12201 代理人 李素兰
主权项 一种基于XQuery的查询引擎系统,该系统包括中介器和包装器,其中,中介器包括五个模块,即:词法分析模块,用于将XQuery语句分割为携带属性的令牌tokens,借助XQJ提供的编程接口,在XQStaticContext中加入记录变量信息的MAP,每出现一个变量,通过XQStaticContext中的MAP查找该变量名是否出现过,若出现过,用已存在的变量名替代新出现的变量名,若该变量名未出现过,则将该变量信息存入变量MAP;语法分析模块,用于将令牌tokens组织为抽象语法树,借助语法树构造工具JJTree,完成将词法分析后的令牌tokens依照规定的XQuery语法规范组织成一棵抽象语法树;正规化模块,用于对语法树进行整理,以产生形式良好的语法树,在XQuery语句中每遇到For或Let子句,就重新构造一个FLWOR语句嵌套在当前FLWOR语句的return子句内,将遇到的For或Let子句提取出来作为新构造的FLWOR语句的For或Let子句;查询分解模块,用于遍历该语法树,产生针对底层数据源的子查询,调用相应的包装器,将当前节点指针指向根节点,由根向下深度优先遍历语法树,判断当前节点是否为叶子节点,若为叶子节点,直接取出属性值,返回父节点即可,否则,判断当前节点是否有未遍历的子节点,若有,当前节点指针指向第一个未遍历的子节点,根据对当前节点类型执行dump算法,遍历以该子节点为根的子树,否则根据当前节点类型构造FLWOR语句片段,返回父节点,若父节点为空,表明整棵语法树处理完成,操作结束;结果处理模块,用于接收包装器返回的查询结果,将中间结果以变量名resultsequence类型的格式缓存在MAP中,以XML形式构建最终的查询结果返回给用户;包装器包括XML数据源包装器、关系型数据源包装器;所述XML数据源包装器接收中介器传递过来的针对XML数据源的XQuery子查询,对XML数据源进行查询,将查询结果直接传递给结果处理模块;所述关系型数据源包装器,用于接收中介器传递过来的针对关系型数据源的XQuery子查询,将其转换为等价的SQL语句查询关系型数据源,将查询结果构建成XML格式传给结果处理模块。
地址 300072 天津市南开区卫津路92号