王 飛,張應中,羅曉芳
(大連理工大學 機械工程學院,遼寧 大連 116024)
基于SQWRL的本體知識庫語義查詢
王 飛,張應中,羅曉芳
(大連理工大學 機械工程學院,遼寧 大連 116024)
本體技術是知識工程領域的研究熱點,本體對于領域知識具有強大的語義描述能力和推理能力,能夠很好地被計算機識別和理解,從而可在語義層面實現知識共享、重用和擴展。本體技術在形式化、開放性和共享性等方面比其他知識建模技術能提供更強大的能力。介紹了基于本體的知識庫的概念以及基本構架;描述了本體知識庫查詢的語言特點,重點闡述了SWRL規則以及SQWRL語義查詢;采用語義網規則語言(SWRL)將材料選擇本體中的因果知識表達為一組知識規則,增強本體知識庫的推理能力;采用Java編程技術調用SWRL API和OWL API,將知識庫層、用戶界面層及推理層三大模塊組建成一個完整的語義查詢系統,并使用基于描述邏輯的Drools規則推理機對本體進行規則推理。給出了一個基于SQWRL語義查詢的工程材料領域本體知識查詢實例進行說明。
本體;知識庫;SWRL規則;SQWRL;語義網;語義查詢
隨著語義網的發展,語義Web使互聯網成為全球化知識共享平臺。海量的信息與知識資源為人們提供了認識世界的前提,知識是與具體領域相關的,知識的表達與組織是領域知識面臨的挑戰與機遇,也是知識發現和挖掘的基礎,如何從顯式表達的知識中有效地獲得人們想要的隱含信息成為知識表示研究的重點。
本體是對領域知識的一種概念化的顯示表達,是一種描述信息的概念模型建模工具,具有十分強大的表達能力和對邏輯推理的支持。語義檢索是獲得本體領域蘊含知識的方式,只要將需要的隱含信息查詢出來才能便于人們更加深入地識別和理解知識。
目前,本體查詢方式有:基于描述邏輯(Description Logic,DL)查詢、基于RDF(Resource Description Framework)三元組查詢,即SPARQL(Simple Protocol and RDF Query Language)、基于OWL語義查詢,即SQWRL[1](Semantic Query-enhanced Web Rule Language)。然而基于描述邏輯的查詢語言,包括OWL-QL和DIG’s ASK protocol,由于它們表達意義不夠而不能很好地作為OWL查詢語言;SPARQL是標準的RDF查詢語言,但它不能夠與知識規則結合。OWL不能表示“IF-THEN”產生式知識規則,僅靠OWL,其知識表示的能力有限。因此,需要采用語義規則語言(Semantic Web Rule Language,SWRL)定義因果關系知識。SWRL能夠很好地將OWL概念和關系與產生式規則相結合,形成強大的知識表達能力。SQWRL是基于SWRL規則的查詢語言,能夠很好地兼容SWRL規則并能夠存儲在OWL本體中,并能進行語義查詢。
近年來,對本體及其相關應用方面的研究一直是研究熱點,特別是本體的語義查詢、知識檢索技術。張艷濤等[2]闡述了利用圖像本體和SWRL規則來實現圖像情感識別,在Protégé上進行規則推理,引入Jess推理引擎,獲得圖像隱性屬性信息;張宗仁等[3]使用SPARQL進行三元組查詢,使用Jena進行讀取和推理,但是查詢過于局限;王海等[4]使用SQWRL語言進行Web語義查詢,對OWL-S形式的服務進行發現,初次探索了SQWRL語言等,但是都不夠系統。文中在進行大量研究之后,建立了一種通用的基于SQWRL的本體語義查詢框架,可以針對本體知識庫進行語義查詢,充分展現了SQWRL語言的優勢,通過程序進行外部控制本體,這就給本體應用提供了開放式、共享服務,而且便于擴展[5]。
1.1 知識的概念表示
本體最早來源于哲學概念,是共享概念模型的明確的形式化的規范說明[6],在知識工程領域,知識可以通過概念及其關系表示。本體中知識概念是指某領域的相關概念,以及概念與概念之間的關系。概念又稱為類,概念與概念之間通過屬性產生關系,通過OWL[7-8]描述語言對本體進行形式化描述,使得計算機能夠理解本體描述的知識。
本體知識就是關于某一領域概念的一套規則的清晰的描述,包括基本的概念,概念間的關系,概念的相關屬性,屬性的限制條件。因此本體清楚地表達領域知識中概念的精確含義以及概念之間的關系。通過對領域知識中的一般概念以及概念間的關系形成概念集和關系集,然后不斷完善應用領域知識,最后形成TBox(Terminology Box),即概念和關系的集合,如下:
其中,a表示概念或術語;m表示屬性;p表示關系。
1.2 基于SWRL的知識規則
SWRL是萬維網聯盟(W3C)于2004年提出,用于描述推理規則。它是以OWL子語言OWL DL、OWL Lite和RuleML[9]為基礎的規則描述語言。最終是為了能讓規則與OWL結合起來,以提高本體的推理能力和邏輯表達能力。
SWRL規則的基本成分是Atom,包括七種Atom類型(類、實例屬性、數據屬性、不同實例原子、相同實例原子、內置式原子、數據值域原子),并且支持開放式假設和OWL類表達式。內置式原子(Built-in)包含了規則中可以自由使用的邏輯比較關系,還可以通過開放式假設在本體中增加新的概念定義,作為本體的中間概念,提升本體的推理能力并且擴展了本體知識庫。SWRL規則表示形式如下:
Atom^Atom^…->Atom^Atom
其中,Atom表示p(arg1,arg2,…,argn),p代表類、屬性或者數據斷言符,arg1,arg2,…,argn代表實例個體、數據或者變量參數。
SWRL中的內部模塊Built-in,包含了規則中可以使用的邏輯關系,例如:材料(materials)本體碳鋼的碳含量低于0.25%,稱為低碳鋼,那么定義規則如下:
CarbonSteel(?c)^hasProperty(?c,?p)^CarbonComposition(?p,?comp)^hasValue(?comp,?v)^swrlb:lessThan(?v,0.25)^hasUnit(?v,?u)^UnitPercent(?u)->LowCarbonSteel(?c)
其中,?表示SWRL語法規則,與實例;c表示碳鋼實例,即c是CarbonSteel的一個實例;hasValue代表數據屬性;swrlb:lessThan表示邏輯小于;hasUnit表示對象屬性,用來與UnitPercent類產生聯系;UnitPercent代表百分數單位類。
SWRL規則是由推理前提(Antecedent)和推理結果(Consequent)組成,一條規則,若其前提被滿足,則其結論也必為真[9]。文中工程材料本體中部分規則如表1所示。
1.3 知識實例
知識實例是指概念與概念之間關系的具體體現,既包含概念實例,又包含各種關系以及屬性。OWL中領域知識的概念又稱為類,知識概念實例叫做個體,是概念的特例或者說是底層的對象,即某個類的具體實現,類似計算機編程面向對象思想中類的對象。屬性是概念間非層次關系的集合,用來描述和定義本體概念和實例,其包括對象屬性和數據屬性。對象屬性的取值范圍是定義的類,而數據屬性的取值范圍是string、boolean、byte、double等數據類型[10]。例如,碳鋼實例45號鋼以及部分屬性如圖1所示。

