admin 管理员组

文章数量: 1184232


2024年4月20日发(作者:sql怎么进行加减乘除运算)

维普资讯

电脑知识与技术 。 。。研究开发 

基于XM L的知识集成中间件系统实现 

巫红霞 

(镇江市高等专科学校,江苏镇江212300) 

摘要:基于XML的中间件技术与知识集成相结合.设计了一个基于XML的知识集成中间件系统结构.并详细讨论了系统主要功能 

模块的实现方法。 

关键词:知识集成:中间件系统;XML 

中图分类号:TP311 文献标识码:A 文章编号:1009—3044(2006)29—0137一O3 

WU Hong—xia 

Implementation of A XML-based Knowledge Integration Middleware System 

(Zhenjiang City Co ̄ege,Zhenjiang 212300,China) 

Abstract:The architecture of a XML—based Knowledge Integration Middleware System(KIMS)is designed by exploiting the XML Middle— 

ware technology.Then the implementation of this system is discussed in detail 

Key words:Knowledge Integration;Middleware System;XML 

1引言 

Internet的迅猛发展和基于Web技术的信息服务、知识服务 

的兴起,要求企业应用系统和知识系统能够支持分布式网络处理 

环境和Web环境。XML是一种具有描述数据功能的语言.因此十 

数据源的查询能力。通常为一个数据源生成一个有效的Wrapper 

所必须的信息是使用DTD来描述的.Wrapper规范语言必须与 

DTD保持一致,因此可以考虑用XML作为Wrapper规范语言,当 

然,也可以自己设计规范语言。 

DTD规格说明 来自Med ̄t。r的XlvIL结呆 

分适合作为知识表示语言或作为描述组件及文件格式的表示方 

法。它可以让数据和知识在不同的来源中.根据通用的语法规则 

来处理。而Java是一种面向对象语言,它提供了一个跨平台的方 

案,且Java本身就 生于互联网,因此系统选择Java平台(JVM, 

Java Virtual Machine,Java虚拟机)和Java语言并结合XML进行 

开发,其中Java开发工具选用JBuiler7.0.XML编辑器使用XML— 

SPY。 

2系统开发流程 

面向对象、组件化的软件开发方法是当今软件开发的趋势. 

为了开发一个通用的、具有良好的“即插即用”性的组件化软件. 

就必须采用这种软件开发思想及开发流程。基于这种思想.中间 

件系统实现时将所有的功能都封装在对象当中.并通过继承、重 

载实现对功能的扩展.只提供给用户必要的、简单的接口及部署 

规范,用户使用这些接口就可以得到想要的推理服务.这样就可 

图1 Wrapper生成器与Wrapper 

Wrapper生成器的输出:是一个可执行的Wrapper.该Wrap— 

per能够接受由Wrapper规范语言定义的查询。 

3-2.2内部函数与外部接口 

个Wrapper生成器的主要内部功能包括解析和确认给定 

的规格说明.以及生成相应Wrapper。解析阶段主要是读取规格说 

明并进行解析以确定其是否合法有效,确认阶段则是检查规格说 

明是否与正确的DTD相一致,并将规格说明里出现的信息绑定到 

恰当的内部数据结构。解析和确认阶段可并行执行。 

3.3 Wrappers 

以取得内部复杂、完备而外部通用、简单这一组件化软件的效果。 

整个系统的开发经过以下流程: 

(1)功能分解:通过分析系统的功能需求.对系统进行对象分 

解,进而抽象为类; 

(2)类定义:定义类结构(包括属性与操作); 

(3)接口定义:确定类的接口.传送消息格式等; 

(4)系统具体实现:根据已经确定的类及接口,对系统程序实现。 

3-3.1功能设计 

个Wrapper要实现的功能包括:从一个Mediator得到用 

XQuery书写的查询,将其翻译成能在经过封装的数据源上执行的 

操作.抽取和打包查询结果到一个XML文档.最后将该文档返回 

3系统主要功能模块的实现方法 

3.1 Wrapper组件的实现 

给相应的Mediator。查询是用XQuery的子集书写的.并且受到数 

据源的查询能力的限制。数据源的查询能力在创建Wrapper时得 

信息抽取层的Wrapper组件南两部分组成:Wrapper生成器 

和Wrapper实例(简称为Wrapper)。如图1所示,一个Wrapper位 

于Mediator和一个数据源的中间.它通常为Mediator查询异构信 

息源集合提供一个公共接口。每个Wrapper必须为某个特定的数 

据源订制相应的接口.这个功能是南Wrapper生成器完成的。 

3.2 Wrapper生成器 

知并被写入规格说明。返回的XML文档应符合DTD,该DTD同 

样是在创建Wrapper时获知并写人规格说明。 

3.3.2内部函数与外部接口 

Wrapper主要的内部函数功能是处理给定的查询和将从信息 

