專利名稱:一種大規(guī)模數(shù)據(jù)集上的關(guān)系查詢方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域、語義網(wǎng)領(lǐng)域,涉及一種大規(guī)模數(shù)據(jù)集上的帶標簽限制的關(guān)系查詢方法。
背景技術(shù):
語義數(shù)據(jù)是一種表示實體的屬性信息以及實體之間語義關(guān)系的數(shù)據(jù),一般以三元組的集合形式來表示,三元組的格式為〈主體,謂詞,客體〉。例如〈北京航空航天大學(xué),校長,懷進鵬 >,< 懷進鵬,畢業(yè)于,吉林大學(xué) >,......,< 吉林大學(xué),校長,展?jié)?gt;。語義數(shù)據(jù)有一種很重要的用途即語義推斷,以上面的三元組為例,我們可以推斷出北京航空航天大學(xué)到展?jié)囊环N關(guān)系,在傳統(tǒng)的關(guān)系查詢方法中,往往使用2-hop之類的方法對路徑進行索引,不過隨著圖的規(guī)模不斷增長,該類方法的索引計算量也隨之劇增, 相應(yīng)的計算時間也急劇加大,可見傳統(tǒng)的關(guān)系查詢方法已經(jīng)不能滿足日益增長的實體關(guān)系查詢的要求。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出了一種大規(guī)模數(shù)據(jù)集上的關(guān)系查詢方法,用以支持海量數(shù)據(jù)的關(guān)系查詢,并且很好地支持了擴展性。本發(fā)明的技術(shù)方案為一種大規(guī)模數(shù)據(jù)集上的關(guān)系查詢方法,其步驟為1)提供或建立語義數(shù)據(jù)圖的語義數(shù)據(jù)有向圖;2)針對語義數(shù)據(jù)有向圖中每一種標簽,計算只包含同一種標簽的連通子圖;3)對步驟2、得到的連通子圖進行合并,將所述語義數(shù)據(jù)有向圖劃分為若干子圖;4)計算步驟幻合并后的每一子圖中最強連通子圖C,并計算其二部圖,得到進入 C的邊界點集合S1和從C出去的邊界點集合& ;5)對于每一最強連通子圖C,利用基于標簽的最短路徑搜索方法計算S1中每個點到&中每個點的最短路徑,將所有最強連通子圖的所述最短路徑存儲到一路徑集合RS中;6)記錄步驟幻劃分的每一子圖中具有標簽非冗余路徑的兩個點的標簽,得到每一子圖的標簽集合;7)利用所述標簽集合判斷語義數(shù)據(jù)有向圖中是否存在符合查詢條件的路徑;如果有,則返回查詢路徑結(jié)果;否則,在子圖之間進行遍歷,根據(jù)所述路徑集合RS確定可到達目標節(jié)點的子圖,然后利用該子圖的標簽集合返回查詢路徑結(jié)果。進一步的,對步驟幻得到的連通子圖進行合并的方法為針對每一個連通子圖, 首先計算其E(ρ)/C(ρ)的值,其中E(p)代表連通子圖中邊的數(shù)目,C(p)代表連通子圖中的連通區(qū)域數(shù)目;然后選擇E(ρ)/C(ρ)值最大的兩個連通子圖進行合并,其中合并后的子圖中包含的標簽數(shù)要小于設(shè)定的最大標簽數(shù),子圖中的節(jié)點數(shù)要小于設(shè)定的最大節(jié)點數(shù)。進一步的,如果查詢條件中的路徑標簽是當(dāng)前子圖的標簽集集合,則判定語義數(shù)據(jù)有向圖中存在符合查詢條件的路徑。進一步的,采用2-hop方法對步驟幻劃分的每一子圖建立索引,記錄每一子圖中具有標簽非冗余路徑的兩個點的標簽。進一步的,所述語義數(shù)據(jù)有向圖的建立方法為1)將語義數(shù)據(jù)圖中的實體抽象成點,將實體之間的關(guān)系抽象成有向邊;2)將同一種關(guān)系對應(yīng)的邊抽象成一個標簽;其中,標簽代表邊的種類,點與點之間的路徑長度為該路徑上標簽的種類數(shù)。進一步的,所述基于標簽的最短路徑搜索方法為dijkstra算法。本發(fā)明實施提出了一種基于標簽的分圖方法,包括禾Ij用標簽的數(shù)目與圖的連通區(qū)域數(shù)目的比值來確定子圖結(jié)合的順序。利用設(shè)定的查詢子圖標簽總數(shù)和查詢子圖中點的數(shù)目來約束查詢子圖的大小。本發(fā)明實施提出了一種將帶有標簽的有向圖轉(zhuǎn)變成帶有標簽的二部圖的方法,包括確定該圖的最強連通分支;找到每個連通分支內(nèi)的兩類邊界點,并利用基于標簽的最短路徑搜索方法確定該二部圖。本發(fā)明實施提出了一種基于分層的查詢方法,包括利用分圖方法的特性,采用提前計算加上臨時搜索的方法來查詢關(guān)系。與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為本發(fā)明首次提出了以標簽作為主要考慮因素的分圖方法,并且用實驗證明了該方法的優(yōu)越性,而且首次提出了將圖分塊的想法進行關(guān)系查詢,并改進了 di jkstra算法以適應(yīng)于現(xiàn)在的問題,支持海量數(shù)據(jù)的關(guān)系查詢,并且很好地支持了擴展性。
圖1為該發(fā)明的總體方法流程圖。圖2為抽象出的有向圖。圖3為劃分最強連通子圖的示例圖。圖4為合并子圖的示例圖。圖5為將帶有標簽的有向圖轉(zhuǎn)化為帶有標簽的二部圖的示例圖。
具體實施例方式本發(fā)明實例是基于實體關(guān)系查詢的功能。發(fā)明的總體方法流程圖如圖1所示在實例中,抽象有向圖的方法包括步驟101 將語義數(shù)據(jù)圖中的實體抽象成點,將實體之間的關(guān)系抽象成有向邊。步驟102 將同一種關(guān)系對應(yīng)的邊抽象成一個標簽。圖2就是一個已經(jīng)被抽象了的有向圖,其中標簽代表邊的種類,在這里,我們定義點與點之間的路徑長度為該路徑上標簽的種類數(shù)。如圖2所示,從點1到點5存在兩條路徑,分別為Pl(l,2,5)、P2(l,2,3,4,5),兩條路徑的標簽集合分別為{a,b}和{a},則根據(jù)我
4們以上的定義,P1的長度為2,p2的長度為1。在實施例中,基于標簽的分圖方法包括步驟201 分別針對每一種標簽去計算只包含該標簽的連通子圖。為了提高查詢的性能,我們需要減少IO的次數(shù)和在查詢階段所做的遍歷,所以我們將語義數(shù)據(jù)有向圖分塊,而傳統(tǒng)的分圖方法基本上都只考慮圖的結(jié)構(gòu),比如說“min-cut” 是一個經(jīng)常用來衡量分圖好壞的標準,而這里的關(guān)系查詢主要考慮的是標簽,所以我們發(fā)明了一種以標簽作為主要考慮因素的分圖方法。以圖2為例,我們針對標簽a、b、c、d、e、f六種標簽都計算一下圖2的連通子圖, 可得到如圖3所示的分塊。步驟202 根據(jù)規(guī)則選擇合適的子圖進行合并。為了合并子圖,我們提出一個啟發(fā)式的算法,針對每一個子圖,首先計算相應(yīng)的 E(ρ)/C(p),其中E(p)代表子圖ρ中邊的數(shù)目,C(p)代表子圖中的連通區(qū)域數(shù)目,接著我們選擇E(p)/C(p)值最大的兩個子圖進行合并,但是合并后的子圖要滿足兩個要求,即合并后的子圖中包含的標簽數(shù)要小于設(shè)定的最大標簽數(shù),子圖中的節(jié)點數(shù)也要小于設(shè)定的最大節(jié)點數(shù)。圖4就是合并圖3的一個例子我們通過計算,得到每個初始子圖的E (ρ) /C (ρ)值,發(fā)現(xiàn)含有標簽a的子圖該值最大并且為7,含有標簽b的子圖該比值次大并且為2,根據(jù)我們的啟發(fā)式規(guī)則,將這兩個子圖
合并在一起。利用上述的算法可以將一個有向圖分為若干個子圖。如圖2所示,P1, P2和P3就是分成的三個子圖。在實施例中,將帶有標簽的有向圖轉(zhuǎn)化為帶有標簽的二部圖的方法包括步驟301 計算有向圖中每一子圖的最強連通子圖。在計算帶標簽有向圖的最強連通子圖時,忽略邊上的標簽,只需考慮連通性。在有向圖G中,如果任意兩個不同的頂點可達,則稱該有向圖是強連通的,有向圖的極大強連通子圖稱為G的強連通分支。如圖5所示,圖5是圖2的P1子圖,根據(jù)定義,虛線框內(nèi)的子圖即C1是一個強連通分支。步驟302 針對步驟301中得到的最強連通子圖計算相應(yīng)的二部圖,其中兩類端點分別是進入該子圖的邊界點和離開該子圖的邊界點。以圖5為例,C1是已經(jīng)被識別出來的強連通分支,針對C1,首先識別出兩類端點,一類是進入C1的邊界點,如2、3,標記為S1,一類是從C1出去的邊界點,如3、4,標記為S2,接著利用基于標簽的最短路徑搜索方法計算S1中的每個點到&中每個點的最短路徑,最短路徑搜索方法會在步驟4中進行介紹,如圖2所示,點2到點3的最短路徑只包含標簽{a}。在實施例中,基于標簽的最短路徑搜索方法包括步驟401 將語義數(shù)據(jù)有向圖中路徑的長度定義為組成該路徑的標簽種數(shù)。步驟402 利用dijkstra算法計算二部圖中兩類點兩兩之間標簽數(shù)目最少的路徑。根據(jù)我們對路徑的定義,使用di jkstra算法,我們可以保證,在遇到標簽冗余的路徑之前已經(jīng)獲得所有標簽非冗余的路徑,以圖1為例,我們計算從點1到點6之間的標簽非冗余的路徑。根據(jù)di jkstra算法(迪克斯特拉算法),我們可以得到如下的結(jié)果表 權(quán)利要求
1.一種大規(guī)模數(shù)據(jù)集上的關(guān)系查詢方法,其步驟為1)提供或建立語義數(shù)據(jù)圖的語義數(shù)據(jù)有向圖;2)針對語義數(shù)據(jù)有向圖中每一種標簽,計算只包含同一種標簽的連通子圖;3)對步驟幻得到的連通子圖進行合并,將所述語義數(shù)據(jù)有向圖劃分為若干子圖;4)計算步驟幻合并后的每一子圖中最強連通子圖C,并計算其二部圖,得到進入C的邊界點集合S1和從C出去的邊界點集合& ;5)對于每一最強連通子圖C,利用基于標簽的最短路徑搜索方法計算S1中每個點到& 中每個點的最短路徑,將所有最強連通子圖的所述最短路徑存儲到一路徑集合RS中;6)記錄步驟幻劃分的每一子圖中具有標簽非冗余路徑的兩個點的標簽,得到每一子圖的標簽集合;7)利用所述標簽集合判斷語義數(shù)據(jù)有向圖中是否存在符合查詢條件的路徑;如果有, 則返回查詢路徑結(jié)果;否則,在子圖之間進行遍歷,根據(jù)所述路徑集合RS確定可到達目標節(jié)點的子圖,然后利用該子圖的標簽集合返回查詢路徑結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于對步驟2)得到的連通子圖進行合并的方法為針對每一個連通子圖,首先計算其E(p)/C(p)的值,其中E(p)代表連通子圖中邊的數(shù)目,C(p)代表連通子圖中的連通區(qū)域數(shù)目;然后選擇E(ρ)/C(ρ)值最大的兩個連通子圖進行合并,其中合并后的子圖中包含的標簽數(shù)要小于設(shè)定的最大標簽數(shù),子圖中的節(jié)點數(shù)要小于設(shè)定的最大節(jié)點數(shù)。
3.如權(quán)利要求1或2所述的方法,其特征在于如果查詢條件中的路徑標簽是當(dāng)前子圖的標簽集集合,則判定語義數(shù)據(jù)有向圖中存在符合查詢條件的路徑。
4.如權(quán)利要求1或2所述的方法,其特征在于采用2-hop方法對步驟幻劃分的每一子圖建立索引,記錄每一子圖中具有標簽非冗余路徑的兩個點的標簽。
5.如權(quán)利要求1或2所述的方法,其特征在于所述語義數(shù)據(jù)有向圖的建立方法為1)將語義數(shù)據(jù)圖中的實體抽象成點,將實體之間的關(guān)系抽象成有向邊;2)將同一種關(guān)系對應(yīng)的邊抽象成一個標簽;其中,標簽代表邊的種類,點與點之間的路徑長度為該路徑上標簽的種類數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于所述基于標簽的最短路徑搜索方法為 di jkstra 算法。
全文摘要
本發(fā)明公開了一種大規(guī)模數(shù)據(jù)集上的關(guān)系查詢方法,屬于語義網(wǎng)領(lǐng)域。本方法為1)計算語義數(shù)據(jù)有向圖G中只包含同一種標簽的連通子圖;2)合并連通子圖,將有向圖G劃分為若干子圖;3)計算合并后的每一子圖中最強連通子圖C,并計算其二部圖;4)將所有子圖C的最短路徑存儲到一路徑集合RS中;5)記錄劃分的每一子圖中具有標簽非冗余路徑的兩個點的標簽,得到每一子圖的標簽集合;6)利用標簽集合判斷有向圖G中是否存在符合查詢條件的路徑;如果有,則返回查詢路徑結(jié)果;否則,在子圖之間進行遍歷,根據(jù)集合RS確定可到達目標節(jié)點的子圖,然后利用該子圖的標簽集合返回查詢路徑結(jié)果。本發(fā)明支持海量數(shù)據(jù)的關(guān)系查詢,并且擴展性強。
文檔編號G06F17/30GK102332009SQ20111025912
公開日2012年1月25日 申請日期2011年9月2日 優(yōu)先權(quán)日2011年9月2日
發(fā)明者許坤, 賈愛霞, 趙東巖, 鄒磊 申請人:北京大學(xué)