一个知识库系统与外部数据源接口的研究

上传人:平*** 文档编号:12848017 上传时间:2017-10-21 格式:DOC 页数:7 大小:92.91KB
返回 下载 相关 举报
一个知识库系统与外部数据源接口的研究_第1页
第1页 / 共7页
一个知识库系统与外部数据源接口的研究_第2页
第2页 / 共7页
一个知识库系统与外部数据源接口的研究_第3页
第3页 / 共7页
一个知识库系统与外部数据源接口的研究_第4页
第4页 / 共7页
一个知识库系统与外部数据源接口的研究_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《一个知识库系统与外部数据源接口的研究》由会员分享,可在线阅读,更多相关《一个知识库系统与外部数据源接口的研究(7页珍藏版)》请在金锄头文库上搜索。

1、管理科学与系统科学研究新进展第 6 届全国青年管理科学与系统科学学术会议论文集 大连337一个知识库系统与外部数据源接口的研究马金平 邢筠(青岛大学商学院管理系, 266071)摘要 本文论述了一个知识库系统与外部数据源接口的描述定义和程序实现方法。关键词 知识库系统 数据库 数据源1 引言随着智能决策支持系统应用领域的不断扩大,原来由模型库系统完成的部分定量分析任务,将归并到知识库系统中。即要求知识库中,不仅有专家的定性知识,而且也应该具有计算知识,形成一个广义的知识库系统。在广义知识库系统中,要求推理机不仅要具有一般的推理功能,而且能够从外部数据源获取数据,对数学模型进行求解的功能。如何从

2、外部数据源获取数据,是使推理机具有模型求解功能的关键技术之一。笔者在生产成本管理知识库系统的开发过程中,使用 Visual c+6.0 成功地研究开发了该知识库系统与外部数据源的接口,拓宽了推理机的功能,收到了比较好的效果。外部数据源主要是指文本数据文件、数据库和 Excel 电子表。由于受篇幅限制,本文主要针对知识库系统与文本数据文件、数据库接口的设计实现问题进行讨论。知识库系统与 Excel 电子表的接口问题,笔者将另撰文介绍。2 接口的描述定义在生产成本管理知识库中,以知识数据块的形式对外部数据源进行如下描述定义。2.1 文本数据文件接口的定义格式DATAFILE /可以定义多个文件的接

3、口。=OPEN ()/在一个接口中,可以定义任意个输入数据文件。 =READ(,行号,列号)/可以有多行。| /或 WITH =READ(行号,列号) /可以有多行。END WITH END DATAFILE 2.2 数据库接口的定义格式DATABASE /在一个知识库中可以定义多个这样的接口CONNECTION = /可以同时定义多个连接对象管理科学与系统科学研究新进展第 6 届全国青年管理科学与系统科学学术会议论文集 大连338INPUTTABLE /每个接口只能定义一个输入块。RECORDSET =,CONNECTION /可以定义多个记录集对象名。变量=.FIELDS(字段序号)/可以

4、有多行| /或WITH ADO 记录集对象名= .FIELDS(字段序号) /可以有多行END WITHEND INPUTTABLEOUTPUTTABLE /定义与存储结果数据表的接口,每个接口最多可以定义一个输出块。RECORDSET =,; .FIELDS(字段序号)=变量 ;| /或WITH FIELDS(变量序号)=;END WITHEND OUTPUTTABLEEND DATABASE在上述格式中, 变量是指计算表达式及模型中需要用户提供值的参数,或存储表达式及模型的求解结果。 “/”表示注释。此外,笔者在生产成本管理知识库系统开发工具中,开发了知识库与外部数据源接口定义的辅助工具,

5、用户利用这些工具可以十分方便地完成接口的描述定义工作。3 接口程序的实现在推理机运行之前,首先将知识库读入内存,并且转换成计算机的内部表现形式。接口程序再根据知识库与外部数据源接口的定义,将外部数据源的数据读入内存缓冲区后,最后在进行推理。为了便于查找知识库与外部数据源接口的定义语句,首先定义如下数据结构:struct LineText /存储知识库语句行文本。 CString Text;/存储知识库语句行文本struct linetext *pNextLine;/下一行指针 *pLineTextHead; /知识库语句首行指针。struct DataObject /知识数据块对象索引表 CS

6、tring ObjecType;/对象类型struct LineText *pTextLine;/对象首行在 LineText 中的指针struct DataObject *pNextObject;/指向下一个知识数据块对象。struct KnowClsName /存储知识类名称定义语句文本 CString ClsName;/知识类名称管理科学与系统科学研究新进展第 6 届全国青年管理科学与系统科学学术会议论文集 大连339终止struct KnowClsName *pNextCls;/下知识类名称的指针struct LlineText *pTextLine;/知识类名称在 LineText

7、中的指针struct DataObject *pFirstObject;/指向知识类中第一个知识数据块对象的指针struct Method *pFirstMethod;/指向知识类中第一个知识方法的指针*pClsHead;/ 指向知识类的头指针。根据上述数据结构的定义,接口程序总体实现的程序流程如图 1 所示。在图 1 中,当pDo-ObjectType 等于“DATAFILE“或“DATABASE” 或“EXCEL”时,系统分别调用从文本数据文件、数据库和 EXCEL 电子表获取数据的接口函数。其中:文本数据文件接口函数的程序流程如图 2 所示,数据库接口函数的程序流程如图 3 所示。 “O

8、THER”表示知识库中的其它知识数据块对象。No Yes Yes NoDATABASE EXCEL OTHERDATAFILE图 1 接口程序总体实现的程序流程3.1 数据文件接口函数程序的实现为了存储从外部数据文件获取的数据,定义如下数据结构:struct DataFileBuffer /数据文件缓冲区 CString VariableName;/变量名称double DataValue;/从文本文件获取的变量值struct DataBuffer *pNextPata;/指向下一个变量的指针*pDataBufferHead,*pDataBufferTail;/缓冲区的头指针和尾指针。据此,绘

9、出从外部数据文件获取数据的接口函数的程序流程如图 2。由于受篇幅限制,图 2 仅给出了程序的主要算法流程。在编程时,还必须考虑具体实现的细节,例如:如何从一个数据行中,确定数据项数量,找到 Col 列;如何创建 DataFileBuffer 的链表结构等。3.2 数据库接口函数程序的实现 根据上述知识库与数据库接口的定义格式以及知识库内部存储结构,可以绘制出数据库接口函数程序总体流程如图 3 所示。其中:D 表示输入数据表接口程序流程,如图 4 所开始 pClspClsHeadpCls=NULL??pDo=pClspFirstObjectpDo=NULL?pCls=pClspNextClsA

10、B CpDo=pDopNextObjectpDoObjectType=?管理科学与系统科学研究新进展第 6 届全国青年管理科学与系统科学学术会议论文集 大连340示;E 表示输出数据表接口程序流程。3.2.1 输入数据表接口程序的实现为了存储从输入数据表获取的数据,定义数据结构如下: struct InputDataBuffer /存储从数据库获得的数据,每一个变量建立一个数据区 _variant_t DataValue;/可以存储不同类型的数据;struct InputDataBuffer *pNextDataValue;;struct PremiseVariableBuffer /前提变量

11、(自变量)集区,接受来自数据库的数据 CString VariableName;struct InputDataBuffer *pInputDataBufferHead;/指向数据区头指针。struct PremiseVariableBuffer *pNextVariable;/指向下一个变量。*pPremiseVariableBufferHead,pPremiseVariableBufferTail;据此,可以绘制出知识库从外部数据库获取数据的接口程序流程如图 4 所示。 No YesNoYes Yes Yes No Yes No No YesNo Yes No Yes图 2 从外部数据文件

12、获取数据的接口函数程序流程A定义变量、初始化 pTL1=pDopTextLinepTL1=pTL1pNextLinepTL1 Text=”END DATAFILE” ?pTL2=pTL1;nFind1=pTL2-Text 。Find(”OPEN” )找出文件名称、文件句柄名称,并且打开数据文件(设对象名为 MyFile) 。Ptl2pNextLinePtl2-Text=”END DATAFILE”?nfind1-1?在 Ptl2-Text 中是否存在“READ”和文件句柄名称?pTL2pNextLinepTL1=pTL1-pNextLine返回在 Ptl2-Text 中,找出变量名称 Vari

13、ableName,行号(Row)和列号(Col);MyFileSeekToBegin();Bool flag=MyFileReadString(mDataLine);设 MyFile 当前行 nLine=1;Flag=False?flag=MyFile.ReadStirng(mDataLine);nLine+;Row=nLine? 在 mDataLine 中找 Col 列找到否?将数据和 VariableName 采用DataFIleBuffer 结构存入内存显示消息通知用户存在错误B管理科学与系统科学研究新进展第 6 届全国青年管理科学与系统科学学术会议论文集 大连341No YesYes No Yes NoYes No No No Yes Yes 图 3 数据库接口程序实现的总体流程Yes Yes No No No Yes Yes No Yes

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号