of 32 /32
Kas ir deduktīvā datu bāze? Palielinoties datu apjomam, datu saprašana un interpretācija ar mērķi izgūt informāciju ir kļuvusi grūtāk izpildāma, vēl jo vairāk, ja informācija ir jāiegūst atbilstoši kādiem lēmumus vai slēdzienus aprakstošiem likumiem. Deduktīvās datu bāzes ir solis uz priekšu problēmas risināšanā, jo glabā ne tikai datus (explicit data), kā tas plaši tiek darīts, izmantojot datu bāzes, bet arī deduktīvus likumus, kas ļauj izdarīt jaunus, patiesus secinājumus no esošiem datiem jeb faktiem. Dati, kas iegūti lietojot deduktīvos likumus, bieži tiek saukti par atvasinātajiem datiem jeb datiem, kas iegūti netieši. Lai izskaidrotu ideju par atvasināto datu iegūšanu, apskatīsim sekojošu piemēru. Pieņemsim, ka datubāze satur 2 faktus: Jānis ir Pētera tēvs. Pēteris ir Jēkaba tēvs. Zinot šos faktus, lielākā daļa cilvēku uzreiz aptvertu, ka Jānis ir Jēkaba vectēvs (pieņemot, protams, ka divi Pēteri ir viena un tā pati persona). Citiem vārdiem sakot, no esošiem faktiem netieši ir iegūts atvasinātais fakts, lai gan fakts, ka Jānis ir Jēkaba vectēvs nav noglabāts datu bāzē, jo tajā nav definētu saišu starp Jāni un Jēkabu. Aplūkosim sekojošu deduktīvo datu bāzi: Jānis ir Pētera tēvs. Pēteris ir Jēkaba tēvs. JA x ir y tēvs UN y ir z tēvs, TAD x ir z vectēvs. Datubāzei bez jau iepriekš minētajiem faktiem ir pievienots likums, kas specificē vectēva saiti starp divām entītēm. Tagad datu bāze var pierādīt apgalvojumu Jānis ir Jēkaba vectēvs izmantojot

RĪGAS TEHNISKĀ UNIVERSITĀTE€¦  · Web viewKas ir deduktīvā datu bāze?. Palielinoties datu apjomam, datu saprašana un interpretācija ar mērķi izgūt informāciju ir kļuvusi

  • Author
    others

  • View
    0

  • Download
    0

Embed Size (px)

Text of RĪGAS TEHNISKĀ UNIVERSITĀTE€¦  · Web viewKas ir deduktīvā datu bāze?. Palielinoties datu...

RĪGAS TEHNISKĀ UNIVERSITĀTE

19

Kas ir deduktīvā datu bāze?

Palielinoties datu apjomam, datu saprašana un interpretācija ar mērķi izgūt informāciju ir kļuvusi grūtāk izpildāma, vēl jo vairāk, ja informācija ir jāiegūst atbilstoši kādiem lēmumus vai slēdzienus aprakstošiem likumiem. Deduktīvās datu bāzes ir solis uz priekšu problēmas risināšanā, jo glabā ne tikai datus (explicit data), kā tas plaši tiek darīts, izmantojot datu bāzes, bet arī deduktīvus likumus, kas ļauj izdarīt jaunus, patiesus secinājumus no esošiem datiem jeb faktiem. Dati, kas iegūti lietojot deduktīvos likumus, bieži tiek saukti par atvasinātajiem datiem jeb datiem, kas iegūti netieši. Lai izskaidrotu ideju par atvasināto datu iegūšanu, apskatīsim sekojošu piemēru. Pieņemsim, ka datubāze satur 2 faktus:

Jānis ir Pētera tēvs.

Pēteris ir Jēkaba tēvs.

Zinot šos faktus, lielākā daļa cilvēku uzreiz aptvertu, ka Jānis ir Jēkaba vectēvs (pieņemot, protams, ka divi Pēteri ir viena un tā pati persona). Citiem vārdiem sakot, no esošiem faktiem netieši ir iegūts atvasinātais fakts, lai gan fakts, ka Jānis ir Jēkaba vectēvs nav noglabāts datu bāzē, jo tajā nav definētu saišu starp Jāni un Jēkabu.

Aplūkosim sekojošu deduktīvo datu bāzi:

Jānis ir Pētera tēvs.

Pēteris ir Jēkaba tēvs.

JA x ir y tēvs UN y ir z tēvs, TAD x ir z vectēvs.

Datubāzei bez jau iepriekš minētajiem faktiem ir pievienots likums, kas specificē vectēva saiti starp divām entītēm. Tagad datu bāze var pierādīt apgalvojumu Jānis ir Jēkaba vectēvs izmantojot sekojošu substitūciju likuma ietvaros: x = „Jānis”, y = „Pēteris” un z = „Jēkabs”.

