知識庫系統(tǒng)與外部數(shù)據(jù)源接口的研究_第1頁
知識庫系統(tǒng)與外部數(shù)據(jù)源接口的研究_第2頁
知識庫系統(tǒng)與外部數(shù)據(jù)源接口的研究_第3頁
知識庫系統(tǒng)與外部數(shù)據(jù)源接口的研究_第4頁
知識庫系統(tǒng)與外部數(shù)據(jù)源接口的研究_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、PAGE 一個知識庫系統(tǒng)與外部數(shù)據(jù)源接口的研究 馬金平 邢筠(青島大學(xué)學(xué)商學(xué)院院管理系系, 26660771)摘要 本文文論述了了一個知知識庫系系統(tǒng)與外外部數(shù)據(jù)據(jù)源接口口的描述述定義和和程序?qū)崒崿F(xiàn)方法法。關(guān)鍵詞 知知識庫系系統(tǒng) 數(shù)據(jù)庫庫 數(shù)據(jù)據(jù)源1 引言隨著智能決決策支持持系統(tǒng)應(yīng)應(yīng)用領(lǐng)域域的不斷斷擴大,原原來由模模型庫系系統(tǒng)完成成的部分分定量分分析任務(wù)務(wù),將歸歸并到知知識庫系系統(tǒng)中。即即要求知知識庫中中,不僅僅有專家家的定性性知識,而而且也應(yīng)應(yīng)該具有有計算知知識,形形成一個個廣義的的知識庫庫系統(tǒng)。在在廣義知知識庫系系統(tǒng)中,要要求推理理機不僅僅要具有有一般的的推理功功能,而而且能夠夠從外部部數(shù)據(jù)

2、源源獲取數(shù)數(shù)據(jù),對對數(shù)學(xué)模模型進行行求解的的功能。如如何從外外部數(shù)據(jù)據(jù)源獲取取數(shù)據(jù),是是使推理理機具有有模型求求解功能能的關(guān)鍵鍵技術(shù)之之一。筆筆者在生生產(chǎn)成本本管理知知識庫系系統(tǒng)的開開發(fā)過程程中,使使用Viisuaal cc+66.0 成功地地研究開開發(fā)了該該知識庫庫系統(tǒng)與與外部數(shù)數(shù)據(jù)源的的接口,拓拓寬了推推理機的的功能,收收到了比比較好的的效果。外外部數(shù)據(jù)據(jù)源主要要是指文文本數(shù)據(jù)據(jù)文件、數(shù)數(shù)據(jù)庫和和Exccel電電子表。由由于受篇篇幅限制制,本文文主要針針對知識識庫系統(tǒng)統(tǒng)與文本本數(shù)據(jù)文文件、數(shù)數(shù)據(jù)庫接接口的設(shè)設(shè)計實現(xiàn)現(xiàn)問題進進行討論論。知識識庫系統(tǒng)統(tǒng)與Exxcell電子表表的接口口問題,筆筆

3、者將另另撰文介介紹。2 接口口的描述述定義在生產(chǎn)成本本管理知知識庫中中,以知知識數(shù)據(jù)據(jù)塊的形形式對外外部數(shù)據(jù)據(jù)源進行行如下描描述定義義。2.1 文文本數(shù)據(jù)據(jù)文件接接口的定定義格式式 DAATAFFILEE /可以以定義多多個文件件的接口口。 =OOPENN()/在一一個接口口中,可可以定義義任意個個輸入數(shù)數(shù)據(jù)文件件。 =RREADD(,行行號,列列號)/可以以有多行行。 | /或 WWITHH =RREADD(行號號,列號號) /可以以有多行行。 EEND WITTH ENND DDATAAFILLE 2.2數(shù)據(jù)據(jù)庫接口口的定義義格式 DATTABAASE /在一個個知識庫庫中可以以定義多多個

4、這樣樣的接口口 CONNNECCTIOON = /可以同同時定義義多個連連接對象象 INPPUTTTABLLE /每個個接口只只能定義義一個輸輸入塊。 RECCORDDSETT =,CCONNNECTTIONN /可以定定義多個個記錄集集對象名名。 變變量=.FIEELDSS(字段段序號)/可可以有多多行 | /或 WITHH AADO記記錄集對對象名 =.FIIELDDS(字字段序號號) /可以以有多行行 END WITTH ENDD INNPUTTTABBLE OUTPPUTTTABLLE /定義義與存儲儲結(jié)果數(shù)數(shù)據(jù)表的的接口,每每個接口口最多可可以定義義一個輸輸出塊。 RRECOORDS

