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