用于執(zhí)行調(diào)和處理的方法、控制器、程序及數(shù)據(jù)存儲系統(tǒng)的制作方法
【專利摘要】一種用于執(zhí)行在數(shù)據(jù)圖中被表示為節(jié)點的資源的調(diào)和的方法、程序以及數(shù)據(jù)存儲系統(tǒng),該方法包括:選擇圖的節(jié)點的、待針對其執(zhí)行與特定節(jié)點的調(diào)和處理的初始子集;執(zhí)行該特定節(jié)點與節(jié)點的初始子集中的每個節(jié)點之間的調(diào)和處理;以及延遲該特定節(jié)點與圖的節(jié)點的、待針對其執(zhí)行與該特定節(jié)點的調(diào)和的另外子集之間的調(diào)和處理。
【專利說明】用于執(zhí)行調(diào)和處理的方法、控制器、程序及數(shù)據(jù)存儲系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲和相關(guān)聯(lián)的處理的領(lǐng)域。具體地,本發(fā)明的實施方式涉及數(shù)據(jù)集的圖形表示中的資源的調(diào)和處理的執(zhí)行。該調(diào)和處理意在對圖中的在語義上對應(yīng)的資源之間的異構(gòu)性進(jìn)行調(diào)和。
【背景技術(shù)】
[0002]大量的可用圖數(shù)據(jù)為不僅能夠顯示統(tǒng)計趨勢而且能夠揭示隱含模式并提煉數(shù)據(jù)中的知識的自動化或半自動化分析創(chuàng)造了潛能。形式語義在自動化的計算密集型任務(wù)中發(fā)揮著重要作用。盡管關(guān)于如何最好地捕獲語義存在長期的戰(zhàn)役,但是仍廣泛認(rèn)為圖形表示或類圖形表示是模擬人類如何感知世界(如具有實體以及實體之間的關(guān)系的本體)的最佳工具。
[0003]圖數(shù)據(jù)庫因此提供了如下優(yōu)點:自然地表示可以存儲大量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的基于“語義網(wǎng)絡(luò)”的知識表示。
[0004]圖數(shù)據(jù)庫是如下一種數(shù)據(jù)表示:其采用節(jié)點和邊(或弧)來表示實體以及采用節(jié)點之間的弧來表示這些實體之間的關(guān)系。圖數(shù)據(jù)庫被應(yīng)用于各種不同的應(yīng)用中,該各種不同的應(yīng)用總體上可以被分組成兩個主要種類。第一類包括具有概念描述的大集合的、復(fù)雜的基于知識的系統(tǒng)(被稱為“基于知識的應(yīng)用”),例如智能決策支持和自學(xué)習(xí)。第二類包括涉及對事務(wù)性數(shù)據(jù)執(zhí)行圖分析的應(yīng)用(被稱為“事務(wù)性數(shù)據(jù)應(yīng)用”),例如社交數(shù)據(jù)和商業(yè)智倉泛。
[0005]格式化圖數(shù)據(jù)庫的核心處是資源描述框架,RDF, 一種提供數(shù)據(jù)的語義標(biāo)記的簡單的基于圖的數(shù)據(jù)建模語言。使用RDF,數(shù)據(jù)孤島可以開始被拼接在一起并且將當(dāng)前群島數(shù)據(jù)景觀轉(zhuǎn)換為被連接的數(shù)據(jù)圖,基于該被連接的數(shù)據(jù)圖,可以構(gòu)造復(fù)雜的數(shù)據(jù)分析和商業(yè)智能應(yīng)用。
[0006]數(shù)據(jù)集通常可能是高度異構(gòu)性的且分布式的。這樣的數(shù)據(jù)的分散性質(zhì)導(dǎo)致通常眾多數(shù)據(jù)資源使用不同的參考符號來表示同一真實世界對象的問題。朝向有效利用可用的圖數(shù)據(jù)的必要且重要的步驟是:標(biāo)識并調(diào)和多種參考符號,以用于語義一致性。下文中,術(shù)語“調(diào)和(reconciliation)”用于指示通過標(biāo)識和定義在語義上彼此對應(yīng)的資源之間的等價性鏈接來調(diào)和資源(如數(shù)據(jù)圖中的節(jié)點,例如,如RDF三元組(triple)的主語或賓語)之間的異構(gòu)性的過程。從而,“調(diào)和處理”是指為了實現(xiàn)調(diào)和而由處理器對算法和指令的執(zhí)行。
[0007]數(shù)據(jù)調(diào)和的重要性是明顯的。數(shù)據(jù)調(diào)和確保當(dāng)異構(gòu)的數(shù)據(jù)集被鏈接(導(dǎo)致數(shù)據(jù)的語義多樣化)時的數(shù)據(jù)完整性。否則不能執(zhí)行有意義的分析。同時,等價性允許應(yīng)用能夠彼此對準(zhǔn)。應(yīng)用之間的通信因而可以被自動化并委托給計算機(jī)。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的實施方式提供了一種用于執(zhí)行在數(shù)據(jù)圖中被表示為節(jié)點的資源的調(diào)和的方法,該方法包括:選擇所述圖的節(jié)點的、待針對其執(zhí)行與特定節(jié)點的調(diào)和處理的初始子集;執(zhí)行所述特定節(jié)點與節(jié)點的所述初始子集中的每個節(jié)點之間的調(diào)和處理;延遲所述特定節(jié)點與所述圖的節(jié)點的、待針對其執(zhí)行與所述特定節(jié)點的調(diào)和的另外子集之間的調(diào)和處理。
[0009]可以在創(chuàng)建圖期間或創(chuàng)建圖之后創(chuàng)建等價性鏈接。在現(xiàn)有的調(diào)和處理中,針對整個數(shù)據(jù)集來(在單個例程中)同時執(zhí)行找尋等價性鏈接的處理。如果考慮大量數(shù)據(jù)(數(shù)十億節(jié)點的規(guī)模),則這可能是效率低下的重要來源。調(diào)和是一種復(fù)雜、冗長以及耗時的過程,并且通常是昂貴的。調(diào)和算法通常執(zhí)行相當(dāng)耗時的計算密集型操作。這對真實復(fù)雜任務(wù)的實用性提出了挑戰(zhàn),并且對最佳地迎合數(shù)據(jù)需求以獲得最大性能和可縮放性的計算結(jié)構(gòu)的有效利用提出了挑戰(zhàn)??捎玫臄?shù)據(jù)量正在逐漸增長,并且因此常常無法通過現(xiàn)有的方法和工具來管理待調(diào)和的可用數(shù)據(jù)量。為了能夠調(diào)和大量數(shù)據(jù),期望高度重視可縮放性問題。
[0010]圖中的數(shù)據(jù)可以被稱為“被連接的數(shù)據(jù)”、“圖數(shù)據(jù)”、“被鏈接的數(shù)據(jù)”或“相關(guān)數(shù)據(jù)”以及所有意在將圖的概念結(jié)構(gòu)反映為由弧互連的多個節(jié)點的其它短語。在某些實施中,圖中的數(shù)據(jù)可以是如在其被設(shè)置為“開放式的被鏈接的數(shù)據(jù)(L0D)”倡議的一部分的數(shù)據(jù)中那樣的“被鏈接的數(shù)據(jù)”,但是本發(fā)明的實施方式并不限于這樣的實施,而且術(shù)語“被鏈接的數(shù)據(jù)”可以被更廣義地解釋,而不是僅被解釋為被設(shè)置作為LOD倡議的一部分的數(shù)據(jù)。
[0011]通過提供一種執(zhí)行調(diào)和處理但調(diào)和處理不是必須全部在單個例程中執(zhí)行的方法,能夠?qū)崿F(xiàn)可縮放性。也就是說,一些調(diào)和處理可以基于向圖中添加新節(jié)點或添加具有作為主語的節(jié)點的新數(shù)據(jù)項(例如三元組)來執(zhí)行,但是不必須執(zhí)行與圖中的節(jié)點的整個集合的調(diào)和處理,而是僅針對子集來執(zhí)行。初始子集的大小不是必需隨著圖的大小增加而增加,因此初始調(diào)和處理所需要的處理不隨著圖的增長而變得不可行。
[0012]另外,通過降低在一個道次或一個例程中針對整個圖來執(zhí)行調(diào)和處理的需要,可以減輕由對新節(jié)點進(jìn)行調(diào)和處理所引起的瓶頸。這從整體上改進(jìn)了系統(tǒng)的特性,并且還使得系統(tǒng)操作者能夠趨向于更加復(fù)雜并從而潛在地更加有效的調(diào)和算法,而無需擔(dān)心對系統(tǒng)特性的不利影響。
[0013]資源的調(diào)和可以是如下過程:通過標(biāo)識和產(chǎn)生在語義上彼此對應(yīng)的資源(由圖中的節(jié)點表示)之間的等價性鏈接來調(diào)和圖中的資源之間的異構(gòu)性。例如,在具有不同名稱的兩個資源指代同一個真實世界對象(即,這兩個資源是在語義上等價的/在含義上等價的)的情況下,向圖中添加鏈接以表示這兩個資源是等價的將是適當(dāng)?shù)?。資源調(diào)和可以包括:標(biāo)識在資源(圖節(jié)點是資源)之間何處存在等價性;以及向圖中添加等價性的指示。多個資源的標(biāo)識或同一真實世界實體的表示還被稱為本體映射、本體匹配或本體對準(zhǔn)。
[0014]資源可以是通過URI可去參考的網(wǎng)絡(luò)資源,并且可以是正由圖中的數(shù)據(jù)描述的實體的表示(描述)。特定實體可以由一個或多個資源來表示。
[0015]延遲調(diào)和處理可以包括:停止執(zhí)行對資源之間的語義等價性進(jìn)行標(biāo)識的處理以及向圖中添加鏈接以表示這些語義等價性的處理;然后,在恢復(fù)所述處理之前,等待預(yù)定觸發(fā)事件組中的一個觸發(fā)事件,或者等待由任務(wù)調(diào)度器響應(yīng)于系統(tǒng)中的計算資源的狀態(tài)(例如使用量/工作負(fù)荷)而作出的決定。
[0016]在本發(fā)明的實施方式中,選擇初始子集可以包括:確定所述節(jié)點中的哪些節(jié)點在圖遍歷操作中具有最高被讀取訪問次數(shù),并將這些節(jié)點作為被最多訪問的節(jié)點包括在初始子集中。[0017]初始子集的大小可以由系統(tǒng)管理者控制,或者可以是預(yù)設(shè)的,并且可以例如是在圖中的設(shè)定數(shù)量的節(jié)點或設(shè)定比例的節(jié)點。圖遍歷操作可以包括以特定方式訪問/讀取圖節(jié)點,最終可以訪問所有節(jié)點,其中這種訪問方法會影響遍歷算法的效率。有利地,通過在初始子集中選擇被最多訪問的節(jié)點,完成在特定節(jié)點與這些最可能被查詢的節(jié)點之間的調(diào)和處理。因此,很可能是作為對圖的查詢的一部分而被讀取的節(jié)點已執(zhí)行了與圖中的其它節(jié)點的調(diào)和處理。
[0018]此外,選擇初始子集還可以包括:確定所述節(jié)點中的哪些節(jié)點具有最高被讀取訪問概率,作為在圖遍歷操作中所述被最多訪問的節(jié)點之一之后的下一個節(jié)點。
[0019]有利地,在該特定方法中,還使用與被最多訪問的節(jié)點的共現(xiàn)性(co-occurrence)作為選擇初始子集的基礎(chǔ)。這擴(kuò)展了當(dāng)查詢時將會已與高比重的其它節(jié)點執(zhí)行了調(diào)和處理的節(jié)點的范圍,并且該擴(kuò)展以贊同對節(jié)點進(jìn)行讀取訪問的機(jī)制的方式來被引導(dǎo)。通過使用共現(xiàn)性關(guān)聯(lián)原則來標(biāo)識在圖遍歷操作中的被最多訪問的節(jié)點之一之后的最可能被訪問的這些節(jié)點,針對被最多訪問的節(jié)點執(zhí)行的調(diào)和處理還可以針對作為初始子集的一部分的已標(biāo)識的節(jié)點來執(zhí)行(傳播)。
[0020]在替代的實施中,可以將作為在圖遍歷操作中的被最多訪問的節(jié)點之一之后的下一個節(jié)點的具有最高被讀取訪問概率的節(jié)點標(biāo)識為針對其延遲調(diào)和處理的另外子集。例如,另外的子集每個可以與作為在圖遍歷操作中的被最多訪問的節(jié)點之一之后的下一個節(jié)點的被讀取訪問節(jié)點的概率范圍相關(guān)聯(lián),所述節(jié)點可以取決于所述概率被分配給另外的子集。
[0021]在已確定在一個或另一個時間每個節(jié)點必須具有在自身與每個其它節(jié)點之間執(zhí)行的調(diào)和處理的實施中,節(jié)點的另外子集是在圖中的不屬于初始子集的成員的所有節(jié)點。然而,節(jié)點的所述另外子集可以不必一定全部在單個例程中在其自身與特定節(jié)點之間執(zhí)行了調(diào)和,而是所述另外子集可以被分成其它的另外子集,在針對每個其它的另外子集的調(diào)和處理之間存在延遲。
[0022]期望的是在每個節(jié)點與其它節(jié)點中的每一個之間執(zhí)行調(diào)和處理,這是因為其允許利用或分析圖中的數(shù)據(jù)的若干個應(yīng)用彼此對準(zhǔn)并且有利于所述應(yīng)用之間的通信。例如,數(shù)據(jù)采集機(jī)可以遵循由調(diào)和處理產(chǎn)生的等價性鏈接以通過潛在的無窮的網(wǎng)絡(luò)數(shù)據(jù)來導(dǎo)航。
[0023]可選地,節(jié)點的另外子集的調(diào)和處理可以被延遲并且在當(dāng)計算資源的監(jiān)視表明計算資源不然將空閑時的時隙內(nèi)被執(zhí)行。
[0024]可以僅在系統(tǒng)空閑時間執(zhí)行調(diào)和處理。可選地,可以在由圖中的事件確定的時間(例如在向圖插入新數(shù)據(jù)項(例如RDF三元組)時)來執(zhí)行特定節(jié)點與初始子集的調(diào)和處理,并且另外的子集與特定節(jié)點之間的調(diào)和處理被延遲至直到系統(tǒng)空閑時間。在此使用的系統(tǒng)空閑時間被用作如下操作狀態(tài)的范圍的方便表示:在所述操作狀態(tài)下,有能力處理由調(diào)和處理在負(fù)責(zé)所述調(diào)和處理的資源處所施加的額外的處理負(fù)擔(dān)。例如,當(dāng)在處理器中沒有其它未決任務(wù)時,可以由處理器執(zhí)行另外子集的調(diào)和處理。這樣的決定可以由集中式工作負(fù)荷調(diào)度器(具有調(diào)和處理控制模塊的功能)來作出,或由處理器本身在本地作出。也就是說,可以取決于負(fù)責(zé)執(zhí)行所述處理的計算資源的操作狀態(tài),來作出何時執(zhí)行特定節(jié)點與另外子集的節(jié)點之間的調(diào)和處理的決定。
[0025]實施本發(fā)明的方法還可以包括:將特定節(jié)點的標(biāo)識添加到列表;在列表中保持特定節(jié)點的標(biāo)識直到已執(zhí)行了與圖的節(jié)點的另外子集的處理為止,此時,將特定節(jié)點的標(biāo)識從列表中去除;并且當(dāng)接收到標(biāo)識一個或多個待被讀取的節(jié)點的對圖的查詢時,檢查所述一個或多個待被讀取的節(jié)點中的哪些節(jié)點被標(biāo)識在列表上,并且,針對所述一個或多個待被讀取的節(jié)點中的被標(biāo)識在列表上的每個節(jié)點,執(zhí)行與圖的每個節(jié)點的調(diào)和處理。
[0026]這樣的列表可以由具有調(diào)和控制器(例如調(diào)和處理控制模塊)或系統(tǒng)控制器的功能的實體來集中保持。替代地,所述列表可以在分布式結(jié)構(gòu)內(nèi)實現(xiàn),通過分布式系統(tǒng)中的多于一個的節(jié)點彼此配合工作來實現(xiàn)。在一些實施中,期望的是,針對特定節(jié)點的調(diào)和處理在其作為對查詢的響應(yīng)的一部分被返回之前或在作為對查詢的響應(yīng)的一部分被讀取之前完成。有利地,保持仍未被執(zhí)行完整調(diào)和處理(即與圖中的每個其它節(jié)點的調(diào)和處理)的這些節(jié)點的列表使得需要在返回對查詢的響應(yīng)之前被執(zhí)行的調(diào)和處理能夠被容易地標(biāo)識。節(jié)點的在列表上的標(biāo)識可以是例如名稱或URI。特定節(jié)點的標(biāo)識可以保持在列表上,直到與節(jié)點的另外子集中的調(diào)和處理已開始或完成(取決于實施)為止。
[0027]另外地或替代地,針對圖中的不包括在與其執(zhí)行調(diào)和處理的初始子集中的每個節(jié)點,實施本發(fā)明的方法可以包括:將特定節(jié)點的標(biāo)識以關(guān)聯(lián)元數(shù)據(jù)的形式添加到未被調(diào)和的節(jié)點的列表中,并在所述列表中保持所述標(biāo)識直到執(zhí)行了與特定節(jié)點的調(diào)和處理為止,此時,將特定節(jié)點的標(biāo)識從所述列表中去除;當(dāng)接收到標(biāo)識一個或多個待被讀取的節(jié)點的對圖的查詢時,針對每個待被讀取的節(jié)點,執(zhí)行所述節(jié)點與以關(guān)聯(lián)元數(shù)據(jù)的形式標(biāo)識在未被調(diào)和的節(jié)點列表中的每個節(jié)點之間的調(diào)和處理。
[0028]存在如下實施:其中每個節(jié)點均具有關(guān)聯(lián)元數(shù)據(jù),該關(guān)聯(lián)元數(shù)據(jù)可以被存儲在節(jié)點處或可以被存儲在從所述節(jié)點所鏈接至的位置或能夠基于節(jié)點的標(biāo)識定位到的位置。每個節(jié)點具有其自身的單獨的關(guān)聯(lián)元數(shù)據(jù)。所述元數(shù)據(jù)可以包括已與節(jié)點的初始子集進(jìn)行了調(diào)和(與初始子集的節(jié)點執(zhí)行了調(diào)和處理)但仍未與所討論的節(jié)點進(jìn)行調(diào)和的節(jié)點的列表。有利地,這使得能夠?qū)⑴c另外子集的節(jié)點的調(diào)和處理控制成基于在節(jié)點處可用的信息或可從節(jié)點直接得到的信息而局部執(zhí)行。
[0029]盡管在本發(fā)明的實施方式中并非必要,但實施可以包括其中圖被存儲在計算資源的分布式網(wǎng)絡(luò)中的系統(tǒng)。該計算資源的分布式網(wǎng)絡(luò)(存儲節(jié)點)可以包括由相互通信的多于一個的不同存儲單元構(gòu)成的系統(tǒng)。示例性通信范例是對等(P2P)網(wǎng)絡(luò),因此計算資源的分布式網(wǎng)絡(luò)可以是存儲節(jié)點的對等網(wǎng)絡(luò)。P2P是在對等體之間劃分任務(wù)或工作負(fù)荷的分布式結(jié)構(gòu)。對等體(個體存儲節(jié)點或處理)是在應(yīng)用中具有同樣權(quán)限的對等參與者。每個對等體被配置成使得自身的資源的一部分(例如處理能力、磁盤存儲器或網(wǎng)絡(luò)帶寬)能夠被其它網(wǎng)絡(luò)參與者直接獲得,而不需要由服務(wù)器或固定主機(jī)進(jìn)行集中協(xié)作。與其中服務(wù)器進(jìn)行提供而客戶端進(jìn)行消費的傳統(tǒng)的客戶端-服務(wù)器模型不同,對等體既可以被視為資源的供應(yīng)者又可以被視為資源的消費者。有利地,P2P系統(tǒng)可以以對數(shù)通信成本來保持交換消息的大的存儲節(jié)點組。
[0030]關(guān)于執(zhí)行兩個節(jié)點之間的調(diào)和的實際處理,在本發(fā)明的實施方式中,特定節(jié)點與另外的節(jié)點的調(diào)和處理可以包括:通過對由執(zhí)行多個不同的相似度計算產(chǎn)生的值進(jìn)行合計來獲得相似度值,或者獲得由執(zhí)行相似度計算產(chǎn)生的單個值,其中,相似度計算是生成表示特定節(jié)點與另一個節(jié)點在語義上等價的似然度的值;如果相似度值超過預(yù)定的相似度閾值,則向圖添加表示特定節(jié)點與另一個節(jié)點之間的等價性關(guān)系的等價性鏈接。[0031]有利地,本發(fā)明的實施方式降低了對一次性或在單個例程中針對特定節(jié)點執(zhí)行所有調(diào)和處理的需要。借助于在本發(fā)明的實施方式中采用的進(jìn)行調(diào)和處理的遞增法的增加的靈活性,在調(diào)和處理時可以采用更加健壯的算法或算法組而不會對整體系統(tǒng)性能造成不利影響。為此,本發(fā)明的實施方式可以運行每個算法給出相似度值的多個算法,或運行給出相似度值的單個健壯的算法,并且對所述值進(jìn)行合計以獲得用于與閾值進(jìn)行比較的整體相似度值??梢允侨缦虑闆r:關(guān)于兩個節(jié)點是否語義等價,每個算法(或相似度計算)給出是/否(1/0),閾值是在執(zhí)行相似度計算的總數(shù)中“是”結(jié)果所需占的比例。替代地,可以使用許多相似度計算的加權(quán)平均來獲得相似度值。
[0032]取決于實施本發(fā)明的實施方式的方式,可以在計算資源的分布式網(wǎng)絡(luò)中的多于一個的計算資源上同時執(zhí)行特定節(jié)點與存儲在該計算資源上的如下節(jié)點之間的調(diào)和處理:所述節(jié)點屬于正針對其執(zhí)行與所述特定節(jié)點的調(diào)和處理的節(jié)點子集。
[0033]分布式存儲系統(tǒng)(例如被采用以存儲數(shù)據(jù)圖的分布式存儲系統(tǒng))根據(jù)其性質(zhì)對數(shù)據(jù)進(jìn)行分段。有利地,本發(fā)明的實施方式可以通過針對特定節(jié)點執(zhí)行并行調(diào)和來利用該分段,所述并行調(diào)和是通過在特定節(jié)點與存儲在該計算資源上的圖節(jié)點之間、在用于存儲節(jié)點的每個計算資源處執(zhí)行調(diào)和處理來執(zhí)行的。可以對數(shù)據(jù)執(zhí)行一些正交分段,以使得:每個計算資源在一個例程中不執(zhí)行特定節(jié)點與存儲在該計算資源中的每個節(jié)點之間的調(diào)和處理,而是例如基于在圖遍歷操作中節(jié)點被訪問的頻繁度來將節(jié)點分裂。所述正交分段提供了在并行處理實施中的進(jìn)一步的靈活性。可以集中執(zhí)行特定節(jié)點與初始子集之間的調(diào)和處理,然后執(zhí)行特定節(jié)點與另外子集之間的調(diào)和處理,并且還可以進(jìn)行局部調(diào)度。
[0034]本發(fā)明的實施方式可以通過存儲以每個節(jié)點為基礎(chǔ)作為元數(shù)據(jù)存儲的某些統(tǒng)計數(shù)據(jù)/值/屬性/參數(shù)/測量結(jié)果來增強或提供其功能性。本發(fā)明的實施方式可以包括:針對每個節(jié)點,作為關(guān)聯(lián)元數(shù)據(jù),存儲表示所述節(jié)點在圖遍歷操作中被進(jìn)行讀取訪問的次數(shù)的值以及表示在所述圖中與所述節(jié)點鏈接的每個節(jié)點在圖遍歷操作中作為下一個節(jié)點被讀取的次數(shù)的值。
[0035]在本發(fā)明的實施方式中,通過節(jié)點和邊的圖來表示知識、事實和/或陳述,其中節(jié)點是所描述或表示的實體,邊是這些實體之間的關(guān)系。本發(fā)明的實施方式可以被配置成將圖數(shù)據(jù)直接存儲為節(jié)點和邊。然而,還可以采用一些其它基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。
[0036]作為示例性基礎(chǔ)數(shù)據(jù)存儲結(jié)構(gòu),圖中的數(shù)據(jù)可以被編碼為每個包括主語、謂語和賓語的三元組,并且圖中的節(jié)點是三元組的主語和賓語,三元組的謂語表示三元組的主語與賓語之間的鏈接。
[0037]可選地,三元組可以是資源描述框架(RDF)三元組。貫穿本說明書,應(yīng)當(dāng)理解:在對“RDF三元組”進(jìn)行具體引用的地方,RDF三元組是符合RDF標(biāo)準(zhǔn)的三元組的示例性形式。另外,對“三元組”的引用包括所提及的三元組可能是RDF三元組。相似地,在本說明書的其它地方討論的RDF處理器是用于在API封裝與存儲的數(shù)據(jù)項之間的交互的處理器的示例。
[0038]資源描述框架是一種用于對作為用于語義網(wǎng)絡(luò)的標(biāo)準(zhǔn)的信息進(jìn)行概念描述或建模的通用方法。對語義網(wǎng)絡(luò)的信息的建模進(jìn)行標(biāo)準(zhǔn)化允許對共同語義網(wǎng)絡(luò)上進(jìn)行操作的應(yīng)用之間的互操作性。通過將RDF Schema (RDFS)提供為用于描述RDF中詞匯表的語言,RDF保持具有明確的形式語義的詞匯表。
[0039]可選地,三元組中的一個或多個元素(元素是謂語、賓語或主語)中的每個是統(tǒng)一資源標(biāo)識符(URI)。RDF和其它三元組格式以以下設(shè)想為前提:使用網(wǎng)絡(luò)標(biāo)識符例如URI來標(biāo)識事物(即對象、資源或?qū)嵗?以及使用簡單的屬性和屬性值來描述所標(biāo)識的“事物”。就所述三元組而言,在其網(wǎng)絡(luò)資源具體體現(xiàn)中,主語可以是對描述實體的網(wǎng)絡(luò)資源進(jìn)行標(biāo)識的URI,謂語可以是標(biāo)識屬性(例如顏色)的類型的URI,賓語可以是指定歸屬于所討論的實體的屬性類型的特定實例的URI。使用URI使得三元組能夠?qū)⒑唵蔚年愂?、涉及的資源表示為圖中的節(jié)點和弧,所述節(jié)點和弧表示資源以及其相應(yīng)的屬性和值??梢允褂肧PARQL協(xié)議和RDF查詢語言(SPARQL)來查詢RDF圖。由萬維網(wǎng)聯(lián)盟的RDF數(shù)據(jù)訪問工作小組(DAWG)標(biāo)準(zhǔn)化SPARQL,SPARQL被認(rèn)為是關(guān)鍵的語義網(wǎng)絡(luò)技術(shù)。SPARQL允許查詢包括三元組模式、邏輯乘法、邏輯加法以及可選模式。
[0040]三元組通過將圖數(shù)據(jù)表征為多個主語-謂語-賓語的表達(dá)來提供對圖數(shù)據(jù)的編碼。在上下文中,主語和賓語是圖數(shù)據(jù)的圖節(jié)點,例如是實體、對象、實例或概念,謂語是對主語和賓語之間的關(guān)系的表示。謂語通過提供至賓語的規(guī)定類型的鏈接來聲明關(guān)于主語的某事。例如,主語可以表示萬維網(wǎng)資源(例如通過URI),謂語表示資源的特定特征、特性或方面,賓語表示所述特征、特性或方面的實例。換言之,三元組陳述的集合從本質(zhì)上表示有向圖的數(shù)據(jù)。RDF標(biāo)準(zhǔn)提供用于這樣的三元組的格式化結(jié)構(gòu)。
[0041]當(dāng)向圖中輸入了新三元組時,發(fā)起節(jié)點與節(jié)點的初始子集之間的調(diào)和處理。另外,調(diào)和處理可以是有條件的,其取決于新三元組的主語本身是新的(在這種情況下,針對所述“特定節(jié)點”,發(fā)起調(diào)和處理)或不是新的(在這種情況下,確定不需要調(diào)和處理)。
[0042]本發(fā)明的特定方面的實施方式提供了一種用于執(zhí)行在圖數(shù)據(jù)中被表示為節(jié)點的資源的調(diào)和的數(shù)據(jù)庫控制器;該數(shù)據(jù)庫控制器包括:選擇模塊,其被配置成選擇圖的節(jié)點的、待針對其執(zhí)行與特定節(jié)點的調(diào)和處理的初始子集;調(diào)和處理模塊,其被配置成執(zhí)行特定節(jié)點與節(jié)點的初始子集中的每個節(jié)點之間的調(diào)和處理;以及調(diào)和處理控制模塊,其被配置成延遲圖的節(jié)點的、待針對其執(zhí)行與特定節(jié)點的調(diào)和的另外子集的調(diào)和處理。
[0043]數(shù)據(jù)庫控制器可以被實現(xiàn)為在單個計算資源上的集中控制器,被實現(xiàn)為由許多計算資源配合的集中控制器,或者被實現(xiàn)為其中每個處于分布式存儲系統(tǒng)中的相應(yīng)計算資源上的多個等價控制器中的控制器。例如,可以是:由在存儲系統(tǒng)中的計算資源上運行的程序來提供數(shù)據(jù)庫控制器;以及一個或多個其它計算資源還運行等價程序以使得可以通過多個數(shù)據(jù)庫控制器來訪問數(shù)據(jù)庫。
[0044]本發(fā)明的另一方面的實施方式提供了 一種用于存儲數(shù)據(jù)圖的數(shù)據(jù)存儲系統(tǒng),在數(shù)據(jù)圖中,資源被表示為數(shù)據(jù)圖的節(jié)點,該數(shù)據(jù)存儲系統(tǒng)包括:多個存儲單元,所述多個存儲單元每個都被配置成存儲來自數(shù)據(jù)圖的數(shù)據(jù)段;以及作為本發(fā)明的實施方式如上所述和/或其它地方所述的數(shù)據(jù)庫控制器。當(dāng)然,數(shù)據(jù)存儲單元是計算資源的示例,其可以具有除了存儲之外的處理功能和控制/管理功能。
[0045]存儲單元可以每個均是計算資源,例如,除了包括處理器、存儲器和/或附加部件(例如網(wǎng)絡(luò)接口卡、主板、輸入/輸出裝置)之外,計算資源可以每個均包括存儲單元。
[0046]本發(fā)明的又一方面的實施方式提供了一種計算機(jī)程序,該計算機(jī)程序當(dāng)被計算機(jī)執(zhí)行時使得計算機(jī)執(zhí)行實施本發(fā)明的方法。另外,本發(fā)明的又一方面的實施方式包括如下一種計算機(jī)程序,該計算機(jī)程序當(dāng)被一個或多個計算機(jī)執(zhí)行時使得所述一個或多個計算機(jī)擔(dān)當(dāng)用于實施本發(fā)明的數(shù)據(jù)庫控制器。可以將實施本發(fā)明的計算機(jī)程序存儲在計算機(jī)可讀存儲介質(zhì)上,例如非暫時性存儲介質(zhì),并且所述計算機(jī)程序還可以被設(shè)置為單個計算機(jī)程序或設(shè)置為一套子程序。
[0047]本發(fā)明的實施方式實現(xiàn)了一種執(zhí)行調(diào)和處理的方法,其具有以下有益效果中的一項或更多項:降低了調(diào)和的計算工作負(fù)荷;將處理分成較小的塊以使得能夠更好地調(diào)度調(diào)和任務(wù);利用分布式數(shù)據(jù)存儲以使得能夠正交分段數(shù)據(jù)從而改善并行性能以及改進(jìn)可縮放性;使得能夠在分散的計算機(jī)資源上同時執(zhí)行若干個相似度測量;由概率模型進(jìn)行引導(dǎo)以執(zhí)行調(diào)和。
【專利附圖】
【附圖說明】
[0048]現(xiàn)在,將參照附圖,僅作為示例來描述本發(fā)明的優(yōu)選特征,在附圖中:
[0049]圖1是對實施本發(fā)明的數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器上所部署的軟件的示意性說明;
[0050]圖2示出了本發(fā)明的實施方式的系統(tǒng)結(jié)構(gòu),其中控制功能中的某些控制功能被集中化;
[0051]圖3是示出了在本發(fā)明的實施方式中向基礎(chǔ)數(shù)據(jù)存儲區(qū)中添加新三元組所執(zhí)行的處理的流程圖;
[0052]圖4是示出了在本發(fā)明的實施方式中對擴(kuò)展圖進(jìn)行更新并執(zhí)行調(diào)和處理所執(zhí)行的處理的流程圖;
[0053]圖5是示出了在本發(fā)明的實施方式中用于執(zhí)行調(diào)和處理的示例性過程的流程圖;
[0054]圖6是示出了在本發(fā)明的實施方式中用于接收并處理查詢的示例性過程的流程圖;
[0055]圖7是示出了在本發(fā)明的實施方式中用于對節(jié)點執(zhí)行窮舉調(diào)和的示例性過程的流程圖;
[0056]圖8是示出了在本發(fā)明的實施方式中用于執(zhí)行“按節(jié)點(on-node)”調(diào)和處理的示例性過程的流程圖;
[0057]圖9是對調(diào)和處理的并行化的概念性說明;以及
[0058]圖10是對通過數(shù)據(jù)的物理分配和利用被存儲為元數(shù)據(jù)的值進(jìn)行數(shù)據(jù)分段的概念性說明。
【具體實施方式】
[0059]圖1示出了在每個服務(wù)器10上部署的軟件的結(jié)構(gòu)。在該特定示例中,存儲系統(tǒng)由通過消息傳遞系統(tǒng)進(jìn)行通信的服務(wù)器組構(gòu)成。在圖1所示的示例中,服務(wù)器實施多層模型,其中每層利用并使用下面層的容量。所述結(jié)構(gòu)包括:從最頂端起,語義層11、RDF層12、三元組適配器層14、KVS層15以及通信層16,其中故障檢測器13位于三元組適配器層14和KVS層15的側(cè)面。當(dāng)然,如在下面的描述中將會更加清楚的,本文中討論的實施方式使用RDF三元組作為用于存儲數(shù)據(jù)圖的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。這絕不是本發(fā)明的實施方式中僅有的可以使用的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),而是在此被選中是為了呈現(xiàn)本發(fā)明的實施方式的示例性實施。此夕卜,采用KVS (鍵值存儲)格式,其中將RDF三元組本身用作訪問關(guān)聯(lián)值存儲區(qū)中的另外數(shù)據(jù)(包括元數(shù)據(jù))的鍵。再次,選擇KVS格式是為了呈現(xiàn)本發(fā)明實施方式的示例性實施,對于本領(lǐng)域的技術(shù)人員明顯的是本發(fā)明的實施方式并不限于這種特定格式。[0060]以下段落描述每個層的作用以及它們的交互。
[0061]I)語義層:語義層11是到與終端用戶交互的客戶端應(yīng)用的接口,并被配置成向RDF處理器中繼用戶的查詢。在該層中,數(shù)據(jù)不被視作各個RDF三元組而是處于概念級別或者甚至模型級別(作為相關(guān)RDF三元組的組)。在該層執(zhí)行語義處理操作,例如數(shù)據(jù)調(diào)和處理和屬性遍歷。當(dāng)需要深度語義分析時,還可以進(jìn)行更加復(fù)雜的本體分析,例如基于規(guī)則的推理和基于描述邏輯的推理。在示例性實施中,可以通過Jena和0WL2RL/RDF實現(xiàn)高水平的推理。然而,語義層11并不限制于特定的實施,并且允許其它推理引擎容易地插入。語義層11提供了在該說明書的其它地方提及的選擇模塊、調(diào)和處理模塊以及調(diào)和處理控制模塊的控制功能。
[0062]2)RDF層:RDF層12橋接基礎(chǔ)數(shù)據(jù)層和語義層。這可以通過API例如Jena GraphAPI來實現(xiàn)。
[0063]RDF層12被配置成使用直接對三元組進(jìn)行作用的方法,例如添加/去除三元組以及使用RDF SPARQL查詢來檢索三元組。此外,在RDF層12存在SPARQL引擎,其負(fù)責(zé)將基于文本的查詢轉(zhuǎn)換為一組操作。這些操作包括低水平搜索操作以及過濾和加入機(jī)制。這些功能中的一些被實施在該層的SPARQL引擎內(nèi),而低水平數(shù)據(jù)搜索便于由基礎(chǔ)三元組適配器層14進(jìn)行。
[0064]3)三元組適配器層:三元組適配器層14負(fù)責(zé)將三元組轉(zhuǎn)換為在KVS層15中存儲的鍵。該鍵應(yīng)當(dāng)是唯一的,還可以與其它鍵相比較以加強關(guān)于鍵的順序(其中每個鍵高于、低于或等于從三元組生成的任何其它鍵)。三元組適配器層14向上層提供三個簡單操作:添加新三元組、去除現(xiàn)有的三元組以及根據(jù)特定標(biāo)準(zhǔn)尋找一組三元組。該尋找操作是RDF特定的,其接收三個參數(shù),該三個參數(shù)可以是特定值或空值。例如,求得(主語;空值;空值)返回具有特定(限定)主語的所有三元組。該層使用基礎(chǔ)KVS接口來存儲、去除和查詢數(shù)據(jù)。
[0065]4)KVS層:KVS層15實現(xiàn)分布式的、有序的鍵值存儲。KVS層15提供了規(guī)則有序的哈希映射接口,以添加鍵值對,獲得或去除鍵值(給定的某個鍵),以及另外地在有序的KVS上執(zhí)行范圍查詢。范圍查詢方法接收前綴最小鍵以及前綴最大鍵,并且返回包含在給定范圍內(nèi)的所有鍵值對的迭代值。該層負(fù)責(zé)對來自其它服務(wù)器的數(shù)據(jù)的分配和檢索。該層使用基礎(chǔ)通信層16通過傳遞消息來與其它服務(wù)器進(jìn)行通信。
[0066]5)故障檢測器:故障檢測器13負(fù)責(zé)看門狗的執(zhí)行,所述看門狗將會檢測服務(wù)器故障并且向存儲層通知依然存在的(未發(fā)生故障的)服務(wù)器。該層還使用通信層16在其它服務(wù)器之間交換消息并產(chǎn)生一組活動的處理,其還被稱為系統(tǒng)的視圖。當(dāng)該視圖變化時,通知KVS層15以使得它例如可以觸發(fā)從故障恢復(fù)。在本發(fā)明的實施方式的上下文中,故障檢測器13完全是可選的,并且提供擴(kuò)展本發(fā)明的實施方式的功能性的功能。
[0067]6)通信層:通信層16是一種通過其在服務(wù)器(例如在本說明書的其它地方提及的存儲單元或計算裝置)之間傳遞消息的機(jī)構(gòu)。例如,通信層16可以被配置成輸出基元以向其它服務(wù)器發(fā)送消息以及接收來自其它服務(wù)器的消息。本領(lǐng)域的技術(shù)人員將理解:許多替代性實施可以用于該目的。
[0068]圖2示出了替代性結(jié)構(gòu),其中客戶端應(yīng)用30通過集中式RDF處理器22與單個集中式接觸點進(jìn)行通信。RDF處理器22具有RDF層12的功能,但在圖2的示例中,它以集中式水平實施而不是以局部水平實施。調(diào)和處理器21 (其組合了在本說明書的其它地方提及的選擇模塊、調(diào)和處理模塊以及調(diào)和處理控制模塊的功能)在圖2的示例中也在集中式水平上實施。調(diào)和處理器21被配置成對存儲在多個數(shù)據(jù)存儲單元23中的圖進(jìn)行控制并執(zhí)行調(diào)和處理。所述多個數(shù)據(jù)存儲單元23被至少配置成存儲數(shù)據(jù)圖的一部分。此外,數(shù)據(jù)存儲單元23可以被配置成執(zhí)行上述三元組適配器層14、KVS層15、通信層16以及故障檢測器13中的一個或多個的功能。圖1和圖2示出了:取決于實施所述實施方式的系統(tǒng)的需求,可以在局部水平或集中式的水平上執(zhí)行本發(fā)明實施方式的各種功能。
[0069]在圖1的示例性實施方式中,采用KVS作為向外縮放RDF數(shù)據(jù)存儲(即數(shù)據(jù)圖的存儲)的方法(同樣適用于圖2)。然而,RDF三元組本身不是KVS準(zhǔn)備好的。第一步驟是定義標(biāo)準(zhǔn)KVS可以方便利用的鍵值元組。下面,陳述用于數(shù)據(jù)的分布式存儲(圖)的示例性格式化數(shù)據(jù)結(jié)構(gòu)。
[0070]定義1:RDF三元組。RDF三元組t,s,p,O (表示為SP0)限定了主語(S)與賓語(O)之間的關(guān)系。該關(guān)系指使用謂語(P)。主語(S)與賓語(O) 二者均是圖中的節(jié)點,而謂語是弧。
[0071]三元組是RDF中的基本數(shù)據(jù)結(jié)構(gòu)。如此,三元組是在本發(fā)明的實施方式中用于存儲圖數(shù)據(jù)庫(其可以被視作圖的存儲形式)的示例性基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。然而,本發(fā)明還可以被實施至或應(yīng)用于采用除了 RDF三元組以外的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的實施方式中。三元組的賓語反過來可以是其它三元組的主語或具體數(shù)據(jù)類型(例如字符串、整數(shù)等)的主語。圖是RDF三元組的自然呈現(xiàn)。RDF圖是有向的、加標(biāo)記的圖。圖的頂點(節(jié)點)是三元組的主語或賓語,而邊是謂語。在RDF圖中,節(jié)點和邊兩者也均被稱為RDF資源。
[0072]定義2:RDF圖。令T為一組RDF三元組。T的圖形表示是G =〈V,E>,其中
V = (v I 3? G r.(v e subject{t) kj O^Zea1(Z))丨且E = {(vs, v0) | (s, p, o) G T} J被定義為作為 RDF
三元組的主語或賓語的一組節(jié)點(或頂點),而E是通常規(guī)定為一對節(jié)點〈V” v2>, V1, v2 G V的節(jié)點之間的一組邊(或弧)。
[0073]—般而言,KVS是允許存儲無模式數(shù)據(jù)的非關(guān)系數(shù)據(jù)模型。KVS的關(guān)鍵益處是簡單性和可縮放性。在KVS中的數(shù)據(jù)項是鍵值元組<k,V〉,其中,k是唯一標(biāo)識符,V是k所標(biāo)識的有效載荷。
[0074]定義3:三元組化K/V (鍵值)元組。給定三元組t,三元組KN元組是{〈kt,metadata> I kt G {〈s, p, o>} U {<p, o, s>} U {〈o, s, p>}},其中元數(shù)據(jù)將三元組元數(shù)據(jù)存儲為鍵值元組的值。
[0075]作為用于本發(fā)明的實施方式的基礎(chǔ)數(shù)據(jù)格式的存儲的三元組的示例,通過生成語義相同但語法不同的形式是〈P, O,s> (表示為P0S)與〈O, S,P〉(表示為0SP)的兩個變量來復(fù)制每個SPO形式的三元組。這考慮了查詢性能和故障恢復(fù),并且為了提供用于存儲在本發(fā)明的特定實施方式中利用的各種形式的元數(shù)據(jù)的機(jī)制。
[0076]通過范圍查詢來正常完成查詢RDF數(shù)據(jù),使用通配符來代替在三元組中的元素。例如SELECT〈?,?,?>檢索在數(shù)據(jù)存儲區(qū)中的所有三元組,而SELECT〈?,?,o>返回使用o作為賓語的所有三元組。復(fù)制三元組允許根據(jù)不僅主語而且根據(jù)謂語和賓語來對數(shù)據(jù)進(jìn)行排序。這增強了查詢執(zhí)行。
[0077]三元組被存儲在分布式的KVS中,在該具體實施中,每個三元組及其變量作為鍵,而相關(guān)元數(shù)據(jù)作為值。這樣的方法有利于靈活的元數(shù)據(jù)建模和管理。如在本說明書中之前提及的,可以使用任何其它基于圖的存儲裝置,以如下方式實施本發(fā)明的優(yōu)選實施方式:通過基于圖的存儲裝置來存儲以及訪問元數(shù)據(jù)。在本發(fā)明的實施方式中,可以如以下解釋的那樣使用元數(shù)據(jù)來記錄節(jié)點訪問頻繁度和節(jié)點對的共現(xiàn)性。反過來,使用元數(shù)據(jù)來選擇將哪些圖節(jié)點包括在節(jié)點的初始子集中,以及哪些圖節(jié)點具有特定節(jié)點被延遲的調(diào)和處理。
[0078]形式是SPO的原三元組以及形式是POS和OSP的復(fù)制三元組的組被排序并分成n段,其中n是用于存儲數(shù)據(jù)的服務(wù)器(或存儲單元)的數(shù)量,其中每個服務(wù)器負(fù)責(zé)一個數(shù)據(jù)段??梢允褂霉:瘮?shù)將數(shù)據(jù)段映射至服務(wù)器。
[0079]為了有效地定位特定三元組或其變量之一被置于的段,可以使用Trie (具有受限于待索引的字符串的大小的搜索復(fù)雜度的排序樹),其中Trie的每個葉子對應(yīng)于數(shù)據(jù)段。例如,可以實施從數(shù)據(jù)項到服務(wù)器的兩級映射。使用Trie來對所有現(xiàn)有的三元組進(jìn)行組織和排序,其中整個三元組集合按字母順序排列。然后,通過跟隨與Trie中的每個節(jié)點關(guān)聯(lián)的前綴來完成尋找正確的數(shù)據(jù)段。在檢索段ID之后,將一致哈希用作工具,將段映射至服務(wù)器機(jī)器。將所述兩個映射級聯(lián)在一起,能夠找到每個三元組的目的地存儲機(jī)器的函數(shù)(Y ):通過實施 Y =consistent-hashing (trie-search (t)) , Y:t — IDmachine0 該函數(shù)使用Trie結(jié)構(gòu)將數(shù)據(jù)項映射為段ID,并且然后使用一致哈希將段ID映射為機(jī)器ID。如以下段落中將要描述的,使用所述方法來存儲所有的三元組版本。
[0080]添加三元組包括以下步驟:在有序的數(shù)據(jù)空間中定位數(shù)據(jù)段;以及將鍵值元組插入至相應(yīng)的機(jī)器(使用¥()映射)。以下在算法I中詳細(xì)描述用于三元組插入的示例性算法。
[0081]算法1:addTriple (t)
[0082]需要:Y0
[0083]In1 ^ y (t.SP0),m2 — Y (t.P0S),m3 — Y (t.0SP)
[0084]以 Hi1,存儲(<t.SPO, metadata〉,In1, m2, m3)
[0085]以 m2,存儲(<t.POS, metadata〉,In1, m2, m3)
[0086]以m3,存儲(〈t.0SP, metadata〉,In1, m2, m3)
[0087]向機(jī)器傳遞的變元包括:三元組或三元組的變量以及被保持在服務(wù)器局部存儲索引表中以用于故障恢復(fù)的所有所涉及的機(jī)器(針對變量)的標(biāo)識符(ml,m2,m3)。這些程序確保每個三元組SP0、P0S和OSP以允許使用三元組數(shù)據(jù)的子集的任意組合作為前綴來進(jìn)行范圍查詢的方式被存儲在系統(tǒng)中。
[0088]對三元組進(jìn)行定位的機(jī)制與用于檢索和刪除的機(jī)制相同。由于數(shù)據(jù)通常是有序的,因此可以檢索處理RDF范圍查詢所需的段ID。定義5陳述了如何在本具體實施中執(zhí)行范圍查詢。
[0089]定義5:范圍查詢。給定兩個三元組tl和t2以及數(shù)據(jù)分段D0,…,Dn,范圍查詢檢索出tl與t2之間的所有三元組包括性地為:
[0090]{t 11 G D^t1 G Dj'key (t) ^ key (t:)}
[0091]U {t,11,G Dj't2 G Dj'key (t') ^ key (t2)}
[0092]U {t,,11,,G Dk" (i < k < j)}
[0093]其中key ()將三元組轉(zhuǎn)換為在KVS中的鍵。
[0094]需要被訪問的段是:包含tl的段、包含t2的段以及所有中間段。[0095]刪除操作通過在每個服務(wù)器上使用“刪除”來代替在算法I中的“存儲”指令來以相似方式進(jìn)行處理?!皠h除”指令去除對應(yīng)于三元組的行并更新相應(yīng)的索引表(如果需要)。
[0096]可以以“事件驅(qū)動”方式來實施本發(fā)明的實施方式的調(diào)和的遞增法。當(dāng)“某事”改變了數(shù)據(jù)存儲的狀態(tài)(例如插入新三元組或檢索現(xiàn)有的三元組)時,產(chǎn)生事件,其中數(shù)據(jù)存儲是圖的存儲版本。為了數(shù)據(jù)調(diào)和,兩個基本事件被認(rèn)為能夠觸發(fā)調(diào)和處理的相關(guān)事件:addEvent和readEvent。通過三元組的插入操作發(fā)出addEvent,通過圖查詢發(fā)出readEvent。作為對這兩個事件的反應(yīng),調(diào)和被觸發(fā)??梢砸饠?shù)據(jù)調(diào)和的其它類型的事件可以被表示為一系列addEvent和readEvent,因此不再分別定義。當(dāng)然,addEvent與readEvent是高度相關(guān)的。當(dāng)向非空圖添加三元組時,將訪問并且評估相關(guān)三元組,以檢測應(yīng)當(dāng)被調(diào)和的任何數(shù)據(jù),引起向數(shù)據(jù)存儲待發(fā)出的一系列readEvent。這樣緊密的關(guān)系以示例性方式被反映,用于選擇與以下陳述的特定節(jié)點之間執(zhí)行調(diào)和處理的節(jié)點的初始子集。readEvent被認(rèn)為是圖遍歷操作。采用遍歷歷史來建立初始子集,該初始子集包括被最多訪問的節(jié)點以及與被最多訪問的節(jié)點具有強共現(xiàn)性關(guān)系的節(jié)點。用于選擇初始子集的算法是用于選擇初始子集的示例性機(jī)制,并且基于如下假設(shè):如果兩個節(jié)點是強相關(guān)的(即在圖遍歷操作中在訪問節(jié)點A之后訪問節(jié)點B的概率非常高),則非??赡茉谕焕讨袑執(zhí)行的調(diào)和處理也應(yīng)當(dāng)對B執(zhí)行,而不是延遲執(zhí)行。遵循使用共現(xiàn)性關(guān)系的這樣的相關(guān)節(jié)點的路徑,可以選擇其調(diào)和比其它節(jié)點的調(diào)和更迫切的節(jié)點的初始子集。
[0097]這樣的選擇機(jī)制的可取之處是顯著的。即使圖被跨存在多個服務(wù)器上,單個機(jī)器上的數(shù)據(jù)的大小可能會非常大,從而否定了實時的窮舉調(diào)和動作??梢允褂脙蓚€任意節(jié)點之間的共現(xiàn)性概率來將圖劃分為:被頻繁訪問的節(jié)點以及與被最頻繁訪問的節(jié)點具有強相關(guān)性的節(jié)點的子圖(初始子集);以及包含被較少訪問的節(jié)點的子圖(另外子集)。對于后者,調(diào)和檢查被推遲,直到執(zhí)行了直接讀取操作為止。因此,遞增法使得能夠進(jìn)行關(guān)于大數(shù)據(jù)圖的調(diào)和。
[0098]通過將圖劃分為初始子集和另外子集,還可以將數(shù)據(jù)圖的分段疊加在已經(jīng)就位的物理數(shù)據(jù)分段之上。該基于使用的分段還增強了數(shù)據(jù)調(diào)和的并行處理。
[0099]本發(fā)明的實施方式可以采用或創(chuàng)建擴(kuò)展圖,其通過以下將詳細(xì)闡述的一些特定元數(shù)據(jù)字段/值來擴(kuò)展。所述特定元數(shù)據(jù)字段提供如下信息:該信息可以用于將節(jié)點的初始子集與節(jié)點的另外子集區(qū)分開。
[0100]定義4:擴(kuò)展的RDF圖。
[0101]擴(kuò)展的RDF圖是Ge =〈V’,E’>,其使用節(jié)點和邊的元數(shù)據(jù)來擴(kuò)展RDF圖G =〈V,E>:
[0102]V,= {〈V, mv| V G V〉},E,= {<e, me> | e G E},
[0103]其中V和E如在定義2:RDF圖中所定義的。
[0104]在該特定實施中,三元組被視為基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),以上定義的擴(kuò)展RDF圖需要節(jié)點局部元數(shù)據(jù)和邊局部元數(shù)據(jù)。由于該實施存儲了每個三元組的三個變量,因而可以如下存儲元數(shù)據(jù):
[0105]?存儲節(jié)點和邊的元數(shù)據(jù):針對分別表示三元組主語和三元組賓語的節(jié)點,mv被局部地存儲在每個SPO三元組和每個OSP三元組中。me被局部存儲至每個PSO中。更新現(xiàn)有的三元組的元數(shù)據(jù)包括:讀取三元組數(shù)據(jù);重新計算值;以及返回該值。[0106]?查詢節(jié)點和邊的元數(shù)據(jù):當(dāng)查詢關(guān)于特定節(jié)點或邊的元數(shù)據(jù)時,檢索所有的相關(guān)三元組并且根據(jù)需要將元數(shù)據(jù)進(jìn)行合計。
[0107]例如,可以使用簡單的鍵值元組kt, number_of_visits來保持關(guān)于特定三元組(t)被讀取多少次的指示。如果需要功能模塊來估計對節(jié)點s的訪問總次數(shù),則應(yīng)當(dāng)檢索將<s,?,?>作為鍵(其中?匹配任意字符串)的所有鍵值元組。相應(yīng)的number_0f_ViSitS (訪問次數(shù))然后被求和,以給出最終答案。
[0108]用元數(shù)據(jù)記錄節(jié)點訪問頻繁度和節(jié)點對的共現(xiàn)性來擴(kuò)展正常的RDF圖。使用頻繁度和共現(xiàn)性是為了減少調(diào)和處理需要最初訪問的節(jié)點的數(shù)目,并從而降低在三元組插入時的計算成本。這使得能夠?qū)崿F(xiàn)將非緊急操作推遲至當(dāng)該非緊急操作變得必要時的點的遞增調(diào)和技術(shù)。節(jié)點和邊的元數(shù)據(jù)被用作用信號表示所述節(jié)點在其它節(jié)點當(dāng)中如何顯著以及所述節(jié)點如何彼此緊密地連接的機(jī)制。
[0109]作為readEvent (由數(shù)據(jù)查詢觸發(fā)的)的結(jié)果,數(shù)值被遞增地添加到標(biāo)準(zhǔn)圖。在下文中,標(biāo)準(zhǔn)數(shù)據(jù)圖(RDF圖)被表不為G,而擴(kuò)展圖被表不為G’ i,其中i表不向原圖施加了多少次迭代(由readEvent和addEvent觸發(fā)的)以產(chǎn)生遞增圖變換。
[0110]定義6:頻繁度、共現(xiàn)性、未決請求。
[0111]令t為三元組〈S, P,O〉, s和O是由t的圖形表示所產(chǎn)生的兩個節(jié)點。頻繁度f(s)
jyi
是訪問主語節(jié)點S的總次數(shù)。共現(xiàn)性為⑶仏0) = ^,其中m是特定三元組〈S,P,0>被用s作為主語進(jìn)行訪問/查詢的總次數(shù)。
[0112]Lt=[t0; --?, ti ,…,tn]是包含在所述節(jié)點處仍待調(diào)和的所有三元組的三元組列表。Lt可以為空。
[0113]節(jié)點s與節(jié)點O之間的共現(xiàn)性被近似為:在對節(jié)點s的所有訪問中多少訪問導(dǎo)致了對節(jié)點O的訪問。在基礎(chǔ)存儲水平上,元數(shù)據(jù)與形成鍵值元組的三元組相關(guān)聯(lián),其中頻繁度和未決請求被實施為節(jié)點的元數(shù)據(jù)(即〈V,f:Lt>),而共現(xiàn)性則通過邊的元數(shù)據(jù)被實現(xiàn)為<e, Co〉。當(dāng)然,這些僅僅是用于存儲標(biāo)識被最多訪問的節(jié)點以及在圖遍歷操作中在被最多訪問的節(jié)點之后訪問的節(jié)點而所需的元數(shù)據(jù)的示例性技術(shù)。本領(lǐng)域的技術(shù)人員將會理解:可以將在不同位置中作為元數(shù)據(jù)所存儲的各種不同值用于該同一目的。
[0114]addEvent和readEvent被系統(tǒng)不同地處理。由于向圖添加三元組會通常導(dǎo)致:一系列的查詢被發(fā)出并且潛在地生成并添加新三元組,所以addEvent的實例可以被認(rèn)為是對頻繁度和共現(xiàn)性值進(jìn)行更新的序列。理論上,只有不再有節(jié)點需要被處理時,這樣的漣漪效應(yīng)(ripple-off effect)才會終止。
[0115]令t為與從主語節(jié)點到賓語節(jié)點的有向邊等價的三元組S,P,O。對圖的每次讀取操作遞增地改變已被訪問的節(jié)點的頻繁度值f (S)和在G' i中的相鄰節(jié)點之間的共現(xiàn)性關(guān)系CO (S,O)?;驹砣缦?通過使用共現(xiàn)性關(guān)聯(lián)原則,可作出關(guān)于相對于節(jié)點s執(zhí)行的調(diào)和處理是否將/應(yīng)當(dāng)被傳播至與s連接的相鄰節(jié)點或者這些相鄰節(jié)點的調(diào)和處理是否應(yīng)當(dāng)被延遲的決定。
[0116]圖3示出了向圖添加新三元組的處理中的控制的流程。
[0117]當(dāng)向空圖添加三元組時,不需要調(diào)和,S101-S103,即在S102處為“是”。然后,在步驟S104中,將擴(kuò)展圖初始化為簡單的RDF圖。當(dāng)向現(xiàn)有圖添加三元組時,即在S102處為“否”,在S105處更新擴(kuò)展圖,將主語節(jié)點的相應(yīng)頻繁度以及連接三元組主語和賓語的邊的共現(xiàn)性增加I。如果需要,在S105處執(zhí)行調(diào)和處理。在該階段,可以是如下情況:選擇節(jié)點的初始子集,并且在節(jié)點的初始子集與新三元組的主語節(jié)點之間執(zhí)行調(diào)和處理。在圖4中示出了用于S105中的處理的控制的示意性流程(如以下討論并在算法2中進(jìn)行格式化的)。在許多情況下,調(diào)和處理可能導(dǎo)致產(chǎn)生新三元組(在S106處的“是”),這反過來又導(dǎo)致元數(shù)據(jù)更新以及新的調(diào)和處理。這將繼續(xù),直到?jīng)]有新知識(三元組)生成為止。在算法2中將所述處理進(jìn)行格式化。應(yīng)當(dāng)注意,由于KVS的性質(zhì),添加到現(xiàn)有鍵值對僅僅更新元組的值。
[0118]關(guān)于執(zhí)行特定程序的設(shè)備,可以通過選擇模塊來執(zhí)行初始子集的選擇??梢酝ㄟ^調(diào)和處理模塊來執(zhí)行包括調(diào)和處理,該調(diào)和處理包括:相似度計算、相似度合計以及必要時創(chuàng)建新的等價性鏈接。通過調(diào)和處理控制模塊來執(zhí)行對另外(延遲)的調(diào)和處理的標(biāo)識和調(diào)度,所述另外(延遲)的調(diào)和處理包括:對特定觸發(fā)事件進(jìn)行響應(yīng);以及對響應(yīng)于觸發(fā)事件而應(yīng)當(dāng)被執(zhí)行的調(diào)和處理進(jìn)行標(biāo)識。每個模塊可以被實現(xiàn)為如下數(shù)據(jù)庫控制器的一部分:該數(shù)據(jù)控制器可以相對于分布式系統(tǒng)中的存儲單元/服務(wù)器/計算資源是局部的,或者可以是集中式的并且設(shè)置在集中式硬件上,或者通過與分布式硬件/計算資源/服務(wù)器相配合以創(chuàng)建有效的集中式控制器。模塊可以被實現(xiàn)為硬件,或者可以為在計算資源/服務(wù)器/存儲單元上工作的軟件模塊,例如作為數(shù)據(jù)庫管理系統(tǒng)的一部分。
[0119]數(shù)據(jù)/語義調(diào)和主要發(fā)生在宣稱新實例數(shù)據(jù)時。當(dāng)添加三元組t=〈s,p,o>時,addEvent實例觸發(fā)待對照整個圖中執(zhí)行的插入三元組t的主語s的調(diào)和。在實踐中,需要對照其處理的圖的大小會容易地達(dá)到數(shù)百萬節(jié)點并且變得過大而不能進(jìn)行窮舉遍歷。通過將重點放于選擇特定節(jié)點(在該情況下,為新三元組的主語)將要與之初始執(zhí)行調(diào)和的初始子集,前面的處理負(fù)擔(dān)被降低,并且獲得較廉價的初始調(diào)和近似。
[0120]算法2doAddEvent (t = s, p, o?
[0121]需要:G=〈V,E> 作為 RDF 圖
[0122]需要:addTripleQ (算法 I)if G =Othen
//不需要調(diào)和
addTriple(0
初始化G0其中=F且£
G0 <-G0 u {(s,f0(s) = O),((s,o),co0(s,o) = O〉}
return
end if
if s e Ff then
f,⑷+ 1
if〈5,o〉G E then
COj(SJ)) = CO1.{.SJ))+1 [0123]end if else
a;;(.v,*v) = 0
end if
else
f: = 0
end if
G <- Gl1 u {〈'/.(5)), {(s, o), Coi (s, o)〉}
addTriplc(,)
對照 Gi,reconcile(0
if生成了新二元組then
new addEvent.HrcQ
[0124]算法 3reconcile (t) t=〈s,p,o>
[0125]需要:a and P作為預(yù)定的閾值
[0126]
【權(quán)利要求】
1.一種用于執(zhí)行在數(shù)據(jù)圖中被表示為節(jié)點的資源的調(diào)和的方法,所述方法包括: 選擇所述圖的節(jié)點的、待針對其執(zhí)行與特定節(jié)點的調(diào)和處理的初始子集; 執(zhí)行所述特定節(jié)點與節(jié)點的所述初始子集中的每個節(jié)點之間的調(diào)和處理;以及 延遲所述特定節(jié)點與所述圖的節(jié)點的、待針對其執(zhí)行與所述特定節(jié)點的調(diào)和的另外子集之間的調(diào)和處理。
2.根據(jù)權(quán)利要求1所述的方法,其中, 選擇所述初始子集包括:確定所述節(jié)點中的哪些節(jié)點在圖遍歷操作中具有最高被讀取訪問次數(shù),并將這些節(jié)點作為被最多訪問的節(jié)點包括在所述初始子集中。
3.根據(jù)權(quán)利要求2所述的方法,其中, 選擇所述初始子集還包括:確定所述節(jié)點中的哪些節(jié)點具有最高被讀取訪問概率,作為在圖遍歷操作中的所述被最多訪問的節(jié)點之一之后的下一個節(jié)點。
4.根據(jù)權(quán)利要求1所述的方法,其中, 節(jié)點的所述另外子集是所述圖中的不是所述初始子集的成員的所有節(jié)點。
5.根據(jù)權(quán)利要求1所述的方法,其中, 節(jié)點的所述另外子集的所述調(diào)和處理被延遲、并且在當(dāng)對計算資源的監(jiān)視表明所述計算資源不然將會空閑時的時隙內(nèi)被執(zhí)行。
6.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 將所述特定節(jié)點的標(biāo)識添加到列表; 在所述列表中保持所述特定節(jié)點的標(biāo)識直到已執(zhí)行了與所述圖的節(jié)點的所述另外子集的處理為止,此時,將所述特定節(jié)點的標(biāo)識從所述列表中去除;以及 當(dāng)接收到標(biāo)識一個或多個待被讀取的節(jié)點的對所述圖的查詢時,檢查所述一個或多個待被讀取的節(jié)點中的哪些節(jié)點被標(biāo)識在所述列表上,并且,針對所述一個或多個待被讀取的節(jié)點中的被標(biāo)識在所述列表上的每個節(jié)點,執(zhí)行與所述圖的每個節(jié)點的調(diào)和處理。
7.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 針對所述圖的不包括在與其執(zhí)行調(diào)和處理的所述初始子集中的每個節(jié)點,將所述特定節(jié)點的標(biāo)識以關(guān)聯(lián)元數(shù)據(jù)的形式添加到未被調(diào)和的節(jié)點的列表,并在所述列表中保持所述標(biāo)識直到執(zhí)行了與所述特定節(jié)點的調(diào)和處理為止,此時,將所述特定節(jié)點的標(biāo)識從所述列表中去除;以及 當(dāng)接收到標(biāo)識一個或多個待被讀取的節(jié)點的對所述圖的查詢時,針對每個所述待被讀取的節(jié)點,執(zhí)行該節(jié)點與以關(guān)聯(lián)元數(shù)據(jù)的形式標(biāo)識在未被調(diào)和的節(jié)點的列表中的每個節(jié)點之間的調(diào)和處理。
8.根據(jù)權(quán)利要求1所述的方法,其中, 所述圖被存儲在計算資源的分布式網(wǎng)絡(luò)中。
9.根據(jù)權(quán)利要求1所述的方法,其中, 所述特定節(jié)點與另一個節(jié)點的調(diào)和處理包括: 通過對由執(zhí)行多個不同的相似度計算產(chǎn)生的值進(jìn)行合計來獲得相似度值,或者獲得由執(zhí)行相似度計算產(chǎn)生的單個值,其中,相似度計算是生成表示所述特定節(jié)點與所述另一個節(jié)點在語義上等價的似然度的值的計算;以及 如果所述相似度值超過預(yù)定的相似度閾值,則向所述圖添加表示所述特定節(jié)點與所述另一個節(jié)點之間的等價性關(guān)系的等價性鏈接。
10.根據(jù)權(quán)利要求8或9所述的方法,其中, 在計算資源的所述分布式網(wǎng)絡(luò)內(nèi)的多于一個的計算資源上同時執(zhí)行所述特定節(jié)點與存儲在該計算資源上的如下節(jié)點之間的調(diào)和處理:所述節(jié)點屬于正針對其執(zhí)行與所述特定節(jié)點的調(diào)和處理的節(jié)點子集。
11.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 針對每個節(jié)點,作為關(guān)聯(lián)元數(shù)據(jù),存儲表示所述節(jié)點在圖遍歷操作中被進(jìn)行讀取訪問的次數(shù)的值以及表示在所述圖中與所述節(jié)點鏈接的每個節(jié)點在圖遍歷操作中作為下一個節(jié)點被讀取的次數(shù)的值。
12.根據(jù)權(quán)利要求1所述的方法,其中,所述圖中的數(shù)據(jù)被編碼為三元組,每個三元組包括主語、謂語和賓語,并且所述圖的節(jié)點是所述三元組的主語和賓語,并且三元組的謂語表示所述三元組的主語與賓語之間的鏈接。
13.一種用于執(zhí)行在數(shù)據(jù)圖中被表示為節(jié)點的資源的調(diào)和的數(shù)據(jù)庫控制器,所述數(shù)據(jù)庫控制器包括: 選擇模塊,所述選擇模塊被配置成選擇所述圖的節(jié)點的、待針對其執(zhí)行與特定節(jié)點的調(diào)和處理的初始子集; 調(diào)和處理模塊,所述調(diào)和處理模塊被配置成執(zhí)行所述特定節(jié)點與節(jié)點的所述初始子集中的每個節(jié)點之間的調(diào)和處理;以及 調(diào)和處理控制模塊,所述調(diào)和處理控制模塊被配置成延遲所述圖的節(jié)點的、待針對其執(zhí)行與所述特定節(jié)點的調(diào)和的`另外子集的調(diào)和處理。
14.一種用于存儲數(shù)據(jù)圖的數(shù)據(jù)存儲系統(tǒng),在所述數(shù)據(jù)圖中,資源被表示為所述數(shù)據(jù)圖的節(jié)點,所述數(shù)據(jù)存儲系統(tǒng)包括: 多個存儲單元,所述多個存儲單元每個都被配置成存儲來自所述數(shù)據(jù)圖的數(shù)據(jù)段;以及 根據(jù)權(quán)利要求13所述的數(shù)據(jù)庫控制器。
15.一種計算機(jī)程序,所述計算機(jī)程序當(dāng)被計算機(jī)執(zhí)行時使得所述計算機(jī)執(zhí)行根據(jù)權(quán)利要求I至12中的任一項所述的方法,或者使得所述計算機(jī)擔(dān)當(dāng)根據(jù)權(quán)利要求13所述的數(shù)據(jù)庫控制器。
【文檔編號】G06F17/30GK103488673SQ201310231665
【公開日】2014年1月1日 申請日期:2013年6月9日 優(yōu)先權(quán)日:2012年6月11日
【發(fā)明者】胡波, 洛雷達(dá)納·拉埃拉 申請人:富士通株式會社