5、SET =,; .FIEELDSS(字段段序號)=變變量; | /或 WITHH FFIELLDS(變變量序號號)=; END WITTH ENDD OUUTPUUTTAABLEE EEND DATTABAASE在上述格式式中,變量是指計計算表達達式及模模型中需需要用戶戶提供值值的參數(shù)數(shù),或存存儲表達達式及模模型的求求解結(jié)果果?!?”表示注注釋。此此外,筆筆者在生生產(chǎn)成本本管理知知識庫系系統(tǒng)開發(fā)發(fā)工具中中,開發(fā)發(fā)了知識識庫與外外部數(shù)據(jù)據(jù)源接口口定義的的輔助工工具,用用戶利用用這些工工具可以以十分方方便地完完成接口口的描述述定義工工作。3 接口程程序的實實現(xiàn)在推理機運運行之前前,首先先將知識識庫

6、讀入入內(nèi)存,并并且轉(zhuǎn)換換成計算算機的內(nèi)內(nèi)部表現(xiàn)現(xiàn)形式。接接口程序序再根據(jù)據(jù)知識庫庫與外部部數(shù)據(jù)源源接口的的定義,將將外部數(shù)數(shù)據(jù)源的的數(shù)據(jù)讀讀入內(nèi)存存緩沖區(qū)區(qū)后,最最后在進進行推理理。為了便于查查找知識識庫與外外部數(shù)據(jù)據(jù)源接口口的定義義語句,首首先定義義如下數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu):strucct LLineeTexxt /存儲儲知識庫庫語句行行文本。 CCStrringg Teext;/存存儲知識識庫語句句行文本本strucct llineetexxt *pNeextLLinee;/下一行行指針 *ppLinneTeextHHeadd; /知知識庫語語句首行行指針。strucct DDataaObjjec

7、tt /知識數(shù)數(shù)據(jù)塊對對象索引引表 CSStriing ObjeecTypee;/對象類類型strucct LinneTextt *ppTexxtLiine;/對對象首行行在LiineTTextt中的指指針strucct DDataaObjjectt *ppNexxtObjeect;/指向向下一個個知識數(shù)數(shù)據(jù)塊對對象。strucct KKnowwClssNamme /存儲儲知識類類名稱定定義語句句文本 CSStriing ClssNamme;/知識識類名稱稱strucct KKnowwClssNamme *pNeextCCls;/下下知識類類名稱的的指針strucct LLlinneTeext

8、 *pTTexttLinne;/知識識類名稱稱在LiineTTextt中的指指針strucct DDataaObjjectt *ppFirrstOObjeect;/指指向知識識類中第第一個知知識數(shù)據(jù)據(jù)塊對象象的指針針strucct MMethhod *pFFirsstMethhod;/指指向知識識類中第第一個知知識方法法的指針針*pCllsHeead;/指指向知識識類的頭頭指針。根據(jù)上述數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)的定義義,接口口程序總總體實現(xiàn)現(xiàn)的程序序流程如如圖1所所示。在在圖1中中,當(dāng)ppDo-ObbjecctTyype等等于“DATTAFIILE“或“DATTABAASE”或“EXCCEL”時,系系統(tǒng)分

9、別別調(diào)用從從文本數(shù)數(shù)據(jù)文件件、數(shù)據(jù)據(jù)庫和EEXCEEL電子子表獲取取數(shù)據(jù)的的接口函函數(shù)。其其中:文文本數(shù)據(jù)據(jù)文件接接口函數(shù)數(shù)的程序序流程如如圖2所所示,數(shù)數(shù)據(jù)庫接接口函數(shù)數(shù)的程序序流程如如圖3所所示?!癘THHER”表示知知識庫中中的其它它知識數(shù)數(shù)據(jù)塊對對象。開始pClspClsHead開始pClspClsHead終止終止pDo=pClspFirstObjectpCls=NULL?? No Yess pDo=pClspFirstObjectpCls=NULL?? pDoObjectType=?pDo=NULL? YYes NpDoObjectType=?pDo=NULL? pCls=pClsp

