计算机应用论文

基于扩展XQuery引擎的空间数据流查询方法研究

时间:2022-10-07 04:57:27 计算机应用论文 我要投稿
  • 相关推荐

基于扩展XQuery引擎的空间数据流查询方法研究

  下面是YJBYS小编为大家带来的计算机应用论文范文——基于扩展XQuery引擎的空间数据流查询方法研究,欢迎阅读!

基于扩展XQuery引擎的空间数据流查询方法研究

  摘要:针对目前XML数据流处理中通常采用的查询语言XPath和XQuery均不支持空间运算,无法应用到空间数据流处理技术中的问题,设计了一种通过扩展现有商业化XQuery引擎功能基础上的空间数据流检索方法。

  关键词:可扩展标记语言数据流; XQuery;空间数据

  随着Web应用中数据交换越来越频繁,产生了大量不间断的数据流。由于XML已经成为Internet环境中数据表示和交换的标准,数据流大量以XML格式表现。如何从不间断的XML数据流中匹配、抽取和转换部分数据流以满足商务应用的需求成为当前国际数据库领域的一个研究热点。目前针对XML数据流的处理研究有很多,但研究的对象均是普遍意义上的XML数据流,对于以XML格式表现的空间信息及查询中需要空间关系运算的数据流处理研究较少。研究如何在目前的XML数据流处理中支持空间运算有着重要意义。

  1、存在的问题

  在目前针对XML数据流的研究中,其基本思想都是将用XPath表示的查询表达式转换为状态树型自动机,处理程序以流的方式接收并处理XML 文档,看其满足哪一个状态节点的要求以触发查询匹配操作。如果满足所有状态节点的要求,则向用户返回相关的文档或结果[1]。由于XPath表达复杂查询的局限性,W3C制定了专门针对XML的查询语言规范XQuery。XQuery 语言的核心是XPath 和FLWOR(for、let、where、order by和return) 表达式,复杂的XQuery查询语句很难用合适的状态机来表达。将XQuery直接改造成XML数据流的查询语言也引出了大量研究[2~5]。目前标准的XPath和XQuery规范均不支持空间数据类型及空间运算,且空间分析功能算法复杂。通过这些规范自身的数据类型定义和基本函数库来实现复杂空间数据类型以及空间分析功能的扩展很困难,使得这些研究很难应用到包含空间运算的数据流查询中。要在XML数据流查询中支持空间运算,需要先扩展XQuery规范以支持空间数据操作函数。自定义实现支持空间运算的XQuery引擎是理想的方法。文献[6,7]中已提出了直接扩展XQuery以支持空间功能的方法。但自定义实现XQuery引擎需要完整的词法分析、语法分析、查询规范化以及翻译执行等,使得这些方法均停留在理论阶段,很难实际应用。

  针对这些问题,本文设计了一种在商业化引擎基础上扩展XQuery空间功能的方法,然后以事件流处理方式接收XML文档以实现空间数据流查询的方法。

  2、XQuery引擎空间功能的扩展

  扩展XQuery引擎以支持空间运算,除了自定义实现支持空间运算的XQuery引擎方法外,还可以利用现有的XQuery引擎进行扩展。目前的商业化XQuery引擎均提供使用外部函数的功能扩展方法,如目前知名的商业化XQuery引擎Saxon提供的功能扩展机制可以允许在XQuery查询语句中调用Java或?.NET方法作为外部函数。其使用方法简单,只需要在XQuery查询语句中声明外部函数所在的名称空间就可以调用外部方法。这为XQuery引擎实现包括空间分析的查询提供了便捷的途径。

  2.1空间数据类型的表达方法

  采取调用外部方法来扩展XQuery引擎的功能,不可避免地会产生空间数据作为参数传递的问题。以采用Java语言实现扩展方法为例。虽然容易用Java对象表达各种空间数据类型,但由于XQuery引擎规范本身不支持直接以Java对象表达的空间数据类型,为了使XQuery语句中支持空间数据类型并能够使空间数据在Java类和XQuery引擎中传递,需要找到一种合适的空间数据表达方法。

  GML是一个用XML schema描述的XML语法,用来进行空间和非空间的地理信息建模、传输和存储。GML已成为Web应用中所接受并容易理解的一种空间信息的交换格式。由于GML文档本身也是一个XML文档,可以用DOM对象document来表达,在Saxon的XQuery实现中能够支持DOM对象的传递,采用GML表达空间数据以支持空间数据在XQuery引擎与外部Java类之间的传递成为自然的选择。将GML在XQuery引擎与外部方法之间进行传递,需要引入GML的schema描述。在GML规范中,feature.xsd定义了抽象地理特征模型,geometry.xsd定义了具体的几何形状信息,提供了点(point)、线(line)、多边形(polygon)、点集(multipoint)、线集(multiline)和多边形集(multipolygon)等基本几何图形以及复合类型(complex type)的几何图形。在本方法中只用到了空间数据类型的几何定义,所以引入geometry.xsd即可。在XQuery语句中定义如下: