欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:16876046       资源大小:24KB        全文页数:12页
    • 资源格式: DOC        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    一个知识库系统与外部数据源接口的研究一个知识库系统与外部数据源接口的研究 马金平 邢筠 (青岛大学商学院管理系, 266071) 摘要 本文论述了一个知识库系统与外部数据源接口的描述定义和程序实现方法。 关键词 知识库系统 数据库 数据源 1 引言 随着智能决策支持系统应用领域的不断扩大原来由模型库系统完成的部分定量分析任务将归并到知识库系统中。即要求知识库中不仅有专家的定性知识而且也应该具有计算知识形成一个广义的知识库系统。在广义知识库系统中要求推理机不仅要具有一般的推理功能而且能够从外部数据源获取数据对数学模型进行求解的功能。如何从外部数据源获取数据是使推理机具有模型求解功能的关键技术之一。笔者在生产成本管理知识库系统的开发过程中使用Visual c+6.0 成功地研究开发了该知识库系统与外部数据源的接口拓宽了推理机的功能收到了比较好的效果。外部数据源主要是指文本数据文件、数据库和Excel电子表。由于受篇幅限制本文主要针对知识库系统与文本数据文件、数据库接口的设计实现问题进行讨论。知识库系统与Excel电子表的接口问题笔者将另撰文介绍。 2 接口的描述定义 在生产成本管理知识库中以知识数据块的形式对外部数据源进行如下描述定义。 2.1 文本数据文件接口的定义格式 DATAFILE /可以定义多个文件的接口。 =OPEN()/在一个接口中可以定义任意个输入数据文件。 =READ(行号列号)/可以有多行。 | /或 WITH =READ(行号列号) /可以有多行。 END WITH END DATAFILE 2.2数据库接口的定义格式 DATABASE /在一个知识库中可以定义多个这样的接口 CONNECTION = /可以同时定义多个连接对象 INPUTTABLE /每个接口只能定义一个输入块。 RECORDSET =CONNECTION /可以定义多个记录集对象名。 变量=.FIELDS(字段序号)/可以有多行 | /或 WITH ADO记录集对象名> = .FIELDS(字段序号) /可以有多行 END WITH END INPUTTABLE OUTPUTTABLE /定义与存储结果数据表的接口每个接口最多可以定义一个输出块。 RECORDSET =; .FIELDS(字段序号)=变量; | /或 WITH FIELDS(变量序号)=; END WITH END OUTPUTTABLE END DATABASE 在上述格式中变量是指计算表达式及模型中需要用户提供值的参数或存储表达式及模型的求解结果。“/”表示注释。此外笔者在生产成本管理知识库系统开发工具中开发了知识库与外部数据源接口定义的辅助工具用户利用这些工具可以十分方便地完成接口的描述定义工作。 3 接口程序的实现 在推理机运行之前首先将知识库读入内存并且转换成计算机的内部表现形式。接口程序再根据知识库与外部数据源接口的定义将外部数据源的数据读入内存缓冲区后最后在进行推理。 为了便于查找知识库与外部数据源接口的定义语句首先定义如下数据结构: struct Liext /存储知识库语句行文本。 CString Text;/存储知识库语句行文本 struct liext _pNextLine;/下一行指针 _pLiextHead; /知识库语句首行指针。 struct DataObject /知识数据块对象索引表 CString ObjecType;/对象类型 struct Liext _pTextLine;/对象首行在Liext中的指针 struct DataObject _pNextObject;/指向下一个知识数据块对象。 struct KnowClsName /存储知识类名称定义语句文本 CString ClsName;/知识类名称 struct KnowClsName _pNextCls;/下知识类名称的指针 struct Lliext _pTextLine;/知识类名称在Liext中的指针 struct DataObject _pFirstObject;/指向知识类中第一个知识数据块对象的指针 struct Method _pFirstMethod;/指向知识类中第一个知识方法的指针 _pClsHead;/指向知识类的头指针。 根据上述数据结构的定义接口程序总体实现的程序流程如图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 DATAFILE pDo=pDopNextObject 图1 接口程序总体实现的程序流程 3.1 数据文件接口函数程序的实现 为了存储从外部数据文件获取的数据定义如下数据结构: struct DataFileBuffer /数据文件缓冲区 CString VariableName;/变量名称 double DataValue;/从文本文件获取的变量值 struct DataBuffer _pNextPata;/指向下一个变量的指针 _pDataBufferHead,_pDataBufferTail;/缓冲区的头指针和尾指针。 据此绘出从外部数据文件获取数据的接口函数的程序流程如图2。由于受篇幅限制图2仅给出了程序的主要算法流程。在编程时还必须考虑具体实现的细节例如:如何从一个数据行中确定数据项数量找到Col列;如何创建DataFileBuffer的链表结构等。 3.2 数据库接口函数程序的实现 根据上述知识库与数据库接口的定义格式以及知识库内部存储结构可以绘制出数据库接口函数程序总体流程如图3所示。其中:D表示输入数据表接口程序流程如图4所示;E表示输出数据表接口程序流程。 3.2.1 输入数据表接口程序的实现 为了存储从输入数据表获取的数据定义数据结构如下: struct InputDataBuffer /存储从数据库获得的数据每一个变量建立一个数据区 _variant_t DataValue;/可以存储不同类型的数据; struct InputDataBuffer _pNextDataValue;; struct PremiseVariableBuffer /前提变量(自变量)集区,接受来自数据库的数据 CString VariableName; struct InputDataBuffer _pInputDataBufferHead;/指向数据区头指针。 struct PremiseVariableBuffer _pNextVariable;/指向下一个变量。 _pPremiseVariableBufferHead,pPremiseVariableBufferTail; 据此可以绘制出知识库从外部数据库获取数据的接口程序流程如图4所示。 A pTL2=pTL1;nFind1=pTL2->Text。Find(”OPEN”) 定义变量、初始化pTL1=pDopTextLine pTL1=pTL1pNextLine nfind1>-1? No Yes pTL1Text=”END DATAFILE” ? 找出文件名称、文件句柄名称并且打开数据文件(设对象名为MyFile)。Ptl2pNextLine No Yes 返回 Ptl2->Text=”END DATAFILE”? Yes pTL1=pTL1->pNextLine Yes pTL2pNextLine 在Ptl2->Text中,找出变量名称 VariableName行号(Row)和列号(Col);MyFileSeekToBegin;Bool flag=MyFileReadString(mDataLine);设MyFile当前行nLine=1; 在Ptl2->Text中是否存在“READ”和文件句柄名称? No Yes No Flag=False? No Yes 在mDataLine中找Col列 Row=nLine? 显示消息通知用户存在错误 No Yes flag=MyFile.ReadStirng(mDataLine);nLine+; 找到否? No 将数据和VariableName采用 DataFIleBuffer结构存入内存 Yes 图2 从外部数据文件获取数据的接口函数程序流程 B nFind1=pTL1->TextFind(“CONNECTION”) 定义变量、初始化pTL1=pDopNextLine pTL1=pTL1pNextLine nFind1>-1? No 找出ADO连接对象名称和连接字符串并打开连接 Yes pTL1->Text=”END DATABASE” pIT=pTL1-pNextLine;pOT=pTL1->pNextLine Yes No 返回 pIT->Text=”INPUTTABLE” pTL1=pTL1->pNextLine pIT=pIT->pNextLine D Yes pOT=pOT->pNextLine No pOT->Text=”OUTPUTTAB?LE ” pIT->Text=”END DATABASE”? Yes No E pOT->Text=”END DATABASE”? No No Yes Yes 图3 数据库接口程序实现的总体流程 D 返回 pIT=pIT->pNextLine pRec->Text=”END INPUTTABLE”? Yes pIT->Text=”END INPUTTABLE”? Yes No No pRec=pIT; 在pRec->Text中查找记录集对象名称RecName、已经打开的连接对象名称conName 找到否? pRec=pRec->pNextLine No 从pRec->Text截出SQL命令字符串执行。 Yes 在pField->Text中找RecName pField->Text=”END INPUTTABLE”? Yes pField=pRec->pNextLine 将第nField字段值存入InputDataBuffer内存缓冲区 RecNameMoveNext No pField=pField->pNextLine 找到否? Yes No Yes RecName.GetadoEOF? 在pField->Text中截出变量名并且存入PremiseVariableBuffer缓冲区;截出字段序号nField No 图4 从外部数据库获取数据的接口程序流程 3.2.2 输出数据表接口程序的实现 输出数据表用来存储推理机对表达式或模型的求解结果。因此需要在推理机运行之前根据输出数据表接口描述的定义准确地建立结果变量与打开数据表的记录集对象之间以及记录集对象与连接对象之间的链接关系使得推理完成后系统能够正确地连接数据库和打开数据表将求解结果存入到数据表中。为此定义如下数据结构: struct OutputDataBuffer/推理机将结果写入该区域 CString ConclVariableName;/推理完成以后按变量名称排序 _Varian_t DataValue;/可以存储不同类型的数据; struct OutputDataBuffer _pNextDataValue; _pOutputDataBufferHead,_pOutputDataBufferTail; struct ConclVariableBuffer /结果变量缓冲区 CString VariableName; CString ConObjectName;/排序 可以减少连接数据库的次数 CString RecObjectName;/排序 可以减少打开记录集的次数 int nField;/字段序号 struct OutputDataBuffer _pOutputDataBuffer;/指向输出数据区的指针 struct ConclVariableBuffer _pNextVariableName; _pConclVariableHead,_pConclVariableTail; struct ConnecObjectName /连接对象缓冲区 CString ObjectName; CString ConnectionString; struct ConnecObjectName _pNextConnecObjectName; _pConnecObjectNameHead; struct RecObjectName /记录集对象缓冲区 CString ObjectName;/记录集对象名称 CString RecString;/SQL语句字符串 struct RecObjectName _pRecObjectName; _pRecObjectNamehead; 程序实现流程与图4相类似不同之处是:在初始化阶段不需要连接数据库和打开数据表将找出的结果变量与打开数据表的记录集对象之间以及连接对象之间的对应关系存到上述结构所定义的链表中。推理机在推理完成以后通过指向结果变量缓冲区的头指针获得整个链表的入口将结果数据存入输出数据表中。 4 结束语 本文开发的知识库系统与外部数据源的接口作为生产成本管理知识库系统开发工具的重要组成部分目前正在两个不同类型的企业进行试运行已经收到了比较好的效果。应用实践证明该系统运行稳定可靠接口描述定义格式简单实用。我们准备将接口程序转为Active_ DLL 组件形式便于在不同的知识库系统中使用以获得更好的效果。 参考文献 1 Eugene Olafsen等著, 王建华等译. MFC Visual C+6编程技术内幕. 机械工业出版社, 2000年版 2 熊范纶等. 雄风专家系统开发工具. 清华大学出饭社, 1999年版 3 王永庆. 人工智能原理与方法. 西安交通大学出版社, 1998年版 The Study on Interface of a Knowledge Base System and External DataSource Ma Jinping _ing jun (Manangement Department QingDao University , 266071) Abstract This paper discussed describe definition and program implementation method on interface of a Knowledge Base System and External DataSource. Key words Knowledge Base System DataBase DataSource 第 12 页 共 12 页

    注意事项

    本文(一个知识库系统与外部数据源接口的研究.doc)为本站会员(Wo****Z)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开