亚洲黄色高清电影|国产精品V无码A片在线看吃奶|亚洲色图视频二区|综合97色色色色婷婷|激情在线一区国产精品不|99人妻在线精品|欧美一级片免费在线播放|全球最大成人色情网站|哪里有A片看在线无码高清|在线免费在线观看黄片网站

計算機應用論文

基于擴展XQuery引擎的空間數(shù)據(jù)流查詢方法研究

時間:2022-10-07 04:57:27 計算機應用論文 我要投稿
  • 相關(guān)推薦

基于擴展XQuery引擎的空間數(shù)據(jù)流查詢方法研究

  下面是YJBYS小編為大家?guī)淼挠嬎銠C應用論文范文——基于擴展XQuery引擎的空間數(shù)據(jù)流查詢方法研究,歡迎閱讀!

基于擴展XQuery引擎的空間數(shù)據(jù)流查詢方法研究

  摘要:針對目前XML數(shù)據(jù)流處理中通常采用的查詢語言XPath和XQuery均不支持空間運算,無法應用到空間數(shù)據(jù)流處理技術(shù)中的問題,設計了一種通過擴展現(xiàn)有商業(yè)化XQuery引擎功能基礎上的空間數(shù)據(jù)流檢索方法。

  關(guān)鍵詞:可擴展標記語言數(shù)據(jù)流; XQuery;空間數(shù)據(jù)

  隨著Web應用中數(shù)據(jù)交換越來越頻繁,產(chǎn)生了大量不間斷的數(shù)據(jù)流。由于XML已經(jīng)成為Internet環(huán)境中數(shù)據(jù)表示和交換的標準,數(shù)據(jù)流大量以XML格式表現(xiàn)。如何從不間斷的XML數(shù)據(jù)流中匹配、抽取和轉(zhuǎn)換部分數(shù)據(jù)流以滿足商務應用的需求成為當前國際數(shù)據(jù)庫領域的一個研究熱點。目前針對XML數(shù)據(jù)流的處理研究有很多,但研究的對象均是普遍意義上的XML數(shù)據(jù)流,對于以XML格式表現(xiàn)的空間信息及查詢中需要空間關(guān)系運算的數(shù)據(jù)流處理研究較少。研究如何在目前的XML數(shù)據(jù)流處理中支持空間運算有著重要意義。

  1、存在的問題

  在目前針對XML數(shù)據(jù)流的研究中,其基本思想都是將用XPath表示的查詢表達式轉(zhuǎn)換為狀態(tài)樹型自動機,處理程序以流的方式接收并處理XML 文檔,看其滿足哪一個狀態(tài)節(jié)點的要求以觸發(fā)查詢匹配操作。如果滿足所有狀態(tài)節(jié)點的要求,則向用戶返回相關(guān)的文檔或結(jié)果[1]。由于XPath表達復雜查詢的局限性,W3C制定了專門針對XML的查詢語言規(guī)范XQuery。XQuery 語言的核心是XPath 和FLWOR(for、let、where、order by和return) 表達式,復雜的XQuery查詢語句很難用合適的狀態(tài)機來表達。將XQuery直接改造成XML數(shù)據(jù)流的查詢語言也引出了大量研究[2~5]。目前標準的XPath和XQuery規(guī)范均不支持空間數(shù)據(jù)類型及空間運算,且空間分析功能算法復雜。通過這些規(guī)范自身的數(shù)據(jù)類型定義和基本函數(shù)庫來實現(xiàn)復雜空間數(shù)據(jù)類型以及空間分析功能的擴展很困難,使得這些研究很難應用到包含空間運算的數(shù)據(jù)流查詢中。要在XML數(shù)據(jù)流查詢中支持空間運算,需要先擴展XQuery規(guī)范以支持空間數(shù)據(jù)操作函數(shù)。自定義實現(xiàn)支持空間運算的XQuery引擎是理想的方法。文獻[6,7]中已提出了直接擴展XQuery以支持空間功能的方法。但自定義實現(xiàn)XQuery引擎需要完整的詞法分析、語法分析、查詢規(guī)范化以及翻譯執(zhí)行等,使得這些方法均停留在理論階段,很難實際應用。

  針對這些問題,本文設計了一種在商業(yè)化引擎基礎上擴展XQuery空間功能的方法,然后以事件流處理方式接收XML文檔以實現(xiàn)空間數(shù)據(jù)流查詢的方法。

  2、XQuery引擎空間功能的擴展

  擴展XQuery引擎以支持空間運算,除了自定義實現(xiàn)支持空間運算的XQuery引擎方法外,還可以利用現(xiàn)有的XQuery引擎進行擴展。目前的商業(yè)化XQuery引擎均提供使用外部函數(shù)的功能擴展方法,如目前知名的商業(yè)化XQuery引擎Saxon提供的功能擴展機制可以允許在XQuery查詢語句中調(diào)用Java或?.NET方法作為外部函數(shù)。其使用方法簡單,只需要在XQuery查詢語句中聲明外部函數(shù)所在的名稱空間就可以調(diào)用外部方法。這為XQuery引擎實現(xiàn)包括空間分析的查詢提供了便捷的途徑。

  2.1空間數(shù)據(jù)類型的表達方法

  采取調(diào)用外部方法來擴展XQuery引擎的功能,不可避免地會產(chǎn)生空間數(shù)據(jù)作為參數(shù)傳遞的問題。以采用Java語言實現(xiàn)擴展方法為例。雖然容易用Java對象表達各種空間數(shù)據(jù)類型,但由于XQuery引擎規(guī)范本身不支持直接以Java對象表達的空間數(shù)據(jù)類型,為了使XQuery語句中支持空間數(shù)據(jù)類型并能夠使空間數(shù)據(jù)在Java類和XQuery引擎中傳遞,需要找到一種合適的空間數(shù)據(jù)表達方法。

  GML是一個用XML schema描述的XML語法,用來進行空間和非空間的地理信息建模、傳輸和存儲。GML已成為Web應用中所接受并容易理解的一種空間信息的交換格式。由于GML文檔本身也是一個XML文檔,可以用DOM對象document來表達,在Saxon的XQuery實現(xiàn)中能夠支持DOM對象的傳遞,采用GML表達空間數(shù)據(jù)以支持空間數(shù)據(jù)在XQuery引擎與外部Java類之間的傳遞成為自然的選擇。將GML在XQuery引擎與外部方法之間進行傳遞,需要引入GML的schema描述。在GML規(guī)范中,feature.xsd定義了抽象地理特征模型,geometry.xsd定義了具體的幾何形狀信息,提供了點(point)、線(line)、多邊形(polygon)、點集(multipoint)、線集(multiline)和多邊形集(multipolygon)等基本幾何圖形以及復合類型(complex type)的幾何圖形。在本方法中只用到了空間數(shù)據(jù)類型的幾何定義,所以引入geometry.xsd即可。在XQuery語句中定義如下:

  import schema namespace GML="http://schemas.opengis.net/gml/"

  at" geometry.xsd";

  引入GML的schema后,可以將GML進行描述的空間變量定義為schema限制的element變量作為參數(shù)進行傳遞,定義如下:

  Let?$p=doc(′test.xml′)/schema-element(GML:linestring)

  2.2空間功能的擴展

  定義了空間數(shù)據(jù)的表達方式后,對空間運算功能的實現(xiàn)在外部方法中進行。參照文獻[6]中定義的空間方法,本文定義了SPATIAL類封裝,實現(xiàn)了部分空間方法。由于Saxon的XQuery 實現(xiàn)中,支持對Java類的靜態(tài)方法調(diào)用以及實例化對象方法調(diào)用,但對于需要實例化對象的方法調(diào)用相對復雜。為了方便調(diào)用,所有空間方法均定義為SPATIAL類的靜態(tài)成員方法。定義如下:

  public class SPATIAL{

  public static boolean WithIn(Document a, Document b){…}

  public static boolean Toughes(Document a, Document b){…}

  public static boolean Crosses(Document a, Document b){…}

  ……}

  實現(xiàn)了上述定義空間方法后,通過該類就可以擴展Saxon的XQuery引擎。擴展方法很簡單,只需在XQuery語句中聲明該空間類的名稱空間,在查詢語句中需要空間運算的地方調(diào)用該類的各種方法即可。比如要使用空間包含的方法,先聲明名稱空間:declare namespace SPATIAL=“java:myclass.SPATIAL”;然后只需在調(diào)用方法前加入名稱空間即可,如SPATIAL:Disjoin(…)。

  另外需要注意的是,如果擴展的方法返回值不是簡單數(shù)據(jù)類型則需要進一步處理。本文方法只是返回空間的包含相交等關(guān)系是否為真,是簡單的布爾類型,不需要進一步處理。

  3、基于擴展引擎的空間數(shù)據(jù)流查詢方法

  擴展后的XQuery引擎可以處理帶有空間信息的XML文檔。但由于目前的XQuery引擎通常被設計來處理在內(nèi)存中裝配好的源XML文檔,對于動態(tài)的數(shù)據(jù)流而言無法直接處理。為了能夠?qū)臻g數(shù)據(jù)流進行處理,還需要借助SAX(simple API for XML)之類基于事件的XML解析程序輔助處理,以避免在采取操作之前需要存儲文檔的所有內(nèi)容。

  本文原文

  SAX是事件驅(qū)動的XML處理器,允許正在讀取XML文檔時處理該文檔。文檔的讀入過程也就是SAX的解析過程。其觸發(fā)的事件主要包括:startDocument表示文檔開始;endDocument表示文檔結(jié)束; startElement表示元素開始;endElement表示元素結(jié)束;characters表示字符數(shù)據(jù)。將SAX與Saxon組合處理以XML格式表達空間數(shù)據(jù)流時,需要在相應的事件處理程序中調(diào)用XQuery查詢語句。以一簡單的物流監(jiān)控為例,監(jiān)控中心希望監(jiān)控車輛在某指定時段內(nèi)的指定區(qū)域的行駛是否符合預設路線。假設車輛每隔5 min將該時段內(nèi)的行駛軌跡及狀態(tài)信息以XML文檔格式形成不間斷的數(shù)據(jù)流發(fā)送給監(jiān)控中心。其數(shù)據(jù)格式DTD定義如下:

  〈xsd: complexType name="DTStateHistory"〉

  〈xsd:element name=ID type="xsd:Integer"〉

  〈xsd:sequence〉

  ?〈xsd:element name="StateUnit" type="DTstateUnit"minOccurs=

  "1" maxOccurs="unbounded"/〉

  〈/ xsd:sequence〉

  〈/xsd complexType〉

  〈xsd: complexType name="DTStateUnit"〉

  〈xsd:elementname="Time" type="xsd:Date" /〉

  〈xsd:element name="Position" type="GML:Point" /〉

  …(其他必要屬性信息)

  〈/xsd complexType〉

  用SAX和Saxon組合處理該數(shù)據(jù)流,當數(shù)據(jù)流不斷到達時,SAX處理程序監(jiān)聽數(shù)據(jù)流并觸發(fā)相應的事件。在元素DTStateHistory的endElement事件到達時,將該段數(shù)據(jù)流轉(zhuǎn)換為XML文檔存入內(nèi)存,以DOM數(shù)據(jù)類型表示作為Saxon引擎的數(shù)據(jù)源,由Saxon引擎執(zhí)行預先設定的查詢語句。查詢的XQuery語句如下:

  declare namespace SPATIAL="java:myclass.SPATIAL"

  declare variable ?$Route as GML: MultiLineString external

  for ?$StateUnit in datasource("cachedatastream")/DTStateHistory//StateUnit

  let ?$p=?$StateUnit/schema-element(GML:point)

  where fn:timeWithin(?$StateUnit/Time, Duration) and SPATIAL:Disjoin(?$p, ?$Route)

  return 〈alerttime〉{?$StateUnit/Time}〈/alerttime〉

  〈alertPosition〉{?$p}〈/alertPosition〉

  該查詢語句檢索存放在緩存中的XML文檔,并將位置信息封裝到一個element作為參數(shù)與設定的路徑進行匹配。匹配工作由外部的SPATIAL類的Disjoin方法完成。如果該點不在預訂路線上則返回該點的時間和位置信息到新的XML文檔。隨著事件的不斷觸發(fā),程序不斷緩存數(shù)據(jù)并調(diào)用該語句進行處理,實現(xiàn)對數(shù)據(jù)流的處理。

  4、結(jié)束語

  本文研究了一種處理XML空間數(shù)據(jù)流的方法。該方法通過先擴展XQuery引擎的空間運算功能,然后結(jié)合XML流式處理方法對空間數(shù)據(jù)流進行處理,為空間數(shù)據(jù)流的查詢和檢索提供了一種簡便的途徑。在今后的工作中將擴展數(shù)據(jù)關(guān)聯(lián)分析及趨勢分析等數(shù)據(jù)挖掘等功能,結(jié)合XML數(shù)據(jù)流挖掘技術(shù)的研究,研究基于XQuery的空間數(shù)據(jù)流挖掘方法。

  參考文獻:

  [1]高軍,楊冬青,唐世渭,等.基于樹自動機的XPath在XML數(shù)據(jù)流上的高效執(zhí)行[J].軟件學報,2005,16(2):223-232.

  [2]KOCH C, SCHERZINGER S, SCHWEIKARDT N, ?et al?. Schema-based scheduling of event processors and buffer minimization for queries on structured data stream[C]//Proc of the30th VLDB Conference. Toronto:Eprint arXiv, 2004:228-239.

  ?[3]FEGARAS L. The joy of SAX[C]//Proc of the 1st International Workshop on XQuery Implementation, Experience, and Perspectives. Paris:Maison de al Chimie,2004:61-66.

  ?[4]LI Xiao-gang, AGRAWAL G. Efficient evaluation of XQuery over streaming data[C]//Proc of the 31st VLDB Conference. Trondheim, Norway:[s.n.], 2005:265-276.

  [5]BOSE S, FEGARAS L. Data stream management for historical XML data[C]//Proc of SIGMOD. New York:ACM Press,2004:239-250.

  [6]GUAN Ji-hong. GQL: extending XQuery to query GML documents[J].Geospatial Information Science,2006,9(2):118-126.

  [7]楊穎,韓忠明,楊磊. 數(shù)據(jù)流的核心技術(shù)與應用發(fā)展研究綜述[J].計算機應用研究,2005,22(11):4-7.

  [8]CHUNG W. An extension of XQuery for moving objects over GML[C]//Proc ofInternational Conference on Information Technology: Coding and Computing. Las Vegas:IEEE Computer Society,2004:142-147.

  [9]Writing extension functions in Java, Saxon documentation[EB/OL].[2006].http://www.saxonica.com/documentation/extensibility/functions.html.

  [10]RUSSELL G. TypEx:a type based approach to XML stream querying[C]//Proc of International Workshop on the Web and Databases (WebDB).UK:ACM SIGMOD,2003:55-60.

  [11]於荔,鮑培明,張書亮.GML空間數(shù)據(jù)的對象化存儲研究[J].南京師范大學學報:工程技術(shù)版,2006:6(1):67-71.

  [12]蘭小機,閭國年,劉德兒,等.基于XQuery的GML查詢語言研究[J].測繪科學,2005,30(6):99-102.

【基于擴展XQuery引擎的空間數(shù)據(jù)流查詢方法研究】相關(guān)文章:

搜索引擎營銷研究10-08

基于3D打印技術(shù)的空間槽輪機構(gòu)的研究與模型制作10-06

基于網(wǎng)格的聚類方法研究10-05

美術(shù)資源導入虛擬現(xiàn)實引擎的方法研究10-05

基于車聯(lián)網(wǎng)的安全研究報告10-07

基于哲學研究的理論下的想象論文10-08

基于教育游戲的認知學習研究10-08

基于結(jié)構(gòu)化P2P的分布式數(shù)據(jù)流系統(tǒng)的查詢處理模型10-07

基于游客感知的西安曲江RBD功能研究10-08