《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > Jena推理機在基于本體的信息檢索中的應(yīng)用
Jena推理機在基于本體的信息檢索中的應(yīng)用
耿科明,袁 方
(河北大學(xué) 數(shù)學(xué)與計算機學(xué)院,河北 保定071002 )
摘要: 對Jean推理機的結(jié)構(gòu)及推理規(guī)則的構(gòu)造語法進行系統(tǒng)介紹,通過實例說明Jena在基于本體的信息檢索中的應(yīng)用。
關(guān)鍵詞: 本體 Jena OWL RDF
Abstract:
Key words :

摘   要: 對Jean推理機的結(jié)構(gòu)及推理規(guī)則的構(gòu)造語法進行系統(tǒng)介紹,通過實例說明Jena在基于本體的信息檢索中的應(yīng)用。
關(guān)鍵詞: 本體  Jena  OWL  RDF

  隨著因特網(wǎng)技術(shù)迅速發(fā)展,網(wǎng)上信息與知識急劇增長。所以,對信息檢索技術(shù)的研究日顯重要,信息檢索已成為信息社會中不可或缺的一種重要工具。
  當(dāng)前的信息檢索技術(shù)可分為三類:全文檢索(Text Retrieval)、數(shù)據(jù)檢索(Data Retrieval)和知識檢索(Knowledge Retrieval)。全文檢索和數(shù)據(jù)檢索的本質(zhì)都是直接基于關(guān)鍵字的檢索技術(shù),不能滿足用戶在語義和知識上的需求。知識檢索強調(diào)的是基于知識的、語義上的匹配,因此在查全率和查準(zhǔn)率上有更好的保證。
本體(Ontology)原本是一個哲學(xué)中的概念,被哲學(xué)家用來描述事物的本質(zhì)。在計算機界,明確本體的定義經(jīng)歷了一個過程,最后Gruber關(guān)于本體的定義得到了業(yè)內(nèi)同行的一致認(rèn)同,即“本體是概念模型的明確的規(guī)范說明”。本體作為一種能在語義和知識層次上描述信息的概念模型建模工具,在信息檢索,特別是在基于知識的信息檢索中得到了廣泛的應(yīng)用。
  OWL(Web Ontology Language)是W3C組織于2004年2月正式推出的一個專門用來描述本體的語言。它既有強大的語義表達能力,又可以實現(xiàn)描述邏輯的可判定推理。OWL可以用來存儲本體中的概念和關(guān)系。
RDF(Resource Description Framework)是資源描述框架語言,用來描述元數(shù)據(jù)以及元數(shù)據(jù)與元數(shù)據(jù)之間的關(guān)系。其中元數(shù)據(jù)是“關(guān)于數(shù)據(jù)的數(shù)據(jù)”,是描述網(wǎng)絡(luò)資源的數(shù)據(jù)。RDF可以用來存儲本體中的實例。
1  Jena推理機簡介
  Jena是專門用來構(gòu)建語義網(wǎng)的應(yīng)用軟件,它為RDF、RDFS和OWL提供了一個可編程實現(xiàn)的環(huán)境。推理功能是Jena中的一個子系統(tǒng),它的目的就是把推理機制和推理器引入到Jena中。Jena推理機結(jié)構(gòu)如圖1所示。

  所有應(yīng)用都是通過使用ModelFactory訪問圖1的推理機制,并為相關(guān)聯(lián)的Reasoner建立一個新的Model。查詢這個新的Model不但會返回對原來數(shù)據(jù)的描述信息,還會返回通過Reasoner中的規(guī)則執(zhí)行后的附加描述信息。整個推理機制的核心部分是InfGraph,因為所有應(yīng)用的執(zhí)行都是在Graph SPI層進行。Ont/Model API為用戶構(gòu)建的本體提供了一種便利的方式與合適的推理器連接。推理結(jié)構(gòu)中的Graph-base assertions指的是和Reasoner一起綁定的數(shù)據(jù)(XML數(shù)據(jù)-實例),而Graph-ontology definitions指的是和Reasoner一起綁定的數(shù)據(jù)結(jié)構(gòu)的限制(也就是XML模式-概念和關(guān)系)。Reasoner Registry是一個靜態(tài)類,它包含了當(dāng)前用到的所有Reasoner。
2  Jena推理規(guī)則的構(gòu)造語法
  用戶一方面可以利用上面的結(jié)構(gòu)實現(xiàn)本體中的推理,另一方面,如果用戶對Java很熟悉,則可以自己開發(fā)推理規(guī)則。規(guī)則的語法格式如下:
Rule  :=    bare-rule
      or     [bare-rule]
      or     [ruleName:bare-rule]
