Dedukcyjne bazy danych i rekursja



Podobne dokumenty
Dedukcyjne bazy danych i rekursja

Bazy danych Algebra relacji Wykład dla studentów matematyki

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Programowanie w logice Wykład z baz danych dla

LOGIKA I TEORIA ZBIORÓW

Technologie baz danych

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Podstawy Sztucznej Inteligencji (PSZT)

Notacja. - operator implikacji, - operator koniunkcji v operator alternatywy - operator równoważności ~ operator negacji Duża litera (np.

Bazy danych Teoria projektowania relacyjnych baz danych. Wykła. Wykład dla studentów matematyki

Rachunki relacji. Rachunki relacji. RRK Relacyjny Rachunek Krotek

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia

Składnia rachunku predykatów pierwszego rzędu

Metoda Tablic Semantycznych

Elementy logiki i teorii mnogości

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

PODSTAWY SZTUCZNEJ INTELIGENCJI

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Bazy danych. Rozdział I. Wprowadzenie. Złączenie theta. Rozdział II. Algebra relacji. Złączenie theta. Złączenie naturalne.

Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

1 Podstawowe oznaczenia

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW

RBD Relacyjne Bazy Danych

Programowanie w logice

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Wstęp do Techniki Cyfrowej... Algebra Boole a

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Laboratorium przedmiotu Paradygmaty Programowania

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH

Elementy logiki matematycznej

Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Matematyka ETId Elementy logiki

LOGIKA Dedukcja Naturalna

Bazy dedukcyjne. 1. Filozofia nowego sposobu projektowania baz danych. 2. Wady klasycznych systemów bazodanowych

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

Arytmetyka liczb binarnych

Logika. Michał Lipnicki. 15 stycznia Zakład Logiki Stosowanej UAM. Michał Lipnicki () Logika 15 stycznia / 37

Bazy danych Język SQL część 2 Wykład dla studentów matem

Teoretyczne podstawy informatyki

Drzewa Semantyczne w KRZ

Języki programowania zasady ich tworzenia

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki. Wykład 14. Wprowadzenie do logiki intuicjonistycznej

Rachunek zdań i predykatów

Model relacyjny. Wykład II

Programowanie w logice Prolog 2

Podstawowe Pojęcia. Semantyczne KRZ

Wprowadzenie do Prologa

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Języki programowania deklaratywnego

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wykład 2. Relacyjny model danych

Logika Matematyczna (10)

Wykład XII. optymalizacja w relacyjnych bazach danych

Bazy danych wykład trzeci. Konrad Zdanowski

Dedukcyjne bazy danych

III rok kognitywistyki UAM,

1 Wstęp do modelu relacyjnego

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

Obliczenia iteracyjne

Programowanie deklaratywne

SZTUCZNA INTELIGENCJA

Dowody założeniowe w KRZ

Konsekwencja logiczna

ĆWICZENIE 2. DEF. Mówimy, że formuła A wynika logicznie z formuł wartościowanie w, takie że w A. A,, A w KRZ, jeżeli nie istnieje

Logika i teoria mnogości Wykład 14

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wprowadzenie do baz danych

Język rachunku predykatów Formuły rachunku predykatów Formuły spełnialne i prawdziwe Dowody założeniowe. 1 Zmienne x, y, z...

Logika binarna. Prawo łączności mówimy, że operator binarny * na zbiorze S jest łączny gdy (x * y) * z = x * (y * z) dla każdego x, y, z S.

Logika Stosowana. Wykład 2 - Logika modalna Część 3. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2017/2018

Programowanie deklaratywne

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

Algebrę L = (L, Neg, Alt, Kon, Imp) nazywamy algebrą języka logiki zdań. Jest to algebra o typie

Zastosowanie logiki matematycznej w procesie weryfikacji wymagań oprogramowania

Systemy GIS Tworzenie zapytań w bazach danych

Projekt 4: Programowanie w logice

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa.

Rachunek predykatów. Formuły rachunku predykatów. Plan wykładu. Relacje i predykaty - przykłady. Relacje i predykaty

Oracle11g: Wprowadzenie do SQL

III rok kognitywistyki UAM,

Zasady transformacji modelu DOZ do projektu tabel bazy danych

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Modele Herbranda. Logika obliczeniowa. Joanna Józefowska. Szukamy modelu. Przykład Problemy. Model Herbranda

Transkrypt:

Dedukcyjne bazy danych i rekursja Wykład z baz danych dla studentów matematyki 23 maja 2015

Bazy danych z perspektywy logiki Spojrzenie na bazy danych oczami logika pozwala jednolicie opisać szereg pojęć. Do opisu relacyjnych baz danych używa się zwykle rachunku predykatów bez symboli funkcyjnych. Fakty zapisane w wierszach tabel reprezentuje się literałami, np. Ojciec(Jan,Piotr) gdzie pierwszy symbol (Ojciec) odpowiada nazwie tabeli, a pozostałe zawartości pewnego wiersza w tej tabeli. Taki sposób opisu obejmuje również najprostsze realizacje baz danych, np. gdy fakty przechowuje się w postaci pojedynczej listy, wczytywanej do pamięci z pliku podczas ładowania bazy danych i zapisywanej na pliku przy zamykaniu bazy.

Relacje a logika A więc reprezentacja relacji Zwierzaki: gatunek imię waga Papuga Kropka 3,50 Papuga Lulu 5,35 Papuga Hipek 3,50 Lis Fufu 6,35 Krokodyl Czako 75,00 będa następujace literały Zwierzak(Papuga,Kropka,3.50) Zwierzak(Papuga,Lulu,5.35) Zwierzak(Papuga,Hipek,3.50) Zwierzak(Lis,Fufu,6.35) Zwierzak(Krokodyl,Czako,75.00) (dla nazwy relacji w rachunku predykatów użyjemy liczby pojedynczej, bo jest naturalniejsza).

(CWA:Closed World Assumption) Założenie o zamkniętości świata Przyjmuje się, że jeśli fakt nie znajduje się w bazie danych, to nie zachodzi (jest fałszywy). Inaczej mówiac, jeśli wiersz w 1, w 2,..., w n nie znajduje się w relacji R, to zachodzi R(w 1, w 2,..., w n ) Zasada leżac a u podstaw CWA jest minimalizacja ekstensji predykatów z bazy danych do dokładnie tych elementów, które występuja w tabelach.

CWA: przykład Dla bazy danych z podana przed chwila relacja Zwierzaki będzie spełnione): Zwierzak(Papuga,Czako,2.00) i wiele innych zanegowanych literałów.

