一種基于連接代價的sparql語義數(shù)據(jù)查詢優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機查詢優(yōu)化技術(shù)領(lǐng)域,具體涉及一種基于連接代價的SPARQL語 義查詢優(yōu)化方法。
【背景技術(shù)】
[0002] 目前關(guān)聯(lián)數(shù)據(jù)(Linked Data)的規(guī)模逐年遞增,基于關(guān)聯(lián)數(shù)據(jù)的語義查詢的效率 一直有待提高。關(guān)聯(lián)數(shù)據(jù)一般采用RDF (資源描述框架)來表達,目前對RDF文檔查詢優(yōu) 化研宄主要分為2個方面:一種是對RDF文檔建立有效的索引機制,以及Oracle、My Sql等 關(guān)系數(shù)據(jù)庫對RDF文檔的序列化索引機制;另一種是對RDF標準查詢語言SPARQL的優(yōu)化。 前者主要依賴于RDF的索引結(jié)構(gòu)、磁盤索引存儲方式或數(shù)據(jù)庫的特性來達到較高的I/O吞 吐性能;后者從分析SPARQL語法語義的角度,研宄其查詢機制,找到最優(yōu)的邏輯查詢計劃。 SPARQL類似于SQL查詢語言的select-from結(jié)構(gòu),它的執(zhí)行需要相應(yīng)的查詢處理器進行編 譯。在編譯過程中會進行關(guān)系代數(shù)等價轉(zhuǎn)換,關(guān)系代數(shù)的等價形式有多種,各操作子的執(zhí)行 順序,連接操作的代價,以及操作子的具體實現(xiàn)方式都有差異,所以存在對SPARQL的各種 邏輯優(yōu)化策略。
[0003] 目前對SPARQL優(yōu)化的方法中,一些是從SPARQL語句中屬性相關(guān)性的角度來調(diào)整 SPARQL語句中連接操作的選擇度估值,以及使用自適應(yīng)存儲系統(tǒng)FlexTable來改善查詢效 率;還有的方法采用SPARQL語義約簡規(guī)則以及選擇估值策略融合的方案來設(shè)計SPARQL的 優(yōu)化算法;以及利用元組模式的選擇度估值尋找元組模式最優(yōu)連接順序的方法,這種方法 已應(yīng)用于Jena的SPARQL查詢優(yōu)化器ARQ中;將SPARQL查詢模式進行分組也是一種優(yōu)化策 略,還可以采用貝葉斯網(wǎng)和鏈直方圖的方法進行選擇度的估計來優(yōu)化SPARQL查詢。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明在于解決海量RDF語義數(shù)據(jù)查詢效率低下的問題,設(shè)計了一種基于連接代 價的SPARQL語義查詢優(yōu)化方法。
[0005] 為實現(xiàn)上述目標,本發(fā)明采用如下技術(shù)方案:
[0006] -種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,包括如下步驟:
[0007] 步驟1 :構(gòu)建RDF語義數(shù)據(jù)索引,使用B樹結(jié)構(gòu)對RDF語義數(shù)據(jù)進行索引存儲,選 擇spo、pos、osp三種索引方式;其中,S為主語、P為謂語、0為賓語;
[0008] 步驟2 :獲取用戶客戶端提交的SPARQL查詢語句,解析出SPARQL查詢語句中的圖 模式,并表示為SPARQL連接圖形式;
[0009] 步驟3 :利用RDF模式信息簡化SPARQL查詢語句,得到簡化的SPARQL連接圖;
[0010] 步驟4 :估計SPARQL查詢語句子查詢結(jié)果的基數(shù)大小cart (t);使用公式cart (t) =3XN/4進行估計,其中N表示子查詢經(jīng)過哈希運算后結(jié)果集個數(shù)的取值范圍;t表示 SPARQL查詢語句中的一個子查詢,對應(yīng)精簡后的SPARQL連接圖中的一個節(jié)點;子查詢是指 SPARQL連接圖模式中的一條三元組查詢;
[0011] 步驟5 :對連接操作的結(jié)果集大小進行估計;
[0012] 步驟6 :根據(jù)步驟5得到的連接操作的結(jié)果集大小的估計值,使用動態(tài)規(guī)劃方法在 整個連接圖空間中查找最優(yōu)的執(zhí)行順序。
[0013] 步驟7 :根據(jù)最佳執(zhí)行順序,產(chǎn)生新的SPARQL查詢并提交服務(wù)器端執(zhí)行語義查 詢;
[0014] 步驟8:結(jié)束。
[0015] 進一步的,所述的步驟3中利用RDF模式信息簡化SPARQL查詢語句;的具體精簡 規(guī)則為:
[0016] ①對含有公共變量的SPARQL連接圖模式{ ? X rdf :type CL ? X rdf :type C2.......}簡化為{? x rdf: type CL......},其中,Cl 和 C2 是 RDF 中的概念,c i e c 2 ; ? x表示待查詢的變量;
[0017] ②對于{? x rdf: type CL ? x p 〇·......}的SPARQL連接圖模式,其中p為非 rdf: type類型的屬性,簡化為{? X p 〇.……},〇為賓語;使用該規(guī)則時,根據(jù)模式信息考 察謂語P的定義域或值域是否為單個概念,如果是,直接按該規(guī)則簡化,如果不是,SPARQL 連接圖模式將不進行簡化處理;
[0018] ③對于含有公共變量形{ ? X pi ? 〇. ? y p2 ? 〇.......}的圖模式,其中p 1是 P 2的子屬性,簡化為{ ? X pi ? 〇·......}。
[0019] 進一步的,所述的步驟5中使用如下方法估計連接操作結(jié)果集的基數(shù):
[0020]
【主權(quán)項】
1. 一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征在于,包括如下步驟: 步驟1 :構(gòu)建RDF語義數(shù)據(jù)索引,使用B樹結(jié)構(gòu)對RDF語義數(shù)據(jù)進行索引存儲,選擇spo、 pos、osp三種索引方式;其中,S為主語、P為謂語、0為賓語; 步驟2 :獲取用戶客戶端提交的SPARQL查詢語句,解析出SPARQL查詢語句中的圖模 式,并表示為SPARQL連接圖形式; 步驟3 :利用RDF模式信息簡化SPARQL查詢語句,得到簡化的SPARQL連接圖; 步驟4 :估計SPARQL查詢語句子查詢結(jié)果的基數(shù)大小cart (t);使用公式cart (t) =3XN/4進行估計,其中N表示子查詢經(jīng)過哈希運算后結(jié)果集個數(shù)的取值范圍;t表示 SPARQL查詢語句中的一個子查詢,對應(yīng)精簡后的SPARQL連接圖中的一個節(jié)點;子查詢是指 SPARQL連接圖模式中的一條三元組查詢; 步驟5 :對連接操作的結(jié)果集大小進行估計; 步驟6 :根據(jù)步驟5得到的連接操作的結(jié)果集大小的估計值,使用動態(tài)規(guī)劃方法在整個 連接圖空間中查找最優(yōu)的執(zhí)行順序。 步驟7 :根據(jù)最佳執(zhí)行順序,產(chǎn)生新的SPARQL查詢并提交服務(wù)器端執(zhí)行語義查詢; 步驟8 :結(jié)束。
2. 根據(jù)權(quán)利要求1所述的一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征 在于,所述的步驟3中利用RDF模式信息簡化SPARQL查詢語句;的具體精簡規(guī)則為: ① 對含有公共變量的SPARQL連接圖模式{? X rdf: type CL ? X rdf: type C2.......} 簡化為{? x rdf: type CL……},其中,Cl和C2是RDF中的概念,c ! = c 2 ; ? x表示待 查詢的變量; ② 對于{ ? X rdf :type CL ? X P 〇·......}的SPARQL連接圖模式,其中p為非 rdf: type類型的屬性,簡化為{? X p 〇.……},〇為賓語;使用該規(guī)則時,根據(jù)模式信息考 察謂語P的定義域或值域是否為單個概念,如果是,直接按該規(guī)則簡化,如果不是,SPARQL 連接圖模式將不進行簡化處理; ③ 對于含有公共變量形{ ? X Pl ? 〇. ? y P2 ? 〇.......}的圖模式,其中P 1是P 2 的子屬性,簡化為{ ? X pl ? 〇.......}。
3. 根據(jù)權(quán)利要求1所述的一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征 在于,所述的步驟5中使用如下方法估計連接操作結(jié)果集的基數(shù): T(R?S)=sX |R| X |S| 其中,R和S分別表示SPARQL查詢語句子查詢結(jié)果的基數(shù)大小,T(RXS)表示r、$連接 操作的結(jié)果集基數(shù)大小的估計,S表示選中率,|R|表示R的基數(shù),Isl表示S的基數(shù),其估 計通過cart (t)計算;假設(shè)R中的變量集合為VK,S中的變量集合為Vs;s的確定分如下幾 種情況: ① 當左右連接操作數(shù)沒有公共變量時,SPARQL連接圖中子圖之間沒有直接的邊連接, 這種情況泛化為笛卡爾積,這時s = 1,那么 T(R^S)= |R|X|S| ② 當左右連接操作數(shù)有公共變量時,假設(shè)公共變量的集合為Vks= V Kn V S,W(R,VKS)表 示R上的Vks變量集上的不同值的個數(shù),W(S,V KS)表示S上的Vks變量集上的不同值數(shù),并 假設(shè)不同值在操作數(shù)上都是均勻分布的;當W(R,VKS) < W(S,VKS),假設(shè)R在變量Vks的值都 * S上,那么R中每個元組在S中有^^個元組匹配,貝丨J iT(RtxlS)= W(S,Vss)叫, S = W(S1Vss) ?同理當 W (S,Vks)彡 W (R,Vks)時,t(rms)= W (R, VRS) X Is I , S = W (R, Vss), 兩種情況可簡化為: T(R>:IS)= _I " I X I >s.i_ 。 max{W(R, Vsi ),W(S, Vss )}
4. 根據(jù)權(quán)利要求3所述的一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征 在于,所述的W (R,VKS),W (S,Vks)的估計利用子查詢結(jié)果基數(shù)的估計值和屬性統(tǒng)計信息來計 算。
5. 根據(jù)權(quán)利要求1所述的一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征 在于,所述的步驟6中,該步驟中求解的每一個階段需要求解的項目包括:連接操作結(jié)果集 大小的估計T、連接操作最小代價的估計C、該階段最佳執(zhí)行順序Q。
6. 根據(jù)權(quán)利要求5所述的一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征 在于,所述的連接操作最小代價的估計C使用中間結(jié)果集基數(shù)和進行估計。
7. 根據(jù)權(quán)利要求6所述的一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,其特征 在于,所述的動態(tài)規(guī)劃方法為: 首先,初始化SPARQL連接圖,包括節(jié)點大小及邊的權(quán)值; 第一階段:計算每一條邊的連接操作結(jié)果集大小的估計T1,每一條邊的連接操作最小 代價的估計Cl,第一階段最佳執(zhí)行順序Ql ; 第二階段:計算每兩條連接邊的連接操作結(jié)果集大小的估計T2、每兩條邊的連接操作 最小代價的估計C2、第二階段最佳執(zhí)行順序Q2 ; 第三階段:計算每三條連接邊的連接操作結(jié)果集大小的估計T3、每三條邊的連接操作 最小代價的估計C3、第三階段最佳執(zhí)行順序Q3,直至所有連接邊都計算完成,輸出該階段 的Q。
【專利摘要】本發(fā)明提供了一種基于連接代價的SPARQL語義數(shù)據(jù)查詢優(yōu)化方法,本方法使用RDF的模式信息來精簡SPARQL基本圖模式,然后使用B樹結(jié)構(gòu)快速估計SPARQL連接圖的節(jié)點大小及邊權(quán)值,使用連接代價估計并結(jié)合動態(tài)規(guī)劃方法找到最優(yōu)邏輯查詢計劃,從而提高RDF語義數(shù)據(jù)的查詢效率。<b/>
【IPC分類】G06F17-30
【公開號】CN104834754
【申請?zhí)枴緾N201510288922
【發(fā)明人】徐雷, 方卿, 袁小群
【申請人】武漢大學(xué)
【公開日】2015年8月12日
【申請日】2015年5月29日