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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、者者將另撰撰文介紹紹。2 接接口的描描述定義義在生產(chǎn)成成本管理理知識(shí)庫(kù)庫(kù)中,以以知識(shí)數(shù)數(shù)據(jù)塊的的形式對(duì)對(duì)外部數(shù)數(shù)據(jù)源進(jìn)進(jìn)行如下下描述定定義。2.1 文本數(shù)數(shù)據(jù)文件件接口的的定義格格式 DDATAAFILLE /可可以定義義多個(gè)文文件的接接口。 =OPEEN()/在在一個(gè)接接口中,可以定定義任意意個(gè)輸入入數(shù)據(jù)文文件。 =REAAD(,行號(hào),列號(hào))/可可以有多多行。 | /或 WITTH =REAAD(行行號(hào),列列號(hào)) /可可以有多多行。 ENDD WIITH EEND DATTAFIILE 2.2數(shù)數(shù)據(jù)庫(kù)接接口的定定義格式式 DAATABBASEE /在一一個(gè)知識(shí)識(shí)庫(kù)中可可以定義義多個(gè)這這樣的接

4、接口 COONNEECTIION = /可以以同時(shí)定定義多個(gè)個(gè)連接對(duì)對(duì)象 INNPUTTTABBLE /每每個(gè)接口口只能定定義一個(gè)個(gè)輸入塊塊。 REECORRDSEET =,CONNNECCTIOON /可以以定義多多個(gè)記錄錄集對(duì)象象名。 變量=.FIIELDDS(字字段序號(hào)號(hào))/可以有有多行 | /或 WITTH ADOO記錄集集對(duì)象名名 =.FIIELDDS(字字段序號(hào)號(hào)) /可以以有多行行 ENDD WIITH ENND IINPUUTTAABLEE OUTTPUTTTABBLE /定定義與存存儲(chǔ)結(jié)果果數(shù)據(jù)表表的接口口,每個(gè)個(gè)接口最最多可以以定義一一個(gè)輸出出塊。 RECCORDDSETT

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

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

7、識(shí)數(shù)據(jù)塊塊對(duì)象索索引表 CSStriing ObjeecTypee;/對(duì)象類(lèi)類(lèi)型struuct LinneTextt *ppTexxtLiine;/對(duì)對(duì)象首行行在LiineTTextt中的指指針struuct DattaObbjecct *pNexxtObjeect;/指向向下一個(gè)個(gè)知識(shí)數(shù)數(shù)據(jù)塊對(duì)對(duì)象。struuct KnoowCllsNaame /存存儲(chǔ)知識(shí)識(shí)類(lèi)名稱稱定義語(yǔ)語(yǔ)句文本本 CCStrringg CllsNaame;/知知識(shí)類(lèi)名名稱struuct KnoowCllsNaame *pNNexttClss;/下知識(shí)識(shí)類(lèi)名稱稱的指針針struuct LliineTTextt *ppTex

8、xtLiine;/知知識(shí)類(lèi)名名稱在LLineeTexxt中的的指針struuct DattaObbjecct *pFirrstOObjeect;/指指向知識(shí)識(shí)類(lèi)中第第一個(gè)知知識(shí)數(shù)據(jù)據(jù)塊對(duì)象象的指針針struuct Methhod *pFFirsstMethhod;/指指向知識(shí)識(shí)類(lèi)中第第一個(gè)知知識(shí)方法法的指針針*pCClsHHeadd;/指向知知識(shí)類(lèi)的的頭指針針。根據(jù)上述述數(shù)據(jù)結(jié)結(jié)構(gòu)的定定義,接接口程序序總體實(shí)實(shí)現(xiàn)的程程序流程程如圖11所示。在圖11中,當(dāng)當(dāng)pDoo-OObjeectTTypee等于“DATTAFIILE“或“DATTABAASE”或“EXCCEL”時(shí),系系統(tǒng)分別別調(diào)用從從文本數(shù)

