文档介绍:一个知识库系统与外部数据源接口的研究
摘要本文论述了一个知识库系统与外部数据源接口的描述定义和程序实现方法。
关键词知识库系统数据库数据源
1 引言
随着智能决策支持系统应用领域的不断扩大,原来由模型库系统完成的部分定量分析任务,将归并到知识库系统中。即要求知识库中,不仅有专家的定性知识,而且也应该具有计算知识,形成一个广义的知识库系统。在广义知识库系统中,要求推理机不仅要具有一般的推理功能,而且能够从外部数据源获取数据,对数学模型进行求解的功能。如何从外部数据源获取数据,是使推理机具有模型求解功能的关键技术之一。笔者在生产成本管理知识库系统的开发过程中,使用Visual c++ 成功地研究开发了该知识库系统与外部数据源的接口,拓宽了推理机的功能,收到了比较好的效果。外部数据源主要是指文本数据文件、数据库和Excel电子表。由于受篇幅限制,本文主要针对知识库系统与文本数据文件、数据库接口的设计实现问题进行讨论。知识库系统与Excel电子表的接口问题,笔者将另撰文介绍。
2 接口的描述定义
在生产成本管理知识库中,以知识数据块的形式对外部数据源进行如下描述定义。
文本数据文件接口的定义格式
DATAFILE //可以定义多个文件的接口。
<文件句柄>=OPEN(<文件名称>)//在一个接口中,可以定义任意个输入数据文件。
<变量>=READ(<文件句柄>,行号,列号)//可以有多行。
| //或
WITH <文件句柄>
<变量>=READ(行号,列号) //可以有多行。
END WITH
END DATAFILE
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 接口程序的实现
在推理机运行之前,首先将知识库读入内存