欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于多模態(tài)索引結(jié)構(gòu)的xml查詢方法

文檔序號(hào):6614490閱讀:254來源:國(guó)知局
專利名稱:一種基于多模態(tài)索引結(jié)構(gòu)的xml查詢方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)設(shè)計(jì)與應(yīng)用技術(shù)領(lǐng)域,涉及計(jì)算機(jī)軟件、信息檢索技術(shù)、 半結(jié)構(gòu)化數(shù)據(jù)處理技術(shù)、人工智能技術(shù)以及XML描述語言,特別涉及一種基 于多模態(tài)索引結(jié)構(gòu)的XML査詢方法。
背景技術(shù)
可擴(kuò)展標(biāo)記語言-XML是Internet上一種新的數(shù)據(jù)表示、存儲(chǔ)和交換標(biāo)準(zhǔn)。 近年來,隨著XML相關(guān)技術(shù)的迅速發(fā)展,網(wǎng)絡(luò)上出現(xiàn)了越來越多的XML格式 的數(shù)據(jù)。由于XML數(shù)據(jù)的嵌套結(jié)構(gòu)和模式信息不全的特點(diǎn),傳統(tǒng)的基于樹的 遍歷的方法不能滿足在線用戶的及時(shí)性查詢要求,這對(duì)高效的査詢XML數(shù)據(jù) 查詢提出了嚴(yán)峻的挑戰(zhàn)。由此,使得XML數(shù)據(jù)的索引技術(shù)對(duì)XML查詢處理起 著至關(guān)重要的作用。
目前面向XML的査詢語言有XQuery, XPath, XML-QL等等。其中基于 XPath語言的查詢表達(dá)式在實(shí)際中應(yīng)用非常廣泛。這些查詢語言的共同特點(diǎn)是 基于REP來查詢XML數(shù)據(jù)。為了有效的支持針對(duì)REP的査詢處理和優(yōu)化, 對(duì)XML數(shù)據(jù)的各種索引技術(shù)被提出,其中有代表性的XML索引結(jié)構(gòu)大體上 可分為兩類基于結(jié)構(gòu)連接的索引和路徑索引。然而,大多數(shù)文獻(xiàn)針對(duì)它們 設(shè)計(jì)的索引結(jié)構(gòu)要么采用路徑法,要么采用逐步結(jié)構(gòu)聯(lián)結(jié)對(duì)XML文檔進(jìn)行査 詢,沒能將兩種方法的優(yōu)勢(shì)和特定索引結(jié)構(gòu)相結(jié)合用于判斷元素結(jié)點(diǎn)之間的 AD, PC和擁有(BR)關(guān)系。
針對(duì)基于多模態(tài)索引結(jié)構(gòu)的XML查詢方法,申請(qǐng)人經(jīng)過查新,檢索到與
本發(fā)明緊密相關(guān)的專利1個(gè),國(guó)內(nèi)文獻(xiàn)1篇,國(guó)外相關(guān)文獻(xiàn)l篇
(一) 相關(guān)專利(名稱、申請(qǐng)人或發(fā)明者)1個(gè)
1.專利名稱 一種基于XML數(shù)據(jù)的高效路徑索引方法 專利申請(qǐng)人復(fù)旦大學(xué)
(二) 國(guó)內(nèi)相關(guān)文獻(xiàn)(標(biāo)題、作者或機(jī)構(gòu)、出處)l篇 1.標(biāo)題基于DOM的XML數(shù)據(jù)庫(kù)的索弓,I技術(shù)研究
作者賈福林,王國(guó)仁
出處計(jì)算機(jī)研究與發(fā)展,2004, 41(1): 176-186.
(三) 國(guó)外相關(guān)文獻(xiàn)(標(biāo)題、作者或機(jī)構(gòu)、出處)1篇
1. Title: Indexing and Querying XML Data for Regular Path Expressions Author(s): Li Q and Moon B.
Source: Proceedings of the 27 International Conference on Very Large Databases. Rome. San Francisco: Morgan Kaufinaml Publishers, September 11-14, 2001:361-370.
對(duì)上述文獻(xiàn)分析如下-
在專利1中,發(fā)明人提出了一種新型的XML路徑索引-UD(k, l)索引,這 是一種高效的近似索引結(jié)構(gòu),數(shù)據(jù)節(jié)點(diǎn)的歸類根據(jù)其k長(zhǎng)度的向上路經(jīng)和1 長(zhǎng)度的向下路徑。該索引全面的利用了XML數(shù)據(jù)節(jié)點(diǎn)的向上局部相似度和向 下局部相似度的信息,所以能夠用來高效的執(zhí)行路徑表達(dá)式,特別是用來執(zhí)
行分支路徑表達(dá)式。
國(guó)內(nèi)文獻(xiàn)[l]中,賈福林等人提出了基于DOM的xml數(shù)據(jù)庫(kù)的索引技術(shù), 該技術(shù)利用名字外延作為索引項(xiàng)的路徑連接索引,引用索引和值索引來確定 給定元素之間的父子關(guān)系,并通過使用基于名字外延的值索引來處理帶有謂 詞的XPath查詢,以很小的代價(jià)減少了連接操作的次數(shù)。然而,基于名字外 延的索引系統(tǒng)很難判斷給定元素結(jié)點(diǎn)間的AD關(guān)系,而且對(duì)于長(zhǎng)XPath査詢 路徑的處理由于需要較多的外延連接從而會(huì)降低索引査詢的性能;
國(guó)外文獻(xiàn)[l]中,Q丄i等人提出了3種索引結(jié)構(gòu)元素索引,屬性索引和 結(jié)構(gòu)索引。通過元素索引可以找到所有具有相同元素名字的元素實(shí)例。通過 屬性索引可以找到具有相同屬性名的屬性實(shí)例。結(jié)構(gòu)索引用來查找某一給定 元素的父元素和子元素。然而,基于這種設(shè)計(jì)提出的快速確定XML文檔層次 結(jié)構(gòu)中,祖先后代關(guān)系的編碼機(jī)制很難從一般的祖先后代關(guān)系區(qū)分出父親孩 子關(guān)系,因此很難建立結(jié)構(gòu)索引。祖先后代關(guān)系可以從父親孩子關(guān)系演化而 來,反之則不能。這將無法支持表示路徑中父子關(guān)系的元素/元素的連接操作。 同樣,元素/屬性間的連接操作也存在同樣的問題。