No iepriekšminētā piemēra, varam secināt, ka šādā formā uzrakstītu likumu mērķis ir definēt jaunas attieksmes, kas nav tieši attēlotas datu bāzē. Šīs attieksmes dēvē par netiešām jeb virtuālām attieksmēm, savukārt, tiešās attieksmes, tāda kā tēvs attieksme minētajā piemērā, tiek saukta par bāzes attieksmi.

Līdz ar to deduktīvajā datubāzē var izdalīt divas daļas:

1) bāzes attieksmju kopa jeb ekstensionālā datubāze (Extentional Database - EDB) – kopa, kas satur datus, kurus sauc par faktiem;

2) virtuālo attieksmju kopa jeb intensionālā datubāze (Intensional Database - IDB) – kopa, kas satur secināšanas likumus, kurus pielietojot no faktiem tiek iegūti jauni, patiesi fakti.

Fakti un deduktīvie likumi

Deduktīva datu bāzes sistēma ir balstītas uz pirmās kārtas loģiku. Pirmās kārtas loģika ļauj efektīvi aprakstīt faktus un likumus par faktiem, izmantojot vienu un to pašu sintaksi. Šī attēlojuma vienveidība pretendē būt kā viena no galvenajām loģiskās programmēšanas priekšrocībām. Lai gan deduktīvās datubāzēs un loģiskās programmās kā pamatvaloda tiek lietota pirmās kārtas loģikas valoda, tās terminoloģija un notācija lielos vilcienos atšķiras no pirmās kārtas loģikas. Šīs atšķirības turpmāk tiks apskatītas.

Loģiskās programmēšanas valodā PROLOG fakti ir vienkāršākā predikātu forma (attēls).

izteiksmes beigu pazīme

predikāts( arguments1, arguments2, . . . , argumentsN).

predikāta vārds argumentiargumentu skaits jeb aritāte(N)

Visos predikātos par argumentiem var kalpot jebkurš terms (tabula), taču darbā ar datubāzēm nelieto funkciju termus.

Termi pirmās kārtas loģikā

Terms

Apraksts

konstante

Apraksta pasaules specifiskus objektus un specifiskas īpašības.

mainīgais

Apraksta vispārīgus objektus un vispārīgas īpašības.

funkcija

Apraksta viena vai vairākas vienas kopas elementu attēlojumu kādā noteiktā otras kopas elementā.

Horna teikums

Likumi PROLOGā tiek definēti ar Horna teikumu palīdzību un tiek pierakstīti sekojošā veidā:

B : - H1 , H2 , . . . , Hn.

kur

B atomārs teikums (galva);

:- kakla simbols (to lasa kā „ja”);

H1 , H2 , . . . , Hn apakšmērķu kopa, ko veido viens vai vairāki atomāri teikumi (ķermenis).

Komats starp atomāriem teikumiem nozīmē to konjunkciju. No tā var secināt, ka B ir patiess, tad un tikai tad, ja visas konjunktu vērtības arī ir patiesas. Uzskatāmā formā likumu var pierakstīt:

galva :- ķermenis.

Par likumiem var uzskatīt tradicionālas datubāzes skatu konceptu vispārinājumu. Skats ir abstrakcija, kas ļauj atspoguļot datubāzē esošo informāciju citā, lietotājam vairāk piemērotā formātā. Virtuālās relācijas (likumi) reducējas skatā, kad

1) relācija ir pilnīgi virtuāla, t.i., relācijā nav neviena bāzes fakta;

2) relācijas definīcijā nav rekursīvu likumu.

Katrs fakts ir datubāzes pamatelements, un visus predikātus, kas izmantoti šo faktu definēšanā, sauc par ekstensionāliem predikātiem (extentional predicates), turpretī visus predikātus, kas iekļauti secināšanas likumu galvas daļās, sauc par intensionāliem predikātiem (intensional predicates). Tādējādi deduktīvā datubāze sastāv no ekstensionālo predikātu kopas, līdzīgi kā tas ir relāciju datubāzēs, un no secināšanas likumu kopas.

Deduktīvās datu bāzes teikumi

Loģiskā programmēšana un deduktīvās datu bāzes balstās uz programmu veidošanu, izmantojot teikumu kopu pirmās kārtas predikātu loģikas veidā. Šiem teikumiem ir:

1) deklaratīva nozīme – tie ir aprakstoši izteikumi par entītēm un relācijām;

2) procedurāla nozīme – tos izpilda interpretators.

Procedurālā nozīme pamatā ir balstīta uz rezolūcijas principu.

Teikumi var būt atomāri (atomic) un sarežģīti (complex). Atomārs teikums sastāv no predikāta simbola un argumentu saraksta, kur argumenti ir termi. Sarežģīti teikumi tiek veidoti no atomāriem teikumiem un to noliegumu disjunkciju:

¬L1 . . . ¬Lp R1 . . . Rn

Izteiksme parasti tiek pārveidota un lietota datubāzēs sekojošā formā:

L1 ^ . . . ^ Lp R1 . . . Rn.

kur katrs no Li un Ri ir literālis formā pi(t1, ... ,tn) tāds, ka pi ir predikāta simbols un tj ir terms.