CWA CWA ma zastosowanie tylko dla definite baz danych, w których nie przechowuje się dyzjunkcji obejmujacych dwa lub więcej nie zanegowane literały (tak jest oczywiście dla relacyjnych baz danych). Jeśli możliwe jest przechowywanie takich formuł, to zasada CWA może doprowadzić do sprzeczności, np. BD={A B} posiada ekstensję {A B, A, B}.

Domain closure assumption Założenie o zamkniętości dziedziny Nie ma innych indywiduów niż te znajdujace się w bazie danych. Inaczej mówiac, nie ma innych stałych niż te, które występuja w wierszach bazy danych. Założenie to spełniaja systemy ograniczajace niejawnie swoja dziedzinę referencji. Przykład: algebra relacji (bo wszelkie wyrażenia powstaja przez składanie relacji poczatkowych).

Unique name assumption Założenie o unikalności nazw Indywidua (stałe) o różnych nazwach sa różne. Inaczej mówiac, nie ma aksjomatów równościowych dla stałych.

Unikalność nazw: przykład W naszej przykładowej bazie Zwierzak(Papuga,Kropka,3.50) Zwierzak(Papuga,Lulu,5.35) Zwierzak(Papuga,Hipek,3.50) Zwierzak(Lis,Fufu,6.35) Zwierzak(Krokodyl,Czako,75.00) nie zachodzi Zwierzak(Krokodyl,Fufu,6.35) ponieważ zakładamy, że zachodzi Krokodyl Lis

Zapytania Do zapisywania zapytań będziemy używać formuł zawierajacych zmienne. Ograniczymy się do formuł prostych. Zapytania maja wtedy postać wzorców struktur podobnych do faktów, mogacych jednak zawierać zmienne. Zmiennymi będa symbole poprzedzone znakami zapytania, np. Ojciec(Jan,?x) jest zapytaniem o wszystkie dzieci Jana. Odpowiedź na zapytanie składa się z bezpośrednio wyszukanych faktów pasujacych do zapytania oraz z faktów wyprowadzonych przy użyciu reguł.

