Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

VETAKA INTELIGENCIJA

1. Ekspertni sistemi

ES (Ekspertni sistemi) predstavljaju jednu od najznaajnijih oblasti istraivanja vetake inteligencije. To su programi koji reavaju realne probleme iz oblasti medicine, finansija, vojne probleme i dr. koji inae zahtevaju ljudsku ekspertizu. Pri tome rezonuju slino ljudima i to na osnovu znanja iz ogranienog domena. Njihova snaga lei upravo u mogunosti da u svakom trenutku zakljuivanja imaju na raspolaganju svo znanje iz neke oblasti i da zahvaljujui velikoj brzini raunara to znanje mogu za kratko vreme "pretresti" i izvui neke zakljuke. Oni ne mogu reiti probleme koje ni ljudi nisu u stanju da ree. ES ima tri komponente: bazu znanja (knowledge base) mehanizam izvoenja (inference engine) upravljaki mehanizam (control engine) Baza znanja sadri znanje o odreenom problemu, dato u simbolikom obliku. Mehanizam izvoenja interepretira znanje u bazi znanja, sprovodi dedukcije i izvesne modifikacije baze znanja. Upravljaki mehanizam organizuje i uravlja strategijama koje se koriste u procesu zakljuivanja. Pored ovih komponenti ES obino sadri i : podsistem za prikupljanje znanja podsistem za objanjavanje podsistem za komunikaciju sa korisnikom radnu memoriju. Ova tri prva mehanizma su nezavisni jedan od drugog i dok su prvi ekspertni sistemi uvek razvijani od nule, ubrzo je bilo uoeno da je mogue mehanizme za zakljuivanje i upravljanje isporuivati i koristiti nezavisno od baze znanja. Ove celine obogaenje sistemom za komunikaciju, ponekad i za akviziciju znanja i objanjavanje, zajedno ine koljku ( shell ) ekspernog sistema. INSIGHT 2+ je upravo jedan shell, koji spada u manje alate za razvoj ekspertnih sistema zasnovanih na pravilima. I2+ meni sadri sledee funkcije:
Run a knowledge base Edit a knowledge base Compile a knowledge base Run a DBPAS program Edit a DBPAS program Compile a DBPAS program Edit a data base

Za kreiranje baze znanja koja e biti osnov naeg ekspertnog sistema koristi se Production Rule Language (PRL). To je specifian jezik koji omoguuje kodiranje ekspertskog znanja u vidu pravila oblika IF...THEN...ELSE. Baza znanja se PRL jezikom pie u bilo kom tekstualnom editoru (moe i u I2+ editoru), i sauva sa ekstenzijom .PRL. Potom se funkcijom Compile a knowledge base prevodi u verziju sa ekstenzijom .KNB koja se zatim moe startovati iz I2+ funkcijom Run a knowledge base. Vrlo esto je

potrebno da ekspertni sistem nad odreenim podacima obavi neke f-je koje nisu omoguene PRL-om. Tada se mogu koristiti programi sa ekstenzijom .EXE ili .COM koji su napisani u bilo kom drugom jeziku, i koji e biti aktivirani od strane baze znanja. Takoe je mogue povezati bazu znanja sa bazom podataka i to preko DBPAS programa. DBPAS je jezik slian Pascalu, ali znatno siromaniji. Program kada se napie ima ekstenziju .PAS a kada se kompajlira .PCO. Iz I2+ mogue je kreirati bazu podataka sa ekstenzijom .DBF. Mogue je, takoe, vriti ulaanvanje vie baza znanja, tj. aktivirati jednu bazu znanja iz pravila neke druge baze.

2. PRL
PRL je jezik koji omoguuje da se znanje i informacije o nekom problemu uoblie u bazu znanja. PRL je dizajniran tako da expert sam, bez pomoi programera, moe napraviti ekspertni sistem. On ima veoma malo gramatikih pravila i nekolicinu rezevisanih rei i simbola to ga ini nezavisnim od engleskog jezika, tako se znanje praktino predstavlja na onom jeziku koji je blizak ekspertu. Rezervisane rei PRL-a se MORAJU PISATI VELIKIM SLOVIMA. Struktura baze znanja: 1. Naslov i tekst koji ide ispod naslova TITLE ... DISPLAY 2. Deklaracija podataka zajednikih za ulanane baze SHARED SIMPLEFACT fact1, fact2 SHARED OBJECT fact3 SHARED NUMERIC fact4 SHARED STRING fact5 3. Deklaracija tipova podataka SIMPLEFACT fact1, fact2 OBJECT fact3 NUMERIC fact4 STRING fact5 4. Inicijalizacija parametara INIT REINIT FORGET 5. Selektori kontrolnih naredbi FILE THRESHOLD CONFIDENCE GOALSELECT MULTI EXHAUSTIVE SUPPRESS 6. Ciljevi baze znanja 7. Pravila baze znanja

8. Informacioni display DISPLAY EXPAND TEXT 9. END Meutim ne mora svaka baza znanja sadrati sve ove elemente. Ono minimalno to jedna baza znanja mora da ima je : - TITLE - cilj ili ciljeve - END Na primer ako otkucate:
TITLE Prvi primer 1. Moj cilj END

iskompajlirate i startujete, ES nee moi da doe ni do kakvog zakljuka jer nije imao pravila na osnovu kojih bi ih izveo. Prvi red u vaoj bazi znanja mora biti naslov koji e kada startujete bazu znanja biti na vrhu ekrana da bi znali sa kojom bazom radite. To moe biti bilo koji tekst koji ne sadi rezervisane rei PRL-a i vie od 60 karaktera, i mora biti u istom redu sa rezervisanom rei TITLE. Pored toga na poetku moe biti ispisan krai opis ES-a korienjem kljune rei DISPLAY. PRL baze znanja koriste produkciona pravila kako osnovni vid reprezentacije znanja. Korienje pravila za predstavljanje znanja ini da baza znanja bude organizovana slino kao to ovek razmilja prilikom procesa zakljuivanja. Redosled pravila u bazi znanja nije bitan i uvek se mogu dodavati nova pravila. Svako produkciono pravilo ima minimum tri dela: naziv, uslov i zakljuak. Mogue je definisati i vie uslova koji se vezuju AND ili OR logikim veznicima. Takoe se moe definisati i vie zakljuaka vezanih sa AND. Nakon rei THEN mora stajati podatak tipa SIMPLEFACT ili tipa OBJECTFACT. Ako uslovi pravila nisu ispunjeni zakljuak iza THEN se ne moe doneti. Ali se tada prelazi na ELSE deo koji je opcion. Podatak tipa simplefact je bilo koji iskaz koji moe biti taan ili netaan. Naziv simlefact-a moe biti bilo koji string sastavljen od karaktera i blankova, koji ne sme poinjati brojem. Prilikom kompajliranja baze znanja kompajler e prepoznati podatke tipa simplefact i generisati odgovarajue pitanje da bi nas pitao da li je simplfact true ili false. Primer:
TITLE Prvi primer 1. Moj cilj RULE za simplefact IF auto je Jaguar THEN auto je skup END