Visus teikumus var iedalīt septiņās kategorijās:

1. p = 0, n = 1. Teikumi formā: R(t1, ... , tn).

1) ja teikumā visi termi ti ir konstantes, tad teikums attēlo faktu datubāzē;

2) ja kāds vai visi no termiem ir mainīgie, tad teikums attēlo vispārēju datubāzes apgalvojumu. Piemēram, teikums

draugs(Jānis, x) apgalvo, ka Jānis ir draugs jebkurai citai entītei datubāzē.

2. p = 1, n = 0. Teikumi formā: L(t1, ... , tn).

1) ja visi termi ti ir konstantes, tad teikums attēlo negatīvu faktu;

2) ja kāds no termiem ir mainīgais, tad teikumu var uzskatīt par integritātes ierobežojumu ( skatīt 3.tipu ), vai par vērtību, kas neeksistē (nozīme NULL).

3. p >1, n = 0. Teikumi formā: L1 ^ . . . ^ Lp .

Šie teikumi arī var tikt uzskatīti par integritātes ierobežojumiem un interpretēti kā „teikuma kreisās puses visu atomu konjunkcija implicē tukšu teikumu (aplams)”. Piemēram, uzliksim ierobežojumus tam, ka neviena persona nevar būt vienlaicīgi māte un tēvs citai personai:

tēvs( x, y ) ^ māte( x, y ) .

Ja fakts tēvs(Jānis, Ieva) jau eksistē, tad jebkurš mēģinājums pievienot faktu māte(Jānis, Ieva) beigsies ar neveiksmi.

Šī tipa teikumi arī var tikt uzskatīti par vaicājumiem. Šajā gadījumā tos var interpretēt kā „sameklēt x1, ... , xn tādu, ka L1 ^ . . . ^ Lp ir patiess”.

4. p ≥1, n = 1. Teikumi formā: L1 ^ . . . ^ Lp R.

Šāda veida fakti var tikt uzskatīti gan kā integritātes ierobežojumi, gan kā deduktīvie likumi.

5. p = 0, n > 1. Teikumi formā: R1 ^ . . . ^ Rn.

Ja atomāra teikuma Ri visi termi ir konstantes, tad tas attēlo nenoteiktu apgalvojumu. Tas nozīmē, ka dažas kombinācijas, kas sastāv no viena vai vairākiem Ri, ir patiesas, bet mēs nezinām, kuras ir patiesas un kuras ir aplamas.

6. p ≥ 1, n > 1. Teikumi formā: L1 ^ . . . ^ Lp R1 . . . Rn.

Teikumi var tikt interpretēti gan kā integritātes ierobežojumi, gan kā nenoteiktu datu definīcija jeb formulējums. Piemēram, integritātes ierobežojums, kas nosaka, ka katrai personai ir maksimums divi vecāki:

vecāks(x1, y1) ^ vecāks(x1, y2) ^ vecāks(x1, y3) (y1 = y2) (y1 = y3) (y2 = y3).

Teikums apgalvo, ka kādai personai ir trīs vecāki, tad diviem no tiem jābūt vienai un tai pašai personai.

Nenoteiktu datu formulējuma piemērs:

vecāks(x, y) māte(x, y) tēvs(x, y).

Teikums nosaka, ka jebkuram personu pārim x un y, ja tie ir vecāki, tad x ir vai nu y māte, vai tēvs, bet kurš, to nevar zināt.

7. p = 0, n = 0. Šis gadījums vienmēr nozīmē „aplams” un tas nevar būt kā daļa no datubāzes.

Visplašāk pielietotais teikumu tips relāciju datubāzēs (faktiski vienīgais) ir tips 1, savukārt deduktīvajās datubāzēs biežāk pielieto 4. tipu, kaut gan arī 6. teikumu tips šad un tad tiek izmantots.

Ja datubāze nesatur 5. un 6. tipa teikumus (t.i. nav nenoteiktu datu), tad šādu datubāzi sauc par noteiktu vai Horna datubāzi, jo satur tikai Horna teikumus. Ja datubāze ietver nenoteiktus teikumus (satur 5. un 6. tipa teikumus), tad attiecīgo datubāzi sauc par nenoteiktu.

Deduktīvo likumu veidošanas pamatprincipi

Likums ir izpildāms tikai tad, ja tas ir pareizi izveidots (well-formed), t.i., likuma sintakse un semantika atbilst vairākām prasībām:

1) likuma vērtību apgabals ir ierobežots: tas izpildās, ja likuma mainīgo vērtību apgabali ir ierobežoti. Mainīgā X vērtību apgabals skaitās ierobežots, ja tā iespējamās substitūcijas veido galīgu kopu (tā var būt arī tukša kopa);

2) likums ir drošs, t.i., katrs secinājuma daļas mainīgais ietilpst vismaz vienā pozitīvā teikuma nosacījuma daļā jeb premisā. Tādējādi tiek garantēts, ka secinājuma daļas mainīgos var aprēķināt, novērtējot premisu. Piemēram, sekojošais likums nav drošs, jo premisā mainīgais X ietilpst tikai negatīvā teikumā:

