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

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

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

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

  由圖2可以看到,李四具有“面向?qū)ο髷?shù)據(jù)庫(kù)”的能力,。一般認(rèn)為,,具有某領(lǐng)域的子領(lǐng)域能力的雇員,同樣具備該領(lǐng)域的知識(shí),。進(jìn)一步把問(wèn)題推廣到項(xiàng)目因素?,F(xiàn)在要查詢(xún)具備“演繹面向?qū)ο髷?shù)據(jù)庫(kù)”能力的雇員,同樣沒(méi)有結(jié)果,。然而從圖2中可以看到張三在做項(xiàng)目1,,而項(xiàng)目1應(yīng)用了“演繹面向?qū)ο髷?shù)據(jù)庫(kù)”技術(shù)。因此張三可以作為候選人輸出,。
  文獻(xiàn)[9]是根據(jù)本體的啟發(fā)式算法實(shí)現(xiàn)查詢(xún)功能的,。啟發(fā)式算法是先定義幾個(gè)基本函數(shù),然后利用函數(shù)的組合及函數(shù)之間的映射實(shí)現(xiàn)概念之間的聯(lián)系,。針對(duì)這個(gè)問(wèn)題,,在Jena推理機(jī)的基礎(chǔ)上,加入自己設(shè)計(jì)的規(guī)則,,只要輸入限定條件,,就可以輸出滿(mǎn)足該條件的雇員。由于可以根據(jù)實(shí)際環(huán)境加入相應(yīng)的規(guī)則,,從而使算法具有更好的靈活性和適應(yīng)性,。
  使用Jena推理機(jī)制實(shí)現(xiàn)這種查詢(xún)功能,必須做好兩方面的工作,。第一,,把圖2中所有與數(shù)據(jù)庫(kù)相關(guān)的概念,、關(guān)系和實(shí)例用OWL和RDF表示出來(lái),存儲(chǔ)成XML文檔,。這又分兩個(gè)步驟:(1)把圖2中本體的概念用OWL表示出來(lái),,存儲(chǔ)成CONCEPT.owl文件。這里的概念有計(jì)算機(jī)科學(xué)(CS),、數(shù)據(jù)庫(kù)(DB),、演繹數(shù)據(jù)庫(kù)(DDB)、面向?qū)ο髷?shù)據(jù)庫(kù)(OODB),、演繹面向?qū)ο髷?shù)據(jù)庫(kù)(DOODB)和項(xiàng)目(P),;(2)把圖1中本體的實(shí)例用RDF存儲(chǔ)成INSTANCE.rdf 文件。一共有兩個(gè)項(xiàng)目,,分別是項(xiàng)目1和項(xiàng)目2,,有三個(gè)雇員:張三、李四和王五,。其中張三工作于項(xiàng)目1,,王五工作于項(xiàng)目2,李四有“面向?qū)ο髷?shù)據(jù)庫(kù)”的能力,。第二,,根據(jù)查詢(xún)條件構(gòu)造兩條規(guī)則實(shí)現(xiàn)查詢(xú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說(shuō)明如果某個(gè)雇員x有能力y,,而y屬于z,則x擁有能力z,。
  Rule2說(shuō)明如果某個(gè)雇員x工作于項(xiàng)目y,,而y使用了z技術(shù),則x擁有能力z,。
  把這兩條規(guī)則放入Jena推理機(jī)中,,然后基于上面兩個(gè)相關(guān)聯(lián)的XML文檔進(jìn)行推理。代碼如下:
  Model schema=
  ModelLoader.loadModel(″file:data/CONCEPT.owl″),;
       //把本體中的概念文件CONCEPT.owl讀入推理機(jī)
  Model data=
  ModelLoader.loadModel(″file:data/INSTANCE.rdf″),;
       //把本體中的實(shí)例文件INSTANCE.rdf讀入推理機(jī)
  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)),;
       //把編寫(xiě)的規(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ù)庫(kù)有關(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ù)庫(kù)是數(shù)據(jù)庫(kù)的子集
  -(eg:DDB owl:subclassof eg:DB)    //演繹數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)的子集
  -(eg:OODB owl:subclassof eg:DB)    //面向?qū)ο髷?shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)的子集
  -(eg:李四 eg:hascompetence eg:DB)    //李四具有數(shù)據(jù)庫(kù)的能力
  -(eg:張三 eg:hascompetence eg:DB)    //張三具有數(shù)據(jù)庫(kù)的能力
  -(eg:project1 eg:usetech eg:DB)    //項(xiàng)目1使用了數(shù)據(jù)庫(kù)的技術(shù)
  因?yàn)镽DF是用三元組表示的,,所以在結(jié)果中張三,、李四都以這樣的形式作為候選人輸出了。最后使用針對(duì)RDF格式的數(shù)據(jù)庫(kù)查詢(xún)技術(shù)RDQL把雇員的姓名選擇出來(lái),,此工作便完成了,。
4  結(jié)  論
  隨著科學(xué)技術(shù)的發(fā)展,信息檢索技術(shù)也在發(fā)展,,本體的引入提高了信息檢索的效率,。Jena作為一種支持本體的工具,在今后本體的研究過(guò)程中,,必將會(huì)有重要的作用,。
參考文獻(xiàn)
1   鄧志鴻,唐世渭,,張銘等.Ontology研究綜述.北京大學(xué)學(xué)報(bào),,  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   宋煒,張銘.語(yǔ)義網(wǎng)簡(jiǎn)明教程.北京:高等教育出版社,,2004
8   廖明宏.本體論與信息檢索.計(jì)算機(jī)工程,,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)載,。