表1 材料本體中部分SWRL規則

圖1 知識實例圖
2.1 SQWRL查詢語言
SQWRL是基于SWRL的擴展本體規則查詢語言,兼容SWRL的標準語法。它是利用SWRL Built-in進行擴展定義了一套操作符,用來組建檢索規范,因此它可以支持SWRL規則,可以將規則轉變成高效的查詢,可以進行信息提取。它的核心操作符是sqwrl:select,并且標準化的SWRL序列化機制能夠用來查詢并存儲在OWL本體中[2]。
SQWRL是基于語義的查詢,與關系數據庫查詢語言(SQL)有些相似,通過sqwrl:select自定義參數個數,通過SQWRL推理引擎就可以返回一張二維表,表中記錄查詢本體實例的信息。例如:材料本體中有一個類MeasureUnit,表示測量單位類,它有子類UnitMPa,表示壓強單位,有對象屬性hasUnit,另外一個類YieldStrength,表示屈服強度,通過hasUnit屬性與UnitMPa類相關聯。因此,查詢屈服強度大于150 MPa的所有金屬材料以及對應的屈服強度,SQWRL語句如下:
Metal(?m)^hasProperty(?m,?y)^YieldStrength(?y,?s)^hasValue(?s,?v)^swrlb:greaterThan(?v,150)^hasUnit(?s,?u)^UnitMPa(?u)->sqwrl:select(?m,?v)
其中,hasProperty表示對象屬性;swrlb:greaterThan表示邏輯大于;sqwrl:select表示查詢。
SQWRL同樣支持Built-in庫里面提供查詢使用的邏輯運算符,類似數據庫中的邏輯運算符,例如:sqwrl:orderBy(升序排列)、sqwrl:orderByDescending(降序排列)、sqwrl:count (總數)、sqwrl:avg(平均值)、sqwrl:lessThan(少于)等等。
文中材料本體中SQWRL查詢語句如表2所示。