vīrietis( X ) :- not sieviete( X ).

Šo likumu var pārvērst par drošu, pievienojot premisai vienu pozitīvu teikumu:

vīrietis( X ) :- not sieviete( X ), cilvēks( X ).

3) likums ir stratificēts, ja tas satur teikumu ar negācijas simbolu. Tas nozīmē, ka likums netiek rekursīvi izmantots citu likumu premisās, lai neradītu rekursīvus likumu ciklus, kur ietilpst teikumi ar negāciju;

4) likums ir stratificēts, ja tas satur tādus termus kā kopas. Tas nozīmē, ka likums netiek rekursīvi izmantots citu likumu premisās, lai neradītu rekursīvus likumu ciklus, kur tiek izmantotas kopas.

Likumu attēlošanas veidi

Lai attiecīgo datu struktūru izmantotu likumu attēlošanai, tai jāpiemīt sekojošām īpašībām:

1) efektivitāte – likumi jāattēlo iespējami efektīvi gan no piekļuves laika, gan atmiņas viedokļa;

2) dinamiskums – iespējamo likumu skaits ir visai mainīgs, un likumu iekšējā struktūra var diezgan ievērojami atšķirties, tāpēc statiska struktūra šāda veida attēlojumiem neder;

3) jāatbalsta galveno deduktīvo metožu lietošana - tai pašā laikā tai jābūt paplašināmai, lai arī citus dedukcijas likumus varētu lietot.

Viena no datu struktūrām, kas atbilst visām iepriekš minētajām īpašībām, ir hierarhiskais koks.

Vispārīgā veidā likumu var attēlot sekojoši ( klauzulu formā ):

L1 ^ L2 ^ . . . ^ Lp R1 R2 . . . Rq.

Šāda likuma attēlošanu hierarhiskā koka struktūrā veiksim ar piemēra palīdzību. Definēsim likumu, kas nosaka, ja ir ceļš no X uz Y un no Y uz Z, tad var sastādīt maršrutu, kas ved no X uz Z:

premisa secinājums

ceļš( X, Y ) ^ ceļš ( Y, Z ) maršruts( X, Z )

predikāti argumenti

Vispārīga koka struktūra likumu attēlošanai parādīta attēlā.

Atbilstoši vispārīgai struktūrai transformētais piemēra likums parādīts attēlā.

Lai gan izveidotā koka struktūra ir vienkārša un labi saprotama, tajā trūkst viens vitāli svarīgs faktors – fakts, ka daži no argumentiem attiecas uz vienu un to pašu „objektu”. Tādējādi attēlā redzamā struktūra pārņem sintakses likumus, bet neievēro daļu no semantikas. Lai novērstu šo situāciju, nepieciešams tos argumentus, kuri attiecas uz vienu objektu, kombinēt kopā (attēls). Šādi pārveidojumi padara hierarhisko koku veidošanu komplicētāku, jo pirms katra argumenta pievienošanas kokam jāpārbauda, vai tāds arguments jau neeksistē.

Hierarhiskā koka attēlojums ir ļoti vienkārša pieeja likumu attēlošanai un glabāšanai. Viens liels šī attēlojuma trūkums ir nespēja savākt kopā vienā struktūrā saistītos likumus.

Hierarhisko koku glabāšana attieksmēs

Pēc vispārējās hierarhiskā koka struktūras analīzes, kļūst acīm redzams, ka ir neiespējami glabāt hierarhiskā koka struktūru vienkāršā, normalizētā relāciju tabulā. Hierarhiskā koka struktūrai (un likumiem) ir „viens pret daudziem” uzbūve – katram likumu var veidot daudz predikātu, un katram predikātam ir daudz argumentu. Šī iemesla dēļ vienīgais efektīvais veids hierarhiskā koka glabāšanai relāciju datubāzē ir lietot attiecīgu skaitu attieksmju. Ja hierarhiskā koka struktūra tiktu tieši „pārtulkota” relāciju formā, tiktu iegūtas sekojošas četras relācijas:

1) relācija LIKUMI – savieno likuma premisu ar secinājuma daļām:

Lauka nosaukums

Datu tips

Apraksts

LIKUMS_ID

Primārā atslēga

Likuma identifikators

PREMISA_ID

Primārā atslēga

Likuma premisas identifikators

SECIN_ID

Primārā atslēga

Likuma secinājuma identifikators

2) relācija PREDIKĀTI – savieno predikātus ar premisas un secinājuma daļām:

Lauka nosaukums

Datu tips

Apraksts

DAĻA_ID

Primārā atslēga

Likuma daļas identifikators

PREDIKĀTS_ID

Primārā atslēga

Predikāta identifikators

VĀRDS

String

Predikāta vārds

ARITĀTE

Integer

Predikāta aritāte

3) relācija ARGUMENTI – savieno argumentus ar predikātiem:

Lauka nosaukums

