本發(fā)明提供一種動(dòng)態(tài)rdf(resourcedescriptionframework,資源描述框架)數(shù)據(jù)轉(zhuǎn)存及屬性選擇方法,涉及語(yǔ)義網(wǎng)數(shù)據(jù)存儲(chǔ)
技術(shù)領(lǐng)域:
。本發(fā)明所提供的技術(shù)可以用于rdf數(shù)據(jù)管理,能夠適應(yīng)不同應(yīng)用的需求,達(dá)到靈活定制轉(zhuǎn)存策略、提高查詢效率的效果。
背景技術(shù):
:已有技術(shù)為rdf(數(shù)據(jù)資源描述框架數(shù)據(jù))存儲(chǔ)提供了基礎(chǔ)和參考,但由于語(yǔ)義網(wǎng)的應(yīng)用場(chǎng)景多樣化,不同應(yīng)用對(duì)rdf數(shù)據(jù)的訪問模式會(huì)有很大的差別,各種存儲(chǔ)方法在不同的訪問模式下的性能各有優(yōu)劣,所以要實(shí)現(xiàn)高效的存儲(chǔ)往往需要根據(jù)數(shù)據(jù)集和訪問模式設(shè)計(jì)不同的存儲(chǔ)策略。三元組表存儲(chǔ)和水平表存儲(chǔ)都采取了固定的存儲(chǔ)策略,很難根據(jù)不同情況進(jìn)行調(diào)整,屬性表存儲(chǔ)更為靈活,但其中的屬性選擇方法是技術(shù)難點(diǎn)。本發(fā)明提供了一種動(dòng)態(tài)屬性選擇方法,利用rdf數(shù)據(jù)查詢中的連接操作及相關(guān)信息和用戶定義的親和度,生成有利于rdf數(shù)據(jù)管理的表結(jié)構(gòu),可以很大程度上優(yōu)化rdf數(shù)據(jù)查詢系統(tǒng)的性能。中國(guó)專利cn201410244507.1申請(qǐng)文件描述了一種結(jié)合語(yǔ)義網(wǎng)與地理信息特征的信息集成方法,這個(gè)方法在步驟4中涉及了rdf數(shù)據(jù)的融合,但沒有涉及將rdf數(shù)據(jù)轉(zhuǎn)存為屬性表等內(nèi)容。中國(guó)專利cn201310641921.1申請(qǐng)文件提供了一種基于本體語(yǔ)義信息的本體查詢引擎優(yōu)化系統(tǒng),對(duì)查詢語(yǔ)句進(jìn)行優(yōu)化,利用本體推理機(jī)檢索知識(shí)庫(kù)得到更優(yōu)的查詢結(jié)果,沒有涉及rdf數(shù)據(jù)的存儲(chǔ)和管理技術(shù)。中國(guó)專利cn201310658588.5申請(qǐng)文件提供了一種分布式層次化的rdf數(shù)據(jù)存儲(chǔ)方法,該方法主要是為了適應(yīng)分布式數(shù)據(jù)處理需求將rdf數(shù)據(jù)冗余地存儲(chǔ)到關(guān)系數(shù)據(jù)表中,不是rdf數(shù)據(jù)的轉(zhuǎn)存方法,也不涉及屬性選擇技術(shù)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明目的和所要解決的技術(shù)問題是,克服rdf數(shù)據(jù)管理系統(tǒng)效率低下問題。提供一種基于用戶所提交的rdf數(shù)據(jù)查詢,動(dòng)態(tài)確定屬性表結(jié)構(gòu),轉(zhuǎn)存rdf數(shù)據(jù),以便快速在屬性表上得到查詢結(jié)果的方法。根據(jù)用戶所提交的查詢,動(dòng)態(tài)選擇屬性、確定表結(jié)構(gòu),并根據(jù)查詢中與連接操作相關(guān)的信息,進(jìn)一步優(yōu)化表結(jié)構(gòu),從而提高rdf數(shù)據(jù)管理效率,減少rdf數(shù)據(jù)表之間的連接操作,降低查詢代價(jià)。實(shí)現(xiàn)本發(fā)明所要解決的技術(shù)問題而采取的技術(shù)方案概括如下:一種動(dòng)態(tài)rdf數(shù)據(jù)轉(zhuǎn)存的屬性選擇方法,根據(jù)用戶所提交的查詢,動(dòng)態(tài)選擇屬性、確定表結(jié)構(gòu),并根據(jù)查詢中與連接操作相關(guān)的信息,進(jìn)一步優(yōu)化表結(jié)構(gòu),從而提高rdf數(shù)據(jù)管理效率,減少rdf數(shù)據(jù)表之間的連接操作,降低查詢代價(jià)。根據(jù)用戶所提交的查詢,動(dòng)態(tài)選擇屬性、確定表結(jié)構(gòu),并根據(jù)查詢中與連接操作相關(guān)的信息,進(jìn)一步優(yōu)化表結(jié)構(gòu),從而提高rdf數(shù)據(jù)管理效率,減少rdf數(shù)據(jù)表之間的連接操作,降低查詢代價(jià)。所述方法包括:1)輸入rdf數(shù)據(jù)查詢集合,生成相應(yīng)的屬性連接情況矩陣;(2)基于根據(jù)訪問頻率和屬性連接情況矩陣生成屬性關(guān)聯(lián)度矩陣;(3)對(duì)屬性關(guān)聯(lián)度矩陣進(jìn)行聚簇;(4)根據(jù)用戶指定的親和度閾值,并基于該閾值對(duì)聚簇后的屬性關(guān)聯(lián)度矩陣進(jìn)行屬性選擇,將親和度高于閾值的屬性放到同一個(gè)屬性表,生成最終的屬性表。步驟1),生成與查詢集合相關(guān)的屬性連接情況矩陣:每行代表一次查詢,每列代表一個(gè)屬性,這樣的行列組成矩陣,某單元格中填入1,表示該次查詢?cè)L問了該屬性。將所有查詢對(duì)應(yīng)訪問的屬性單元格中填入1,其余填入0,生成屬性連接情況矩陣。其中步驟2):屬性關(guān)聯(lián)度矩陣是正方形的對(duì)稱矩陣,每行對(duì)應(yīng)一個(gè)屬性,每列也對(duì)應(yīng)一個(gè)屬性。每個(gè)單元格中填入的值代表該單元格相關(guān)的兩個(gè)屬性在所有查詢中被共同訪問的總頻率。步驟3):對(duì)屬性關(guān)聯(lián)度矩陣進(jìn)行聚簇,調(diào)整正方形矩陣行和列的排列順序,其目標(biāo)函數(shù)使得矩陣中大值附近都是大值,小值附近都是小值。步驟4):使用聚簇后的屬性關(guān)聯(lián)度矩陣和用戶指定的親和度閾值,將親和度高于閾值的屬性放到同一個(gè)屬性表?;谏鲜龇椒?,所述屬性連接情況矩陣生成方法的特點(diǎn)是:對(duì)于實(shí)體s的屬性p取值為o的rdf三元組表tt(s,p,o),輸入所有實(shí)體上的連接操作集合j={j1,j2,...,jm},j所涉及的屬性總數(shù)為n,ji為某個(gè)實(shí)體上的連接操作集合,屬性連接情況矩陣定義為屬性pj(j:1~n)在ji(i:1~m)中出現(xiàn)的情況,即a=(aij)mn,aij的值為1或0,1表示第i行所對(duì)應(yīng)的連接操作集合訪問了第j列所對(duì)應(yīng)的屬性?;谏鲜龇椒?,所述屬性關(guān)聯(lián)度矩陣是正方形的對(duì)稱矩陣,每行對(duì)應(yīng)一個(gè)屬性,每列也對(duì)應(yīng)一個(gè)屬性。每個(gè)單元格中填入的值affij(=affji)記錄了該單元格相關(guān)的兩個(gè)屬性在所有查詢中被共同訪問的總頻率。基于上述方法,所述屬性關(guān)聯(lián)度矩陣聚簇方法為,調(diào)整正方形矩陣行和列的排列順序,使得矩陣中大值附近都是大值,小值附近都是小值?;谏鲜龇椒?,所述親和度aff是一個(gè)位于[0,1]區(qū)間的浮點(diǎn)數(shù),表示一組屬性同時(shí)參與一個(gè)實(shí)體上的連接的概率,親和度越高表示這組屬性相關(guān)性越強(qiáng),越有可能被同時(shí)訪問,其計(jì)算方法如下:a)輸入n(≥2)個(gè)屬性p1,p2,...,pn和查詢?nèi)罩?,設(shè)當(dāng)前查詢集合qcur為訪問屬性p1的所有查詢編號(hào),初始化公共查詢集合qcom為qcur,最大查詢數(shù)m為集合qcur的基數(shù)|qcur|,循環(huán)變量i=2;b)設(shè)qcur為訪問屬性pi的所有查詢編號(hào),更新qcom=qcom∩qcur,m為max(m,|qcur|);c)如果i≤n,則設(shè)i=i+1,重復(fù)b);否則繼續(xù)d);d)此時(shí)集合qcom中包含了所有同時(shí)訪問輸入n個(gè)屬性的查詢編號(hào),m為被訪問次數(shù)最多的屬性的訪問次數(shù),輸出親和度aff=|qcom|/m。當(dāng)沒有一個(gè)查詢同時(shí)訪問這n個(gè)屬性時(shí),|qcom|=0,親和度達(dá)到最小值0;當(dāng)所有訪問其中任何一個(gè)屬性的查詢都訪問了全部屬性時(shí),|qcom|=m,親和度達(dá)到最大值1。本發(fā)明的有益效果:根據(jù)用戶所提交的查詢,動(dòng)態(tài)選擇屬性、確定表結(jié)構(gòu),并根據(jù)查詢中與連接操作相關(guān)的信息,進(jìn)一步優(yōu)化表結(jié)構(gòu),從而提高rdf數(shù)據(jù)管理效率,減少rdf數(shù)據(jù)表之間的連接操作,降低查詢代價(jià)。本發(fā)明針對(duì)rdf數(shù)據(jù)查詢的連接操作偏多的問題,充分利用查詢中所蘊(yùn)含的表結(jié)構(gòu)信息,動(dòng)態(tài)選擇屬性,優(yōu)化表結(jié)構(gòu),達(dá)到為具體應(yīng)用量身定制數(shù)據(jù)存儲(chǔ)策略、減少連接操作的效果,對(duì)復(fù)雜數(shù)據(jù)的智能化高效處理具有實(shí)際價(jià)值。附圖說(shuō)明圖1rdf數(shù)據(jù)的屬性選擇方法流程圖。具體實(shí)施方式下面說(shuō)明本發(fā)明一個(gè)實(shí)施的方式:使用12個(gè)sparql查詢,查詢的內(nèi)容和查詢中指定要訪問的屬性如表1所示,其中一個(gè)括號(hào)內(nèi)的屬性是同一個(gè)對(duì)象的屬性。表1使用的12個(gè)sparql查詢表2-1表1使用的查詢?cè)L問的14個(gè)屬性及其編號(hào)表2-2表1使用的查詢?cè)L問的14個(gè)屬性及其編號(hào)(續(xù))表3-1根據(jù)表1中12個(gè)查詢生成的屬性連接情況矩陣(1表示第i行所對(duì)應(yīng)的連接操作集合訪問了第j列所對(duì)應(yīng)的屬性)編號(hào)\屬性p1p2p3p4p5p6p7q1111q21111111q31q411q511q6111q711q811q91q10q111q1211表3-2根據(jù)表1中12個(gè)查詢生成的屬性連接情況矩陣(續(xù))編號(hào)\屬性p8p9p10p11p12p13p14q1q2111q31q411q51q611q711q81q9q10q11q121在實(shí)施過程中,根據(jù)用戶以往的查詢,對(duì)各個(gè)查詢的使用頻率進(jìn)行統(tǒng)計(jì)后得到表4的訪問頻率。表4-1表1中12個(gè)查詢的訪問頻率q1q2q3q4q5q6訪問頻率100016001000700100021000表4-2表1中12個(gè)查詢的訪問頻率(續(xù))q7q8q9q10q11q12訪問頻率600900025004007001200屬性關(guān)聯(lián)度矩陣是正方形的對(duì)稱矩陣,其中的數(shù)字affij(=affji)記錄了屬性pi與pj的關(guān)聯(lián)度,計(jì)算方法如下:對(duì)于每一個(gè)連接k:如果使用到了屬性pi,則uki=1,否則uki=0;nk=每一次執(zhí)行連接k訪問關(guān)系表的次數(shù);freqk=連接k執(zhí)行的頻率;acck=nkfreqk,表示單位時(shí)間內(nèi)連接k訪問關(guān)系表的次數(shù)。最終關(guān)聯(lián)度affij的計(jì)算公式為:表5-1與查詢集合相關(guān)的屬性關(guān)聯(lián)度矩陣屬性p1p2p3p4p5p6p7p13960032002360034500160016001600p23200320026001600160016001600p32360026002360022600160016001600p43450016002260034500160016001600p51600160016001600160016001600p61600160016001600160016001600p71600160016001600160016002300p81600160016001600160016001600p9170000700000p103290002100021000000p11216006002100021000000p1260060000000p131600160016001600160016001600p141600160016001600160016001600表5-2與查詢集合相關(guān)的屬性關(guān)聯(lián)度矩陣(續(xù))對(duì)屬性關(guān)聯(lián)度矩陣進(jìn)行聚簇,調(diào)整正方形矩陣行和列的排列順序,其目標(biāo)函數(shù)使得矩陣中大值附近都是大值,小值附近都是小值,形式化描述為最大化表達(dá)式:其中affi,0=aff0,j=affi,n+1=affn+1,j=0n為矩陣的行數(shù)。算法的步驟如下:a)任選原始矩陣中的一列加入目標(biāo)矩陣,并設(shè)i=1;b)放置剩余的n-i列,每次放置時(shí)有i+1個(gè)可能的位置供選擇,選擇當(dāng)前對(duì)目標(biāo)函數(shù)貢獻(xiàn)最大的一個(gè)位置進(jìn)行放置;c)在所有的列都按照b的規(guī)則放置后,對(duì)所有的行按照列的放置位置重新排序。表6-1聚簇后得到的屬性關(guān)聯(lián)矩陣表6-2聚簇后得到的屬性關(guān)聯(lián)矩陣(續(xù))屬性p9p13p11p1p2p4p8p120060060060000p60160001600160016001600p70160001600160016001600p50160001600160016001600p30160021000236002600226001600p100021600329000210000p140160001600160016001600p9170000170007000p130160001600160016001600p11002160021600600210000p11700160021600396003200345001600p2016006003200320016001600p4700160021000345001600345001600p80160001600160016001600使用聚簇后的屬性關(guān)聯(lián)度矩陣和用戶指定的親和度閾值λ,通過以下步驟得到最終屬性表tpia)設(shè)列號(hào)t=1,列數(shù)s=2;b)從矩陣aa的第t列開始,選擇s列屬性:pt,pt+1,…,pt+s-1;c)計(jì)算所選s列屬性的親和度aff:如果aff≥λ,則令s=s+1,繼續(xù)d);否則跳至e);d)如果此時(shí)t+s-1>n,則輸出最后一個(gè)屬性表tpi并終止算法,tpi中的屬性pi={pt,pt+1,…,pt+s-2};否則重復(fù)b);e)如果此時(shí)s>2,則輸出一個(gè)屬性表tpi,其中的屬性pi={pt,pt+1,…,pt+s-2};否則不輸出;f)令t=t+s-1,如果此時(shí)t+s-1>n,則算法終止;否則重復(fù)b)。用戶指定的親和度設(shè)為0.1,使用屬性選擇算法生成最終的各個(gè)屬性表:tp1={p6,p7,p5,p3}即{partof,seealso,booktitle,issued}tp2={p10,p14,p9,p13}即{name,abstract,journal,pages}tp3={p11,p1,p2,p4}即{subclassof,type,title,creator}其中,親和度的計(jì)算方法如下:輸入n(≥2)個(gè)屬性p1,p2,...,pn和查詢?nèi)罩荆?jīng)過下列步驟得到輸入的n個(gè)屬性的親和度aff:a)設(shè)當(dāng)前查詢集合qcur為訪問屬性p1的所有查詢編號(hào),初始化公共查詢集合qcom為qcur,最大查詢數(shù)m為集合qcur的基數(shù)|qcur|,循環(huán)變量i=2;b)設(shè)qcur為訪問屬性pi的所有查詢編號(hào),更新qcom=qcom∩qcur,m為max(m,|qcur|);c)如果i≤n,則設(shè)i=i+1,重復(fù)b);否則繼續(xù)d);d)此時(shí)集合qcom中包含了所有同時(shí)訪問輸入n個(gè)屬性的查詢編號(hào),m為被訪問次數(shù)最多的屬性的訪問次數(shù),輸出親和度aff=|qcom|/m。當(dāng)沒有一個(gè)查詢同時(shí)訪問這n個(gè)屬性時(shí),|qcom|=0,親和度達(dá)到最小值0;當(dāng)所有訪問其中任何一個(gè)屬性的查詢都訪問了全部屬性時(shí),|qcom|=m,親和度達(dá)到最大值1。當(dāng)前第1頁(yè)12