專利名稱:一種將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及XML查詢優(yōu)化領(lǐng)域,尤其涉及一種有位置謂詞的XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法。
背景技術(shù):
XML因其具有自描述性,可擴展性以及開放性等優(yōu)點使其得到了廣泛的應(yīng)用,隨著XML數(shù)據(jù)的不斷增長,對大規(guī)模XML數(shù)據(jù)的管理需求也日漸迫切,出現(xiàn)了 XML數(shù)據(jù)庫等商業(yè)產(chǎn)品。XML數(shù)據(jù)的查詢因此而顯得尤為重要,而XML查詢標(biāo)準之一 XPath也得到了廣泛研究和實現(xiàn)。因XML文檔半結(jié)構(gòu)化的特性使得傳統(tǒng)的關(guān)系數(shù)據(jù)庫的查詢算法對其并不適用,因此相繼提出了一些針對XPath查詢的算法。目前研究比較廣泛的有小枝模式匹配算法,即將XPath查詢表示成一棵用節(jié)點和邊進行標(biāo)記的小枝模式查詢樹,XPath查詢也就變成了在XML數(shù)據(jù)中找出所有和這個小枝模式匹配的數(shù)據(jù)片段。目前有不少有關(guān)小枝模式查詢處理的方法,每種方法都有其小枝模式的內(nèi)部表示,但針對有位置謂詞的小枝模式查詢方法涉及甚少。在XPath中,帶位置謂詞的表達式的查詢語義是求滿足特定結(jié)構(gòu)和位置條件的節(jié)點集。特別值得注意的是,表達式外是否有圓括號,和位置謂詞的求值有著密切的關(guān)系。例如,XPath查詢語句Ql和Q2:Ql=//bookstore/book [title= “計算機” and price<30] /author [2]Q2= (//bookstore/book [title= “計算機” and price<30]/author) [2]Ql表示在圖書庫中查找書名為《計算機》且售價小于30元每本書的第二作者信息,位置求職是相對于book這個步而言的;Q2表示在書名為《計算機》且售價小于30元的書的所有作者信息中取第二個作者信息,位置求職是相對于XML數(shù)據(jù)文檔的根。由這兩個例子可以看出加圓括號和不加圓括號的求職語義是完全不同的,這也需要在查詢處理時區(qū)別對待。在實際應(yīng)用中,位置謂詞查詢的使用場合非常廣泛,如何在小枝模式中有效地處理位置謂詞查詢有著其重要的意義。
發(fā)明內(nèi)容
為解決上述中存在的問題與缺陷,本發(fā)明提供了一種將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法。所述技術(shù)方案如下:一種將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法,包括: A將帶有位置謂詞的XPath查詢語句轉(zhuǎn)換為抽象語法樹AST ;B將抽象語法樹AST中不同類型的節(jié)點對象轉(zhuǎn)換成小枝模式樹形結(jié)構(gòu)中的節(jié)點對象。本發(fā)明提供的技術(shù)方案的有益效果是:小枝模式樹形數(shù)據(jù)結(jié)構(gòu)以及小枝模式轉(zhuǎn)換方法在一定程度上優(yōu)化了小枝模式查詢;且本發(fā)明提出的在位置謂詞節(jié)點對象中存儲其參考位置的方法,在小枝查詢時,能夠快速定位相對求值節(jié)點,加快了小枝模式查詢處理中對位置查詢的求值。
圖1是將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法流程圖;圖2是為查詢Ql的小枝模式查詢樹結(jié)構(gòu)圖;圖3是為查詢Q2的小枝模式查詢樹結(jié)構(gòu)圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述:本實施例提供了一種將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法的方法,如圖1所示該方法包括:步驟10將帶有位置謂詞的XPath查詢語句轉(zhuǎn)換為抽象語法樹AST (AbstractSyntax Tree);上述XPath查詢語句通過詞法、語法分析并簡化為抽象語法樹。步驟20將抽象語法樹AST中不同類型的節(jié)點對象轉(zhuǎn)換成小枝模式樹形結(jié)構(gòu)中的節(jié)點對象。自頂向下遍歷抽象語法樹,每種AST節(jié)點對象調(diào)用其對應(yīng)的轉(zhuǎn)換接口,將其轉(zhuǎn)換成小枝模式查詢樹中對應(yīng)的節(jié)點對象。其過程具體包括如下:步驟201定義一個ASTVisitor抽象類,通過一轉(zhuǎn)換接口實現(xiàn)對所有AST節(jié)點轉(zhuǎn)換的總控制,和通過AST節(jié)點類型調(diào)用對應(yīng)的具體轉(zhuǎn)換虛接口。步驟202實現(xiàn)一個繼承ASTVisitor抽象類的具體轉(zhuǎn)換類,并實現(xiàn)每個具體的轉(zhuǎn)換接口,根據(jù)AST節(jié)點對象的組成部分,分別制定轉(zhuǎn)換規(guī)則,將其轉(zhuǎn)換為正確的小枝模式查詢節(jié)點對象。步驟203在查詢過程中,計算并標(biāo)記出位置謂詞PQNode節(jié)點的參考位置集。先在轉(zhuǎn)換類型中定義一個集合變量Level,用來存儲轉(zhuǎn)換過程中的當(dāng)前模式樹層次集,為了支持路徑的集合運算,當(dāng)前樹層次值需要用集合來存儲。樹層次采用從O開始計數(shù),每轉(zhuǎn)換生成一個有效的定位步EQNode節(jié)點,樹層次就加1,特殊的查詢節(jié)點生成時,樹的層次不變,如SQNode節(jié)點不包含在計數(shù)內(nèi)。接著在謂詞轉(zhuǎn)換時,對于有位置謂詞的語法樹節(jié)點,其參考位置集用RefLevel存儲,其值等于位置謂詞應(yīng)用到的表達式的上一層模式樹層次集Level。抽象語法樹AST =XPath查詢語句通過詞法語法分析后,得到符合要求的語法樹,然后通過簡化形成本發(fā)明的抽象語法樹,它體現(xiàn)了查詢語句的樹狀語法結(jié)構(gòu)。抽象語法樹中的節(jié)點類型是按照XPath標(biāo)準中表達式類型進行定義的。每個類型的表達式都有其特定的組成部分,故AST中每個節(jié)點類型也有其對應(yīng)的組成部分。如導(dǎo)航節(jié)點由步節(jié)點集合組成;步節(jié)點由軸,節(jié)點測試等組成;謂詞節(jié)點由謂詞表達式和其限定的表達式組成;邏輯表達式節(jié)點由其包含的項節(jié)點集合組成。小枝模式查詢樹:由查詢節(jié)點和邊組成的樹形結(jié)構(gòu)。查詢節(jié)點主要包括SQNode,F(xiàn)QNode,PQNode 和 EQNode。
SQNode:表示AND/OR邏輯表達式以及UNION集合表達式的節(jié)點。FQNode:描述XPath查詢中函數(shù)的節(jié)點。PQNode:描述位置謂詞信息以及值比較謂詞中的比較運算符和常量值信息的節(jié)點。EQNode:描述一個定位步信息的節(jié)點,主要包含了定位步的軸、自身節(jié)點、謂詞節(jié)點和next節(jié)點。邊描述了小枝模式查詢樹中自頂向下前后兩個查詢節(jié)點間的關(guān)系,包括:next關(guān)系:兩個查詢節(jié)點間先后關(guān)系,后者是前者的下一個定位步。謂詞關(guān)系:兩個查詢節(jié)點間后者是前者的謂詞節(jié)點。包含關(guān)系:后者是前者中的一個包含項節(jié)點。圖2和圖3分別展示了查詢Ql和Q2對應(yīng)的小枝模式查詢樹結(jié)構(gòu)圖。查詢Ql和Q2的區(qū)別是Q2多了一個括號限定,在抽象語法樹AST中將位置謂詞前的括號內(nèi)容整體作為一個位置謂詞應(yīng)用到的表達式,Q2中“//bookstore/book[title= “計算機”and price〈30]/author”被看作位置謂詞“2”應(yīng)用到的表達式,位置謂詞的參考位置集就等于這個表達式的上一層,也就是文檔根的模式樹層次集{O}。Ql中,位置謂詞“2”應(yīng)用到的表達式是author步,其參考位置集等于author步的上一層book步所在的模式樹層次集{2}。其中://, bookstore、/, book、and、/, author> /, title、/, price、表不除 PQNode 以外的查詢節(jié)點QNode ;=, 2,pos、=,計算機和〈,30表示PQNode含有比較操作符,具體的值,位置謂詞標(biāo)記;虛線表不謂詞關(guān)系;箭頭表不next關(guān)系;實線表包含關(guān)系。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法,包括:其特征在于,所述方法包括: A將帶有位置謂詞的XPath查詢語句轉(zhuǎn)換為抽象語法樹AST ; B將抽象語法樹AST中不同類型的節(jié)點對象轉(zhuǎn)換成小枝模式樹形結(jié)構(gòu)中的節(jié)點對象。
2.根據(jù)權(quán)利要求1所述的將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法,其特征在于,所述XPath查詢語句通過詞法、語法分析并簡化為抽象語法樹。
3.根據(jù)權(quán)利要求1所述的將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法,其特征在于,所述步驟B還包括: 通過一轉(zhuǎn)換接口實現(xiàn)對AST節(jié)點轉(zhuǎn)換的總控制,和通過AST節(jié)點類型調(diào)用對應(yīng)的具體轉(zhuǎn)換虛接口; 根據(jù)AST節(jié)點對象的組成部分,制定轉(zhuǎn)換規(guī)則,將AST中不同類型的節(jié)點對象轉(zhuǎn)換為正確的小枝模式查詢節(jié)點對象; 計算并標(biāo)記出位置謂詞PQNode節(jié)點的參考位置集。
全文摘要
本發(fā)明公開了一種將XPath查詢轉(zhuǎn)換為樹形數(shù)據(jù)結(jié)構(gòu)的查詢優(yōu)化方法,所述方法包括將帶有位置謂詞的XPath查詢語句轉(zhuǎn)換為抽象語法樹AST;將抽象語法樹AST中不同類型的節(jié)點對象轉(zhuǎn)換成小枝模式樹形結(jié)構(gòu)中的節(jié)點對象。本發(fā)明提出了一種小枝模式樹形數(shù)據(jù)結(jié)構(gòu)以及小枝模式轉(zhuǎn)換方法,在一定程度上優(yōu)化了小枝模式查詢;且本發(fā)明提出的在位置謂詞節(jié)點對象中存儲其參考位置的方法,在小枝查詢時,能夠快速定位相對求值節(jié)點,加快了小枝模式查詢處理中對位置查詢的求值。
文檔編號G06F17/30GK103198133SQ20131012595
公開日2013年7月10日 申請日期2013年4月12日 優(yōu)先權(quán)日2013年4月12日
發(fā)明者陳琳, 程燕, 陳海濤, 符文君, 王奎 申請人:同方知網(wǎng)(北京)技術(shù)有限公司