Fakten, Regeln, Klauseln, ... Grundbegriffe!!!

Aus Informatik
Wechseln zu: Navigation, Suche

Fakten, Prädikate, Klauseln

Definition: Faktum

Ein Faktum beschreibt eine Eigenschaft eines Objekts oder eine Beziehung zwischen mehreren Objekten.

Beispiele:

% maennlich(X) -- X ist männlich
maennlich(kronos).
maennlich(zeus).

% Rhea ist weiblich.
weiblich(rhea).
weiblich(demeter).

% Rhea ist Mutter von Demeter.
mutter(rhea,demeter).

% Kronos ist Vater von Zeus.
vater(kronos,zeus).

Für Fakten gelten folgenden (syntaktische) Vereinbarungen:

  • Jedes Faktum beginnt mit einem Namen (Funktor), welcher mit einem Kleinbuchstaben beginnen muss.
  • In Klammern folgt eine Liste von Argumenten.
  • Eine Faktendefinition schließt mit einem Punkt.
  • Konstanten - also in unserem Fall die Namen - werden immer klein geschrieben. (Möchte man die Namen dennoch groß schreiben, setzt man diese in Anführungszeichen.)
  • Beginnt ein Bezeichner mit Großbuchstaben, steht er für eine Variable.

Prolog unterscheidet also zwischen Groß- und Kleinschreibung, d. h. Zeus und zeus haben eine unterschiedliche Bedeutung für den Prolog-Interpreter.

Die sechs Fakten gehören zu vier verschiedenen Prädikaten. Jedes Prädikat wird durch seinen Funktor und seine Stelligkeit (Anzahl der Argumente) charakterisiert, z. B. weiblich/1 oder vater/2.

Alle Fakten (und Regeln) zusammen heißen Klauseln. Die vier Prädikate unterscheiden sich in der Anzahl der Klauseln. Zu den Prädikaten mutter und vater gibt es je eine, zu den Prädikaten maennlich und weiblich je zwei Klauseln.

Regeln

Definition: Regel

Eine Regel stellt eine logische Aussage in Form einer Wenn-Dann-Beziehung dar. Mit einer Regel können aus bekannten Fakten neue Fakten logisch gefolgert werden.

Beispiele:

% tochter(E,T) -- T ist Tochter von E
tochter(E,T) :-
  weiblich(T),
  elternteil(E,T).
(Wenn T weiblich und E Elternteil von T, dann ist T Tochter von E.)
	
% elternteil(E,Kind) -- E ist Elternteil von Kind
elternteil(E,Kind) :-
  vater(E,Kind).
elternteil(E,Kind) :-
  mutter(E,Kind).
(Wenn E Vater von Kind oder E Mutter von Kind dann ist E Elternteil von Kind.)

Jede Regel besteht aus einem Regelkopf, dem Prolog-Atom ":-" und einem Regelrumpf. Der Regelkopf stellt die logische Schlussfolgerung (Konklusion) dar, welche sich aus dem Regelrumpf ergibt. Der Regelrumpf enthält die Konjunktion (UND-Verknüpfung) aller Bedingungen (Prämissen). Die Konjunktion wird durch ein Komma dargestellt.

Eine disjunktive Verknüpfung (ODER-Verknüpfung) der Prämissen kann durch ein Semikolon dargestellt werden. Zur besseren Übersicht werden jedoch die einzelnen Alternativen auf mehrere Klauseln mit gleichem Funktor verteilt.

Regeln enthalten meist nur Variablen. Variablen - und nur sie - beginnen in Prolog mit einem Großbuchstaben. Sie haben lediglich in der Regel, in der sie auftreten, Gültigkeit.

Anfragen

Hat man mittels consult Fakten und Regeln in die Wissensbasis geladen, so können Anfragen an den Prolog-Interpreter gestellt werden.

Es werden drei Arten von Anfragen an das Prolog-System unterschieden: Entscheidungsfragen, Ergänzungsfragen und Aktions(an)fragen.

Entscheidungsfragen

Auf Entscheidungsfragen antwortet der Prolog-Interpreter mit "Yes" oder "No". In diesen Fragen werden nur Konstanten verwendet.

?-  maennlich(uranos).      -- Ist Uranos männlich?
?-  weiblich(poseidon).     -- Ist Poseidon weiblich?
?-  elternteil(rhea,hera).  -- Ist Rhea Elternteil von Hera?

Ergänzungsfragen

In Ergänzungsfragen wird die Wissensbasis vom Prolog-Interpreter nach Objekten durchsucht, die den gewünschten Kriterien entsprechen. In Ergänzungsfragen können Variablen verwendet werden.

?-  maennlich(Gott).                      -- Welche männlichen Götter gib es?
?-  weiblich(Tochter), vater(V,Tochter).  -- Wer ist Vater welcher Tochter?
?-  weiblich(Tochter), vater(_,Tochter).  -- Welche Töchter gibt es?
?-  vater(X,ares); mutter(X,ares).        -- Wer ist Vater oder Mutter von Ares?

Werden einzelne Anfragen mit einem Komma getrennt, wird die gesamte Anfrage als Konjunktion betrachtet; trennt man mit einem Semikolon, wird sie als Disjunktion aufgefasst.

Mit einer anonymen Variable ’_’ kann die Ausgabe unerwünschter Information unterdrückt werden.

Aktionsanfragen

Aktionsanfragen veranlassen den Prolog-Interpreter zu einer Aktion, z. B. consult (Einlesen des Programms in die Datenbasis).