一个知识库系统与外部数据源接口的研究.doc
《一个知识库系统与外部数据源接口的研究.doc》由会员分享,可在线阅读,更多相关《一个知识库系统与外部数据源接口的研究.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一个知识库系统与外部数据源接口的研究一个知识库系统与外部数据源接口的研究 马金平 邢筠 (青岛大学商学院管理系, 266071) 摘要 本文论述了一个知识库系统与外部数据源接口的描述定义和程序实现方法。 关键词 知识库系统 数据库 数据源 1 引言 随着智能决策支持系统应用领域的不断扩大原来由模型库系统完成的部分定量分析任务将归并到知识库系统中。即要求知识库中不仅有专家的定性知识而且也应该具有计算知识形成一个广义的知识库系统。在广义知识库系统中要求推理机不仅要具有一般的推理功能而且能够从外部数据源获取数据对数学模型进行求解的功能。如何从外部数据源获取数据是使推理机具有模型求解功能的关键技术之一
2、。笔者在生产成本管理知识库系统的开发过程中使用Visual c+6.0 成功地研究开发了该知识库系统与外部数据源的接口拓宽了推理机的功能收到了比较好的效果。外部数据源主要是指文本数据文件、数据库和Excel电子表。由于受篇幅限制本文主要针对知识库系统与文本数据文件、数据库接口的设计实现问题进行讨论。知识库系统与Excel电子表的接口问题笔者将另撰文介绍。 2 接口的描述定义 在生产成本管理知识库中以知识数据块的形式对外部数据源进行如下描述定义。 2.1 文本数据文件接口的定义格式 DATAFILE /可以定义多个文件的接口。 =OPEN()/在一个接口中可以定义任意个输入数据文件。 =READ
3、(行号列号)/可以有多行。 | /或 WITH =READ(行号列号) /可以有多行。 END WITH END DATAFILE 2.2数据库接口的定义格式 DATABASE /在一个知识库中可以定义多个这样的接口 CONNECTION = /可以同时定义多个连接对象 INPUTTABLE /每个接口只能定义一个输入块。 RECORDSET =CONNECTION /可以定义多个记录集对象名。 变量=.FIELDS(字段序号)/可以有多行 | /或 WITH ADO记录集对象名 = .FIELDS(字段序号) /可以有多行 END WITH END INPUTTABLE OUTPUTTABL
4、E /定义与存储结果数据表的接口每个接口最多可以定义一个输出块。 RECORDSET =; .FIELDS(字段序号)=变量; | /或 WITH FIELDS(变量序号)=; END WITH END OUTPUTTABLE END DATABASE 在上述格式中变量是指计算表达式及模型中需要用户提供值的参数或存储表达式及模型的求解结果。“/”表示注释。此外笔者在生产成本管理知识库系统开发工具中开发了知识库与外部数据源接口定义的辅助工具用户利用这些工具可以十分方便地完成接口的描述定义工作。 3 接口程序的实现 在推理机运行之前首先将知识库读入内存并且转换成计算机的内部表现形式。接口程序再根据
5、知识库与外部数据源接口的定义将外部数据源的数据读入内存缓冲区后最后在进行推理。 为了便于查找知识库与外部数据源接口的定义语句首先定义如下数据结构: struct Liext /存储知识库语句行文本。 CString Text;/存储知识库语句行文本 struct liext _pNextLine;/下一行指针 _pLiextHead; /知识库语句首行指针。 struct DataObject /知识数据块对象索引表 CString ObjecType;/对象类型 struct Liext _pTextLine;/对象首行在Liext中的指针 struct DataObject _pNextO
6、bject;/指向下一个知识数据块对象。 struct KnowClsName /存储知识类名称定义语句文本 CString ClsName;/知识类名称 struct KnowClsName _pNextCls;/下知识类名称的指针 struct Lliext _pTextLine;/知识类名称在Liext中的指针 struct DataObject _pFirstObject;/指向知识类中第一个知识数据块对象的指针 struct Method _pFirstMethod;/指向知识类中第一个知识方法的指针 _pClsHead;/指向知识类的头指针。 根据上述数据结构的定义接口程序总体实现
7、的程序流程如图1所示。在图1中当pDo-ObjectType等于“DATAFILE“或“DATABASE”或“E_CEL”时系统分别调用从文本数据文件、数据库和E_CEL电子表获取数据的接口函数。其中:文本数据文件接口函数的程序流程如图2所示数据库接口函数的程序流程如图3所示。“OTHER”表示知识库中的其它知识数据块对象。 开始pClspClsHead 终止 pDo=pClspFirstObject pCls=NULL?? No Yes pDoObjectType=? pDo=NULL? Yes No pCls=pClspNextCls A B C DATABASE E_CEL OTHER
8、DATAFILE pDo=pDopNextObject 图1 接口程序总体实现的程序流程 3.1 数据文件接口函数程序的实现 为了存储从外部数据文件获取的数据定义如下数据结构: struct DataFileBuffer /数据文件缓冲区 CString VariableName;/变量名称 double DataValue;/从文本文件获取的变量值 struct DataBuffer _pNextPata;/指向下一个变量的指针 _pDataBufferHead,_pDataBufferTail;/缓冲区的头指针和尾指针。 据此绘出从外部数据文件获取数据的接口函数的程序流程如图2。由于受篇幅
9、限制图2仅给出了程序的主要算法流程。在编程时还必须考虑具体实现的细节例如:如何从一个数据行中确定数据项数量找到Col列;如何创建DataFileBuffer的链表结构等。 3.2 数据库接口函数程序的实现 根据上述知识库与数据库接口的定义格式以及知识库内部存储结构可以绘制出数据库接口函数程序总体流程如图3所示。其中:D表示输入数据表接口程序流程如图4所示;E表示输出数据表接口程序流程。 3.2.1 输入数据表接口程序的实现 为了存储从输入数据表获取的数据定义数据结构如下: struct InputDataBuffer /存储从数据库获得的数据每一个变量建立一个数据区 _variant_t Da
10、taValue;/可以存储不同类型的数据; struct InputDataBuffer _pNextDataValue;; struct PremiseVariableBuffer /前提变量(自变量)集区,接受来自数据库的数据 CString VariableName; struct InputDataBuffer _pInputDataBufferHead;/指向数据区头指针。 struct PremiseVariableBuffer _pNextVariable;/指向下一个变量。 _pPremiseVariableBufferHead,pPremiseVariableBufferTa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 知识库 系统 外部 数据源 接口 研究
限制150内