Bazy dedukcyjne 1. Filozofia nowego sposobu projektowania baz danych Bazy dedukcyjne to nowe podejście do projektowania baz danych, oparte na logice matematycznej. W porównaniu do poprzednich modeli baz danych, w dedukcyjnych bazach danych można wyróżnić trzy nowe elementy, jeśli chodzi o projektowanie baz danych: użycie języka logiki do opisu rozmaitych aspektów struktury, działania i użytkowania bazy danych w ten sposób język logiki staje się uniwersalnym środkiem komunikowania z bazą danych. Ponadto bezsprzeczną zaletą języka logiki jest fakt, iż jest on zbliżony do języka naturalnego. deklaratywny, a nie proceduralny, sposób formułowania kwerend, co wydatnie ułatwia sposób komunikacji użytkownika z systemem. Dodatkowo język, za pomocą którego tworzymy kwerendy, ma większą moc ekspresji niż odpowiadające mu języki w klasycznych bazach danych. możliwość prowadzenia wnioskowania w bazie, co powiększa liczbę możliwych odpowiedzi udzielanych przez system zarządzania bazą danych. 2. Wady klasycznych systemów bazodanowych klasyczne modele baz danych charakteryzują się bardzo ustrukturalizowanym sposobem reprezentowania wiedzy o świecie rzeczywistym są to bowiem albo grafy, albo relacje. W rezultacie informacje zanim zostaną wprowadzone do bazy danych już są w pewnym stopniu przetworzone. Z tego powodu projektant bazy danych jest niejako zmuszony do myślenia w kategoriach i terminologii dopuszczalnej w ramach danego modelu bazy danych. Tymczasem wykorzystanie w tym celu języka naturalnego zrzuca z projektanta ten balast sztuczności. w klasycznych modelach baz danych mamy problemy, aby w naturalny sposób przechowywać różnego rodzaju informacje, z które często pojawiają się w życiu codziennym, np. Kowalski mieszka albo w Łodzi, albo Sieradzu, Janusz jest ojcem Marcina lub Marty, itp. Trudność polega na reprezentowaniu spójników logicznych albo, lub. Innym przykładem informacji, którą trudno zamodelować w relacyjnych bazach danych, jest informacja negatywna, np. Monika nie chorowała na odrę. odpowiedź na pytanie zadane przez użytkownika relacyjnej bazy danych może składać się tylko z pewnego skończonego ciągu wyrażeń w algebrze relacyjnej, w SQL bądź innym relacyjnym języku zapytań. Nie jest natomiast możliwe tworzenie odpowiedzi na drodze wnioskowania opartego na danych przechowywanych w bazie oraz prawa logiki. Z tego powodu, np. jeśli w bazie o schemacie {OJCIEC, SYN} przechowywane są informacje o związkach typu ojciec-syn pomiędzy osobami, to nie istnieje możliwość sformułowania zapytania np. o wszystkich potomków Jana Kowalskiego. 1
3. Przykład bazy dedukcyjnej Przykład. Rozważamy wycinek świata rzeczywistego, którym jest nasza uczelnia wyższa, a dokładniej fragment dotyczący zaliczenia danego roku nauczania. Część wiedzy, jaką posiadamy odnośnie modelowanego fragmentu rzeczywistości, jest następująca: Adamczyk jest studentem naszej uczelni. Bralski jest studentem naszej uczelni. Żabczyk jest studentem naszej uczelni. Adamczyk nie zdał egzaminu E5. Wszyscy studenci są wpisani do USOS-a. Wszyscy studenci w razie nie zdania jakiegoś egzaminu nie mają zaliczonego roku. Studentami naszej uczelni mogą być tylko maturzyści. 4. Elementy języka dedukcyjnej bazy danych Opiszemy teraz pewien język, za pomocą którego zamodelujemy rozważany fargment świata rzeczywistego: Do alfabetu tego języka należą: symbole stałych, m.in. Adamczyk, Bralski,, Żabczyk symbole zmiennych, m.in. x, symbole predykatowe, m.in. student, maturzysta, niezdany, wpisany_usos, rok_niezaliczony, spójniki logiczne, m.in.,, ~ kwantyfikatory m.in. nawiasy. 5. Opis modelowanego fragmentu rzeczywistości w dedukcyjnym modelu danych Przykładową wiedzę o naszej uczelni możemy teraz zapisać w postaci formuł przyjętego języka: student (Adamczyk) student (Bralski) student (Żabczyk) maturzysta(adamczyk) maturzysta(bralski) maturzysta(żabczyk) niezdany(adamczyk, E5) baza faktów x ( student(x) wpisany_usos(x)) x y ( wpisany_usos (x) niezdaje (x, y) rok_niezal iczony(x)) baza reguł x ( student(x) maturzysta(x)) 2 zależności semantyczne
6. Opis modelowanego fragmentu rzeczywistości w dedukcyjnym modelu danych W powyższym przykładzie można wyróżnić trzy rodzaje formuł: formuły dotyczące informacji (faktów) o studentach Adamczyku, Bralskim,, Żabczyku tworzą tzw. bazę faktów, formuły z drugiego zbioru są zdaniami zawierającymi zmienne zdania te podają ogólną wiedzę w formie reguł na temat zaliczania roku na uczelni zbiór tych reguł jest nazywanym bazą reguł, formuły z trzeciego zbioru także zawierają zmienne, tym niemniej przeznaczenie tych zdań w porównaniu z regułami jest inne. Są one mianowicie zapisem zależności semantycznych właściwych opisywanemu światu (uczelni). Tworzą one tzw. bazę zależności semantycznych. Są one używane przez system w celu sprawdzenia, czy baza faktów jest zgodna z ogólnymi właściwościami i/lub ograniczeniami świata. Baza faktów i baza reguł tworzą łącznie tzw. bazę wiedzy. Natomiast bazę wiedzy łącznie z zależnościami semantycznymi nazywamy bazą wiedzy z ograniczeniami semantycznymi. Jest ona częścią dedukcyjnego systemu bazy danych, do którego należą, choć nie wymienione jawnie, aksjomaty logiczne oraz reguły wnioskowania. 7. Reguły a zależności semantyczne Jak wynika choćby z pobieżnej analizy, istniej formalne podobieństwo pomiędzy regułami a zależnościami semantycznymi. Główna różnica dotyczy przeznaczenia jednych i drugich. A mianowicie, reguły służą do definiowania pojęć wtórnych na podstawie arbitralnie wybranych pojęć pierwotnych lub do zapisu swego rodzaju konsekwencji, wynikań, itp. Przykładowo, regułą definiującą pojęcie dziadek, przy założeniu, że terminami podstawowymi są ojciec i matka jest reguła postaci: x y z (((ojciec(x,y) matka(x,y)) ojciec(z,x)) dziadek(z,y)). Same reguły podane w rozważanej bazie są ilustracją przypadku konsekwencji. Natomiast zależności semantyczne opisują właściwości świata rzeczywistego, które spełniają funkcję ograniczeń nakładanych na fakty. Przykładem formuły, która mogłaby należeć do grupy zależności semantycznej jest choćby poniższa formuła: x (egzamin_maturalny_przedmiotu(x) punkty_zdania(x,y) y 30. Przy budowaniu logicznej bazy danych rozstrzygnięcie, czy formuła ma być zastosowana jako reguła, czy też zależność semantyczna nie jest rzeczą łatwą ze względu na arbitralność każdej reprezentacji świata. 8. Schematy wykorzystywane w procesie automatycznego dowodzenia twierdzeń Schematem rezolucji nazywa się regułę inferencyjną postaci A B, C ~B A C gdzie A, B, C są klauzulami. Wykonanie kroku rezolucji prowadzi do wchłonięcia formuł B i ~B. Klauzula A jest nazywana rezolwentą binarną klauzul A B i C ~B. C 3
Klauzulą pustą jest nazywana rezolwenta binarna jednoliterowych klauzul i ~, która nie jest spełniona w żadnej strukturze jest oznaczana przez symbol NIL. Schemat podstawienia jest regułą wnioskowania, z której często korzysta się przy korzystaniu ze schematu rezolucji ma ona postać A A x1,,xn [t 1,.,t n ] gdzie formuła pod kreską (wniosek) jest formułą, którą otrzymujemy z formuły A w rezultacie zastąpienia wszystkich wolnych wystąpień zmiennych x 1,,x n odpowiednio termami t 1,.,t n. 9. Dowody twierdzeń uzyskiwane za pomocą metody korzystającej ze schematu rezolucji Dowody twierdzeń uzyskiwane za pomocą metody korzystającej ze schematu rezolucji można zaliczyć do klasy dowodów nie wprost. Przyjmujemy, iż dany jest zbiór klauzul niesprzecznych oraz klauzula, o której chcemy powiedzieć, że jest twierdzeniem wynikającym z, tj.. Zarys procedury: a) do zbioru dołączamy zanegowaną klauzulę, tzn. otrzymujemy zbiór formuł = {~ }; b) do wybranych klauzul ze zbioru stosujemy schemat rezolucji i, o ile to jest potrzebne, schemat podstawienia; c) jeżeli otrzymana rezolwenta r jest pusta, to wnioskowanie kończymy; w przeciwnym razie rezolwentę dołączamy do zbioru klauzul i wracamy do punktu b). Uzyskanie rezolwenty, która jest klauzulą pustą oznacza, że zbiór {~ } jest sprzeczny. A zatem skoro zbiór jest niesprzeczny, to formuła musi być twierdzeniem. 10. Dedukcyjna baza formuły w postaci zbioru klauzul Rozważaną w przykładzie dedukcyjną bazę danych Nasza uczelnia przedstawmy w postaci zbioru klauzul: student(adamczyk) student(bralski) student(żabczyk) maturzysta(adamczyk) maturzysta(bralski) maturzysta(żabczyk) niezdaje(adamczyk,e5) ~ student(x) wpisany_usos(x) ~ wpisany_usos(x) ~ niezdaje(x,y) rok_niezaliczony(x) ~ student(x) maturzysta(x) 4
11. Mechanizm odpowiedzi na kwerendy w dedukcyjnych bazach danych W rozważanej dedukcyjnej bazie danych Nasza uczelnia zadajmy pytanie: Czy Adamczyk ma niezaliczony rok? Pytanie to można zapisać krótko w następującej postaci: rok_niezaliczony(adamczyk) W dedukcyjnych bazach danych odpowiedź na pytanie polega na wyprowadzeniu (udowodnieniu) twierdzenia reprezentowanego przez pytanie. System zarządzania dedukcyjną bazą danych dokonuje tego przy wykorzystaniu schematu rezolucji i schematu podstawienia. Aby udowodnić podaną powyżej formułę należy sprawdzić, czy dołączenie formuły zanegowanej, tj. ~ rok_niezaliczony(adamczyk) nie doprowadzi do sprzeczności (dowód nie wprost). W pierwszym rzędzie należy jednak sprawdzić, czy w bazie faktów jest napis rok_niezaliczony(adamczyk). Gdyby taki napis został znaleziony w bazie faktów, to przez zastosowanie zasady rezolucji otrzymalibyśmy natychmiast klauzule pustą, co kończyłoby cały proces dowodzenia. 12. Mechanizm odpowiedzi na kwerendy w dedukcyjnych bazach danych W rozważanej dedukcyjnej bazie danych Nasza uczelnia przypadek ten jednak nie występuje, gdyż w bazie faktów nie ma napisu rok_niezaliczony(adamczyk). W takiej sytuacji system kontynuuje wnioskowanie i w dalszym ciągu korzysta w tym celu ze schematu rezolucji i schematu podstawienia, co ma następujący przebieg: klauzulę ~ rok_niezaliczony(adamczyk) dołączamy do zbioru klauzul; do klauzul ~ wpisany_usos(x) ~ niezdaje(x,y) rok_niezaliczony(x) stosujemy schemat podstawienia, przy czym za x podstawiamy Adamczyk, zaś za y podstawiamy E5. Otrzymujemy klauzulę postaci: ~ wpisany_usos(adamczyk) ~ niezdaje(adamczyk,e5) rok_niezaliczony(adamczyk) do otrzymanej klauzuli i klauzuli z pierwszego kroku stosujemy schemat rezolucji: ~ wpisany_usos(adamczyk) ~ niezdaje(adamczyk,e5) rok_niezaliczony(adamczyk), NIL ~ rok_niezaliczony(adamczyk) ~ wpisany_usos(adamczyk) ~ niezdaje(adamczyk,e5) do otrzymanej klauzuli i faktów w bazie danych stosujemy schemat rezolucji: ~ wpisany_usos(adamczyk) ~ niezdaje(adamczyk,e5), NIL niezdaje(adamczyk,e5) ~ wpisany_usos(adamczyk) do klauzuli ~ student(x) wpisany_usos(x) stosujemy schemat podstawienia, przy czym za x podstawiamy Adamczyk. Otrzymujemy klauzulę postaci: ~ student(adamczyk) wpisany_usos(adamczyk) do otrzymanej w poprzednim kroku klauzuli i do rezolwenty otrzymanej dwa kroki wcześniej stosujemy schemat rezolucji: NIL ~ wpisany_usos(adamczyk), ~ student(adamczyk) wpisany_usos(adamczyk) ~ student(adamczyk) 5
do otrzymanej rezolwenty i faktu student(adamczyk), który występuje w bazie wiedzy stosujemy schemat rezolucji: NIL ~ student(adamczyk), NIL student(adamczyk) NIL Na mocy metody rezolucji stwierdzamy, że klauzula ~ rok_niezaliczony(adamczyk) jest sprzeczna z naszą bazą danych, to z kolei oznacza, że klauzula rok_niezaliczony(adamczyk) jest twierdzeniem. A zatem odpowiedź na pytanie, czy Adamczyk ma niezaliczony rok jest twierdząca. 13. Pojęcie kwerendy Proces odpowiadania na pytanie polega na przyjęciu hipotezy, iż jest ono twierdzeniem, które chcemy udowodnić korzystając z wiedzy zawartej w bazie danych. W ogólnym przypadku kwerenda jest dowolną formułą. W praktyce, gdy na formuły bazy danych narzucone są jakieś ograniczenia synktatyczne, to postać pytania także musi uwzględniać te ograniczenia. Niezależnie od ewentualnych ograniczeń, wśród kwerend wyróżniamy dwa rodzaje zapytań: pytania pierwszego rodzaju to formuły ze zmiennymi wolnymi (w przypadku klauzul po prostu zmiennymi), pytania drugiego typu są zdaniami. 14. Odpowiedź na pytanie Przyjmijmy, iż do bazy T jest skierowane pytanie pierwszego typu, które jest formułą (x 1,.,x n ), gdzie x 1,.,x n są zmiennymi wolnymi. Odpowiedzią na tak postawione pytanie są krotki a 1,.,a n, takie, iż T (a 1,.,a n ) (ten zapis oznacza, iż formuła (a 1,.,a n ) dla krotki a 1,.,a n jest prawdziwa, inaczej jest konsekwencją wiedzy zawartej w bazie T. Natomiast jeśli do bazy T jest skierowane pytanie drugiego typu, to odpowiedzią na nie jest TAK lub NIE. Np. jeśli do rozważanej bazy zadamy pytanie czy Adamczyk jest studentem, tzn. student(adamczyk), to otrzymamy odpowiedź TAK, gdyż T student(abacki). W ogólnym przypadku, jeśli dla zapytania drugiego typu w bazie T mamy T, wtedy odpowiedź na to zapytanie jest pozytywna TAK. Natomiast w przeciwnym razie, mamy do czynienia z bardziej skomplikowaną sytuacją, która zostanie zilustrowana poniżej. 15. Przykładowe zapytanie Przykład. Przeanalizujmy sposób odpowiedzi na zapytanie: kto jest studentem skierowane do rozważanej bazy. Kwerendę tę możemy zapisać w postaci: x student(x). Odpowiedź na to pytanie jest natychmiastowa, co jest konsekwencją, iż tę formułę można wyprowadź natychmiast na podstawie informacji zawartych w rozważanej bazie. 6
Do powyższej klauzuli należy zastosować schemat podstawienia i zasadę rezolucji, czego konsekwencją będzie uzyskanie następującej odpowiedzi : {Adamczyk, Bralski,, Żabczyk} Jak z powyższego wynika, jako odpowiedź na tak postawione pytanie wystarczy stwierdzić, iż istnieje jakiś (wystarczy, że jeden) student, np. przez podanie jego nazwiska. Wynika to z faktu, iż kwerenda ta w swoim sformułowaniu zawiera kwantyfikator pytający o istnienie obiektu, który jest studentem. 7