專利名稱:安全的xml關(guān)鍵字檢索方法
技術(shù)領(lǐng)域:
本發(fā)明屬于可擴充標(biāo)記語言(XML)關(guān)鍵字檢索技術(shù)領(lǐng)域,具體涉及安全的XML關(guān) 鍵字檢索方法,包括在XML關(guān)鍵字的最小最低公共祖先(SLCA)和基于視圖的安全訪問 控制規(guī)則的基礎(chǔ)上,確定基于安全訪問控制規(guī)則的XML關(guān)鍵字檢索結(jié)果(SSLCA);建立 基于安全視圖的關(guān)鍵字索引;以及在此基礎(chǔ)上的關(guān)鍵字檢索算法。
背景技術(shù):
關(guān)鍵字檢索簡單易用,廣泛應(yīng)用于信息檢索領(lǐng)域。近年來,在數(shù)據(jù)庫領(lǐng)域,結(jié)合信息 檢索技術(shù),針對數(shù)據(jù)庫進(jìn)行關(guān)鍵字檢索成為一個研究熱點。由于XML己成為互聯(lián)網(wǎng)和企 業(yè)間的信息交換標(biāo)準(zhǔn),XML關(guān)鍵字檢索的研究得到了廣泛關(guān)注[l-9]。已有的關(guān)于XML關(guān) 鍵字檢索系統(tǒng)主要集中于檢索結(jié)果的定義和相關(guān)算法研究,以及查詢結(jié)果的排序模型的研 究。其中一個經(jīng)典的方法是最小最低公共袓先(SLCA)方法[1][2][3][5][9]。如果把一篇XML 文檔看成一棵樹,SLCA方法返回的是一組它的最小應(yīng)答子樹(stnallest answer subtree),--棵最小應(yīng)答子樹被定義為包含所有關(guān)鍵字,并且任意一棵它的子樹都不包含所有關(guān)鍵字的 子樹,這種子樹的根被稱作一個SLCA。
另一方面,大量XML數(shù)據(jù)在網(wǎng)絡(luò)上出現(xiàn),在數(shù)據(jù)安全訪問控制方面也帶來了很大的 挑戰(zhàn),并一直受到人們的關(guān)注。當(dāng)前,關(guān)于XML數(shù)據(jù)安全的一個主要研究是基于安全視 圖的訪問控制,并取得了一定的進(jìn)展[13-18]。這些方法使用的是結(jié)構(gòu)化査詢語言XQuery 或XPath,在XML模式或者XML文檔上加上一定的安全說明(Security Specifications),從 而得到一個安全的視圖(Security View),然后用一定的訪存控制手段控制用戶對原始數(shù)據(jù)的 訪問。
例l圖1中所展示的是一個XML文檔的樹型結(jié)構(gòu),記錄了一個公司的部門,文檔以及 人員信息。其中每個節(jié)點用它的標(biāo)簽表示,標(biāo)簽下面的數(shù)字是它的杜威(Dewey)編碼[ll]。 圖2是這個XML文檔的模式(Schema)。本發(fā)明假設(shè)對圖1中的文檔所定義的安全訪問規(guī) 則如下(1)只有本部門員工才能訪問本部門的信息;(2)員工的年齡(Age)和工資(Salary) 是保密信息,完全不可見;(3)對于部門號"印/^ ="#0001"的部門里面的所有文件都不可 見;(4)其他任意一個部門內(nèi)等級GraA=l的文件為機密文件,對員工都不可見,而其他 等級的文件本部門員工可見。
根據(jù)以上定義的安全訪問規(guī)則,設(shè)用戶提交三個關(guān)鍵字"Computer"、 "Gmde"和"Tom"查詢該XML文檔。通過[2]中的SLCA節(jié)點的定義可知,使用SLCA的方法可以從圖1中 得到四個SLCA節(jié)點(如圖1中的紅色標(biāo)記的節(jié)點)File(O.O.O.O)、 File(O丄O.O)、 File(O丄O.l) 和Staff(0丄3.0)。但顯然不是所有的以這四個節(jié)點為根的子樹都滿足安全訪問約束。比如 由于部門號是"柳001",文件File(O.O.O.O)包含的所有信息都不應(yīng)該可見。
由于可擴充標(biāo)記語言(XML)已經(jīng)廣泛用于各種應(yīng)用和信息源之間的數(shù)據(jù)交換,在安 全訪問控制的基礎(chǔ)上對XML數(shù)據(jù)進(jìn)行關(guān)鍵字檢索更值得關(guān)注。這樣的應(yīng)用所帶來的挑戰(zhàn)
是
1. 關(guān)鍵字檢索簡單易用,而之前在安全訪問控制的基礎(chǔ)上對XML數(shù)據(jù)檢索都是采用 XQuery或XPath的方法,如何把安全訪問控制和關(guān)鍵字檢索技術(shù)相結(jié)合是一個挑戰(zhàn)。
2. 關(guān)鍵字檢索技術(shù)需要對XML文檔中的關(guān)鍵字建立索引,而要把安全訪問控制和關(guān) 鍵字檢索技術(shù)相結(jié)合就必須要在安全訪問控制的基礎(chǔ)上建立能有效進(jìn)行關(guān)鍵字檢索的索 引技術(shù)。
設(shè)計一種新的算法可以在安全訪問控制的基礎(chǔ)上把有效的檢索結(jié)果返回給用戶是重 要的。
對于XML數(shù)據(jù)庫上的關(guān)鍵字搜索來說,大部分研究都是基于SLCA的方法。XRANK, [2], [3], XSEarch[5]和[9]是其中最有名的。[2]定義了 SLCA節(jié)點的概念如下:(l)當(dāng)
前節(jié)點或者子孫節(jié)點中包含所有的關(guān)鍵字;(2)任何一個子孫節(jié)點不可能是一個SLCA。將
以SLCA為根的子樹作為返回結(jié)果包含了一個評判標(biāo)準(zhǔn)即結(jié)果的好壞完全取決于SLCA
的高低。[3]定義了一個MLCA (Meaningful LCA)的概念。而[5]則定義了一個互連關(guān)系
(Interconnection Relationship)的概念。實際上它們與SLCA的概念相似。這些研究主要集中
于關(guān)鍵字檢索的算法和返回結(jié)果的選擇上,但是都沒有考慮到的XML的安全性問題。
基于XML安全訪問控制的研究有[13-18],這些文章中的安全訪問控制模式都是定義
一系列安全訪問規(guī)則來控制用戶對XML數(shù)據(jù)的訪問,這些訪問規(guī)則又用一系列的安全說明
(Security Specifications)來進(jìn)行形式化的描述。[12, 13, 14]中還提到了安全視圖(Security
Views)的概念,安全視圖是安全說明在XML Schema上的映射,而對XML數(shù)據(jù)的查詢是基
于安全視圖的結(jié)構(gòu)化的査詢[13, 14, 15, 18],然后再通過映射關(guān)系把査詢轉(zhuǎn)移到這個XML
文檔上。這些研究主要都是集中于XML數(shù)據(jù)進(jìn)行安全訪問控制的方法上,而對XML數(shù)據(jù)的
訪問都是通過結(jié)構(gòu)化査詢語句來實現(xiàn)的。
發(fā)明內(nèi)容
本發(fā)明的目的在于把安全訪問控制和XML關(guān)鍵字檢索技術(shù)相結(jié)合,提出一種基于安 全訪問控制的XML關(guān)鍵字檢索的方法。本發(fā)明提出的安全的XML關(guān)鍵字檢索方法,具體步驟如下
1) 建立基于模式Schema安全說明的XML索弓l ,首先對XML文檔的Schema建立 安全說明,然后通過對XML文檔進(jìn)行深度優(yōu)先遍歷,使用Dewey編碼的方式對節(jié)點進(jìn)行 編碼,在遍歷過程中同時考慮到Schema的安全說明,當(dāng)遍歷完一遍XML文檔數(shù)時,即建 立了基于Schema的安全說明的索引;索引的結(jié)構(gòu)是倒排索引,以鍵-值對的結(jié)構(gòu)存放,鍵 即是關(guān)鍵字,值即是關(guān)鍵字在XML文檔中所在節(jié)點的Dewey編碼組成的列表,同時,值 列表中每個節(jié)點還維護一個fcf變量,用于存放與此節(jié)點條件相關(guān)的節(jié)點信息;
2) 根據(jù)基于Schema安全說明的XML索引尋找SSLCA,運行時,用戶提交關(guān)鍵字 查詢,通過倒排索引計算出關(guān)鍵字的最小最低公共祖先節(jié)點的Dewey編碼值,由于這時候 算出的SLCA節(jié)點并不一定滿足安全說明,所以要利用每個節(jié)點變量存放的信息對 SLCA節(jié)點進(jìn)行剪枝和淘汰,得到最后的SSLCA節(jié)點;
3) 最后把得到的SSLCA節(jié)點返回給用戶。
下面對基于安全說明的關(guān)鍵字檢索的語義進(jìn)行說明
本發(fā)明將用戶提交的査詢定義為一個包含/t個關(guān)鍵字的集合W = {w,小 = l,...,yt},將XML
數(shù)據(jù)定義為一棵XML文檔樹
定義1: XML文檔樹(XML Document Tree)。
一棵XML文檔樹可以被表示為一個2
元組r, r = (F,£), W蛇(^)是在XML文檔樹上進(jìn)行的操作,其中
K是樹上所有節(jié)點的集合,并且每個節(jié)點都有唯一的Dewey編碼; 五GFxh是樹上邊的集合。
函數(shù),用來獲得Dewey編碼為c/w的節(jié)點的值;
另外規(guī)定對于XML樹上的兩個節(jié)點v和v',式子v ^ v'表示節(jié)點v是節(jié)點v'的祖先或
者i;和v'是同一個節(jié)點。
定義2: SLCA(最小最低公共祖先)。 一棵XML文檔樹上的一個節(jié)點被稱為一組關(guān)鍵 字集合『的SLCA的節(jié)點,如果這個節(jié)點滿足(l)標(biāo)簽中或者后代節(jié)點的標(biāo)簽中包含所 有關(guān)鍵字,(2)沒有任何一個后代節(jié)點是SLCA節(jié)點。
如例1中用戶提交的三個關(guān)鍵字"Com; w^"、 "Gratfe"和'Tow"。則其SLCA節(jié)點為 File(0.0.0.0)、File(0丄0.0)、 File(0丄0,l)和Staff(0.1.3.0)。
定義3:安全說明(Security Specifications)。安全說明S是一個二元組S-(A頻),其中Z>表示一個XML文檔的Schema,為Schema上每條有向邊定義一個函數(shù)a朋(A",其中 A表示Schema上的一個節(jié)點,B表示節(jié)點A的子節(jié)點,如果函數(shù)"mz(A"在Schema上 被顯示定義的話會是下面的這樣一個表達(dá)式
薩(A一y l[g]liv
其中,L [《],iV分別表示在一個Schema中節(jié)點A的子節(jié)點B是可訪問,條件訪問
和不可訪問的,另外《是用XPath表示的條件訪問語句。如果函數(shù)a""(J,5)在Schema上
沒有被顯式定義,節(jié)點B的可訪問性就繼承了節(jié)點J的可訪問性。從另一方面來說,如果
函數(shù)朋"04,£)被顯式定義,節(jié)點B的可訪問性就覆蓋了節(jié)點^的可訪問性。
以圖2中的Schema為考察對象,例1中的安全訪問規(guī)則可以形式化地定義成如圖3 所示的安全說明。
將這個安全說明在Schema上標(biāo)識出會得到如圖4所示的一個安全視圖92表示 條件訪問,其中w=Company/Dept[@"e/^V(7=^^"—Z)印M^],表示只有本部門的員工才能 訪問本部門內(nèi)部信息;gfCompany /Dept[@£>ej^M)!="柳OOl"],表示部門編號為"柳001" 的部門里的所有文件都是不可見的;而^-Company/ Dept/Files/File [@G/y^>2],表示只 有File節(jié)點的子節(jié)點Gmcfe的值大于1的情況下這個File節(jié)點才是可訪問的;對于不可訪 問的節(jié)點用虛線邊來標(biāo)記,同時在邊上打上標(biāo)識符"N",而沒有被標(biāo)記的節(jié)點都是可訪問 節(jié)點,或者都繼承了父節(jié)點的可訪問性。
定義4:條件訪問的節(jié)點(ConditionaUyAccessibleNode)。在定義了安全說明的Schema 上,如果一種類型的節(jié)點需要滿足某個條件才能被訪問,稱這種類型的節(jié)點為條件訪問的 節(jié)點。因此,在與這個Schema對應(yīng)的XML文檔上,所有這種類型的節(jié)點都可以被稱為條件 訪問的節(jié)點。
定義5: SSLCA(安全的最小最低公共祖先)。 一顆定義了安全訪問規(guī)則的XML文檔樹 上的一組關(guān)鍵字集合PT的SLCA節(jié)點被稱為SSLCA節(jié)點,如果這個SLCA節(jié)點滿足所有的安 全訪問規(guī)則。
根據(jù)上面的定義和圖4,圖1中節(jié)點類型為Z)卬"A7m, F,7e的節(jié)點分別滿足條件 W, &, ^的情況下才能被訪問,所以節(jié)點Dept(O.O)、 Files(O.O.O)、 File(O.O.O. 0)、 Dept(O.l)、 Files(0丄0)、 File(O.l,O.O)、 File(0丄0.1)都是條件訪問的節(jié)點。而File(0丄0.0)和Staff(0丄3.0) 兩個節(jié)點即為SSLCA節(jié)點。
定義6:條件相關(guān)的節(jié)點(Conditionally Relative Node)。因為條件訪問節(jié)點所滿足的條件是用XPath語句表示的,而XPath語句記錄了通過這條語句能夠訪問到的目標(biāo)節(jié)點的路徑 信息,所以本發(fā)明把通過某條件訪問節(jié)點的XPath條件語句所能訪問到的目標(biāo)節(jié)點稱為與 此條件訪問節(jié)點條件相關(guān)的節(jié)點。
如圖1和圖4所示,節(jié)點Dept(O.O)、 Files(O.O.O)、 File(O.O.O.O)都是條件訪問的節(jié)點, 他們所需要滿足的條件分別為^, ^, 通過^, ^可知,與節(jié)點Dept(O.O)、 Files(O.O,O) 條件相關(guān)的節(jié)點都為Dept(0.0)節(jié)點下的DeptNo(0.0.2)節(jié)點;與節(jié)點File(0.0.0.0)條件相關(guān) 的節(jié)點為File(0.0.0.0)節(jié)點下的Grade(0.0.0.0.1)節(jié)點。
下面對本發(fā)明方法作進(jìn)一步描述。
1、建立基于Schema安全說明的XML索引
由于本發(fā)明的索引是基于Schema安全說明的索引,所以在遍歷XML文檔樹的過程 中必須得考慮對于安全說明中相關(guān)條件和變量的記錄。
具體做法如下為XML文檔中的每個節(jié)點v維護兩部分信息 一是節(jié)點的Dewey編 碼,用表示;二是對每個條件訪問的節(jié)點,要維護一個與這個節(jié)點條件相關(guān)的 節(jié)點列表,用v./z'rf表示。在遍歷XML文檔樹的過程中,為每個節(jié)點v計算Dewey編碼的 時候同時進(jìn)行如下操作如果v是一個不可訪問節(jié)點,則在中存放一個標(biāo)識符"N", 表示節(jié)點v不可訪問;如果v是一個條件訪問的節(jié)點,在Schema中找出與節(jié)點v的節(jié)點 類型條件相關(guān)的節(jié)點類型,取這兩種節(jié)點類型的最低公共祖先,標(biāo)識為M。然后在XML 文檔中,自底向上找出節(jié)點v的祖先中類型為M的節(jié)點,標(biāo)識為m,則m^v,并且與節(jié)
點v條件相關(guān)的節(jié)點必然在節(jié)點w的子節(jié)點中,因此,只要把節(jié)點m的子節(jié)點中與節(jié)點v 條件相關(guān)的所有節(jié)點的值放入v./W中即可獲得與節(jié)點v條件相關(guān)的所有節(jié)點的信息。如果 遍歷到節(jié)點v時,節(jié)點m的子節(jié)點還沒有被遍歷到,就在節(jié)點v里面記錄下節(jié)點m的Dewey 編碼,當(dāng)下次遍歷到節(jié)點m的其他子節(jié)點時再把這些子節(jié)點中所有與節(jié)點v條件相關(guān)的節(jié) 點的Dewey編碼放入v./W中。當(dāng)一次遍歷完整個XML文檔樹后,基于Schema的安全說 明的索引就建立起來了。
按照上面的方法,當(dāng)一次遍歷完整棵XML文檔樹后,XML文檔樹的Dewey編碼如 圖1所示,其中需要條件訪問的節(jié)點的list變量中的信息分別如下
Dept (O.O).fcF {0.0.2} Files (O.O.O).fct {0.0.2} File (0,0.0.0)./^/= {0.0.0.0.1} Age (0.0.3.0.l)."爐W Salary (0.0. 3.0,2).to= {N}Dept(0.1).fo/= {0丄2} Files (O丄O)力爐{0.1.2} File (0.1,0.0).// ^= {0.1.0.0.1} File (0.1.0.1 {0.1.0.1.1} Age (0.1.3,0.{N} Salary (0.1.3.0.2).fc戶{N}
2、根據(jù)基于安全說明的XML索引尋找SSLCA
使用Schema安全說明的索引計算SSLCA的時候,所采取的方法是從給出的關(guān)鍵
字集合w-W,l"i,...,W中,得到一個符合這些關(guān)鍵字查詢的SLCA節(jié)點的集合丄,然后從
Z中逐個取出SLCA來判斷當(dāng)前被取出來的SLCA是否滿足安全說明。 具體的做法分以下四個步驟
(1) 先判斷以當(dāng)前SLCA節(jié)點為根的子樹(下面簡稱"SLCA的子樹")是否包含不 可訪問節(jié)點,如果不包含則直接跳轉(zhuǎn)到步驟(3),如果包含就把所有的不可訪問節(jié)點從這個 SLCA子樹中裁剪掉;
(2) 再判斷被裁剪過的SLCA的子樹是否包含所有關(guān)鍵字,如果包含,則到轉(zhuǎn)步驟 (3),否則直接轉(zhuǎn)到步驟(4);
(3) 使用自底向上的方法找出從這個SLCA節(jié)點到Schema的根節(jié)點的路徑,然后根 據(jù)所建立的XML索引使用自頂向下的方法,從根節(jié)點到這個SLCA節(jié)點逐個判斷在這條 路經(jīng)上是否每個節(jié)點和SLCA子樹的節(jié)點是否都滿足各自的安全說明,如果不滿足則到步 驟(4),全部滿足則保留該SLCA,使其成為一個SSLCA;
(4) 把當(dāng)前的SLCA從丄中刪除。
例3.例1中用戶提交了三個關(guān)鍵字"Computer"、 "Grade"和"Tom"。使用SLCA的方
法可以得到 一 個由四個滿足條件的SLCA節(jié)點組成的集合L={Hfe(0.0.0.0) F&(0丄0.0),何e(0丄0.1),Sto/"(0丄1.0》對于SLCA節(jié)點File(O.O.O.O)不包含不可訪問節(jié)點,使用
bottom-up方法找到其到根的路徑為Cow/wy/CO)—"印"O.O) —/^/^(0.0.0)—尸z'/e(0.0.0.0),假
設(shè)當(dāng)前登錄系統(tǒng)的用戶的S/og/"一D印WVo-"湘002"根據(jù)已建立的索引,使用top-town算法可 知,節(jié)點Company(O)是可訪問節(jié)點,Dept(O.O)是條件訪問節(jié)點,并且Dept(0.0).//^={0.0.2}, value(0.0.2)="糾001"而用戶的S/ogz'"—De; /M)="#0002",所以節(jié)點Dept(O.O)違反了圖4中 安全說明的條件g;,因此,SLCA節(jié)點File(O.O.O.O)將從集合L中刪除。同理,對于SLCA 節(jié)點File(O丄O.O)違反了圖4中安全說明條件&,這個SLCA節(jié)點也會從集合L中刪除;對于SLCA節(jié)點File(0丄0.1)滿足圖4中所有安全說明條件,這個SLCA節(jié)點將會被保留;而 對于以SLCA節(jié)點Staff(0丄3.0)為根的應(yīng)答子樹,裁剪掉所有不可見節(jié)點。之后,發(fā)現(xiàn)在 以Staff(0.1.3.0)節(jié)點為根的應(yīng)答子樹的剩余部分中仍然包含了所有關(guān)鍵字,接著使用自底 向上和自頂向下的方法檢査該節(jié)點到根的路徑,發(fā)現(xiàn)其完全符合圖4中所有的安全說明, 這時集合丄中只剩下兩個滿足安全說明SLCA節(jié)點(File(O丄O.l), Staff(0丄3.0)),這兩個 節(jié)點都是SSLCA節(jié)點,系統(tǒng)最后會把以這兩個SSLCA節(jié)點為根的XML文檔片斷(經(jīng)過 裁剪剩下的部分)返回給用戶。
綜上,本發(fā)明第一次提出在基于SLCA的XML關(guān)鍵字檢索中進(jìn)行安全訪問控制的問 題,把XML安全訪問控制問題和XML關(guān)鍵字檢索技術(shù)相結(jié)合,并提出了一個完整的解決 方案,具下面獨特的特性
1形式化定義了安全的XML關(guān)鍵字搜索結(jié)果SSLCA的概念,并提出了尋找SSLCA 的方法。
2給出基于模式(Schema)安全說明的索引建立方法。 3給出基于該索引來尋找SSLCA的算法SIL。 4通過實驗證明了本發(fā)明使用的算法是高效的。
基于安全說明的XML關(guān)鍵字檢索本質(zhì)上是對加了安全說明的XML文檔建立索引,然 后在此索引的基礎(chǔ)上進(jìn)行關(guān)鍵字檢索,尋找安全的最小最低公共祖先(SSLCA)的過程。
圖1為XML文檔圖示。
圖2為XML Schema圖示。
圖3為基于Schema的安全說明圖示。
圖4為安全說明在Schema上的反映圖示。
圖5為IL方法與SIL方法執(zhí)行效率比較。
其中(a)為在數(shù)據(jù)集T1中的結(jié)果比較,(b)為在數(shù)據(jù)集T2中的結(jié)果比較,(c)為在 數(shù)據(jù)集T3中的結(jié)果比較,(d)為在DBLP中的結(jié)果比較。
具體實施例方式
發(fā)明人使用Java分別實現(xiàn)了 XKSearch[2]中的IL方法和本發(fā)明方法(記為SIL方法), 對這兩個方法主要在查詢效率上做了比較。實驗環(huán)境的配置是CPU為Intel Pentium 1.73GHz,內(nèi)存為1G?;诎踩L問控制的XML關(guān)鍵字檢索過程主要包括兩部分,第一部分是建立基于 Schema的安全說明的索引,第二部分是利用該索引計算SSLCA。算法使用偽碼分別描述
如下
建立索引的偽碼如下
輸入XML文檔樹T,它的根節(jié)點r和基于Schema的安全說明S 輸出符合Schema安全說明的經(jīng)過編碼的XML文檔樹T'
12. r. deweyNo = 0;
13. recursiveTraverse(r》14.
15. Function recursiveTraverse(v)
16. If v is a type of unaccessible node according to S
17. add'N'to v.list;
18. If v is a type of conditionally accessible node
19. add v's all conditionally relative nodes to v.list;
20. For each children node wi of v
21. generate wi.deweyNo according to v.deweyNo
recursive丁raverse(wi )。 計算SSLCA的算法的偽碼如下
輸入經(jīng)過編碼的XML文檔樹r,和一組關(guān)鍵字集合『=^附I/ =
輸出SSLCA節(jié)點集合
15. Get all SLCA nodes丄for the keywords『
16. Foreach SLCA node s in丄
17. if s contains the inaccessable nodes
18. Remove the inaccessable nodes from s ;
19. check whether s still contains all the keywords;
20. if not
21. delete s from丄;
22. expand a path from s to it's all ancestors untill root;
23. check each node in this path from root to s;
24. if there is one node doesn't satify its security specification;
25. Delete s from丄;
26. else check each children node in s
27. if there is one node doesn't satify its security specification Delete 51 from丄。
XML數(shù)據(jù)集為了使得實驗結(jié)果更加真實,本發(fā)明既使用了人工數(shù)據(jù)集又使用了實際 數(shù)據(jù)集進(jìn)行實驗。
人工數(shù)據(jù)集使用IBM的XML文檔生成工具[10]基于本發(fā)明自己的Schema (圖2)生 成的三個不同的數(shù)據(jù)集T1(15.7M)、 T2(23.5M)、 T3(35.2M)。實際數(shù)據(jù)集使用http:〃dblp.uni-trier.de/xm1/提供的DBLP數(shù)據(jù)集和Schema,實驗中 的DBLP數(shù)據(jù)集大小為47M。
在查詢效率上對這兩個方法進(jìn)行了比較實驗中,本發(fā)明隨機選擇在數(shù)據(jù)集中出現(xiàn)頻 率為1000-1500次的關(guān)鍵字進(jìn)行實驗,基于關(guān)鍵字個數(shù)的不同,分別對T1、T2、T3和DBLP 這四個數(shù)據(jù)集比較了[2]中的IL方法和SIL方法在執(zhí)行效率上的差異,實驗結(jié)果如圖5中 所示。從圖中可以看出SIL方法的執(zhí)行時間總是比IL方法的執(zhí)行時間要長,那是因為在用 IL方法算出SLCA結(jié)果后,還要對結(jié)果中的SLCA進(jìn)行篩選,淘汰掉不滿足Schema安全 說明的SLCA才能得到最后的SSLCA。雖然這個步驟需要額外的時間開銷,但是相對于原 來的效率比增幅都很小。
參考文獻(xiàn) L.Guo,F.Shao,C.Botev,and J.Shanmugasundaram. XRANK: Ranked Keyword Search over XML Documents. [C]〃SIG MOD ,2003. San Diego, California,2003. Y. Xu, Y. Papakonstantinou. Efficient Keyword Search for Smallest LCAs in XML
Databases. [C]〃SIGMOD, 2005. Baltimore, Maryland, USA,2005:527-538 [3] Y. Li, C. Yu, and H.V. Jagadish. Schema-Free XQuery. [C]〃 Proceedings of the 30th VLDB
Conference, 2004, Toronto, Canada, 2004:72-83. [4] V. Hristidis, N. Koudas, Y. Papakonstantinou, and D. Srivastava. Keyword Proximity
Search in XML Trees. [C]〃IEEE Transactions on Knowledge and Data Engineering,
2006:525-539. S. Cohen, J. Mamou, Y. Kanza, and Y. Sagiv. XSEarch: A Semantic Search Engine for
XML. [q〃 Proceedings of the 29th VLDB Conference, Berlin, Germany, 2003. [6] G. Li, J. Feng, J. Wang, and L. Zhou. Effective Keyword Search for Valuable LCAs over
XML Documents. [C]〃CIKM, 2007, Lisboa, Portugal,2007:l-10. [7] Z. Liu and Y. Chen. Identifying Meaningful Return Information for XML Keyword Search.〃SIGMOD, 2007. Beijing, China,2007:329-340. [8] Z. Liu and Yi Chen. Reasoning and Identifying Relevant Matchesfor XML Keyword Search.//VLDB,2008. Auckland, New Zealand,2008. [9] C. Sun, C. Chan, and A.K. Goenka. Multiway SLCA-based Keyword Search in XML Data.〃WWW, 2007.Banff, Alberta, Canada,2007:1043-1052. [10〗Angel Luis Diaz and Douglas Lovell. XML Generator, http:〃、vw、v.alphavvo
rks .ibm.com/tech/xmlgeiierator,[M]〃September 1999. M.Dewey, Dewey Decimal Classification System, http :〃www. mtsu.edu /\'vesper /dewey.html.Gabriel Kuper, Fabio Massacci, Nataliya Rassadko. Generalized XML Security Views. [C]〃SACMAT, 2005.W. Fan, C.-Y.Chan, and M Garofalakis. Secure XML querying with security views.〃SACMAT'05, Stockholm, Sweden,2005:77-84. [14] S. Mohan, A. Sengupta, and Y. Wu. Access control 'for XML-a dynamic query rewriting
approach. [C]〃 Proceedings of the 31st VLDB Conference, Trondheim, Norway, 2005:1-12. [15] Trondheim, Norway, 2005 S. Mohan, J. Klinginsmith, A. Sengupta, and Y. Wu. Access
control for XML with enhanced security specifications. [C]〃ICDE, 2006. Atlanta, Georgia,USA,2006:1-1I. Fundulaki and M. Marx, Specifying access control policies for XML documents with
XPath. [C]〃SACMAT,04. New York, USA,2004 [17]Sriram Mohan, Yuqing Wu. IP AC-An Interactive Approach to Access Control for
Semi-Structured Data. [C]〃 VLDB 、06, Seoul, Korea 2006:1147-1150. [18]Bogdan Cautis. Distributed Access Control:A Privacy conscious Approach. [C]〃
SACMAT,07, Sophia Antipolis, France,2007:61-70.
權(quán)利要求
1.一種安全的XML關(guān)鍵字檢索方法,其特征在于具體步驟如下1)建立基于模式Schema安全說明的XML索引,首先對XML文檔的Schema建立安全說明,然后通過對XML文檔進(jìn)行深度優(yōu)先遍歷,使用Dewey編碼的方式對節(jié)點進(jìn)行編碼,在遍歷過程中同時考慮到Schema的安全說明,當(dāng)遍歷完一遍XML文檔數(shù)時,即建立了基于Schema的安全說明的索引;索引的結(jié)構(gòu)是倒排索引,以鍵-值對的結(jié)構(gòu)存放,鍵即是關(guān)鍵字,值即是關(guān)鍵字在XML文檔中所在節(jié)點的Dewey編碼組成的列表,同時,值列表中每個節(jié)點還維護一個list變量,用于存放與此節(jié)點條件相關(guān)的節(jié)點信息;2)根據(jù)基于Schema安全說明的XML索引尋找SSLCA,運行時,用戶提交關(guān)鍵字查詢,通過倒排索引計算出關(guān)鍵字的SLCA節(jié)點的Dewey編碼值,利用每個節(jié)點list變量存放的信息對SLCA節(jié)點進(jìn)行剪枝和淘汰,得到最后的SSLCA節(jié)點;3)最后把得到的SSLCA節(jié)點返回給用戶;其中,XML為可擴充標(biāo)記語言,SLCA為最小最低公共祖先,SSLCA為安全的最小最低公共祖先。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于基于模式Schema安全說明建立XML索 引的具體步驟如下1) 為XML文檔中的每個節(jié)點v維護兩部分信息 一是節(jié)點的Dewey編碼,用 VJeWe>Wo表示;二是對每個條件訪問的節(jié)點,維護一個與這個節(jié)點條件相關(guān)的節(jié)點列表, 用vJ/j/表示。2) 在遍歷XML文檔樹的過程中,為每個節(jié)點v計算Dewey編碼的同時進(jìn)行如下操 作如果v是一個不可訪問節(jié)點,則在v./W中存放一個標(biāo)識符"N",表示節(jié)點v不可訪問; 如果v是一個條件訪問的節(jié)點,在Schema中找出與節(jié)點v的節(jié)點類型條件相關(guān)的節(jié)點類 型,取這兩種節(jié)點類型的最低公共祖先,標(biāo)識為M;然后在XML文檔中,自底向上找出節(jié)點v的祖先中類型為M的節(jié)點,標(biāo)識為m,則m^v,并且與節(jié)點v條件相關(guān)的節(jié)點必然在節(jié)點附的子節(jié)點中;把節(jié)點m的子節(jié)點中與節(jié)點v條件相關(guān)的所有節(jié)點的值放入 中即可獲得與節(jié)點v條件相關(guān)的所有節(jié)點的信息;如果遍歷到節(jié)點v時,節(jié)點m的子節(jié)點 還沒有被遍歷到,就在節(jié)點v里面記錄下節(jié)點w的Dewey編碼,當(dāng)下次遍歷到節(jié)點附的 其他子節(jié)點時再把這些子節(jié)點中所有與節(jié)點v條件相關(guān)的節(jié)點的Dewey編碼放入v./z'W中; 當(dāng)一次遍歷完整個XML文檔樹后,基于模式Schema的安全說明的索引就建立起來了 。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于基于模式Schema安全說明的XML索引計算SSLCA的做法如下從給出的關(guān)鍵字集合^- ,|/ = 1,...,^中,找出一個符合這些關(guān)鍵字査詢的SLCA節(jié)點的集合丄,然后從集合丄中逐個取出SLCA來,并判斷當(dāng)前被取出來的SLCA節(jié)點是否 滿足安全說明;具體分以下四個步驟步驟(1)先判斷以當(dāng)前SLCA節(jié)點為根的子樹,簡稱"SLCA的子樹",是否包含不 可訪問節(jié)點,如果不包含則直接跳轉(zhuǎn)到步驟(3),如果包含就把所有的不可訪問節(jié)點從這個 SLCA子樹中裁剪掉;步驟(2)再判斷被裁剪過的SLCA的子樹是否包含所有關(guān)鍵字,如果包含,則到轉(zhuǎn) 步驟(3),否則直接轉(zhuǎn)到步驟(4);步驟(3)使用自底向上的方法找出從這個SLCA節(jié)點到Schema的根節(jié)點的路徑,然 后根據(jù)所建立的XML索引使用自頂向下的方法,從根節(jié)點到這個SLCA節(jié)點逐個判斷在 這條路經(jīng)上是否每個節(jié)點和SLCA子樹的節(jié)點是否都滿足各自的安全說明,如果不滿足則 到步驟(4),全部滿足則保留該SLCA,使其成為一個SSLCA;步驟(4)把當(dāng)前的SLCA從i:中刪除。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于所述建立XML索引的偽碼如下 輸入XML文檔樹T,它的根節(jié)點r和基于Schema的安全說明S輸出符合Schema安全說明的經(jīng)過編碼的XML文檔樹T'1. r. deweyNo = 0;2. recursiveTraverse(r);4. Function recursiveTraverse(v)5. If v is a type of unaccessible node according to S6. add 'N' to v.list;7. If v is a type of conditionally accessible node8. add v's all conditionally relative nodes to v.list;9. For each children node wi of v10. generate wi.deweyNo according to v.deweyNo11. recursiveTraverse(wi)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于計算SSLCA的偽碼如下 輸入經(jīng)過編碼的XML文檔樹r,和一組關(guān)鍵字集合『=f附I / = A."輸出SSLCA節(jié)點集合1. Get all SLCA nodes丄for the keywords『2. Foreach SLCA node s in丄3. if s contains the inaccessable nodes4. Remove the inaccessable nodes from s ;5. check whether s still contains all the keywords;6. if not7. delete s from丄;8. expand a path from s to it,s all ancestors imtill root;9. check each node in this path from root to s;10. if there is one node doesn,t satify its security specification;11. Delete ^ from12. else check each children node in s13. if there is one node doesn't satify its security specification14. Delete s from丄。
全文摘要
本發(fā)明屬于可擴充標(biāo)記語言(XML)關(guān)鍵字檢索技術(shù)領(lǐng)域,具體為一種安全的XML關(guān)鍵字檢索方法。本發(fā)明結(jié)合XML關(guān)鍵字搜索和XML安全控制,首次研究基于安全訪問控制的XML關(guān)鍵字檢索技術(shù),包括在XML關(guān)鍵字的最小最低公共祖先(SLCA)和基于視圖的安全訪問控制規(guī)則的基礎(chǔ)上,確定基于安全訪問控制規(guī)則的XML關(guān)鍵字檢索結(jié)果(SSLCA);建立基于安全視圖的關(guān)鍵字索引;以及在此基礎(chǔ)上的關(guān)鍵字檢索算法(SIL)。本發(fā)明方法實現(xiàn)了高效、安全的關(guān)鍵字檢索。
文檔編號G06F17/30GK101615190SQ20091005581
公開日2009年12月30日 申請日期2009年7月31日 優(yōu)先權(quán)日2009年7月31日
發(fā)明者李曉東, 楊衛(wèi)東 申請人:復(fù)旦大學(xué)