首页 理论教育 本体分子建库工具的分析介绍

本体分子建库工具的分析介绍

时间:2023-02-18 理论教育 版权反馈
【摘要】:同样,本体分子建库也需要这样的IDE工具来帮助领域专家建本体分子库。而实现层是针对具体的本体分子存储方案的建库工具集合。这种转换会忽略掉原来本体分子库中的动态知识。

本体分子建库工具的分析介绍

5.3.2 本体分子建库工具

本体库的构建有一批IDE工具支持,如Protégé,NeOn,KAON2,Altova SemanticWorks等。这些工具大大减轻了手工本体建库的工作难度,使本体建库成为一般领域专家能够胜任的工作。这些工具中有一些是商业软件,如Altova SemanticWorks等,还有一些是免费开源的工具,如Protégé,NeOn等。这些开源工具有的还提供plugin机制,可以针对具体功能需要进行扩展。

同样,本体分子建库也需要这样的IDE工具来帮助领域专家建本体分子库。但是由于本体分子是笔者提出的一个全新理论,目前国内外没有任何可借鉴的工具可供参考。因此笔者针对该理论开发了一个本体分子建库的工具——OMProtegePlugin。这个工具本质上是一个Protégé插件〔1〕,它通过扩展ProtegeOWLPlugin的方式来提供本体分子建库的功能。采取Protégé插件的方式是基于以下考虑:

●Protégé是一个基于Java Swing的开源工具,可以基于它做二次开发

●Protégé提供便捷的插件扩展和管理机制。目前已经有大批Protégé插件可以证明它的框架的实用性。

●本体分子库中包含本体库静态三元组的部分,所以本体分子建库工具必须包含原有本体库的建库功能。而Protégé插件的形式,既能够保留原有Protégé的功能(如修改Class,添加Instance),又能够通过插件扩展功能,也就是管理动态知识的功能。

如图5-2所示,OMProtegePlugin的体系结构分为两层:抽象层(Abstract Layer)和实现层(Implement Layer)。抽象层是关于本体分子建库一些通用功能的集合,它主要包括:

img59

图5-2 OMProtegePlugin体系结构图

●model包:本体分子库数据结构、事件机制。

●ui包:本体分子可视化建库widget,如slotwidget[2]和tabwidget[3]等。

而实现层是针对具体的本体分子存储方案的建库工具集合。在OMProtegePlugin的1.0版本中,实现层提供AllegroGraph存储方案的相关建库工具。也就是说本体分子存储在AllegroGraph[4]服务器中,而管理本体分子库的工具的具体代码是写在实现层的allegro graph包中。如图5-3所示,allegrograph包中主要包括model数据结构,parser本体分子解析等。

这种分为抽象层和实现层的好处在于提供了一种通用的本体分

img60

图5-3 OMProtegePlugin包结构图

子建库工具框架。在这个框架下,所有通用的功能都写在抽象层,可以被实现层共享使用。而实现层并没有定死绑定到某一个具体本体分子存储方案上,它可以通过继承抽象层的方式添加其他本体分子存储方案的实现层工具。如图5-2所示,除了AllegroGraph存储之外,还可以添加Oracle,NG4J[5]等其他存储方案。而这些新的实现层工具的开发,也只需要开发通用层以外的实现层的特殊的对接机制和存储机制。这正如JDBC标准和JDBC驱动一样:具体的数据库可以有很多种,如MySQL,Oracle,DB2等,每一种数据库也可以有多种驱动程序,但是操作数据库的方式都是JDBC标准,开发人员写的使用数据库的代码都是一样的(除了驱动程序类名和连接字符串)。要开发新的数据库驱动程序,只需要按照JDBC标准添加新的实现就行了。

根据本体分子建库的要求,OMProtegePlugin提供了如下管理本体分子库的功能:

1.本体分子持久化

Protégé提供两种RDF本体持久化方案,文件方式和数据库方式。ProtegeOWLPlugin作为OWL管理的插件,也提供文件方式和数据库方式两种持久化方案。但是它们都只能持久化RDF/OWL这样的静态三元组,对于本体分子库中的动态知识,还需要建立新的持久化方案。

OMProtegePlugin在1.0版本中,实现层选用AllegroGraph作为存储服务器,提供本体分子库的存储。针对这个存储方案,笔者开发了基于AllegroGraph服务器的backend插件[6]——AllegroGraph KnowledgeBaseFactory。如图5-4所示,用户在选择持久化方案的时候,可以选择AllegroGraph KB这种backend来建立本体分子库。

img61

图5-4 AllegroGraphKnowledgeBaseFactory图

2.本体分子建库工程管理