發(fā)明內(nèi)容
為了克服上述現(xiàn)有技術(shù)存在的缺陷或不足,本發(fā)明提供了一種基于多模 態(tài)索引結(jié)構(gòu)的XML查詢方法,它既可以有效地支持結(jié)構(gòu)連接的計(jì)算以快速地 判斷任意結(jié)點(diǎn)之間的子孫后代關(guān)系,也可以有效地支持基于名字外延的路徑 連接算法以快速地判斷任意結(jié)點(diǎn)之間的父子關(guān)系,然后還可以快速地支持對(duì) 包含擁有關(guān)系的小枝査詢,使得對(duì)于一條長(zhǎng)度為n的XPath絕對(duì)路徑査詢, 最多只需要n/2-l次外延連接,從而有效提高了對(duì)XML數(shù)據(jù)的査詢速度。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
本發(fā)明中提出的一種基于多模態(tài)索引結(jié)構(gòu)的XML査詢方法主要由多模 態(tài)XML索引構(gòu)建,索引數(shù)據(jù)存儲(chǔ),査詢路徑分割和基于多模態(tài)XML索引的 外延連接四個(gè)模塊構(gòu)成。多模態(tài)XML索引構(gòu)建和索引數(shù)據(jù)存儲(chǔ)模塊負(fù)責(zé)多模 態(tài)XML索引數(shù)據(jù)的生成和存儲(chǔ),在此基礎(chǔ)之上,査詢路徑分割和基于多模態(tài) XML索引的外延連接模塊進(jìn)一步根據(jù)用戶提出的XPath査詢表達(dá)式,對(duì)生成 的多模態(tài)XML索引數(shù)據(jù)進(jìn)行有效査詢。其中,多模態(tài)XML索引模塊采用名 字外延及區(qū)間編碼的方法,建立了包含類型索引集,名字索引集和外延索引 的多模態(tài)XML索引結(jié)構(gòu);索引數(shù)據(jù)存儲(chǔ)模塊采用關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)模式對(duì)多模 態(tài)XML索引數(shù)據(jù)進(jìn)行存儲(chǔ);査詢路徑分割模塊根據(jù)多模態(tài)XML索引結(jié)構(gòu)的 特點(diǎn),對(duì)XPath査詢表達(dá)式實(shí)現(xiàn)了面向索引的查詢路徑分割,生成了索引査 詢表達(dá)式;基于多模態(tài)XML索引的外延連接模塊根據(jù)索引查詢表達(dá)式,采用 基于多模態(tài)索引的外延連接算法MIEJ (Multi-Modal Index based Extension Join)實(shí)現(xiàn)了對(duì)多模態(tài)XML索引數(shù)據(jù)的有效査詢。
所述的多模態(tài)XML索引構(gòu)建模塊釆用名字外延及區(qū)間編碼的方法建立 三級(jí)多模態(tài)XML索引體系結(jié)構(gòu)的實(shí)現(xiàn)步驟如下
1) 對(duì)XML文檔樹中的所有元素結(jié)點(diǎn),屬性結(jié)點(diǎn)以及文本結(jié)點(diǎn)和屬性值 結(jié)點(diǎn)進(jìn)行先序遍歷,產(chǎn)生這些結(jié)點(diǎn)的先序遍歷序號(hào)以及由它和它的兄弟結(jié)點(diǎn), 它的父結(jié)點(diǎn)以及其父結(jié)點(diǎn)的父結(jié)點(diǎn)構(gòu)成的一條三元父子關(guān)系實(shí)例路徑;
2) 建立外延索引外延索引由兩部分構(gòu)成名字外延和局部路徑外延, 其中,名字外延由孩子結(jié)點(diǎn)名cName在XML文檔樹中對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例 instanceID構(gòu)成,主要包括元素外延,屬性外延,元素文本內(nèi)容外延和屬性
值外延,局部路徑外延則僅僅抓住XML文檔樹中一個(gè)結(jié)點(diǎn)的父結(jié)點(diǎn)唯一的特
點(diǎn),以孩子結(jié)點(diǎn)為導(dǎo)向,采用自底向上的方法建立三元父子(Parent-Child, PC) 關(guān)系名字路徑以及該路徑所對(duì)應(yīng)的實(shí)例路徑;
3) 根據(jù)外延索引中孩子結(jié)點(diǎn)實(shí)例cinstanceID類型進(jìn)行聚類,從而形成以 結(jié)點(diǎn)類型為入口項(xiàng)的四種類型索引集,包括元素索引集,屬性索引集,文本 內(nèi)容索引集,屬性索引集,結(jié)點(diǎn)實(shí)例cinstanceID類型對(duì)應(yīng)XPath查詢路徑中 查詢結(jié)點(diǎn)的類型,可以是元素結(jié)點(diǎn),屬性結(jié)點(diǎn),文本內(nèi)容結(jié)點(diǎn),屬性值結(jié)點(diǎn);
4) 在類型索引集中,四種索引根據(jù)結(jié)點(diǎn)實(shí)例的名字進(jìn)行聚類,從而形成 多個(gè)以結(jié)點(diǎn)名為入口項(xiàng)的名字索引集。在每種類型索引集中都有指向不同名 字索引集的指針,而名字索引集直接指向某一種類型的外延索引,如指向元 素索引或?qū)傩运饕龋?br> 5) 根據(jù)査詢結(jié)點(diǎn)的類型找到對(duì)應(yīng)的類型索引集是整個(gè)索引系統(tǒng)中的第一 級(jí)索引;根據(jù)結(jié)點(diǎn)名找到對(duì)應(yīng)的名字索引集,構(gòu)成了整個(gè)索引系統(tǒng)中的第二 級(jí)索引;最后,根據(jù)給定的査詢路徑找到相應(yīng)的外延索引構(gòu)成了整個(gè)索引系 統(tǒng)中的第三級(jí)索引。至此,建立了從類型索引集到名字索引集,再?gòu)拿炙?引集到外延索引的三級(jí)索引系統(tǒng)。
索弓I數(shù)據(jù)存儲(chǔ)模塊將多模態(tài)XML索引數(shù)據(jù)按如下關(guān)系數(shù)據(jù)庫(kù)模式進(jìn)行存
儲(chǔ)
名字歹據(jù)Name(NameID, NodeType, DocName, Nodename); 結(jié)點(diǎn)實(shí)例歹!j表InstaCode(NameID, BeginNum, EndNum, LayerNum); 三元PC關(guān)系名字列表PIR(APCID, aNameID, pNameID, cNameID); 三元PC關(guān)系外延列表PIE(IID, APCID, alnstan, plnstan, clnstan);
臨時(shí)父連接實(shí)例列表TePaJoInst(IID, alnstance); 臨時(shí)子連接實(shí)例列表TeChJoInst(IID, clnstance); 局部路徑索引外延兄弟列表PIS(IID, SibNameID, Siblnstan)。
在査詢路徑分割模塊中,為了在查詢算法中利用多模態(tài)索引來提高查詢 效率,根據(jù)多模態(tài)索引結(jié)構(gòu)的特點(diǎn),按如下步驟對(duì)RPE(Regular Path Expression 正則路徑表達(dá)式)形式的XPath査詢路徑進(jìn)行分割
1) 盡可能按兩步長(zhǎng)對(duì)XPath主路徑進(jìn)行分割;
2) 將帶有分支路徑的査詢結(jié)點(diǎn),連同其分支分割為分支査詢單元;
3) 將袓先后代(Ancestor-Descendant, AD)關(guān)系査詢所涉及的兩結(jié)點(diǎn)分割 為一個(gè)査詢單元;
4) 將分支查詢單元按以上三步再嵌套分割;
5) 根據(jù)査詢單元所要采用的索引方式的不同,利用索引操作符LPE, NE, BR對(duì)經(jīng)以上四步得到的查詢單元進(jìn)行標(biāo)識(shí),生成索弓I査詢單元;
6) 利用索引操作符將這些索引査詢單元連接在一起,構(gòu)成一條面向多模 態(tài)索引結(jié)構(gòu)的索引査詢表達(dá)式。
在基于多模態(tài)XML索引的外延連接模塊中按如下步驟對(duì)MIEJ算法進(jìn)行 了實(shí)現(xiàn)
1) 對(duì)XPath査詢表達(dá)式QE進(jìn)行面向索引的解析,將其轉(zhuǎn)化成語義等價(jià) 的由多個(gè)索引操作符相連接的索引表達(dá)式QE';
2) 令P為指向索引表達(dá)式QE'的字符串指針;
3) While (P!-null)
4) 指針P下移;
5) If (P遇到連續(xù)的字符串=="LPE") then
6) 指針P繼續(xù)下移,直到遇到")"停止,提取"LPE("和")"之間的內(nèi)容 作為索引操作符LPE所標(biāo)識(shí)的索引査詢單元.
7) 調(diào)用算法FindByLPE處理提取出的索引查詢單元,并返回滿足條
件的結(jié)點(diǎn)實(shí)例對(duì).
8) Endlf;
9) If (P遇到連續(xù)的字符串=="NE") then
10) 指針P繼續(xù)下移,直到遇到")"停止,提取"NE("和")"之間的內(nèi)容 作為索引操作符NE所標(biāo)識(shí)的索引査詢單元.
11) 調(diào)用算法FindByNE處理提取出的索引査詢單元,并返回滿足條件 的結(jié)點(diǎn)實(shí)例對(duì).
12) Endlf;
13) If (P遇到連續(xù)的字符串=="BR") then
14) 指針P繼續(xù)下移,直到遇到")"停止,并提取"BR("和")"之間的內(nèi) 容作為索引操作符NE所標(biāo)識(shí)的索引查詢單元.
15) 調(diào)用算法FindByBR處理提取出的索引查詢單元,并返回滿足條 件的結(jié)點(diǎn)實(shí)例對(duì).
16) Endlf;
17) EndWhile;
18) 調(diào)用算法ResultJoin對(duì)以上每個(gè)索引查詢單元的處理結(jié)果進(jìn)行一致性 連接.若執(zhí)行結(jié)束后,存在結(jié)點(diǎn)實(shí)例作為連接結(jié)果,則返回l,否則返 回O. 采用本發(fā)明,可實(shí)現(xiàn)一種基于XML文檔的結(jié)構(gòu)化査詢系統(tǒng)。該系統(tǒng)可廣 泛應(yīng)用于各種領(lǐng)域中基于XML文檔格式描述的信息內(nèi)容的結(jié)構(gòu)化查詢。在利 用該系統(tǒng)進(jìn)行查詢時(shí),事先需要利用多模態(tài)XML所引構(gòu)建模塊在離線狀態(tài)下 對(duì)XML文檔集進(jìn)行預(yù)處理,生成基于類型索引集,名字索引集和外延索引三 層架構(gòu)的多模態(tài)XML索引數(shù)據(jù)。其中,通過類型索引集和名字索引集,使得 可根據(jù)查詢結(jié)點(diǎn)的類型和標(biāo)記名預(yù)先對(duì)XML文檔進(jìn)行有效過濾,進(jìn)而通過外 延索引,使得在面對(duì)XPath查詢路徑表達(dá)式所提出的PC關(guān)系,AD關(guān)系以及 擁有關(guān)系的多種查詢需求時(shí),可動(dòng)態(tài)地選取合適的索引結(jié)構(gòu)來支持當(dāng)前查詢, 從而達(dá)到整體查詢性能的優(yōu)化;通過建立的三元PC關(guān)系名字外延有效地降低 了外延連接的次數(shù),并且通過在三元PC關(guān)系名字外延中引入兄弟結(jié)點(diǎn)實(shí)例信 息,使得只需對(duì)外延列表進(jìn)行一次遍歷就可解決雙親/孩子擁有關(guān)系的查詢, 從而達(dá)到局部查詢性能的優(yōu)化。當(dāng)用戶提出REP形式的Xpath查詢表達(dá)式后, 系統(tǒng)在查詢路徑分割模塊和基于多模態(tài)XML索引的外延連接模塊的支持下, 既可有效地支持結(jié)構(gòu)聯(lián)結(jié)計(jì)算以快速地判斷任意結(jié)點(diǎn)之間的袓先后代關(guān)系, 也可有效地支持三元PC關(guān)系名字外延以判斷任意三個(gè)結(jié)點(diǎn)之間的父子關(guān)系, 然后還可支持對(duì)包含擁有關(guān)系的小枝査詢。對(duì)于一條長(zhǎng)度為w的XPath絕對(duì) 路徑查詢,最多只需要"/2-l次外延連接就返回給用戶和査詢需求一致的查詢 結(jié)果文檔,并且能夠根據(jù)雙親結(jié)構(gòu)信息等利用外延索引盡可能跳過不需要參 與連接的結(jié)點(diǎn),從而使多模態(tài)索引結(jié)構(gòu)的特性在該算法中得到了充分的體現(xiàn)。


