300 likes | 424 Views
Adatbázis-technológia. 8. előadás Deduktív adatbázisok. Az előadás célja. megmutatni a navigációs és deklaratív lekérdezés közötti különbséget; bemutatni a logikai adatbázisok kialakulásának indokait; bemutatni a logikai programozás és a Prolog nyelv legfontosabb tulajdonságait;
E N D
Adatbázis-technológia 8. előadás Deduktív adatbázisok
Az előadás célja • megmutatni a navigációs és deklaratív lekérdezés közötti különbséget; • bemutatni a logikai adatbázisok kialakulásának indokait; • bemutatni a logikai programozás és a Prolog nyelv legfontosabb tulajdonságait; • ismertetni a deduktív adatbázisok felépítését; • vázolni az új ismeretek előállításának módját deklaratív adatbázisokban.
Az előadás vázlata • Logikai programozás és logikai adatbázisok. • Deduktív adatbázisok. • Deduktív adatbázisok felépítése. • Szabályok értelmezése.
Eredet és háttér Az 1980-as évek alatt alakultak ki a relációs adatbá-zisok és a logikai programozás kapcsolatából. Cél: • relációs lekérdező nyelvek továbbfejlesztése; • rekurzív lekérdezések kezelése. Elméleti háttér: • logikai programozás; • relációs adatbázisok; • automatizált tételbizonyítás; • matematikai logika.
Lekérdezések típusai • Navigációs lekérdezés: a lekérdezés explicit módon leírja, hogy a lekérdezés szempontjából fontos adatok milyen úton érhetők el. • Deklaratív lekérdezés: a lekérdezés azt írja le, hogy milyen feltételekkel rendelkező adatokra van szükség. • Deklaratív nyelv: szigorú szemantikai szabályok-kal rendelkező nyelv deklaratív lekérdezések definiálására.
Deklaratív nyelvek • A logikai programozás legelterjedtebb nyelve a Prolog, amely a deduktív adatbázisok kialakításá-nak is alapja volt. • A Prolog nyelv része a Datalog, amely szabályok deklaratív megfogalmazására használható egy létező relációhalmazon. • Bár a Datalog nyelvi szerkezete megfelel a Prolognak, működésének módja nyitott.
Megjegyzés Az előadásban a Prolog szerkezetét és jelölés-rendszerét fogjuk használni. Az előadás példái a Prolog keretén belül maradnak, így min-denki kipróbálhatja valamilyen Prolog implementációval.
Logikai adatbázisok • Logikai adatbázisokban az adatok logikai formulákkal vannak leírva. • A logikai formulák gyakran az elsőrendű logika egy korlátozott részhalmazát képezik. • A logikai formulák a valós világnak az adatbázis-alkalmazással kapcsolatban lévő részét írják le, azaz a valós világ logikai reprezentációját adják. • A logikai adatbázisok szemantikája a matematikai logikán alapszik.
Deduktív adatbázisok • Nincs pontos definíciójuk. • Szűkebb értelemben egy deduktív adatbázis olyan elsőrendű logikai adatbázis, amely speciális for-májú állításokból áll és a levezetésen (dedukción) alapszik. • Tágabb értelemben minden logikai adatbázis tekinthető deduktív adatbázisnak.
Deduktív adatbázisok kialakulása Az első logikai adatbázisok tulajdonképpen logikai programok voltak, amelyeket integritási feltételek-kel egészítettek ki. Később kiderült, hogy az adatbázisok részéről továb-bi követelmények fogalmazhatók meg: • összetett objektumok kezelése; • relációk összesítése; • nem teljes és inkonzisztens információk kezelése.
Deduktív adatbázisok létrehozása • Egy logikai nyelv bővítése adatbázis-szolgáltatá-sokkal, úgymint az adatelérés szabályozása, tranzakció-kezelés, adatbázis-frissítési szabályok. Ezzel lehetővé válik az adatbázisokra jellemző többfelhasználós környezet és a nagy adathalmaz. • Hagyományos adatbázis-rendszerek kiegészítése logikai nyelvi konstrukciókkal - például egy ma-gas szintű szabályspecifikációs nyelvvel, - vagy egy olyan logikai nyelvvel, amely az adadefiniálás és -kezelés funkcióit is szolgáltatja.
Deduktív adatbázis felépítése intenzionális adatbázis Szabályok extenzionális adatbázis Tények
Tények • A tényeket hasonlóképpen írjuk le, mint a reláció-kat, azzal a különbséggel, hogy a tulajdonság-típusoknak nem kell feltétlenül nevet adni. • Egy tény egy olyan reláció-előfordulás, ahol a tulajdonság-előfordulások vannak felsorolva. • Deduktív adatbázisban a tulajdonság-előfordulá-sok sorrendje kötött. • A tulajdonságtípust a sorrendben elfoglalt helye azonosítja.
Szabályok • A szabályok a relációs nézetekhez hasonlíthatók. • Virtuális relációkat definiálnak, amelyek eredeti-leg nincsenek az adatbázisban, de a tényekből le-vezethetők egy következtetési mechanizmus alap-ján. • A fő különbség a nézetek és a szabályok között, hogy a szabályok tartalmazhatnak rekurziót, ame-lyet a szokásos relációs nézetekkel nem lehet defi-niálni. • A szabályokkal új ismereteket lehet előállítani.
Prolog jelölés • Prologban a tények és szabályok kifejezésére egyedi elnevezésű predikátumokat használunk. • Egy predikátumnak sajátos jelentése van, amelyet a neve hordoz, és rögzített számú argumentuma. • Ha az összes argumentum konstans, a predikátum egy tényt fejez ki. • Ha egy vagy több argumentum változó, akkor a predikátum lehet • lekérdezés; • szabály része; • feltétel.
A példa A deduktív adatbázisok-ról és a logikai progra-mozásról szóló iroda-lom szinte csak két példát ismer. Az egyik a szervezeti hi-erarchia, a másik a ro-koni kapcsolatok leírá-sa. Mi az utóbbit választjuk.
1. részlet a példából szem(m001,”Molnár Ferenc”,1905,f). Az m001 azonosítójú személy neve Molnár Ferenc, 1905-ben született és férfi. szem(t001,”Tóth Ildikó”,1907,n). A t001 azonosítójú személy neve Tóth Ildikó, 1907-ben született és nő. szem(m002,”Molnár Mihály”,1938,f).szem(m003,”Molnár Sándor”,1931,f).szem(m004,”Molnár Lilla”,1935,n).
2. részlet a példából gyereke(m001,m002). Az m001 azonosítójú személy (Molnár Ferenc) gye-reke az m002 azonosítójú személy (Molnár Mihály). gyereke(m001,m003). gyereke(m001,m004). gyereke(t001,m002). gyereke(t001,m003). gyereke(t001,m004). Molnár Ferenc és Tóth Ildikó gyerekeinek, azaz a Molnár családnak a definiálása
Szabályok definiálása Egy szabály alakja: fej:- törzs. ahol • a fej egyetlen predikátum, amelyet gyakran a szabály következményének neveznek; • a törzs egy vagy több, egymástól vesszővel elválasztott predikátum, amelyet a szabály premisszáinak nevezünk. A szabály azt fogalmazza meg, hogy mindazon ese-tekre, amelyekre a törzs minden premisszája igaz, a következmény is igaz.
Megjegyzés A törzsben szereplő pre-dikátumokat a logikai “és” művelet kapcsolja össze. Egy predikátum több sza-bály fejében szerepel-het. Két (vagy több) azonos fejű szabály törzsei között a logikai “vagy” művelet érvényes.
3. részlet a példából apja(X,Y):-gyereke(Y,X),szem(Y,_,_,f). Az “apja” kapcsolat (X apja Y) definiálása két személy között. • X,Y két változó. • Prologban a változók nagybetűvel, a szimbólumok kis-betűvel kezdődnek. Szimbólumban nem lehet szóköz. • Az aláhúzás ( _ ) karakter a szabály megfogalma-zásában érdektelen argumentumok helyén szere-pel. anyja(X,Y):-gyereke(Y,X),szem(Y,_,_,n).
Beépített predikátumok • A Prolog számos beépített predikátumot tartalmaz, amelyek implementációnként változnak. • Minden Prolog implementáció tartalmazza az összehasonlító operátorokat (=, <, <=, >, >=, <>). • =(X,Y) helyett X=Y írható. • A Prologban az aritmetikai műveletek (+, -, *, /) predikátumok argumentumaiban használhatók. • Datalogban ez nem megengedett; ez a legjelentősebb különbség a prolog és a Datalog között.
4. részlet a példából utodja(X,Y):-gyereke(X,Y).utodja(X,Y):-gyereke(X,Z),utodja(Z,Y). Az “utódja” kapcsolat (X utódja Y) definiálásakor kettő szabályt fogalmazunk meg: • egy személy gyereke egyben az utódja; • egy személy gyerekének az utódja a személynek is utódja. A második szabály példa rekurzív kapcsolatra is.
Lekérdezések • A lekérdezés egy predikátum egy vagy több változóval. • A lekérdezés eredménye azok az igaz predikátu-mok, ahol a lekérdezésben szereplő argumentu-mok konstansok, és a konstansok minden lehetsé-ges kombinációja előfordul.
Példák lekérdezésekre utodja(m001,X)? • m001 (Molnár Ferenc) utódjai. utodja(X,k004)? • Kiknek az utódja k004 (Kovács Izabella) - azaz, kik az elődei. apja(k004,X),szem(X,Y,_,_)? • Ki az apja k004-nek, és az apja nevére is kíváncsiak vagyunk.
Szabályok értelmezése I. Bizonyításelméleti értelmezés: • az adatbázis n-esei tények; • a szabályok axiómák, amelyek alapján az ismert tényekből újabb tényeket állíthatunk elő; • minden új tény csak úgy állítható elő, hogy a jobb oldalon adott vagy bizonyított tényekkel helyette-sítünk és a bal oldalon lesz az új tény; • ez csak akkor igaz, ha nincs tagadás a szabályokban vagy a tényekben; • a tagadások nemvárt eredkményeket adhatnak.
Bizonyításelméleti értelmezés 1. utodja(X,Y):-gyereke(X,Y). (1. szabály) 2. utodja(X,Y):-gyereke(X,Z),utodja(Z,Y). (2. szabály) 3. gyereke(m004,s004). (axióma, adott) 4. gyereke(m001,m004). (axióma, adott) 5. utodja(m004,s004). (1. szabály alkalmazása 3-ra) 6. utodja(m001,s004):- gyereke(m001,m004), utodja(m004,s004). (2. szabály alkalmazása 4-re és 5-re)
Szabályok értelmezése II. Modellelméleti értelmezés: • a szabályok lehetséges világokat definiálnak; • az adatbázis egy predikátum igaz előfordulásai ugyanazzal a névvel mint a tábláé; • az adatbázis egy értéktartománynak csak egyes értékeit tartalmazza, nem az összes előfordulást; • egy modell igaz hozzárendelések halmaza (azaz egy értelmezés) amely az összes szabályt igazzá teszi attól függetlenül, hogy hogyan rendeljük hozzá az értékeket a változókhoz.
Szabályok kiértékelése I. • A Prolog a szabályokat visszafelé láncolással (backward chaining) értékeli. • Ez egy felülről-lefelé-haladó (top-down) megkö-zelítés, amely a szabályokból kiindulva halad a tárolt tények felé. • A szabály-törzs minden predikátumát ellenőrzi úgy, hogy párosításokat keres a lekérdezés válto-zói és a más szabályoból származó tények között. • Ez a módszer nem igazán jó nagyméretű adatbázi-sok esetén.
Szabályok kiértékelése II. • A másik megközelítés az előre láncolás (forward chaining) amely egy alulról-felfelé-haladó (bottom-up) módszer. • A szabályok alkalmazásával a létező tényekből új tényeket állít elő. • Minden új tényt ellenőriz, hogy megfelel a célnak. • A módszer fő hátránya, hogy az adatbázis összes következtetését előállítja, amelyek közül a legtöbb nem felel meg a célnak, hacsak nem adunk vala-milyen módszert arra, hogy csak a lekérdezés szempontjából fontos tényeket állítsa elő.