Datu tips

Apraksts

PREDIKĀTS_ID

Primārā atslēga

Predikāta identifikators

ARG_NR

Integer

Argumenta pozīcija ( 1, 2, ..., n )

VĒRTĪBA_ID

Primārā atslēga

Objekta identifikators, uz kuru attiecas šis arguments

4) relācija VĒRTĪBAS – argumentu patiesās vērtības:

Lauka nosaukums

Datu tips

Apraksts

VĒRTĪBA_ID

Primārā atslēga

Objekta identifikators

TIPS

Loģiskais

Vērtība KONSTANTE vai MAINĪGAIS

VĒRTĪBA

String

Objekta vērtība ( ja ir )

Vissvarīgākais ieguvums no relāciju kopas ir gan likumu izgūšanas, gan relāciju aizņemtās vietas efektivitāte. Taču ir kāds satraucošs faktors – tabulas ARGUMENTI lielums augs ļoti ātri līdz ar katra jauna likuma pievienošanu. Pieņemsim, ka datubāzē ir n likumi, tad:

1) katram likumam atbilst viena rinda tabulā LIKUMI. Ja datubāzē ir n likumi, tad tabulas LIKUMI lielums ir n ieraksti;

2) katram predikātam atbilst viena rinda tabulā PREDIKĀTI. Katram likumam var būt vairāki predikāti, kas ar to saistīti, līdz ar to vissliktākajā gadījumā tabulas PREDIKĀTI lielums ir apmēram O( n2 );

3) katram argumentam atbilst viena rinda tabulā ARGUMENTI. Katram predikātam var būt vairāki argumenti, līdz ar to vissliktākajā gadījumā tabulas ARGUMENTI lielums ir apmēram O( n3 );

4) rindu skaits tabulā VĒRTĪBAS ir pilnībā neatkarīgs no likumu skaita – tas ir atkarīgs tikai no unikālo „objektu” skaita, kas saistīti ar šī likuma bāzi.

Lietojot iepriekš aprakstītās LIKUMI, PREDIKĀTI, ARGUMENTI un VĒRTĪBAS relācijas, iepriekš attēloto hierarhisko koku transformēsim relācijās:

Tabula LIKUMI

LIKUMS_ID

PREMISA_ID

SECIN_ID

LIK1

PREM1

SEC1

Tabula PREDIKĀTI

DAĻA_ID

PREDIKĀTS_ID

VĀRDS

ARITĀTE

PREM1

PRED1

ceļš

2

PREM1

PRED2

ceļš

2

SEC1

PRED3

maršruts

2

Tabula ARGUMENTI

PREDIKĀTS_ID

ARG_NR

VĒRTĪBA_ID

PRED1

1

V1

PRED1

2

V2

PRED2

1

V3

PRED2

2

V4

PRED3

1

V5

PRED3

2

V6

Tabula VĒRTĪBAS

VĒRTĪBA_ID

TIPS

VĒRTĪBA

V1

MAINĪGAIS

X

V2

MAINĪGAIS

Y

V3

MAINĪGAIS

Y

V4

MAINĪGAIS

Z

V5

MAINĪGAIS

X

V6

MAINĪGAIS

Z

No dotās transformācijas var redzēt, ka tabulu izmērs var ātri kļūt samērā liels pat tad, ja datubāzē ir tikai viens likums. Tādējādi, pieaugot relāciju datubāzes datu apjomam, var būtiski samazināties datu izguves ātrdarbība.

Robinsona rezolūcijas princips

Robinsona rezolūcijas princips ir viens no izveduma likumiem, kas dod iespēju atvasināt jaunu pirmās kārtas loģikas teikumu no diviem dotiem teikumiem (teikumi pārveidoti konjunktīvā normālformā). Galvenokārt, šo principu pielieto, lai veiktu pierādīšanu no pretējā. Vislabāk šo principu paskaidrot ar piemēra palīdzību (attēls).

((1)) ((2)) (¬ P( a, b, c ) Q( d, e )P( X, Y, Z ) R( X, Y )Q( d, e ) R( a, b )(3))

Teikums (3) tiek iegūts meklējot literāļus teikumos (1) un (2), kuriem ir viens un tas pats predikāta vārds, bet ar nosacījumu, ka viens ir negatīvs, otrs nē. Vienīgais šāda veida literālis teikumos (1) un (2) ir P. Pielietojot unifikācijas algoritmu, atrodam teikumu substitūciju { a / X, b / Y, c / Z } un sistemātiski aizvietojam katru mainīgo. Visbeidzot formējam abu teikumu disjunkciju, tādējādi rezultātā iegūstot teikumu (3).

Vispārīgā gadījumā rezolūcijas principa pielietošana teorēmu pierādīšanā satur šādus posmus jeb soļus:

1) noliedz pierādāmo teorēmu un pievieno to noliegto teorēmu aksiomu sarakstam;

2) pārveido aksiomu sarakstu klauzālā formā (konjunktīvā normālformā), tādējādi iegūstot apgalvojumu globālo kopu;

