1 / 7
文档名称:

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

格式:doc   大小:244KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:书中金屋 2022/11/27 文件大小:244 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:该【知识库系统与外部数据源接口的研究 】是由【书中金屋】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【知识库系统与外部数据源接口的研究 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。一个知识库系统与外面数据源接口的研究
马金平邢筠
(青岛大学商学院管理系,266071)
纲要本文阐述了一个知识库系统与外面数据源接口的描绘定义和程序实现方法。
重点词知识库系统数据库数据源
前言
跟着智能决议支持系统应用领域的不停扩大,原出处模型库系统达成的部分定量剖析任务,将合并到知识库系统中。即要求知识库中,不单有专家的定性知识,并且也应当拥有计算知识,形成一个广义的知识库系统。在广义知识库系统中,要求推理机不单要拥有一般的推理功能,并且能够从外面数据源获取数据,对数学模型进行求解的功能。怎样从外面数据源获取数据,是使推理机拥有模型求解功能的重点技术之一。笔者在生产成本管理知识库系统的开发过程中,使用Visualc++,拓宽了推
理机的功能,收到了比较好的成效。外面数据源主假如指文本数据文件、数据库和Excel电子表。因为受篇幅限制,本文主要针对知识库系统与文本数据文件、
数据库接口的设计实现问题进行议论。知识库系统与Excel电子表的接口问题,笔者将另撰文介绍。
接口的描绘定义
在生产成本管理知识库中,以知识数据块的形式对外面数据源进行以下描绘定义。

DATAFILE//能够定义多个文件的接口。
<文件句柄>=OPEN(<文件名称>)//在一个接口中,能够定义随意个输入数据文件。
<变量>=READ(<文件句柄>,行号,列号)//能够有多行。
|//或
WITH<文件句柄>
<变量>=READ(行号,列号)//能够有多行。
ENDWITH
ENDDATAFILE

DATABASE//在一个知识库中能够定义多个这样的接口
CONNECTION<ADO连结对象名>=<连结字符串>//能够同时定义多个连结对象
INPUTTABLE//每个接口只好定义一个输入块。
RECORDSET<ADO记录集对象名>=<SQL查问语句>,CONNECTION<ADO连
接对象名>
|

//

//
〈变量〉=<ADO记录集对象名