表2 SQWRL查詢語句
2.2 語義查詢框架
如何從本體中獲取想要的知識是語義查詢的關鍵,因此,文中構建了一個基于本體知識庫的語義查詢框架,該框架包括知識庫層、推理層以及用戶界面層。
以工程材料本體為例進行分析和建立,查詢框架圖如圖2所示。

圖2 語義查詢框架圖
2.2.1 知識庫層
知識庫是知識系統的關鍵,通常來說,知識庫儲存著關于領域的計算機模型符號,因此,如何組織和描述成為問題的關鍵。W3C已經把OWL語言作為本體建模語言,把SWRL作為實現本體技術的規則語言,這樣就可以使OWL具有更加強大的表達能力和推理能力。知識庫層是由OWL描述邏輯組成,包括概念集(TBox)和實例庫(ABox),還有規則庫。TBox表示概念、公理以及概念和概念之間的關系,ABox表示概念層面的實例庫,而規則可以增強OWL的推理能力。
2.2.2 用戶界面層
用戶界面層包括兩個界面,一個是構建知識庫的界面,也稱為知識構建器,使用Protégé3.4.1進行概念和實例的構建,如圖2所示;另一個是用來進行語義查詢的界面,也是用來組成查詢語句的一部分,用戶可以輸入自然語言,經過轉換后生成SQWRL查詢語句,同時界面可以顯示查詢結果。
2.2.3 推理層
推理層主要完成推理任務,通過Drools Rule Engine規則引擎來執行推理任務,Drools集成在SWRLAPI中,可以加載SWRL規則,通過SQWRL查詢引擎進行語義查詢,然后將執行推理后的查詢結果返回到用戶查詢界面。
3.1 開發環境以及SWRLAPI的構建
本材料查詢系統中采用美國斯坦福大學研發的本體編輯工具Protégé3.4.1構建本體,集成開發環境是Eclipse4.4,win10 x86,Java8,使用Drools[8-9]查詢推理引擎進行規則推理查詢。Drools集成了基于SWRLAPI[11]的OWL2 RL[8]推理機和SWRL規則引擎,使用基于Java語言的API[9],通過自定義規則語句,實現對本體的推理。經過推理后,SWRL規則中隱含的關系通過屬性與各實例直接關聯,得到新的本體關系,產生新的本體知識。
雖然SWRLTab在早期的Protégé版本中支持規則處理,但是不能很好地使用外部控制,而且SQWRL查詢也沒有集成在里面,Protégé暫時只能支持SPARQL三元組查詢。因此,需要根據美國斯坦福大學提供的源碼構建SWRLAPI,這樣才能在Eclipse中使用Java操控SQWRL;總共分為兩步進行,需要兩個構建工具,一個是Git(分布式版本控制系統)、一個是Maven(項目管理工具)。
(1)Git。
Git是一種免費、開源的版本控制系統,可以高效地管理各種大小項目,可以對項目進行分布式管理。服務器上設置Git倉庫,本機上設置分支倉庫,個人可以自己獨立開發分支,然后遠程提交給服務器,以便于對開發人員進行分布式管理,相互之間互不影響。
使用git clone命令克隆到本地,SWRLAPI[12]需要克隆的地址如下所示:
git clone https://github.com/protegeproject/swrlapi.git
git clone https://github.com/protegeproject/swrlapi-drools-engine.git
git clone https://github.com/protegeproject/swrltab.git
git clone https://github.com/protegeproject/swrltab-plugin.git
git clone https://github.com/protegeproject/swrltab-project.git
git clone https://github.com/protegeproject/swrlapi-example.git
git clone https://github.com/protegeproject/swrlapi-integration-tests.git
將克隆地址復制到Git Bash界面,即可執行克隆操作,就可以將源文件保存到本地文件夾。
(2)Maven。
Maven是Java工程中最常用的項目管理工具,同樣可以通過命令的方式對項目進行管理和控制,可以對源碼進行編譯、測試、打包、發布等,對依賴包進行組織和管理非常方便。打開windows系統的命令提示符工具(cd D:workspaceswrl)進入文件夾,其中pom.xml是依賴包進行管理,在SWRLAPI文件夾中的pom.xml添加如下依賴包,就可以編譯打包操作。
然后使用Maven命令mvn -DskipTests=true clean install,這樣SWRLAPI就創建成功了,如表3所示。因此,可以使用SWRL和SQWRL的可編程接口進行開發。

