趙羽晗,胡 磊
(南京航空航天大學 計算機科學與技術(shù)學院,江蘇 南京 211100)
如今關(guān)聯(lián)數(shù)據(jù)的個性化偏好查詢研究工作已經(jīng)從各個角度展開[1-5],而且RDF也成為越來越多領(lǐng)域中產(chǎn)品的存儲框架[6]。所以,開發(fā)一套相對完善的查詢系統(tǒng)對這些數(shù)據(jù)進行快速準確的查詢便成為首先要完成的任務(wù)[7]。
在實際操作中,普通用戶對底層數(shù)據(jù)的存儲方式與模型框架并不了解,中間的查詢處理過程也是對用戶透明的[8],而很多情況下他們又會想要在查詢中表達自己的偏好,這就使最終結(jié)果集有了模糊性[9-11]??紤]到現(xiàn)有的對RDF數(shù)據(jù)進行查詢的語言特性,文中以經(jīng)典RDF查詢語言SPARQL為基礎(chǔ),面向用戶的個性化偏好處理,將SPARQL柔性擴展,設(shè)計并開發(fā)了一套關(guān)聯(lián)數(shù)據(jù)個性化偏好查詢系統(tǒng)。
模糊術(shù)語即在表達意圖時帶有不確定信息的詞語[12]。使用梯形隸屬函數(shù)[13]來構(gòu)造有序語言值的子域,即屬于該子域的某個元素有隸屬區(qū)間的上限值和下限值,在該隸屬區(qū)間內(nèi)有一個子區(qū)間隸屬度為1。函數(shù)圖形如圖1所示。
圖1 梯形隸屬函數(shù)圖
在SPARQL查詢語言中,允許模糊項存在的FILTER約束的基本形式是FILTER(?XθFT) [WITHα]。其中FT表示模糊項,例如“胖”或“最近”,與一個模糊數(shù)值所對應(yīng);θ是運算符之一,包括>,<,=,>=,<=,!=,between和not between。需要注意的是,如果操作符θ是between或not between,則FILTER約束的語法有一點不同,例如FILTER(?X between FT1 and FT2) [WITHα]??蛇x參數(shù)[WITHα]表示必須滿足[0,1]中最小隸屬度閾值的條件。用戶選擇適當?shù)摩林祦肀磉_條件所符合的程度。如果未指定,則默認使用1。
經(jīng)過擴展SPARQL后的模糊查詢語言主要是對原有語法中的“Query”和“Constraint”元素進行了擴充,以及增加了“Preference”關(guān)鍵字。
(1)Query元素:每一個以“SELECT”指定的查詢中,都使用元素QueryType對其進行擴展,它用來表示此查詢是不是模糊查詢??梢愿鶕?jù)是否使用k分為兩種情況:一種是用#FQ#來表示此查詢的形式為模糊查詢,最終返回所有符合模糊查詢條件的結(jié)果;另一種使用#top-k FQ# withk來表示此查詢?yōu)槟:樵?,最終返回前k個最符合用戶指定偏好的結(jié)果。
(2)Constraint元素:通過附加的“Flexible Expression”元素進行擴展,此元素定義了模糊術(shù)語和模糊關(guān)系的約束,是一個模糊表達式的形式。經(jīng)過擴展之后,它主要包括了“FuzzyTermExpression”、“FuzzyOperatorExpression”和“FuzzyRelationExpressio-n”,分別用來表示模糊詞、模糊運算符和模糊關(guān)系的表達式。
(3)Preference元素:由于添加的“Preference”關(guān)鍵字是為了區(qū)別用戶定義偏好的權(quán)重以便按最優(yōu)順序返回結(jié)果,所以它與“Order”關(guān)鍵字同被歸于SolutionModifier元素中。它的語句構(gòu)成中,AtomicPreference表示簡單偏好,可以附帶有序語言值。
前文中介紹了允許模糊詞存在的FILTER約束的基本形式是FILTER(?XθFT) [WITHα]。很明顯,需要先確定語言值的子域,即隸屬度區(qū)間,并根據(jù)上限值a和下限值b得到隸屬函數(shù)對應(yīng)的區(qū)間[a,b],則該模糊詞的約束語句即表達為a≤F(u)≤b,F(xiàn)(u)是隸屬函數(shù)。此時經(jīng)過計算就可以得到隸屬函數(shù)中變量u的取值范圍[x,y]。于是可以得到如表1所示的重寫規(guī)則。
表1 簡單模糊詞重寫規(guī)則
復合模糊詞由簡單的模糊詞或通過and、or、not等連接的修改的模糊詞組成。當兩個模糊詞FT1和FT2以and連接時,可以先通過對每個模糊詞計算隸屬度區(qū)間,得到變量總?cè)≈捣秶鸀閇a,b]∪[c,d],之后進行如表2所示的重寫規(guī)則。
表2 復合模糊詞重寫規(guī)則
當兩個模糊詞以or連接時,分別計算其隸屬度區(qū)間和,若交集不為空,則求其交集作為最終隸屬度區(qū)間并按表2所示規(guī)則重寫。
當模糊詞進行了not操作,可以先對運算符進行取反,例如<變?yōu)椤荩缓笤侔凑毡?所示規(guī)則重寫。
本次查詢系統(tǒng)所依托的數(shù)據(jù)框架為當前應(yīng)用比較廣泛的Lehigh University Benchmark (LUBM)數(shù)據(jù)集[14]。此數(shù)據(jù)框架包含了20多個與高校相關(guān)聯(lián)的本體資源,例如FullProffesor、GruaduateStudent、Publication、Course等;還有一些用來表達對象之間關(guān)系的屬性,例如teacherof、worksfor、takecourse等。UBA是一個可以生成大量LUBM數(shù)據(jù)集的數(shù)據(jù)生成器[15]。本次查詢系統(tǒng)的開發(fā)通過LUBM數(shù)據(jù)集生成器UBA1.7生成了包含2 400 k個三元組的數(shù)據(jù)集,以本體文件的形式存儲,共約200 MB。
系統(tǒng)最主要的功能模塊有以下五項:用戶接口模塊、偏好分析模塊、查詢重寫模塊、查詢執(zhí)行模塊以及結(jié)果排序模塊。
系統(tǒng)的整體框架如圖2所示。
圖2 系統(tǒng)整體框架
該框架完整表現(xiàn)了系統(tǒng)查詢的整體運行過程。其中,查詢重寫模塊需要根據(jù)不同條件屬性的隸屬函數(shù)以及有序語言值的子域來執(zhí)行轉(zhuǎn)換規(guī)則,經(jīng)典SPARQL查詢直接對存有RDF數(shù)據(jù)的本體文件執(zhí)行查詢,在結(jié)果排序模塊也需要用到偏好分析模塊中給出的用戶偏好的權(quán)重以及條件的隸屬度,最終結(jié)果顯示在用戶交互界面上。
2.2.1 用戶接口模塊
用戶接口模塊的功能主要是以圖形化交互界面為載體來體現(xiàn)的。在系統(tǒng)的界面中,用戶選擇自己的查詢條件并設(shè)定偏好,然后將查詢請求提交給系統(tǒng)后臺進行分析處理,最終的查詢結(jié)果也通過此模塊顯示在系統(tǒng)界面上。本次系統(tǒng)設(shè)計允許用戶查詢的目標為教師與學生。對于教師的查詢,可選項為職位、工作狀態(tài)、著作成就以及查詢條件的優(yōu)先級;對于學生的查詢,可選項為學歷、學習狀態(tài)、發(fā)表的論文數(shù)以及查詢條件的優(yōu)先級。查詢條件不能為空,當用戶未選擇查詢條件時系統(tǒng)會彈框提示。
2.2.2 偏好分析模塊
偏好分析模塊的功能主要是將系統(tǒng)接收到的查詢選項組合成模糊SPARQL查詢語句,并提交給查詢重寫模塊。
在上一小節(jié)中介紹了本次系統(tǒng)查詢主要以數(shù)據(jù)集中的教師和學生作為目標。針對教師查詢,有一個精確查詢條件“職位”,以及兩個模糊查詢條件“工作狀態(tài)”和“著作成就”。按照LUBM數(shù)據(jù)集的標準,在“職位”條件中提供了四個選項:教授、副教授、助理教授和講師。在模糊查詢條件中,有“條件描述”項以及針對該條件的符合程度可以選擇,“工作狀態(tài)”的條件描述項分別為“忙碌”和“清閑”,與該教師所教課程及所帶學生數(shù)量有關(guān);“著作成就”的條件描述項分別為“高”、“低”、“不高不低”、“接近十篇”、“多于十篇”、“不超過十篇”共六項,與該教師署名發(fā)表的論文數(shù)量有關(guān)。兩個模糊條件的符合程度都分為“極其”、“非?!?、“比較”、“有點”、“一般”五種,并且可以選擇這兩項模糊條件的優(yōu)先級。
針對學生的查詢中,也有一個精確的查詢條件“學歷”和兩個模糊的查詢條件“學習狀態(tài)”和“論文發(fā)表”?!皩W歷”選項中包括了“研究生”和“本科生”兩項;“學習狀態(tài)”中包括了“忙碌”和“清閑”兩項,與該學生所選課程數(shù)量相關(guān);“論文發(fā)表”包括了“高”、“低”、“不高不低”、“接近三篇”、“多于三篇”、“不超過三篇”共六項,與該學生署名發(fā)表的論文數(shù)量有關(guān)。和對“教師”的查詢相同的是,這兩個模糊條件的符合程度都分為“極其”、“非?!薄ⅰ氨容^”、“有點”、“一般”五種,并且可以選擇這兩項模糊條件的優(yōu)先級。
根據(jù)用戶所選的上述條件中的具體選項,可以形成模糊SPARQL語句。每一項條件屬性所對應(yīng)的隸屬函數(shù)以及符合程度所對應(yīng)的有序語言值將在查詢重寫模塊中講述。
2.2.3 查詢重寫模塊
在查詢重寫模塊中,主要是將經(jīng)過分析后的模糊SPARQL語句轉(zhuǎn)換為可用現(xiàn)有工具執(zhí)行的經(jīng)典SPARQL查詢語句。
上一小節(jié)中介紹了針對教師和學生的查詢分別有兩個模糊查詢條件,而每個模糊條件又有具體的描述項以及符合程度項可以選擇。針對教師查詢的“工作狀態(tài)”條件,定義“忙碌”與“清閑”的隸屬函數(shù)分別如下:
其中,x表示該教師所教授的課程數(shù)量,y表示該教師所指導的學生數(shù)量。
對教師查詢的“著作成就”條件,定義“高”、“低”和“不高不低”的隸屬函數(shù)分別如下:
其中,n表示該教師所署名發(fā)表的論文數(shù)量。
2.2.4 查詢執(zhí)行模塊
查詢執(zhí)行模塊的主要功能是將重寫后的經(jīng)典SPARQL語句借助Jena ARQ引擎對目標RDF數(shù)據(jù)集進行查詢。本次系統(tǒng)所查詢的LUBM標準的RDF數(shù)據(jù)集由uba數(shù)據(jù)生成器隨機生成,存儲在本體文件中。查詢產(chǎn)生的無序中間結(jié)果集將被送往結(jié)果排序模塊產(chǎn)生最終符合用戶偏好的k個結(jié)果。
2.2.5 結(jié)果排序模塊
結(jié)果排序模塊的主要功能是將查詢執(zhí)行模塊產(chǎn)生的無序中間結(jié)果集進行Top-k排序,選出最符合用戶偏好的k個結(jié)果。本次系統(tǒng)中,將k的值設(shè)為30,按照傳統(tǒng)Top-k算法,分兩步計算出每個結(jié)果的最終綜合評分,并將所得30個結(jié)果返回給用戶查詢界面。
本次所開發(fā)的關(guān)聯(lián)數(shù)據(jù)個性化偏好查詢系統(tǒng)的執(zhí)行流程為:用戶在交互界面中編輯查詢條件及條件偏好,系統(tǒng)接收到用戶提供的查詢條件之后經(jīng)過偏好分析得到模糊SPARQL語句,再根據(jù)查詢重寫的規(guī)則將模糊SPARQL語句轉(zhuǎn)換為可執(zhí)行的經(jīng)典SPARQL語句,并在查詢執(zhí)行模塊對目標RDF數(shù)據(jù)集進行查詢,得到一個無序的中間結(jié)果集,然后結(jié)合偏好分析得出的隸屬度以及偏好權(quán)重,對中間結(jié)果集進行Top-k查詢操作,最終在用戶界面呈現(xiàn)最滿足偏好的k個結(jié)果。查詢示例如圖3所示。
圖3 系統(tǒng)查詢示例
隨著語義Web的不斷發(fā)展,互聯(lián)網(wǎng)中的資源將越來越廣泛地以關(guān)聯(lián)數(shù)據(jù)RDF框架來表達和存儲,所以針對RDF關(guān)聯(lián)數(shù)據(jù)的檢索是首先需要解決的問題[16]。文中將模糊查詢條件中的信息大致分為模糊術(shù)語和模糊關(guān)系,根據(jù)其自然語言表達形式以及擴展的用戶偏好權(quán)重表達,將經(jīng)典SPARQL語言擴展為模糊SPARQL語言。文中還設(shè)計了一套轉(zhuǎn)換規(guī)則,將模糊SPARQL語言重寫為可被現(xiàn)有工具直接編譯的經(jīng)典SPARQL查詢語言。通過對一系列子句的查詢重寫,得到了最終的查詢語句并利用Jena ARQ引擎對目標RDF數(shù)據(jù)集進行查詢。最后,對實現(xiàn)的關(guān)聯(lián)數(shù)據(jù)個性化偏好查詢系統(tǒng)并進行了可用性驗證。結(jié)果表明,該系統(tǒng)是可用的,且能較好地在查詢中體現(xiàn)用戶個性化偏好。