專利名稱:大規(guī)模語義數(shù)據(jù)路徑查詢的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于MapReduce編程框架地圖的路徑搜索技術(shù)領(lǐng)域,尤其涉及了一種 大規(guī)模語義數(shù)據(jù)路徑查詢的方法。
背景技術(shù):
海量數(shù)據(jù)是互聯(lián)網(wǎng)發(fā)展的必然結(jié)果,而大規(guī)模的將現(xiàn)有數(shù)據(jù)語義化則是信息時代 的必然需求?,F(xiàn)在已經(jīng)有不少較大的語義數(shù)據(jù)云,提供大量的語義化的數(shù)據(jù)及其應(yīng)用服務(wù)。關(guān)聯(lián)關(guān)系則是語義網(wǎng)的核心。那么,查詢得到語義關(guān)聯(lián)關(guān)系則是語義網(wǎng)應(yīng)用領(lǐng)域 的一個非常重要的工作,特別是醫(yī)學(xué)、生物領(lǐng)域。數(shù)據(jù)查詢是利用現(xiàn)有數(shù)據(jù)進(jìn)行開發(fā)利用的 一個不可避免的步驟?,F(xiàn)在的查詢語言只做到一般規(guī)模數(shù)據(jù)的普通查詢和路徑查詢,其中,路徑查詢只 能得到處于整個路徑鏈上的起點(diǎn)和終點(diǎn)的本體,沒有給出這條路徑具體是什么,即這兩個 本體是通過怎樣的屬性鏈一步步連接起來的。隨著語義數(shù)據(jù)的增加,處理大規(guī)模語義數(shù)據(jù)的方法也需要解決。MapReduce作為一 種高效地并行處理大規(guī)模數(shù)據(jù)的編程框架在很多領(lǐng)域上都獲得了應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術(shù)中的路徑查詢只能得到處于整個路徑鏈上的起點(diǎn)和終點(diǎn)的 本體,無法看到整個具體路徑的缺點(diǎn),提供了一種采用了 MapReduce的編程模型,不同于現(xiàn) 有的路徑查詢,只返回該路徑上的起點(diǎn)和終點(diǎn)兩個端點(diǎn);而是返回該路徑上的所有點(diǎn),并且 按一定的規(guī)則排序,方便用戶看到整個路徑,了解這些點(diǎn)是怎么連接起來的大規(guī)模語義數(shù) 據(jù)路徑查詢的方法。為了解決上述技術(shù)問題,本發(fā)明通過下述技術(shù)方案得以解決大規(guī)模語義數(shù)據(jù)路徑查詢的方法,包括下列步驟步驟A 需要定制查詢路徑的模式a 查詢路徑的語法查詢路徑表達(dá)式為基于本體的屬性而非字符的正則表達(dá)式, 該路徑表達(dá)式基本能夠滿足查詢需求;b 路徑評估路徑按照難易程度分為以下兩種簡單路徑路徑表達(dá)式只包含連接(sequence)、取反(reverse)和{η},即路徑長 度固定;復(fù)雜路徑路徑表達(dá)式中包含*,?,{},即該路徑的長度可變;步驟B 分析路徑表達(dá)式,將路徑表達(dá)式進(jìn)行拆分所述的簡單路徑需要將路徑表達(dá)式分成幾個更簡單的表達(dá)式,然后將其join(求 交),連接起來,過程中需要迭代,如果其中間結(jié)果不滿足路徑條件,不作為最終結(jié)果;所述的復(fù)雜路徑需要迭代,輸出相應(yīng)的結(jié)果;步驟C =MapReduce工作步驟
c 準(zhǔn)備工作將原路徑表達(dá)式和分析好的路徑表達(dá)式鏈記錄;鏈記錄記錄原路徑 表達(dá)式和分析好的路徑表達(dá)式,分析好的路徑表達(dá)式,類似于一個狀態(tài)轉(zhuǎn)移圖,用于后面判 斷路徑是否符合原路徑表達(dá)式。d =MapReduce的Mapper讀入數(shù)據(jù),其中以語義數(shù)據(jù)三元組中的Ob ject (賓語)和 Subject (主語)作為<key,value〉中的key,以其關(guān)聯(lián)關(guān)系的屬性鏈及賓語作為value,分 發(fā)數(shù)據(jù);Mapper是MapReduce編程框架中的映射函數(shù)。e Reducer (MapReduce中的化簡函數(shù))接收數(shù)據(jù)后,根據(jù)拆分好的路徑,對數(shù) 據(jù)進(jìn)行join操作,得到根據(jù)路徑連接起來的本體鏈;join操作有兩個本體實(shí)例,當(dāng)?shù)?一個的Object和第二個本體的Subject相同,則這兩個本體可以做一個連接操作。如 alice friend bob, bob friend Lily.那么就有 Alice: friend bob: friend Lily。f:重復(fù)步驟d和e,直到不會在產(chǎn)生新的根據(jù)路徑連接起來的本體鏈,有區(qū)別的是 在迭代的過程中,要將拆分好的路徑鏈按照最初的路徑表達(dá)式再一步步連接起來,恢復(fù)成 原來的路徑或與之等價的路徑;本體鏈Alice:knowsBob:knows Lily, Alice認(rèn)識Bob,Bob 認(rèn)識Lily就構(gòu)成一個本體鏈,即由一串有關(guān)聯(lián)關(guān)系組成的本體。g:根據(jù)路徑,輸出結(jié)果。作為優(yōu)選,所述的步驟d中的MapReduce的Mapper讀入數(shù)據(jù)過程中,若讀入的三 元組數(shù)據(jù)〈subject,property,object>中的property在查詢的路徑表達(dá)式中有取反操作, 則要新加一組三元組數(shù)據(jù)〈object,"property, subject),即將原來的三元組的主語和賓語 交換,同時對property (屬性)取反。方法中涉及到相關(guān)的名詞解釋路徑表達(dá)式——正則表達(dá)式、元字符在計(jì)算機(jī)科學(xué)中,正則表達(dá)式就是用某種模式去匹配一類字符串的一個公式,一 個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串。在很多文本編輯器 或其他工具里,正則表達(dá)式通常被用來檢索或替換那些符合某個模式的文本內(nèi)容。許多程 序設(shè)計(jì)語言都支持利用正則表達(dá)式進(jìn)行字符串操作。元字符,是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前 導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對象中的出現(xiàn)模式。語義數(shù)據(jù)模型——本體、屬性本體模型更像是一種類和對象的模型。數(shù)據(jù)模型在這里被表達(dá)為類及其屬性,而 數(shù)據(jù)則表達(dá)為本體實(shí)例。編程模型-MapReduceMapReduce是用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行計(jì)算。實(shí)現(xiàn)是指定一個Map (映 射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce (化簡)函數(shù),用 來保證所有映射的鍵值對中的每一個共享相同的鍵組。包括以下兩部分a)映射(Map)對一些獨(dú)立元素組成的概念上的列表(例如,一個測試成績的列 表)的每一個元素進(jìn)行指定的操作。b)化簡(Reduce)對一個列表的元素進(jìn)行適當(dāng)?shù)暮喜?。本發(fā)明由于采用了以上技術(shù)方案,具有顯著的技術(shù)效果1、本方法采用了 MapReduce的編程模型,可以處理海量數(shù)據(jù),從返回結(jié)果上,不僅告訴用戶,位于路徑兩端的兩個本體是什么,更關(guān)鍵的是關(guān)心了具體這兩個本體是怎么連 接起來的,讓用戶清晰的看到這條鏈上的所有有關(guān)聯(lián)的本體;2、給出了路徑查詢結(jié)果的一個排序,能讓用戶更方便快捷的看到想要的第一結(jié)
圖1是本發(fā)明的流程示意圖。
具體實(shí)施例方式下面結(jié)合附圖1與實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)描述實(shí)施例1大規(guī)模語義數(shù)據(jù)路徑查詢的方法,如圖1所示,包括下列步驟步驟A 需要定制查詢路徑的模式a 查詢路徑的語法查詢路徑表達(dá)式為基于本體的屬性而非字符的正則表達(dá)式, 該路徑表達(dá)式基本能夠滿足查詢需求;b 路徑評估路徑按照難易程度分為以下兩種簡單路徑路徑表達(dá)式只包含連接(sequence)、取反(reverse)和{η},即路徑長 度固定;復(fù)雜路徑路徑表達(dá)式中包含*,?,{},即該路徑的長度可變;步驟B 分析路徑表達(dá)式,將路徑表達(dá)式進(jìn)行拆分所述的簡單路徑需要將路徑表達(dá)式分成幾個更簡單的表達(dá)式,然后將其join (求 交),連接起來,過程中需要迭代,如果其中間結(jié)果不滿足路徑條件,不作為最終結(jié)果;所述的復(fù)雜路徑需要多次迭代,輸出相應(yīng)的結(jié)果;步驟C =MapReduce工作步驟c 準(zhǔn)備工作將原路徑表達(dá)式和分析好的路徑表達(dá)式鏈記錄;鏈記錄記錄原路徑 表達(dá)式和分析好的路徑表達(dá)式,分析好的路徑表達(dá)式,類似于一個狀態(tài)轉(zhuǎn)移圖,用于后面判 斷路徑是否符合原路徑表達(dá)式。d =MapReduce的Mapper讀入數(shù)據(jù),其中以語義數(shù)據(jù)三元組中的Ob ject (賓語)和 Subject (主語)作為<key,value〉中的key,以其關(guān)聯(lián)關(guān)系的屬性鏈及賓語作為value,分 發(fā)數(shù)據(jù);Mapper是MapReduce編程框架中的映射函數(shù)。e Reducer (MapReduce中的化簡函數(shù))接收數(shù)據(jù)后,根據(jù)拆分好的路徑,對數(shù) 據(jù)進(jìn)行join操作,得到根據(jù)路徑連接起來的本體鏈;join操作有兩個本體實(shí)例,當(dāng)?shù)?一個的Object和第二個本體的Subject相同,則這兩個本體可以做一個連接操作。如 alice friend bob, bob friend Lily.那么就有 Alice: friend bob: friend Lily。f:重復(fù)步驟d和e,直到不會在產(chǎn)生新的根據(jù)路徑連接起來的本體鏈,有區(qū)別的是 在迭代的過程中,要將拆分好的路徑鏈按照最初的路徑表達(dá)式再一步步連接起來,恢復(fù)成 原來的路徑或與之等價的路徑;本體鏈Alice:knowsBob:knows Lily, Alice認(rèn)識Bob,Bob 認(rèn)識Lily就構(gòu)成一個本體鏈,即由一串有關(guān)聯(lián)關(guān)系組成的本體。g:根據(jù)路徑,輸出結(jié)果。
所述步驟d中的MapReduce的Mapper讀入數(shù)據(jù)過程中,若讀入的三元組數(shù)據(jù) 〈subject,property,object〉中的property在查詢的路徑表達(dá)式中有取反操作,則要新加 一組三元組數(shù)據(jù)〈object,"property, subject),即將原來的三元組的主語和賓語交換,同 時對property (屬性)取反。本發(fā)明具體實(shí)施過程如下定義一個屬性叫friend,alice:friend bob表示alice是bob的朋友。如果我們 要找到alice的所有朋友,和她的朋友的朋友,即她的朋友圈,那么我們的路徑表達(dá)式應(yīng)該 是alicMfriend+ X,其中? χ就是我們所要找的人,當(dāng)我們把數(shù)據(jù)按照〈key value〉分 發(fā)出去。原輸入數(shù)據(jù)alicefriend bob ;alicefriend Lucy ;bobfriend Lily ; bobfriend torn ;分發(fā)數(shù)據(jù)<(alice,bob), ( friend bob)>, < (alice, Lucy), (: friend Lucy)>,
<(bob,Lily),(: friend, Lily) >,< (bob, torn),(: friend, torn)〉·其中前兩個即 < (alice, bob), (: friend bob) >,< (alice, Lucy), (: friend Lucy)> 被分至Ij一個 Reducer,后兩個
<(bob, Lily), (: friend, Lily) >, < (bob, torn), (: friend,torn) > 被分到一個 Reducer。這兩 個Reducer分別得到aliCe的朋友,和bob的朋友。然后將結(jié)果迭代,重新分發(fā),分到同一 個Reducer,通過key 值查找進(jìn)行 jion操作,得到 < (alice,bob), ( friend bob) >,< (alice, Lily),(: friend,bob ;: friend,Lily)>,< (alice,Lucy),(:friend Lucy)>,<(alice,torn), (friend bob - friend torn) >。從而我們得到alice的朋友及朋友的朋友,bob,Lily,Lucy, torn,并且知道她們是通過什么人聯(lián)系起來的。本發(fā)明由于采用了 MapReduce的編程模型,可以處理海量數(shù)據(jù),從返回結(jié)果上,不 僅告訴用戶,位于路徑兩端的兩個本體是什么,更關(guān)鍵的是關(guān)心了具體這兩個本體是怎么 連接起來的,讓用戶清晰的看到這條鏈上的所有有關(guān)聯(lián)的本體;給出了路徑查詢結(jié)果的一 個排序,能讓用戶更方便快捷的看到想要的第一結(jié)果??傊?,以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請專利范圍所作的均等 變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。
權(quán)利要求
1.大規(guī)模語義數(shù)據(jù)路徑查詢的方法,其特征在于,包括下列步驟 步驟A 需要定制查詢路徑的模式a 查詢路徑的語法查詢路徑表達(dá)式為基于本體的屬性而非字符的正則表達(dá)式,該路 徑表達(dá)式基本能夠滿足查詢需求;b 路徑評估路徑按照難易程度分為以下兩種簡單路徑路徑表達(dá)式只包含連接(sequence)、取反(reverse)和{η},即路徑長度固定;復(fù)雜路徑路徑表達(dá)式中包含*,?,{},即該路徑的長度可變; 步驟B 分析路徑表達(dá)式,將路徑表達(dá)式進(jìn)行拆分所述的簡單路徑需要將路徑表達(dá)式分成幾個更簡單的表達(dá)式,然后將其join (求交), 連接起來,過程中需要迭代,如果其中間結(jié)果不滿足路徑條件,不作為最終結(jié)果; 所述的復(fù)雜路徑需要迭代,輸出相應(yīng)的結(jié)果; 步驟C =MapReduce工作步驟c 準(zhǔn)備工作將原路徑表達(dá)式和分析好的路徑表達(dá)式鏈記錄;d =MapReduce的Mapper讀入數(shù)據(jù),其中以語義數(shù)據(jù)三元組中的Ob ject (賓語)和 Subject (主語)作為<key,value〉中的key,以其關(guān)聯(lián)關(guān)系的屬性鏈及賓語作為value,分 發(fā)數(shù)據(jù);e -Reducer接收數(shù)據(jù)后,根據(jù)拆分好的路徑,對數(shù)據(jù)進(jìn)行join操作,得到根據(jù)路徑連接 起來的本體鏈;f 重復(fù)步驟d和e,直到不會在產(chǎn)生新的根據(jù)路徑連接起來的本體鏈,有區(qū)別的是在迭 代的過程中,要將拆分好的路徑鏈按照最初的路徑表達(dá)式再一步步連接起來,恢復(fù)成原來 的路徑或與之等價的路徑; g:根據(jù)路徑,輸出結(jié)果。
2.根據(jù)權(quán)利要求1所述的大規(guī)模語義數(shù)據(jù)路徑查詢的方法,其特征在于所述的 步驟d中的MapReduce的Mapper讀入數(shù)據(jù)過程中,若讀入的三元組數(shù)據(jù)〈subject, property, object〉中的property在查詢的路徑表達(dá)式中有取反操作,則要新加一組三 元組數(shù)據(jù)〈object,"property, subject),即將原來的三元組的主語和賓語交換,同時對 property (屬性)取反。
全文摘要
本發(fā)明涉及基于MapReduce編程框架地圖的路徑搜索技術(shù)領(lǐng)域,公開了一種大規(guī)模語義數(shù)據(jù)路徑查詢的方法,本發(fā)明通過基于MapReduce的編程框架,采用流行的圖的路徑查詢排序的算法,完成大規(guī)模語義數(shù)據(jù)的關(guān)系路徑的查詢。本發(fā)明有效地實(shí)現(xiàn)了語義數(shù)據(jù)關(guān)系路徑在數(shù)量級很大的情況下,路徑查詢也能很快進(jìn)行,從返回結(jié)果上,不僅告訴用戶,位于路徑兩端的兩個本體是什么,更關(guān)鍵的是關(guān)心了具體這兩個本體是怎么連接起來的,讓用戶清晰的看到這條鏈上的所有有關(guān)聯(lián)的本體。
文檔編號G06F17/30GK102129457SQ201110056579
公開日2011年7月20日 申請日期2011年3月9日 優(yōu)先權(quán)日2011年3月9日
發(fā)明者吳朝暉, 梁欣穎, 陳華鈞 申請人:浙江大學(xué)