Wissensmodellierung mit Regeln

Explizite und implizite Beschreibung von Wissen

Wir betrachten weiterhin den Stammbaum der griechischen Götter:

Ausschnitt aus der griechischen Götterwelt[1]

Wollte man das gesamte Wissen über die Miniwelt "griechische Götter" explizit mit Hilfe von Fakten beschreiben, so müsste man eine riesige Wissensbasis erstellen.

% Die Welt der Götter
maennlich(cronus).
maennlich(zeus).
maennlich(poseidon).
maennlich(hades).
weiblich(rhea).
weiblich(demeter).
weiblich(hera).
weiblich(hestia).
kind(hestia, rhea).
kind(hades, rhea).
kind(poseidon, rhea).
kind(zeus, rhea).
kind(hera, rhea).
kind(demeter, rhea).
kind(hestia, cronus).
kind(hades, cronus).
kind(poseidon, cronus).
kind(zeus, cronus).
kind(hera, cronus).
kind(demeter, cronus).
...
mutter(rhea, hestia).
mutter(rhea, hades).
...
vater(cronus, hestia).
vater(cronus, hades).
...

Geschickter wäre es, wenn man Wissen auch implizit beschreiben könnte. In der Miniwelt gilt z.B. die folgende Wenn-Dann-Aussage: "Wenn Y ein Kind von X ist und X weiblich ist, dann ist X Mutter von Y." Zur Erfassung impliziten Wissens durch solche Wenn-Dann-Aussagen erweitert man eine Wissensbasis um sog. Regeln.

% Fakten
maennlich(cronus).
maennlich(zeus).
maennlich(poseidon).
maennlich(hades).
weiblich(rhea).
weiblich(demeter).
weiblich(hera).
weiblich(hestia).
kind(hestia, rhea).
kind(hades, rhea).
kind(poseidon, rhea).
kind(zeus, rhea).
kind(hera, rhea).
kind(demeter, rhea).
kind(hestia, cronus).
kind(hades, cronus).
kind(poseidon, cronus).
kind(zeus, cronus).
kind(hera, cronus).
kind(demeter, cronus).
% Regeln 
mutter(X, Y) :- kind(Y, X), weiblich(X). 
vater(X, Y)  :- kind(Y, X), maennlich(X).

Wissensbasis einer Miniwelt aus Fakten und Regeln[2]

Regeln

Eine Regel besteht aus einem Regelkopf, dem Symbol ":-", einem Regelrumpf und einem abschließenden Punkt.

mutter(X, Y) :- kind(Y, X), weiblich(X). 

In Regeln kommen normalerweise Variablen vor. Ein Bezeichner, der mit einem Großbuchstaben beginnt, steht für eine Variable. Die oben aufgeführte Regel könnte mit anderen Variablenbezeichnern auch so formuliert werden:

mutter(Person1, Person2) :- kind(Person2, Person1), weiblich(Person1). 

Regeln legen Prädikate mit Hilfe von Wenn-Dann-Aussagen fest. Wenn alle Bedingungen des Regelrupfes (in einem noch zu klärenden Sinn) erfüllt sind, dann soll die durch den Regelkopf dargestellte Folgerung (in einem noch zu klärenden Sinn) gelten.

Die Regel

mutter(X, Y) :- kind(Y, X), weiblich(X). 

entspricht der Wenn-Dann-Aussage

wenn [kind(Y, X) und weiblich(X)], dann mutter(X, Y).

Etwas formaler kann man diese Wenn-Dann-Aussage auch so darstellen:

kind(Y, X) ∧ weiblich(X) -> mutter(X, Y).

Das Synbol ∧ steht hier für ein logisches Und, der Pfeil -> für eine logische Implikation (wenn ..., dann ...).

Unsere (Prolog-) Schreibweise oben benutzt ein Komma zur Darstellung des logischen Und-Operators. Das Symbol :- kann als Pfeil (<-) aufgefasst werden.

Beachte, dass ein Prädikat auch mit mehreren Regeln festgelegt werden kann.

tochter(Kind, Person) :- weiblich(Kind), mutter(Person, Kind). 
tochter(Kind, Person) :- weiblich(Kind), vater(Person, Kind). 

Logisch bedeutet das: Ein Kind ist Tochter einer Person, wenn das Kind weiblich ist und die Person Mutter des Kindes ist, oder wenn das Kind weiblich ist und die Person Vater des Kindes ist.

Rekursive Regeln

Im Regelrumpf darf das im Regelkopf festzulegende Prädikat auch vorkommen.

vorfahr(X, Y) :- kind(Y, X).
vorfahr(X, Y) :- kind(Y, Z), vorfahr(X, Z). 

Eine solche Regel wird auch rekursive Regel genannt.

Aufgabe 1

Vervollständige die Regeln.

elternteil(X, Y) :- 
sohn(X, Y) :-
oma(X, Y) :-

Aufgabe 2

Warum muss man in der folgenden Regel die Bedingung X \== Y (für X und Y sind ungleich) mit aufnehmen?

bruder(X, Y) :- maennlich(X), elternteil(E, X), elternteil(E, Y), X \== Y.

Quellen

X

Fehler melden

X

Suche