王 飞,张应中,罗晓芳
(大连理工大学 机械工程学院,辽宁 大连 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