Ponovo nee biti zakljuka jer ne postoji nikakva veza izmeu cilja i zakljuka pravila. Ali ako izmenimo cilj i stavimo:

TITLE Prvi primer 1. Auto je skup RULE za simplefact IF auto je Jaguar THEN auto je skup END

onda e proi kroz pravilo nai simplefact, generisati odgovarajue pitanje pomou koga e saznati vrednost za simple fact auto je Jaguar i na osnovu toga doneti zakljuak koji je ujedno i cilj baze znanja. Ako stavimo auto je Jaguar = FALSE, opet neemo doi do cilja baze jer taj sluaj ovde nije obraen, ali dodamo i ELSE deo:
TITLE Prvi primer 1. Auto je skup RULE za simplefact IF auto je Jaguar THEN auto je skup ELSE auto mozda nije skup END

bie zakljueno da auto mozda nije skup, iako ponovo neemo doi do cilja. Uslov jednog pravila moe biti zakljuak nekog drugog pravila pa da bi se u narednom primeru dolo do zakljuka u pravilu 2 mora se prethodno doi do zakljuka u pravilu 1, tj. mora biti ispunjen uslov da auto na haubi ima figuru jaguara.
TITLE Prvi primer 1. Auto je skup RULE 1 IF auto na haubi ima figuru jaguara THEN auto je Jaguar RULE 2 IF auto je Jaguar THEN auto je skup ELSE auto mozda nije skup END

Kao to smo videli svaka baza znanja mora imati bar jedan cilj GOAL statement. Ciljevi nam omoguuju da imenujemo sve glavne zakljuke do kojih se moe doi rezonovanjem u bazi znanja ili sve hipoteze koje je naa baza u stanju da dokae. Cilj se sastoji od iskaza koji opisuje neki zakljuak do koga se u bazi znanja moe doi. Ispred iskaza mora stajati redni broj koji slui razdvajanju ciljeva na sekcije grupe ciljeva. Na taj nain grupe ciljeva se kasnije mogu koristiti od strane I2+ da bi naveo korisnika da odabere posebnu oblast interesovanja. U okviru svake grupe se mogu definisati podciljevi koji su u vezi sa glavnim ciljem grupe. Nije neophodno da ciljevi budu vezani za zakljuke pravila. Ipak, kao to se moe videti u prethodnom primeru smisao I2+ je da doe do cilja korienjem pravila i informacija koje dobija od korisnika; tako da ako vai ciljevi nisu povezani sa zakljucima pravila baza znanja vam nee biti od naroite koristi. Baza znanja koja poseduje samo jedan cilj i pravila koja idu uz njega je orijentisana na reavanje jednog odreenog problema. Prilikom izvoenja takve baze nije mogue vriti eventualni izbor cilja i time suziti oblast pretraivanja. Meutim moe se definisati i mnogo sloenija struktura ciljeva:

1. ivotinja je sisar 2. ivotinja je ptica 2.1 Ptica je detli 2.2 Ptica je zeba 2.2.1 To je zlatna zeba 2.2.2 To je smea zeba 2.3 Ptica je golub 3. ivotinja je riba 4. ivotinja je gmizav

pri emu se do podciljeva nekog cilja moe doi samo ako se prvo utvrdi "nadcilj". Ako se radi sa velikim bazama znanja, korisnik esto mora da odgovara na veliki broj pitanja koja moda nemaju veze sa njegovim problemom, to poveava vreme reavanja problema. Zato I2+ prua mogunost da se korisniku ponudi spisak ciljeva ili podciljeva nekog cilja, pa da on izborom nekog od njih suzi oblast pretraivanja (ES e tada pokuati da dokae iyabrani cilj, ili e obavestiti da je to nemogue) ili da odgovori sa unknown, pa da ES sam na osnovu prikupljenih podataka doe do nekog cilja. Do sada obraeni primeri pravila su imali uslove pravila spojene logikim veznikom AND to je znailo da se za izvoenje zakljuka pravila moraju ispuniti svi uslovi. I2+ dozvoljava vezivanje uslova i veznikom OR koji obezbeuje da ispunjenost jednog od dva uslova njime vezanih utie na donoenje zakljuka pravila. Primer:
RULE za or IF A AND B AND C OR D THEN E

Ovo je isto to i: A B (C D). Dakle, prvo se proverava uslov A, ako on vai proverava se uslov B (ako ne vai zakljuak se ne moe doneti), ako i on vai razmatra se uslov C D. Sada je dovoljno da jedan od ova dva uslova bude ispunjen, ako je ispunjen C uslov D se i ne razmatra. ta se deava kada se primenjuje viestruki OR:
RULE za or IF A AND B AND C OR D OR X OR Y THEN E

Ovde: A B (C D X Y). Da bi se dolo do zakljuka E moraju biti ispunjeni A, B i bilo koji od uslova C, D, X ili Y. I2+ takoe podrava upotrebu logikog prefiksa NOT:
RULE IF A AND AND THEN za not B NOT C D

Da bi se dolo do zakljuka D moraju biti ispunjeni A i B i treba da ne vai C.

OBJECT ATTRIBUTE FACT (OA) tip podataka se koristi kada je potrebno odreenom objektu dodeliti vie razliitih atributa. Prilikom dekalaracije podataka navodi se samo naziv objekta, dok se razliite osobine tog objekta vezuju za njega u samim pravilima i to pomou kljunih rei IS, ARE ili znakom \. Primer:
TITLE Primer dva OBJECT kucica 1. vuk ce je lako oduvati 2. vuk ce je tesko oduvati 3. vuk je nece oduvati RULE 1 IF kucica IS od slame THEN vuk ce je lako oduvati RULE 2 IF kucica IS od drveta THEN vuk ce je tesko oduvati RULE 3 IF kucica IS od cigle THEN vuk je nece oduvati END

U primeru je deklarisan objekat kucica za koji se moe vezati jedan od atributa: od slame, od drveta, od cigle. I2+ e proi kroz sva pravila i pokupiti sve te atribute da bi korisniku ponudio da izabere jedan njih koji e tada postati vezan za objekat kucica. U zavisnosti od toga koji je atribut dodeljen objektu kucica doi e se do nekog od tri cilja u bazi. Primer:
TITLE Vezbe1 SIMPLEFACT Povisena tempeatura AND Bolovi u misicima OBJECT Kasalj NUMERIC Sedimentacija 1. Grip 2. Bronhitis RULE za grip IF Povisena temperatura AND Bolovi u misicima AND Kasalj IS suv OR Kasalj IS nema ga AND Sedimentacija < 10 THEN Grip RULE za bronhitis IF Povisena tempertura OR NOT Povisena tempertura AND Kasalj IS sa iskasljavanjem AND Sedimentacija > 10

