專利名稱:一種可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法,屬于網(wǎng)絡(luò)數(shù)據(jù)處理技術(shù)領(lǐng)域。
背景技術(shù):
隨著大量可擴(kuò)展標(biāo)記語言(eXtensible Markup Language)數(shù)據(jù)的出現(xiàn),可擴(kuò)展標(biāo)記語言不再單純的是為了增強(qiáng)應(yīng)用程序?qū)木W(wǎng)絡(luò)上獲得的文檔的解釋和操作能力,它已經(jīng)逐步成為網(wǎng)上數(shù)據(jù)交換和數(shù)據(jù)表示的標(biāo)準(zhǔn),而如何有效地存儲和查詢這些可擴(kuò)展標(biāo)記語言數(shù)據(jù)成為學(xué)術(shù)界研究的一個熱點(diǎn)。目前,針對可擴(kuò)展標(biāo)記語言文檔樹的查詢提出了許多語言,它們共同的核心技術(shù)之一就是利用路徑表達(dá)式來表示和檢索用戶所指定的結(jié)構(gòu)模式,實(shí)現(xiàn)可擴(kuò)展標(biāo)記語言的結(jié)構(gòu)查詢。因此,為了查詢可擴(kuò)展標(biāo)記語言文檔樹,尤其是結(jié)構(gòu)查詢,研究人員提出了很多種可擴(kuò)展標(biāo)記語言文檔樹的編碼方法,即為可擴(kuò)展標(biāo)記語言文檔樹中的每一個結(jié)點(diǎn)賦予一個唯一的編碼,以便能夠通過編碼直接判斷結(jié)點(diǎn)元素或?qū)傩栽诳蓴U(kuò)展標(biāo)記語言文檔樹中的父子關(guān)系或祖先-后裔關(guān)系,而不用對原文檔進(jìn)行遍歷。
目前對可擴(kuò)展標(biāo)記語言文檔樹進(jìn)行編碼的方法主要是基于區(qū)間的編碼方法,在文獻(xiàn)“Quanzhong Li and Bongki Moon.Indexing and Querying XML Data for Regular PathExpressions.In the Proceedings of the 27th International Conference on Very LargeData Bases.Roma,Italy,September 11-14,2001.pp361-370”中公開了基于區(qū)間的編碼方法,主要利用了可擴(kuò)展標(biāo)記語言文檔有序的特點(diǎn),根據(jù)每一個元素結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔中的字典順序位置給每一個結(jié)點(diǎn)賦予一個編碼。在該編碼方法中可擴(kuò)展標(biāo)記語言文檔樹中的每一個結(jié)點(diǎn)被賦予一個二元組<order,size>。其中,order為結(jié)點(diǎn)的擴(kuò)展先序遍歷序號,它的取值是非連續(xù)的,而size為結(jié)點(diǎn)的后裔范圍。因此,可擴(kuò)展標(biāo)記語言文檔樹中的任意兩個結(jié)點(diǎn)A和D是祖先-后裔關(guān)系,當(dāng)且僅當(dāng)A.order<D.order且D.order+D.size<=A.order+A.size,即祖先結(jié)點(diǎn)A的區(qū)間編碼中包含有后裔結(jié)點(diǎn)D的區(qū)間編碼。
各種區(qū)間編碼的基本思想是一樣的,主要是根據(jù)編碼所在的整數(shù)區(qū)間來判斷結(jié)點(diǎn)之間的關(guān)系。區(qū)間編碼的主要問題總結(jié)如下(1)在判斷結(jié)點(diǎn)之間的關(guān)系時使用了不等的比較操作而不是等于判斷,當(dāng)結(jié)點(diǎn)很多時就不容易判斷結(jié)點(diǎn)間的關(guān)系,其道理同關(guān)系數(shù)據(jù)庫系統(tǒng)中的等值連接一樣;(2)編碼形式比較復(fù)雜,一個可擴(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)至少需要兩個整數(shù)才能確定其在可擴(kuò)展標(biāo)記語言文檔樹中的位置。為了判斷兩個結(jié)點(diǎn)是否是父子關(guān)系,還必須提供這兩個結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔樹中的層次信息,而結(jié)點(diǎn)的層次信息并不包含在區(qū)間編碼中。
發(fā)明內(nèi)容
本發(fā)明的目的是針對已有技術(shù)中區(qū)間編碼存在的問題,提出了一種可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法,主要目的是(1)用更簡單的編碼表示更多的結(jié)點(diǎn)位置信息,結(jié)點(diǎn)的編碼中包含該結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔樹中的層次信息,同時也包含該結(jié)點(diǎn)在其兄弟結(jié)點(diǎn)中的先后次序關(guān)系等信息;(2)利用更簡單的、計算機(jī)更容易實(shí)現(xiàn)的操作來判斷可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)間的父子關(guān)系或祖先一后裔關(guān)系。
本發(fā)明提出的可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法,包括以下步驟(1)對可擴(kuò)展標(biāo)記語言文檔樹進(jìn)行編碼(a)設(shè)定可擴(kuò)展標(biāo)記語言文檔樹的根結(jié)點(diǎn)的編碼為l;(b)若結(jié)點(diǎn)D是可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)A的最左兒子結(jié)點(diǎn),即第一個兒子結(jié)點(diǎn),且結(jié)點(diǎn)A的編碼是整數(shù)P,則結(jié)點(diǎn)D的編碼為整數(shù)2P;(c)若結(jié)點(diǎn)R為可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)L的直接右兄弟結(jié)點(diǎn),即第一個右兄弟結(jié)點(diǎn),且結(jié)點(diǎn)L的編碼是整數(shù)Q,則結(jié)點(diǎn)R的編碼為整數(shù)2Q+1;(2)對可擴(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)關(guān)系進(jìn)行判斷(a)在可擴(kuò)展標(biāo)記語言文檔樹中,任意一個結(jié)點(diǎn)N的編碼為一個大于等于1的整數(shù)NUM,將編碼記為N.NUM;(b)設(shè)可擴(kuò)展標(biāo)記語言文檔樹中根結(jié)點(diǎn)的層次為1,則任意結(jié)點(diǎn)N在文檔樹中的層次=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)2中零的個數(shù)+1;(c)設(shè)結(jié)點(diǎn)N為可擴(kuò)展標(biāo)記語言文檔樹中任意一個結(jié)點(diǎn),則結(jié)點(diǎn)N在兄弟結(jié)點(diǎn)中的位置=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)2中最右邊的連續(xù)1的個數(shù);(d)設(shè)結(jié)點(diǎn)x和結(jié)點(diǎn)Y為可擴(kuò)展標(biāo)記語言文檔樹中任意兩個結(jié)點(diǎn),若等式 成立,則在可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)X是結(jié)點(diǎn)Y的祖先。
本發(fā)明提出的可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法,使用的編碼方法同已有的區(qū)間編碼相比,非常簡單,只用一個正整數(shù)表達(dá)結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔樹中的層次、兄弟結(jié)點(diǎn)的先后次序等位置關(guān)系。因此本發(fā)明方法非常適合計算機(jī)實(shí)現(xiàn),而且使用方便。
圖1是本發(fā)明方法中可擴(kuò)展標(biāo)記語言文檔樹的結(jié)構(gòu)示意圖。
圖2是本發(fā)明方法的一個編碼實(shí)施例。
具體實(shí)施例方式
本發(fā)明提出的可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法中,首先對可擴(kuò)展標(biāo)記語言文檔樹進(jìn)行編碼(a)設(shè)定可擴(kuò)展標(biāo)記語言文檔樹的根結(jié)點(diǎn)的編碼為1;(b)若結(jié)點(diǎn)D是可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)A的最左兒子結(jié)點(diǎn),即第一個兒子結(jié)點(diǎn),且結(jié)點(diǎn)A的編碼是整數(shù)P,則結(jié)點(diǎn)D的編碼為整數(shù)2P;(c)若結(jié)點(diǎn)R為可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)L的直接右兄弟結(jié)點(diǎn),即第一個右兄弟結(jié)點(diǎn),且結(jié)點(diǎn)L的編碼是整數(shù)Q,則結(jié)點(diǎn)R的編碼為整數(shù)2Q+1。;然后對可擴(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)關(guān)系進(jìn)行判斷(a)在可擴(kuò)展標(biāo)記語言文檔樹中,任意一個結(jié)點(diǎn)N的編碼為一個大于等于1的整數(shù)NUM,將編碼記為N.NUM;(b)設(shè)可擴(kuò)展標(biāo)記語言文檔樹中根結(jié)點(diǎn)的層次為1,則任意結(jié)點(diǎn)N在文檔樹中的層次=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)2中零的個數(shù)+1;(c)設(shè)結(jié)點(diǎn)N為可擴(kuò)展標(biāo)記語言文檔樹中任意一個結(jié)點(diǎn),則結(jié)點(diǎn)N在兄弟結(jié)點(diǎn)中的位置=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)2中最右邊的連續(xù)1的個數(shù);(d)設(shè)結(jié)點(diǎn)X和結(jié)點(diǎn)Y為可擴(kuò)展標(biāo)記語言文檔樹中任意兩個結(jié)點(diǎn),若等式 成立,則在可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)X是結(jié)點(diǎn)Y的祖先。其中運(yùn)算符號 表示對其中的實(shí)數(shù)R取下整,而運(yùn)算符號“<<”和“>>”分別表示二進(jìn)制運(yùn)算中左移位和右移位操作。
在對可擴(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)進(jìn)行編碼時,具體的實(shí)施過程可以按照從上到下、從左到右的順序?qū)蓴U(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)進(jìn)行編碼。
上述方法中文檔樹的結(jié)構(gòu)如圖1所示。當(dāng)對一個可擴(kuò)展標(biāo)記語言文檔樹進(jìn)行編碼時,首先賦予文檔樹的根結(jié)點(diǎn)的編碼為1,這是整個可擴(kuò)展標(biāo)記語言文檔樹中其他結(jié)點(diǎn)編碼的基礎(chǔ)。然后按照從上到下、從左到右的順序?qū)蓴U(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)依次進(jìn)行編碼。
圖2是一個可擴(kuò)展標(biāo)記語言文檔樹的編碼實(shí)施例,對該可擴(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)進(jìn)行編碼的詳細(xì)步驟如下1、點(diǎn)的編碼為12、結(jié)點(diǎn)的最左兒子結(jié)點(diǎn)的編碼為2*1=2;3、結(jié)點(diǎn)2的直接右兄弟的編碼為2*2+1=5;4、結(jié)點(diǎn)5的直接右兄弟的編碼為2*5+1=11;5、結(jié)點(diǎn)5的最左兒子結(jié)點(diǎn)的編碼為2*5=10;6、結(jié)點(diǎn)10的直接右兄弟的編碼為2*10+1=21;7、結(jié)點(diǎn)21的直接右兄弟的編碼為2*21+1=43。
根據(jù)上面的編碼結(jié)果,可以非常方便地判斷結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔樹中各節(jié)點(diǎn)之間的位置關(guān)系和祖先-后裔關(guān)系1、由于(1)2=1、(5)2=101、(21)2=10101,所以結(jié)點(diǎn)1、5和21的編碼的二進(jìn)制表示中0的個數(shù)加1就分別表示這三個結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔樹中的層次為1、2和3;2、由于(2)2=10、(5)2=101、(11)2=1011,所以結(jié)點(diǎn)2、5和11的編碼的二進(jìn)制表示中最右邊的連續(xù)1的個數(shù)就分別表示這三個兄弟結(jié)點(diǎn)在可擴(kuò)展標(biāo)記語言文檔樹中的先后次序關(guān)系為0、1和2;3、由于等式 成立,所以結(jié)點(diǎn)5是結(jié)點(diǎn)21的祖先;4、由于等式 不成立,所以結(jié)點(diǎn)2不是結(jié)點(diǎn)21的祖先。
權(quán)利要求
1.一種可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法,其特征在于該方法包括以下步驟(1)對可擴(kuò)展標(biāo)記語言文檔樹進(jìn)行編碼(a)設(shè)定可擴(kuò)展標(biāo)記語言文檔樹的根結(jié)點(diǎn)的編碼為1;(b)若結(jié)點(diǎn)D是可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)A的最左兒子結(jié)點(diǎn),即第一個兒子結(jié)點(diǎn),且結(jié)點(diǎn)A的編碼是整數(shù)P,則結(jié)點(diǎn)D的編碼為整數(shù)2P;(c)若結(jié)點(diǎn)R為可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)L的直接右兄弟結(jié)點(diǎn),即第一個右兄弟結(jié)點(diǎn),且結(jié)點(diǎn)L的編碼是整數(shù)Q,則結(jié)點(diǎn)R的編碼為整數(shù)2Q+1;(2)對可擴(kuò)展標(biāo)記語言文檔樹中的結(jié)點(diǎn)關(guān)系進(jìn)行判斷(a)在可擴(kuò)展標(biāo)記語言文檔樹中,任意一個結(jié)點(diǎn)N的編碼為一個大于等于1的整數(shù)NUM,將編碼記為N.NUM;(b)設(shè)可擴(kuò)展標(biāo)記語言文檔樹中根結(jié)點(diǎn)的層次為1,則任意結(jié)點(diǎn)N在文檔樹中的層次=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)2中零的個數(shù)+1;(c)設(shè)結(jié)點(diǎn)N為可擴(kuò)展標(biāo)記語言文檔樹中任意一個結(jié)點(diǎn),則結(jié)點(diǎn)N在兄弟結(jié)點(diǎn)中的位置=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)2中最右邊的連續(xù)1的個數(shù);(d)設(shè)結(jié)點(diǎn)X和結(jié)點(diǎn)Y為可擴(kuò)展標(biāo)記語言文檔樹中任意兩個結(jié)點(diǎn),若等式 成立,則在可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)X是結(jié)點(diǎn)Y的祖先。
全文摘要
本發(fā)明涉及一種可擴(kuò)展標(biāo)記語言文檔樹中結(jié)點(diǎn)關(guān)系的判斷方法,屬于網(wǎng)絡(luò)數(shù)據(jù)處理技術(shù)領(lǐng)域。首先對文檔樹進(jìn)行編碼設(shè)定可擴(kuò)展標(biāo)記語言文檔樹的根結(jié)點(diǎn)的編碼為1;若結(jié)點(diǎn)D是結(jié)點(diǎn)A的最左兒子結(jié)點(diǎn),其編碼是整數(shù)P,則結(jié)點(diǎn)D的編碼為整數(shù)2P;若結(jié)點(diǎn)R為結(jié)點(diǎn)L的直接右兄弟結(jié)點(diǎn),其編碼是整數(shù)Q,則結(jié)點(diǎn)R的編碼為整數(shù)2Q+1;根據(jù)編碼有結(jié)點(diǎn)N在兄弟結(jié)點(diǎn)中的位置=結(jié)點(diǎn)N的編碼的二進(jìn)制表示(N.NUM)
文檔編號G06F17/30GK1758254SQ20051011579
公開日2006年4月12日 申請日期2005年11月11日 優(yōu)先權(quán)日2005年11月11日
發(fā)明者馮建華, 李國良, 周立柱, 錢乾, 廖雨果, 塔娜 申請人:清華大學(xué)