bare-rule:=     term,...term->hterm,...hterm//向前推理
      or     term,...term<-term,...term//向后推理
hterm :=    term
      or     [bare-rule]
term  :=    (node,node,node)//三元組模式
      or     (node,node,functor)//擴展三元組模式
      or     builtin(node,...node)//調(diào)用處理元語
functor :=     functorName(node,...node)
             //結(jié)構(gòu)化的文字表述
node  :=     uri-ref//例如 http://foo.com/eg
      or prefix:localname//例如rdf:type
      or     ?varname//變量名
      or     ′a literal′//字符串
      or     number//例如42或25.5
  用戶根據(jù)上述語法格式寫出針對特定問題的規(guī)則,就可以更加方便、快捷地查詢各種信息了。
3  Jena推理機的應(yīng)用
  下面通過一個具體的實例討論Jena推理機是如何在本體中進行推理的。
  在現(xiàn)代企業(yè)管理中,人們越來越清楚地認(rèn)識到知識、尤其是雇員的知識是企業(yè)非常重要的財富。如何組織、管理好這些知識財富已成為現(xiàn)代管理重要的研究課題。傳統(tǒng)的做法是建立一個數(shù)據(jù)庫系統(tǒng)對企業(yè)雇員進行管理。然而,基于關(guān)鍵詞的查詢有時是不能滿足要求的。對于這個問題,文獻[9]進行了研究并給出了示例。示例如下:查找一個懂得“數(shù)據(jù)庫”的雇員來從事一個項目的開發(fā)工作,假設(shè)在建立的查詢系統(tǒng)中找不到一個人懂得“數(shù)據(jù)庫”,系統(tǒng)只能返回空記錄給用戶。而事實上存在某些人懂得“演繹數(shù)據(jù)庫”或“面向?qū)ο髷?shù)據(jù)庫”,按常識,這些人應(yīng)該懂得數(shù)據(jù)庫的知識,他們可以作為候選人提交給用戶。但傳統(tǒng)的數(shù)據(jù)庫做不到這一點。雖然可以通過進一步輸入這些關(guān)鍵詞達到查詢目的,但是不能保證用戶了解“數(shù)據(jù)庫”所有的子領(lǐng)域。文獻[9]借助于本體,可以實現(xiàn)這一目的。文中假設(shè)為企業(yè)建立了一個本體,其中一個部分如圖2所示。

  由圖2可以看到,李四具有“面向?qū)ο髷?shù)據(jù)庫”的能力。一般認(rèn)為,具有某領(lǐng)域的子領(lǐng)域能力的雇員,同樣具備該領(lǐng)域的知識。進一步把問題推廣到項目因素。現(xiàn)在要查詢具備“演繹面向?qū)ο髷?shù)據(jù)庫”能力的雇員,同樣沒有結(jié)果。然而從圖2中可以看到張三在做項目1,而項目1應(yīng)用了“演繹面向?qū)ο髷?shù)據(jù)庫”技術(shù)。因此張三可以作為候選人輸出。
  文獻[9]是根據(jù)本體的啟發(fā)式算法實現(xiàn)查詢功能的。啟發(fā)式算法是先定義幾個基本函數(shù),然后利用函數(shù)的組合及函數(shù)之間的映射實現(xiàn)概念之間的聯(lián)系。針對這個問題,在Jena推理機的基礎(chǔ)上,加入自己設(shè)計的規(guī)則,只要輸入限定條件,就可以輸出滿足該條件的雇員。由于可以根據(jù)實際環(huán)境加入相應(yīng)的規(guī)則,從而使算法具有更好的靈活性和適應(yīng)性。
  使用Jena推理機制實現(xiàn)這種查詢功能,必須做好兩方面的工作。第一,把圖2中所有與數(shù)據(jù)庫相關(guān)的概念、關(guān)系和實例用OWL和RDF表示出來,存儲成XML文檔。這又分兩個步驟:(1)把圖2中本體的概念用OWL表示出來,存儲成CONCEPT.owl文件。這里的概念有計算機科學(xué)(CS)、數(shù)據(jù)庫(DB)、演繹數(shù)據(jù)庫(DDB)、面向?qū)ο髷?shù)據(jù)庫(OODB)、演繹面向?qū)ο髷?shù)據(jù)庫(DOODB)和項目(P);(2)把圖1中本體的實例用RDF存儲成INSTANCE.rdf 文件。一共有兩個項目,分別是項目1和項目2,有三個雇員:張三、李四和王五。其中張三工作于項目1,王五工作于項目2,李四有“面向?qū)ο髷?shù)據(jù)庫”的能力。第二,根據(jù)查詢條件構(gòu)造兩條規(guī)則實現(xiàn)查詢功能:
  Rule1:(?x has competence ?y),(?y subclass of ?z)->(?x has competence ?z)
  Rule2:(?x work in ?y),(?y use tech ?z)->(?x has competence ?z)
  Rule1說明如果某個雇員x有能力y,而y屬于z,則x擁有能力z。
  Rule2說明如果某個雇員x工作于項目y,而y使用了z技術(shù),則x擁有能力z。
  把這兩條規(guī)則放入Jena推理機中,然后基于上面兩個相關(guān)聯(lián)的XML文檔進行推理。代碼如下:
  Model schema=
  ModelLoader.loadModel(″file:data/CONCEPT.owl″);
       //把本體中的概念文件CONCEPT.owl讀入推理機
  Model data=
  ModelLoader.loadModel(″file:data/INSTANCE.rdf″);
       //把本體中的實例文件INSTANCE.rdf讀入推理機
  String rules=
  ″[Rule1:(?x has competence ?y)(?y subclass of ?z)
  ->(?x has competence ?z)]″+″[Rule 2:(?x work in ?y)
  (?y use tech ?z)->(?x has competence ?z)]″;
  Reasoner reasoner=new GenericRuleReasoner
  (Rule.parseRules(rules));
       //把編寫的規(guī)則加入到已有的推理規(guī)則中
  reasoner=reasoner.bindSchema(schema);
  InfModel infmodel=ModelFactory.createInfModel(reasoner,data);
  Resource DB=infmodel.getResource(″urn:x-hp:eg/DB″);
  System.out.println(″DB*:″);
  printStatements(infmodel,null,null,DB);
       //利用printStatements函數(shù)輸出所有
       //與數(shù)據(jù)庫有關(guān)的推理結(jié)果
  printStatements定義如下:
     public void printStatements(Model m,
        Resource s,Property p, Resource o)
   {
       for (StmtIterator i=
         m.listStatements(s,p,o);i.hasnext( );)
     {
       Statement stmt=i.nextStatement( );
       System.out.println(″-″ +
    PrintUtil.print(stmt));
     }
    }
  上面操作的輸出結(jié)果是:
  DB*:
  -(eg:DOODB owl:subclassof eg:DB)    //演繹面向?qū)ο髷?shù)據(jù)庫是數(shù)據(jù)庫的子集
  -(eg:DDB owl:subclassof eg:DB)    //演繹數(shù)據(jù)庫是數(shù)據(jù)庫的子集
  -(eg:OODB owl:subclassof eg:DB)    //面向?qū)ο髷?shù)據(jù)庫是數(shù)據(jù)庫的子集
  -(eg:李四 eg:hascompetence eg:DB)    //李四具有數(shù)據(jù)庫的能力
  -(eg:張三 eg:hascompetence eg:DB)    //張三具有數(shù)據(jù)庫的能力
  -(eg:project1 eg:usetech eg:DB)    //項目1使用了數(shù)據(jù)庫的技術(shù)
  因為RDF是用三元組表示的,所以在結(jié)果中張三、李四都以這樣的形式作為候選人輸出了。最后使用針對RDF格式的數(shù)據(jù)庫查詢技術(shù)RDQL把雇員的姓名選擇出來,此工作便完成了。