THEN Bronhitis END

Ako stavimo SUPPRESS ALL nita od donesenih zakljuaka nee biti prikazano korisniku:
TITLE Vezbe1 SIMPLEFACT Povisena tempeatura AND Bolovi u misicima OBJECT Kasalj NUMERIC Sedimentacija SUPPRESS ALL 1. Grip 2. Bronhitis RULE za grip IF Povisena temperatura AND Bolovi u misicima AND Kasalj IS suv OR Kasalj IS nema ga AND Sedimentacija < 10 THEN Grip RULE za bronhitis IF Povisena tempertura OR NOT Povisena tempertura AND Kasalj IS sa iskasljavanjem AND Sedimentacija > 10 THEN Bronhitis END

S druge strane moemo navesti tano odreene zakljuke koje ne elimo da prikaemo. Npr. SUPPRESS Grip. Umesto default prikaza rezultata moemo uvesti prikaz kakav nama odgovara korienjem DISPLAY funkcije, koja se moe koristiti ne samo posle zakljuka pravila (kao u narednom primeru) ve i bilo gde u pravilu navoenjem AND DISPLAY naziv_displeja.
TITLE Vezbe1 SIMPLEFACT Povisena tempeatura AND Bolovi u misicima OBJECT Kasalj NUMERIC Sedimentacija SUPPRESS ALL 1. Grip 2. Angina RULE za grip IF Povisena temperatura AND Bolovi u misicima AND Kasalj IS suv OR Kasalj IS nema ga AND Sedimentacija < 10 THEN Grip

AND DISPLAY 1 RULE za bronhitis IF Povisena tempertura OR NOT Povisena tempertura AND Kasalj IS sa iskasljavanjem AND Sedimentacija > 10 THEN Bronhitis AND DISPLAY 2 DISPLAY 1 Bolujete od gripa DISPLAY 2 Bolujete od bronhitisa END

Ako elimo da unesemo dodatna poboljanja, moemo uvesti objanjenja za pojedine pojmove u ES-u. To emo uiniti korienjem funkcije EXPAND. Tekst naveden iza funkcije EXPAND bie prikazan korisniku, ako u delu sesije koji se odnosi injenicu opisanu expand-om pritisne taster F5.
TITLE Vezbe1 SIMPLEFACT Povisena tempeatura AND Bolovi u misicima OBJECT Kasalj NUMERIC Sedimentacija SUPPRESS ALL 1. Grip 2. Angina RULE za grip IF Povisena temperatura AND Bolovi u misicima AND Kasalj IS suv OR Kasalj IS nema ga AND Sedimentacija < 10 THEN grip AND DISPLAY 1 RULE za bronhitis IF Povisena tempertura OR NOT Povisena tempertura AND Kasalj IS sa iskasljavanjem AND Sedimentacija > 10 THEN bronhitis AND DISPLAY 2 DISPLAY 1 Bolujete od gripa DISPLAY 2 Bolujete od bronhitisa EXPAND Sedimentacija Pitanje se odnosi na sedimentaciju u drugom satu . END

Dalja ulepavanja se odnose na izgled pitanja koja se postavljaju korisniku, za ta se koristi funkcija TEXT iza koje se navodi tekst pitanja koji e zamniti insight-ova default pitanja:
TITLE Vezbe1 SIMPLEFACT Povisena tempeatura AND Bolovi u misicima OBJECT Kasalj NUMERIC Sedimentacija SUPPRESS ALL 1. Grip 2. Angina RULE za grip IF Povisena temperatura AND Bolovi u misicima AND Kasalj IS suv OR Kasalj IS nema ga AND Sedimentacija < 10 THEN grip AND DISPLAY 1 RULE za bronhitis IF Povisena tempertura OR NOT Povisena tempertura AND Kasalj IS sa iskasljavanjem AND Sedimentacija > 10 THEN bronhitis AND DISPLAY 2 DISPLAY 1 Bolujete od gripa DISPLAY 2 Bolujete od bronhitisa EXPAND Sedimentacija Pitanje se odnosi na sedimentaciju u drugom satu . TEXT Povisena temperatura Da li je vasa telesna temperatura povisena? TEXT Bolovi u misicima Da li osecate bolove u misicima? END

2.1 CONFIDENCE
I2+ podrava uncertain reasoning u smislu da pored mogunosti da se odgovori da je neto tano ili netano prihvata i odgovore koji izraavaju stepen tanosti, odnosno netanosti. Mera stepena tanosti neke injenica odreuje se CONFIDENCE om (uverenje u tanost nekog odgovora). Da bi se omoguio ovaj vid rada ekspertnog sistema potrebno je u selektorima kontrolnih naredbi postaviti CONFIDENCE na ON (ako se ne navede nita podrazumeva se da je OFF). Kada je CONF ukljuen, korisnik e pri davanju svakog odgovora morati da izrazi stepen tanosti istog i to pomou 9

CONFIDENCE BAR a koji je u stvari grafiki prikaz segmenta od 0 do 100. Pri tome se sledea tabela moe koristiti kao vodi za odreivanje stepena tanosti: TANO VEROVATNO TANO NESIGURNO TANO VEROVATNO NETANO NETANO Primer:
TITLE Primer1 SIMPLEFACT A AND B CONFIDENCE ON 1. Cilj1 RULE 1 IF A AND B THEN Cilj1 END

100 75 50 25 0

Ovde e nam traiti da unesemo CONFIDENCE i za A i za B. Mogue je zahtevati unos CONFIDENCE-a samo za pojedine injenice i tada je potrebno iza rei CONFIDENCE navesti sve te injenice odvojene kljunom rei AND: CONFIDENCE AND AND AND Primer:
TITLE Primer2 SIMPLEFACT A AND B CONFIDENCE A 1. Cilj1 RULE 1 IF A AND B THEN Cilj1 END

simple_fact object_fact numeric_fact string_fact

Ovde e nam traiti da unesemo conf samo za A. Primetimo da za OA fact-ove ne moemo proizvoljno ukljuivati i iskljuivati conf za pojedine atribute, ve kada je conf ukljuen za neki OA fact, onda e biti potrebno da se unese conf za svaki atribut. CONFIDENCE se moe davati i zakljuku pravila i to ini inenjer baze znanja prilikom njene izgradnje tako to nakon navoenja zakljuka pravila navede (u istom redu) re CONFIDENCE i odgovarajuu vrednost. Prilikom korienja confidence-a potrebno je odrediti i vrednost THRESHOLD-a, tj. najnieg nivoa konfidensa koji neka injenica treba da ima da bi bila razmatrana. THRESHOLD moe biti ceo broj iz opsega od 0 do 100. Default vrednost je 50. Ako elite neku drugu vrednost treba je navesti u okviru selektora kontrolnih naredbi.

10

