- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个知识库系统与外部数据源接口的研究
马金平 邢筠
(青岛大学商学院管理系, 266071)
摘要 本文论述了一个知识库系统与外部数据源接口的描述定义和程序实现方法。
关键词 知识库系统 数据库 数据源
1 引言
随着智能决策支持系统应用领域的不断扩大,原来由模型库系统完成的部分定量分析任务,将归并到知识库系统中。即要求知识库中,不仅有专家的定性知识,而且也应该具有计算知识,形成一个广义的知识库系统。在广义知识库系统中,要求推理机不仅要具有一般的推理功能,而且能够从外部数据源获取数据,对数学模型进行求解的功能。如何从外部数据源获取数据,是使推理机具有模型求解功能的关键技术之一。笔者在生产成本管理知识库系统的开发过程中,使用Visual c++6.0 成功地研究开发了该知识库系统与外部数据源的接口,拓宽了推理机的功能,收到了比较好的效果。外部数据源主要是指文本数据文件、数据库和Excel电子表。由于受篇幅限制,本文主要针对知识库系统与文本数据文件、数据库接口的设计实现问题进行讨论。知识库系统与Excel电子表的接口问题,笔者将另撰文介绍。
2 接口的描述定义
在生产成本管理知识库中,以知识数据块的形式对外部数据源进行如下描述定义。
2.1 文本数据文件接口的定义格式
DATAFILE //可以定义多个文件的接口。
文件句柄=OPEN(文件名称)//在一个接口中,可以定义任意个输入数据文件。
变量=READ(文件句柄,行号,列号)//可以有多行。
| //或
WITH 文件句柄
变量=READ(行号,列号) //可以有多行。
END WITH
END DATAFILE
2.2数据库接口的定义格式
DATABASE //在一个知识库中可以定义多个这样的接口
CONNECTION ADO连接对象名=连接字符串 //可以同时定义多个连接对象
INPUTTABLE //每个接口只能定义一个输入块。
RECORDSET ADO记录集对象名=SQL查询语句,CONNECTION ADO连接对象名
//可以定义多个记录集对象名。
〈变量〉=ADO记录集对象名.FIELDS(字段序号)//可以有多行
| //或
WITH 〈ADO记录集对象名
变量 = .FIELDS(字段序号) //可以有多行
END WITH
END INPUTTABLE
OUTPUTTABLE //定义与存储结果数据表的接口,每个接口最多可以定义一个输出块。
RECORDSET ADO记录集对象名=SQL查询语句,ADO连接对象名;
ADO记录集对象名.FIELDS(字段序号)=〈变量〉;
| //或
WITH ADO记录集对象名
.FIELDS(变量序号)=变量;
END WITH
END OUTPUTTABLE
END DATABASE
在上述格式中,〈变量〉是指计算表达式及模型中需要用户提供值的参数,或存储表达式及模型的求解结果。“//”表示注释。此外,笔者在生产成本管理知识库系统开发工具中,开发了知识库与外部数据源接口定义的辅助工具,用户利用这些工具可以十分方便地完成接口的描述定义工作。
3 接口程序的实现
在推理机运行之前,首先将知识库读入内存,并且转换成计算机的内部表现形式。接口程序再根据知识库与外部数据源接口的定义,将外部数据源的数据读入内存缓冲区后,最后在进行推理。
为了便于查找知识库与外部数据源接口的定义语句,首先定义如下数据结构:
struct LineText //存储知识库语句行文本。
{ CString Text;//存储知识库语句行文本
struct linetext *pNextLine;//下一行指针
} *pLineTextHead; //知识库语句首行指针。
struct DataObject //知识数据块对象索引表
{ CString ObjecType;//对象类型
struct LineText *pTextLine;//对象首行在LineText中的指针
struct DataObject *pNextObject;};//指向下一个知识数据块对象。
struct KnowClsName //存储知识类名称定义语句文本
{ CString ClsName;//知识类名称
struct KnowClsName *pNextCls;//下知
文档评论(0)