表3 SWRLAPI程序包表
3.2 語義查詢引擎
文中主要利用Protégé中的開源OWL API以及SWRL API,并使用Drools規則推理機,是基于描述邏輯(DL)的推理,對規則進行加載并推理,以便于用來推理查詢。主要執行過程如下:
(1)利用OWLOntologyManager創建一個本體模型管理器,用來加載OWL本體到內存中;
(2)利用SWRLRuleEngine接口將SWRL規則載入Drools推理機,建立連接,并進行推理;
(3)利用SQWRLQueryEngine接口對推理后的本體文件進行語義查詢,通過SQWRLResult來獲取查詢后的結果,結果是以二維表的形式返回給用戶。
推理過程是對規則先進行推理,所有規則同時加載到OWL本體中,但是查詢僅僅獲得了跟查詢相關的規則的結果,其主要代碼如下所示:
//定義OWL本體管理器
public static OWLOntologyManager manager;
//定義OWL本體對象
public staticOWLOntology ontology;
//定義規則變量
public staticSWRLAPIRule swrlRule1;
//定義規則文件路徑變量
public static StringfileDirectory;
//定義查詢語句變量
public static String Query1;
//定義存儲規則容器
List list=new ArrayList();
File file=new File(fileDirectory);
try{BufferedReader br=new BufferedReader(new FileReader(file));//構造一個BufferedReader類來讀取規則文件
String s=null;
while((s=br.readLine())!=null){//使用readLine方法,一次讀一行
s=s.substring(s.indexOf("=")+1);
list.add(s);} //將獲取規則存入list容器中
br.close();
manager= //加載本體管理器OWLManager.createOWLOntologyManager();
//使用本體管理器來加載本體文件,創建本體模型
ontology=manager.loadOntology(IRI.create("file:/d:/materials.owl"));
//使用SWRLRuleEngine規則引擎添加規則
SWRLRuleEngine ruleEngine=SWRLAPIFactory.createSWRLRuleEngine(ontology); //加載規則
for(i=1;i<=list.size();i++){
//ruleEngine的createSWRLRule方法直接將規則加載到內存中
swrlRule1=ruleEngine.createSWRLRule("rule"+i,list[i]);}
ruleEngine.infer();//對本體進行推理
//使用SQWRLQueryEngine創建語義查詢
SQWRLQueryEngine queryEngine1=SWRLAPIFactory
.createSQWRLQueryEngine(ontology);
//運行語句查詢,并獲得結果集,Query1如表2所示
SQWRLResult result=queryEngine.runSQWRLQuery("Q1",Query1);
//遍歷輸出查詢后的結果集
while(result.next()) {//獲取查詢后的實例
SQWRLNamedIndividualResultValue materialValue=result.getNamedIndividual("mat");
String material=materialValue.getShortName();}
3.3 語義查詢實例
以工程材料本體為例,執行語義查詢引擎,即可以查詢得到結果,如圖3所示。

圖3 用戶查詢界面
其中,SWRLAPI程序包里面已經集成了Drools[12]引擎,因此可以建立橋機制將OWL知識和SWRL規則聯系起來,使用規則和描述邏輯進行推理,然后再通過SQWRLQueryEngine查詢引擎,來執行查詢語句,獲得查詢結果。由圖3可知,根據Rule1規則,通過查詢語句可以得到查詢的材料為45,40,40Cr三種鋼材料,而40Cr是屬于調質鋼系列,但是碳含量在0.4%,通過執行規則可以推理得到40Cr鋼也屬于中碳鋼實例,說明滿足規則Rule1的調質鋼也是中碳鋼。因此,通過SQWRL不僅能夠對繼承類進行查詢,而且通過Drools引擎執行SWRL規則后,還完成了對推理后本體的查詢任務。
使用基于規則的語義查詢語言(SQWRL)進行推理查詢,并使用SWRLAPI內置的Drools規則引擎,構建工程材料本體進行實驗驗證,并用第三方用戶界面進行工程材料選擇查詢,對本體資源進行深入挖掘,對隱含的知識進行查詢,進一步完善本體中的關系。使用SQWRL不僅可以完成簡單的查詢,也可以完成復雜的查詢,并能推理得到新的知識。工程材料選擇是一個十分復雜的過程,文中僅通過構建基于本體知識庫的查詢框架,展示SQWRL強大的規則推理能力。基于SQWRL的知識框架是開放式、可擴展、可重用的,該框架可以應用于其他本體的查詢,可以對領域本體進行擴展,通過編寫外部程序來對本體知識庫進行開發應用并獲取知識,并且可以不斷完善,為今后語義查詢提供另一種方式。但是語義規則不具有通用性和易讀性,規則可能造成本體關系沖突,維護成本較高。在實際應用中,如何提升查詢的準確率和效率,簡化SQWRL語言,解決沖突等問題是今后的研究方向。
[1]O’ConnorMJ,DasA.SQWRL:aquerylanguageforOWL[C]//FifthinternationalworkshoponOWL:experiencesanddirections.Chantilly,VA:[s.n.],2009.
[2] 張艷濤,陳俊杰,相 潔.基于SWRL本體推理研究[J].微計算機信息,2010,26(3-3):182-183.
[3] 張宗仁,楊天奇.基于自然語言理解的SPARQL本體查詢[J].計算機應用,2010,30(12):3397-3400.
[4] 王 海,范 琳,李增智.基于SQWRL的語義Web服務發現[J].微電子學與計算機,2010,29(9):76-79.
[5]ZhangYingzhong,LuoXiaofang,ZhaoYong,etal.Anontology-basedknowledgeframeworkforengineeringmaterialselection[J].AdvancedEngineeringInformatics,2015,29(4):985-1000.
[6] 周 亮,黃志球,倪 川.基于SWRL規則的本體推理研究[J].計算機技術與發展,2015,25(10):67-70.
[7]O’ConnorMJ,DasA.ApairofOWL2RLreasoners[C]//ProceedingsofOWLexperiencesondirectionsworkshop.[s.l.]:[s.n.],2012:1-10.
[8]HorridgeM,BechhoferS.TheOWLAPI:ajavaAPIforOWLontologies[J].SemanticWeb,2011,2(1):11-21.
[9]HorrocksI,Patel-SchneiderPF,BoleyH,etal.SWRL:asemanticwebrulelanguagecombiningOWLandRuleML[C]//Worldwidewebconsortium.[s.l.]:[s.n.],2004.
[10] 張新華,張 飛.“知識”概念及其涵義研究[J].圖書情報工作,2013,57(6):49-58.
[11]Protégéteam.SWRLTabbuildproject[EB/OL].2014.https://github.com/protegeproject/swrltab-project.
[12] 劉 偉.Java規則引擎-Drools的介紹及應用[J].微計算機應用,2005,26(6):717-721.
Semantic Query of Ontology Knowledge Base Based on SQWRL
WANG Fei,ZHANG Ying-zhong,LUO Xiao-fang
(School of Mechanical Engineering,Dalian University of Technology,Dalian 116024,China)
Ontology technology is a hot research topic in the field of knowledge engineering.Ontology has a powerful semantic description and reasoning ability for domain knowledge,which can be well recognized and understood by computers so as to realize the knowledge sharing,reusing and extension in semantic level.The ontology technology can provide more powerful abilities than other knowledge modeling techniques in the formalism,openness and sharing.The basic concept and framework of the ontology based knowledge base is introduced,and the characteristics of language in ontology knowledge base is described,especially for SWRL and SQWRL.The causal knowledge for material selection is represented as a set of knowledge rules coded with Semantic Web Rule Language (SWRL),which enhance the reasoning ability of the ontology knowledge base.A Java programming technology which uses SWRL API and OWL API is employed,which integrates the knowledge base layer,the inference layer,and the user interface layer,and builds a overall material selection knowledge system.The Drools rule reasoning machine is employed to implement the ontology reasoning,and a semantic query example based on SQWRL for engineering material domain knowledge is presented.
ontology;knowledge base;SWRL rule;SQWRL;semantic web;semantic query
2016-03-21
2016-06-13
時間:2017-01-04
國家自然科學基金資助項目(51375069)
王 飛(1989-),男,碩士研究生,研究方向為基于本體的知識工程、語義Web;張應中,碩士生導師,研究方向為基于本體的語義信息技術及工程應用、產品三維數字建模;羅曉芳,碩士生導師,研究方向為計算機圖形圖像處理,概念設計、基于網絡的協同設計,智能CAD。
http://www.cnki.net/kcms/detail/61.1450.TP.20170104.1102.096.html
TP182
A
1673-629X(2017)02-0015-05
10.3969/j.issn.1673-629X.2017.02.004