4  結(jié)  論
  隨著科學(xué)技術(shù)的發(fā)展,信息檢索技術(shù)也在發(fā)展,本體的引入提高了信息檢索的效率。Jena作為一種支持本體的工具,在今后本體的研究過程中,必將會有重要的作用。
參考文獻
1   鄧志鴻,唐世渭,張銘等.Ontology研究綜述.北京大學(xué)學(xué)報,  2002;38(5)
2   Gruber T.Ontolingua:A translation approach to portable  ontology specifications.Knowledge Acquisition,1993;5(2)
3   McGuinness D L,Harmelen F V.OWL Web Ontology  Language Overview.W3C Recommendation,2004,2.http://  www.w3.org/TR/owl-features
4   Manola F,Miller E.RDF Primer.W3C Recommendation, 2004,2.http://www.w3.org/TR/rdf-primer
5   Verzulli J.Using the Jena API to Process RDF.O′Reilly  Xml.com,2001;(5).http://www.w3.org/TR/rdf-Primer
6   Reynolds D.Jena 2 Inference support.HP United States,  2004;(2).http://www.hpl.hp.co.uk/people/bwm/rdf/jena
7   宋煒,張銘.語義網(wǎng)簡明教程.北京:高等教育出版社,2004
8   廖明宏.本體論與信息檢索.計算機工程,2000;(2)
9   Dauiel E.Knowledge management System:Converting and Connecting.IEEE Intellsyst,1998;(5)~(6)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。