馮微峰
〔摘 要〕本文提出了一個基于本體的智能檢索系統(tǒng)的設(shè)計框架并實現(xiàn)了主要的功能模塊,該檢索系統(tǒng)對中科院圖情方向的機構(gòu)信息進行提取和加工,利用本體語言對中科院圖情方向的組織機構(gòu),主要研究人員,重大研究項目等之間的邏輯進行描述,構(gòu)建一個以機構(gòu)為主要對象的具有邏輯推理 性的功能本體,并通過自定義規(guī)則,加載泛化規(guī)則引擎來實現(xiàn)系統(tǒng)的智能檢索功能。
〔關(guān)鍵詞〕智能檢索;機構(gòu)信息;推理規(guī)則;本體建模
〔中圖分類號〕G35 〔文獻標(biāo)識碼〕B 〔文章編號〕1008-0821(2009)03-0170-06
本體對領(lǐng)域和任務(wù)進行了良好的描述,具有較好的概念層次結(jié)構(gòu)和對邏輯推理的支持,從而在信息檢索,特別是在智能檢索中得到了很好的應(yīng)用。在基于本體的智能檢索系統(tǒng)中,通過對原始信息的加工提取和本體的語義推理機制,可以進一步提高檢索結(jié)果和檢索目標(biāo)的相關(guān)性,從而使得檢索結(jié)果更加符合人們的要求。
起初,國內(nèi)外本體研究機構(gòu)[1]主要著力于頂層本體和領(lǐng)域本體的研究和探索,而現(xiàn)在隨著功能本體廣泛的應(yīng)用,對于功能本體的研究也越來越多了。比如說,對一個跨國機構(gòu)進行本體建模,利用本體對該機構(gòu)的組織、資源、技術(shù)等進行邏輯描述。與資源直接相關(guān)是人,通過本體的邏輯性就可以知道,需要資源的人是屬于哪個部門的,他具有什么樣的研究技能。通過對機構(gòu)的本體描述就可以優(yōu)化機構(gòu)的運作流程,促進信息溝通和便于協(xié)同管理。
本文提出了基于功能本體的智能檢索系統(tǒng)的構(gòu)建模式和設(shè)計思想并且對系統(tǒng)的實現(xiàn)方案進行了解析和探索研究。
1 智能檢索系統(tǒng)框架設(shè)計方案
本文采用以Java環(huán)境下的Eclipse平臺加MySQL數(shù)據(jù)庫作為系統(tǒng)實現(xiàn)的基礎(chǔ),并使用Jena和JPowerGraph等Java開源包。系統(tǒng)的體系結(jié)構(gòu)如圖1所示。
智能檢索系統(tǒng)是一個三層體系架構(gòu):
1.1 表示層
這一層主要是通過JSP給用戶提供UI接口。用戶需求輸入的表達方式主要有如下幾種:一是以自然語言方式表示,最典型的例子是關(guān)鍵字的方式;二是以特定的查詢語言表示,如SQL、RQL、SPARQL[2]等;三是以可視化的方式表示,例如通過菜單選擇查詢條件的方式。本文設(shè)計的用戶需求輸入的目標(biāo)就是在準(zhǔn)確表達用戶需求的同時,盡可能使得用戶的輸入操作簡單易行,因此一方面從服務(wù)器端取得本體的Schema,生成清晰的樹形結(jié)構(gòu),用戶可以通過點擊樹形結(jié)構(gòu)上的節(jié)點獲得所需信息,另一方面用戶可以根據(jù)需要選擇檢索的類型,比如“根據(jù)地區(qū)檢索”、“根據(jù)研究機構(gòu)檢索”、“根據(jù)研究人員檢索”、“根據(jù)研究項目”等等。也可以通過限制查詢條件和查詢范圍和特定關(guān)鍵詞來實現(xiàn)復(fù)雜查詢。
結(jié)果語義輸出[3]是指把語義類、語義屬性和語義關(guān)系的實例進行可視化的輸出,對JPowerGraph開源包進行二次開發(fā),把相關(guān)的語義數(shù)據(jù)轉(zhuǎn)化為相關(guān)聯(lián)的節(jié)點和邊,動態(tài)的呈現(xiàn)給用戶。
1.2 數(shù)據(jù)層
數(shù)據(jù)層包含本體Schema、推理規(guī)則和OWL知識庫3部分。本文以網(wǎng)上公布的中科院圖情機構(gòu)相關(guān)信息作為原始材料進行語義提取,將最終結(jié)果轉(zhuǎn)化為OWL格式文件本體數(shù)據(jù),從本質(zhì)上來講,就是一組OWL文件和一系列推理規(guī)則(Rules)文件。本論文的智能檢索系統(tǒng)中所構(gòu)建的中科院組織結(jié)構(gòu)信息本體是從地區(qū)、機構(gòu)、人員、項目4個維度來定義的語義本體。
首先通過討論確定語義類、語義屬性、語義關(guān)系以及傳遞、對稱、相反等規(guī)則。然后將討論結(jié)果定義為數(shù)據(jù)字典,數(shù)據(jù)字典包括名稱及其說明部分。最后在數(shù)據(jù)字典確定以后,通過Protégé手工創(chuàng)建OWL和推理規(guī)則文件。
1.2.1 本體Schema
本體的Schema是整個系統(tǒng)的概念基礎(chǔ),它提供了本體模型基本的類別層次結(jié)構(gòu),是定義推理規(guī)則的基礎(chǔ),是OWL知識庫中信息的結(jié)構(gòu)基礎(chǔ)。
1.2.2 推理規(guī)則
推理規(guī)則以Jena規(guī)則語法描述,是進行基于推理的查詢的基礎(chǔ)。
1.2.3 OWL知識庫[4]
用OWL描述的本體知識,是智能檢索系統(tǒng)的數(shù)據(jù)源,它不僅包含了實例化的本體本身,還包含了本體經(jīng)過描述邏輯推理(DL reasoning)[5]分類后的隱含信息以及本體推理引擎推理所獲得的蘊含知識。
1.3 推理層
推理層采用Jena[6]自帶的GenericRuleReasoner。該泛化規(guī)則引擎是基于規(guī)則的,并且支持用戶的自定義。該推理引擎支持前向鏈、后向鏈以及二者混合的推理執(zhí)行模型,更準(zhǔn)確地說,Jena有2個內(nèi)部規(guī)則引擎:前向鏈推理RETE[7]引擎和一個tabled da talog engine[7]。它們可以獨立運行,或者前向鏈作為后向鏈引擎的先導(dǎo),來完 成“查詢——問答”。泛化規(guī)則引擎可以自定義規(guī)則,因此具有強大的推理功能和靈活性, 并且易于擴展,因此本智能檢索系統(tǒng)的推理以基于靜態(tài)規(guī)則推理為主,采用GenericRuleRea soner,根據(jù)事實庫中的已有事實,加載規(guī)則庫中的規(guī)則,并將新的事實加入到OWL知識庫中 ,實現(xiàn)了OWL知識庫內(nèi)容的更新與擴充。
2 智能檢索系統(tǒng)實現(xiàn)方案
2.1 瀏覽器端
對于瀏覽器端而言,采用Ajax框架實現(xiàn)瀏覽器端的主要功能。Ajax采取了JavaScript+DOM的方式來實現(xiàn)與瀏覽器的交互功能。另外,Ajax利用基于JavaScript的XmlHttpRequest組件提供Xml數(shù)據(jù)異步傳輸,它能夠?qū)崿F(xiàn)頁面無刷新的數(shù)據(jù)傳輸。瀏覽器端主要包括了以下3個方面的功能:
2.1.1 本體知識的檢索
本體檢索的界面如圖2所示。用戶可以采用簡單查詢和復(fù)雜查詢2種方式來進行本體知識檢 索。簡單查詢就是輸入關(guān)鍵詞進行查詢。復(fù)雜查詢一方面可以通過導(dǎo)入本體的Schema文件,采用Jtree這個插件生成清晰的本體檢索導(dǎo)航樹,用戶可以點擊相關(guān)節(jié)點進行查詢。另一方面用戶可以指定檢索條件和檢索關(guān)系來構(gòu)造復(fù)雜查詢。檢索條件包括地區(qū)名稱、機構(gòu)名稱等等。檢索關(guān)系包括所屬關(guān)系、擁有關(guān)系、合作關(guān)系等等。
2.1.2 本體知識的添加
本體知識的添加的界面如圖3所示。用戶通過添加各個類別的實例來實現(xiàn)OWL事實庫的初始化。本體的Schema和本體的初始事實庫是以后進行語義推理的知識基礎(chǔ)。用戶也可以直接添加本體事實描述,用戶首先選擇相關(guān)的本體類別,比如說用戶選擇了“Branch”類,則后面級聯(lián)的選擇框會自動彈出事實庫中已有的該類的實例,比如說用戶選擇了“國家科學(xué)圖書館北京分館”的實例,然后選擇“HasDepartment”關(guān)系,在最后的本體實例框中填寫了“信息技術(shù)部”,這樣用戶就添加了這樣一條本體事實:
國家科學(xué)圖書館→HasDepartment→信息技術(shù)部
2.1.3 結(jié)果語義可視化輸出
結(jié)果語義可視化輸出如圖4所示,這個功能主要是通過JPowerGraph開源包來實現(xiàn)的。用戶在客戶端提交了檢索內(nèi)容后,服務(wù)器端通過語義推理將與檢索內(nèi)容相關(guān)聯(lián)的語義類、語義屬性和語義關(guān)系傳回給客戶端,客戶端再通過JPowerGraph可視化功能把獲得的相關(guān)聯(lián)的語義類、語義屬性和語義關(guān)系的實例轉(zhuǎn)化成節(jié)點和邊,動態(tài)的呈現(xiàn)給用戶。
2.2 服務(wù)器端
對于服務(wù)器端而言,包括數(shù)據(jù)層和推理層兩層結(jié)構(gòu),所以服務(wù)器端主要實現(xiàn)以下兩大功能模塊:
2.2.1 本體知識庫的建立和持久化
本文以中科院圖情機構(gòu)為例說明構(gòu)建機構(gòu)信息這個功能本體的基本流程。
(1)機構(gòu)信息本體的建立
因為機構(gòu)具有良好的層次性,所以采用自上而下的本體構(gòu)建法。首先標(biāo)識本體中最通用的概念,然后在通用層次上創(chuàng)建相應(yīng)的種類并逐步的細(xì)化本體??傮w而言只要包括以下3個步驟:
①分析機構(gòu)本體和定義數(shù)據(jù)字典
該機構(gòu)本體是中科院圖情方向的機構(gòu)信息為基礎(chǔ),利用本體語言對該方向的組織機構(gòu)、主要研究人員、重大研究項目等進行邏輯描述。所以相關(guān)的實體主要包括:
相關(guān)本體描述:
1.房俊民老師是情報研究部的成員。
2.房俊民老師的研究方向是競爭情報。
3.……
4.……
圖4 語義結(jié)果可視化輸出
機構(gòu):名稱,地址,簡介
分支機構(gòu):名稱,地址,簡介
部門:名稱,人員數(shù)目,簡介
導(dǎo)師:姓名,職稱,性別
學(xué)生:姓名,性別
研究方向:名稱,簡介
研究項目:名稱,時間段,經(jīng)費
本文將機構(gòu)信息所用到的詞典整理出來,這些詞匯有可能是類或是屬性,將在后面幾個步驟中加以區(qū)分。表1是本文所制定的詞典。
詞 匯Class/Property定 義OrganizationClass所有分支機構(gòu)的父類BranchClass分支機構(gòu)類DepartmentClass部門類InstructorClass導(dǎo)師類StudentClass學(xué)生類DirectionClass研究方向類ProjectClass研究項目類NameDatatype Property名稱AddressDatatype Property地址IntroductionDatatype Property簡介InstructorNumDatatype Property導(dǎo)師數(shù)目StudentNumDatatype Property學(xué)生數(shù)目PositionDatatype Property職稱SexDatatype Property性別PeriodDatatype Property時間段OutlayDatatype Property經(jīng)費HasBranchsObject Property機構(gòu)擁有的分支機構(gòu)HasDepartmentsObject Property分支機構(gòu)的部門HasInstructorsObject Property部門擁有的導(dǎo)師HasDirectionObject Property導(dǎo)師的研究方向 續(xù)表1
詞 匯Class/Property定 義HasStudentsObject Property導(dǎo)師指導(dǎo)的學(xué)生InversezofzHasStudentsObject Property學(xué)生的指導(dǎo)導(dǎo)師HasProjectsObject Property導(dǎo)師的研究項目HasPartnerObject Property導(dǎo)師項目的合作老師
②建立類別、屬性和實例
類別:
該本體包括Organization、Branch、Department、Instructor、Student、Direction、Project等類別及其它們的子類別和父類別,本體的根節(jié)點是owl:Thing。
屬性:
在屬性方面可分為數(shù)據(jù)屬性(Datatype Property)和對象屬性(Object Property)。
數(shù)據(jù)屬性:使用RDF(S)的數(shù)據(jù)類型,包括定義域(domain)、值域(range)和公理(axiom)。
定義域:定義域限制該屬性在哪一個類別使用。
值域:數(shù)據(jù)屬性的限制包含any、string、integer、boolean、float、symbol,可以使用xml schema datatype,在填入實例時只要符合其數(shù)據(jù)類型限制即可。
公理:可以使用functional,如果一個屬性P被聲明為functional,那么對于每個個體,屬性最多只有1個值。
該機構(gòu)信息本體的數(shù)據(jù)屬性如表2所示。Name使用的定義域包括Organization、Branch、Department、Instructor、Student、Direction、Project等類別,因為這些類別都會有一個特定的名字,所以Axiom是Functional的。其它幾項數(shù)據(jù)屬性也同樣具有Functional的特性。
對象屬性:仍然包括定義域(domain)、值域(range)和公理(axiom)3個方面。
定義域:限制該屬性在哪一個類別中使用。
值域:對象屬性的值域是類的實例而不是具體的數(shù)值。
公理:包含F(xiàn)unctional、InverseFunctional、Symmetric、transitive、Inverse等Axiom。
該機構(gòu)信息本體的對象屬性如表3所示。
HasBranch的Domain是Organization,Range是Branch類的實例,定義了Organization擁有的Branch。
HasDepartment的Domain是Branch,Range是Department類的實例,定義了Branch擁有的Department。
HasInstructors的Domain是Department,Range是Instructor類的實例,定義了Department擁有的Instructor。
HasDirection的Domain是 Instructor,Range是Direction類的實例,定義了Instructor的Direction,因為中科院圖情方向的老師一般都只有1個研究方向,所以Axiom是Functional。
HasStudents的Domain是Instructor,Range是Student類的實例,定義了Instructor擁有的Student。因為中科院圖情方向的老師一般都只有1個學(xué)生,所以Axiom是Functional。并且設(shè)定它與InversezofzHasStudents具有Inverse的關(guān)系。
InversezofzHasStudents的Domain是Student,Range是Instructor類的實例,定義了Student的Instructor。它與HasStudents屬性具有Inverse的關(guān)系,并且HasStudents是Functional的,所以InversezofzHasStudents具有InverseFunctional屬性。
HasProjects的Domain是Instructor,Range是Project類的實例,定義了Instructor擁有的Project。
HasPartner的Domain是Instructor ,Range是Instructor類的實例,定義了Instructor擁有的Partner。因為對于同一個項目的導(dǎo)師而言他們是互為partner,因此Axiom是Symmetric。
實例:
在本體的Schema構(gòu)建完成后,Organization類、Branch類、Department類、Instructor類、Student類、Direction類、Project類的實例作為初始化的查詢條件,在本體規(guī)則基礎(chǔ)上經(jīng)過首次推理以后形成原始的OWL知識庫。
(2)本體知識庫的持久化
本體數(shù)據(jù)持久化有文件存儲和數(shù)據(jù)庫存儲2種方式,文件存儲是將本體庫以文件形式存儲在本地文件系統(tǒng)中,將數(shù)據(jù)從文件中讀入內(nèi)存,在內(nèi)存中對本體庫進行一系列的操作,操作完成后再將本體庫以文件形式寫回到文件中。
以文件方式存儲本體庫輕便快捷,適合于小型的本體庫。因為它不需要過多的配置,而且便于備份、復(fù)制,還可以隨時編輯修改,而且查詢速度快。缺點在于不適合較大的本體庫,因為它每次都需要讀入內(nèi)存在做操作,因此耗用太多的內(nèi)存,如果再加入推理機將會占用大量 的內(nèi)存,而且對于模型的修改需要一次性保存全部模型,效率不高。
而關(guān)系數(shù)據(jù)庫來持久化本體數(shù)據(jù)可以處理更大更復(fù)雜的本體模型,而且利用數(shù)據(jù)庫存儲本體模型,可以使得本體模型具有更大的靈活性和可擴展性,對于大多數(shù)本體應(yīng)用來說,數(shù)據(jù)庫方式是較好的選擇。
因此本智能檢索系統(tǒng)采用關(guān)系數(shù)據(jù)庫來持久化本體數(shù)據(jù),Jena通過一個數(shù)據(jù)庫引擎接口實現(xiàn)了對本體模型的透明持久化,目前支持的數(shù)據(jù)庫主要包括3種:MySQL,Oracle,PostgreSQL and Microsoft SQL server。本系統(tǒng)采用MySQL作為本體數(shù)據(jù)庫。其核心代碼包括4個方面:
①創(chuàng)建數(shù)據(jù)庫的連接
IDBConnection conn=new IDBConnection(MzDBzURL,MzDBzUSER,MzDBzPASSWD,MzDB);
OntModelSpec spec=OntModelSpec.OWLzMEM;
spec.setModelMaker(ModelFactory.createModelRDBMaker(conn));
②在已有數(shù)據(jù)庫連接的基礎(chǔ)上創(chuàng)建本體模型
Model base=maker.createModel(″MyNameModel″);
OntModel model=ModelFactory.createOntologyModel(spec,base);
③把本體本件轉(zhuǎn)化成三元組存儲到MySQL數(shù)據(jù)庫中
URL url=ClassLoader.getSystemResource(″file:src-examples/data/test1.owl″);
model.read(url.toString(),″RDF/XML-ABBREV″);
④從MySQL數(shù)據(jù)庫中獲取已存儲的本體數(shù)據(jù)
Model m=
ModelFactory.createModelRDBMaker(conn.openModel(″MyNameModel″));
2.2.2 本體推理規(guī)則庫的建立和推理引擎的加載
(1)建立推理規(guī)則庫[8]
在基于規(guī)則的推理機中,規(guī)則被定義為一個Java的Rule對象,該對象由body terms(前提)的list,head terms(結(jié)論)list以及可選的名字和可選的方向來定義。每一個term或者ClauseEntry是一個三元模式(triple pattern),一個擴展的三元模式(extended triple pattern)或者一個內(nèi)嵌過程原語的調(diào)用。
規(guī)則文件支持一些額外的宏命令:
@prefix pre:http:∥domain/url#。
定義一個前綴pre,前綴對規(guī)則文件來說是局部的。
@include
包含在一個給定文件中定義的規(guī)則。不管@include出現(xiàn)在哪里,包含的規(guī)則都將出現(xiàn)在用戶定義的規(guī)則前面。規(guī)則文件可以包含預(yù)定義的規(guī)則,例如RDFS和OWL等,這時urlToRuleFile被關(guān)鍵字RDFS,OWL,OWLMicro,OWLMini取代。
下面是包含RDFS預(yù)定義規(guī)則的一個規(guī)則文件的完整例子:
# Example rule file
@prefix ins:
@prefix rel:
@include
[rule1:(?f ins:hasproject?a)(?u ins:hasproject?a)->(?f rel:haspartner?u)]
這條規(guī)則是指如果導(dǎo)師f有項目a,導(dǎo)師u也有項目a,推出導(dǎo)師f和導(dǎo)師u是合作者。
(2)加載規(guī)則推理引擎[9]
規(guī)則文件的加載和分析是這樣進行的:
List rules=Rule.rulesFromURL(″file:myfile.rules″);
或者
BufferedReader br=/*open reader*/;
List rules=Rule.parseRules(Rule.rulesParserFromReader(br));
或者
String ruleSrc=/*lists of rules in lines*/
List rules=Rule.parseRules(rulesSrc);
3 小 結(jié)
本文以機構(gòu)信息為例著重闡述了基于本體的智能檢索系統(tǒng)框架設(shè)計和基本功能模塊的實現(xiàn)。本體推理模塊在本體的描述邏輯上加載了可以自定義規(guī)則的泛化規(guī)則引擎,提高了推理能力,從而可以獲得更加有意義的蘊含知識。本體數(shù)據(jù)持久化的模塊采用數(shù)據(jù)存儲與本體模型存儲相分離的方案,即:本體數(shù)據(jù)庫只存儲基本的數(shù)據(jù)信息,本體Schema采用單獨的文件保存。OWL知識庫的已有事實在加載本體Schema后,經(jīng)過推理獲得新的蘊含知識添加到OWL知識庫中,從而實現(xiàn)了OWL知識庫的更新與擴充。這種方式的本體數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu)設(shè)計更加簡單,本體模型也具有更好的遷移性。而對于如何做好本體的可重用性和面向特定領(lǐng)域之間的平衡,以及推理規(guī)則的優(yōu)化和大規(guī)模本體存儲的數(shù)據(jù)結(jié)構(gòu)設(shè)計是今后研究工作的重點和難點所在。
參考文獻
[1]鄧志鴻,唐世渭,張銘,等.Oniology研究綜述[J].北京大學(xué)學(xué)報:自然科學(xué)版,2002,38(5):730-738.
[2]SPARQL Query Language for RDF[EB/OL].http:∥www.w3.org/TR/rdf-sparql-query,2008-05-10.
[3]董慧,余傳明,楊寧,等.基于本體的數(shù)字圖書館檢索模型研究——體系結(jié)構(gòu)解析[J].情報學(xué)報,2006,25(3):269-275.
[4]Zhijun Zhang.Ontology Query Languages for the Semantic Web:A Performance Evaluation.Masters Thesis,2005:5-34.
[5]F.Baader,D.Calvanese,D.MeGuinnes,The Description Logic Handbook:Theory,Implementation and Applications,Cambridge University Press,2003.
[6]Jena-A Semantic Web Framework for Java[EB/OL].http:∥jena.sourceforge.net,2008-03-15,2008-09-10.
[7]袁方,王濤.基于本體的推理機研究[J].計算機工程與應(yīng)用,2006,(9):158-165.
[8]侯冕,廖樂健.基于語義Web本體語言的推理機引擎的實現(xiàn)[J].軍民兩用技術(shù)與產(chǎn)品,2005.7:41-43.
[9]韓亞洪,劉永革.本體的查詢與推理機制研究[J].計算機工程與應(yīng)用,2005.9:82-85.