10、NextCls pCls=pClspNextClsAB C AB C DAATABBASEE EXCCEL OTHHER DAATAFFILEEpDo=pDopNextObject pDo=pDopNextObject 圖1 接口口程序總總體實現(xiàn)現(xiàn)的程序序流程 3.1 數(shù)數(shù)據(jù)文件件接口函函數(shù)程序序的實現(xiàn)現(xiàn)為了存儲從從外部數(shù)數(shù)據(jù)文件件獲取的的數(shù)據(jù),定定義如下下數(shù)據(jù)結(jié)結(jié)構(gòu):strucct DDataaFilleBuuffeer /數(shù)數(shù)據(jù)文件件緩沖區(qū)區(qū) CSStriing VarriabbleNNamee;/變變量名稱稱 doubble DaataVValuue;/從文文本文件件獲取的的變量值值 s

11、truuct DaataBBufffer *pNexxtPaata;/指指向下一一個變量量的指針針*pDaataBBuffferHHeadd,*ppDattaBuuffeerTaail;/緩緩沖區(qū)的的頭指針針和尾指指針。據(jù)此,繪出出從外部部數(shù)據(jù)文文件獲取取數(shù)據(jù)的的接口函函數(shù)的程程序流程程如圖22。由于于受篇幅幅限制,圖圖2僅給給出了程程序的主主要算法法流程。在在編程時時,還必必須考慮慮具體實實現(xiàn)的細細節(jié),例例如:如如何從一一個數(shù)據(jù)據(jù)行中,確確定數(shù)據(jù)據(jù)項數(shù)量量,找到到Coll列;如如何創(chuàng)建建DattaFiileBBufffer的的鏈表結(jié)結(jié)構(gòu)等。3.2 數(shù)數(shù)據(jù)庫接接口函數(shù)數(shù)程序的的實現(xiàn) 根據(jù)上述知

12、知識庫與與數(shù)據(jù)庫庫接口的的定義格格式以及及知識庫庫內(nèi)部存存儲結(jié)構(gòu)構(gòu),可以以繪制出出數(shù)據(jù)庫庫接口函函數(shù)程序序總體流流程如圖圖3所示示。其中中:D表表示輸入入數(shù)據(jù)表表接口程程序流程程,如圖圖4所示示;E表表示輸出出數(shù)據(jù)表表接口程程序流程程。3.2.11 輸入入數(shù)據(jù)表表接口程程序的實實現(xiàn)為了存儲從從輸入數(shù)數(shù)據(jù)表獲獲取的數(shù)數(shù)據(jù),定定義數(shù)據(jù)據(jù)結(jié)構(gòu)如如下: strucct IInpuutDaataBBufffer /存存儲從數(shù)數(shù)據(jù)庫獲獲得的數(shù)數(shù)據(jù),每每一個變變量建立立一個數(shù)數(shù)據(jù)區(qū) _vaariaant_t DDataaVallue;/可可以存儲儲不同類類型的數(shù)數(shù)據(jù);strucct IInpuutDaata

13、BBufffer *pNNexttDattaVaaluee;;strucct PPremmiseeVarriabbleBBufffer /前前提變量量(自變變量)集集區(qū),接接受來自自數(shù)據(jù)庫庫的數(shù)據(jù)據(jù) CSttrinng VVariiablleNaame;strucct IInpuutDaataBBufffer *pIInpuutDaataBBuffferHHeadd;/指向數(shù)數(shù)據(jù)區(qū)頭頭指針。strucct PPremmiseeVarriabbleBBufffer *pNNexttVarriabble;/指指向下一一個變量量。*pPrremiiseVVariiablleBuuffeerHeead

14、,pPrremiiseVVariiablleBuuffeerTaail;據(jù)此,可以以繪制出出知識庫庫從外部部數(shù)據(jù)庫庫獲取數(shù)數(shù)據(jù)的接接口程序序流程如如圖4所所示。 AApTL2=pTL1;nFind1=pTL2-Text。Find(”O(jiān)PEN”)定義變量、初始化pTL1=pDopTextLinepTL1=pTL1pNextLine pTL2=pTL1;nFind1=pTL2-Text。Find(”O(jiān)PEN”)定義變量、初始化pTL1=pDopTextLinepTL1=pTL1pNextLinenfind1-1?nfind1-1? Noo YeespTL1Text=pTL1Text=”END DA