源得到的查询结果映射为南Wrapper的规格说明定义的XML格 

3.2.1.功能设计 

Wrapper生成器的输入:是用一种Wrapper规范语言书写的 

式,在Wrapper规格说明中需要明确用于生成Wrapper所必需的 

信息。下面详细介绍这两个函数功能。 

Wrapper的第一个作用是将用户查询转化为能被信息源识别 

规格说明,包括关于将要为之生成Wrapper的数据源的元信息, 

该元信息捕述了如何从一个数据源请求服务以及如何抽取和解 

释从数据源返回的信息。规格说明还必须能够表达如下内容:数 

据源接口、数据模型、从XQuery到数据源本地操作的查询映射、 

收稿日期:2006—04—19 

的查询。XQuery查询翻译采用类似于TSIMMIS中所用的模板方 

法。在该方法中,XQuery查询应与一系列模板翻译器进行匹配。模 

板翻译器描述了如何将XQuery查询映射为信息源的查询,通常 

作者简介:巫红霞(1977一),男,江苏镇江人,助讲,硕士研究生,主要研究方向:数据库、数据仓库、 ̄-N4g掘。 

137 

维普资讯

研究开发・・・・・・ 

情况下,这种映射等价于一个正则表达式。 

Wrapper ̄第二个作用是将查询结果转换成XML格式输出。 

要实现这个功能,需要有如下信息: 

(1)用于描述输出格式的DTD。 

(2)用于描述如何解析从数据源获得的信息的表述,该表述一 

般用XML.DTD或其他语言表达,它应表明如何过滤需要的信息 

以及如何在信息的每个记录间循环。 

(3)从查询结果信息到输出XML格式之间的映射,这种映射 

可用DTD,XML或其他语言描述,它应说明如何将从结果中解析 

出的必要信息映射到由输出的DTD决定的字段。 

3.4接口定义 

3.4.1约束条件 

Wrapper组件的接口只需考虑组件的四个要求: 

(1)作为Wrapper生成器的输入的Wrapper规格说明必须用 

XML或其他规范语言编写,而且必须符合相应的DTD。 

(2)提交给Wrapper的查询必须是XQuery的一个子集。 

(31提交给Wrapper的查询不能超过被封装的数据源的查询 

能力。 

(4)Wrapper返回的结果是XML格式的且遵照DTD 

3.4.2接口定义 

module WrapperComponent{ 

interface Wrapper{ 

XML issueQuery(in XQuery query) 

raises(MalformedQueryException, 

S0urceAccessExcepti0n); 

}; 

interface WrapperGenerator{ 

Wrapper generateWrapper(in XML speciifcation) 

raises(0verspecifiedExcepti0n,UnderspeciifedException); 

}; 

}; 

3.4.3类定义 

需要为Wrapper定义若干类,这些类封装在wrapper包 

(package)中,下面主要介绍该包中的三个类ImportExportWrap- 

per,XMLWrapper和WebXMLWrapper。其继承关系如下: 

(1)抽象类ImportExportWrapper 

该类主要为输入,输出过滤器提供基础,每个过滤器都必须从 

该类继承并实现其抽象方法。过滤器由输入,输出对象自动调用。 

其部分定义如下: 

public abstract class ImportExportWrapper extends java.1ang. 

Object{ 

protected java.io.InputStream inputstream;,/声明输入流对象 

protected java.io.OnputStream onputstream;,/声明输出流对象 

protected iava.util.Hashtable options; 

,/声明该包装器的输入,输出选项 

public ImportExportWrapper(); //输入输出包装器的构造器 

public boolean canlmport0;//定义方法用于判断是否能输入 

public boolean canExport0;//定义方法用于判断是否能输出 

public void exportStart0 throws java.io.IOException; 

,/定义方法用于启动输出 

public void exportEnd0 throws java.io.IOException; 

,/定义方法用于启动输入 

public void close0 throws java.io.IOException; 

,/定义方法用于关闭包装器 

……

} 

f21子类XMLWrapper 

该类从ImportExportWrapper继承而来,主要为XML提供输 

入输出函数功能。该类继承了其父类ImportExportWrapper的域声 

明和一些方法.定义如下: 

public class XMLWrapper extends ImportExportWrapper{ 

protected java.1ang.Stirng encoding; 

public static final java.1ang.Stirng DEFAULT_ENCODING; 

,/缺省字符编码 

1 38 电脑知识与技术 

电脑知识与技术 

public static ifnal java.1ang.Stirng ENC_TEXT; 

,/编码类型,值为“text” 

public static ifnal java.1ang.String ENC—URL; 

,/编码类型.值为“url” 

public XMLWrapper0;//XMLWrapper构造器 

……

} 

(3)子类WebXMLWrapper 

该类从WebXMLWrapper继承而来.主要用于使用H1] 输 