如图5-5所示,本体分子建库工程的设置包括:Allegraph服务器地址端口号、本体分子库目录和本体分子库名称。这种管理是通过AllegroGraphCreateProjectPlugin实现的,它本质上是Protégé提供的ProjectPlugin[7]。另外,OMProtegePlugin在1.0版本中,提供了本体分子建库工程与其他普通本体库工程之间的转换: CreateAllegroGraph FromFileProjectPlugin,将owl file工程转换成AllegroGraph本体分子建库工程;Convert Project to Format菜单,将AllegroGraph本体分子建库工程转换成其他普通本体库工程(如file、database等)。这种转换会忽略掉原来本体分子库中的动态知识。

img62

(www.xing528.com)

图5-5 本体分子工程管理图

3.动态三元组的管理

动态三元组的管理的基础是动态维度的管理,例如添加时间维度,可以描述某个事件在不同年度的变化。如图5-6所示,在class browser中通过继承Dimension类,创建新的动态时间维度: TimeDimension。这个时间维度有三个实例,1983年、1990年以及EmptyDimensionContainer。其中EmptyDimensionContainer指的是空约束的任何时间状态。

img63

图5-6 动态时间的管理图

建立好了动态时间,就可以使用这些时间实例创建动态三元组。假如,想要描述“GE公司是一个汽车厂,它在1983年的生产量为5 000辆,而到了1990年产量上升为8 000辆”。如图5-7所示,首先新建CarFactory类,添加Products属性表示它的年产量(数据类型为float),然后新建CarFactory的实例GE。在GE的Products属性slotwidget里面,填写了两个数字值:5 000辆对应的动态时间是1983年,8 000辆对应的动态时间是1990年。

img64

图5-7 动态三元组的建立图

这个slotwidget不是普通的MultiLiteralWidget,它是笔者针对本体分子建库而开发的DimensionalMultiLiteralWidget插件。它与普通MultiLiteralWidget相比,多了一列DimensionContainer来放置动态维度(如动态时间)。添加了动态时间的三元组,从普通的静态三元组变成动态三元组,为本体分子、核子和离子的建立提供基础。值得注意的是,DimensionalMultiLiteralWidget所在的层是抽象层,它不依赖具体的存储方案的变化而变化,可以重复使用。也就是说,如果本体分子服务器不再是AllegroGraph,而换成其他的如Oracle,Mysql等,DimensionalMultiLiteralWidget的使用完全不受影响,而且不需要任何修改就可以直接使用。

4.核子和离子的管理

本体分子核子存放的是本体分子不变的知识,离子存放的是本体分子变化的知识。这些知识都是指的动态三元组。图5-8展示了如何将动态三元组添加到本体分子的核子或离子中去。由于核子和离子都是DGraph的实例,首先新建一个OuterGraph_1983这个实例,它实质上是GE的1983年本体分子的离子。这个离子存放的是动态知识,而且动态时间规定在1983年,所以对于OuterGraph_1983动态维度属性添加了DimensionContainer_1983来作约束。

img65

图5-8 核子和离子的管理图

在OuterGraph_1983这个离子里添加动态三元组之前,首先要选择符合条件的动态三元组。点击图5-8中的hasDStatements属性的添加按钮之后,出现图5-9搜索动态三元组的UI界面。通过这个界面,用户可以设置一些过滤条件。如图5-9所示,过滤条件为“时间维度为1983年,CarFactory类,属性Products的属性值超过0的动态三元组”。这个过滤条件正是OuterGraph_1983离子中动态三元组的条件。用户点击Search按钮,结果找到一个动态三元组,它表示GE公司1983年产量为5 000辆汽车。用户再点击OK按钮,可以将这个动态三元组添加到OuterGraph_1983离子中,出现图5-8所示的hasDStatements属性值列表。

img66

图5-9 选择动态三元组图

值得注意的是,选择动态三元组时如果时间维度与离子的时间维度不符合(包括不相等或不兼容),那么即使点击了OK按钮,这个动态三元组也不会添加到离子中去。这就是OMProtegePlugin对动态知识的控制的一种方式,避免产生逻辑错误

如图5-8所示,hasDStatements属性的UI接口,也是笔者开发的一个slotwidget:DGraphHasDimensionsSlotWidget。它能将动态三元组的subject,property,object和DimensionContainer通过列表的方式展现出来,并通过图5-9所示的UI接口来搜索和添加新的动态三元组。

5.本体分子的管理

由于本体分子OntologyMolecule本质上是一个OWL class,所以它的管理和其他普通OWL class的管理方式一样,故本文不再赘述。如图5-10所示,将OuterGraph_1983离子添加到GE_1983本体分子的hasOuterGraph属性中去。添加、删除核子到本体分子也是一样的操作。

img67

图5-10 本体分子的管理图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