3) vienkāršo apgalvojumus un izveido atbilstošas rezolventes;

4) pievieno šīs rezolventes globālajai kopai un rekursīvi izveido jaunas, pielietojot iepriekš aprakstīto tehniku;

5) aptur procedūru, kad ir atrasta pretruna, kā rezultātā veidojas tukša kopa. Šajā gadījumā pieņem, ka teorēma ir patiesa. Ja tukšu likumu kopu nevar izveidot, tad teorēma ir nepatiesa.

Ir vairāki rezolūcijas principa varianti:

1) SL – rezolūcija (Selection rule driven Linear resolution): lineārā rezolūcija ar atlases funkciju;

2) SLD – rezolūcija (Selection rule driven Linear resolution for Definite clauses): SL-rezolūcija Horna teikumiem;

3) SLDNF – rezolūcija (Selection rule driven Linear resolution for Definite clauses with Negation as Failure): SLD-rezolūcija ar negāciju kā neveiksmi.

Deduktīvās datu bāzes sistēmas sastāvdaļas

Deduktīvā datu bāze sastāv no:

1) sākuma dati jeb fakti (facts). To sauc par paplašināmo (extensional) datu bāzi;

2) secinājumu iegūšanas likumi (inference rules), kas glabā zināšanas par to, kā var iegūt no esošajiem faktiem jaunus faktus;

3) jaunos faktus sauc par papildināto (intensional) datu bāzi.

Deduktīvām datu bāzēm ir dažādas metodes, kas nosaka, kā paplašināmā datu bāze sadarbosies ar papildināto datu bāzi.

(Vide S0 (fakti)Vide S01 (fakti)Vide S02 (fakti)Vide S11 (fakti)Vide S12 (fakti))

(FaktiLikumiIzveduma mehānismsJauni fakti)

Loģiskās programmēšanas valoda un dati

Runājot loģikas terminos, datu bāze ir tikai formulu sakopojums. Katra formula pirmās kārtas loģikā var tikt reducēta teikumu kopā, kas satur formulas klauzulu formā. Šāda veida datu bāzi var aplūkot divos veidos:

1) modeļa teorētiskā pieeja – saskaņā ar to datu bāze ir tieši definētu attieksmju kopa, bet vaicājuma izpilde ir kādas formulas – attieksmju kombinācijas – aprēķins;

2) pierādījumu teorētiskā pieeja – tā apskata datu bāzi kā aksiomu jeb izveduma likumu kopu, bet vaicājuma izpildi uzskata par teorēmas – loģiskas aksiomu secības – pierādīšanu.

Vispārīgā gadījumā relāciju datu bāzes parasti tiek apskatītas no modeļa teorētiskā redzespunkta, t.i., datu bāze sastāv no patiesu faktu kopas (datu bāzē parasti neglabā faktus, kuru vērtības ir nepatiesas), taču tik pat labi tās var apskatīt no pierādījumu teorētiskā redzespunkta kā specifiskas loģiskās datu bāzes.

Abu šo pieeju pamatkonceptus izskatīsim ar piemēra palīdzību. Piemērs būs saistīts ar studentiem, kas mācās universitātē dažādas valodas. Neformālā informācija, ko glabāsim datubāzē, ir sekojoša:

1) katrs trešā kursa students mācās latīņu vai grieķu valodu;

2) neviens no studentiem vienlaicīgi neapgūst grieķu un vācu valodu;

3) modernas valodas un mirušas valodas ir valodas;

4) Jānis, Juris un Ieva ir studenti;

5) Jānis un Ieva ir trešā kursa studenti;

6) angļu un vācu valoda ir moderna valoda;

7) latīņu un grieķu ir mirušas valodas;

8) Jānis mācās angļu un vācu valodu;

9) Ieva nemācās angļu valodu.

Piemēra datu bāzes relācijas un to interpretācija:

Relācija

Relācijas interpretācija

mācās(x, y)

x mācās y

students(x)

x ir students

kurss_trešais(x)

x ir trešā kursa students

valoda(x)

x ir valoda

moderna_valoda(x)

x ir moderna valoda

mirusi_valoda(x)

x ir mirusi valoda

Modeļa teorētiskās pieejas semantika

Modeļa teorētiskajā pieejā aplūko loģisko formulu semantiku. Loģikā semantika tiek definēta kā teikuma patiesuma vērtību specifikācija. Tas nozīmē, ka katrai formulai tiek piekārtota patiesa vērtība.

No iepriekš aprakstītās datu bāzes konstanšu vērtībām un relācijām izveidojam Herbranda bāzi – visas iespējamās konstanšu un relāciju kombinācijas:

(jānisjurisievaangļu valoda latīņu valodavācu valoda grieķu valodavaloda(jānis), valoda(vācu valoda), ..., valoda (ieva),students(jānis), ...,students(ieva),mācās(jānis, jānis), ... , mācās(jānis, ieva),kurss_trešais(jānis), ..., kurss_trešais (ieva),moderna_valoda(jānis), ..., moderna_valoda (ieva),mirusi_valoda(jānis), ..., mirusi_valoda (ieva),KonstantesHerbranda bāze)

