基于本體的查詢方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種基于本體的查詢方法及裝置,屬于信息檢索領(lǐng)域。所述方法包括:獲取用戶輸入的待查詢?nèi)M,待查詢?nèi)M中的已知元素為查詢條件,至少一個(gè)未知元素為查詢對象;在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,得到在每個(gè)計(jì)算節(jié)點(diǎn)確定的元素;根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的元素獲取查詢結(jié)果。本發(fā)明通過將本體構(gòu)建為鍵值對并存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,根據(jù)查詢條件和查詢對象在鍵值對中查找相匹配的元素從而得到查詢結(jié)果,由于鍵值對之間相互獨(dú)立,可以進(jìn)行匹配查找,避免了較為復(fù)雜的推理運(yùn)算,查詢速度較快,且本體增大對查詢速度的影響較小。
【專利說明】基于本體的查詢方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息檢索領(lǐng)域,特別涉及一種基于本體的查詢方法及裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)查詢是一種獲取期望數(shù)據(jù)的重要手段,在傳統(tǒng)的查詢方法中,用戶輸入查詢關(guān)鍵字后,計(jì)算節(jié)點(diǎn)將查詢關(guān)鍵詞與數(shù)據(jù)庫中的數(shù)據(jù)直接匹配,得到查詢結(jié)果。例如,用戶輸入查詢關(guān)鍵詞“張三”后,計(jì)算節(jié)點(diǎn)會將與“張三”直接匹配的數(shù)據(jù)庫中的數(shù)據(jù)返回給用戶,如張三的照片、個(gè)人網(wǎng)站或論文等。然而,當(dāng)用戶期望獲得更精確的查詢結(jié)果時(shí),如期望查詢張三的聯(lián)系地址時(shí),通過傳統(tǒng)的查詢方法往往不能實(shí)現(xiàn)。為了向用戶提供更精確的查詢結(jié)果,目前提出了一種基于本體的查詢方法。本體是對真實(shí)世界中的實(shí)體及實(shí)體之間的關(guān)系的描述,描述本體的方式有多種,RDF (Resource Descript1n Framework,資源描述框架)是其中一種使用范圍較廣的方式。RDF描述的本體由多個(gè)三元組構(gòu)成,一個(gè)三元組由三個(gè)元素組成:資源、屬性值和屬性,也稱之為主體(Subject)、客體(Object)和描述主體和客體之間的關(guān)系的謂語(Predicate),并且,一個(gè)三元組的主體/客體/謂語可以是另一個(gè)三元組的主體/客體/謂語。將RDF描述的本體存儲到計(jì)算節(jié)點(diǎn)中時(shí),除了存儲各個(gè)元素之外,為了使計(jì)算節(jié)點(diǎn)能夠識別出各個(gè)元素之間的相互關(guān)系,還需要存儲對應(yīng)的一套邏輯關(guān)系,各個(gè)元素及其邏輯關(guān)系可以描述為如圖1所示的RDF圖的形式。由于基于本體的查詢能夠根據(jù)用戶的查詢關(guān)鍵字之間的關(guān)系返回更符合用戶要求的查詢結(jié)果,目前已成為了信息檢索領(lǐng)域的研究熱點(diǎn)。
[0003]2005 年 Li Chen, Amarnath Gupta 和 M.Erdem Kurul 發(fā)表在 Internat1nalConference on Management of Data, C0MAD2005b 上的文獻(xiàn)《A Semantic-aware RDF QueryAlgebra》中公布了一種基于本體的查詢方法,該方法包括:預(yù)先將RDF描述的本體以RDF圖的形式存儲在一個(gè)計(jì)算節(jié)點(diǎn)中,其中包括RDF的各個(gè)元素及對應(yīng)的邏輯關(guān)系;獲取用戶輸入的待查詢?nèi)M,待查詢?nèi)M中的已知元素為查詢條件,未知元素為查詢對象;從RDF圖中任選一個(gè)元素,根據(jù)預(yù)先存儲的邏輯關(guān)系推理出該RDF圖中的元素在三元組中的位置,如果該RDF圖中的元素與查詢條件中任一個(gè)已知元素在三元組中的位置相同,則將該已知元素與該RDF圖中的元素比較;之后以該RDF圖中的元素為起點(diǎn),根據(jù)邏輯關(guān)系推理出與該已知元素在三元組中的位置相同的RDF圖中的下一元素,將該已知元素與RDF圖中的下一元素進(jìn)行比較,直至遍歷整個(gè)RDF圖,記錄與該已知元素相匹配的RDF圖中的元素;根據(jù)該已知元素在三元組中的位置,通過邏輯關(guān)系推理出相匹配的RDF圖中的元素所處的三元組;并根據(jù)查詢條件中其余已知元素在確定的三元組中確定查詢條件對應(yīng)的三元組;從查詢條件對應(yīng)的三元組中確定查詢對象對應(yīng)的元素,并將確定的元素作為查詢結(jié)果。
[0004] 例如,在一個(gè)計(jì)算節(jié)點(diǎn)上預(yù)先存儲有如圖1所示的RDF圖,RDF圖中包括RDF的各個(gè)元素及對應(yīng)的邏輯關(guān)系;當(dāng)用戶期望查詢張三的聯(lián)系地址時(shí),輸入待查詢?nèi)M(S=張三,P=聯(lián)系地址,0=?)到計(jì)算節(jié)點(diǎn),其中,待查詢?nèi)M中的已知元素主體“張三”和謂語“聯(lián)系地址”為查詢條件,未知元素客體O為查詢對象;計(jì)算節(jié)點(diǎn)在獲取用戶輸入的待查詢?nèi)M后,任選一個(gè)元素“科技周刊”為起點(diǎn),根據(jù)預(yù)先存儲的邏輯關(guān)系推理出元素“科技周刊”為主體,則將查詢條件中的已知元素主體“張三”與“科技周干『比較;以“科技周刊”為起點(diǎn),繼續(xù)根據(jù)邏輯關(guān)系推理出下一個(gè)為主體的元素,并將推理出的元素與已知元素主體“張三”比較,直至遍歷整個(gè)RDF圖;記錄與已知元素主體“張三”相匹配的RDF圖中的元素主體
“張三”;通過邏輯關(guān)系推理出元素主體“張三”所處的三元組為張三_^1^創(chuàng)新公-司和張二聯(lián)系地址 >梧桐路32號;根據(jù)另一已知元素謂語“聯(lián)系地址”確定查詢條件對應(yīng)的三元組為張三9關(guān)系地>址 >梧桐Jg各32號 ,根據(jù)查詢對象從確定的三元組中確定查詢對象對應(yīng)的元素為客體“梧桐路32號”,并將客體“梧桐路32號”作為查詢結(jié)果。
[0005]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0006]在現(xiàn)有技術(shù)提供的基于本體的查詢方法中,由于RDF描述的本體以RDF圖的形式存儲,在遍歷查找RDF圖中的每個(gè)元素時(shí),需要根據(jù)RDF圖中每個(gè)元素之間的邏輯關(guān)系進(jìn)行推理運(yùn)算從而遍歷RDF圖,因此,遍歷RDF圖所需的時(shí)間較長,導(dǎo)致查詢速度較慢;并且為了在遍歷RDF圖時(shí)推理邏輯不中斷,通常需要將RDF圖存儲在一個(gè)計(jì)算節(jié)點(diǎn)上,當(dāng)RDF圖不斷增大時(shí),RDF圖的邏輯關(guān)系也更復(fù)雜,推理所需的時(shí)間更長,查詢速度將會大幅度下降。
【發(fā)明內(nèi)容】
[0007]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種基于本體的查詢方法及裝置。所述技術(shù)方案如下:
[0008]一方面,提供了一種基于本體的查詢方法,其中,多個(gè)計(jì)算節(jié)點(diǎn)中分別存儲有根據(jù)RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,所述鍵值包含所述三元組的三個(gè)元素,所述鍵包含所述三元組的三個(gè)元素中的一個(gè)元素,所述方法包括:
[0009]獲取用戶輸入的至少一個(gè)待查詢?nèi)M,所述待查詢?nèi)M中的已知元素為查詢條件,所述待查詢?nèi)M中的至少一個(gè)未知元素為查詢對象;
[0010]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定所述查詢對象對應(yīng)的元素,得到在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素;
[0011]根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0012]具體地,所述待查詢?nèi)M中的已知元素為一個(gè),所述查詢條件為所述待查詢?nèi)M中的一個(gè)已知元素,所述在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,包括:
[0013]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的一個(gè)已知元素相匹配的鍵,并將所述相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0014]具體地,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,包括:
[0015]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵;
[0016]在相匹配的鍵所對應(yīng)的鍵值中查找與所述查詢條件的另一個(gè)已知元素相匹配的鍵值,并將所述相匹配的鍵值所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0017]具體地,所述根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0018]將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果O
[0019]具體地,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,包括:
[0020]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與所述其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0021]具體地,所述根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0022]將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素按照所述查詢條件的已知元素進(jìn)行劃分,得到根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素;
[0023]將根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。
[0024]具體地,所述待查詢?nèi)M為多個(gè),所述根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0025]根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0026]具體地,所述根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0027]如果所述每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系,則將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果;
[0028]如果所述每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系,則將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。
[0029]進(jìn)一步地,所述方法還包括:
[0030]根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對,并將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
[0031]具體地,所述將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,包括:
[0032]如果構(gòu)建的多個(gè)鍵值對中存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對,則在計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
[0033]具體地,所述將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,包括:
[0034]將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
[0035]另一方面,提供了一種基于本體的查詢裝置,其中,多個(gè)計(jì)算節(jié)點(diǎn)中分別存儲有根據(jù)RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,所述鍵值包含所述三元組的三個(gè)元素,所述鍵包含所述三元組的三個(gè)元素中的一個(gè)元素,所述裝置包括:
[0036]第一獲取模塊,用于獲取用戶輸入的至少一個(gè)待查詢?nèi)M,所述待查詢?nèi)M中的已知元素為查詢條件,所述待查詢?nèi)M中的至少一個(gè)未知元素為查詢對象;
[0037]查找模塊,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述第一獲取模塊獲取到的查詢條件相匹配的鍵值對;
[0038]第一確定模塊,用于在所述查找模塊查找到的相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定所述查詢對象對應(yīng)的元素,得到在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素;
[0039]第二獲取模塊,用于根據(jù)在所述第一確定模塊在每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0040]具體地,所述待查詢?nèi)M中的已知元素為一個(gè),所述查詢條件為所述待查詢?nèi)M中的一個(gè)已知元素,所述查找模塊,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的一個(gè)已知元素相匹配的鍵,并將所述相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0041]具體地,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述查找模塊,包括:
[0042]第一查找單元,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵;
[0043]第二查找單元,用于在所述第一查找單元查找到的相匹配的鍵所對應(yīng)的鍵值中查找與所述查詢條件的另一個(gè)已知元素相匹配的鍵值,并將所述相匹配的鍵值所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0044]具體地,所述第二獲取模塊,用于將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果。
[0045]具體地,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述查找模塊,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與所述其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0046]具體地,所述第二獲取模塊,包括:
[0047]劃分單元,用于將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素按照所述查詢條件的已知元素進(jìn)行劃分,得到根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素;
[0048]第一獲取單元,用于將所述劃分單元劃分得到的根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。
[0049]所述待查詢?nèi)M為多個(gè),所述第二獲取模塊,用于根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0050]具體地,所述第二獲取模塊,包括:
[0051]第二獲取單元,用于在所述每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系時(shí),將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果;
[0052]第三獲取單元,用于在所述每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系時(shí),則將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果O
[0053]進(jìn)一步地,所述裝置還包括:
[0054]構(gòu)建模塊,用于根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對;
[0055]存儲模塊,用于將所述構(gòu)建模塊構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
[0056]具體地,所述存儲模塊,用于在構(gòu)建的多個(gè)鍵值對中存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對時(shí),則在計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
[0057]具體地,所述存儲模塊,用于將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
[0058]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0059]通過預(yù)先將RDF描述的本體構(gòu)建成多個(gè)鍵值對并存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,當(dāng)用戶查詢時(shí),在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,之后根據(jù)確定的元素獲取查詢結(jié)果,不僅提供了一種新的RDF描述的本體的存儲方式;并且由于存儲的鍵值對之間是相互獨(dú)立的,可以直接根據(jù)查詢條件在存儲的鍵值對中查找相匹配的鍵值對并得到查詢結(jié)果,避免了較為復(fù)雜的推理運(yùn)算,查詢過程較為簡便,且RDF描述的本體增大對查詢速度的影響較小。此外,由于鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,還可以在多個(gè)計(jì)算節(jié)點(diǎn)中進(jìn)行并行查找,較大地提高了查詢速度。
【專利附圖】
【附圖說明】
[0060]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0061]圖1是一種RDF描述的本體的示意圖;
[0062]圖2是本發(fā)明實(shí)施例一提供的一種基于本體的查詢方法流程圖;
[0063]圖3是本發(fā)明實(shí)施例二提供的一種基于本體的查詢方法流程圖;
[0064]圖4是本發(fā)明實(shí)施例二提供的構(gòu)建鍵值對并存儲構(gòu)建的鍵值對的示意圖;
[0065]圖5是本發(fā)明實(shí)施例三提供的一種基于本體的查詢裝置的結(jié)構(gòu)示意圖;
[0066]圖6是本發(fā)明實(shí)施例三提供的一種查找模塊的結(jié)構(gòu)示意圖;
[0067]圖7是本發(fā)明實(shí)施例三提供的一種第二獲取模塊的結(jié)構(gòu)示意圖;
[0068]圖8是本發(fā)明實(shí)施例三提供的另一種第二獲取模塊的結(jié)構(gòu)示意圖;
[0069]圖9是本發(fā)明實(shí)施例三提供的另一種基于本體的查詢裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0070]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0071]實(shí)施例一
[0072]本發(fā)明實(shí)施例提供了一種基于本體的查詢方法,其中,多個(gè)計(jì)算節(jié)點(diǎn)中分別存儲有根據(jù)RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,所述鍵值包含所述三元組的三個(gè)元素,所述鍵包含所述三元組的三個(gè)元素中的一個(gè)元素。參見圖2,方法流程包括:
[0073]201:獲取用戶輸入的至少一個(gè)待查詢?nèi)M,待查詢?nèi)M中的已知元素為查詢條件,待查詢?nèi)M中的至少一個(gè)未知元素為查詢對象。
[0074]202:在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,得到在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素。
[0075]具體地,待查詢?nèi)M中的已知元素為一個(gè),查詢條件為待查詢?nèi)M中的一個(gè)已知元素,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,包括:
[0076]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的一個(gè)已知元素相匹配的鍵,并將相匹配的鍵所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0077]具體地,待查詢?nèi)M中的已知元素為兩個(gè),查詢條件為待查詢?nèi)M中的兩個(gè)已知元素,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,包括:
[0078]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素相匹配的鍵;
[0079]在相匹配的鍵所對應(yīng)的鍵值中查找與查詢條件的另一個(gè)已知元素相匹配的鍵值,并將相匹配的鍵值所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0080]具體地,待查詢?nèi)M中的已知元素為兩個(gè),查詢條件為待查詢?nèi)M中的兩個(gè)已知元素,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,包括:
[0081]在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0082]203:根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0083]具體地,根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0084]將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果。
[0085]具體地,根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0086]將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素按照查詢條件的已知元素進(jìn)行劃分,得到根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素;
[0087]將根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。
[0088]具體地,待查詢?nèi)M為多個(gè),根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0089]根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0090]具體地,根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:
[0091]如果每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系,則將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果;
[0092]如果每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系,則將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。
[0093]進(jìn)一步地,該方法還包括:
[0094]根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對,并將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
[0095]具體地,將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,包括:
[0096]如果構(gòu)建的多個(gè)鍵值對中存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對,則在計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
[0097]具體地,將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,包括:
[0098]將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
[0099]綜上所述,本發(fā)明實(shí)施例提供的方法,通過預(yù)先將RDF描述的本體構(gòu)建成多個(gè)鍵值對并存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,當(dāng)用戶查詢時(shí),在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,之后根據(jù)確定的元素獲取查詢結(jié)果,不僅提供了一種新的RDF描述的本體的存儲方式;并且由于存儲的鍵值對之間是相互獨(dú)立的,可以直接根據(jù)查詢條件在存儲的鍵值對中查找相匹配的鍵值對并得到查詢結(jié)果,避免了較為復(fù)雜的推理運(yùn)算,查詢過程較為簡便,且RDF描述的本體增大對查詢速度的影響較小。此外,由于鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,還可以在多個(gè)計(jì)算節(jié)點(diǎn)中進(jìn)行并行查找,較大地提高了查詢速度。
[0100]實(shí)施例二
[0101]為了提高在RDF描述的本體中查詢用戶期望的數(shù)據(jù)的速度,本發(fā)明實(shí)施例提供了一種基于本體的查詢方法。結(jié)合上述實(shí)施例一的內(nèi)容,參見圖3,方法流程包括:
[0102]301:根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對。
[0103]在該步驟中,RDF描述的本體可以為一個(gè)或多個(gè)RDF圖的形式,每個(gè)RDF圖對應(yīng)一個(gè)RDF格式的文件。RDF描述的本體包含至少一個(gè)三元組,每個(gè)三元組包含三個(gè)元素,三個(gè)元素分別為主體、謂語和客體。為了能夠?qū)崿F(xiàn)后續(xù)的查詢工作,在該步驟中,將RDF描述的本體的三元組構(gòu)建為鍵值對的形式,具體包括:將RDF描述的本體的三元組中的每個(gè)元素設(shè)置為每個(gè)鍵,并將每個(gè)元素對應(yīng)的三元組中的三個(gè)元素設(shè)置為每個(gè)鍵對應(yīng)的鍵值,將每個(gè)鍵及其對應(yīng)的鍵值作為每個(gè)鍵值對。其中,將RDF描述的本體的三元組可以根據(jù)RDF描述的本體中對應(yīng)的邏輯關(guān)系推理得出。構(gòu)建得到的鍵值對中,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,鍵值包含三元組的三個(gè)元素,鍵包含三元組的三個(gè)元素中的一個(gè)元素。
[0104]舉例來說,以如圖4 (a)所示的RDF描述的本體為例,根據(jù)該RDF描述的本體對應(yīng)的邏輯關(guān)系推理出其中的三元組A>m,將其中元素A設(shè)置為一個(gè)鍵,將元素A
對應(yīng)的三元組中的三個(gè)元素(A,org: type,01)設(shè)置為元素A對應(yīng)的鍵值,將鍵A和鍵值(A,org:type, 01)設(shè)置為一個(gè)鍵值對{A, (A, org: type, 01) }。對于RDF描述的本體中的每個(gè)三元組都按照上述方法構(gòu)建鍵值對,構(gòu)建的鍵值對如圖4 (b)所示。
[0105]302:將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
[0106]在多個(gè)鍵值對構(gòu)建完成后,由于各個(gè)鍵值對之間不再具有邏輯上的關(guān)聯(lián)性,可以將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,用于后續(xù)的查詢。其中,每個(gè)計(jì)算節(jié)點(diǎn)都具有一定的存儲空間,用于存儲構(gòu)建的鍵值對。由于鍵值對所占用的存儲空間較小且每個(gè)鍵值對所占用的存儲空間的大小相差不大,因此在存儲時(shí),計(jì)算節(jié)點(diǎn)可以為每個(gè)鍵值對分配固定的存儲空間。當(dāng)計(jì)算節(jié)點(diǎn)存儲空間的大小固定時(shí),該計(jì)算節(jié)點(diǎn)所能存儲的鍵值對的數(shù)量也是固定的。例如,當(dāng)計(jì)算節(jié)點(diǎn)的存儲空間為200MB的空間,為每個(gè)鍵值對分配0.02MB的固定存儲空間,則該計(jì)算節(jié)點(diǎn)可以存儲10000個(gè)鍵值對。將構(gòu)建的多個(gè)鍵值對存儲到的計(jì)算節(jié)點(diǎn)的數(shù)量可以根據(jù)構(gòu)建的多個(gè)鍵值對的數(shù)量以及計(jì)算節(jié)點(diǎn)的存儲空間和處理速度進(jìn)行選擇,例如可以為4個(gè)或5個(gè)等,本發(fā)明實(shí)施例在此不對計(jì)算節(jié)點(diǎn)的數(shù)量進(jìn)行具體限定。在構(gòu)建的鍵值對的數(shù)量一定的情況下,計(jì)算節(jié)點(diǎn)數(shù)量越多,則后續(xù)查詢的速度也越快。當(dāng)然,選用處理速度較快的計(jì)算節(jié)點(diǎn),也可以增加后續(xù)查詢的速度。
[0107]具體地,將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中的方式包括但不限于:
[0108]方式一:如果構(gòu)建的多個(gè)鍵值對中存在鍵和及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對,則在多個(gè)計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
[0109]在步驟301中根據(jù)多個(gè)RDF描述的本體的三元組構(gòu)建鍵值對后,由于多個(gè)RDF描述的本體的三元組中可能具有三個(gè)元素都相同的三元組,則構(gòu)建的鍵值對中可能存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對。為了節(jié)省計(jì)算節(jié)點(diǎn)的存儲空間,可以在多個(gè)計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對,舍棄相同的至少兩個(gè)鍵值對中其余的鍵值對。
[0110]例如,在根據(jù)步驟301構(gòu)建鍵值對后,如果構(gòu)建的多個(gè)鍵值對中具有2個(gè)鍵值對pairl={A, (A, org: type, 01) }, pair2={A, (A, org: type, 01) }, pairl 的鍵 A 和鍵值(A,org: type, 01)和pair2的鍵A和鍵值(A, org: type, 01)都相同,因此,將pairl存儲到計(jì)算節(jié)點(diǎn)中。
[0111]方式二:將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
[0112]在該方式中,由于在RDF描述的本體中,一個(gè)三元組的主體/客體/謂語可以是另一個(gè)三元組的主體/客體/謂語,因此,無論是根據(jù)一個(gè)RDF描述的本體構(gòu)建的鍵值對,還是根據(jù)多個(gè)RDF描述的本體構(gòu)建的鍵值對,構(gòu)建的鍵值對中都可能存在鍵相同的鍵值對。
[0113]為了提高后續(xù)的查詢速度,本實(shí)施例提供的方法在存儲構(gòu)建的鍵值對時(shí),將鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。具體地,根據(jù)每個(gè)計(jì)算節(jié)點(diǎn)所能存儲的鍵值對的數(shù)量和構(gòu)建的鍵值對中鍵相同的鍵值對的數(shù)量,將鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。當(dāng)每個(gè)計(jì)算節(jié)點(diǎn)所能存儲鍵值對的剩余數(shù)量都小于未存儲的鍵相同的鍵值對的數(shù)量,則每個(gè)計(jì)算節(jié)點(diǎn)中任選一個(gè),根據(jù)選擇的計(jì)算節(jié)點(diǎn)所能存儲的鍵值對的數(shù)量將未存儲的鍵相同的鍵值對存儲在該選擇的計(jì)算節(jié)點(diǎn)中,并將剩余的鍵相同的鍵值對存儲在另一個(gè)計(jì)算節(jié)點(diǎn)中,直至將剩余的鍵相同的鍵值對都存儲在計(jì)算節(jié)點(diǎn)中為止。當(dāng)然,如果一個(gè)鍵值對的鍵與其余的鍵值對都不相同,則可以將該鍵值對存儲到任一個(gè)計(jì)算節(jié)點(diǎn)中。
[0114]通過將鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中,使得每個(gè)計(jì)算節(jié)點(diǎn)中存儲的鍵值對中不相同的鍵的數(shù)量較少,從而在后續(xù)根據(jù)鍵的匹配查找鍵值對時(shí),每個(gè)計(jì)算節(jié)點(diǎn)中需要進(jìn)行較少次數(shù)的匹配即可查找到對應(yīng)的鍵,從而獲取該鍵所對應(yīng)的鍵值對。
[0115]需要說明的是,在將構(gòu)建的多個(gè)鍵值對分別存儲在計(jì)算節(jié)點(diǎn)中時(shí),可以采用上述方式一或方式二進(jìn)行存儲,更優(yōu)選地,還可以同時(shí)采用上述方式一和方式二進(jìn)行存儲。
[0116]舉例來說,在步驟301中構(gòu)建鍵值對后,需要將如圖4 (b)所示的構(gòu)建的多個(gè)鍵值對分別存儲在6個(gè)計(jì)算節(jié)點(diǎn)中,6個(gè)計(jì)算節(jié)點(diǎn)為計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6,對應(yīng)的所能存儲鍵值對的數(shù)量分別為3、4、4、4、3、3。具有相同的鍵A的鍵值對的數(shù)量為3,則從計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中選取能存儲3個(gè)鍵值對的計(jì)算節(jié)點(diǎn)I,將具有相同的鍵A的3個(gè)鍵值對存儲在計(jì)算節(jié)點(diǎn)I中,并重新計(jì)算計(jì)算節(jié)點(diǎn)I所能存儲鍵值對的剩余數(shù)量為O。具有相同的鍵org: type的鍵值對的數(shù)量為5,由于計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6都不能存儲5個(gè)鍵值對,則優(yōu)先將其他鍵相同的鍵值對存儲到同一個(gè)計(jì)算節(jié)點(diǎn)中。之后,計(jì)算節(jié)點(diǎn)2所能存儲鍵值對的剩余數(shù)量為4,計(jì)算節(jié)點(diǎn)3所能存儲鍵值對的剩余數(shù)量為1,其余計(jì)算節(jié)點(diǎn)所能存儲鍵值對的剩余數(shù)量為0,則將具有相同的鍵org:type的5個(gè)鍵值對中的4個(gè)存儲在計(jì)算節(jié)點(diǎn)2中,并將具有相同的鍵org: type的鍵值對中剩余的I個(gè)鍵值對存儲在計(jì)算節(jié)點(diǎn)3中。將如圖4 (b)的構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中后,每個(gè)計(jì)算節(jié)點(diǎn)中存儲的鍵值對如圖4(C)所示。
[0117]除了上述兩種方式之外,還可以采用其他方式進(jìn)行存儲,例如,將構(gòu)建的鍵值對隨機(jī)地存儲在每個(gè)計(jì)算節(jié)點(diǎn)中。對于具體采用哪種方式將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,本發(fā)明實(shí)施例在此不進(jìn)行具體限定。
[0118]需要說明的是,在根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對,并將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中后,如果有新的RDF描述的本體的三元組需要添加到多個(gè)計(jì)算節(jié)點(diǎn)中,則可以繼續(xù)執(zhí)行上述步驟301至步驟302,將根據(jù)新的RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
[0119] 在上述步驟301至步驟302的基礎(chǔ)上,本發(fā)明實(shí)施例可以在存儲有鍵值對的多個(gè)計(jì)算節(jié)點(diǎn)中進(jìn)行三元組的查詢操作,詳見以下步驟303至步驟306。
[0120]303:獲取用戶輸入的至少一個(gè)待查詢?nèi)M,待查詢?nèi)M中的已知元素為查詢條件,待查詢?nèi)M中的至少一個(gè)未知元素為查詢對象。
[0121]針對該步驟,在基于RDF描述的本體的查詢時(shí),用戶通常會輸入待查詢?nèi)M用于查詢。待查詢?nèi)M中包含至少一個(gè)已知元素,用于標(biāo)識用戶期望查詢結(jié)果所能夠滿足的條件。此外,待查詢?nèi)M中還包含至少一個(gè)未知元素,該未知元素可以為三元組中的主體、謂語、客體中的至少一個(gè),可以將其中的至少一個(gè)未知元素作為查詢對象。
[0122]當(dāng)待查詢?nèi)M中有兩個(gè)已知元素和一個(gè)未知元素時(shí),查詢條件可以為待查詢?nèi)M中的兩個(gè)已知元素,查詢對象為待查詢?nèi)M中一個(gè)未知元素;當(dāng)待查詢?nèi)M中有一個(gè)已知元素和兩個(gè)未知元素時(shí),查詢條件可以為待查詢?nèi)M中的一個(gè)已知元素,查詢對象可以為待查詢?nèi)M中的兩個(gè)未知元素,也可以為待查詢?nèi)M的兩個(gè)未知元素中的任意一個(gè)未知元素。例如,如果待查詢?nèi)M為(?s, org: type, ?o),則查詢條件為待查詢?nèi)M中的一個(gè)已知元素:謂語org:type ;查詢對象可以為待查詢?nèi)M中的兩個(gè)未知元素:主體s和客體O,也可以為待查詢?nèi)M中的一個(gè)未知元素主體S,或客體O。當(dāng)查詢對象為主體s和客體ο兩個(gè)未知元素時(shí),表示用戶期望查詢滿足謂語為org: type的查詢條件的主體s和客體ο ;當(dāng)查詢對象為一個(gè)已知元素主體s時(shí),表示用戶期望查詢滿足謂語為org: type 的主體 s。
[0123]具體地,獲取用戶輸入的至少一個(gè)待查詢?nèi)M時(shí),需要用戶輸入機(jī)器能夠識別的語言。由于本發(fā)明實(shí)施例是基于RDF描述的本體進(jìn)行查詢,因此,需要根據(jù)用戶采用的RDF描述的本體的查詢語言輸入的查詢語句獲取待查詢?nèi)M。其中,RDF描述的本體的查詢語言有多種,SPARQL (Simple Protocol and RDFQuery Language,簡單協(xié)議和 RDF 查詢語言)是其中一種常用的查詢語言,并且SPARQL還是一種標(biāo)準(zhǔn)化的查詢語言,其他查詢語言,例如SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)等,都可以根據(jù)SPARQL類推得到。因此,本發(fā)明實(shí)施例僅以SPARQL查詢語言為例進(jìn)行說明。當(dāng)采用SPARQL查詢語言時(shí),首先需要獲取用戶輸入的SPARQL查詢語句,格式可以為select?s where (?s, p, ?o);根據(jù)用戶輸入的句子可以獲取待查詢?nèi)M。其中,where (?s,ρ,O)表示查詢條件為待查詢?nèi)M中的已知元素謂語P和客體O,select?s表示查詢對象為待查詢?nèi)M中的未知元素主體S。當(dāng)然,用戶也可以不需要輸入完整的SPARQL查詢語句,而是輸入查詢關(guān)鍵字例如P和O,采用查詢理解技術(shù)理解用戶輸入的查詢關(guān)鍵字的語義為期望查詢謂語為p,客體為ο的主體;之后再根據(jù)理解的語義構(gòu)建SPARQL查詢語句,從而確定待查詢?nèi)M,或者再根據(jù)理解的語義直接確定待查詢?nèi)M。其中,采用查詢理解技術(shù)可以理解出查詢關(guān)鍵詞之間的語義關(guān)系。例如,用戶輸入查詢關(guān)鍵詞author,ISMIS,采用查詢理解技術(shù)可以確定用戶期望查找文章ISMIS的作者,則構(gòu)建SPARQL查詢語句select?。where (ISMIS, author, ?o),從而根據(jù)構(gòu)建的SPARQL查詢語句獲取待查詢?nèi)M(ISMIS,author, ?o)。其中應(yīng)用的查詢理解技術(shù)與現(xiàn)有的查詢理解的技術(shù)相同,具體可以參見在WISE (Web Informat1n SystemEngineering,網(wǎng)頁信息系統(tǒng)工程)國際會議上公布的文獻(xiàn)《Effective and EfficientKeyword Query Interpretat1n Using a Hybrid Graph》,在此不再贊述。
[0124]當(dāng)用戶期望查詢滿足更多條件的結(jié)果時(shí),可以按照SPARQL查詢語言的語法輸入更復(fù)雜的SPARQL查詢語句,根據(jù)輸入的SPARQL查詢語句可以獲取多個(gè)待查詢?nèi)M,并且多個(gè)待查詢?nèi)M之間還具有一定的關(guān)系。多個(gè)待查詢?nèi)M之間的關(guān)系可以為“與”的關(guān)系、“或”的關(guān)系,或者其他關(guān)系。關(guān)系“與”是指查詢滿足多個(gè)待查詢?nèi)M中的每個(gè)待查詢?nèi)M的結(jié)果,關(guān)系“或”是指查詢滿足多個(gè)待查詢?nèi)M的其中一個(gè)待查詢?nèi)M的結(jié)果??梢詾椴煌亩鄠€(gè)待查詢?nèi)M之間的關(guān)系設(shè)定不同的關(guān)系標(biāo)識,關(guān)系標(biāo)識可以為一定的文字標(biāo)識、數(shù)字標(biāo)識等,根據(jù)關(guān)系標(biāo)識可以確定多個(gè)待查詢?nèi)M之間的關(guān)系。
[0125]例如,當(dāng)用戶輸入的SPARQL查詢語句為:select?swhere {(?s, pi, ?ol),and (?s, p2, o2)}時(shí),根據(jù)用戶輸入的SPARQL查詢語句,可以獲取兩個(gè)待查詢?nèi)M。待查詢?nèi)MI為(?s, pl, ?ol),其中查詢條件為待查詢?nèi)M中的已知元素謂語pl,查詢對象為待查詢?nèi)M中的未知元素主體S。待查詢?nèi)M2為(?s,p2,o2),其中查詢條件為待查詢?nèi)M中的已知元素謂語P2和客體02,查詢對象為待查詢?nèi)M中的未知元素主體S。此外,根據(jù)關(guān)系標(biāo)識“and”確定待查詢?nèi)MI和待查詢?nèi)M2之間為與的關(guān)系,即查詢結(jié)果需要既滿足待查詢?nèi)MI又滿足待查詢?nèi)M2。又例如,當(dāng)用戶輸入的 SPARQL 查詢語句為:select?s where {(?s, pl, ?o), or (?s, p2, o2)}時(shí),根據(jù)用戶輸入的SPARQL查詢語句,也可以獲取待查詢?nèi)MI和待查詢?nèi)M2。此外,根據(jù)關(guān)系標(biāo)識“or”確定待查詢?nèi)MI和待查詢?nèi)M2之間為或的關(guān)系,即查詢結(jié)果需要滿足待查詢?nèi)MI或滿足待查詢?nèi)M2。
[0126]舉例來說,仍以計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中存儲有如圖4 (C)所示的鍵值對為例,根據(jù)用戶輸入的 SPARQL 查詢語句 select?s where {(?s, org: type, 01),and(?s, org: title,?o)}獲取用戶輸入的兩個(gè)待查詢?nèi)M。其中,待查詢?nèi)MI為(?s,org: type,01),其中查詢條件為待查詢?nèi)M中的已知元素謂語org:type和客體01,查詢對象為待查詢?nèi)M中的未知元素主體S。待查詢?nèi)M2為(?s, org:title, ?o),其中查詢條件為待查詢?nèi)M中的已知元素謂語org: title,查詢對象為待查詢?nèi)M中的未知元素主體S。根據(jù)關(guān)系標(biāo)識“and”確定待查詢?nèi)MI和待查詢?nèi)M2之間為與的關(guān)系,即查找結(jié)果需要既滿足待查詢?nèi)MI又滿足待查詢?nèi)M2。
[0127]304:在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對。
[0128]針對該步驟,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對時(shí),可以依次在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中進(jìn)行查找。優(yōu)選地,為了節(jié)省查找的時(shí)間,也可以在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中進(jìn)行并行查找,本發(fā)明實(shí)施例在此不對在每個(gè)計(jì)算節(jié)點(diǎn)中進(jìn)行查找的方式進(jìn)行具體限定。
[0129]由于每個(gè)計(jì)算機(jī)中存儲的鍵值對是由鍵及其對應(yīng)的鍵值構(gòu)成的,一個(gè)三元組中的每個(gè)元素可以分別作為鍵,且該三元組的三個(gè)元素作為鍵值,因此通過在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與已知元素相匹配的鍵,即可查找到包含該已知元素的三元組的鍵值對。此外,由于在將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中時(shí),將鍵相同的鍵值對存儲到同一個(gè)計(jì)算節(jié)點(diǎn)中,從而使得在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中,不同的鍵的數(shù)量較少。在每個(gè)計(jì)算節(jié)點(diǎn)中,可以將該計(jì)算節(jié)點(diǎn)所存儲的鍵值對中不同的鍵標(biāo)識出來,以在標(biāo)識的不同的鍵中查找與查詢條件的已知元素相匹配的鍵,而不需要在每個(gè)計(jì)算節(jié)點(diǎn)存儲的每個(gè)鍵值對所對應(yīng)的每個(gè)鍵中查找與查詢條件相匹配的鍵,從而提高了查詢速度。
[0130]具體地,根據(jù)查詢條件中已知元素的個(gè)數(shù)不同,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對的方式也不同,具體包括但不限于以下三種方式:
[0131]方式一:當(dāng)待查詢?nèi)M中的已知元素為一個(gè)時(shí),查詢條件為待查詢?nèi)M中的一個(gè)已知元素,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的一個(gè)已知元素相匹配的鍵,并將相匹配的鍵所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0132]當(dāng)查詢條件中包含一個(gè)已知元素時(shí),在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與該已知元素相匹配的鍵。由于沒有其它已知元素,查找到的相匹配鍵所對應(yīng)的鍵值對即為與該查詢條件相匹配的鍵值對。
[0133]舉例來說,待查詢?nèi)M2的查詢條件為一個(gè)已知元素謂語org:title,在計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中按照同樣的方式進(jìn)行查找后,在計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)5中沒有查找到與已知元素謂語org:title相匹配的鍵值對,在計(jì)算節(jié)點(diǎn)6中查找到與已知元素謂語org:title相匹配的鍵“org:title”,并將相匹配的鍵“org: title”所對應(yīng)的鍵值對{org: title, (A, org: title, 05)}和{org: title, (C, org: title, 04)}作為與待查詢?nèi)M2的查詢條件相匹配的鍵值對。
[0134]方式二:當(dāng)待查詢?nèi)M中的已知元素為兩個(gè)時(shí),查詢條件為待查詢?nèi)M中的兩個(gè)已知元素,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素相匹配的鍵;在相匹配的鍵所對應(yīng)的鍵值中查找與查詢條件的另一個(gè)已知元素相匹配的鍵值,并將相匹配的鍵值所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0135]其中,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素相匹配的鍵時(shí),可以在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找三元組中的兩個(gè)已知元素中的任意一個(gè)已知元素相匹配的鍵。在相匹配的鍵所對應(yīng)的鍵值中查找與查詢條件包含的另一個(gè)已知元素相匹配的鍵值時(shí),具體可以根據(jù)另一個(gè)已知元素在三元組中的位置,在相匹配的鍵所對應(yīng)的鍵值中根據(jù)對應(yīng)其余已知元素在三元組中的位置查找與其余已知元素相匹配的鍵值,并將相匹配的鍵值所對應(yīng)的鍵值對作為與該查詢條件相匹配的鍵值對。
[0136]舉例來說,待查詢?nèi)MI中有2個(gè)已知元素,查詢條件為2個(gè)已知元素謂語org:type和客體01。在計(jì)算節(jié)點(diǎn)I存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素謂語org:type相匹配的鍵,沒有查找到與已知元素謂語org:type相匹配的鍵。在計(jì)算節(jié)點(diǎn)2存儲的鍵值對的鍵中查找與查詢條件的已知元素謂語ο r g: t y ρ e相匹配的鍵,并且查找到與已知元素謂語org:type相匹配的鍵“0rg:type”。在相匹配的鍵 “org: type” 所對應(yīng)的鍵值(A, org: type, 01), (A, org: type, 02), (B, org: type, 01)和(C, org: type, 01)中查找與查詢條件的另一個(gè)已知元素客體01相匹配的鍵值。其中,鍵值(A, org: type, 01), (B, org: type, 01)和(C, org: type, 01)中的客體位置上的元素與已知元素客體01相匹配,則將相匹配的鍵值所對應(yīng)的鍵值對{org: type, (A, org: type, 01)},{org: type, (B, org: type, 01)}和{org: type, (C, org: type, 01)}作為與待查詢?nèi)M I 的查詢條件相匹配的鍵值對。同樣地,在計(jì)算節(jié)點(diǎn)3至計(jì)算節(jié)點(diǎn)6也查找與待查詢?nèi)MI的查詢條件相匹配的鍵值對,沒有查找到與待查詢?nèi)MI的查詢條件相匹配的鍵值對。
[0137]方式三:當(dāng)待查詢?nèi)M中的已知元素為兩個(gè)時(shí),查詢條件為待查詢?nèi)M中的兩個(gè)已知元素,在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與所述其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
[0138]在該方式中,將分別與查詢條件的每個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對都作為該查詢條件相匹配的鍵值對。此時(shí),得到的相匹配的鍵值對并不都滿足與查詢條件的兩個(gè)已知元素都相匹配,可以在后續(xù)步驟中再根據(jù)相匹配的鍵值對確定滿足與查詢條件的兩個(gè)已知元素都相匹配的元素。
[0139]舉例來說,待查詢?nèi)MI中有2個(gè)已知元素,查詢條件為2個(gè)已知元素謂語org: type和客體01。在計(jì)算節(jié)點(diǎn)I存儲的鍵值對的鍵中查找與查詢條件的已知元素謂語org:type相匹配的鍵,沒有查找到相匹配的鍵;在計(jì)算節(jié)點(diǎn)I存儲的鍵值對的鍵中查找與查詢條件的已知元素客體01相匹配的鍵,也沒有查找到相匹配的鍵。同樣地,在計(jì)算節(jié)點(diǎn)2存儲的鍵值對的鍵中查找到與謂語org: type相匹配的鍵,而沒有查找到與客體01相匹配的鍵,則將與謂語org: type相匹配的鍵對應(yīng)的鍵值對{org: type, (A, org: type, 01)},{org: type, (B, org: type, 01)}和{org: type, (C, org: type, 01)}作為待查詢?nèi)M I 的查詢條件相匹配的鍵值對;在計(jì)算節(jié)點(diǎn)3存儲的鍵值對的鍵中查找到與謂語org: type相匹配的鍵“org: type”,并且查找到與客體01相匹配的鍵“01”,則將與謂語org: type相匹配的鍵“org:type”所對應(yīng)的鍵值對{org:type, (B, org:type, 03)}和與客體01相匹配的鍵“01” 的鍵值對{01,(A, org: type, 01)}, {01,(B, org: type, 01)}和{01,(C, org: type, 01)}都作為待查詢?nèi)MI的查詢條件相匹配的鍵值對;在計(jì)算節(jié)點(diǎn)4至計(jì)算節(jié)點(diǎn)6中沒有查找到與謂語org: type相匹配的鍵,也沒有查找到與客體01相匹配的鍵。
[0140]除了上述方式一、方式二和方式三之外,還可以采用其他方式在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,對于具體采用哪種方式在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,本發(fā)明實(shí)施例在此不進(jìn)行具體限定。
[0141]305:在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,得到在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素。
[0142]針對該步驟,由于查詢對象為待查詢?nèi)M中的未知元素,而相匹配的鍵值對的鍵值包含三元組中的三個(gè)元素,因此,可以從查找到的相匹配的鍵值對的鍵值中確定查詢對象對應(yīng)的元素。對于每個(gè)計(jì)算節(jié)點(diǎn),都可以在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,從而得在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素。具體地,從相匹配的鍵值對的鍵值所包含的三個(gè)元素中獲取與查詢對象的未知元素在三元組中的位置相對應(yīng)的元素作為查詢對象對應(yīng)的元素。
[0143]此外,根據(jù)步驟304中在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對的方式不同,查找到的相匹配的鍵值對也不同,從而在查找到的相匹配的鍵值對中確定查詢對象對應(yīng)的元素的也不同。
[0144]舉例來說,對于待查詢?nèi)M1,在采用步驟304中的方式二在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對后,在計(jì)算節(jié)點(diǎn)2中查找到相匹配的鍵值對的鍵值所包含的三個(gè)元素(A, org: type, 01), (B, org: type, 01)和(C,org: type, 01)中確定查詢對象主體s對應(yīng)的元素[A,B, C],得到在計(jì)算節(jié)點(diǎn)2中確定的元素[A,B, C]。
[0145]對于待查詢?nèi)M1,在采用步驟304中的方式三在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對后,從在計(jì)算節(jié)點(diǎn)2查找到與已知元素謂語org: type相匹配的鍵值對的鍵值(A, org: type, 01), (B, org: type, 01)和(C, org: type, 01)中確定查詢對象主體s對應(yīng)的元素[A, B, C]。從在計(jì)算節(jié)點(diǎn)3中查找到與已知元素謂語org: type相匹配的鍵值對的鍵值(B,org: type, 03)中確定查詢對象主體s對應(yīng)的元素[B]。從在計(jì)算節(jié)點(diǎn)3中查找到的與已知元素客體01相匹配的鍵值對的鍵值(A, org: type, 01),(B, org: type, 01)和(C, org: type, 01)中確定主體 s 對應(yīng)的元素[A, B, C]。
[0146]對于待查詢?nèi)M2,在采用步驟304中的方式一在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對后,在計(jì)算節(jié)點(diǎn)6中查找到與待查詢?nèi)M2的查詢條件相匹配的鍵值對的鍵值所包含的三個(gè)元素(A, org: title, 05)和(C,org: title, 04)中確定查詢對象主體s對應(yīng)的元素[A,C],得到在計(jì)算節(jié)點(diǎn)6中確定的元素[A,C]。
[0147]306:根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0148]針對該步驟,根據(jù)步驟304中在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對的方式不同,根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果的方式也不同。當(dāng)待查詢?nèi)M為一個(gè)時(shí),具體包括以下兩種方式:
[0149]方式一:如果步驟304中采用方式一或方式二在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,在該步驟中,將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果。
[0150]在該方式中,當(dāng)根據(jù)查詢條件在任一個(gè)計(jì)算節(jié)點(diǎn)中查找到相匹配的鍵值對時(shí),能夠在該計(jì)算節(jié)點(diǎn)中確定得到查詢對象對應(yīng)的元素;當(dāng)根據(jù)查詢條件在任一個(gè)計(jì)算節(jié)點(diǎn)中沒有查找到相匹配的鍵值對時(shí),在該計(jì)算節(jié)點(diǎn)中確定的查詢對象對應(yīng)的元素為零。因此,在確定查詢結(jié)果時(shí),將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素進(jìn)行合并,即可得到查詢結(jié)果O
[0151]舉例來說,如果步驟302獲取到的待查詢?nèi)M僅為待查詢?nèi)M1,在步驟304中采用方式二在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找到與查詢條件相匹配的鍵值對,并在步驟305中得到每個(gè)計(jì)算節(jié)點(diǎn)確定的元素后,在計(jì)算節(jié)點(diǎn)2確定的查詢對象對應(yīng)的元素為[A,B, C],在計(jì)算節(jié)點(diǎn)1、計(jì)算節(jié)點(diǎn)3至計(jì)算節(jié)點(diǎn)6中都沒有確定的元素,則將計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中確定的元素進(jìn)行合并后,得到查詢結(jié)果為[A,B, C]。
[0152]方式二:如果步驟304中采用方式三在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,在該步驟中,將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素按照查詢條件的已知元素進(jìn)行劃分,得到根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素;將根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果O
[0153]針對該種方式,由于在步驟304中采用方式三在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對時(shí),將與其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對,因而在步驟305中確定的查詢對象對應(yīng)的元素也是只滿足查詢條件中的其中一個(gè)已知元素或另一個(gè)已知元素。而查詢結(jié)果需要同時(shí)滿足查詢條件中的兩個(gè)已知元素,因此,需要先獲取查詢條件的每個(gè)已知元素在每個(gè)計(jì)算節(jié)點(diǎn)對應(yīng)的元素,將根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素取交集,得到的交集中的元素為同時(shí)滿足查詢條件中的兩個(gè)已知元素的查詢對象對應(yīng)的元素。
[0154]舉例來說,如果步驟302獲取到的待查詢?nèi)M僅為待查詢?nèi)M1,在步驟304中采用方式三在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找到與查詢條件相匹配的鍵值對,并在步驟305中得到每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素后,將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素按照查詢條件的已知元素進(jìn)行劃分,得到根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素;得到查詢條件的已知元素謂語org:type在計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中對應(yīng)的查詢對象對應(yīng)的元素為[A,B,C,B],并得到查詢條件的已知元素客體01在計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中對應(yīng)的元素為[A,B, C];將根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果為[A,B, C]。
[0155]需要說明的是,當(dāng)步驟303中獲取到的待查詢?nèi)M為多個(gè)時(shí),根據(jù)在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0156]具體地,如果每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系,則將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果;如果每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系,則將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。
[0157]如果每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系,則表示查詢結(jié)果應(yīng)該滿足多個(gè)待查詢?nèi)M中的每個(gè)待查詢?nèi)M。而每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素中相同的元素能夠滿足多個(gè)待查詢?nèi)M中的每個(gè)待查詢?nèi)M,因此,需要將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。如果每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系,則表示查詢結(jié)果可以滿足多個(gè)待查詢?nèi)M中的一個(gè)即可。而每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素都可以滿足多個(gè)待查詢?nèi)M中的一個(gè),因此,可以將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。當(dāng)然,在待查詢?nèi)M為三個(gè)或以上時(shí),多個(gè)待查詢?nèi)M中可以既包含與的關(guān)系,又包含或的關(guān)系,則根據(jù)每兩個(gè)待查詢?nèi)M之間的關(guān)系,將每兩個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果O
[0158]舉例來說,在步驟302中獲取到的待查詢?nèi)MI和待查詢?nèi)M2之間為與的關(guān)系,待查詢?nèi)MI在計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6確定的查詢對象對應(yīng)的元素為[A,B,C];待查詢?nèi)M2在計(jì)算節(jié)點(diǎn)I至計(jì)算節(jié)點(diǎn)6中確定的查詢對象對應(yīng)的元素為[A,C],將[A,B,C]和[A,C]取交集,得到查詢結(jié)果[A,C]。
[0159]需要說明的是,在上述步驟301至步驟302中將RDF描述的本體的三元組構(gòu)建成多個(gè)鍵值對,并將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中后,可以根據(jù)查詢的需要多次執(zhí)行步驟303至步驟306,從而獲取滿足用戶期望的查詢結(jié)果。
[0160]具體實(shí)施時(shí),當(dāng)用戶期望從數(shù)據(jù)庫或網(wǎng)站中查詢滿足一定查詢條件的數(shù)據(jù)時(shí),可以根據(jù)用戶輸入的查詢關(guān)鍵詞獲取待查詢?nèi)M,或者根據(jù)用戶直接輸入的待查詢?nèi)M,通過本發(fā)明實(shí)施例提供的方法獲取查詢結(jié)果。例如,如果用戶期望查詢張三的聯(lián)系地址,則輸入待查詢?nèi)M(張三,聯(lián)系地址,?0),查詢條件為待查詢?nèi)M中的已知元素主體“張三”和謂語“聯(lián)系地址”,查詢對象為待查詢?nèi)M中未知元素客體O,通過本發(fā)明實(shí)施例提供的方法可以獲取到查詢對象相對應(yīng)的元素,獲取到的查詢對象對應(yīng)的元素即為滿足用戶的查詢條件的元素。將獲取到的查詢對象對應(yīng)的元素作為查詢結(jié)果后,可以將查詢結(jié)果通過顯示等方式返回給用戶,使用戶得到更為精確的查詢結(jié)果。
[0161]綜上所述,本發(fā)明實(shí)施例提供的方法,通過預(yù)先將RDF描述的本體構(gòu)建成多個(gè)鍵值對并存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,當(dāng)用戶查詢時(shí),在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,之后根據(jù)確定的元素獲取查詢結(jié)果,不僅提供了一種新的RDF描述的本體的存儲方式;并且由于存儲的鍵值對之間是相互獨(dú)立的,可以直接根據(jù)查詢條件與存儲的鍵值對中查找相匹配的鍵值對并得到查詢結(jié)果,避免了較為復(fù)雜的推理運(yùn)算,查詢過程較為簡便,且RDF描述的本體增大對查詢速度的影響較小。此外,由于鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,還可以在多個(gè)計(jì)算節(jié)點(diǎn)中進(jìn)行并行查找,較大地提高了查詢速度。
[0162]實(shí)施例三
[0163]本發(fā)明實(shí)施例提供了一種基于本體的查詢裝置,該裝置用于執(zhí)行上述實(shí)施例一或?qū)嵤├峁┑幕诒倔w的查詢方法。其中,多個(gè)計(jì)算節(jié)點(diǎn)中分別存儲有根據(jù)RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,鍵值包含三元組的三個(gè)元素,鍵包含三元組的三個(gè)元素中的一個(gè)元素。參見圖5,該裝置包括:
[0164]第一獲取模塊501,用于獲取用戶輸入的至少一個(gè)待查詢?nèi)M,待查詢?nèi)M中的已知元素為查詢條件,待查詢?nèi)M中的至少一個(gè)未知元素為查詢對象;
[0165]查找模塊502,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與第一獲取模塊501獲取到的查詢條件相匹配的鍵值對;
[0166]第一確定模塊503,用于在查找模塊502查找到的相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,得到在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素;
[0167]第二獲取模塊504,用于根據(jù)在第一確定模塊503在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0168]具體地,待查詢?nèi)M中的已知元素為一個(gè),查詢條件為待查詢?nèi)M中的一個(gè)已知元素,查找模塊502,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的一個(gè)已知元素相匹配的鍵,并將相匹配的鍵所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0169]具體地,待查詢?nèi)M中的已知元素為兩個(gè),查詢條件為待查詢?nèi)M中的兩個(gè)已知元素,參見圖6,查找模塊502,包括:
[0170]第一查找單元5021,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素相匹配的鍵;
[0171]第二查找單元5022,用于在第一查找單元5021查找到的相匹配的鍵所對應(yīng)的鍵值中查找與查詢條件的另一個(gè)已知元素相匹配的鍵值,并將相匹配的鍵值所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0172]具體地,第二獲取模塊504,用于將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果。
[0173]具體地,待查詢?nèi)M中的已知元素為兩個(gè),查詢條件為待查詢?nèi)M中的兩個(gè)已知元素,查找模塊502,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與查詢條件相匹配的鍵值對。
[0174]具體地,參見圖7,第二獲取模塊504,包括:
[0175]劃分單元5041,用于將在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素按照查詢條件的已知元素進(jìn)行劃分,得到根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素;
[0176]第一獲取單元5042,用于將劃分單元5041劃分得到的根據(jù)查詢條件的每個(gè)已知元素獲取到的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。
[0177]具體地,待查詢?nèi)M為多個(gè),第二獲取模塊504,用于根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素獲取查詢結(jié)果。
[0178]具體地,參見圖8,第二獲取模塊504,包括:
[0179]第二獲取單元5043,用于在每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系時(shí),將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果;
[0180]第三獲取單元5044,用于在每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系時(shí),則將每個(gè)待查詢?nèi)M在每個(gè)計(jì)算節(jié)點(diǎn)確定的查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。
[0181]進(jìn)一步地,參見圖9,該裝置還包括:
[0182]構(gòu)建模塊505,用于根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對;
[0183]存儲模塊506,用于將構(gòu)建模塊505構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
[0184]具體地,存儲模塊506,用于在構(gòu)建的多個(gè)鍵值對中存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對時(shí),則在計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
[0185]具體地,存儲模塊506,用于將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
[0186]綜上所述,本發(fā)明實(shí)施例的裝置,通過預(yù)先將RDF描述的本體構(gòu)建成多個(gè)鍵值對并存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,當(dāng)用戶查詢時(shí),在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定查詢對象對應(yīng)的元素,之后根據(jù)確定的元素獲取查詢結(jié)果,不僅提供了一種新的RDF描述的本體的存儲方式;并且由于存儲的鍵值對之間是相互獨(dú)立的,可以直接根據(jù)查詢條件與存儲的鍵值對中查找相匹配的鍵值對并得到查詢結(jié)果,避免了較為復(fù)雜的推理運(yùn)算,查詢過程較為簡便,且RDF描述的本體增大對查詢速度的影響較小。此外,由于鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,還可以在多個(gè)計(jì)算節(jié)點(diǎn)中進(jìn)行并行查找,較大地提高了查詢速度。
[0187]需要說明的是:上述實(shí)施例提供的基于本體的查詢裝置在進(jìn)行基于本體的查詢時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將基于本體的查詢裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的基于本體的查詢裝置與基于本體的查詢方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0188]上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0189]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0190]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于本體的查詢方法,其特征在于,多個(gè)計(jì)算節(jié)點(diǎn)中分別存儲有根據(jù)資源描述框架RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,所述鍵值包含所述三元組的三個(gè)元素,所述鍵包含所述三元組的三個(gè)元素中的一個(gè)元素,所述方法包括: 獲取用戶輸入的至少一個(gè)待查詢?nèi)M,所述待查詢?nèi)M中的已知元素為查詢條件,所述待查詢?nèi)?組中的至少一個(gè)未知元素為查詢對象; 在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,并在相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定所述查詢對象對應(yīng)的元素,得到在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素; 根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待查詢?nèi)M中的已知元素為一個(gè),所述查詢條件為所述待查詢?nèi)M中的一個(gè)已知元素,所述在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,包括: 在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的一個(gè)已知元素相匹配的鍵,并將所述相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,包括: 在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵; 在相匹配的鍵所對應(yīng)的鍵值中查找與所述查詢條件的另一個(gè)已知元素相匹配的鍵值,并將所述相匹配的鍵值所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括: 將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述查詢條件相匹配的鍵值對,包括: 在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與所述其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括: 將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素按照所述查詢條件的已知元素進(jìn)行劃分,得到根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素; 將根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。
7.根據(jù)權(quán)利要求1至6任一權(quán)利要求所述的方法,其特征在于,所述待查詢?nèi)M為多個(gè),所述根據(jù)在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括:根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果,包括: 如果所述每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系,則將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果; 如果所述每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系,則將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對,并將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,包括: 如果構(gòu)建的多個(gè)鍵值對中存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對,則在計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述將構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中,包括: 將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
12.一種基于本體的查詢裝置,其特征在于,多個(gè)計(jì)算節(jié)點(diǎn)中分別存儲有根據(jù)資源描述框架RDF描述的本體的三元組構(gòu)建的多個(gè)鍵值對,每個(gè)鍵值對包含一個(gè)鍵和一個(gè)鍵值,所述鍵值包含所述三元組的三個(gè)元素,所述鍵包含所述三元組的三個(gè)元素中的一個(gè)元素,所述裝置包括: 第一獲取模塊,用于獲取用戶輸入的至少一個(gè)待查詢?nèi)M,所述待查詢?nèi)M中的已知元素為查詢條件,所述待查詢?nèi)M中的至少一個(gè)未知元素為查詢對象; 查找模塊,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對中查找與所述第一獲取模塊獲取到的查詢條件相匹配的鍵值對; 第一確定模塊,用于在所述查找模塊查找到的相匹配的鍵值對的鍵值所包含的三個(gè)元素中確定所述查詢對象對應(yīng)的元素,得到在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素; 第二獲取模塊,用于根據(jù)在所述第一確定模塊在每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述待查詢?nèi)M中的已知元素為一個(gè),所述查詢條件為所述待查詢?nèi)M中的一個(gè)已知元素,所述查找模塊,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的一個(gè)已知元素相匹配的鍵,并將所述相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述查找模塊,包括: 第一查找單元,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵; 第二查找單元,用于在所述第一查找單元查找到的相匹配的鍵所對應(yīng)的鍵值中查找與所述查詢條件的另一個(gè)已知元素相匹配的鍵值,并將所述相匹配的鍵值所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
15.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于,所述第二獲取模塊,用于將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素進(jìn)行合并,得到查詢結(jié)果。
16.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述待查詢?nèi)M中的已知元素為兩個(gè),所述查詢條件為所述待查詢?nèi)M中的兩個(gè)已知元素,所述查找模塊,用于在每個(gè)計(jì)算節(jié)點(diǎn)存儲的鍵值對的鍵中查找與所述查詢條件的其中一個(gè)已知元素相匹配的鍵,并查找與查詢條件的另一個(gè)已知元素相匹配的鍵,將與所述其中一個(gè)已知元素和另一個(gè)已知元素相匹配的鍵所對應(yīng)的鍵值對作為與所述查詢條件相匹配的鍵值對。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述第二獲取模塊,包括: 劃分單元,用于將在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素按照所述查詢條件的已知元素進(jìn)行劃分,得到根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素; 第一獲取單元,用于將所述劃分單元劃分得到的根據(jù)所述查詢條件的每個(gè)已知元素獲取到的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果。
18.根據(jù)權(quán)利要求12至17任一權(quán)利要求所述的裝置,其特征在于,所述待查詢?nèi)M為多個(gè),所述第二獲取 模塊,用于根據(jù)每個(gè)待查詢?nèi)M之間的關(guān)系及每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素獲取查詢結(jié)果。
19.根據(jù)權(quán)利要求18所述的裝置,其特征在于,所述第二獲取模塊,包括: 第二獲取單元,用于在所述每個(gè)待查詢?nèi)M之間的關(guān)系為與的關(guān)系時(shí),將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取交集,得到查詢結(jié)果; 第三獲取單元,用于在所述每個(gè)待查詢?nèi)M之間的關(guān)系為或的關(guān)系時(shí),則將每個(gè)待查詢?nèi)M在所述每個(gè)計(jì)算節(jié)點(diǎn)確定的所述查詢對象對應(yīng)的元素取并集,得到查詢結(jié)果。
20.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述裝置還包括: 構(gòu)建模塊,用于根據(jù)RDF描述的本體的三元組構(gòu)建多個(gè)鍵值對; 存儲模塊,用于將所述構(gòu)建模塊構(gòu)建的多個(gè)鍵值對存儲在多個(gè)計(jì)算節(jié)點(diǎn)中。
21.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述存儲模塊,用于在構(gòu)建的多個(gè)鍵值對中存在鍵及其對應(yīng)的鍵值都相同的至少兩個(gè)鍵值對時(shí),則在計(jì)算節(jié)點(diǎn)中存儲相同的至少兩個(gè)鍵值對中的一個(gè)鍵值對。
22.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述存儲模塊,用于將構(gòu)建的多個(gè)鍵值對中鍵相同的鍵值對存儲在同一個(gè)計(jì)算節(jié)點(diǎn)中。
【文檔編號】G06F17/30GK104077297SQ201310102702
【公開日】2014年10月1日 申請日期:2013年3月27日 優(yōu)先權(quán)日:2013年3月27日
【發(fā)明者】劉博 , 李建強(qiáng), 劉春辰 申請人:日電(中國)有限公司