Informatikmaterialien 
von Tino Hempel

Startseite | Informatik | Physik | Mathematik | Sonstiges |


Richard-Wossidlo-Gymnasium Ribnitz-Damgarten
Fachbereich Informatik


Parameterabfragen mit Regeln


Bisher mussten die Abfragen stets als Anfrage formuliert werden. Dabei kam es insbesondere bei Joins auch zur Ausgabe nicht erwünschter Informationen. Sinnvoll wäre auch die Verkürzung der Abfragen durch Schlagwörter und geeigneten Parametern.   

Regeln

Beispiel: Geben sind die folgenden Datenbanktabellen in PROLOG-Notation:

% lehrer(LNummer, Anrede, Name, Vorname).
% lehrer_hat_faecher(LNummer, FNummer).
% faecher(FNummer, Bezeichnung).

Soll nun angezeigt werden, welche Fächer Herr Lehmann unterrichtet, muss die Abfrage
?- lehrer(LNummer, 'Herr', 'Lehmann', Vorname), lehrer_hat_faecher(LNummer, FNummer), faecher(FNummer, Bezeichnung).

gestellt werden.
Dabei werden neben den relevanten Informationen Bezeichnung und Vorname auch die Lehrernummer und die Fachnummer aufgelistet. Soll die Anfrage für einen weiteren Lehrer wiederholt werden, so muss die Eingabe erneut vorgenommen werden.

Eine Verbesserung bringt die Verwendung einer Regel, die in den Quelltext der Wissenbasis zu implementieren ist.

lehrerfaecher(Anrede, Name, Vorname, Bezeichnung) :-
      lehrer(LNummer, Anrede, Name, Vorname),
      lehrer_hat_faecher(LNummer, FNummer),
      faecher(FNummer, Bezeichnung).

Die bisherige Anfrage bleibt erhalten. Neu ist der sog. Regelkopf, der aus einem Namen für die Abfrage und den ein- bzw. auszugebenden Parametern besteht.

Nachdem die Regel definiert und konsultiert wurde, kann sie für Abfragen benutzt werden. Dabei ist nur der Regelkopf zu benutzen, in unserem Falle also
?- lehrerfaecher('Herr', 'Lehmann', Vorname, Bezeichnung).

Aufbau einer Regel in PROLOG:
Eine Regel besteht aus dem Regelkopf p und dem Regelrumpf (Bedingungen) q1 und q2 und  ... und qn. 
Schreibweise: p :- q1, q2, ..., qn. Das Symbol/Atom ":-" wird als "falls" gelesen.

Verallgemeinerungen und Begriff Klausel

Regeln drücken bedingte Beziehungen zwischen Fakten aus.

Beispiele: 

Karin ist die Tochter des Vaters Fritz, falls Karin weiblich und Fritz der Vater von Karin ist.
Allgemein: X ist eine Tochter des Vaters Y, falls X weiblich und Y ein Vater von X ist. 

Klauseln sind die Fakten und Regeln, die zu ein und demselben Prädikat gehören.

Es gibt eine Klausel tochter_des_vaters, je vier Klauseln weiblich maennlich und vater_von und zwei Klauseln mutter_von.

Prädikate mit mehreren Regeln

Die bisherige Definition der Regel lässt nur UND-Verknüpfungen zu. Der Klauselkopf p wird nur dann wahr, wenn alle Bedingungen erfüllt sind. Häufig benötigt man aber auch den ODER-Fall, d. h., der Kopf ist erfüllt, wenn eine der Bedingungen erfüllt ist. Dies drückt man in PROLOG so aus, dass man für die einzelnen ODER-Fälle separate Regeln schreibt.

Beispiele: Für die obige Wissensbasis soll die Klausel elternteil definiert werden. Man ist ein Elternteil entweder wenn man Mutter oder Vater ist. Also

elternteil_von(X,Y):- vater_von(X,Y).
elternteil_von(X,Y):- mutter_von(X,Y).

Alternativ kann man die Regel auch mit Semikolon schreiben, also 

elternteil_von(X,Y):- vater_von(X,Y); mutter_von(X,Y).



zur Startseite
© Tino Hempel 1997 - 2006 Im Web vertreten seit 1994.
Eine Internet-Seite aus dem Angebot von Tino Hempel.