Dedukcyjne bazy danych i rekursja

Podobne dokumenty
Dedukcyjne bazy danych i rekursja

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

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

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

Technologie baz danych

Programowanie w logice Wykład z baz danych dla

Podstawy Sztucznej Inteligencji (PSZT)

Rachunki relacji. Rachunki relacji. RRK Relacyjny Rachunek Krotek

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

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

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

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

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

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Metoda Tablic Semantycznych

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

LOGIKA I TEORIA ZBIORÓW

PODSTAWY SZTUCZNEJ INTELIGENCJI

Składnia rachunku predykatów pierwszego rzędu

RBD Relacyjne Bazy Danych

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

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

Programowanie w logice

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

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

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

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

LOGIKA Dedukcja Naturalna

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

Elementy logiki i teorii mnogości

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

Teoretyczne podstawy informatyki

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

Laboratorium przedmiotu Paradygmaty Programowania

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

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

Języki programowania deklaratywnego

Wprowadzenie do Prologa

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

1 Wstęp do modelu relacyjnego

Bazy danych wykład trzeci. Konrad Zdanowski

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

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

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

1 Podstawowe oznaczenia

Wykład XII. optymalizacja w relacyjnych bazach danych

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

Języki programowania zasady ich tworzenia

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

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.

Programowanie w logice Prolog 2

Obliczenia iteracyjne

Zasady transformacji modelu DOZ do projektu tabel bazy danych

III rok kognitywistyki UAM,

Model relacyjny. Wykład II

Elementy logiki matematycznej

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

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

Dedukcyjne bazy danych

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

Logika Matematyczna (10)

Wstęp do informatyki- wykład 2

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

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

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

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

Systemy GIS Tworzenie zapytań w bazach danych

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

Arytmetyka liczb binarnych

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

Wstęp do Programowania potok funkcyjny

Programowanie liniowe metoda sympleks

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Wykład 5. SQL praca z tabelami 2

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

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

Interpretacja Niech U będzie zbiorem formuł takim, że zbiór {p 1,..., p k } jest zbiorem wszystkich symboli predykatywnych, {f 1,..., f l } jest zbior

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Zależności funkcyjne

Programowanie deklaratywne

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wprowadzenie do baz danych

Wykład 2. Relacyjny model danych

Wykład 8: klasy cz. 4

Systemy ekspertowe. Krzysztof Patan

Semantyka rachunku predykatów

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

SZTUCZNA INTELIGENCJA

Programowanie logiczne a negacja

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Projekt 4: Programowanie w logice

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Logika i teoria mnogości Wykład 14

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

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

Konsekwencja logiczna

Autor: Joanna Karwowska

Programowanie deklaratywne

Oracle11g: Wprowadzenie do SQL

Transkrypt:

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

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ł.

Dedukcyjne bazy danych W dedukcyjnych bazach danych dopuszcza się tylko niektóre rodzaje klauzul z programowania w logice. Nakłada sie bowiem 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 (sa one unifikowalne). Znajdowanie odpowiedzi na zapytanie przy użyciu reguł polega na znalezieniu wszystkich reguł pasujacych do zapytania dla każdej z nich wyszukaniu 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żeniu otrzymanych wyników, z podstawieniem otrzymanych wartości zmiennych na zmienne w konkluzji i w zapytaniu. 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. Części = π 1,2 (Zawiera) π 1,5 (Zawiera 2=1 Części) a w bardziej ogólnej postaci Części = f (Części, Zawiera)

Zapytania rekurencyjne w SQL 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 po podstawieniu wartości zmiennych ta negacja jest prawdziwa dla jego predykatu w minimalnym modelu. Popatrzmy jednak na następujace definicje DużaCzęść(?całość,?część) <- Zawiera(?całość,?część,?_) AND NOT MałaCzęść(?całość,?część). MałaCzęść(?całość,?część) <- Zawiera(?całość,?część,?_) AND 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 przewidywalnie obliczać, 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) AND ile > 1. MałaCzęść(?całość,?część) <- Zawiera(?całość,?część,?_) AND 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.