(计算机应用技术专业论文)基于xquery的xml查询平台研究与设计.pdf_第1页
(计算机应用技术专业论文)基于xquery的xml查询平台研究与设计.pdf_第2页
(计算机应用技术专业论文)基于xquery的xml查询平台研究与设计.pdf_第3页
(计算机应用技术专业论文)基于xquery的xml查询平台研究与设计.pdf_第4页
(计算机应用技术专业论文)基于xquery的xml查询平台研究与设计.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机应用技术专业论文)基于xquery的xml查询平台研究与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河海大学硕士学位论文 摘要 摘要 传统的h t m l ( 超文本标记语言) 只适合数据的浏览,而不适合数据间的交 换。在w e b 领域,x m l 弥补了h t m l 的不足,它是由万维网协会( w 3 c ) 设 计的用来自动描述数据信息的一种新标准语言。x q u e r y 是由万维网协会( w 3 c ) 推荐的查询语言,它使用x m l 作为抽象数据模型,是一个通用的x m l 查询语 言。针对x m l 的数据特点,采用x q u e r y 查询语言进行查询已成为当前x m l 数据库的查询的一个研究重点。 本文主要对x m l 查询的现状、x m l 查询语言、面向查询的x m l 数据模 型对查询语言的影响、x q u e r y 查询语言的查询处理过程等进行了研究,综合 x q u e r y 查询处理过程和x m l 数据模型的特点,设计了一个基于x q u e r y 的x m l 查询平台,该平台由查询语句构造器、查询解析器、查询执行器组成,可对广泛 来源的x m l 数据执行查询等操作。 本文的主要工作如下: 1 、提出了基于x q u e r y 的x m l 查询平台体系结构,分为用户层、组件层、 数据层,以x q u e r y 解析器和查询执行器为核心,辅以查询语句构造器帮助用户 生成查询条件; 2 、提出了应用于x q u e r y 查询语句构造器的合成表示模型,该模型以单个 的结果元素为目标建立原予查询,将原子查询之间以相应的合成操作联系在一起 表示x q u e r y 查询; 3 、采用模式树解析x q u e r y 查询,将经常被查询的x m l 节点信息存储到 物化视图中,利用物化视图和用户查询的交叉部分,直接从物化视图中获取用户 的查询内容来实现查询优化。 本文工作的意义在于设计个通用的查询平台,解决了x m l 查询及其优化 问题,对x m l 数据的查询研究具有一定的实际价值。 关键词:x q u e r y 、x i v i l 查询、查询语句构造、模式树、查询优化 河海大学硕士学位论文基于x q u e r y 的x m l 查询优化平台研究与设计 a b s t r a c t t r a d i t i o n a lh t m l ( h y p e r t e x tm a r k u pl a n g u a g e ) i so n l yf i tf o rs c a n i n g d a t a ,a n di sn o tf i tf o re x c h a n g i n gd a t a i nt h ef i l e do fw e b ,x m lm a k e su pt h el a c ko f h t m l ,i san e ws t a n d a r dl a n g u a g ed e s i g n e df o ra u t o m a t i cd e s c r i b ed a t ai n f o r m a t i o n b yt h ew o r l dw i d ew e bc o n s o r t i u m ( w 3 c ) x q u e r y i saq u e r y l a n g u a g e r e c o n m a e n d e db yt h ew o r l dw i d ew e bc o n s o r t i u m ( w 3 c ) ,m a k e sx m l a sa b s t r a c t d a t am o d e l ,i sau n i v e r s a lq u e r yl a n g u a g ef o rx m l 。c o n t r a p o s i n gt h ed a t at r a i to f x m l ,q u e r y i n ga n do p t i m i z a t i o nw i t hx q u e r yi sar e s e a r c h i n ge m p h a s e sn o w t h i sl e c t u r es t u d yt h es t u d i n ga c t u a l i t yo f x m lq u e r y , x m lq u e r yl a n g u a g e ,t h ei n f l u - e n c eo f x m ld a t am o d e lf a c eq u e r yo nq u e r yl a n g u a g e ,q u e r yp r o c e s so f x q u e r yf a n g u a g ee t c ,a n di n t e g r a t ec h a r a c t e r i s t i co f q u e r yp r o c e s so f x q u e r y a n dx m ld a t am o d e l , d e s i g n e dax m lq u e r yp l a t f o r mb a s e do nx q u e r y ,t h ep l a t f o r mi sc o n s i s to f c o n s t r u c t o ro fq u e r ys e n t e n c e ,q u e r yp a r s e r , q u e r ye v a l u a t o r ,w h i c hq u e r yd i f f e r e n tx m ld a t a f r o ma b r o a ds o u r c e i np a r t i c u l a r ,w em a k et h r e ec o n t r i b u t i o n s ,f i r s tw eg i v ep r o c e s s i n gm o d e lo f x m l q u e r yb a s e do nx q u e r y ,i sc o n s i s to fu s e rl a y e r , m o d u l el a y e r , d a t al a y e r t h ec o r eo f p r o c e s s i n gm o d e la r ex q u e r yp a r s e ra n dq u e r ye v a l u a t o r ,a n dc o n s t r u c t o ro fq u e r y q u e r ys e n t e n c eh e l pu s e rm a k eq u e r yc o n d i t i o n ;s e c o n dw eg i v em e r g i n gr e p r e s e n t a - t i o nm o d e l ,w h i c hi su s e di nc o n s t r u c t o ro fq u e r ys e n t e n c e t h em o d e ld e n o t es i n g l e r e s u l te l e m e n ta sa t o mq u e r y ,a n dm e r g ea t o mq u e r i e st od e n o t ex q u e r yq u e r y ;t h i r d w e a d o p tq u e r yt r e e st or e p r e s e n tt h ex q u e r yq u e r ys e n t e n c e s ,d e p o s i tx m l n o d ei n f o r - m a r i o ni nm a t e r i a l i z e dv i e w , i tw i l lm a t c hi t sq u e r yt r e ew i t ht h em v sq u e r yt r e et og e t t h em a t c h e dp a r tt oi m p r o v et h ee f f i c i e n c yo f q u e r yx m l t h es i g n i f i c a n c eo ft h i sa r t i l ei sd e s i g nau n i v e r s a lq u e r yp l a t f o r m ,w h i c hs o l v e q u e s t i o no fx m lq u e r ya n do p t i m i z a t i o n ,h a v es o m ea c t u a lv a l u eo ns t u d yo fx m l d a t aq u e r y k e y w o r d s :x q u e r y ,x m lq u e r y ,c o n s t r u c t i o no fq u e r ys e n t e n c e ,p a t t e r nt r e e , q u e r yo p t i m i z e 学位论文独创性声明: 本人所呈交的学位论文是我个人在导师指导下进行的研究工作 及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工 作的同事对本研究所做的任何贡献均已在论文中作了明确的说明并 表示了谢意。如不实,本人负全部责任。 论文作者( 签名) 旌壁邕谢年协月f 步日 学位论文使用授权说明: 河海大学、中国科学技术信息研究所、国家图书馆、中国学术期 刊( 光盘版) 电子杂志社有权保留本人所送交学位论文的复印件或电 子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文 档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允 许论文被查阅和借阅。论文全部或部分内容的公布( 包括刊登) 授权河 海大学研究生院办理。 论文作者( 签名) : 趋壁塾h ) 年j2 - 月f 富日 河海大学硕士学位论文第一章绪论 1 1 研究背景 第一章绪论 近年来,i n t e m e t 已经成为人们获取信息的主要工具,它提供世界范围内的 网络互联和通信,而w e b 则成为环球信息资源库。由于传统的h t m l ( 超文本 标记语言) 只适合数据的浏览,而不适合数据间的交换,因此需要一种新的语言 能够适应数据的组织和交换。x m l 提供了一种连接关系数据库和面向对象数据 库及其它数据库系统之间的便捷方式,它将成为异构环境下的通用数据语言和转 换协议。在w e b 领域,它弥补了h t m l 的不足,必将得到更多的应用。 x q u e r y 是w 3 c 推荐的x m l 查询语言,它可以对不同应用的x m l 数据 进行数据处理、数据转换和检索。x q u e r y 的数据模型是x m l 数据模型,为了 能够适应于x m l 数据的特性,w 3 c 把x q u e r y 设计成强制类型( s t r o n g t y p e ) 、 过程化( f u n c t i o n a l ) 的。它的过程化体现在,具有完整的类型系统( 例如类型检查、 类型转换、自定义数据类型等) ,查询表达式可以是嵌套递归的,支持用户自定 义函数,支持用户任意构建新的数据结点等x q u e r y 的复杂性和结构灵活性也给 x q u e r y 的实现和优化带来了很多的挑战。 1 2 研究现状 1 2 1x m l 查询的研究现状 当前,对x m l 查询的研究主要有两类: ( 1 ) 基于内存的x m l 文档的处理及优化,其关键工作包括索引设计、查 询处理的逻辑及物理优化等; ( 2 ) 基于关系或面向对象数据库来研究x m l 文档的查询,目前主要研究 基于关系型数据库的查询问题。 1 基于内存的x m l 文档的查询处理 x m l 数据通常以文档的形式存在,因此,有必要从文档的角度来研究x m l 查询和优化。与基于关系数据库的x m l 查询处理不同的是,x m l 文档的查询 处理必须实现逻辑优化、物理优化、索引设计和查询执行的各个环节。 基于内存的查询处理和优化在物理实现上必须考虑数据的物理组织方式。 1 河海大学硕士学位论文 基于x q u e r y 的x m l 查询优化平台研究与设计 因为c p u 速度和内存访问速度之间的差距越来越大,现代计算机通常都提供一 级或二级的高级缓存,以缓冲c p u 和主存之间的失配。但由于缓存通常比较小, 因此必须采用各种方法以降低运行时的缓存失配率。 2 基于关系数据库的x m l 查询处理 x m l 查询处理建立在关系数据库系统之上的优点是可以直接采用数据库成 熟的查询优化和索引技术,也不用并发控制、安全性等问题做额外的工作。但是 基于关系数据库的x m l 查询结果需要以x m l 的格式对外发布。目前采用的方 法有: ( 1 ) 使用视图的方法:首先在关系数据库上建立x m l 视图( 视图是虚拟 的) ,然后基于视图使用x m l 查询语言定制x m l 数据。 ( 2 ) 不使用视图的方法:不使用视图这一中间环节,使用专门的查询语言 ( 如扩展语言或者自定义的语言) 直接在关系数据库上构造x m l 文档。 目前,有- - 鳓x q u e r y n 数据库系统,如i p e d o 旺1 的li n t e l l i g e n c e p l a t f o r m 可以集成各类业务系统( 包括现存的系统和将来新加入的) ,通过x m l 和 w e bs e r v i c e 技术,统一将他们管理起来,为上层应用逻辑提供了单一开发界面。 我国人民大学研发的用于存储和处n x m l 数据的o r i e n t x 系统b 1 ,支持数据库的 建立和维护( 使用数据集d a t a s e t ) ,数据操纵支持扩展了的x q u e r y ( 支持插入节 点、更新属性和文本值、删除节点) 。但均侧重于异构数据源的管理,而真正利 用x q u e r y 来实现x m l 查询及优化的研究还不多,实现的完整、成熟的系统目前还 未见。 1 2 2x 胤查询优化的研究现状 在x m l 的查询语言与存储机制的研究日趋成熟状况下,查询时的效率就变 得十分的重要。近几年来提出了很多对x m l 查询进行优化的方法,主要分为两 大类:一类是利用一些索引、编码等方法,来提高x m l 查询检索的效率,另一 类是利用已有的视图资源对x m l 查询进行重写,来优化x m l 查询。 对于如何优化x i v i l 查询,提高查询效率,目前进行了许多的研究并提出了 相关的提高查询效率的技术,如文献列”5 1 提出了图的模式来优化查询的技术。 它们通过利用图的模式中包含的部分的图的结构信息,使用查询剪裁和查询重写 河海大学硕士学位论文第一章绪论 的方法来减少大量的查询空间,从而提高查询的效率。另在文献拍1 盯“8 1 中则提 出了利用索引机制来优化查询的方法,其主要目的都是希望能够快速且直接有效 的改善查询检索时的效率,降低查询所花费的时间或花费的成本。其中文献“1 提出了一种针对基于正则路径表达式的x m l 查询处理的方法,其利用d a t a g u i d e 对半结构化数据库进行查询公式化和查询最优化,并将它用在x v l l 文件的索引 机制里。文献1 0 川呲1 论述了关系数据查询重写的问题。 在x m l 查询中,不管x m l 是以怎样的方式映射到数据库中的,在查询x m l 时,都需要将x m l 各个元素按其语义进行连接,但以上优化算法在查询时连接 涉及很多个表且数据量大的情况下优化效果均不明显。作为一种查询优化技术, 物化视图己经在传统数据库的应用领域内得到了认可,我们可以考虑将物化视图 引入x m l 数据库的查询优化中,对于复杂的查询,将可能查询到的数据事先选 择、连接,形成x m l 的物化视图来优化x m l 查询。 1 3 论文的主要工作 针对以上所提到的研究现状,论文对x m l 查询的现状、x m l 查询语言、 面向查询的x m l 数据模型对查询语言的影响、x q u e r y 查询语言的查询处理过程 等进行了研究,综合x q u e r y 查询处理过程和x m l 数据模型的特点,设计了一 个基于x q u e r y 的x m l 查询平台,该平台由查询语句构造器、查询解析器、查 询执行器组成,可对广泛来源的x m l 数据执行查询等操作。 本文的主要工作如下: 1 、提出了基于x q u e r y 的x m l 查询平台体系结构,分为用户层、组件层、 数据层,以x q u e r y 解析器和查询执行器为核心,辅以查询语句构造器帮助用户 生成查询条件; 2 、提出了应用于x q u e r y 查询语句构造器的合成表示模型,该模型以单个 的结果元素为目标建立原子查询,将原子查询之间以相应的合成操作联系在一起 表示x q u e r y 查询; 3 、采用模式树解析x q u e r y 查询,将经常被查询的x m l 节点信息存储到 物化视图中,利用物化视图和用户查询的交叉部分,直接从物化视图中获取用户 的查询内容来实现查询优化。 河海大学硕士学位论文 基于x q u c r y 的x m l 查询优化平台研究与设计 1 4 论文组织 论文的第二章主要研究了x q u e r y 查询语言的基本数据类型、基本结构、表 达式,并分析了x q u e r y 查询处理过程,从而得出:在x q u e r y 中,任何查询都被 描述为一个简单的或是嵌套的表达式,表达式结构简单,但组合性强,能够实现 对各种y a v l l 数据源的复杂查询。 第三章主要介绍了x m l 查询及其查询语言,分析了面向查询的x m l 数据模型 及不同数据模型对查询语言的影响。 第四章详细描述了基于x q u e r y 的x m l 查询平台的设计原则和体系结构,采 用x q u e r y 查询语言进行查询,实现x m l 查询及其优化问题。 第五章详细描述了基于x q u e r y 的x m l 查询平台应用层、组件层、数据层的 设计,重点描述了应用层的x q u e r y 查询语句构造器的详细算法和组件层的物化 视图的查询优化算法。 第六章对基于x q u e r y 的x m l 查询平台的查询性能测试,从而得出结论:事 先对更多的表进行选择、连接和投影,优化的效果也越明显;随着查询涉及的表 的增加,优化性能越来越明显。 第七章总结论文,提出基于x q u e r y 的x m l 查询平台设计中进一步的工作。 d 河海大学硕士学位论文第二章x q u e r y 查询语言简介 第二章x q u e r y 查询语言简介 2 1x q u e r y 基本数据类型 x q u e r y 的基本数据类型是建立在s c h e m a 的数据类型之上并加以扩展的,这 些基本数据类型包括柏 x s :a n y t y p ex s :a n y c o m p l e x t y p e x s :a n y s i m p l e t y p e x s :a n y e l e m e n tx s :a n y a t t r i b u t e x s :a n v i t e mx s :a n v n o d ex s :d u r a t i o nx s ;d a t e t i m e x s :d a t e x s :g y e a r m o n t hx s :g y e a r 。 x s :g l v l o n t h d a yx s :g d a y x s :g m o n 血x s :s m n gx s :n o r m a l i z e d s t r i n g x s :t o k e n x s :l a n g u a g e x s :n c n f l m l e x s :i d x s :i d r e f x s :b o o l e a nx s :b a s e 6 4 b i n a r y x s :h e x b i n a r - rx s :f l o a tx s :d e c i m a l x s ;i n t e g e rx s :l o n g x s :;n tx s :s h e r tx s :b c t ex s :d o u b l e x s :a n y u r i x s :q n a m e 这些基本数据类型中,有7 种( x s :a n y t y p e ,x s :a n y c o m p t e x t y p e ,x s :a n y s i m p l e t y p e ,x s :a n y e t e m e n i ,x s :a n y a t t r i b u t e ,x s :a n y l t e m ,x s :a n y n o d e ) 是抽象数据类 型,因此我们也称这7 种数据类型为通配类型。这些基本数据数据类型具有如下 的关系图( 图2 1 ) : 图2 1x q u e r y 基本数据类型关系图 _ j _ 河海大学硕士学位论文 基于x q u e r y 的x m l 查询优化平台研究与设计 2 2x q u e r y 的基本结构及其特点 x q u e r y 是基于一种x m l 结构的表达式语言,它含有各种各样的表达式。 在x q u e r y 中,任何查询都被描述为一个简单的或是嵌套的表达式,表达式结构 简单,但组合性强,能够实现对各种x m l 数据源的复杂查询。 x q u e r y 查询模块主要由三部分组成:名字空间和模式声明,函数定义和查 询表达式。前两部分合起来称为查询序( q u e r yp r o l o g ) ,查询序不是必需的 1 4 1 。 看以下实例: f o r $ ii nd o c u m e n t ( ”b i b x m l ”) b i b v e n d o r b o o k w h e r e $ i p r i c e 8 0 r e t u r n $ i r i t l e ,$ i p r i c e 该实例主要是f l w o r 表达式的有机组合。t 0 r 语句用于将变量i 绑定到不同 的节点序列,然后通过语句进行传递。w h e r e 语句表示选择,r e t u r n 语句是对结 构的构造,花括号 ) 代表输出信息,以及要进行求值的信息。该例中的输出结果 是构造一个新的结果元素,其中包括提名和价格子元素。结果如下: j a v a 9 9 x q u e r y 中表达式有多种变化类型,可以生成大量不同的查询实例。如 “r e t u r n ”关键字后面的操作项本身可以被另一个f l w o r 表达式替代,即嵌入 一个该类表达式,可以不断将f l w o r 表达式首尾相接,以使x q u e r y 具有非常 丰富的表达能力。 x q u e r y 的特点如下: ( 1 ) 组合性:x q u e r y 语言通常是由多种表达式( 如路径表达式、条件表达 式以及元素构造函数等) 构成,它们是完全通用的,其中任何一个表达式的结果 都可用作另一个表达式的操作数。尽管x q u e r y 语言具有语义约束,但对于表达 式的构造方式却没有施加语义约束,每个表达式仅根据其操作数返回值,查询中 一6 一 河海大学硕士学位论文 第二章x q u e r y 查询语言简介 最外层表达式所返回的值就是整个查询的结果。组合性能使其实现简单或复杂的 模式匹配功能,如过滤,选择,重构等。 ( 2 ) 闭包n ”:x q u e r y 在查询数据模型中是闭包的。也就是说,x q u e r y 定 义为查询数据模型上所进行的转换,查询中的每个表达式或子表达式的输入和输 出都将形成查询数据模型的实例。x q u e r y 定义了查询数据模型,以及如何通过 输入的x m l 文档构造该模型的实例,并且或者以x m l 文档形式序列化输出。 闭包特性说明x q u e r y 是强类型转换语言,x q u e r y 数据模型基于x m l 模式,并 对x q u e r y 查询的输入、输出进行严格的控制。 ( 3 ) 普遍性:x q u e r y 语言能用于各种不同环境和使用多种类型的输入文档。 它适用于由模式、文档类型定义( d o c u m e n tt y p ed e f i n i t i o n , d t d ) 或其他方式 描述的文档。既能用于强类型环境( 己知输入输出类型且严格强制) ,也能用于 更加动态的环境( 可在执行时发现其输入输出类型,并且可存在未定义类型的数 据) 。此外,它还适应来自各种数据源的输入文档,而这些数据源包括网络上发 现的x m l 文件,己预先验证的x m l 数据库,诸如股票行情接收机的流式数据 源,以及来自数据库中的经过综合处理的x m l 数据等。 ( 4 ) 简洁性:x q u e r y 定义了运算符的语义,使其包括了某种隐式操作。例 如,将算术运算符( 如+ ) 施加于某个元素时,该运算符会自动提取该元素的数 值。类似地,将比较运算符( 如= ) 施加于一系列值时,则会自动地对该序列进 行迭代,寻找满足比较条件的一对值。 ( 5 ) 静态分析:x q u e r y 的查询分为静态分析和求值计算( 大致相当于程序 的编译和执行) 两个阶段。静态分析阶段是执行优化和检测某种错误的阶段,它 能够及时发现查询错误并进行反馈。 从x q u e r y 的以上特性我们不难看出,它较好的满足了目前x m l 对查询语 言的要求,能够实现对基于数据的、基于文档的以及混合型的x m l 数据源的查 询,提高用户查询效率。在后面章节我们将对x q u e r y 查询实现过程、实现算法、 查询优化等内容进行初步研究。 2 3x q u e r y 中的表达式 x q u e r y 是一个函数式功能性语言,它支持多种不同表达式。表达式是x q u e r y 河海大学硕士学位论文 基于x q u e r y 的x m l 查询优化平台研究与设计 语言的基础,x q u e r y 定义的表达式由关键字、符号以及操作数组成,并且操作 数也可以是表达式,也就是说允许表达式的嵌套1 1 6 1 。x q u e r y 还是一种强结构化 的语言,表达式中的操作数、算子、函数都必须遵循己经定义好的结构。下面就 从语法和功能的角度分别介绍x q u e r y 的主要表达式。 1 路径表达式 路径表达式是种定位节点的表达式,这种表达式基于x p a t h l 0 ( 目前已经兼 容最新的x p a t h 2 0 ) 的语法,以路径的方式遍历x m l 文件。x q u e r y 对文档结构 和全文检索方面的支持就主要体现在路径表达式中。 一个路径表达式确定x m l 数据中的一个节点集,表达式的开头指定x m l 文 件中的一个特定节点或一个包含其他子节点的父节点,再依据文件结构遍历整个 文档树,找到符合这个路径的数据。 路径表达式本身就具有很强的表达能力,很多情况下一个x p a t h 表达式就可 以代表一个查询( 在没有x q u e r y 标准之前,有一些x m l 查询就是利用x p a t h 来实 现的) 。例如下面查询: d o c u m e m ( ”b i b x m l ”) t i t l e 它的含义是在名为“b i b x m l ”的文档中查找所有t i t l e 节点。 2 元素构造 元素构造有点类似于s q l 6 p 的a s 子句,严格说不是一种表达式,但它确实 是查询表达式中不可缺少的一部分,所以也放在表达式这里来介绍。 x q u e r y 查询的结果一般是要产生一个新的元素,x q u e r y 允许以x m l 元素本 身作为查询表达式,使用x m l 标记法直接将查询到的元素包裹起来,构造出查 询结果。通过元素构造表达式我们可以基于原来的x m l 文件构造出新的x m l 文 件。它由开始标签,结束标签和由其它表达式得到的内容组成。这里只用一个例 子来说明如何表示元素构造。下面语句: $ f i t l e $ p r i c e 表明要求生成一个b o o k 节点,其属一 生y e a r 的值来自查询变量p u b l i s h y e a r ,而 它的予节点分别为查询变量t i t l e $ 1 p r i c e t 应节点。 一r 一 河海大学硕士学位论文第二章x q u e r y 查询语言简介 3 f l w o r 表达式 f l w o r 表达式是x q u e r y c 隧步发展起来的表达式,早期的标准中并没有o ( o r d e r b y ) 的部分。f l w o r 表达式相当于s q l 中的s e l e c t f r o m w h e r e 语句,它是f h f o r 、l e t 、w h e r e 、o r d e rb y ( 这个子句是在最 新版的x q u e r y 草案中定义的) 及r e t u r n 子句以特定的顺序组合起来构成的。 一个f l w o r 表达式的第一部分是f o r 或l e t 子旬,其值为一个或多个变量,变 量形式可以是其他表达式( 例如路径表达式) ;下一部分是w h e r e 子旬,w h e r e 子句中包含许多筛选条件,各个条件以a n d 或o r 来连接;接下来的o r d e rb y 部分定义排序规则:最后一部分是r e t u r n 子句,用来产生f l w o r 表达式的输 出,输出的结果可能是节点集或是一个原始值。简言之,f l w o r 表达式的含义 就是在f o r 或l e t 子句所划定的数据集中选出符合w h e r e 子句条件的数据,按 照o r d e r b y 次序排列并由砌! 瓜n 子句输出。另外在f l w o r 中还可以使用i n 子句来指定被查找的x m l 文档位置。 下面是一个f l w o r 表达式的例子: f o r $ bi nd o c u m e m ( ”b i b x m l ”) w h e r e $ b b o o k = 2 0 0 3r e t u r n $ b b o o k t i f l e 这个表达式的含义是在b i b x m l 文档中查找年份为2 0 0 3 的b o o k 节点,并输出 b o o k 节点的子节点t i t l e 。 4 条件表达式 条件表达式很简单,与一般程序语言中的条件表达式语法基本相同,为: ”i f ”( ”e x p r l ”) t h e n ”e x p r 2 ”e l s e ”e x p r 3 但是与大多数语言不同的是,x q u e r y 的e l s e 子旬是必须要出现的。这是因 为x e u e r y 中的每个表达式必须返回一个值,它不支持简单语句。 下面表达式: i f e m p t y ( b i b b o o k p r i c e ) t h e n 0 e l s e b i b b o o k p r i c e ) 表明如果不存在p r i c e 节点,则返回一个值为。的p f i c e 节点:存在则返回p r i c e 值。 5 量化表达式 x q u e r y e 0 提供两个表达式。s o m e 和e v e r y ,用来分别表示部分和全部的意 义,也就是存在量词和全称量词。例如下面表达式: f o r $ bi nd o c u m e n t ( ”b i b x m l ) b o o k o 一 塑塑查堂受主堂垡丝_ ;! 兰 苎! 兰坐! 型塑圣坠奎塑垡些! 堂竺塑! i 塑上 w h e r es o m e $ b a u t h o r f i r s t ”s t e v e n s ” r e t u r n $ b b o o k 表明只要在所有b o o k 节点中有一个a u m o r 子节点的值为”s t e v e n s ”a 返回这 个b o o k 节点。 以上的三种表达式:f l w o r 表达式、条件表达式和量化表达式都是用来对 查询信息进行联合和重组的表达式。 6 运算表达式 包括算术运算表达式、比较运算表达式、逻辑运算表达式和元组运算表达式。 这些表达式都与我们通常所见的表达式规则大致相同,主要是为查询添加了运算 的功能。 下面表达式 f o r $ bi nd o c u m e n t ( ”b i b x m l ”) b o o kw h e r e $ b p r i c e 1 0 0r e t u r n $ b t i f l e 表明查找p r i c e 小于1 0 0 的所有b 0 0 k 的t i t l e ,其中的w h e r e 部分就用到了比较表 达式来判断p r i c e 1 0 0 e 7 函数表达式 x q u e r y q b 己经内建了一些函数,比如d o c u m e m ,其实在上述例子中己经使 用到其中的一些。n n e m p t y ,a v g ,s l i m ,c o u n t 等还允许自定义函数,另外,x q u e c r 中还包括一些其他的处理,包括序列、排序、类型检查和数据类型等表达式,这 罩就不详细介绍了。 2 4 结构化的类型系统 x q u e “的类型体系从整体上说是结构化( s t r u c t u r a lt y p i n g ) 的类型系统, 但是其基本类型却是建立在命名类型( n a m e i n gt y p e ) 系统之上的。两者的区别 可以用下面的例子来表示。比如x s :b y t c 是x s :i n t e g e r 的子类型,这是命名类型的特 点之一,而假如我们定义的某个x m l 元素的类型是: e l e m e n t b o o k e l e m e n tb o o k e l e m e n tb o o k _ i d xs :s h o r t e l e m e n tb o o k i d x s :i m e g e r , e l e m e n ta u t h o r x s :a w c o m p l e x t y p e ? 显然,能够匹配第一个类型说明的v i l 元素也一定能够匹配第二个类型。 一1 n 一 河海大学硕士学位论文 第二章x q u e r y 查询语言简介 其理由如下: 1 x s :s h o r t 是x s :i n t e g e r 的子类型,这从图2 1 中就可以看出。 2 第二个类型声b j 目 e l e m e n ta u t h o r x s :a n y c o m p l e x t y p e 是一个可选的子元 素: 从这里我们可以观察出: 1 “x s :s h o r t 是x s :i n t e g e r 的子类型”体现出命名类型系统的特征:类型之间 的关系仅依赖类型的名称; 2 上述第2 点中出现的可选项则体现出了结构化类型系统的特征:他们不依 赖于名称上的是否相等来判断类型之间的关系,而是以类型定义的结构来决定。 3 即使两个类型说明都说明为b o o k 元素类型,虽然他们的名称相等但因 其结构的定义不同而不是相等的类型,而是子类型关系。 x q u e r y 的类型系统包括如下的几个部分: 1 x q u e r y 类型说明的语法:该语法规定x q u e r y 在定义类型时的语法规则, 它不属于x q u e r y 语言本身的语法规则部分,因此这里单独列举出来: 表2 2x q u e r y 类型说明语法 f 0 1 1t y p e d e c l a r a t i o nd e f i n e e l e m e n t q n a m e i n c n n a m e r r y p e ? ) d e f i n e a t t r i b u t eq n a m e i n c n a m e l t y o e ? f d e f i n e1 y p eq n a m e i n c n a m e f t y p e ? 1 f 0 2 1t y p eq 3 , p e u n i o n | t y p e b o t i t t y p e r e p e a t i t e m t y p e t y p e r e f t y p e p a r e n t h e s i z e d t y p e n o n e 0 3 1t y p e u n i o nt y p e 【t y p e 【0 4 】t y p e b o t h t y p e t y p e 0 5 1t y p e r e p e a tt y p et y p e o c c u r r e n c e l n d i c a t o r 【0 6 t y p e s e q u e n c e t y p e t y p e 【0 7 1 i t e m t y p ee l e m e n t r e f la t t r i b u t e r e f s i m p l et y p e 0 8 t y p e r e f t y p eq n a m e n c n a m e l f 0 9 t y p e p a r e n t h e s l z e dr t y p e r 1 0 1t y p e n o n e n o n e 【1 1 】s i m p t e t y p eq n a m e 1 2 1 a t t r i b u t e r e f a r t r i b u t e o n a m e i n c n a m e a t t r i b u t en a m e t e s t ( t y p e ? ) 1 3 1 e l e m e n t r e fe l e m e n tq n a m ei n c n a m e e l e m e n t n a m e t e s t ( t y p e ? ) f 1 4 1t y p e o c c u r r e n c e l n d i c a t o rs t a r i p l u s i q m a r k f 1 5 1 n a m e l s t q n a m e i n c n a m e i s t a r 时c n a m e c o l o n s t a r i s t a r c o l o n n c n a m e 通配类型:从上面的定义看,x q u e r y 的通配类型除t 7 e 抽象的通配类型 外,还支持名字测试的通配类型。共有3 种类型的通配名字: 河海大学硕士学也论立= 基于x q u e 掣的x m l 查问优化平台研宽与设计 :表示任意命名空间下的任意本地名称 n c n a m e + :表示n c n a m e 对应的命名空间下的任意本地名称 n c n a m e :表示任意命名空阿f 的本地名字为n c n a m e - 类型的实例和域:类型的宴例( i n s t a m c e ) 指对应一个类型定义f 由值:类 型的域( d o m a i n ) 指对应一个类型定义的所有实例的集合。比如1 是x si n t 舵一个 实例,而所有的整数就是x s :i a t 的域: 元素就是e 1 廿n e n tb o o k x s :a n y t y p e ) 的一个实例:注意同时它也是e l e m e n t :b o o k x s :a n y c o m p l e x f y p e 的一个实例。 我们可以用值一域关系来说明一个类型的实例是属下该类型的戡,并且计为 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论