能够定义多个记录集对象名。
>.FIELDS(字段序号)//能够有多行
WITH〈ADO记录集对象名>
变量>=.FIELDS(字段序号)//能够有多行
ENDWITH
ENDINPUTTABLE
OUTPUTTABLE//定义与储存结果数据表的接口,每个接口最多能够定义一个输出块。
RECORDSET<ADO记录集对象名>=<SQL查问语句>,<ADO连结对象名>;
<ADO记录集对象名>.FIELDS(字段序号)=〈变量〉;
|//或
WITH<ADO记录集对象名>
.FIELDS(变量序号)=<变量>;
ENDWITH
ENDOUTPUTTABLE
ENDDATABASE
在上述格式中,〈变量〉是指计算表达式及模型中需要用户供给值的参数,或储存表达式及模型的求解结果。“//”表示说明。别的,笔者在生产成本管理知识库系统开发工具中,开发了知识库与外面数据源接口定义的协助工具,用户利用这些工具能够十分方便地达成接口的描绘定义工作。
接口程序的实现
在推理机运转以前,第一将知识库读入内存,并且变换成计算机的内部表现形式。接口程序再依据知识库与外面数据源接口的定义,将外面数据源的数据读入内存缓冲区后,最后在进行推理。
为了便于查找知识库与外面数据源接口的定义语句,第一定义以下数据构造:
structLineText//储存知识库语句行文本。
{CStringText;//储存知识库语句行文本
structlinetext*pNextLine;//下一行指针
}*pLineTextHead;//知识库语句首行指针。structDataObject//知识数据块对象索引表
{CStringObjecType;//对象种类
structLineText*pTextLine;//对象首行在LineText中的指针structDataObject*pNextObject;};//指向下一个知识数据块对象。structKnowClsName//储存知识类名称定义语句文本
{CStringClsName;//知识类名称
structKnowClsName*pNextCls;//下知识类名称的指针
structLlineText*pTextLine;//知识类名称在LineText中的指针
structDataObject*pFirstObject;//指向知识类中第一个知识数据块对象的指针structMethod*pFirstMethod;//指向知识类中第一个知识方法的指针
}*pClsHead;//指向知识类的头指针。
1所示。在图
依据上述数据构造的定义,接口程序整体实现的程序流程如图
1中,当pDo->ObjectType等于“DATAFILE“或“DATABASE”或“EXCEL”
时,系统分别调用从文本数据文件、数据库和EXCEL电子表获取数据的接口函数。此中:文本数据文件接口函数的程序流程如图2所示,数据库接口函数的程序流程如图3所示。“OTHER”表告知识库中的其余知识数据块对象。
开始pCls=pClsHead
pDo=pCls->pFirstObject
No
停止
Yes
pCls=NULL?
Yes
No
pDo=NULL?
pDo->ObjectType=?
pCls=pCls->pNextCls
A
B
C
DATABASE
EXCEL
OTHER
DATAFILE
pDo=pDo->pNextObject
图1接口程序整体实现的程序流程

为了储存从外面数据文件获取的数据,定义以下数据构造:
structDataFileBuffer//数据文件缓冲区
{CStringVariableName;/变量名称
doubleDataValue;//从文本文件获取的变量值
structDataBuffer*pNextPata;//指向下一个变量的指针}*pDataBufferHead,*pDataBufferTail;//缓冲区的头指针和尾指针。
据此,绘出从外面数据文件获取数据的接口函数的程序流程如图2。因为受篇幅限制,图2仅给出了程序的主要算法流程。在编程时,还一定考虑详细实现的细节,比如:怎样从一个数据行中,确立数据项数目,找到Col列;怎样创立DataFileBuffer的链表构造等。

依据上述知识库与数据库接口的定义格式以及知识库内部储存构造,能够绘制出数据库接口函数程序整体流程如图3所示。此中:D表示输入数据表接口程序流程,如图4所示;E表示输出数据表接口程序流程。
输入数据表接口程序的实现
为了储存从输入数据表获取的数据,定义数据构造以下:
structInputDataBuffer//储存从数据库获取的数据,每一个变量成立一个数
据区
{_variant_tDataValue;//能够储存不一样种类的数据;
structInputDataBuffer*pNextDataValue;};
structPremiseVariableBuffer//前提变量(自变量)集区,接受来自数据库的数

{CStringVariableName;
structInputDataBuffer*pInputDataBufferHead;//指向数据区头指针。
structPremiseVariableBuffer*pNextVariable;//指向下一个变量。
}*pPremiseVariableBufferHead,pPremiseVariableBufferTail;
据此,能够绘制出知识库从外面数据库获取数据的接口程序流程如图4所示。
A
定义变量、初始化pTL1=pDo->pTextLine
pTL2=pTL1;nFind1=pTL2->Text。Find(”OPEN”)
pTL1=pTL1->pNextLine
No
Yes
nfind1>-1?
pTL1->Text=”END
No
找出文件名称、文件句柄名称,并且翻开数据文件(设
Yes
对象名为MyFile)。Ptl2<=PTL2->pNextLine
DATAFILE”?
返回
Yes
pTL1=pTL1->pNextLine
在Ptl2->Text中,找出变量名称VariableName,行号
(Row)和列号(Col);( );Boolflag=(mDataLine);设MyFile目前
行nLine=1;
No
Flag=False?
Row=nLine?在mDataLine中找Col列
NoYes
flag=(mD
找到否?
ataLine);nLine++;
Ptl2Yes->Text=”ENDDATAFILE”?
No
Yes
在Ptl2->Text中能否存在“READ”和
Yes文件句柄名称?
显示信息通知用户
存在错误
No
将数据和VariableName采纳
Yes构造存入内存DataFIleBuffer

pTL2<=pTL2->pNe
xtLine
No
图2从外面数据文件获取数据的接口函数程序流程
B
nFind1=pTL1->(“CONNECTION”)
定义变量、初始化pTL1=pDo->pNextLine
nFind1>-1?
pTL1=pTL1->pNextLine
No
Yes
找出ADO连结对象名称和连结字符串,并翻开连结
pTL1->Text=”END
DATABASE”
pIT=pTL1-pNextLine;pOT=pTL1->pNextLine
Yes
No
返回
pTL1=pTL1->pNextLine
pIT->Text=”INPUTTAB
LE”
Yes
NoD
pOT=pOT->pNextLine
YesNo

pIT=pIT->pNextLine
pIT->Text=”END
pOT->Text=”OUTPUT
DATABASE”?
No
TAB?LE”
E
No
pOT->Text=”ENDYes
DATABASE”?
Yes
图3数据库接口程序实现的整体流程
D
返回
pIT=pIT->pNextLine
Yes
YespIT->Text=”END
pRec->Text=”END
INPUTTABLE”?
No
No
”?
INPUTTABLE
pRec=pIT;
在pRec->Text中,查找记录集对象名称RecNameNo、
已经翻开的连结对象名称conName,找到否?pRec=pRec->pNextLine
从pRec->Text截出SQL命令字符串,履行。
Yes
在pField->Text中
Yes
pField->Text=”END
pField=pRec->pNextLine
找RecName
INPUTTABLE”?
No
Yes
找到否?
pField=pField->pNextLine
No
Yes
在pField->Text中截出变量名,并且
No
( )?
存入PremiseVariableBuffer
缓冲
区;截出字段序号nField

( )
图4从外面数据库获取数据的接口程序流程
输出数据表接口程序的实现
输出数据表用来储存推理机对表达式或模型的求解结果。所以,需要在推理机运转以前,依据输出数据表接口描绘的定义,正确地成立结果变量与翻开数据表的记录集对象之间以及记录集对象与连结对象之间的链接关系,使得推理达成后,系统能够正确地连结数据库和翻开数据表,将求解结果存入到数据表中。为此,定义以下数据构造:
structOutputDataBuffer//推理机将结果写入该地区
{CStringConclVariableName;//推理达成此后,按变量名称排序_Varian_tDataValue;//能够储存不一样种类的数据;
structOutputDataBuffer*pNextDataValue;
}*pOutputDataBufferHead,*pOutputDataBufferTail;
structConclVariableBuffer//结果变量缓冲区
{CStringVariableName;
CStringConObjectName;//排序能够减少连结数据库的次数
CStringRecObjectName;//排序能够减少翻开记录集的次数
intnField;//字段序号
structOutputDataBuffer*pOutputDataBuffer;//指向输出数据区的指针
structConclVariableBuffer*pNextVariableName;
}*pConclVariableHead,*pConclVariableTail;
structConnecObjectName//

连结对象缓冲区
{CStringObjectName

;
CStringConnectionString

;
structConnecObjectName*pNextConnecObjectName

;
}*pConnecObjectNameHead;
structRecObjectName//记录集对象缓冲区
{CStringObjectName;//记录集对象名称
CStringRecString;//SQL语句字符串
structRecObjectName*pRecObjectName

;
}*pRecObjectNamehead;
程序实现流程与图4相近似,不一样之处是:在初始化阶段,不需要连结数据库和翻开数据表,将找出的结果变量与翻开数据表的记录集对象之间以及连结对
象之间的对应关系,存到上述构造所定义的链表中。推理机在推理达成此后,经过指向结果变量缓冲区的头指针获取整个链表的进口,将结果数据存入输出数据表中。
结束语
本文开发的知识库系统与外面数据源的接口作为生产成本管理知识库系统
开发工具的重要构成部分,目前正在两个不一样种类的公司进行试运转,已经收到了比较好的成效。应用实践证明,该系统运转稳固靠谱,接口描绘定义格式简单适用。我们准备将接口程序转为ActiveXDLL组件形式,便于在不一样的知识库系统中使用,以获取更好的成效。
参照文件
1EugeneOlafsen等著,++6编程技术内情.***第一版社,
2000年版
,1999年版
,1998年版
TheStudyonInterface
ofaKnowledgeBaseSystemandExternal
DataSource
MaJinpingXingjun
(ManangementDepartmentQingDaoUniversity,266071)

最近更新