Übungen Teil 2

Aufgabe 2 / Lösungsvorschlag

Erläuterung des Problems:

Wir stellen fest, dass immer nur solche Eigenschaften mehrfach aufgeführt werden, die vererbt werden. Das Problem ist in diesem Fall ganz einfach nachzuvollziehen: beispielsweise erbt 'Vogel' das Merkmal 'waechst' zweimal: einmal von seinem Oberbegriff 'Tier', welches es von 'Lebewesen' geerbt hat, und einmal von 'Lebewesen' selbst (von dem es ja auch Unterbegriff ist). Noch deutlicher wird das Problem, wenn man in der Hierarchie weiter nach unten geht: 'Spatz' erbt 'waechst' gleich viermal: zweimal von 'Vogel' (Vogel erbt es einmal von Tier, einmal von Lebewesen), einmal von 'Tier' (Tier erbt es von Lebewesen) und einmal von 'Lebewesen' (Lebewesen ist es direkt zugewiesen).

Behebung des Problems:

Offensichtlich muss das Prädikat eigenschaft/2 modifiziert werden, um die Mehrfachnennungen zu verhindern. Hier stehen uns verschiedene Möglichkeiten zur Verfügung:>

Möglichkeit A: Der CUT

Hier wird durch den Cut ein erneuter Aufruf von unterbegriff/2 abgeschnitten. Diese Möglichkeit liefert de facto dasselbe Ergebnis wie C:

eigenschaft(X,Y):-
unterbegriff(X,Z),!,
eigenschaft(Z,Y),
not(konflikt(X,Y)) .

Möglichkeit B: merkmal/2 statt eigenschaft/2

Hier werden für jeden Oberbegriff nur noch die direkt zugewiesenen Merkmale aufgeführt, die Mehrfachvererbung entfällt also:

eigenschaft(X,Y):-
unterbegriff(X,Z),
merkmal(Z,Y),
not(konflikt(X,Y)) .

Möglichkeit C: ist_ein/2 statt unterbegriff/2

eigenschaft(X,Y):-
ist_ein(X,Z),
eigenschaft(Z,Y),
not(konflikt(X,Y)) .