TITLE Primer3 SIMPLEFACT A AND B THRESHOLD 60 CONFIDENCE ON 1. Cilj1 RULE 1 IF A AND B THEN Cilj1 END Ulaz: A conf 70, B conf 60, izlaz: Cilj1=True.

Moe se menjati i u okviru pravila, kako bi razliite injenice bile razmatrane sa razliitim minimalnim stepenom tanosti.
TITLE Primer4 SIMPLEFACT A AND B CONFIDENCE ON 1. Cilj1 RULE 1 IF A AND THRESHOLD=70 AND B THEN Cilj1 END Ulaz: A conf 70, B conf 60, izlaz: Cilj1=False.

Kako se sada koriste conf i threshold za donoenje zakljuaka? Da bi odredio stepen tanosti zakljuka pravila, kada su uslovi vezani sa AND, I2 bira konfidens onog uslova koji minimalnu vrednost. Ako je ta vrednost vea od ili jednaka THRESHOLD-u bie pomnoena sa konfidensom zakljuka pravila i dobijena vrednost e biti zapamena kao stepen tanosti zakljuka pravila. Primer:
TITLE Primer5 SIMPLEFACT A AND B CONFIDENCE ON 1. Cilj1 RULE 1 IF A AND B THEN Cilj1 CONFIDENCE 70 END

Dakle, confidence zakljuka cilj1 e nakon izvravanja ovog pravila biti MIN(CONF(A), CONF(B))*CONF(Cilj1). Kada su antecedenti pravila povezani sa OR uzima se onaj uslov koji ima najvii conf. Primer:
TITLE Primer6 SIMPLEFACT A AND B CONFIDENCE ON

11

1. Cilj1 RULE 1 IF A OR B THEN Cilj1 CONFIDENCE 70 END

Dakle, confidence zakljuka cilj1 e nakon izvravanja ovog pravila biti MAX(CONF(A), CONF(B))*CONF(Cilj1). Primer:
TITLE Primer7 SIMPLEFACT A AND B AND C CONFIDENCE ON 1. Cilj1 RULE 1 IF A AND B OR C THEN Cilj1 CONFIDENCE 70 END

Ovo je isto to i A (B C), pa e izmeu B i C biti izabran onaj sa viim conf, a potom e izmeu njega i A biti izabran onaj sa niim. Dakle, confidence zakljuka cilj1 e nakon izvravanja ovog pravila biti MIN (CONF(A), MAX(CONF(B), CONF(C))) * CONF(Cilj1). Primer:
TITLE Primer8 1. GOAL1 RULE 1001 IF A1 AND A2 AND A3 THEN AA CONFIDENCE 80 RULE 1002 IF A4 AND A5 AND A6 THEN AA CONFIDENCE 70 RULE 1003 IF AA AND AB AND AC THEN GOAL1 CONFIDENCE 90 RULE 1004 IF AD AND AE AND AF THEN GOAL1 CONFIDENCE 50 END

Pravila 1003 i 1004 vode do cilja GOAL1. Ona ine OR klasu ovog cilja, tj. dovoljno je da jedno od ova dva pravila bude zadovoljeno da bi se dolo do ovog cilja. Pravila 1001 i 1002 ine OR klasu za AA. Meutim AA nije cilj baze znanja, ve uslov pravila 1003. Dakle do cilja GOAL1 se moe doi na tri naina: 1. 1001 1003 2. 1002 1003 3. 1004 Ako prethodno navedene naine dolaska do cilja razvijemo u iskaze koje je potrebno dokazati na tom putu dobijamo sledee:

12

1. uslov A1, uslov A2, uslov A3, zakljui AA uslov AA, uslov AB, uslov AC, zakljui GOAL1

2. uslov A4, uslov A5, uslov A6, zakljui AA uslov AA, uslov AB, uslov AC, zakljui GOAL1

3. uslov AD, uslov AE, uslov AC, zakljui GOAL1

Vidimo da je duina putanja 1 i 2 jednaka 8, a duina putanje 3 je 4. Moglo bi se okivati da ES izabere najkrai put do cilja. Meutim, ako se prisetimo funkcije ES, setiemo se da oni pored toga to treba da dou do ispravnog zakljuka, treba i da prue korisniku stepen sigurnosti tog zakljuka. Zato je idealna putanja do cilja ona koja je najtanija. Svako pravilo sadri confidence za zakljuak tako da e sistem pokuati da doe do zakljuka sa najviim conf. Da bi nam confidence neke injenice ili zakljuka bio prikazan grafiki koristi se kljuna re BAR. Primer:
TITLE Primer9 1. GOAL1 RULE 1001 IF A1 AND A2 AND A3 THEN AA CONFIDENCE 80 RULE 1002 IF A4 AND A5 AND A6 THEN AA CONFIDENCE 70 RULE 1003 IF AA AND AB AND AC THEN GOAL1 CONFIDENCE 90 AND DISPLAY CILJ RULE 1004 IF AD AND AE AND AF THEN GOAL1 CONFIDENCE 50 AND DISPLAY CILJ DISPLAY CILJ CONFIDENCE ZA CILJ1 JE: BAR GOAL1 END

Vrednost konfidensa neke injenice se moe koristiti i u uslovima pravila u obliku CONF(naziv_cinjenice), kada se tretira kao podatak tipa numeric.
RULE 100 IF CONF(A)>70 AND B THEN Zakljucak1

Ako iz nekog razloga fact A nije poznat bie uzeta vrednost CONF(A)= -1, ako je izabrano da je A unknown onda je CONF(A)= -2. Pogledajmo sledei primer:
RULE 1 IF A AND B THEN C ELSE D

13

Ako korisnik kae da je A unknown, a B true bie zakljueno C sa conf(C)=conf(B)*conf(C). Ako su i A i B unknown onda je i zakljuak C unknown i ne moe se zakljuiti ni D. Ako dodamo i pravilo:
RULE 2 IF A THEN E

a za A je odgovoreno sa unknown u prvom pravilu ovo se pravilo nee ni razmatrati jer on pamtiti na odgovor tokom celog izvoenja. U pravilu 3 bi se tada odmah prelo na ELSE granu:
RULE 3 IF E THEN F ELSE G