9、數(shù)據(jù)文件件、數(shù)據(jù)據(jù)庫(kù)和EEXCEEL電子子表獲取取數(shù)據(jù)的的接口函函數(shù)。其其中:文文本數(shù)據(jù)據(jù)文件接接口函數(shù)數(shù)的程序序流程如如圖2所所示,數(shù)數(shù)據(jù)庫(kù)接接口函數(shù)數(shù)的程序序流程如如圖3所所示?!癘THHER”表示知知識(shí)庫(kù)中中的其它它知識(shí)數(shù)數(shù)據(jù)塊對(duì)對(duì)象。開(kāi)始pClspClsHead終止pDo=pClspFirstObjectpCls=NULL?? Noo YesspDoObjectType=?pDo=NULL? Yess NopCls=pClspNextClsAB C DDATAABASSE EXXCELL OTTHERR DDATAAFILLEpDo=pDopNextObject圖1 接接口程序序總體實(shí)

10、實(shí)現(xiàn)的程程序流程程3.1 數(shù)據(jù)文文件接口口函數(shù)程程序的實(shí)實(shí)現(xiàn)為了存儲(chǔ)儲(chǔ)從外部部數(shù)據(jù)文文件獲取取的數(shù)據(jù)據(jù),定義義如下數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu):struuct DattaFiileBBufffer /數(shù)據(jù)文文件緩沖沖區(qū) CSStriing VarriabbleNNamee;/變變量名稱稱 douublee DDataaVallue;/從從文本文文件獲取取的變量量值 strructt DDataaBuffferr *ppNexxtPaata;/指指向下一一個(gè)變量量的指針針*pDDataaBuffferrHeaad,*pDaataBBuffferTTaill;/緩沖區(qū)區(qū)的頭指指針和尾尾指針。據(jù)此,繪繪出從外外部數(shù)

11、據(jù)據(jù)文件獲獲取數(shù)據(jù)據(jù)的接口口函數(shù)的的程序流流程如圖圖2。由由于受篇篇幅限制制,圖22僅給出出了程序序的主要要算法流流程。在在編程時(shí)時(shí),還必必須考慮慮具體實(shí)實(shí)現(xiàn)的細(xì)細(xì)節(jié),例例如:如如何從一一個(gè)數(shù)據(jù)據(jù)行中,確定數(shù)數(shù)據(jù)項(xiàng)數(shù)數(shù)量,找找到Cool列;如何創(chuàng)創(chuàng)建DaataFFileeBuffferr的鏈表表結(jié)構(gòu)等等。3.2 數(shù)據(jù)庫(kù)庫(kù)接口函函數(shù)程序序的實(shí)現(xiàn)現(xiàn) 根據(jù)上述述知識(shí)庫(kù)庫(kù)與數(shù)據(jù)據(jù)庫(kù)接口口的定義義格式以以及知識(shí)識(shí)庫(kù)內(nèi)部部存儲(chǔ)結(jié)結(jié)構(gòu),可可以繪制制出數(shù)據(jù)據(jù)庫(kù)接口口函數(shù)程程序總體體流程如如圖3所所示。其其中:DD表示輸輸入數(shù)據(jù)據(jù)表接口口程序流流程,如如圖4所所示;EE表示輸輸出數(shù)據(jù)據(jù)表接口口程序流流程。3.2

12、.1 輸輸入數(shù)據(jù)據(jù)表接口口程序的的實(shí)現(xiàn)為了存儲(chǔ)儲(chǔ)從輸入入數(shù)據(jù)表表獲取的的數(shù)據(jù),定義數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)如下:struuct InpputDDataaBuffferr /存儲(chǔ)從從數(shù)據(jù)庫(kù)庫(kù)獲得的的數(shù)據(jù),每一個(gè)個(gè)變量建建立一個(gè)個(gè)數(shù)據(jù)區(qū)區(qū) _vvariiantt_t DattaVaaluee;/可以存存儲(chǔ)不同同類(lèi)型的的數(shù)據(jù);struuct InpputDDataaBuffferr *ppNexxtDaataVValuue;;struuct PreemisseVaariaableeBuffferr /前提變變量(自自變量)集區(qū),接受來(lái)來(lái)自數(shù)據(jù)據(jù)庫(kù)的數(shù)數(shù)據(jù) CSStriing VarriabbleNNamee;s

