6.1.3 GGHZ—DL的系统设计
1.GGHZ—DZ系统设计的目标和原则
GGHZ—DL系统设计的目标:以历史领域为突破口,开发一个实现本体基本功能(本体建库,本体检索,本体推理,本体可视化)的跨领域的本体平台。提供一系列相关的通用程序接口。
GGHZ—DL的系统设计原则:
(1)符合J2EE标准的MVC体系结构。
(2)Web开发符合W3C制定的Web标准。
2.符合J2EE标准的GGHZ—DL系统架构
模型-视图-控制(Model-View-Control,MVC)结构是目前最常见的J2EE应用所基于的体系结构,MVC主要适用于交互式的Web应用,尤其是存在大量页面及多次客户访问及数据显示的场合。MVC是交互式应用程序广泛使用的一种体系结构。它有效地在存储和展示数据的对象中区分功能模块以降低它们之间的连接度,这种体系结构将传统的输入、处理和输入模型转化为图形显示的用户交互模型,换言之,是多层次的Web商业应用;MVC体系结构具有三个层面:模型(Mode1)、视图(View)和控制(Controller),每个层面有其各自的功能作用。
GGHZ—DL系统架构符合J2EE标准,并实现了上述MVC的三个层面。GGHZ—DL系统的体系结构如图6-1所示。
图6-1 GGHZ—DL的系统结构图
(1)视图层
这一层主要通过JSP页面为用户提供友好UI接口。
用户检索请求的输入主要依靠表单提交完成。用户可以根据需要选择检索的类型,比如“一般检索”、“属性检索”、“关系检索”等。
语义输出,包括两个部分:一是对于语义类、语义属性以及语义关系的定义(统称为语义定义)的可视化输出;二是对于语义类、语义属性以及语义关系的实例(统称为语义实例)的可视化输出。前者主要应用于语义定义的输出,利用树形结构jtree的API实现。而后者主要应用于语义检索的输出,基本思路是将语义数据转化为一系列的结点和边,然后动态地呈现给用户。
如图6-2所示,系统左上角是按照领域本体概念的层次关系组织而成的树形结构列表。每一种概念后面括号里面的数字表明它在本体库中的实例个数。在系统右边,本体以“结点”的方式显示(“结点”右上的数字表示与之相关的本体的总数),而本体与本体之间的关系以“边”的方式显示。边上的标签表明关系的类型,比如“致东北军将士书”和“西安事变”是“相关资源”的关系。
图6-2 GGHZ—DL系统界面
这一层的设计我们采取ajax框架。ajax框架并不是实际的程序代码,而是一种开发思路。传统Web应用程序不推荐在视图层添加需要安装的控件,尽量让视图层简单、瘦小。这样会导致视图层功能单一,缺乏用户交互功能,用户明显感觉到传统Web应用程序与桌面应用程序在功能上的差距。ajax框架则很好地在这两者之间找到了平衡,既提供比较强大的交互功能,又不需要安装任何插件或控件。原因在于ajax采取了iavascript配合DOM的方式,所有交互功能完全由浏览器普遍支持iavaseript代码完成。比如系统左上角语义定义可视化利用的jtree的API,只用了3KB左右的iavascript代码就完成了树形结构的可视化和相应的交互功能。另外,ajax利用基于iavascript的XmlHttpRequest组件提供xml数据异步传输,它能够实现页面无刷新的数据传输(比如系统中部检索中间结果内容的改变就是页面无刷新方式)。
(2)控制层(Control)
控制层的主要功能是完成页面流(Page Flow)的调度和数据流(Data Flow)的转发控制,其中数据流包括用户输入数据流的语义输出数据流。
控制层的实现,我们采取成熟的Struts框架。Struts对于前台页面流的调度提供了专门的控制器,而对于数据流的转发提供了一系列实用的API和标签库。
(3)模型层(Model)
模型层是整个GGHZ—DL系统的核心,它以EJB的形式提供本体相关的通用程序接口,包括本体建库、本体检索、本体推理。目的是要在Jena提供的数据层接口之上开发一个基础业务逻辑层。由于是采用EJB,所以这个基础业务逻辑层可以用于任何符合J2EE标准的系统,它具有良好的通用性和可移植性。接口对外提供的均为XML格式的处理结果,进一步增强了它的通用性和可移植性。另外,我们提供简单的配置文件策略,用户只要根据具体情况修改配置文件即可完成移植,不需要重新编译。
模型层的EJB主要是会话EJB,并没有实体EJB。因为这一层主要关注的是与本体相关的基础业务逻辑,而对于本体数据持久只提供一个数据持久EJB门户(而它本身也是会话EJB)。事实上GGHZ—DL的数据是本体数据,而并不是传统基于二维表的数据库数据,所以不能够使用传统数据库的O/R映射方式实现数据持久。
模型层核心API:
●本体检索:利用Lucene实现本体索引模块,在Jena基础之上建立多种检索途径(一般检索,属性检索,关系检索)。
●本体推理:基于规则的静态推理,以及对于用户个性化需求的动态推理。
●语义提取:语义提取模块的实现遵循了以下步骤。首先处理自然语言文字,将其分段和分句;针对拆分出的句子,分词和词性标注;在词性标注的基础上选择适当动词作为句子的语义谓词;判断该谓词是否属于语义谓词列表;根据语义谓词来获取相关的语义实体,同时对指示代词进行消解;对于时间和地点维进行提取,并更新语义提取背景。(www.xing528.com)
●本体数据持久:借助Jena实现文件和数据库两种方式持久化本体数据。
(4)本体数据层本体数据对语义类、语义属性、语义关系以及语义规则进行了定义。由于本体描述语言(OWL)可以很好地定义语义实体以及语义实体的关系,在该模块中,我们选择了用OWL进行语义信息描述。
我们以杨光彦、陈明钦和马德茂主编的《国共关系通史》一书作为原始素材进行语义提取,将最终结果转化为OWL格式文件本体数据,从本质上来讲,就是一组OWL文件和一系列推理规则(Rules)文件。GGHZ—DL本体数据层的主要任务就是建立和维护这些文件。目前本体管理工具比较多,我们使用的是Protégé以及OWL插件。我们利用它手工定义了事件、人物、时间、地点以及资源等5类语义实体,语义实体的定义过程遵循以下步骤:
●通过讨论确定语义类、语义属性、语义关系以及传递、对称、相反等规则。
●将讨论结果定义为数据字典,数据字典包括名称及其说明部分。
●在数据字典讨论确定后,通过Protégé OWL插件,由数名研究生手工录入。
●系统层次之间的接口耦合机制。
GGHZ—DL按照MVC划分为上述几个层次。系统层次之间的接口耦合机制指的是它们之间如何进行通信,如何进行数据流传递。也就是说,要通过某些机制使得四个层次很好地衔接在一起,使之成为一个有机的整体,而在这个过程中又要考虑到系统的移植性和灵活性。
视图层和控制层实际上都是在Web服务器(Tomcat)内部,它们之间的通信主要是通过Struts框架来实现。视图层通过httpConnection或者XmlHttpReques向控制层Servlet发送请求,控制层提供的Servlet主要有:
●SearchAction:本体检索初始化;
●SearchResuhlnfAction:含推理的属性匹配检索;
●SearchResuhlnfAction:含推理的关系检索;
●GetlnstancelnfAction:含推理的实例详细信息检索;
●GetOntoAllClassAction:本体类结构检索;
●GetOntoTopClassAction:本体核心类结构及其配置。
控制层通过值对象VO(Value Object)以Struts标签的形式向视图层返回检索数据,实现语义输出。几个主要的值对象如下:
●InstanceBean:实例信息;
●PageBean:分页信息;
●TopClassBean:核心本体信息。
控制层和模型层之间以XML数据格式进行通信。具体来说,就是控制层调用模型层的会话EJB的业务逻辑方法,EJB返回XML形式的业务逻辑处理结果。GGHZ—DL设计目标之一是提供一系列与本体相关的通用程序接口,这对EJB的移植性提出了更高的要求。要保证这种可移植性和通用性,XML无疑是最佳选择。另外一个原因是GGHZ—DL的模型层返回的结果中既包括类似树形结构的本体类结构,又包括本体实例集合这种类似于图结构的数据,而XML恰恰比较适合表达这两种数据结构的数据。以下是用“毛新宇”的“曾祖母”作检索词检索得到的XML结果:
<?xml version=″1.0″encoding=″UTF-8″?>
<OntoSearehResult>
<SlicedKeyword>毛新宇</SlicedKeyword>
<Page current=″1″total=″1″/>
<Count current=″1″countPerPage=″1″totallnstances=″1″/>
<Property name=″曾祖母″value=http://localhost/gghzOntPro/owl/indiviActor.owl#beGGM/>
<Instance name=″文七妹″instanceUri=″http://localhost/ gghzOntPro/owl/indiviActor.owl#文七妹″classUri=″http://localhost/gghzOntPro/owl/indiviActor.owl#IndiviActor″topClassUri=″http://localhost/gghzOntPro/owl/indiviActor.owl#IndiviActor″score= 1.0″>
<Inferlnstance name=″毛新宇″instanceUri=″http://localhost/ gghzOntPro/owl/indiviActor.owl#毛新宇″direction=″from″/>
</Instance>
</OntoSearchResllh>
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。