2.2 MULTI
Prezentovanje podataka u vidu OA injenica moe rezultirati formulacijom niza pravila u PRL bazi znanja koja vezuju mnogo razliitih atributa sa odreenim objektom. I2+ e na osnovu informacija koje dobije od korisnika pokuati da povee jedan od tih atributa sa datim objektom. Kada se jednom verifikuje neki OA par I2+ vie ne pokuava otkrije eventualne veze koje dati objekat ima sa ostalim atributima. Ovaj metod utvrivanja OA veza ne doputa uspostavljanje veza jednog objekta sa vie atributa. Da bi se dopustilo vezivanje vie atributa za jedan objekat i to svaki sa svojim konfidensom, inenjer baze znanja moe pojedine ili sve objekte u bazi proglasiti multiatributskim: MULTI ALL ili MULTI fact1 AND fact2 AND fact3 Kada procesira pravila koja sadre multiatributske objekte I2+ e korisniku prezentovati listu moguih atributa za odreeni objekat. Korisnik tada moe selektovati proizvoljan broj atributa i, ako je confidence on, svakom od njih dodeliti nivo poverenja. Atributi se biraju pozicioniranjem strelice kursora ispred atributa i pritiskom na taster ENTER. Na isti nain se vri deselekcija. Nakon to se izaberu svi eljeni atributi pritisne se F4. U trenutku procesiranja odreenog pravila sa threshold-om se porede samo conf onih atributa koji se javljaju u tom pravilu, a koji su odabrani od strane korisnika. Ako ni jedan atribut ne odgovara datom objektu treba dati odgovor unknown, i I2+ e zanemariti antecedente pravila na koje se pitanje odnosilo.
TITLE PRIMER OBJECT O1 MULTI O1 1. CILJ1 2. CILJ2 RULE 1 IF O1 IS A1

14

OR O1 IS A2 THEN CILJ1 RULE 2 IF O1 IS A3 AND O1 IS A4 OR O1 IS A5 THEN CILJ2 END

Objekat O1 moe imati jedan ili vie atributa. Kada je Object - Attribut injenica cilj baze znanja:
TITLE PRIMER OBJECT A MULTI A 1. A RULE 1 IF USLOV1 THEN A\CRVENO RULE 2 IF USLOV2 THEN A\PLAVO RULE 3 IF USLOV3 THEN A\ZELENO END

Ako A nije multi i ako je uslov1 ispunjen stanje objekta A e biti zapameno kao crveno sa conf 100, a svim ostalim stanjima e biti dodeljen conf 0. Ako je A multi i ako je ispunjen uslov1 on e nastaviti da ispituje ta je sa ostalim uslovima.

2.3 EXHAUSTIVE
Ovaj koncept se proiruje i na simple fact-ove, gde se umesto MULTI koristi kljuna re EXHAUSTIVE. Kada se simple fact upotrebi kao exhaustive I2+ nee prestati da trai alternativne putanje rezonovanja kada se neka injenica verifikuje, ve e iscrpeti sve mogue sluajeve koji zavise od te injenice. Krajnji rezultat deklarisanja simple fact-a kao exhaustive je da e I2+ pronai ono stanje injenice koje u datoj sesiji dostie najvii confidence. EXHAUSTIVE ALL ili EXHAUSTIVE fact1 AND fact2 AND fact3 Kljuna re EXHAUSTIVE moe se koristiti i u sluaju OBJECT fact-ova, tako da ako se ne navede tip injenice koja se koristi kao exhaustive, po default-u e se smatrati object fact-om. Exhaustive injenice inenjeru baze znanja pruaju dodatnu kontrolu pri procesiranju baze znanja. Vana posledica deklarisanja neke injenice za exhaustive je nain na koji I2+ pamti conf injenica.
RULE 1 IF B THEN A CONFIDENCE 80 RULE 2 IF C THEN A CONFIDENCE 100

15

Ako je A exhaustive i B je true, A e biti zapameno sa conf 80, a I2+ e nastaviti sa iscrpljivanjem ostalih puteva koji vode do A. Ako je i C true conf za A e se promeniti. Da A nije exhaustive ne bi se ni prelo na drugo pravilo.

2.4 PROCEDURALNA PRAVILA


Do sada prikazana pravila su produkcionog tipa i kao takva ona kodiraju kauzalne veze izmeu znanja koje je sadrano u bazi. Pored njih I2 dozvoljava i korienje pravila koja sadre proceduralne iskaze:
ACTIVATE ASK CALL CHAIN CONF CYCLE DATA DISPLAY FILE FORGET GOALSELECT PRINT READ RETURN SEND STOP THRESHOLD WRITE

koji inference engine-u diktiraju nain izvravanja odreenih delova baze znanja. Npr. ASK govori inference engine-u da direktno korisnika pita za neku injenicu, DISPLAY f-ja upuuje da neto treba prikazati na ekranu. Pravila mogu biti isto proceduralna (ne sadre IF deo), isto produkciona (ne sadre proceduralne iskaze) ili meovita
RULE PROCEDURALNO ASK FACT1 DISPLAY SCREEN1 IF FACT1 AND ASK FACT2 AND FACT2 THEN GOAL1 AND DISPLAY SCREEN2

