10.07.2015 Aufrufe

Defaults in deduktiven Datenbanken

Defaults in deduktiven Datenbanken

Defaults in deduktiven Datenbanken

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.1. BOTTOM-UP 137tionsstufe nichts mehr geändert hat. Dieses Verfahren kann natürlich auf viele Artenverbessert werden; hier sollen e<strong>in</strong>ige kurze Andeutungen genügen.Zunächst ist natürlich auch hier e<strong>in</strong>e semi-naive Auswertung wünschenswert, m<strong>in</strong>destenssollten nicht für alle Rumpf-Literale nur alte Fakten e<strong>in</strong>gesetzt werden.Die Anordnung der Regeln mit e<strong>in</strong>em Abhängigkeitsgraphen ist deutlich schwierigerals im Fall der Hornklauseln. Das Problem ist, daß man aufgrund der disjunktivenKontexte e<strong>in</strong>er Regel nicht e<strong>in</strong>fach ansehen kann, welches Prädikat das abgeleitete aktiveLiteral haben wird. Hat man etwa die Regelr(X) ← p(X)und setzt hier das disjunktive Faktum p(a) ∨ q(a) e<strong>in</strong>, so entsteht das disjunktive Faktumq(a) ∨ r(a). Das aktive Literal ist hier q(a) und entspricht damit nicht dem Kopf-Literal der verwendeten Regel. Man braucht also e<strong>in</strong>e Analyse, welche Prädikate zusammenmit welchen anderen Prädikaten <strong>in</strong> disjunktiven Fakten vorkommen können.Die Ordnung auf den Grundliteralen muß nicht notwendigerweise die lexikographischeOrdnung se<strong>in</strong>, man kann sie vielmehr als e<strong>in</strong> Mittel zur Optimierung e<strong>in</strong>setzen. Hat manetwa die Regelp(Y ) ∨ q(X) ← p(X) ∧ r(X, Y )zusammen mit den Faktenp(1), r(1, 2), . . . , r(99, 100),so werden lange Disjunktionen der Form p(i) ∨ q(1) ∨ · · · ∨ q(i − 1) aufgebaut. Mit denzusätzlichen Regeln answer ← p(100) und ← q(X) schrumpfen sie dann wieder zu derAntwortklausel“ answer. Wählt man nun die Ordnung”q(. . .) < p(. . .) < r(. . .) < answer,so werden immer nache<strong>in</strong>ander Disjunktionen der Form p(i) ∨ q(i − 1) und Fakten derForm p(i) erzeugt. Auf diese Weise spart man Speicherplatz, die Tests auf schon vorhandeneTeilklauseln werden schneller, und man hat man genauere Information über dieForm der erzeugten disjunktiven Fakten (ihre Länge ist bekannt).Am effizientesten wäre es natürlich, die beiden Regeln zu komb<strong>in</strong>ieren:p(Y ) ← p(X) ∧ r(X, Y ).Diese Technik ist <strong>in</strong> der logischen Programmierung als ”unfold<strong>in</strong>g“ bekannt. Man kannsich hier nicht e<strong>in</strong>fach auf den Standpunkt stellen, daß solche Umformungen schon vomBenutzer/<strong>Datenbanken</strong>twerfer durchgeführt werden sollen, da ihre Nützlichkeit im allgeme<strong>in</strong>envon der Anfrage abhängt (das unterdrückte Zwischenergebnis darf nur an e<strong>in</strong>erbzw. wenigen Stellen weiterverwendet werden). Auch die Umkehrung (Elim<strong>in</strong>ierung vongleichen Teilausdrücken durch neue Prädikate) kann sich auszahlen.Potentielle AntwortenNachdem nun alle Folgerungen ˆΦ aus der Axiomenmenge ¯Φ berechnet s<strong>in</strong>d, beg<strong>in</strong>nt die

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!