Die Regeln für Sichten liegen im Datalog-Format vor, aus dem sich direkt die Sichtenwartungsregeln erzeugen lassen. Das hier benutzte Verfahren von [SJ96] basiert auf DRed-Algorithmus (vgl. Kapitel 4.2.3). Es handelt sich hierbei um einen inkrementellen Sichtenwartungsalgorithmus, d.h. der Algorithmus berechnet die Änderungen der abgeleiteten Relationen ausgehend von den Änderungen der Basisrelationen. Die Umschreibung der Regeln in Sichtenwartungsregeln ist Abbildung 5.2 beschrieben.
Abbildung 5.2: Generierung der Sichtungswartungsregeln
Alle Regeln in ConceptBase haben die Form
, wobei
p als Kopf der Regel eine abgeleitete Relation darstellt. Die
im Rumpf
der Regel können selbst abgeleitete oder auch Basisrelationen sein.
Für jedes Prädikat p werden alle möglichen Löschungen
hergeleitet,
die durch die Löschung eines Elements in den Relationen
(bzw. die
Einfügung eines Elements, falls ein
negiert im Regelrumpf auftaucht) hervorgerufen
wird. Jedes Element in
steht also für einen unterbrochenen Herleitungspfad.
Für ein Element kann es jedoch mehrere Herleitungspfade geben, so daßdie wirklichen
Löschungen
, nur eine Teilmenge von
sind. Die Relation
enthält die Elemente von
, die einen alternativen Herleitungspfad
haben. Der neue Datenbankzustand wird durch die Prädikate
bzw.
beschrieben, die Prädikate p und
beziehen sich immer auf den alten Datenbankzustand
vor der Änderung.
Die Einfügungen in die Relation p werden durch das Prädikat
beschrieben.
Wenn in einer Relation
ein Element eingefügt worden ist, kann dies zur einer
neuen Ableitung für ein Element aus p führen. Mit
werden die tatsächlichen
Einfügungen berechnet, indem man kontrolliert, ob es das Element schon im alten Datenbankzustand
gab.
In den Regeln in ConceptBase kommen die Literale A, In, Isa, From und To
als Basisliterale vor, die intern direkt ausgewertet werden ohne das dafür
Regeln im Datalog-Format vorhanden sind.
Zu Beginn der Auswertung liegt aber nur eine Menge von Propositionen vor,
die in der aktuellen Transaktion eingefügt oder gelöscht worden sind.
Für die obengenannten Literale müssen daher die Sichtenwartungsregeln vorher definiert werden.
Dies erspart auch die Generierung der Regeln
und
,
denn diese Regeln müssen für jedes Basisliteral nur einmal vorhanden sein.
Christoph Quix