Ovo je meovito pravilo (onog trenutka kada smo uveli IF, sve to sledi mora biti vezano sa AND i/ili OR

2.5 ASK
Postoji mnogo situacija tokom izvoenja baze znanja, kada je pogodno da korisnik prui razliite injenice pre nastavka procesa rezonovanja. ASK funkcija omoguuje inenjeru baze znanja da specificira niz injenica u okviru pravila za koje e korisnik biti upitan kada dato pravilo postane aktivno. Format ASK funkcije je prikazan u sledeem pravilu:
RULE Primer koriscenja ask funkcije ASK simple fact ASK numeric fact ASK string fact ASK object fact THEN imamo sve podatke AND ASK za ostale podatke

Kako prvo pravilo baze znanja moe sadrati ASK funkciju, ili ASK moe postati aktivno pre nego to je poznat tip injenica navedenih iza ASK-a, potrebno je da se izvri deklaracija injenica koje se tu koriste da bi se unapred znao njihov tip. Ako se ne deklariu I2+ e sve injenice koje se koriste kao argument ASK-a protumaiti kao simple fact.

16

2.6 [ ]
Trenutna vrednost bilo koje injenice iz konteksta neke I2 sesije moe biti ukljuena u TEXT, DISPLAY, ili EXPAND prikaze korienjem rezervisanog simbola zagrada [ ]. Ovi simboli se ubacuju u tekst tamo gde elimo da informacija bude prikazana. Izmeu zagrada je identifikator koji referencira na vrednost koja treba biti prikazana. Na taj nain se u toku izvoenja sesije korisniku mogu postavljati pitanja koja sadre informacije dobijene u prethodnom delu sesije. Polje koje je rezervisano za prikaz numerikih informacija po difoltu ima 8 mesta ukupno od ega je 2 mesta za decimale. Ako to elimo da promenimo stavimo: [ime(n,m)].
TITLE PRIMER STRING IME NUMERIC GODINE 1. IMAMO PODATKE RULE 1 IF ASK IME AND ASK GODINE AND ASK UDATI ILI OZENJENI THEN IMAMO PODATKE AND DISPLAY SVE DISPLAY SVE IME:[IME], GODINE:[GODINE(2,0)], UDATI/OZENJENI:[UDATI ILI OZENJENI] END

Kada se izmeu zagrada [ ] unese naziv OA injenice u prikazu e se pojaviti onaj atribut tog objekta koji mu je pridruen sa najveim conf.

2.7 INIT
Pri kreiranju baze znanja inenjer moe smatrati korisnim dodeljivanje inicijalnih vrednosti nekim promenjivim u bazi. Pri tome se numeric, simple i string faktovima dodeljuju, sa odreenim conf, konkretne vrednosti, dok se object sa odreenim konfidensom vezuje za neke atribute. To se postie korienjem INIT funkcije: INIT <naziv simplefact> CF <0-100> INIT <naziv numeric> =<vrednost> CF <0-100> INIT <naziv objectfact> IS <atribut1> CF <0-100> INIT <naziv objectfact> IS <atribut2> CF <0-100> INIT <naziv string> =<string> CF <0-100> Ovo ide odmah nakon deklaracije tipova podataka. Mora se izvriti deklaracija tipa injenice koja se koristi uz init. Dodeljivanje conf je opciono. Ako se ne dodeli po difoltu je 100. Kada object koji se inicijalizuje nije muti, on biva vezan samo za prvi atribut koji je naveden pri inicijalizaciji dok se ostalima dodeljuje vrednost conf 0.

2.8 Cycle/Stop/Forget
Kada korisnik doe do krajnjeg zakljuka pri izvoenju baze znanja ili u nekom trenutku nije u mogunosti da nastavi izvoenje baze zbog manjka informacija, on moe restartovati sesiju pritiskom na funkcijski taster STRT. Ovim e se ponovo zapoeti izvoenje baze znanja bez uvanja bilo koje informacije koju je korisnik uneo ili I2 izveo tokom prethodne sesije. Inenjer moe, da bi se ovo izbeglo, naterati I2 da restartuje bazu, korienjem CYCLE komande u okviru nekog pravila. Naredba CYCLE prouzrokuje se startovanje baze zananja od poetka bez gubljenja konteksta prethodne sesije, tj. sve 17

informacije koje je korisnik uneo ili su bile izvedene tokom prethodne sesije ostaju sauvane i prenete u ponovljenu sesiju. Iskaz AND CYCLE kao deo pravila koji sledi iza zakljuka automatski e, kada se do njega doe, restartovati bazu. To nam omoguava iterativno procesiranje jednog dela ili cele baze sve dok neki uslov ne bude ispunjen.
RULE 1 IF A THEN B AND CYCLE

Ako se, pak, CYCLE komanda ne koristi pravilno moe se ui u beskonanu petlju. Korisnik, u svakom sluaju, moe prekinuti izvoenje u bilo kom trenutku pritiskom na funcijski taster EXIT, ali e tada sve biti zaboravljeno i izai e se iz insight-a. Inenjer baze znanja beskonanu petlju moe izbei korienjem STOP funkcije. Dakle, potrebno je postaviti neki uslov ili broja, tako da kada se taj uslov ispuni, odnosno broja dosegne neku vrednost iskaz AND STOP zaustavlja ponovno izvoenje baze. Kada se komanda INIT koristi u bazi koja sadri CYCLE komandu, pri restartovanju baze jednom inicijalizovani parametri se nee ponovo inicijalizovati, tj. zadrae vrednosti iz prethodne sesije. Ako elimo da se pri svakom ponovnom restartovanju baze oni ili neki od njih inicijalizuju moramo umesto komande init koristiti REINIT. Simulacija petlje:
TITLE PRIMER NUMERIC N INIT N:=1 1. CILJ RULE 1 IF N<10 THEN NIJE CILJ AND N:=N+1 AND CYCLE ELSE CILJ AND DISPLAY VREDNOST ZA N DISPLAY VREDNOST ZA N N=[N(2,0)] END

Ili:
TITLE PRIMER NUMERIC N INIT N:=1 1. CILJ RULE 1 IF N=10 THEN CILJ AND DISPLAY VREDNOST ZA N AND STOP ELSE N:=N+1 AND CYCLE DISPLAY VREDNOST ZA N N=[N(2,0)] END

Mogue je izazvati da neke ili sve injenice budu zaboravljene prilikom restartovanja baze. To se postie naredbom FORGET. Ona se moe koristiti u delu baze u kome se vri inicijalizacija parametara i tada e injenice njome oznaene biti zaboravljene odmah po restartovanju baze: FORGET ALL ili FORGET simplefact1 AND object1 AND numeric1

18

AND string1 Sintaksa FORGET komande kada se ona koristi u okviru pravila je sledea:
RULE za forget u pravilu IF treba zaboraviti cinjenice AND FORGET cinjenicu1 AND FORGET cinjenicu2 THEN cinjenica1 i cinjenica2 su zaboravljene ELSE FORGET cinjenicu3 AND FORGET cinjenicu4

Sve injenice koje se koriste pod FORGET naredbom moraju biti deklarisane ili e ih I2 sve podvesti pod simple fact tip. CYCLE, STOP, i FORGET se mogu koristiti za razvoj PRL baza znanja koje na bazu podataka dodaju informacije koje su zavisne od trenutne sesije i korisnikovih odgovora. Primer, packing.prl

2.9 Ulanavanje
Dve ili vie baza znanja mogu biti povezane korienjem prl funkcije CHAIN. To nam omoguuje da jednu bazu znanja izvravamo direktno iz pravila druge baze. Sintaksa je: CHAIN ime baze znanja na koju se prelazi iz trenutno aktivne baze. Kada se ulanavanje pokrene stanja proizvoljnog broja injenica utvrena u prvoj bazi mogu biti preneta u drugu bazu korienjem komande SHARED. Njome se dakle odreuje koje e injenice biti koriene i osnovnoj bazi i u bazi koja je s njom ulanava.
SHARED SIMPLEFACT cinjenica1 AND SIMPLEFACT cinjenica2 SHARED NUMERIC cinjenica3 AND NUMERIC cinjenica4 SHARED OBJECT objekat1/atribut1 AND objekat1/atribut2 AND objekat2/atribut3 SHARED STRING string1 AND STRING string2

Deklaracija shared faktova se vri odmah nakon TITLEDISPLAY dela. Redosled tipova injenica pri deklaraciji mora biti apsolutno isti u svakoj bazi koja koristi deljene injenice. Kada nastupi ulanavanje I2 formira fajl sa ekstenzijom .CHN i imenom odredine baze znanja u kome se nalaze trenutne vrednosti deljenih injenica iz kontesta sesije. Ulanana baza ita ovaj fajl tako da ne dolazi do gubitka informacija. CHN fajl se nakon toga brie.
TITLE Shared Knowledge Base Demo SHARED SHARED SHARED SHARED SHARED SHARED SIMPLEFACT A simple fact OBJECT An object fact IS selection 1 OBJECT An object fact IS selection 2 OBJECT An object fact IS selection 3 NUMERIC A numeric fact STRING A string fact

1. Ask for the state of the facts, then chain RULE 1 ASK A simple fact ASK An object fact ASK A numeric fact ASK A string fact

19

THEN Ask for the state of the facts, then chain AND CHAIN Shared2 END TITLE Receiver of the Shared Knowledge Base Demo SHARED SHARED SHARED SHARED SHARED SHARED SIMPLEFACT A simple fact OBJECT An object fact IS selection 1 OBJECT An object fact IS selection 2 OBJECT An object fact IS selection 3 NUMERIC A numeric fact STRING A string fact

1. The goal is to display information then chain back to Shared RULE 1 DISPLAY The information THEN The goal is to display information then chain back to Shared AND CHAIN Shared DISPLAY The information The state of the simple fact is : [A simple fact] The object fact is [An object fact] The numeric fact = [A numeric fact] The string fact = [A string fact (16)] Press F2 CONT to return to the Shared Knowledge Base or, END Press F8 MENU to return to the Main Menu.

3. DBPAS
Podskup programskog jezika Pascal, DBPAS, koji je sadran u INSIGHT-u omoguava inenjeru baze znanja da u bilo kom trenutku iz pravila baze znanja pokrene Pascal-ski program. Pokretanje se vri korienjem kljune rei CALL iza koje se navodi putanja i naziv programa. Da bi se programu pristupilo on mora postojati u memoriji i biti iskompajliran. Primer:
RULE za pozivanje dbpas programa IF potreban je dbpas program AND CALL program1 THEN moze se nastaviti

Baza znanja moe DBPAS programu slati vrednosti varijabli korienjem kljune rei SEND ili ih primati iz DBPAS programa korienjem kljune rei RETURN. Ako vrednosti varijabli koje iz baze znanja treba poslati DBPAS programu nisu obezbeene tokom sesije pre poziva programa, od korisnika e biti traeno da ih unese.
RULE za verovatnocu CALL statprog

20

SEND val1 SEND val2 RETURN P IF P>=75 THEN Dogadjaj ce se verovatno odigrati CF 90

DBPAS programi se mogu pisati iz INSIGHT-ovog editora ili iz bilo kog drugog editora i moraju imati ekstenziju .PAS. Nakon kompajliranja (iz INSIGHT-a) dobijaju ekstenziju .PCO. Kljune rei DBPAS-a su neke od kljunih rei PASCAL-a uz dodatak i nekih posebnih. Kompletan spisak se nalazi u HELP-u INSIGHT-a. DBPAS podrava sledee tipove podataka:
INTEGER REAL BOOLEAN CHAR STRING

Struktura DBPAS programa je sledea:


Program naziv_programa (receive naziv_promenljive1 : tip1; naziv_promenljive2 : tip1; naziv_promenljive3 : tip2; return naziv_promenljive4 : tip1; naziv_promenljive5 : tip3); Const naziv_konstante = vrednost_konstante; Var naziv_varijable1,naziv_varijable2 : tip; Procedure naziv_procedure (lista_parametara); begin end; begin end;

Dodeljivanje vrednosti vri se pomou := . Uslovi se rade pomou


IF uslov THEN iskaz1 ELSE iskaz2;

Petlje:
WHILE ... DO ...; REPEAT ...UNTIL...;

Procedure se rade isto kao u pascal-u. Na primer:


procedure sum(x,y : integer; var z:integer); begin z := x+y; end;

Paremetri se proceduri prenose preko vrednosti (x i y u gornjem primeru) ili reference (z u gornjem primeru). Kada se prenose preko vrednosti, parametri u ostatku programa ostaju nepromenjeni i nakon procedure, dok se u samoj proceduri radi sa kopijom. Kada se prenose preko reference njihove promene u proceduri imaju globalni efekat jer se proceduri prenosi sam parametar, a ne njegova kopija.

21

Poziv procedure u programu: sum(5,10,cena); Rekurzija je podrana, to jest, procedura se moe pozvati iz glavnog programa, iz druge procedure ili iz same sebe. Prilikom slanja parametara iz baze znanja DBPAS programu, redosled slanja je jednak redosledu navoenja parametara u pravilu. Tim redom parametri bivaju i primljeni od strane DBPAS programa (redosled navoenja parametara iza receive i return komande u paskalskom programu mora biti isti kao i redosled navoenja parametara iza send i return komand u prl pravilu, respektivno). Zahvaljujui tome parametri ne moraju, a mogu imati iste nazive u prl bazi znanja i dbpas programu. S druge strane, tipovi parametara se moraju poklapati. Sledea tabela uspostavlja vezu izmeu tipova u bazi znanja i odgovarajuih tipova u paskalskom programu: DBPAS tip podataka Boolean Real Integer String char PRL tip SIMPLEFACT ili OBJECT NUMERIC NUMERIC STRING STRING

to se tie OA injenica moe delovati da njih treba prenositi kao stringove, meutim kada I2 naie na SEND naredbu vezanu za OA injenicu on proverava trenutnu vrednost konfidensa koja je dodeljena atributu vezanom za nju i ako je konfidens vei ili jednak threshold-u bulovska vrednost T se prenosi DBPAS programu, dok se u suprotnom prenosi F. Kada I2 primi vrednost T vezanu za neki O-A par on mu dodeljuje konfidens 100. Ako dobije F, dodeljuje mu konfidense 0. Parametri se izmeu baze znanja i dbpas programa mogu razmenjivati preko memorije ili preko diska. Kada se prenose preko memorije (po difoltu), transfer je ogranien na 1024 bajta. Veliinu memorije potebnu za prenos vaih podataka moete izraunati na osnovu sledee tabele koja sadri broj bajtova potreban za prenos svakog od tipova parametara: Tip podataka Broj bajtova

SIMPLEFACT 5 OBJECT 5 NUMERIC 17 STRING 4+broj karaktera u stringu zaglavlje 7 Zbog ovih memorijskih ogranienja podatke je mogue transferovati i preko diska, gde je jedina granica koliina slobodne memorije na disku. Da bi podaci bili poslati preko diska, potrebno je upotrebiti kljunu re DISK:
RULE za prenos parametara CALL test DISK data.txt SEND simple fact 1 SEND object 1 IS attribute 1 SEND numeric 1 SEND string 1 RETURN rezultat THEN nastavi dalje

22

DISK govori INSIGHT-u da specificirane parametre smesti u fajl data.txt, odakle e ih DBPAS program proitati i gde e po zavretku svog rada upisati povratni parametar. ASCII format fajla za smetanje parametara je uvek isti: n<CRLF> Nbx.xxxxxxExx<CRLF> Lbv<CRLF> Cbstring<CRLF> pri emu n oznaava taan broj parametara koji e biti poslati, < C R L F > oznaava prelazak u novi red (carriage return line feed), N je numeriki tip podatka, b oznaava jedan blanko, L oznaava logiki tip podatka, v je njegova vrednost (true ili false), C je tip char (u prl-u je to string), i string je stvarni string koji treba preneti.

4. Rad sa bazama podataka


Da bi se zapoeo rad sa bazama podataka iz uvodnog menija INSIGHT-a treba izabrati opciju: Edit a data base. Na ekranu e se pojaviti spisak postojeih baza. Izborom neke od njih dobijate opcije:
F2 LIST F3 EDIT F4 ADD za pregled baze za promenu sadraja baze za dodavanje novih polja u bazu

Ako, pak, ne izaberete ni jednu od postojeih baza, moete napraviti novu bazu izborom F2 NEW. I2 e vam prvo traiti da unesete naziv te nove baze,

a po unosu imena moraete da se odluite za jedan od dva ponuena tipa baze:

23

dBase II podrava tri tipa podataka: (C)haracter, (N)umeric, (L)ogical dBase III podrava pet tipova podataka: Character, Numeric, Logical, (D)ate, (M)emo. Tip podataka date sastoji se od osam ASCII karaktera u formatu YYYYMMDD, dok se tip podataka memo sastoji od deset ASCII numerikih karaktera (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) to omoguava upis brojeva u bazu koji prevazilaze opseg tipa numeric. Baza se sastoji iz polja za koja treba uneti naziv i tip i u sluaju tipa character broj karaktera.

24

Kod polja tipa numeric potrebno je uneti ukupnu irinu polja (broj cifara + jedno mesto Za decimalnu taku, ako je ima), kao i broj decimalnih mesta:

25

Kada formirate sva eljena polja pritisnite F4 Done, nakon ega dobijate informaciju o bazi koju ste kreirali:

Potom se u bazu mogu unositi podaci, tj. Rekordi, pri emu e svaki rekord imati prethodno definisana polja. Za unos novog rekorda izabrati F4 ADD, za promenu postojeeg rekorda F3 EDIT, a za pregled baze F2 LIST.

26

Da bi se ostvarilo povezivanje DBPAS programa i baze podataka potrebno je u delu za deklaraciju podataka deklarisati i podatke tipa RECORD koji e biti nosioci informacija iz baza podataka:
<ime baze podataka> : RECORD <naziv polja 1> : <identifikator tipa>; <naziv polja 2> : <identifikator tipa>; .... <naziv polja n> : <identifikator tipa>; end;

Struktura rekorda se u potpunosti mora poklapati sa strukturom baze podataka koja e biti koriena vezano za dati rekord u smislu tipa veliine i redosleda polja, dok imena ne moraju biti ista sa imenima polja u bazi. Pri tome treba voditi rauna o vezi izmeu tipova u bazi podataka i tipova u DBPAS programu: Tip u bazi podataka Character-C Numeric-N Logical-L Date-D Memo-M Primer dekalarcije rekorda:
baza1:record; ime:string(30); adresa:string(50); datum_rodjenja:string(8); mesecna_primanja:real; u_braku:boolean; end;

Tip u DBPAS programu String Real Boolean String(8) String(10)

27

Kada elite da radite sa nekim poljem baze potrebno je da navedete: <naziv_baze>.<naziv_polja> Funkcije za rad sa bazom su: APPEND CLOSE GOTO NEXT OPEN REPLACE Funkcijom OPEN se neka baza otvara kako bi se sa njom radilo (maksimalno se u isto vreme mogu otvoriti 4 baze): OPEN (<DBPAS naziv rekorda>, '<naziv baze koja se otvara>'); Naziv baze koja se otvara se navodi bez ekstenzije, npr: OPEN( baza1, 'moja_baza');. Prelazak sa jednog na sledei rekord u okviru baze vri se pomou NEXT(naziv baze); a na proizvoljni rekord pomou GOTO (izraz, naziv baze); gde se izrazom odreuje broj rekorda na koji e se prei. Sadraj baze podataka se iz DBPAS programa moe izmeniti korienjem APPEND(naziv baze); i REPLACE (naziv baze); kljunih rei. Baza se nakon rada zatvara sa CLOSE(naziv baze);. Za utvrivanje rednog broja rekorda u bazi sa kojim se trenutno radi koristi se RECNO( naziv baze);, dok se za utvrivanje ukupnog broja rekorda u bazi koristi SIZE(naziv baze);. Funkcija EOF(naziv baze); vraa true ako smo pozicionirani na zadnji rekord u bazi. Funkcija IOERROR vraa true u sluaju kada doe do neke greke u radu sa bazom. Pored polja u bazi podataka koja definie korisnik, I2 sam, za svaki rekord, formira logiko polje deleted koje se koristi za brisanje rekorda iz baze podataka pomou DBPAS programa. Da bi neki rekord bio izbrisan treba ga oznaiti za brisanje, tj. postaviti vrednost poja deleted na true, nakon ega e taj rekord u bazi biti oznaen *. Primer DBPAS programa koji brie rekord sa rednim brojem unetim od strane korisnika u bazi znanja PROBA.PRL
Program brisi(receive n:integer); var baza:record ime:string(30); adresa:string(50); datum_rodjenja:string(8); mesecna_primanja:real; u_braku:boolean; end; begin open(baza,'baza1'); if not ioerror then begin goto(n,baza); baza.deleted:=true; replace(baza); close(baza); end; end;

28

TITLE PROBA NUMERIC N SIMPLEFACT USPEH 1. CILJ RULE 1 ASK N CALL BRISI

SEND N RETURN USPEH THEN CILJ AND DISPLAY USP DISPLAY USP [USPEH] END

Za dodavanje novih rekorda u bazu koristi se komanda append(naziv_baze). Primer programa koji dodaje novi rekord u bazu formiran od podataka koje korisnik unosi po zahtevu baze znanja PROBA:
Program dodaj(receive ime:string(30); adresa:string(50); datum_rodjenja:string(8); mesecna_primanja:real; u_braku:boolean; return uspeh:boolean); var baza:record ime:string(30); adresa:string(50); datum_rodjenja:string(8); mesecna_primanja:real; u_braku:boolean; end; begin open(baza,'baza1'); if not ioerror then begin baza.ime:=ime; baza.adresa:=adresa; baza.datum_rodjenja:=datum_rodjenja; baza.mesecna_primanja:=mesecna_primanja; baza.u_braku:=u_braku; append(baza); uspeh:=true; close(baza); end; end; TITLE PROBA NUMERIC MESECNA PRIMANJA SIMPLEFACT USPEH AND BRACNI STATUS STRING IME AND ADRESA AND DATUM RODJENJA 1. CILJ RULE 1 ASK IME ASK ADRESA ASK DATUM RODJENJA ASK MESECNA PRIMANJA ASK BRACNI STATUS CALL UPIS SEND IME SEND ADRESA SEND DATUM RODJENJA SEND MESECNA PRIMANJA SEND BRACNI STATUS RETURN USPEH THEN CILJ END

Ako umesto append(baza) stavimo replace(baza), novi rekord e umesto na kraj baze biti dodat na prvo slobodno mesto, tj. na mesto prvog rekorda u bazi koji je obeleen za brisanje.

29

You might also like