出XML数据。其特点包括:媒体数据以URL形式输出;文本格式 

需为XML格式(即必须包含标签);为了能够处理HTML文档,不 

再定义DTD。该类继承了其父类XMLWrapper的域声明和一些方 

法.部分定义如下: 

public class WebXMLWrapper extends XMLWrapper{ 

public WebXMLWrapper0://WebXMLWrapper构造器, 

用于创建WebXMLWrapper实例 

public void exportStart0 throws java.io.1OException; 

,/定义 疗法重载了XMLWrapper中的同名方法 

……

} 

3.5 XML知识库的构建 

在知识库中表示事实的那一部分其实就是数据库,因此在这 

种意义上说,知识库的内容包含了数据库。不过在实现时往往是 

把数据库从知识库中分离出来,单独形成一个独立的数据库。在 

对它的处理上也是独立地由数据库管理系统来实现,对其它知识 

专门设一个知识库管理系统和一个称为“推理引擎”的机构来实 

现。然后在它们和数据库之间建立接口,实现互相调用。 

将整个推理引擎实现成一个Java类包,用Servlets与外部应 

用系统进行数据交换;内部的推理核心使用无状态的会话EJB来 

实现,这样可以使多个用户同时使用,满足了基于Web应用程序 

多用户并发的特性:使用实体EJB通过JDBC访问知识库中的相 

关数据。整个推理引擎的结构如图2: 

图2推理引擎结构图 

在这个结构中接收器用Servlet实现,即最终实现为一组 

Servlet类,它的基本功能是给用户提供使用这个推理引擎的服 

务,这些服务是基于HTrP协议的请求,应答模式的,用户只需在 

自己的HTML、ASP、JSP网页或其它的客户端应用程序中按照 

HrITrP协议请求这个Servlet类并传人相应的输人事实数据,便可 

以启动这个推理引擎,推理引擎经过推理得到结论,通过Servlet 

中的Response对象发送给客户端。 

推理核心部分需构建一个知识库类库,这个类库可以表示出 

整个基于产生式规则的知识库的结构,将这个知识库类库用一个 

无状态的会话EJB进行封装,一方面它可以定义一套完备的接口 

供接收器Servlets启动推理服务,另一方面它还需与代表知识库 

的实体EJB进行数据交换:访问事实、规则,存取临时数据等等。 

知识集成中间件系统最主要的工作是知识的获取和对知识 

的利用.这决定了它需要依赖于数据库中丰富的数据。从具体的 

收集过程来看.首先需要系统的使用者向系统提出一个问题,然 

后根据系统对Internet资源的记忆,该问题被自动派发到与主题 

相关的机器上,收到问题的机器对本机所拥有的数据、实例进行 

挖掘、判断和推理,找出有用数据和答案,并以XML格式发回来。 

维普资讯

电脑知识与技术 

提出问题的机器就是通过这种方式,最终得到对问题较为满意的 

答案。在此过程中,系统可以通过用户对所搜索结果的反应,分析 

各种站点的可信度和各种搜索结果的重要程度,并将这些分析结 

果更新到自己的系统中,这也就实现了系统的自我学习过程。 

4结束语 

本章探讨了利用面向对象和组件化的开发方法具体实现基 

于XML的知识集成中间件系统,主要进行了Wrapper组件的开 

发,XML知识库的构建。 

参考文献: 

【1]( ̄)Mark Graves著,尹志军等译.XML数据库设计【M].北京 

(上接第130页) 

所以.IME窗El是为所有的输入法共享的一个类。UI窗El是一个 

具体的输入法(如全拼输入法1总控窗口,它是IME窗口的一个子 

窗El。它的作用是接收由IMM和应用程序发送来的消息,并根据 

消息进行相应的处理。另外,它还创建状态窗El、输入窗El和候选 

窗El,并保存这些窗El的基本数据。状态窗El用于显示输入法的 

状态,如中西文状态、输入法名称、半角/全角、中文/西文标点符号 

和软键盘等信息 输入窗口用于显示输入的输入码、部分结果字 

符串、错误信息等提示内容。候选窗口用于显示当前输入码对应 

的重码,供用户选择。 

3纳西象形文拼音输入法的设计 

3.1主要功能函数设计 

通过对微软IME技术的分析可以发现,Windows下IME的设 

计,就是为用户接口和转换接El编写代码,完成IME界面的表示和 

输入码到机内码的转换T作.其核心函数为:ImeProcessKey和Ime— 

ToAsciiEx。通过这两个函数,才能完成把象形文字输入计算机。 

3.1.1 ImeProcessKey函数的功能及接El格式 

BOOL lmeProcessKey( //处理应用程序传人的所有击键事 

件,监测是否是当前输入法 

||既需甑 

HIMC hIMC. ,/应用程序句柄 

UINT uVirKey //需处理的虚键 

DWORD 1Param. //击键消息参数 

CONST LPBYTE lpbKeyState//当前键盘状态(256字节) 

) 

如果此键是该输入法需要的.则返回TRUE.否则为FALSE 

只有返回true的击键.IME才去处理 

3.1.2 ImeToAsciiEx函数的功能及接口格式 

UINT ImeToAsciiExf //转换编码成文字(串) 

UINT uVirKey. //虚键 

UINT uScanCode //扫描码 

CONST LPBYTE lpbKeyState.//用户定义的键盘状态 

LPDWORD lpdwTransBuf, //转换后的数据存放区 

UINT fuState. //活动菜单标志 

HIMC hIMC //当前的应用程序句柄 

) 