15、TAFILE” ?找出文件名稱、文件句柄名稱,并且打開數(shù)據(jù)文件(設(shè)對象名為MyFile)。Ptl2pNextLine Noo找出文件名稱、文件句柄名稱,并且打開數(shù)據(jù)文件(設(shè)對象名為MyFile)。Ptl2pNextLine Yess 返回 返回Ptl2-Text=”END DATAFILE”? Yess Ptl2-Text=”END DATAFILE”?pTL1=pTL1-pNextLine YYes pTL1=pTL1-pNextLine pTL2pNextLine在Ptl2-Text中,找出變量名稱 VariableName,行號(Row)和列號(Col);MyFileSeekToBegi

16、n();Bool flag=MyFileReadString(mDataLine);設(shè)MyFile當(dāng)前行nLine=1;pTL2pNextLine在Ptl2-Text中,找出變量名稱 VariableName,行號(Row)和列號(Col);MyFileSeekToBegin();Bool flag=MyFileReadString(mDataLine);設(shè)MyFile當(dāng)前行nLine=1; 在Ptl2-Text中是否存在“READ”和文件句柄名稱? N在Ptl2-Text中是否存在“READ”和文件句柄名稱? Yess Noo Flag=False? Noo YYesFlag=False?

17、在mDataLine中找Col列Row=nLine? 在mDataLine中找Col列Row=nLine?顯示消息通知用戶存在錯誤 Noo Yess 顯示消息通知用戶存在錯誤flag=MyFile.ReadStirng(mDataLine);nLine+;找到否? NNo flag=MyFile.ReadStirng(mDataLine);nLine+;找到否?將數(shù)據(jù)和VariableName采用DataFIleBuffer結(jié)構(gòu)存入內(nèi)存 將數(shù)據(jù)和VariableName采用DataFIleBuffer結(jié)構(gòu)存入內(nèi)存 YYes 圖2 從外外部數(shù)據(jù)據(jù)文件獲獲取數(shù)據(jù)據(jù)的接口口函數(shù)程程序流程程BBnFi

18、nd1=pTL1-TextFindnFind1=pTL1-TextFind(“CONNECTION”)定義變量、初始化pTL1=pDopNextLinepTL1=pTL1pNextLinenFind1-1? 定義變量、初始化pTL1=pDopNextLinepTL1=pTL1pNextLinenFind1-1? NNo 找出ADO連接對象名稱和連接字符串,并打開連接 Yess找出ADO連接對象名稱和連接字符串,并打開連接pTL1-Text=”END DATABASE” pTL1-Text=”END DATABASE”pIT=pTL1-pNextLine;pOT=pTL1-pNextLinepI

19、T=pTL1-pNextLine;pOT=pTL1-pNextLine Yess Noo 返回pIT-Text=”INPUTTABLE” 返回pIT-Text=”INPUTTABLE”pTL1=pTL1-pNextLine pTL1=pTL1-pNextLinepIT=pIT-pNextLineD Yees pIT=pIT-pNextLineDpOT=pOT-pNextLine NopOT=pOT-pNextLinepOT-Text=”O(jiān)UTPUTTAB?LE ”pIT-Text=”END DATABASE”? Yees NNo pOT-Text=”O(jiān)UTPUTTAB?LE ”pIT-Text

20、=”END DATABASE”? EpOT-Text=”END DATABASE”? No EpOT-Text=”END DATABASE”? Noo Yees Yes 圖3 數(shù)據(jù)據(jù)庫接口口程序?qū)崒崿F(xiàn)的總總體流程程 D返回 D返回pIT=pIT-pNextLine pIT=pIT-pNextLinepRec-Text=”END INPUTTABLE”? Yess pRec-Text=”END INPUTTABLE”?pIT-Text=”END INPUTTABLE”? pIT-Text=”END INPUTTABLE”? Yess No NNo pRec=pIT; pRec=pIT; 在pRe

21、c-Text中,查找記錄集對象名稱RecName、已經(jīng)打開的連接對象名稱conName, 找到否?pRec=pRec-pNextLine NNo 在pRec-Text中,查找記錄集對象名稱RecName、已經(jīng)打開的連接對象名稱conName, 找到否?pRec=pRec-pNextLine 從pRec-Text截出SQL命令字符串,執(zhí)行。 從pRec-Text截出SQL命令字符串,執(zhí)行。 Yess 在pField-Text中找RecNamepField-Text=”END INPUTTABLE”? Yess 在pField-Text中找RecNamepField-Text=”END INPUT

