Näitena nimistute kasutamisest koostame väikese keemiliste reaktsioonide ekspertsüsteemi,
mis võimaldab otsida, milliseid aineid on olemasolevatest ainetest esitatud reaktsioonide abil
võimalik saada. Lähteandmed (olemasolevad ained ja reaktsioonid) on
samad, mida kasutas insener Cyrus Smith (J. Verne "Saladuslik Saar") kalju õhkimisel.
Reaktsioonid on loomulik kirjeldada kahekohalise predikaadiga, mille esimene
argument on nimistu kõigist
reaktsiooni lähteainetest, teine - reaktsiooni käigus tekkiv aine:
Edasi kirjeldame olemasolevad ained; need võib esitada ühekohalise predikaadiga:
Mingit ainet saab valmistada, kui ta kas on juba olemas:
või saab seda ainet reaktsiooniga, mille kõiki lähteaineid saab valmistada:
Predikaadi saab_kõikki(Ained) argumendiks on ainete nimistu. Kõikki nimistusse kuuluvaid aineid saab valmistada, kui see nimistu on kas tühi või siis on valmistav nii nimistu esimene aine (element) Esimene kui ka kõik ülejäänud ained alamnimistust Muud:
Kirjeldatud predikaatide abil saab (näiteks) kontrollida, kas nendest ainetest saab valmistada nitroglytseriini:
Reaktsioonid
moodustavad nn mitmealuselise graafi, kus kaar tipuni (reaktsiooni tulemus)
ei lähe ühest tipust, vaid tippude hulgast (reaktsiooni lähteained), näiteks
ainetest Aine1, Aine2, Aine3 saab valmistada (läheb nn multikaar) tippu Aine4.
Sellisel graafil tekkivad ülesanded
on analoogilised tavalise (näiteks
linnade) graafil tee otsimise ülesandega, ainult nüüd tuleb koostada erinevad
programmid alt-üles (mida antud ainetest võib saada) ja ülalt-alla (mida on
vaja, et saada nõutud
ainet/aineid), näiteks mingi Aine saamiseks
vajalike ainete (kordusteta) nimistu võib saada predikaatiga vaja :
Predikaat vaja_kõikki otsib kõigi esimese argumendina olevate ainete nimistu jaoks ained, mida nende valmistamiseks on vaja ja koostab siis predikaadiga yhenda vajalikest ainetest kordusteta nimistu. Nimistute ühendamisel kontrollib predikaat yhenda vaid esimese argumendi elementide kordumist, teise argumendi elementide kordumise võib (siin) kontrollimata jätta (miks ?):
Nimistute ühendamise predikaat yhenda kasutab abipredikaati member, mis kontrollib, kas element juba esineb nimistus (st siin tehakse korduvate elementideta nimistu):
Mitmealuseline
hierarhiline graafi tekib kõigi hierahiliste struktuuride, näiteks seadmete
ja organisatsioonide struktuuri kirjeldamisel: predikaat
koosneb(jalgratas, [raam, esiratas, tagaratas,
juhtraud])
on oma struktuuri ja semantika poolest täiesti analoogiline ülalvaadeldud prodikaadiga
reaktsioon (ainult argumendid on vastupidises järjekorras).
Koosta jalgratta (või mõne muu üldtuntud mehhanismi või struktuuri, näiteks TTÜ administratiivstruktuuri
) vähemalt kolmetasemeline kirjeldus ja
predikaadid, mis leiavad nii elemendi alluvad (millest jalgrattas ise või jalgratta
tagaratas koosneb; millised struktuuriüksused on dekanaadi all (vt TTÜ WWW-lehekülgi)
ja vastupidi, leiavad antud osa/elemendi jaoks kõik sellest kõrgemal olevad osad
(näiteks tudengi jaoks kõik otse tudengit käsutavad instantsid kuni graafi tipuni,
s.t. kas (abstraktse) TTÜ või (konkreetse) rektorini
(erinevate infoloogiliste kirjelduste korral tekkivad erineva nimetusega tipud).
©2004
Jaak Henno