13、truuct InpputDDataaBuffferr *ppInpputDDataaBuffferrHeaad;/指向向數(shù)據(jù)區(qū)區(qū)頭指針針。struuct PreemisseVaariaableeBuffferr *ppNexxtVaariaablee;/指指向下一一個(gè)變量量。*pPPremmiseeVarriabbleBBuffferHHeadd,pPPremmiseeVarriabbleBBuffferTTaill;據(jù)此,可可以繪制制出知識(shí)識(shí)庫(kù)從外外部數(shù)據(jù)據(jù)庫(kù)獲取取數(shù)據(jù)的的接口程程序流程程如圖44所示。 ApTL2=pTL1;nFind1=pTL2-Text。Find(”O(jiān)PEN”)定義變

14、量、初始化pTL1=pDopTextLinepTL1=pTL1pNextLinenfind1-1? NNo YYespTL1Text=”END DATAFILE” ?找出文件名稱、文件句柄名稱,并且打開(kāi)數(shù)據(jù)文件(設(shè)對(duì)象名為MyFile)。Ptl2pNextLine NNo Yees 返回Ptl2-Text=”END DATAFILE”? Yees pTL1=pTL1-pNextLine Yess pTL2pNextLine在Ptl2-Text中,找出變量名稱 VariableName,行號(hào)(Row)和列號(hào)(Col);MyFileSeekToBegin();Bool flag=MyFileRea

15、dString(mDataLine);設(shè)MyFile當(dāng)前行nLine=1;在Ptl2-Text中是否存在“READ”和文件句柄名稱? NNo Yes No Flag=False? NNo Yess在mDataLine中找Col列Row=nLine?顯示消息通知用戶存在錯(cuò)誤 NNo Yees flag=MyFile.ReadStirng(mDataLine);nLine+;找到否? No 將數(shù)據(jù)和VariableName采用DataFIleBuffer結(jié)構(gòu)存入內(nèi)存 Yess圖2 從從外部數(shù)數(shù)據(jù)文件件獲取數(shù)數(shù)據(jù)的接接口函數(shù)數(shù)程序流流程BnFind1=pTL1-TextFind(“CONNECTIO

16、N”)定義變量、初始化pTL1=pDopNextLinepTL1=pTL1pNextLinenFind1-1? No 找出ADO連接對(duì)象名稱和連接字符串,并打開(kāi)連接 YeespTL1-Text=”END DATABASE”pIT=pTL1-pNextLine;pOT=pTL1-pNextLine Yees NNo 返回pIT-Text=”INPUTTABLE”pTL1=pTL1-pNextLinepIT=pIT-pNextLineD YYes pOT=pOT-pNextLine NoopOT-Text=”O(jiān)UTPUTTAB?LE ”pIT-Text=”END DATABASE”? YYes N

17、o EpOT-Text=”END DATABASE”? Noo NNo YYes Yes 圖3 數(shù)數(shù)據(jù)庫(kù)接接口程序序?qū)崿F(xiàn)的的總體流流程D返回pIT=pIT-pNextLinepRec-Text=”END INPUTTABLE”? Yess pIT-Text=”END INPUTTABLE”? Yees Noo No pRec=pIT;在pRec-Text中,查找記錄集對(duì)象名稱RecName、已經(jīng)打開(kāi)的連接對(duì)象名稱conName, 找到否?pRec=pRec-pNextLine No 從pRec-Text截出SQL命令字符串,執(zhí)行。 Yees 在pField-Text中找RecNamepFiel

18、d-Text=”END INPUTTABLE”? Yees pField=pRec-pNextLine將第nField字段值存入InputDataBuffer內(nèi)存緩沖區(qū)RecNameMoveNext() Noo pField=pField-pNextLine找到否? Yees NNo Yess RecName.GetadoEOF()?在pField-Text中截出變量名,并且存入PremiseVariableBuffer緩沖區(qū);截出字段序號(hào)nField No 圖4 從從外部數(shù)數(shù)據(jù)庫(kù)獲獲取數(shù)據(jù)據(jù)的接口口程序流流程3.2.2 輸輸出數(shù)據(jù)據(jù)表接口口程序的的實(shí)現(xiàn) 輸出數(shù)據(jù)據(jù)表用來(lái)來(lái)存儲(chǔ)推推理機(jī)對(duì)對(duì)表達(dá)