22、TABLE”?pField=pRec-pNextLine pField=pRec-pNextLine將第nField字段值存入InputDataBuffer內(nèi)存緩沖區(qū)RecNameMoveNext() Noo 將第nField字段值存入InputDataBuffer內(nèi)存緩沖區(qū)RecNameMoveNext()pField=pField-pNextLine找到否? pField=pField-pNextLine找到否? Yess Noo YYes RecName.GetadoEOF()?在pField-Text中截出變量名,并且存入PremiseVariableBuffer緩沖區(qū);截出字段序號n

23、Field NNo RecName.GetadoEOF()?在pField-Text中截出變量名,并且存入PremiseVariableBuffer緩沖區(qū);截出字段序號nField 圖4 從外外部數(shù)據(jù)據(jù)庫獲取取數(shù)據(jù)的的接口程程序流程程3.2.22 輸出出數(shù)據(jù)表表接口程程序的實實現(xiàn) 輸出數(shù)據(jù)表表用來存存儲推理理機對表表達式或或模型的的求解結(jié)結(jié)果。因因此,需需要在推推理機運運行之前前,根據(jù)據(jù)輸出數(shù)數(shù)據(jù)表接接口描述述的定義義,準(zhǔn)確確地建立立結(jié)果變變量與打打開數(shù)據(jù)據(jù)表的記記錄集對對象之間間以及記記錄集對對象與連連接對象象之間的的鏈接關(guān)關(guān)系,使使得推理理完成后后,系統(tǒng)統(tǒng)能夠正正確地連連接數(shù)據(jù)據(jù)庫和打打開

24、數(shù)據(jù)據(jù)表,將將求解結(jié)結(jié)果存入入到數(shù)據(jù)據(jù)表中。為為此,定定義如下下數(shù)據(jù)結(jié)結(jié)構(gòu):strucct OOutpputDDataaBuffferr/推推理機將將結(jié)果寫寫入該區(qū)區(qū)域 CSttrinng CConcclVaariaableeNamme;/推理理完成以以后,按按變量名名稱排序序 _Vaariaan_tt DaataVValuue;/可以以存儲不不同類型型的數(shù)據(jù)據(jù); strructt OuutpuutDaataBBufffer *pNNexttDattaVaaluee;*pOuutpuutDaataBBuffferHHeadd,*ppOuttputtDattaBuuffeerTaail;stru

25、cct CConcclVaariaableeBuffferr /結(jié)果變變量緩沖沖區(qū) CSttrinng VVariiablleNaame; CSttrinng CConOObjeectNNamee;/排序 可以減減少連接接數(shù)據(jù)庫庫的次數(shù)數(shù) CSttrinng RRecOObjeectNNamee;/排序 可以減減少打開開記錄集集的次數(shù)數(shù) intt nFieeld;/字字段序號號 strructt OuutpuutDaataBBufffer *pOOutpputDDataaBuffferr;/指向向輸出數(shù)數(shù)據(jù)區(qū)的的指針 strructt CooncllVarriabbleBBufffer *pN

26、NexttVarriabbleNNamee;*pCooncllVarriabbleHHeadd,*ppConnclVVariiablleTaail;strucct CConnnecOObjeectNNamee /連接對對象緩沖沖區(qū) CSttrinng OObjeectNNamee; CSttrinng CConnnecttionnStrringg; strructt CoonneecObbjecctNaame *pNNexttConnneccObjjecttNamme; *ppConnneccObjjecttNammeHeead;strucct RRecOObjeectNNamee /記錄集集對象緩緩沖區(qū) CSttrinng OObjeectNNamee;/記錄集集對象名名稱 CSttrinng RRecSStriing;/SSQL語語句字符符串 strructt ReecObbjecctNaame *pRRecOObjeectNNamee; *pRRecOObjeectNNameeheaad;程序?qū)崿F(xiàn)流流程與圖圖4相類類似,不不同之處處是:在在初始化化階段,不不需要連連接數(shù)據(jù)據(jù)庫和打打開數(shù)據(jù)據(jù)表,將將找出的的結(jié)果變變量與打打開數(shù)據(jù)據(jù)表的記記錄集對對象之間間以及連連接對象象之間的的對應(yīng)關(guān)關(guān)系,存存到上述述結(jié)構(gòu)所所定義的的鏈表中中。推

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論