Nākošajā solī nepieciešams veikt datu bāzes interpretāciju. Interpretācija ir Herbranda bāzes apakškopa. Viena no interpretācijām piemēra datu bāzei ir sekojoša:

(students(jānis), students(juris), students(ieva),mācās(jānis, angļu valoda), mācās(jānis, vācu valoda),kurss_trešais(jānis), kurss_trešais (ieva),valoda(angļu valoda), valoda (vācu valoda), valoda (latīņu valoda), valoda (grieķu valoda),moderna_valoda(angļu valoda), moderna_valoda (vācu valoda),mirusi_valoda(latīņu valoda), mirusi_valoda (grieķu valoda),) (Interpretācija)

Interpretācijas ceļā iegūtie atomārie teikumi tiek apzīmēti kā fakti – teikumi, kuru patiesuma vērtības ir patiesas. Pārējie teikumi, kuri neatrodas datubāzē tiek uzskatīti par nepatiesiem.

Pierādījuma teorētiskās pieejas sintakse

Pierādījuma teorētiskajā pieejā aplūko loģisko formulu sintaksi. Šī pieeja ļauj ne tikai savādāk pieiet datu attēlošanai un risinājumu iegūšanai, bet arī mainīt glabājamās informācijas raksturu. Tādējādi kļūst iespējams ievietot datu bāzē speciālistu zināšanas, kurās ir atspoguļota konkrētas lietojumsfēras izpratne un šīs sfēras tipisko uzdevumu risināšanas metodes.

Pierādījumu teorijas pamats ir formulu un izvedumu likumu kopa, kas tiek lietota, lai secinātu citas formulas. Pirmās kārtas predikātu rēķini komplektējas no formulu krājuma un diviem izveduma likumiem:

1) MODUS PONENS;

2) vispārināšanas.

MODUS PONENS izveduma likumu formulē sekojoši:

P ^ ( P Q) Q,

kur P un Q ir pareizi teikumi. Likums nosaka, ka, ja P ir patiess un P implicē Q, tad var secināt, ka Q arī ir patiess.

Otrs pirmās kārtas predikātu rēķinu izveduma likums – vispārināšana nosaka, ka, ja P ir pareizs teikums un tas ir patiess, tad tas ir patiess pie jebkuras mainīgā X vērtības:

P ( x ) P

Citus izveduma likumus parasti lieto, lai atvasinātu teorēmas – daudzas no teorēmu pierādīšanas sistēmām balstās uz Robinsona rezolūcijas principu.

Izveduma likumi MODUS PONENS, vispārināšana un rezolūcija ir pilnīgi un droši. Izveduma likums ir drošs, ja jebkurš teikums, ko rada šis likums, loģiski seko no iepriekš dotās teikumu kopas.

Izveduma likums ir pilnīgs, ja iepriekš dotai predikātu rēķinu teikumu kopai šis likums ļauj secināt visus teikumus, kas loģiski seko.

Deduktīvā datu bāze un loģiskā programma

Programmēšanas valodas Visual Prolog sintakse ir izstrādāta, lai attēlotu zināšanas par objektiem, to īpašībām un attieksmēm. Attieksmes starp objektiem un to īpašībām tiek aprakstītas faktu un likumu veidā. Visual Prolog programma – loģiskā programma ir faktu un likumu sakopojums, kas sadalīts četrās pamatsadaļās jeb sekcijās (attēls):

1) domēnu jeb tipu sadaļa (DOMAINS) - sadaļas sākums tiek identificēts ar atslēgvārdu DOMAINS. Sadaļas ietvaros tiek definēti visu predikātu argumentu tipi.

2) predikātu sadaļa (PREDICATES) - sadaļas sākums tiek identificēts ar atslēgvārdu PREDICATES. Sadaļa ietver predikātu un to argumentu tipu definējumus.

3) teikumu sadaļa (CLAUSES) – sadaļas sākums tiek identificēts ar atslēgvārdu CLAUSES. Teikumu sadaļā ievieto programmu veidojošos faktus un likumus. Teikumi katram konkrētam predikātam jāizvieto kopā. Teikumu secību, ko apraksta viens predikāts, sauc par procedūru.

4) mērķu sadaļa (GOAL) - sadaļas sākums tiek identificēts ar atslēgvārdu GOAL. Katrā programmā drīkst izvietot tikai vienu mērķu sadaļu. Mērķi tiek uzdoti kā apakšmērķu saraksts, līdzīgi kā likuma ķermenis, bet ir divas atšķirības:

· atslēgvārdam GOAL neseko :- simbols;

· izpildot programmu, automātiski tiek izpildīts mērķis.

