《知识库系统与外部数据源接口的研究184174.docx》由会员分享,可在线阅读,更多相关《知识库系统与外部数据源接口的研究184174.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一个知识库系统与外部数据源接口的研究 马金平 邢筠(青岛大学学商学院管管理系, 2660071)摘要 本文文论述了一一个知识库库系统与外外部数据源源接口的描描述定义和和程序实现现方法。关键词 知知识库系统统 数据库 数据源1 引言随着智能决决策支持系系统应用领领域的不断断扩大,原原来由模型型库系统完完成的部分分定量分析析任务,将将归并到知知识库系统统中。即要要求知识库库中,不仅仅有专家的的定性知识识,而且也也应该具有有计算知识识,形成一一个广义的的知识库系系统。在广广义知识库库系统中,要要求推理机机不仅要具具有一般的的推理功能能,而且能能够从外部部数据源获获取数据,对对数学模型型进行求解解的功
2、能。如如何从外部部数据源获获取数据,是是使推理机机具有模型型求解功能能的关键技技术之一。笔笔者在生产产成本管理理知识库系系统的开发发过程中,使使用Vissual c+66.0 成成功地研究究开发了该该知识库系系统与外部部数据源的的接口,拓拓宽了推理理机的功能能,收到了了比较好的的效果。外外部数据源源主要是指指文本数据据文件、数数据库和EExcell电子表。由由于受篇幅幅限制,本本文主要针针对知识库库系统与文文本数据文文件、数据据库接口的的设计实现现问题进行行讨论。知知识库系统统与Exccel电子子表的接口口问题,笔笔者将另撰撰文介绍。2 接口口的描述定定义在生产成本本管理知识识库中,以以知识数
3、据据块的形式式对外部数数据源进行行如下描述述定义。2.1 文文本数据文文件接口的的定义格式式 DAATAFIILE /可以以定义多个个文件的接接口。 =OPEEN()/在在一个接口口中,可以以定义任意意个输入数数据文件。 =REAAD(,行号,列列号)/可以有多多行。 | /或或 WWITH =REAAD(行号号,列号) /可可以有多行行。 EEND WWITH ENND DAATAFIILE 2.2数据据库接口的的定义格式式 DATAABASEE /在一个知知识库中可可以定义多多个这样的的接口 CONNNECTIION = /可以同同时定义多多个连接对对象 INPPUTTAABLE /每个个
4、接口只能能定义一个个输入块。 RRECORRDSETT =,CCONNEECTIOON /可以定定义多个记记录集对象象名。 变量=.FIEELDS(字段序号号)/可可以有多行行 | /或 WITHH ADDO记录集集对象名 =.FIEELDS(字段序号号) /可以有多多行 END WITHH ENDD INPPUTTAABLE OUTPPUTTAABLE /定义义与存储结结果数据表表的接口,每每个接口最最多可以定定义一个输输出块。 RRECORRDSETT =,; .FFIELDDS(字段段序号)=变量; | /或 WITHH FFIELDDS(变量量序号)=; END WITHH ENDD
5、OUTTPUTTTABLEE ENND DAATABAASE在上述格式式中,变变量是指指计算表达达式及模型型中需要用用户提供值值的参数,或或存储表达达式及模型型的求解结结果。“/”表示注释释。此外,笔笔者在生产产成本管理理知识库系系统开发工工具中,开开发了知识识库与外部部数据源接接口定义的的辅助工具具,用户利利用这些工工具可以十十分方便地地完成接口口的描述定定义工作。3 接口程程序的实现现在推理机运运行之前,首首先将知识识库读入内内存,并且且转换成计计算机的内内部表现形形式。接口口程序再根根据知识库库与外部数数据源接口口的定义,将将外部数据据源的数据据读入内存存缓冲区后后,最后在在进行推理理。
6、为了便于查查找知识库库与外部数数据源接口口的定义语语句,首先先定义如下下数据结构构:strucct LiineTeext /存储知知识库语句句行文本。 CCStriing TText;/存储储知识库语语句行文本本strucct liineteext *pNexxtLinne;/下一行指指针 *ppLineeTexttHeadd; /知识库库语句首行行指针。strucct DaataObbjectt /知知识数据块块对象索引引表 CSStrinng ObjeccType;/对象类类型strucct LLineText *pTeextLiine;/对象首首行在LiineTeext中的的指针stru
7、cct DaataObbjectt *pNNextObjecct;/指向向下一个知知识数据块块对象。strucct KnnowCllsNamme /存储知识识类名称定定义语句文文本 CSStrinng CllsNamme;/知识类名名称strucct KnnowCllsNamme *ppNexttCls;/下知知识类名称称的指针strucct LllineTText *pTeextLiine;/知识类类名称在LLineTText中中的指针strucct DaataObbjectt *pFFirsttObjecct;/指向知识识类中第一一个知识数数据块对象象的指针strucct Methood
8、*ppFirsstMethood;/指向知识识类中第一一个知识方方法的指针针*pCllsHeaad;/指向知识识类的头指指针。根据上述数数据结构的的定义,接接口程序总总体实现的的程序流程程如图1所所示。在图图1中,当当pDo-ObjjectTType等等于“DATAAFILEE“或“DATAABASEE”或“EXCEEL”时,系统统分别调用用从文本数数据文件、数数据库和EEXCELL电子表获获取数据的的接口函数数。其中:文本数据据文件接口口函数的程程序流程如如图2所示示,数据库库接口函数数的程序流流程如图33所示。“OTHEER”表示知识识库中的其其它知识数数据块对象象。开始pClspClsH
9、ead终止pDo=pClspFirstObjectpCls=NULL?? No Yes pDoObjectType=?pDo=NULL? Yees NNo pCls=pClspNextCls AB C DATAABASEE EXXCEL OTTHER DATTAFILLEpDo=pDopNextObject 图1 接口口程序总体体实现的程程序流程 3.1 数数据文件接接口函数程程序的实现现为了存储从从外部数据据文件获取取的数据,定定义如下数数据结构:strucct DaataFiileBuufferr /数据文件件缓冲区 CSStrinng VaariabbleNaame;/变量名称称 dou
10、bble DataaValuue;/从文本文文件获取的的变量值 struuct DataaBufffer *pNexttPataa;/指指向下一个个变量的指指针*pDaataBuufferrHeadd,*pDDataBBuffeerTaiil;/缓冲区的的头指针和和尾指针。据此,绘出出从外部数数据文件获获取数据的的接口函数数的程序流流程如图22。由于受受篇幅限制制,图2仅仅给出了程程序的主要要算法流程程。在编程程时,还必必须考虑具具体实现的的细节,例例如:如何何从一个数数据行中,确确定数据项项数量,找找到Coll列;如何何创建DaataFiileBuufferr的链表结结构等。3.2 数数据库
11、接口口函数程序序的实现 根据上述知知识库与数数据库接口口的定义格格式以及知知识库内部部存储结构构,可以绘绘制出数据据库接口函函数程序总总体流程如如图3所示示。其中:D表示输输入数据表表接口程序序流程,如如图4所示示;E表示示输出数据据表接口程程序流程。3.2.11 输入数数据表接口口程序的实实现为了存储从从输入数据据表获取的的数据,定定义数据结结构如下: strucct InnputDDataBBuffeer /存储从数数据库获得得的数据,每每一个变量量建立一个个数据区 _vaariannt_t DataaValuue;/可以存储储不同类型型的数据;strucct InnputDDataBBu
12、ffeer *ppNexttDataaValuue;;strucct PrremisseVarriablleBufffer /前提提变量(自自变量)集集区,接受受来自数据据库的数据据 CSttringg VarriablleNamme;strucct InnputDDataBBuffeer *ppInpuutDattaBuffferHHead;/指向向数据区头头指针。strucct PrremisseVarriablleBufffer *pNeextVaariabble;/指向向下一个变变量。*pPrremisseVarriablleBuffferHHead,pPreemiseeVariiab
13、leeBuffferTaail;据此,可以以绘制出知知识库从外外部数据库库获取数据据的接口程程序流程如如图4所示示。 ApTL2=pTL1;nFind1=pTL2-Text。Find(”OPEN”)定义变量、初始化pTL1=pDopTextLinepTL1=pTL1pNextLine nfind1-1? No YYespTL1Text=”END DATAFILE” ?找出文件名称、文件句柄名称,并且打开数据文件(设对象名为MyFile)。Ptl2pNextLine Noo Yes 返回 Ptl2-Text=”END DATAFILE”? Yess pTL1=pTL1-pNextLine Yes
14、 pTL2pNextLine在Ptl2-Text中,找出变量名称 VariableName,行号(Row)和列号(Col);MyFileSeekToBegin();Bool flag=MyFileReadString(mDataLine);设MyFile当前行nLine=1; 在Ptl2-Text中是否存在“READ”和文件句柄名称? NNo Yes No Flag=False? Noo YYes 在mDataLine中找Col列Row=nLine? 显示消息通知用户存在错误 No YYes flag=MyFile.ReadStirng(mDataLine);nLine+;找到否? No 将数
15、据和VariableName采用DataFIleBuffer结构存入内存 Yees 图2 从外外部数据文文件获取数数据的接口口函数程序序流程BnFind1=pTL1-TextFind(“CONNECTION”)定义变量、初始化pTL1=pDopNextLinepTL1=pTL1pNextLinenFind1-1? NNo 找出ADO连接对象名称和连接字符串,并打开连接 YYespTL1-Text=”END DATABASE” pIT=pTL1-pNextLine;pOT=pTL1-pNextLine Yes No 返回pIT-Text=”INPUTTABLE” pTL1=pTL1-pNextL
16、ine pIT=pIT-pNextLineD Yees pOT=pOT-pNextLine NopOT-Text=”OUTPUTTAB?LE ”pIT-Text=”END DATABASE”? Yes Noo EpOT-Text=”END DATABASE”? No Noo Yes Yes 图3 数据据库接口程程序实现的的总体流程程 D返回 pIT=pIT-pNextLine pRec-Text=”END INPUTTABLE”? Yess pIT-Text=”END INPUTTABLE”? Yess NNo Noo pRec=pIT; 在pRec-Text中,查找记录集对象名称RecNam
17、e、已经打开的连接对象名称conName, 找到否?pRec=pRec-pNextLine Noo 从pRec-Text截出SQL命令字符串,执行。 Yess 在pField-Text中找RecNamepField-Text=”END INPUTTABLE”? YYes pField=pRec-pNextLine 将第nField字段值存入InputDataBuffer内存缓冲区RecNameMoveNext() No pField=pField-pNextLine找到否? Yes NNo Yess RecName.GetadoEOF()?在pField-Text中截出变量名,并且存入Prem
18、iseVariableBuffer缓冲区;截出字段序号nField No 图4 从外外部数据库库获取数据据的接口程程序流程3.2.22 输出数数据表接口口程序的实实现 输出数据表表用来存储储推理机对对表达式或或模型的求求解结果。因因此,需要要在推理机机运行之前前,根据输输出数据表表接口描述述的定义,准准确地建立立结果变量量与打开数数据表的记记录集对象象之间以及及记录集对对象与连接接对象之间间的链接关关系,使得得推理完成成后,系统统能够正确确地连接数数据库和打打开数据表表,将求解解结果存入入到数据表表中。为此此,定义如如下数据结结构:strucct OuutputtDataaBufffer/推理
19、机将将结果写入入该区域 CSttringg ConnclVaariabbleNaame;/推理完完成以后,按按变量名称称排序 _Vaariann_t DattaVallue;/可以存存储不同类类型的数据据; strruct OutpputDaataBuufferr *pNNextDDataVValuee;*pOuutputtDataaBuffferHeead,*pOuttputDDataBBuffeerTaiil;strucct CoonclVVariaableBBuffeer /结果变量量缓冲区 CSttringg VarriablleNamme; CSttringg ConnObjeect
20、Naame;/排序 可以减少少连接数据据库的次数数 CSttringg ReccObjeectNaame;/排序 可以减少少打开记录录集的次数数 intt nFielld;/字段序号号 strruct OutpputDaataBuufferr *pOOutpuutDattaBufffer;/指向输输出数据区区的指针 strruct ConcclVarriablleBufffer *pNeextVaariabbleNaame;*pCoonclVVariaableHHead,*pCoonclVVariaableTTail;strucct CoonneccObjeectNaame /连接对对象缓冲区
21、区 CSttringg ObjjectNName; CSttringg ConnnecttionSStrinng; strruct ConnnecObbjecttNamee *pNNextCConneecObjjectNName; *ppConnnecObbjecttNameeHeadd;strucct ReecObjjectNName /记录录集对象缓缓冲区 CSttringg ObjjectNName;/记录录集对象名名称 CSttringg ReccStriing;/SQLL语句字符符串 strruct RecOObjecctNamme *ppRecOObjecctNamme; *pRR
22、ecObbjecttNameeheadd;程序实现流流程与图44相类似,不不同之处是是:在初始始化阶段,不不需要连接接数据库和和打开数据据表,将找找出的结果果变量与打打开数据表表的记录集集对象之间间以及连接接对象之间间的对应关关系,存到到上述结构构所定义的的链表中。推推理机在推推理完成以以后,通过过指向结果果变量缓冲冲区的头指指针获得整整个链表的的入口,将将结果数据据存入输出出数据表中中。 4 结束束语本文开发的的知识库系系统与外部部数据源的的接口作为为生产成本本管理知识识库系统开开发工具的的重要组成成部分,目目前正在两两个不同类类型的企业业进行试运运行,已经经收到了比比较好的效效果。应用用实
23、践证明明,该系统统运行稳定定可靠,接接口描述定定义格式简简单实用。我我们准备将将接口程序序转为AcctiveeX DLLL 组件件形式,便便于在不同同的知识库库系统中使使用,以获获得更好的的效果。参考文献1 EEugenne Ollafseen等著, 王建华华等译. MFC Visuual CC+6编编程技术内内幕. 机机械工业出出版社, 20000年版2 熊熊范纶等. 雄风专专家系统开开发工具. 清华大大学出饭社社, 19999年版版3 王永永庆. 人人工智能原原理与方法法. 西安安交通大学学出版社, 19998年版 The Studdy onn Intterfaace of a Knoww
24、ledgge Baase SSysteem annd Exxternnal DDataSSourcce Ma Jiinpinng Xingg junn(Manaangemment Depaartmeent QQingDDao UUniveersitty , 2660071)Abstrract Thiis paaper disccusseed deescriibe ddefinnitioon annd prrograam immplemmentaationn metthod on iinterrfacee of a KKnowlledgee Basse Syystemm andd Extternaal DaataSoourcee. Key wwordss Knnowleedge Basee Sysstem DaataBaase DattaSouurce