專利名稱::一種擴(kuò)展XQuery的GML查詢方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種面向符合GML國際/國家標(biāo)準(zhǔn)的GML數(shù)據(jù)的查詢技術(shù),具體說是一種在擴(kuò)展W3C的XQuery標(biāo)準(zhǔn)之上、面向GML數(shù)據(jù)的查詢方法。
背景技術(shù):
:XQuery是W3C提出的用于不同XML數(shù)據(jù)資源訪問的查詢語言,它已廣泛地被不同的XML軟件廠商的軟件產(chǎn)品采用和遵循。目前,擴(kuò)展XQuery,以使其支持標(biāo)準(zhǔn)的空間操作,已成為面向GML查詢技術(shù)研究和應(yīng)用的熱點(diǎn)之一。美國明尼蘇達(dá)州大學(xué)Vatsavai等人提出了GML-QL,Boucelma等人提出了GQuery,國內(nèi)學(xué)者關(guān)繼紅教授提出了GQL等,這些方法均是通過擴(kuò)展XQuery功能操作函數(shù)的方式,實(shí)現(xiàn)基于XQuery查詢語句的空間關(guān)系運(yùn)算與空間分析運(yùn)算。但仔細(xì)分析上述方法,它們都存在如下問題l)現(xiàn)有擴(kuò)展XQuery的方法都無法將GML數(shù)據(jù)對(duì)象融入到路徑查詢運(yùn)算中;2)已有方法擴(kuò)充GML對(duì)象及空間操作函數(shù)的能力較差;3)現(xiàn)有方法難以應(yīng)用至商業(yè)化或開源XQuery引擎軟件的擴(kuò)展開發(fā)中。
發(fā)明內(nèi)容本發(fā)明所要解決的問題,在于克服現(xiàn)有技術(shù)存在的缺陷,提供一種擴(kuò)展XQuery的GML查詢方法。通過采用擴(kuò)展XQuery的路徑表達(dá)式規(guī)則與設(shè)計(jì)空間表達(dá)式相結(jié)合的方法,設(shè)計(jì)了Geo-XQuery查詢語言,提出了GML查詢處理流程。Geo-XQuery具有較強(qiáng)的兼容性和可擴(kuò)展性,可大大簡化查詢處理軟件的設(shè)計(jì)與開發(fā)工作。Geo-XQuery查詢語言的設(shè)計(jì)流程如下(1)擴(kuò)展XQuery表達(dá)式以支持GML數(shù)據(jù)類型通過對(duì)OGCGML3.X的數(shù)據(jù)類型的抽象分類,把其數(shù)據(jù)類型分為7類GML文檔節(jié)點(diǎn)(Doc聽ntNode)、要素節(jié)點(diǎn)(FeatureNode)、要素特性節(jié)點(diǎn)(FeaturePropertyNode)、要素成員節(jié)點(diǎn)(FeatureMemberNode)、幾何特性節(jié)點(diǎn)(GeometryPropertyNode)、幾何對(duì)象(Geometry0bjectNode)、空間閉包節(jié)點(diǎn)(Bo皿dingShapeNode)等。XQuery表達(dá)式主要包括路徑表達(dá)式、FLWOR表達(dá)式、布爾表達(dá)式、數(shù)值表達(dá)式、關(guān)系表達(dá)式以及等式表達(dá)式等,通過對(duì)這些表達(dá)式的BNF的分析布爾表達(dá)式、數(shù)值表達(dá)式、關(guān)系表達(dá)式以及等式表達(dá)式具有通用性,可以完全適用于針對(duì)GML對(duì)象的操作。FLWOR表達(dá)式由于具有結(jié)構(gòu)化編程處理的特性,也不需要做任何的擴(kuò)展;只有路徑表達(dá)式需要進(jìn)行支持GML對(duì)象類型的擴(kuò)展,路徑表達(dá)式對(duì)GML數(shù)據(jù)類型的支持主要通過GML類型測試(GMLKindTest)實(shí)現(xiàn)。GMLKindTest的定義如下<table>tableseeoriginaldocumentpage4</column></row><table>規(guī)則1:GMLKindTest包括GML元素名或通配符,以及GML的類型名稱。規(guī)則2:GMLNameOrWildcard定義采用XQuery中元素的定義方法。規(guī)則3:GMLTypeName包括GML基本對(duì)象類型。規(guī)則4:GeomertyObjectNode包括了所有的幾何對(duì)象實(shí)例。Geo-XQuery在路徑查詢中不僅要對(duì)GML對(duì)象類型進(jìn)行判斷外,還要在路徑關(guān)系的判斷上具有針對(duì)GML對(duì)象的特定運(yùn)算。因此,需要對(duì)ForwardAxis、ReverseAxis的定義進(jìn)行擴(kuò)展。Geo-XQuery擴(kuò)展的ReverseAxis的BNF定義如下<table>tableseeoriginaldocumentpage4</column></row><table>規(guī)貝U5:后向軸包括XQueryReverseAxis與Geo_XQueryReverseAxis。規(guī)貝U6:XQueryReverseAxis包括parent、ancestor、preceding-sibling、preceding以及ancestor_or_self。規(guī)貝U7:Geo-XQueryReverseAxis的操作對(duì)應(yīng)于GML的對(duì)象FeatureNode、FeatureMemberNode、GeometryPropertyNode以及GeometryObjectNode具有相應(yīng)的路徑運(yùn)算方法。規(guī)則8:FeaturePathQueryReverseAxis包括了獲取父親FeatureNode、獲取父親FeatureMemberNode、獲取前一FeatureNode以及獲取同級(jí)FeatureNode。由于FeatureNode與FeatureMemberNode、GeometryPropertyNode以及GeometryObjectNode等兀素可會(huì)g具有多層嵌套的關(guān)聯(lián)關(guān)系,因此GetParentFeature,GetParentFeatureMember即等同于XQueryReverseAxis的parent或ancestor。而GetPreSiblingsFeature貝U等同于XQueryReverseAxis的preceding-sibling或preceding。規(guī)則9:FeatureMemberPathQueryReverseAxis包括獲取嵌套該FeatureMemberNode的FeatureNode兀素(等同于XQueryReverseAxis的parent)、獲取嵌套FeatureNode兀素的FeatureMemberNode兀素(等同于XQueryReverseAxis的ancestor)以及獲取同級(jí)的FeatureMemberNode元素。規(guī)貝U10:GeometryPropertyPathQueryReverseAxis包括獲取FeatureMemberNode、FeatureNode、PreSiblingsGeometryPropertyNode等兀素的操作。規(guī)貝U11-GeometryObjectPathQueryReverseAxis包括獲取FeatureMembe:rNode、FeatureNode、PreSiblingsGeometryObjecNodet等兀素的操作。Geo_XQuery擴(kuò)展的ForwardAxis的BNF定義如下5規(guī)則1218相對(duì)于規(guī)則511,主要用于處理Geo-XQuery在前向軸(ForwardAxis)的GML對(duì)象的操作。(2)設(shè)計(jì)支持空間關(guān)系運(yùn)算的表達(dá)式空間查詢表達(dá)式的BNF定義如下6、ji①s(、/二、/、;。①「qo^p①曰o①3ssunqTSS①NS3)=(、、、、、、APJ①doJdAJio①3ssunc-T,①,f3、二、、、、、;o①「qo&s曰o①ca①3、、)=(、、、、、、J①q曰①s①JInB①dssunqTSS①,①f3::、、、、9PON.SqIgs9.;nnls9dpITq。sc-、二、、、、、、①J5B①in①f3、、)=s,fxy力JBiiiJO,JAJ①r5q3-Bn-:l,o①「c-QAJ:l,①日0①3s,fxy力JBiiiJO,JAJ①r5q3-Bn-A:l,J①doJn-AJ:l,①日0①3(、、、、、、賓。ii。j、、、、、、、、sunqTSISUJInoJ、二、、、、、、JI①SIJOIPUBPU①os①p、、:、、、、2nqT-ns、二、、、、、;UBPU①os①p、二、、、、、、puq。、、)=s,fxy力.JBiiijojAJ①r5s,fxy力.JBiiijojAJ①r5s,fxyp>.JBiiijojAJ①r5s,fxyl3jsijcy<table>tableseeoriginaldocumentpage7</column></row><table>規(guī)貝U19描述了Geo-XqueryExpr的查詢語句結(jié)構(gòu),由XQueryExpr表達(dá)式與SpatialExpr表達(dá)式構(gòu)成,SpatialExpr為可選項(xiàng)。不包含SpatialExpr表達(dá)的Geo-XqueryExpr等同于一般的XQuery表達(dá)式。規(guī)則20描述了SpatialE鄧r表達(dá)式的語句結(jié)構(gòu),由基本空間運(yùn)算表達(dá)式(BasicSpatialExpr)、空間分禾斤表達(dá)式(SpatialAnalyExpr)、空間關(guān)系表達(dá)式(SpatialRelationExpr)三類表達(dá)式構(gòu)成。規(guī)則21描述了BasicSpatialE鄧r表達(dá)式的語句結(jié)構(gòu),它由空間運(yùn)算操作符(S0perator)以及GML中的空間對(duì)象(SpatialObject)構(gòu)成。規(guī)則22描述了BasicSpatialExpr表達(dá)式的操作符的結(jié)構(gòu)。規(guī)則23描述了BasicSpatialExpr表達(dá)式的空間對(duì)象的結(jié)構(gòu),其成員為GeometryObjectNode或其子類對(duì)象。(3)設(shè)計(jì)Geo-XQuery的語法編譯器與語義解析器Geo-XQuery語法編譯器檢查空間運(yùn)算子句的詞法、語法是否正確。詞法檢查由Scanner類完成。Scanner檢查空間運(yùn)算子句中是否出現(xiàn)非法的符號(hào)或者未定義的關(guān)鍵字。如果空間運(yùn)算子句的語法正確,則以String的形式返回token。語法檢查由Parser類完成。Geo-XQuery語義解析器首先,通過對(duì)空間運(yùn)算子句的語義解析、將其轉(zhuǎn)換為標(biāo)準(zhǔn)的XQuery子句。然后,交由標(biāo)準(zhǔn)的XQuery引擎執(zhí)行。具體步驟如下①檢查用戶給出的空間運(yùn)算算子是否與GML數(shù)據(jù)類型相匹配。如基本空間基本運(yùn)算表達(dá)式中使用空間運(yùn)算操作符為_FUNC_GET_ENVEL0PE,而空間對(duì)象類型為PrimitivePointNode,則給出"空間對(duì)象與運(yùn)算算子不匹配"的提示信息。②檢查空間運(yùn)算表達(dá)式的組成元素空間運(yùn)算操作符、空間對(duì)象的順序與數(shù)量是否正確。如空間分析運(yùn)算的_FUNC_BUFFER操作符是否在Geomerty0bjectNode對(duì)象之后、WKT參數(shù)之前等。③利用XQuery可擴(kuò)展內(nèi)建輔助函數(shù)的特性,在XQEngine引擎中擴(kuò)展空間關(guān)系運(yùn)算函數(shù)。本發(fā)明,一種擴(kuò)展XQuery的GML查詢方法,步驟如下(A)Geo-XQuery語句解析;其具體的處理流程分為①解析Geo-XQuery查詢表達(dá)式,依據(jù)解析的結(jié)果生成功能操作樹;②讀入GML模式文件,解析并生成模式樹;③依據(jù)模式樹,對(duì)Geo-XQuery查詢樹進(jìn)行規(guī)范化的校驗(yàn),包括類型引用和類型檢查;④生成結(jié)果類型樹。(B)Geo-XQuery接口映射。其具體的處理流程可分為①編譯Geo-XQuery查詢語句,生成數(shù)據(jù)操作的功能與函數(shù)接口(DMAccesorsFunction&0pr,以下簡稱"DM");②DM與Geo-XQuery的查詢接口體系進(jìn)行映射。(C)Geo-XQuery查詢執(zhí)行。依據(jù)Geo-XQuery的查詢接口方法,調(diào)用GML數(shù)據(jù)操作操作的API接口執(zhí)行條件查詢。本發(fā)明針對(duì)傳統(tǒng)XQuery標(biāo)準(zhǔn)不支持GML地理查詢的局限以及現(xiàn)有GML查詢方法多樣化的弊端,設(shè)計(jì)了擴(kuò)展XQuery查詢對(duì)象和支持空間處理操作的Geo-XQuery以及基于Geo-XQuery語法的語義解析過程。在此基礎(chǔ)上,通過擴(kuò)展傳統(tǒng)XQuery引擎的數(shù)據(jù)處理接口實(shí)現(xiàn)了Geo-XQuery的查詢處理。本發(fā)明對(duì)于本原GML數(shù)據(jù)庫系統(tǒng)的構(gòu)建、GML數(shù)據(jù)的查詢處理等研究和應(yīng)用領(lǐng)域,意義顯著。圖1GML數(shù)據(jù)模型的抽象表達(dá);圖2Geo-XQuery語句設(shè)計(jì)方法;圖3Geo-XQuery語法檢查流程;圖4Geo-XQuery語義解析流程;圖5Geo-XQuery查詢處理流程。具體實(shí)施例方式下面結(jié)合附圖,對(duì)本發(fā)明做詳細(xì)說明。實(shí)施例以包含路徑運(yùn)算、條件運(yùn)算以及空間運(yùn)算的FL0WR查詢語句為例,展示Geo-XQuery語句與標(biāo)準(zhǔn)XQuery語句的轉(zhuǎn)換。依據(jù)規(guī)則20對(duì)空間運(yùn)算的分類基本空間運(yùn)算、空間關(guān)系運(yùn)算與空間分析運(yùn)算,設(shè)計(jì)三類表達(dá)式如下(1)表達(dá)式1:路徑運(yùn)算+條件運(yùn)算+基本空間運(yùn)算輸入的Geo-XQuery語句<table>tableseeoriginaldocumentpage8</column></row><table>說明該語句的空間運(yùn)算表達(dá)式子句為_FUNC_GET_DMENSIONGeometryObjectNode::$b解析器對(duì)上述Geo-XQuery語句進(jìn)行語法、語義解析,語句被翻譯成標(biāo)準(zhǔn)的XQuery語句,其中g(shù)etDimension對(duì)應(yīng)于—FUNC—GE乙D頂ENSI0NGeometry0bjectNode::$b空間運(yùn)算表達(dá)式,該方法通過XQEngine引擎擴(kuò)展的內(nèi)置函數(shù)實(shí)現(xiàn)。<table>tableseeoriginaldocumentpage9</column></row><table>(2)表達(dá)式2:路徑運(yùn)算+屬性運(yùn)算+空間關(guān)系運(yùn)算輸入的Geo-XQuery語句for$b//Geomet:ryObjectNode::FA/Geometry0bjectNode::FB//Geometry0bjectNode::FCfor$c//Geometry0bjectNode::FA'//GeometryObjectNode::FB'//GeometryObjectNode::FCwhereGeometryObjectNode::$b—EXPR—IS—WITHINGeometryObjectNode::$creturnGeometryObjectNode::$b經(jīng)過解析器的語法、語義的檢查,轉(zhuǎn)換后的標(biāo)準(zhǔn)XQuery語句<table>tableseeoriginaldocumentpage9</column></row><table>(3)表達(dá)式3:路徑運(yùn)算+屬性運(yùn)算+空間分析運(yùn)算輸入的Geo-XQuery語句for$b//Geometry0bjectNode::FA/Geometry0bjectNode::FBlet$c:=$b//Geometry0bjectNode::FCwhere$c〃@gml:id='Rl'and$b〃@gml:id='R2'returnGeometryObjectNode::$b—FUNC—INTERSECTIONGeometryObjectNode::$c經(jīng)過解析器的語法、語義檢查,轉(zhuǎn)換后的標(biāo)準(zhǔn)XQuery語句<table>tableseeoriginaldocumentpage9</column></row><table>權(quán)利要求一種擴(kuò)展XQuery的GML查詢方法,步驟如下(A)Geo-XQuery語句解析,其具體的處理流程分為①解析Geo-XQuery查詢表達(dá)式,依據(jù)解析的結(jié)果生成功能操作樹;②讀入GML模式文件,解析并生成模式樹;③依據(jù)模式樹,對(duì)Geo-XQuery查詢樹進(jìn)行規(guī)范化的校驗(yàn),包括類型引用和類型檢查;④生成結(jié)果類型樹;(B)Geo-XQuery接口映射,其具體的處理流程可分為①編譯Geo-XQuery查詢語句,生成數(shù)據(jù)操作的功能與函數(shù)接口(DMAccesorsFunction&Opr,以下簡稱“DM”);②DM與Geo-XQuery的查詢接口體系進(jìn)行映射;(C)Geo-XQuery查詢執(zhí)行依據(jù)Geo-XQuery的查詢接口方法,調(diào)用GML數(shù)據(jù)操作操作的API接口執(zhí)行條件查詢。全文摘要本發(fā)明公開了一種擴(kuò)展XQuery的GML查詢方法,步驟為(A)Geo-XQuery語句解析,(B)Geo-XQuery接口映射,(C)Geo-XQuery查詢執(zhí)行。本發(fā)明針對(duì)傳統(tǒng)XQuery標(biāo)準(zhǔn)不支持GML地理查詢的局限以及現(xiàn)有GML查詢方法多樣化的弊端,設(shè)計(jì)了擴(kuò)展XQuery查詢對(duì)象和支持空間處理操作的Geo-XQuery以及基于Geo-XQuery語法的語義解析過程。在此基礎(chǔ)上,通過擴(kuò)展傳統(tǒng)XQuery引擎的數(shù)據(jù)處理接口實(shí)現(xiàn)了Geo-XQuery的查詢處理。文檔編號(hào)G06F17/30GK101794305SQ20101011484公開日2010年8月4日申請(qǐng)日期2010年2月26日優(yōu)先權(quán)日2010年2月26日發(fā)明者吳薇,孫寶華,孫玉婷,張書亮,鄒紅,閭國年,馬少松申請(qǐng)人:南京師范大學(xué)