Atšķirībā no citām PROLOG versijām Visual Prolog ir kompilators, kas kontrolē arī objektu tipus, tāpēc katram predikātam jādefinē objektu tipi, kurus tas var izmantot. Tipu definējums ļauj kompilēt programmas uzreiz mašīnkodos, tādējādi programmas izpildes ātrums dažos gadījumos pat var pārsniegt analoģiskas programmas izpildi C un Pascal.

Loģiskās programmas izpilde

Programmas izpilde sākas ar mērķa GOAL izvedumu. Izskatot katru faktu un katru likumu no programmas CLAUSES sadaļas, programma meklē pirmo mērķa un fakta vai likuma secinājuma daļas sakritību. Ja nav neviena teikuma, kas būtu daļa no loģiskā izveduma ceļa, tad programma beidzas ar neveiksmi. Taču, ja programma spēj izvest mērķi, tad tā beidzas ar veiksmi.

Vienkāršas programmas piemērs parādīts attēlā.

Programmas mērķis ir izvest visus atrisinājumus vaicājumam tēvs(X,Y). Izpildot programmu, tā meklē predikāta tēvs sakritību ar kādu no CLAUSES teikumiem. Tā kā ir divi fakti, kas atbilst mērķa nosacījumiem, tad izveduma rezultātā ir divi risinājumi (attēls).

Loģiskās programmas realizētās deduktīvās datubāzes nepilnības

No datubāzu viedokļa raugoties, deduktīvās datu bāzes ir tradicionālo relāciju datubāzu paplašinājums, jo deduktīvā datubāze bez pamatatomiem (ground atoms), kuri atbilst rindām (tuples of relation) relāciju DB, satur arī vispārīgus likumus, kuri sastāda paplašināto daļu.

No loģiskās programmēšanas viedokļa deduktīvās datu bāzes var tikt vienlīdz apskatītas arī kā loģiskās programmas. Lai gan deduktīvās datu bāzes un loģiskās programmēšanas valodas ir balstītas uz kopēju paradigmu, tomēr pastāv dažādas būtiskas atšķirības. Atšķirības rodas, galvenokārt, tādēļ, ka deduktīvajām datu bāzēm jāglabā liels faktu apjoms, no kura ar vaicājumu palīdzību jāiegūst derīga informācija. Loģiskās programmēšanas sistēmas atbalsta tikai programmēšanu un nav nepieciešamas speciālas funkcijas datu modelēšanai un vadībai.

Galvenās nepilnības ir:

1) deduktīvajās datu bāzēs glabātā faktu kopa parasti ir daudz lielāka par glabāto likumu kopu. Šī īpašība nav sastopama loģiskajās programmās;

2) deduktīvajās datu bāzēs predikāti tiek sadalīti divās kopās: ekstensionālo predikātu kopa un intensionālo predikātu kopa. Loģiskajās programmās tāds sadalījums nepastāv;

3) parasti deduktīvo datu bāzu valodas nesatur funkcijas, vai satur ļoti ierobežotu funkciju skaitu un tām ir ierobežots (range-restricted) vērtību apgabals. Loģiskās programmēšanas valodas pilnīgi atbalsta funkcijas un to vērtību apgabals nav ierobežots;

4) deduktīvās datu bāzes atbalsta integritātes ierobežojumu definēšanu, kas ir svarīga datubāzu sistēmu funkcija. Loģiskajās programmās tāda koncepcija neeksistē;

5) tipiski datu bāzes vaicājums meklē visus risinājumus, kuri apmierina vaicājuma nosacījumus, bet mērķis (goal) loģiskajā programmā atrod tikai vienu no iespējamiem risinājumiem. Šī ir pamatatšķirība, kā vaicājumu izpildīšana atšķiras no nosacījumu izpildīšanas loģiskajās programmās.

No teorētiskā redzes viedokļa šīs atšķirības ir mazsvarīgas un var tikt ignorētas, tādējādi deduktīvās datu bāzes un loģiskās programmas termini bieži tiek savstarpēji aizstāti.

Atšķirības starp deduktīvo DB un loģiskās programmēšanas lietojumu

1. Deduktīvajās datu bāzēs predikāti ir sadalīti divās kopās: ekstensionālo (vecie) predikātu kopa un instensionālo (jauno) predikātu kopa. Loģiskajās programmās tāds sadalījums nepastāv.

2. Datu bāzes vaicājums meklē visus risinājumus, kuri apmierina vaicājuma nosacījumus, bet loģiskajā programmā mērķis (gοаl) ir viens no iespējamiem risinājumiem. Šī ir pamata atšķirība, kā nosacījumu izpildīšana loģiskajās programmās atšķiras no vaicājumu izpildīšanas.

LIKUMS

CEĻŠCEĻŠ

ZY

X

MARŠRUTS

DOMAINS

PREDICATES

CLAUSES

GOAL

LIKUMS

PREMISASECINĀJUMS

PREDIKĀTSPREDIKĀTSPREDIKĀTS

. . .

ARGUMENTSARGUMENTSARGUMENTS

. . .

LIKUMS

CEĻŠCEĻŠ

YZYX

MARŠRUTS

XZ