基于Jena 的应急预案名称本体构建及其推理
2014-01-16金保华赵家明
金保华,赵家明
(郑州轻工业学院 计算机与通信工程学院,河南 郑州450002)
随着各类突发事件的频繁发生,应急预案作为应急保障的第一篇,能够为有关领导在应对和处置突发事件时提供及时有效地参考,重要性不言而喻。同时,在海量的数据与大量的应急预案信息面前,如何快速准确地查找到相关预案,并迅速作出科学合理的部署,是当下应急工作急需解决的事情[1]。而传统的应急预案检索方式,主要是通过搜索关键字或是依赖数据库提供的SQL查询语句来对相关的预案进行查询,这些方法效率低下、要求检索者对应急预案较为熟知,并且查询结果往往返回大量无关信息。
随着语义网技术的发展,作为语义Web基石的本体,也越来越多的受到人们的关注,深深扎根到各个应用领域里[2]。由于本体能够对概念进行抽象并进行精确地描述,适合用其构建一个共享的和共同的领域理论,用公认的术语集和这些术语之间的关系来反映该领域内的知识和知识结构,帮助人们和计算机之间实现准确的语义交流。为此,文中首先引入Jena的相关知识,设计并提出一个应急预案名称本体模型,使用Jena编辑器创建了该本体,最后给予推理实现。
1 Jena简介
Jena最早来源于SIRPAC API的工作,是一个开源的基于java框架的本体语言开发工具包,由美国HP公司的Brian Me Bride研发,为当下的语义网应用系统的研究提供了支撑,支持使用任意的本体描述语言构建本体,提供相关的推理机制,和完整的本体解析、存储、推理和查询函数和调用接口[3]。Jena接口能够查找和操作本体模型中的陈述(statement),由于其在数据库支持方面的可靠性和持续稳定性[4],它一直是各类应用系统在开发过程中的首选。其中的Reasoner和Ontology子系统,组成了Jena的基本核心架构。Jena具体结构框架如下:
1)以RDF/XML、三元组形式读写RDF;资源描述框架(RDF)是描述资源的一项标准 (在技术上是W3C的推荐标准),Jena文档中有一部分详细介绍了RDF和Jena RDF API,其内容包括对Jena RDF包的介绍、RDF模型的创建、读写、查询等操作,以及RDF容器等的讨论。
2)RDFS,OWL,DAML+OIL 等本体的操作;Jena框架包含一个本体子系统(Ontology Subsystem),它提供的API允许处理基于RDF的本体数据,也就是说,它支持OWL,DAML+OIL和RDFS。本体API与推理子系统结合可以从特定本体中提取信息,Jena 2还提供文档管理器(OntDocumentManager)以支持对导入本体的文档管理。
3)利用数据库保存数据;Jena 2允许将数据存储到硬盘中,或者是OWL文件,或者是关系数据库中。文中处理的本体就是OWL文件读入的。
4)查询模型;Jena 2提供了ARQ查询引擎,它实现SPARQL查询语言和RDQL,从而支持对模型的查询。另外,查询引擎与关系数据库相关联,这使得查询存储在关系数据库中的本体时能够达到更高的效率。
5)基于规则的推理;Jena 2支持基于规则的简单推理,其推理机制支持将推理器(inference reasoners)导入Jena,创建模型时将推理器与模型关联以实现推理。
Jena的上述部件在解决语义Web的搜索中各司其职,发挥了重要作用。OWL/RDF/XML格式文本作为信息元数据的原始存储和标引格式,能够通过RDF/XML解析器和Jena的相关应用程序接口,转化成可以存储在电脑内存中的模型,另外Jena提供了将内存中的本体模型转存到诸如Mysql或 Oracle 等关系数据库中的接口,Model、Resource、Query 等接口可以用于访问和维护数据库里的本体数据,并能通过Jena API及时的调用,持久化的方法有益于数据量较大的本体模型的存储;加载到内存中的本体模型在连接了推理机子系统和本体子系统后,可使用本体工厂中创建具有语义推理能力的InfModel或者OntModel,然后直接用于信息查询;通过RDQL对本体进行查询,返回的结果通过相应的处理便能呈现出来并能与检索者实施交互[5]。使用Jena不仅能帮助设计、实现和验证具体的应用系统,还有助于加深对Ontology等研究对象的理解和认识。
2 基于Jena的本体构建
2.1 构建本体模型图
Ontology最早是一个哲学上的概念,Ontology的目标是捕获相关领域的知识,提供对该领域知识的共同理解,确定该领域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇(术语)和词汇间相互关系的明确定义[6]。
在知识工程和信息科学等领域,本体论现已频繁应用在数据库异构、语义异构、信息抽取与检索中[7]。构建一个相关领域的本体,是实现知识共享的关键。应急预案都是经过规范化和官方化的与突发事件有关的文本。通过对预案库中的应急预案名称进行分析可知,预案名称主要是由“制定预案的部门”、“该部门所属的行政区划”和 “预案对应的事件类别”这三部分构成。因此,构建构建一个应急预案名称本体的核心思想,就是将检索者在使用系统进行搜索时输入的检索语句映射到者三部分上去,从而在检索者对应急预案名称不熟悉、不改变语义表达倾向的情况下,能够准确、有效地进行预案检索。
通过对预案名称的有关概念进行抽象,此文构建了一个应急预案名称本体,如图1所示。
在上述本体中,用椭圆表示“类”或“实例”,用方框表示“属性”,用箭头表示两者之间的联系,其中箭头尾的“类”是箭头所指“类”的“子类”。
2.2 用描述语言owl表述本体
图1 应急预案名称本体图Fig.1 Title of the emergency plan ontology graph
本体语言是对本体模型进行显示的形式化描述。一个好的本体语言要求语法简单规范、表达能力强、并能进行高效的推理。OWL(Web Ontology Language)是W3C推荐的Web Ontology的表示语言,基于描述逻辑,它通过提供更多具有形式语义的词汇,在Web内容的机器可理解性方面要强于XML,RDF和RDF Schema(RDF-S)等所能达到的程度[8]。OWL包含3个依次增强的子语言:OWL Lite,OWL DL和OWLFuII。OWL的语义构词有类、个体、属性、属性特性、属性约束、Ontology映射以及复杂类,支持类的并、交和补运算[9]。OWL可以说是RDFS的一个扩展,并能完全向下兼容RDF、XML,是当下应用最广的本体建模原语。在如下的本体表述中,首先定义 “属性”的命名空间为”http://purl.org/vocab/relationship/”, 定义 “资源/类/实例” 的命名空间为”http://EmergencePlans/”; Jena 自动生成标号“j.0:”和“j.1:”(为了表述方便,此文所有关于三元组的描述都省略了命名空间)。
首先,为“禽流感”类创建一个实例“H7N9”用于下文的推理。先用本体工厂创建本体模型,同时设定使用的推理规则为“OWL_MEM_RULE_INF”。
OntModel ontModel=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF);
创建本体类“禽流感”,
OntClass ont=ontModel.createClass(familyUri+"禽流感");
在本体类“禽流感”下创建实例“H7N9”,在Jena中可使用如下语句,
Resource shili=ontModel.createIndividual(familyUri+"H7N9",ont);
或是先创建实例“H7N9”,
Resource shili=ontModel.createResource (familyUri+"H7N9");
再描述该实例的类型为“禽流感”,
shili.addProperty(RDF.type,ont);
Jena在控制台生成的owl本体为:
在上述本体模型图中,“隶属于河南省的市”被定义为枚举类,枚举类同时也是一个集合类,其定义是由列举该类所有成员完成的。此类有一个属性“belongsOfsheng”,值是“河南省”,即表示“隶属于河南省的市”的所有成员所隶属的省份为“河南省”;此外还定义了该类是“市”类的子类。运用owl语言规则,使用Jena在内存中建立上述布尔类的部代码如下: RDFList collection=ontModel.createList(new RDFNode[]{“郑州市”,… ,“开封市”}); EnumeratedClass shi=ontModel.createEnumeratedClass(familyUri+"隶属于河南省的市",collection); 生成的部分owl表述如下: .............. 对于构建的本体,可用推理机检测其一致性并得到额外的隐含信息[10],Jena内含了一个通用规则推理机,该推理机支持RDFS和owl的公理推理和基于自定义规则的推理,推理机可根据内含的前向链、后向链和混合规则的触发机制,对推理进行解释的方式来完成推理。将已生成的本体模型与绑定了公理和规则的推理机进行联合,并在此基础上创建一个信息模型本体,就可以从本体所描述的实例和类中推出额外的信息。其中,混合式规则采用非迭代算法,性能较好。 首先设置自定义推理规则由外部文件读入 (该文件放置于Java项目工程的根目录下),并创建一个通用规则推理机,与自定义规则进行绑定, List GenericRuleReasoner reasoner=new GenericRuleReasoner(rules); 使用传递推理机,以实现 “rdfs:subPropertyOf”和“rdfs:subPropertyOf”属性的传递性和自反性,并设置可以将推理路径记录到日志中,以便在控制台输出证明步骤, reasoner.setOWLTranslation(true);reasoner.setDerivationLogging(true); 使用混合规则引擎触发机制,将内存中的本体模型与推理机进行联合, Resource configuration=ontModel.createResource();configuration.addProperty(ReasonerVocabulary.PROPrule-Mode,"hybrid"); InfModel inf=ModelFactory.createInfModel(reasoner,ontModel); 由本体关系图可知,“禽流感”是“动物”和“人”的一个子类,“动物”和“人”是“疫情疫病及防疫”的子类,“疫情疫病及防疫”是“公共卫生”的子类,“公共卫生”又是“突发事件”的子类,就这样层层迭代。由于owl公理中定义了语义属性“子类”(rdfs:subClassOf) 具有传递性 (Owl:TransitiveProperty), 这样“H7N9”作为“禽流感”类的一个实例,按照本体语义的类属关系,隐含了如下事实:即“H7N9”是“禽流感”、“动物”、“人”、“疫情疫病及防疫”、“公共卫生”和“突发事件”的实例。给出如下查询语句:{“H7N9”RDF.type?x},程序将通过对 x变量的值进行回答来返回查询结果。推理程序的控制台输出如下: 图2 “H7N9”所属类的推导结果Fig.2 Derivation results of the"H7N9"belongs of class 先定义一个枚举类“隶属于郑州市的县或区”,该类的实例取值集合为{金水区、二七区…};为这个类添加新定义属性“belongsOfshi”,值为 “郑州市”;最后定义一个新属性“part of”。对于地理位置的隶属关系,一般认为,如果X在Y的管辖下,那么X就是构成Y的一部分。下面定义如下规则,来证明“金水区是河南省的一部分”这个结论: [rule1:(?x belongsOfshi ?y)(?y belongsOfsheng ?z)->(?x partOf?z)] [rule2:(?x type ?y)(?y belongsOfshi ?z)->(?x belongsOfshi?z)] [rule3:(?x type ?y)(?y belongsOfsheng ?z) ->(?x belongsOfsheng?z)] 由本体定义可知,“金水区”是“隶属于郑州市的县或区”一个枚举实例意味着“金水区”的类型“隶属于郑州市的县或区”,而该类的“belongsOfshi”属性是值是“郑州市”,应用规则2可推导出如下陈述三元组: 结论 1:{“金水区” “belongsOfshi” “郑州市”} 同样,枚举类的定义隐含了“郑州市”是“隶属于河南省的市“类的一个实例,而“隶属于河南省的市”类的“belongsOfsheng”属性值是“河南省”,应用规则2可推导出结论2: 结论 2:{“郑州市” “belongsOfsheng” “河南省”} 结论1和结论2同时又可匹配应用到规则1,推导出结论3: 结论 3:{“金水区” “part of” “河南省”} Jena推理机可通过罗列出所有的匹配步骤来给出证明,代码如下: for(StmtIterator i=inf.listStatements(“金水区”,“part of”,“河南省”);i.hasNext();){ Statement s=i.nextStatement(); for(Iterator id=inf.getDerivation(s);id.hasNext();){ Derivation deriv=(Derivation)id.next(); deriv.printTrace(out,true); } } 控制台输出的推理结果如下。 图3 自定义规则集的实例证明Fig.3 Examples of custom rule sets to prove 上文通过对应急预案库中的预案名称进行分析、归纳和抽象,提出了一个应急预案名称本体图,在此基础上使用了语义网研究应用中的强大工具Jena,将该本体类实例化,生成一个在内存中运行的本体模型;通过给该本体模型创建相应的实例,配置推理机参数、编写推理规则并绑定推理机,在控制台上验证输出了推理结果,挖掘出了本体中的隐含信息。 在此基础上,下一步的工作可将用户输入的关键词信息与该本体的实例进行匹配,并推理关联,最终得到一个进过语义扩展的关键词集合,再将此关键词集合送入关键词检索系统,便能实现基于语义的检索。此文对实现这一目标具有重大的现实意义,并对类似系统的构建提供借鉴,且具有一定的通用性。 [1]张永妹,党德鹏.基于本体的应急平台数据集成的设计与实现[J].计算机应用与软件,2010,27(3):62-64.ZHANG Yong-mei,DANG De-peng.Design and realisation of data integration of emergency platform based on ontology[J].Camputer Applications and Software,2010,27(3):62-64. [2]柴留祥,何丰.基于Jena及其本体推理的研究[J].计算机技术与发展,2011,21(11):117-123.CHAI Liu-xiang,HE Feng.Research on Jena-based and ontology reasoning[J].Computer Technology and Development,2011,21(11):117-123. [3]袁辉,李延香.语义Web环境下文献搜索引擎功能的研究[J].电子设计工程,2013,21(5):12-14.YUAN Hui,LI Yan-xiang.Research on the literature search engine function of semantic Web environment[J].Electronic Design Engineering,2013,21(5):12-14. [4]Miller L,Seaborne A.Three Implementations of SpuishQL:A Simple RDF Query language[C]//Proc.of the 1st International Semantic Web Conference on Lecture Notes in Computer Science Sardinia,Italy:[s.n.],2002:423-435. [5]颜端武,丁晟春.基于语义Web和Jena插件的语义检索系统实验研究[J].信息系统,2006,29(3):349-352.YAN Duan-wu,DING Cheng-chun.Experimental study of semantic retrieval system based on semantic Web and Jena plug-ins[J].Information System,2006,29(3):349-352. [6]邓世鸿,唐世渭,张铭.Ontology研究综述[J].北京大学学报,2002,38(5):730-738.DENG Shi-hong,TANG Shi-wei,ZHANG Ming.Review of Ontology[J].Journal of Peking University,2002,38(5):730-738. [7]谭月辉,肖冰,陈建泅,等.Jena推理机制及应用研究[J].河北省科学院学报,2009,26(4),14-17.TAN Yue-hui,XIAO Bing,CHEN Jian-si,et al.The suvery of Jena's reasoning and applying[J].Journal of the Hebei Academy of Sciences,2009,26(4),14-17. [8]严武军.基于Jena规则推理数字图书馆信息检索系统研究[J].电脑开发与应用,2010,23(2):40-42.YAN Wu-jun.Study of digital library information retrieval system based on Jena[J].Development and Application of Computer,2010,23(2):40-42. [9]王晓东,张合,王红涛.基于Ontology的语义信息检索模型研究[J].计算机工程与设计,2008,29(11):2939-2941.WANG Xiao-dong,ZHANG He,WANG Hong-tao.Semantic information retrieval model based on Ontology[J].Computer Engineering and Design,2008,29(11):2939-2941. [10]刘宁,李冠宇,邵斌.Jena2推理机制的研究[J].微计算机信息.2010(33):173-175.LIU Ning,LI Guan-yu,SHAO Bin.The research of the Jena2 inference mechanism[J].Microcomputer Information,2010(33):173-175.3 基于Jena的本体推理
3.1 Jena推理机的参数配置
3.2 语义公理推理
3.3 基于规则的推理
4 结束语