返回:返回值表示有几个消息,可理解为:本编码对应的文字 

串有几个文字组成(当然,这并不相等)。 

3.2码表文件的设计 

目前汉语拼音在国内具有普遍的应用,许多计算机用户都使用 

汉语拼音输入法来输入汉字。如果让纳西象形文字汉语意义的拼音 

码和象形文字一一对应起来,建立码表并制作象形文拼音输入法, 

可以在一定程度上方便纳西象形文字的输入、处理、二次开发等工 

作。对于数量较少的纳西象形文字来说,此种方法简便易行。 

但是纳西象形字共有2000多个.其中难免有多个纳西字对应 

同一个拼音码的情况。再考虑到汉语中大量同音字词的存在.使用 

者希望仅南拼音码辨识出对应纳西文字的准确意义并非易事 

这里采用加大码表冗余度的二次映射方式来保证输入法的 

准确性和方便性。码表原文件是一个扩展名为TXT的文本文件, 

它包含了目标输入法的全部的特征信息和编码规则信息,按照 

“文字字串+拼音编码”格式编写。在编写码表时,让同一拼音码先 

。。。。研究开发 

机械工业 版社.2002. 

『2]McLaughlin,B.著,孙兆林,汪东 王鹏,译.JavaTM与XML 

M1.北京:中国电力出版礼,2001. 

31陈锦辉,王景皓.XML与JAVA程序设计大全 M1.北京:中国 

铁道出版社,2002. 

41张荣进,陈遵德.用XML构造法律知识库系统lJ1.贵州工业 

大学学报(自然科学版) 双月刊,2002年6月,第31卷,第3期(总第 

116期1. 

51李克曼,白庆华.基于XML知识管理系统的研究lJ1.计算机 

与现代化.2001.3. 

61徐周,黄上腾.基于XML实现数据库间信息交换的方法IJ】. 

计算机工程,2001.4(27):4. 

和汉字对应,再和纳西字对应输入者希望输入某同定汉语意义 

的纳西字时,先找到这一字的×t应汉语意义,再选择后一个相邻 

的纳西字与之映射,即可准确无误地完成输入。选择码表中的四 

项信息举例如下: 

东dong 

2 dong 

冬dong 

盘dong 

其中,纳西字“2”与汉字“东”对应,纳西字“盘”则对应于 

汉字“冬”。 

4纳西象形文拼音输入法的实现 

微纳西象形文拼音输入法在实现上采用MS VC++6.0及 

Windows驱动程序工具包DDK进行开发。将编写的字库、输入法 

在系统安装、注册后,即可在系统输入法管理器中调用输入法,在 

任意文本编辑器中调出输入法,选择相应的字体后,即可纳拼音 

输入的规则输入象形文字。以Word 2000为例,效果如图3所示: 

图3 Word2000中应用纳西象形文拼音输入法 

5结论 

从纳西象形文拼音输入法的使用效果来看.在Windows环境 

中采用拼音输入象形文字的方法是完全可行的。与其它少数民族 

文字计算机化及输入法相对照,本文提出的纳西象形文拼音输入 

法具有以下优点:用微软IME技术来实现,无需单独外挂系统平 

台;直接从输入法管理器中调用输入法:任意文字编辑器均可;通 

用性强,适用任何Windows系统。 

本文提出的纳西象形文拼音输入法解决方案和实际应用系 

统,可广泛应用于少数民族聚居区和相关学术研究领域.方便了 

对纳西象形文字的整理和传播。 

参考文献: 

[11李霖灿纳西族象形标音文字字典『M1.昆明:云南民族出版 

社.2000.08. 

『21李培峰,朱巧明.Windows95/98/NT平台多文种IME的设计 

技术lJ].计算机工程与科学,2000,22(4):67—70. 

[3]Microsoft.Win32 Multilingual IME Overview for IME Devel— 

opment.1998:70—80. 

[4]Microsoft.MSDN Library Visual Studio6.0.1998. 

[5]Microsoft.Win32 Multilingual IME Application Programming 

Interface,1998. 

139 


本文标签: 系统 输入法 查询 信息 输入