圖l為本發(fā)明組成結(jié)構(gòu)圖2為多模態(tài)索引體系結(jié)構(gòu)圖; 圖3為外延索引結(jié)構(gòu)圖; 圖4為汽車外形XML文檔樹; 表l為査詢路徑分割實(shí)例;
下面結(jié)合附圖對(duì)本發(fā)明的內(nèi)容作進(jìn)一步詳細(xì)說明。
具體實(shí)施例方式
圖1中,首先利用XML文檔解析器對(duì)XML文檔集中的所有文檔進(jìn)行解
析,生成在程序中可操作的文檔對(duì)象樹。在此基礎(chǔ)上,通過對(duì)文檔對(duì)象樹的 多次遍歷,按照多模態(tài)索引結(jié)構(gòu),抽取需要的數(shù)據(jù)信息,建立包含類型索引
集,名字索引集和外延索引的XML索引數(shù)據(jù),并將其以索引關(guān)系表的形式存 儲(chǔ)于關(guān)系數(shù)據(jù)庫(kù)中。接著,當(dāng)收到索引査詢請(qǐng)求后,由査詢路徑分割模塊將 傳遞進(jìn)來的XPath査詢路徑轉(zhuǎn)換為索引查詢表達(dá)式,最后由基于多模態(tài)索引 的外延連接模塊利用索引査詢表達(dá)式在己建立的索引關(guān)系表的基礎(chǔ)上完成 XML精確查詢。
圖2顯示了包含外延索引,名字索引集和類型索引集的三層多模態(tài)XML 索引體系結(jié)構(gòu)。其中,外延索引包括元素外延索引,屬性外延索引,元素文 本內(nèi)容外延索引和屬性值外延索引;名字索引集包括元素名索引,屬性名索 引,元素文本內(nèi)容索引和屬性值索引;類型索引集包括元素索引集,屬性索 引集,元素文本內(nèi)容索引集和屬性值索引集。
圖3顯示了外延索引的組成結(jié)構(gòu)。位于圖3左邊的列表框是結(jié)點(diǎn)名cName 的名字外延列表,位于右邊的列表框是結(jié)點(diǎn)名cName的局部路徑外延列表。 名字外延列表中的〈nstanCode〉代表一個(gè)名為cName的結(jié)點(diǎn)實(shí)例在一棵XML
文檔樹中對(duì)應(yīng)的區(qū)間編碼;局部路徑外延列表中,建立了 cName在XML文 檔樹中的三元PC關(guān)系名字外延組,每個(gè)組由cName的一個(gè)三元PC關(guān)系名字 路徑及其實(shí)例路徑構(gòu)成。如圖中〈aNamel, pNamel, cName〉就是一個(gè)名字外延 組中以cName為孩子的一個(gè)三元PC關(guān)系名字路徑,其中包括當(dāng)前的索引入 口結(jié)點(diǎn)名cName, cName的一個(gè)父結(jié)點(diǎn)名pNamel以及pNamel的一個(gè)父結(jié) 點(diǎn)名aName 1 , 后面緊足艮的(〈instanceO, instance 1 , instance2>... 〈instance 17 instance6, instance8>)則是名字路徑〈aNamel, pNamel, cName〉在XML文檔 樹中對(duì)應(yīng)的所有實(shí)例路徑,而〈aName2, pName2, cName〉是結(jié)點(diǎn)名cName在 另一個(gè)組中的名字路徑。
圖4顯示了一棵帶有編碼的汽車外形XML文檔樹,其中,空心圓結(jié)點(diǎn)代 表XML文檔中的元素,方形框結(jié)點(diǎn)代表屬性,實(shí)心圓結(jié)點(diǎn)代表文本內(nèi)容或?qū)?性值,結(jié)點(diǎn)框中的數(shù)字代表每個(gè)結(jié)點(diǎn)的前序編碼。
基于多模態(tài)索引結(jié)構(gòu)的XML查詢方法的組成與工作原理
如圖1所示,基于多樣性XML文檔的近似查詢方法主要由多模態(tài)XML 索引構(gòu)建,索引數(shù)據(jù)存儲(chǔ),查詢路徑分割和基于多模態(tài)索引的外延連接四個(gè) 部分構(gòu)成。為了更清楚地對(duì)各部分的組成及工作原理進(jìn)行介紹,先定義如下 幾個(gè)概念
定義1由XML文檔按照特定的映射關(guān)系轉(zhuǎn)化成的有向多叉樹結(jié)構(gòu)稱為 XML文檔樹,記為7i)-(iVoc/e,/a6e/, (yp。 roo《rD))。其中
1) Mxfe代表結(jié)點(diǎn)的集合,A^fe=iVocfe£YA^/^YA^fer,其中,iVode^ Mxfe^ A^fer分別表示元素結(jié)點(diǎn),屬性結(jié)點(diǎn)和語詞結(jié)點(diǎn)的集合;
2) 五dge代表結(jié)點(diǎn)之間邊的集合,滿足 Vv,eA^fe£, V力dVo&,若
v,是巧的父元素,貝U(v,, v》e^s^e;②Vv,dVo&" V力eA^sfer,若v,.是 v乂的父元素,則(v,、(D£^e=五々&Y五超QY五c(ger,其中, ^fg&, Ed^q, ^^"分別表示從元素結(jié)點(diǎn)指向子元素結(jié)點(diǎn)的元素邊, 指向?qū)傩越Y(jié)點(diǎn)的屬性邊,指向語詞結(jié)點(diǎn)的語詞邊;
3) 映射/fl6e/: sW"g,給每個(gè)結(jié)點(diǎn)賦予一個(gè)字符串,滿足① 若Vv,eMwfe£,則/We/(v,)代表元素的標(biāo)記名;②若V v,dVo^4,則/a6e/(v,.) 代表屬性名;(Dvv,dVo&r,則/We/(v,)代表語詞(字符串值);
4) 映射/y;7e: j, r},給每個(gè)結(jié)點(diǎn)賦予結(jié)點(diǎn)類型,包括元素類
型£,屬性類型J和語詞類型r等等。對(duì)于任意結(jié)點(diǎn)v^A^fe,如果 0^e(v,)=£, v,稱為元素結(jié)點(diǎn),如果(^e(v,)^, v,稱為屬性結(jié)點(diǎn),如果 (y/^Vi)-r, v稱為語詞結(jié)點(diǎn); 5) rao《7b)代表7^的根。
如圖4所示的XML文檔樹中的每個(gè)結(jié)點(diǎn)實(shí)例具有唯一標(biāo)識(shí)號(hào), 一般情況 下,它是通過對(duì)XML文檔樹中結(jié)點(diǎn)進(jìn)行先序遍歷產(chǎn)生的,記為instanceID。 由于結(jié)點(diǎn)標(biāo)識(shí)號(hào)和結(jié)點(diǎn)實(shí)例是一一對(duì)應(yīng)的,為了描述的方便,根據(jù)XML文檔 樹中結(jié)點(diǎn)類型的不同,分別用einstanceID, ainstanceID,tinstanceID和 vinstanceID來標(biāo)識(shí)XML文檔樹中的元素結(jié)點(diǎn),屬性結(jié)點(diǎn),文本內(nèi)容結(jié)點(diǎn)和屬 性值結(jié)點(diǎn)實(shí)例。
定義2元素外延(element extension),記為EE (eName),表示7^中具 有相同元素名eName的結(jié)點(diǎn)實(shí)例einstanID所組成的集合,其中eName是DTD 中定義的元素名字(tagname)。
類似的,可定義屬性外延AE (aName),元素文本外延TE (eText)和屬性
值外延VE (aValue)。
定義3三元父子關(guān)系實(shí)例路徑(instance path ),記作IP = <ainstanceID,pinstanceID,cinstanceID>,表示rD中由結(jié)點(diǎn)標(biāo)識(shí)構(gòu)成的三元結(jié)點(diǎn) 實(shí)例對(duì)。其中,pinstanceID是cinstanceID的父結(jié)點(diǎn),ainstanceID是pinstanceID 的父結(jié)點(diǎn),ainstanceID是cinstanceID的祖先結(jié)點(diǎn)。如圖4中的<1, 3, 4>和 <10, 11, 12>。
IP中包含兩對(duì)父子關(guān)系<ainstanceID, pinstanceID〉, 〈pinstanceID, cinstancelD〉和一對(duì)祖先后代關(guān)系〈ainstancelD, cinstanceID>。它們均可以代表 四種不同類型結(jié)點(diǎn)之間的父子或祖先后代關(guān)系元素和子元素,元素和屬性,
元素和文本內(nèi)容,屬性和屬性值,其中ainstanceID可以代表元素結(jié)點(diǎn)實(shí)例, pinstanceID可以代表元素或?qū)傩越Y(jié)點(diǎn)實(shí)例,cinstanceID可以代表所有類型的 結(jié)點(diǎn)實(shí)例。例如圖4中的<1, 3>,<1, 7>,<3,4>和<1,8〉。
定義4三元父子關(guān)系名字路徑(name path),記作NP= <aName, pName, cName>,它表示中由結(jié)點(diǎn)標(biāo)記名構(gòu)成的三元結(jié)點(diǎn)名字對(duì)。其中,aName 代表元素名,是pName結(jié)點(diǎn)的父親結(jié)點(diǎn)名;pName代表元素名或?qū)傩悦?cName結(jié)點(diǎn)的父親結(jié)點(diǎn)名;cName代表元素名,屬性名,元素文本內(nèi)容或?qū)?性值,是底層孩子結(jié)點(diǎn)名。
在XML文檔樹中一條名字路徑可對(duì)應(yīng)多條實(shí)例路徑。
定義5三元父子關(guān)系名字外延(triple name extension),記作TNE(NP)= {IP},它表示XML文檔樹中和名字路徑NP^aName,pName,cName〉對(duì)應(yīng)的所 有實(shí)例路徑IP= <ainstanceID, pinstanceID, cinstanceID>的集合。其中, iinstanceID對(duì)應(yīng)元素名aName, pinstanceID對(duì)應(yīng)元素或?qū)傩悦鹥Name, cinstanceID對(duì)應(yīng)的結(jié)點(diǎn)名cName。
如圖4中,TNE(Car, Parts, Wheel) = {<1,9,10>}。如果aName為空,形如 TNE(&,pName,cName)則表示二元PC關(guān)系名字外延,是所有名字路徑為 〈pName,cName〉的二元PC關(guān)系實(shí)例路徑構(gòu)成的集合。如圖4中,TNE(&, Car, Type) = {<l,5>}0
多模態(tài)XML索引構(gòu)建 總體索引結(jié)構(gòu)
在索引系統(tǒng)中設(shè)計(jì)了四種類型索引元素索引、屬性索引、元素文本內(nèi)容 索引和屬性值索引來支持不同XPath路徑的查詢需求。例如,元素/子元素, 元素/屬性,元素/文本內(nèi)容,屬性/屬性值之間代表不同語義的父子關(guān)系,祖先 后代關(guān)系和擁有關(guān)系。利用元素索引和屬性索引可實(shí)現(xiàn)對(duì)查詢條件中結(jié)構(gòu)關(guān) 系的判斷,利用屬性值索引和元素文本內(nèi)容索引可實(shí)現(xiàn)對(duì)査詢條件中查詢內(nèi) 容的判斷。四種索引的入口項(xiàng)各不相同,但索引值都是IP或者instanceID的 集合。每種索引均由兩部分構(gòu)成名字外延和局部路徑外延,統(tǒng)稱為外延索 引。其中,名字外延由cName在XML文檔樹中對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例構(gòu)成,主要 包括元素外延,屬性外延,元素文本內(nèi)容外延和屬性值外延。局部路徑外 延則僅僅抓住XML文檔中一個(gè)結(jié)點(diǎn)的父結(jié)點(diǎn)唯一,以子結(jié)點(diǎn)為導(dǎo)向,采用自 底向上的方法建立三元PC關(guān)系名字路徑以及該路徑所對(duì)應(yīng)的實(shí)例路徑構(gòu)成。
四種索引根據(jù)索引值IP中的孩子結(jié)點(diǎn)實(shí)例cinstanceID類型進(jìn)行聚類,從 而形成了以結(jié)點(diǎn)類型為入口項(xiàng)的四種類型索引集,包括元素索引集,屬性索 彌,義本內(nèi)容索引集,衝性索引集。結(jié)點(diǎn)實(shí)例cinstanceID類型對(duì)應(yīng)XPath
查詢路徑中査詢結(jié)點(diǎn)的類型,可以是元素結(jié)點(diǎn),屬性結(jié)點(diǎn),文本內(nèi)容結(jié)點(diǎn), 屬性值結(jié)點(diǎn)。根據(jù)査詢結(jié)點(diǎn)的類型找到對(duì)應(yīng)的類型索引集是整個(gè)索引系統(tǒng)中
的第一級(jí)索引;
接著,在類型索引集中,四種索引根據(jù)結(jié)點(diǎn)實(shí)例instanceID的名字進(jìn)行聚 類,從而形成多個(gè)以結(jié)點(diǎn)名為入口項(xiàng)的名字索引集。在每種類型索引集中都 有指向不同名字索引集的指針,而名字索引集直接指向某一種類型的外延索 引,如指向元素索引或?qū)傩运饕?。根?jù)結(jié)點(diǎn)名找到對(duì)應(yīng)的名字索引集,構(gòu) 成了整個(gè)索引系統(tǒng)中的第二級(jí)索引。
最后,根據(jù)給定的查詢路徑找到相應(yīng)的外延索引構(gòu)成了整個(gè)索引系統(tǒng)中 的第三級(jí)索引。至此,建立了從類型索引集到名字索引集,再?gòu)拿炙饕?到外延索引的三級(jí)索引系統(tǒng),其總體結(jié)構(gòu)如圖2所示。
外延索引結(jié)構(gòu)
在圖2中,外延索引位于多模態(tài)索引體系結(jié)構(gòu)的第三級(jí),其組成結(jié)構(gòu)如圖 3所示。位于圖3左邊的列表框是結(jié)點(diǎn)名cName的名字外延列表,位于右邊 的列表框是結(jié)點(diǎn)名cName的局部路徑外延列表。名字外延列表中的 〈InstanCode〉代表一個(gè)名為cName的結(jié)點(diǎn)實(shí)例在一個(gè)XML文檔樹中對(duì)應(yīng)的區(qū) 間編碼,比如Zhang編碼;局部路徑外延列表中建立了 cName在XML文檔 樹中的三元PC關(guān)系名字外延組,每個(gè)組由cName的一個(gè)三元PC關(guān)系名字路 徑及其實(shí)例路徑構(gòu)成。如圖3中〈aNamel,pNamel,cName〉就是一個(gè)名字外延 組中以cName為孩子的一個(gè)三元PC關(guān)系名字路徑,其中包括當(dāng)前的索引入 口結(jié)點(diǎn)名cName, cName的一個(gè)父結(jié)點(diǎn)名pNamel以及pNamel的一個(gè)父結(jié) 點(diǎn)名aNamel , 后面緊足艮的(<instanceO, instance 1, instance2>...<instancel7
instance6, instance8>)則是名字路徑〈aNamel, pNamel, cName〉在XML文檔 樹中對(duì)應(yīng)的所有實(shí)例路徑,而〈aName2, pName2, cName〉是結(jié)點(diǎn)名cName在 另一個(gè)組中的名字路徑。
在XPath中,有一類特殊的查詢需求,即包含擁有關(guān)系的小枝查詢。為支 持擁有關(guān)系,將索引入口結(jié)點(diǎn)名cName在XML文檔中所對(duì)應(yīng)的每個(gè)結(jié)點(diǎn)實(shí) 例的兄弟結(jié)點(diǎn)也納入到局部路徑外延列表中,如 <aName,pName,cName>=(<instanceO,instancel,instance2(@name:instance20; "name": instance21; name: instance22)〉), 其中instance2是cName所對(duì)應(yīng)的一 個(gè)符合三元PC關(guān)系的結(jié)點(diǎn)實(shí)例,(@name: instance20;,,name": instance21;name:instance22)包含了 instance2的所有兄弟結(jié)點(diǎn)實(shí)例信息,@name 代表instance2的屬性兄弟結(jié)點(diǎn)名,"name"代表instance2的值兄弟結(jié)點(diǎn)名, name代表instance2的元素兄弟結(jié)點(diǎn)名,而instance20, instance21禾卩instance22 分別是這些兄弟結(jié)點(diǎn)名在XML文檔樹中所對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例。通過兄弟結(jié)點(diǎn)關(guān) 系的納入,使得對(duì)擁有關(guān)系地判斷變得非常方便。
索引數(shù)據(jù)存儲(chǔ)
為了更為方便的將多模態(tài)索引結(jié)構(gòu)的應(yīng)用于隨后的査詢算法實(shí)現(xiàn)中,根據(jù) 其索引結(jié)構(gòu)特點(diǎn)設(shè)計(jì)了如下的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)模式
名字列表Name(NameID, NodeType, DocName, Nodename):用來存放XML 文檔樹的結(jié)點(diǎn)名稱及類型。其中DocName代表結(jié)點(diǎn)所在的XML文檔的名稱; NodeName代表結(jié)點(diǎn)名;NodeType代表結(jié)點(diǎn)類型;NameID是名字的唯一標(biāo)識(shí) 號(hào),也是該表的主鍵;
結(jié)點(diǎn)實(shí)例列表InstaCode(NameID, BeginNum, EndNum, LayerNum):用來
存放XML文檔樹中任意結(jié)點(diǎn)名所對(duì)應(yīng)的實(shí)例編碼。其中BeginNum, EndNum, LayerNum分別是實(shí)例結(jié)點(diǎn)的前序遍歷號(hào),二次訪問遍歷號(hào)和當(dāng)前層號(hào); NameID和BeginNum —起作為該表的主鍵。
三元PC關(guān)系名字列表PIR(APCID, aNameID, pNameID, cNameID):用來 存放XML文檔樹中的兩元或三元PC關(guān)系的名字路徑,其中aNameID, pNameID, cNameID代表名字路徑上的結(jié)點(diǎn)名在名字列表中對(duì)應(yīng)的nameID, cNameID字段在列表元組中可重復(fù),APCID是名字路徑的唯一標(biāo)識(shí)號(hào),也是 該表的主鍵。
三元PC關(guān)系外延列表PIE(IID, APCID, alnstan, plnstan, clnstan):用來存放 三元PC關(guān)系名字路徑在XML文檔中對(duì)應(yīng)的實(shí)例路徑,其中IID是每條實(shí)例 路徑的唯一標(biāo)識(shí)號(hào),它也是該表的主鍵;alnstan, plnstan和clnstan是實(shí)例路 徑上每個(gè)結(jié)點(diǎn)的前序遍歷號(hào)。
臨時(shí)父連接實(shí)例列表TePaJoInst(IID, alnstance):用于存放查詢過程中符合 條件的索引查詢單元之間的連接部分的aName的結(jié)點(diǎn)實(shí)例,其中alnstance代 表aName對(duì)應(yīng)的實(shí)例結(jié)點(diǎn)的前序遍歷號(hào)。
臨時(shí)子連接實(shí)例列表TeChJoInst(IID, clnstance):用于存放査詢過程中符合 條件的索引査詢單元間的連接部分的cName的結(jié)點(diǎn)實(shí)例,其中clnstance代表 cName對(duì)應(yīng)的實(shí)例結(jié)點(diǎn)的前序遍歷號(hào)。
局部路徑索引外延兄弟列表PIS(IID, SibNameID, Siblnstan):用來存放三 元PC關(guān)系外延中,cName結(jié)點(diǎn)在XML文檔樹中對(duì)應(yīng)的兄弟結(jié)點(diǎn)實(shí)例。其中 SibNameID代表cName結(jié)點(diǎn)的兄弟結(jié)點(diǎn)名字ID, Siblnstan代表兄弟結(jié)點(diǎn)實(shí)例 銜前序遍歷號(hào).
查詢路徑分割
定義6 (索引査詢單元)給定一條RPE形式的XPath査詢路徑,按査詢 路徑分割方法對(duì)其進(jìn)行解析后得到的査詢單元稱為索引査詢單元。
根據(jù)索引査詢單元所采用的索引方式的不同,設(shè)計(jì)了在査詢路徑分割過 程中所用到的幾種索引操作符,如下所示
LPE:局部路徑外延索引操作符,用來標(biāo)識(shí)需用局部路徑索引來處理的索
引査詢單元,該索引査詢單元中只包含PC關(guān)系; NE:名字外延索引操作符,用來標(biāo)識(shí)需要用名字外延列表來處理的索引查
詢單元,該索引查詢單元中只包含AD關(guān)系; BR:擁有關(guān)系索引操作符,用來標(biāo)識(shí)需要局部路徑外延列表和名字外延列
表相結(jié)合來處理的索引查詢單元,該索引查詢單元只包含擁有關(guān)系, 它進(jìn)一步可細(xì)分為-
BR—LPE:只需用局部路徑索引來處理擁有關(guān)系的索引操作符;
BR—NE:只需用名字外延列表來處理擁有關(guān)系的索引操作符。 進(jìn)一步,根據(jù)索引結(jié)點(diǎn)類型的不同,以上的索引操作符又可以細(xì)分為 元素索引結(jié)點(diǎn)E—LPE, E—NE, E—BR_LPE, E—BR—NE (缺省情況
下默認(rèn)為L(zhǎng)PE, NE, BR—LPE, BR—NE); 屬性索引結(jié)點(diǎn)A一LPE, A一NE, A—BR—LPE, A—BR_NE; 元素文本內(nèi)容索引結(jié)點(diǎn)C—LPE, C—NE, C—BR—LPE, C—BR—NE; 屬性值索引結(jié)點(diǎn)V一LPE, V一NE, V_BR_LPE, V—BR—NE。 根據(jù)査詢路徑分割方法和索引操作符對(duì)幾組RPE形式的XPath查詢路徑 的分割實(shí)例如表1所示。
E—LPE(a, b, c), c—LPE(c, "d,,) E—LPE(a, b, c), V—LPE(c, @d, "e") E—LPE(a b, c), E—LPE(c, d, e), a—LPE(e, @f) E—LPE(a, b, c), BR([d, @e],c) , E—LPE(c, f) E—LPE(a, b, c) , NE(c, d), E一LPE(d, e, f) E—LPE(a^,c), NE(c,d), E—LPE(d,e,h), BR ([f應(yīng)g],e)
分割結(jié)果
a/b/c/@d/"e" a/b/c/d/e/@f 謝c[d, @e〗/f a/b/c〃d/e/f ^/c〃d/e[f,@g]/h
分割完成后,利用以上幾種索弓I操作符將這些索弓I査詢單元重新連接在一 起,從而構(gòu)成一條面向多模態(tài)索引結(jié)構(gòu)的索引査詢表達(dá)式,其定義如下
定義7 (索引查詢表達(dá)式)給定一條RPE形式XPath査詢路徑表達(dá)式, 由多個(gè)索引査詢單元連接而成的和其查詢語義等價(jià)的表達(dá)式稱為索引查詢表
達(dá)式,簡(jiǎn)稱為索引表達(dá)式。如表1中的査詢路徑"a/b/c〃d/e[f,@g]/h"對(duì)應(yīng)的 索引表達(dá)式為E_LPE(a,b,c)&NE(c,d)&E—LPE(d,e,h)&BR ([f,@g],e)。
基于多模態(tài)索引結(jié)構(gòu)的外延連接
在基于多模態(tài)索引的外延連接算法(Multi-Modal Index based Extension Join, M正J)中調(diào)用到的五種算法的實(shí)現(xiàn)步驟分別如下 FindByLPE算法
輸入索引操作符LPE標(biāo)識(shí)的索引查詢單元(aName, pName, cName) 輸出滿足結(jié)構(gòu)條件aName/pName/cName的所有結(jié)點(diǎn)實(shí)例對(duì)
1) 孩子結(jié)點(diǎn)名cName的類型選擇合適的類型索引集;
2) 利用結(jié)點(diǎn)名cName從類型索引集中找到其對(duì)應(yīng)的名字索引集;
3) 從名字索引集中定位到cName對(duì)應(yīng)的局部路徑外延列表,即結(jié)點(diǎn) 名cName在索引關(guān)系數(shù)據(jù)庫(kù)中對(duì)應(yīng)的關(guān)系表;
4) 利用關(guān)系表PIR和結(jié)點(diǎn)名cName查找三元PC關(guān)系名字路徑 <aName, pName, cName〉對(duì)應(yīng)的PCID號(hào);
5) 利用關(guān)系表PIR和PIE以及第四步得到的PCID號(hào),進(jìn)一步査找存 在于PIE表中中滿足結(jié)構(gòu)關(guān)系aName/pName/cName的所有結(jié)點(diǎn)實(shí) 例對(duì),并將其作為結(jié)果返回。
FindByBR算法
輸入索引操作符BR標(biāo)識(shí)的索引查詢單元([condition], aName) 輸出滿足擁有條件condition的結(jié)點(diǎn)名aName對(duì)應(yīng)的所有結(jié)點(diǎn)實(shí)例
1) 令指針P是指向輸入字符串condition的指針;
〃擁有條件condition的形式如(〃b, c, @d, 〃e, "f,)
2) While (P!=NULL)
3) If (P遇到連續(xù)字符=="〃")then
4) 指針P下移,提取","間帶有前綴"http://"的結(jié)點(diǎn)名cName,并和 目標(biāo)結(jié)點(diǎn)名aName構(gòu)成索引操作符BR—NE標(biāo)識(shí)的子索引査詢 單元BI^NE (aName, cName),同時(shí)利用算法FindByNE處理 該子索引查詢單元,返回滿足aName 〃 cName關(guān)系的目標(biāo)結(jié)點(diǎn) 名aName對(duì)應(yīng)的所有結(jié)點(diǎn)實(shí)例.
5) Else
6) 指針p下移,記錄","間沒帶有前綴"/r的結(jié)點(diǎn)名,形成孩子
結(jié)點(diǎn)名串childNameString.
〃 childNameString形如c, @d, "f , O Endlf;
8) EndWhile;
9) 將孩子結(jié)點(diǎn)名串childNameString和目標(biāo)結(jié)點(diǎn)名aName構(gòu)成索引操 作符BR標(biāo)識(shí)的子索引査詢單元([childNameString], aName),同時(shí) 利用算法FindBySubBR處理該子索引査詢單元,返回滿足 childNameString條件的目標(biāo)結(jié)點(diǎn)名aName對(duì)應(yīng)的所有實(shí)例;
10) 將同時(shí)出現(xiàn)在算法FindByAD和算法FindBySubBR處理結(jié)果中的 目標(biāo)結(jié)點(diǎn)名aName對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例作為最終結(jié)果返回.
FindBySubBR算法
輸入BR標(biāo)識(shí)的索引查詢單元([childNameString], aName) 輸出滿足childNameString擁有條件的目標(biāo)結(jié)點(diǎn)名aName對(duì)應(yīng)的所有結(jié) 點(diǎn)實(shí)例
1) 令指針P是指向輸入字符串childNameString的指針;
2) While (P!=NULL)
3) If (P遇到childNameString中的第一個(gè)孩子結(jié)點(diǎn)名)then
4) 保存該孩子結(jié)點(diǎn)名cName于字符串變量FirstName.
5) Else
6) 累記剩下的孩子結(jié)點(diǎn)名作為cName的兄弟結(jié)點(diǎn)保存于字符串變 量sName.
7) Endlf;
8) 指針P下移;
9) End While;
加根據(jù)變量FirstName屮的孩子結(jié)點(diǎn)類型選擇合適的類型索引集; 11) 根據(jù)變量FirstName中的孩子結(jié)點(diǎn)名從類型索引集中找到對(duì)應(yīng)的名 字索引集;
12) 從名字索引集中定位到該結(jié)點(diǎn)名對(duì)應(yīng)的局部路徑外延列表,即結(jié)點(diǎn) 名cName在索引關(guān)系數(shù)據(jù)庫(kù)中對(duì)應(yīng)的關(guān)系表;
13) 利用關(guān)系表PIR和結(jié)點(diǎn)名cName查找兩元PC關(guān)系名字路徑〈aName, cName〉對(duì)應(yīng)的PCID號(hào);
14) 利用關(guān)系表PIR和PIE以及第11步得到的PCID號(hào),進(jìn)一步查找存 在于PIE表中滿足結(jié)構(gòu)關(guān)系aName/ cName的結(jié)點(diǎn)實(shí)例的IID號(hào);
15) 利用字符串變量sName以及第12步得到的IID號(hào)到關(guān)系表PIS中 進(jìn)行匹配査找,若匹配成功,利用匹配元組所在的IID號(hào)再到關(guān)系 表PIE中查找目標(biāo)結(jié)點(diǎn)名aName對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例作為結(jié)果返回。
FindByNE算法
輸入索引操作符NE所標(biāo)識(shí)的索弓I查詢單元(aName, cName) 輸出滿足結(jié)構(gòu)關(guān)系aName/7cName的所有結(jié)點(diǎn)實(shí)例對(duì)
1) 由結(jié)點(diǎn)名aName的類型選擇合適的類型索引集;
2) 依據(jù)結(jié)點(diǎn)名aName從類型索引集中找到對(duì)應(yīng)的名字索引集;
3) 從名字索引集中定位到該結(jié)點(diǎn)名對(duì)應(yīng)的局部路徑外延列表,即結(jié)點(diǎn) 名aName在索引關(guān)系數(shù)據(jù)庫(kù)中對(duì)應(yīng)的關(guān)系表;
4) 在關(guān)系表InstCode中查找結(jié)點(diǎn)名aName對(duì)應(yīng)的所有結(jié)點(diǎn)實(shí)例及其 編碼;
5) 對(duì)結(jié)點(diǎn)名cName重復(fù)1~4步;
6) 調(diào)用結(jié)構(gòu)化連接算法Structure Join ; l^^存在于結(jié)點(diǎn)名aName和
cName的結(jié)點(diǎn)實(shí)例中滿足aName 〃 cName關(guān)系的結(jié)點(diǎn)實(shí)例對(duì),并將 這些結(jié)點(diǎn)實(shí)例對(duì)作為結(jié)果返回。 Result Join算法
輸入多模態(tài)索引表達(dá)式中第一對(duì)相臨索引查詢單元的查詢結(jié)果兩組結(jié) 點(diǎn)實(shí)例對(duì)A和D
輸出滿足XPath查詢表達(dá)式的目標(biāo)查詢結(jié)點(diǎn)名所對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例
1) 將兩組結(jié)點(diǎn)實(shí)例A和D對(duì)分別輸入到關(guān)系表TePaJoInst和 TeChJoInst;
2) 對(duì)關(guān)系表TePaJoInst和TeChJoInst執(zhí)行連接操作,若連接結(jié)果為空, 則返回0,并終止該算法,否則執(zhí)行下一步;
3) 清空關(guān)系表TePaJoInst,將上一步得到的結(jié)點(diǎn)實(shí)例對(duì)輸入到關(guān)系表 TePaJoInst中;
4) 若已處理完最后一個(gè)索引査詢單元,則轉(zhuǎn)步5;否則清空關(guān)系表
TeChJoInst,將下一個(gè)索引查詢單元的査詢結(jié)果輸入到關(guān)系表 TeChJoInst中,并轉(zhuǎn)步2;
5) 將保存于關(guān)系表TePaJoInst中的目標(biāo)結(jié)點(diǎn)實(shí)例作為結(jié)果返回。
權(quán)利要求
1.一種基于多模態(tài)索引結(jié)構(gòu)的XML查詢方法,其特征在于該方法包括多模態(tài)XML索引構(gòu)建,索引數(shù)據(jù)存儲(chǔ),查詢路徑分割和基于多模態(tài)XML索引的外延連接四個(gè)模塊;多模態(tài)XML索引構(gòu)建和索引數(shù)據(jù)存儲(chǔ)模塊負(fù)責(zé)多模態(tài)XML索引數(shù)據(jù)的生成和存儲(chǔ),在此基礎(chǔ)之上,查詢路徑分割和基于多模態(tài)XML索引的外延連接模塊進(jìn)一步根據(jù)用戶提出的XPath查詢表達(dá)式,對(duì)生成的多模態(tài)XML索引數(shù)據(jù)進(jìn)行有效查詢;其中,多模態(tài)XML索引構(gòu)建模塊采用名字外延及區(qū)間編碼的方法,建立了包含類型索引集,名字索引集和外延索引的三級(jí)多模態(tài)XML索引體系結(jié)構(gòu);索引數(shù)據(jù)存儲(chǔ)模塊采用關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)模式對(duì)多模態(tài)XML索引數(shù)據(jù)進(jìn)行存儲(chǔ);查詢路徑分割模塊根據(jù)多模態(tài)XML索引結(jié)構(gòu)的特點(diǎn),對(duì)XPath查詢表達(dá)式實(shí)現(xiàn)了面向索引的查詢路徑分割,生成了索引查詢表達(dá)式;基于多模態(tài)XML索引的外延連接模塊根據(jù)索引查詢表達(dá)式,采用基于多模態(tài)索引的外延連接算法MIEJ實(shí)現(xiàn)了對(duì)多模態(tài)XML索引數(shù)據(jù)的有效查詢。
2. 根據(jù)權(quán)利要求1所述的一種基于多模態(tài)索引結(jié)構(gòu)的XML査詢方法, 其特征在于,所述的多模態(tài)XML索引構(gòu)建模塊采用名字外延及區(qū)間編碼的方 法建立三級(jí)多模態(tài)XML索引體系結(jié)構(gòu)的實(shí)現(xiàn)步驟如下1) 對(duì)XML文檔樹中的所有元素結(jié)點(diǎn),屬性結(jié)點(diǎn)以及文本結(jié)點(diǎn)和屬性值 結(jié)點(diǎn)進(jìn)行先序遍歷,產(chǎn)生這些結(jié)點(diǎn)的先序遍歷序號(hào)以及由它和它的兄弟結(jié)點(diǎn), 它的父結(jié)點(diǎn)以及其父結(jié)點(diǎn)的父結(jié)點(diǎn)構(gòu)成的一條三元父子關(guān)系實(shí)例路徑;2) 建立外延索引外延索引由兩部分構(gòu)成名字外延和局部路徑外延, 其中,名字外延由孩子結(jié)點(diǎn)名cName在XML文檔樹中對(duì)應(yīng)的結(jié)點(diǎn)實(shí)例 instanceID構(gòu)成,主要包括元素外延,屬性外延,元素文本內(nèi)容外延和屬性 值外延,局部路徑外延則僅僅抓住XML文檔樹中一個(gè)結(jié)點(diǎn)的父結(jié)點(diǎn)唯一的特 點(diǎn),以孩子結(jié)點(diǎn)為導(dǎo)向,采用自底向上的方法建立三元父子(Parent-Child, PC) 關(guān)系名字路徑以及該路徑所對(duì)應(yīng)的實(shí)例路徑;3) 根據(jù)外延索引中孩子結(jié)點(diǎn)實(shí)例cinstanceID類型進(jìn)行聚類,從而形成以 結(jié)點(diǎn)類型為入口項(xiàng)的四種類型索引集,包括元素索引集,屬性索引集,文本 內(nèi)容索引集,屬性索引集,結(jié)點(diǎn)實(shí)例dnstanceID類型對(duì)應(yīng)XPath査詢路徑中 査詢結(jié)點(diǎn)的類型,可以是元素結(jié)點(diǎn),屬性結(jié)點(diǎn),文本內(nèi)容結(jié)點(diǎn),屬性值結(jié)點(diǎn);4) 在類型索引集中,四種索引根據(jù)結(jié)點(diǎn)實(shí)例的名字進(jìn)行聚類,從而形成 多個(gè)以結(jié)點(diǎn)名為入口項(xiàng)的名字索引集,在每種類型索引集中都有指向不同名 字索引集的指針,而名字索引集直接指向某一種類型的外延索引,如指向元 素索引或?qū)傩运饕龋?) 根據(jù)査詢結(jié)點(diǎn)的類型找到對(duì)應(yīng)的類型索引集是整個(gè)索引系統(tǒng)中的第一 級(jí)索引;根據(jù)結(jié)點(diǎn)名找到對(duì)應(yīng)的名字索引集,構(gòu)成了整個(gè)索引系統(tǒng)中的第二 級(jí)索引;最后,根據(jù)給定的查詢路徑找到相應(yīng)的外延索引構(gòu)成了整個(gè)索引系 統(tǒng)中的第三級(jí)索引,至此,建立了從類型索引集到名字索引集,再?gòu)拿炙?引集到外延索引的三級(jí)索引系統(tǒng)。
3.根據(jù)權(quán)利要求1所述的一種基于多模態(tài)索引結(jié)構(gòu)的XML查詢方法,其 特征在于,所述的索引數(shù)據(jù)存儲(chǔ)模塊將多模態(tài)XML索引數(shù)據(jù)按如下關(guān)系數(shù)據(jù) 庫(kù)模式進(jìn)行存儲(chǔ)名字歹據(jù)Name(NameID, NodeType, DocName, Nodename);結(jié)點(diǎn)實(shí)例歹U表InstaCode(NameID, BeginNum, EndNum, LayerNum); 三元PC關(guān)系名字列表PIR(APCID, aNameID, pNameID, cNameID); 三元PC關(guān)系外延列表PIE(IID, APCID, alnstan, plnstan, clnstan); 臨時(shí)父連接實(shí)例列表TePaJoInst(IID, alnstance); 臨時(shí)子連接實(shí)例列表TeChJoInst(IID, clnstance); 局部路徑索引外延兄弟列表PIS(IID, SibNameID, Siblnstan)。
4. 根據(jù)權(quán)利要求1所述的一種基于多模態(tài)索引結(jié)構(gòu)的XML査詢方法, 其特征在于,所述的在查詢路徑分割模塊中,為了在查詢算法中利用多模態(tài) 索引來提高查詢效率,根據(jù)多模態(tài)索引結(jié)構(gòu)的特點(diǎn),按如下步驟對(duì)RPE(Regular Path Expression,正則路徑表達(dá)式)形式的XPath查詢路徑進(jìn)行分割1) 盡可能按兩步長(zhǎng)對(duì)XPath主路徑進(jìn)行分割;2) 將帶有分支路徑的査詢結(jié)點(diǎn),連同其分支分割為分支查詢單元;3) 將祖先后代AD關(guān)系查詢所涉及的兩結(jié)點(diǎn)分割為一個(gè)查詢單元;4) 將分支査詢單元按以上三步再嵌套分割;5) 根據(jù)查詢單元所要采用的索引方式的不同,利用索引操作符LPE, NE, BR對(duì)經(jīng)以上四步得到的査詢單元進(jìn)行標(biāo)識(shí),生成索引查詢單元;6) 利用索引操作符將這些索引査詢單元連接在一起,構(gòu)成一條面向多模 態(tài)索引結(jié)構(gòu)的索引查詢表達(dá)式。
5. 根據(jù)權(quán)利要求1所述的一種基于多模態(tài)索引結(jié)構(gòu)的XML査詢方法, 其特征在于,所述的基于多模態(tài)XML索引的外延連接模塊按如下步驟對(duì)MIEJ 算法進(jìn)行了實(shí)現(xiàn)1)對(duì)XPath査詢表達(dá)式QE進(jìn)行面向索引的解析,將其轉(zhuǎn)化成語義等價(jià)的由多個(gè)索引操作符相連接的索引表達(dá)式QE,;2) 令P為指向索引表達(dá)式QE,的字符串指針;3) While (P!=null)4) 指針P下移;5) If (P遇到連續(xù)的字符串=="LPE") then6) 指針P繼續(xù)下移,直到遇到")"停止,提取"LPE("和")"之間的內(nèi)容 作為索引操作符LPE所標(biāo)識(shí)的索引查詢單元.7) 調(diào)用算法FindByLPE處理提取出的索引査詢單元,并返回滿足條 件的結(jié)點(diǎn)實(shí)例對(duì).8) Endlf;9) If (P遇到連續(xù)的字符串=="NE") then10) 指針P繼續(xù)下移,直到遇到")"停止,提取"NE("和")"之間的內(nèi)容 作為索引操作符NE所標(biāo)識(shí)的索引査詢單元.11) 調(diào)用算法FindByNE處理提取出的索引查詢單元,并返回滿足條件 的結(jié)點(diǎn)實(shí)例對(duì).12) Endlf;13) If (P遇到連續(xù)的字符串=="BR") then14) 指針P繼續(xù)下移,直到遇到")"停止,并提取"BR("和")"之間的內(nèi) 容作為索引操作符NE所標(biāo)識(shí)的索引查詢單元.15) 調(diào)用算法FindByBR處理提取出的索引査詢單元,并返回滿足條 件的結(jié)點(diǎn)實(shí)例對(duì).16) Endlf; 17) EndWhile;18) 調(diào)用算法ResultJoin對(duì)以上每個(gè)索引查詢單元的處理結(jié)果進(jìn)行一致性 連接.若執(zhí)行結(jié)束后,存在結(jié)點(diǎn)實(shí)例作為連接結(jié)果,則返回l,否則返 回0。
全文摘要
本發(fā)明公開了一種基于多模態(tài)索引結(jié)構(gòu)的XML查詢方法。該方法將編碼方案和名字外延的思想相結(jié)合,提出了一種包含類型索引集,名字索引集和外延索引的多模態(tài)XML索引結(jié)構(gòu),它既可支持結(jié)構(gòu)聯(lián)結(jié)計(jì)算,用以判斷任意結(jié)點(diǎn)之間的祖先后代關(guān)系,也可支持基于名字外延的路徑連接算法,用以判斷任意結(jié)點(diǎn)之間的父子關(guān)系,同時(shí)可支持包含擁有關(guān)系的小枝查詢;進(jìn)而提出了基于該索引結(jié)構(gòu)的外延連接算法,并通過對(duì)XPath查詢表達(dá)式進(jìn)行面向索引的查詢路徑分割,使得對(duì)于一條長(zhǎng)度為n的XPath絕對(duì)路徑查詢,最多只需要n/2-1次外延連接,且能夠根據(jù)雙親結(jié)構(gòu)等信息利用外延索引盡可能跳過不需要參與連接的結(jié)點(diǎn),從而提高了對(duì)XML數(shù)據(jù)的查詢效率。
文檔編號(hào)G06F17/30GK101183385SQ20071018847
公開日2008年5月21日 申請(qǐng)日期2007年12月4日 優(yōu)先權(quán)日2007年12月4日
發(fā)明者環(huán) 李, 衡星辰, 征 覃, 驥 賈, 邵利平 申請(qǐng)人:西安交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永安市| 太白县| 凤山县| 灵山县| 柳州市| 潮安县| 宜兰县| 措美县| 台东县| 阿勒泰市| 前郭尔| 神农架林区| 安新县| 青神县| 融水| 开阳县| 贵州省| 沙田区| 防城港市| 延安市| 宝鸡市| 赤壁市| 会昌县| 武安市| 安西县| 固安县| 千阳县| 扬中市| 山东省| 儋州市| 庐江县| 遂昌县| 宝应县| 富川| 屏南县| 平邑县| 东阿县| 丽水市| 噶尔县| 崇义县| 孟州市|