19、式式或模型型的求解解結(jié)果。因此,需要在在推理機(jī)機(jī)運(yùn)行之之前,根根據(jù)輸出出數(shù)據(jù)表表接口描描述的定定義,準(zhǔn)準(zhǔn)確地建建立結(jié)果果變量與與打開(kāi)數(shù)數(shù)據(jù)表的的記錄集集對(duì)象之之間以及及記錄集集對(duì)象與與連接對(duì)對(duì)象之間間的鏈接接關(guān)系,使得推推理完成成后,系系統(tǒng)能夠夠正確地地連接數(shù)數(shù)據(jù)庫(kù)和和打開(kāi)數(shù)數(shù)據(jù)表,將求解解結(jié)果存存入到數(shù)數(shù)據(jù)表中中。為此此,定義義如下數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu):struuct OuttputtDattaBuuffeer/推理機(jī)機(jī)將結(jié)果果寫(xiě)入該該區(qū)域 CSStriing ConnclVVariiablleNaame;/推推理完成成以后,按變量量名稱排排序 _VVariian_t DaataVValuue;/可

20、以以存儲(chǔ)不不同類(lèi)型型的數(shù)據(jù)據(jù); sttrucct OOutpputDDataaBuffferr *ppNexxtDaataVValuue;*pOOutpputDDataaBuffferrHeaad,*pOuutpuutDaataBBuffferTTaill;struuct ConnclVVariiablleBuuffeer /結(jié)果果變量緩緩沖區(qū) CSStriing VarriabbleNNamee; CSStriing ConnObjjecttNamme;/排序序 可以以減少連連接數(shù)據(jù)據(jù)庫(kù)的次次數(shù) CSStriing ReccObjjecttNamme;/排序序 可以以減少打打開(kāi)記錄錄集的次次

21、數(shù)int nFieeld;/字字段序號(hào)號(hào) sttrucct OOutpputDDataaBuffferr *ppOuttputtDattaBuuffeer;/指向向輸出數(shù)數(shù)據(jù)區(qū)的的指針 sttrucct CConcclVaariaableeBuffferr *ppNexxtVaariaableeNamme;*pCConcclVaariaableeHeaad,*pCooncllVarriabbleTTaill;struuct ConnneccObjjecttNamme /連接接對(duì)象緩緩沖區(qū) CSStriing ObjjecttNamme; CSStriing ConnnecctioonSttri

22、nng; sttrucct CConnnecOObjeectNNamee *ppNexxtCoonneecObbjecctNaame; *pCoonneecObbjecctNaameHHeadd;struuct ReccObjjecttNamme /記錄錄集對(duì)象象緩沖區(qū)區(qū) CSStriing ObjjecttNamme;/記錄錄集對(duì)象象名稱CStrringg ReecSttrinng;/SQQL語(yǔ)句句字符串串struuct ReccObjjecttNamme *pReecObbjecctNaame; *ppReccObjjecttNammeheead;程序?qū)崿F(xiàn)現(xiàn)流程與與圖4相相類(lèi)似,不同之之處是:在初始始化階段段,不需需要連接接數(shù)據(jù)庫(kù)庫(kù)和打開(kāi)開(kāi)數(shù)據(jù)表表,將找找出的結(jié)結(jié)果變量量與打開(kāi)開(kāi)數(shù)據(jù)表表的記錄錄集對(duì)象象之間以以及連接接對(duì)象之之間的對(duì)對(duì)應(yīng)關(guān)系系,存到到上述結(jié)結(jié)構(gòu)所定定義的鏈鏈表中。推理機(jī)機(jī)在推理理完成以以后,通通過(guò)指向向結(jié)果變變量緩沖沖區(qū)的頭頭指針獲獲得整個(gè)個(gè)鏈表的的入口,將結(jié)果果數(shù)據(jù)存存入輸出出數(shù)據(jù)表表中。 4 結(jié)結(jié)束語(yǔ)本文開(kāi)發(fā)發(fā)的知識(shí)識(shí)庫(kù)系統(tǒng)統(tǒng)與外部部數(shù)據(jù)源源的接口口作為生生產(chǎn)成本本管理知知識(shí)庫(kù)系系統(tǒng)開(kāi)發(fā)發(fā)工具的的重要組組成

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論