Klauzule Klauzula Klauzula nazywać będziemy formułę postaci lub też równoważnie P 1 P 2 P k N 1 N 2 N l P 1 P 2 P k N 1 N 2 N l Wyrażenia P 1,..., P k nazywać będziemy poprzednikami (lub przesłankami, zaś wyrażenia N 1,..., N l następnikami lub wnioskami klauzuli.

Rodzaje klauzul Klauzule bez poprzedników, zawierajace tylko jeden następnik bez zmiennych N(a 1,..., a m ). służa do reprezentowania faktów.

Rodzaje klauzul Klauzule bez następników P 1 P 2 P k. reprezentuja negację poprzedników i moga służyć do zapisywania ograniczeń (więzów poprawności). Stan bazy danych jest legalny, jeśli nie jest spełniona koniunkcja poprzedników, np. Ojciec(?x,?y) Matka(?x,?y). Taka klauzula majaca tylko jeden poprzednik bez zmiennych zapisuje jawnie negację faktu, np. Ojciec(Jan,Piotr). oznacza, że Jan nie jest ojcem Piotra.

Rodzaje klauzul Klauzula o pojedynczym następniku P 1 P 2 P k R służy w dedukcyjnych bazach danych do definiowania relacji R. Jak zobaczymy dalej, pełna definicja relacji może wymagać kilku klauzul. W relacyjnych bazach danych klauzule takie (tak jak i następne) służa do zapisywania ograniczeń.

Rodzaje klauzul Klauzule postaci N 1 N 2 N k wyrażaja wiedzę niekompletna: wiemy, że spełniony jest jeden lub więcej następników, ale nie wiemy który. Przykład: Student(Jan,Matematyka) Student(Jan,Biologia)

Rodzaje klauzul Klauzule o pełnej postaci P 1 P 2 P k N 1 N 2 N l można interpretować jako warunkowe informacje o niekompletnej wiedzy. Można też ich używać jako ograniczeń, np. aby zapisać, że każdy ma co najwyżej dwoje rodziców użyjemy Rodzic(?p,?a) Rodzic(?q,?a) Rodzic(?r,?a) (?p =?q) (?p =?r) (?q =?r)

Rodzaje klauzul Klauzula pusta, czyli klauzula bez poprzedników i następników, oznacza fałsz. Klauzula taka nie powinna nigdy wystapić w niesprzecznej bazie danych.

Dedukcyjne bazy danych W dedukcyjnych bazach danych dopuszcza się tylko niektóre rodzaje klauzul z programowania w logice. Nakłada sie dodatkowe ograniczenia. Brak symboli funkcyjnych. Tylko jeden następnik. Takie dedukcyjne bazy danych określa się jako definite. Zmienna z konkluzji reguły musi wystapić w jej treści. Zapewnia to spełnienie założenia o zamkniętości dziedziny. Jako predykaty obliczalne dozwolona tylko arytmetyka. Zauważmy, że formalnie narusza to założenie o zamkniętości dziedziny. Jednym z takich rozszerzeń relacyjnych baz danych jest Datalog.

Datalog W Datalogu klauzule zapisujemy jako reguły. Każdy predykat jest albo ekstensjonalny: zdefiniowany wyłacznie przez fakty zapisane w bazie danych, albo intensjonalny: zdefiniowany wyłacznie przez reguły. Reguły maja nieco zmieniona postać zapisu następnik <- poprzednik AND... przy czym zarówno następnik jak i poprzedniki maja postać wzorców, na przykład P(?x,?y,?z) <- Q(?x,?y,?z) AND x > 10

Datalog Ponieważ reguły Datalogu, podobnie jak klauzule, odpowiadaja implikacjom z logiki, posiadaja one zarówno interpretację logiczna jak i proceduralna. Na przykład regule Dziadek(?x,?z) <- Ojciec(?x,?y) AND Ojciec(?y,?z) odpowiada implikacja ( x, y, z) Ojciec(x, y) Ojciec(y, z) Dziadek(x, z) Jeśli reguła nie zawiera poprzedników, to jej następnik jest zawsze spełniony. Podobnie jak fakty, reguły przechowuje się także w bazie danych.

Reguły a zapytania Reguła pasuje do zapytania, jeśli jej konkluzja pasuje do zapytania. Znajdowanie odpowiedzi na zapytanie przy użyciu reguł polega na znalezieniu reguł pasujacych do zapytania dla każdej z nich wyszukanie w sposób spójny (tzn. tak, żeby wartości zmiennych były zgodne) odpowiedzi na podzapytania powstałe z przesłanek (czyli rekursja :-) złożenie otrzymanych wyników, z podstawieniem otrzymanych wartości zmiennych na zmienne w konkluzji. Ostateczna odpowiedzia na zapytanie jest lista wyszukanych faktów (dla reguł będa to konkretyzacje ich konkluzji).

Zalety Pozwalaja otrzymywać odpowiedzi wymagajace domknięcia przechodniego. Przykład: Mamy tabelę Zawiera(obiekt,składnik,ile) dotyczac a pojazdów (np. rowerów, sanek itp.) podajac a obiekty i ich bezpośrednie składowe. Chcemy otrzymać informację o wszystkich częściach wchodzacych w skład obiektu rower.

Przykładowa tabela Zawiera obiekt składnik ile rower koło 2 koło piasta 1 koło obręcz 1 obręcz szprycha 20 koło opona 1 rower rama 1 rama siodełko 1 rama kierownica 1

Definicja predykatu Części Definicja w Datalogu Czesci(?calosc,?czesc) <- Zawiera(?calosc,?czesc,?_). Czesci(?calosc,?czesc) <- Zawiera(?calosc,?skladnik,?_) AND Czesci(?skladnik,?czesc). i samo zapytanie Czesci( rower,?co)?

Realizacja zapytań W odróżnieniu od programowania w logice w Datalogu nie używa się nawracania. Budowa odpowiedzi odbywa się bottom-up: rozpoczynamy od pustej relacji Czesci i iteracyjnie dodajemy do niej wszystkie wiersze, które w tym momencie można otrzymać z reguł. Optymalizacja: w każdym kroku używamy reguł tylko dla wierszy dodanych w poprzednim kroku. Zauważmy, że jest to typowy algorytm wyznaczania minimalnego punktu stałego (tzw. minimalnego modelu). Z otrzymanej ekstensji relacji wybieramy tylko wiersze pasujace do zapytania.

Przykład obliczania odpowiedzi Rozpoczynam od pustej tabeli Czesci. Krok 1: z pierwszej reguły dodaję do niej wiersze rower, koło, koło, piasta, koło, obręcz, obręcz, szprycha, koło, opona, rower, rama, rama, siodełko, rama, kierownica. Krok 2: używajac drugiej reguły dodaję wiersze rower, piasta, rower, obręcz, rower, opona, rower, siodełko, rower, kierownica, koło, szprycha. Krok 3: używajac drugiej reguły dodaję wiersz rower, szprycha. Krok 4: ponieważ żadna reguła nie produkuje już nowych wierszy, kończę iterację i wybieram wiersze rower, koło, rower, rama, rower, piasta, rower, obręcz, rower, opona, rower, siodełko, rower, kierownica, rower, szprycha.

Rekursja w algebrze relacji W algebrze relacji można definiować relacje rekurencyjne nadajac im nazwy i używajac tych nazw w wyrażeniach definiujacych, np. Czci = π 1,2 (Zawiera) π 1,5 (Zawiera 2=1 Czci) a w bardziej ogólnej postaci Czci = f (Czci, Zawiera)

Zapytania rekurencyjne Datalog pozwolił na zadawanie zapytań w rodzaju Czy w magazynie zaczyna brakować jakichś części potrzebnych przy produkcji samolotu Iskra? lub Jaki jest całkowity koszt materiałów do budowy tego samolotu?. W SQL-3 też dodano możliwość zadawania takich zapytań.

Rekursja w SQL Zapytania rekurencyjne w SQL-3 definiuje się konstrukcja WITH [RECURSIVE] R(...) AS zapytanie używajace R... SELECT...; Można tak zdefiniować kilka pomocniczych relacji wzajemnie rekurancyjnych.

Przykład rekursji w SQL Zapiszemy nasze zapytanie z Datalogu w SQL WITH RECURSIVE Czesci(calosc,czesc) AS (SELECT obiekt,skladnik FROM Zawiera) UNION (SELECT obiekt,czesc FROM Zawiera, Czesci WHERE skladnik = calosc) SELECT czesc FROM Czesci WHERE calosc = rower ;

Negacja W poprzednikach reguł Datalogu można poprzedzać predykaty negacja NOT. Taki literał jest spełniony, jeśli ta negacja jest prawdziwa dla tego predykatu w minimalnym modelu. Popatrzmy jednak na następujace definicje DużaCzęść(?całość,?część) <- Zawiera(?całość,?część,?_), NOT MałaCzęść(?całość,?część). MałaCzęść(?całość,?część) <- Zawiera(?całość,?część,?_), NOT DużaCzęść(?całość,?część). Ten program ma wiele modeli, w zależności od tego, której z dwóch reguł użyjemy najpierw dla danej części.

Negacja Aby można to było sprawdzać, program z negacjami musi być stratyfikowalny: reguły predykatów intensjonalnych dzielimy na warstwy tak, by Definicja predykatu nie była w wyższej warstwie, niż jego wykorzystanie w definicjach innych predykatów. Negacja predykatu występowała w wyższej warstwie niż jego definicja. DużaCzęść(?całość,?część) <- Zawiera(?całość,?część,? ile > 1. MałaCzęść(?całość,?część) <- Zawiera(?całość,?część,? NOT DużaCzęść(?całość,?część). Minimalne punkty stałe wyznaczamy kolejno poczynajac od najniższej warstwy. Podobne ograniczenie na poprawność rekursji z negacja obowiazuje w SQL-3.