i

Fachkonzept Anfragen

Anfragen an die Wissensbasis

Hat man Fakten in die Wissensbasis des Prolog-Interpreters geladen, können Anfragen im unteren Fenster gestellt werden. Alle Anfragen müssen mit einem Punkt beendet werden. Kommen in der Anfrage nur Konstanten vor, antwortet der Interpreter nur mit true. oder false.

Wissensbasis einer Miniwelt aus Fakten und Regeln mit Anfragen[1]

Ja-Nein-Anfragen

Bei einer Ja-Nein-Anfrage wird überprüft, ob die getroffene Anfrage erfüllt wird (wahr ist) oder nicht. Man erhält true. oder false. als Ergebnis.

Beispiel: Ist Hades weiblich?
?- weiblich(hades).

false.

Ergänzungsanfragen

Bei einer Ergänzungsanfrage werden Variablen verwendet. Während Konstanten und Prädikate immer durch Kleinbuchstaben gekennzeichnet werden, werden Variablen durch Großbuchstaben beschrieben. Am Ende einer Ergänzungsanfrage zeigt die Ausgabe false., dass es keine weiteren Lösungen gibt.

Beispiel: Wer sind die Kinder von Ares?
?- kind(KIND,ares).

KIND = clarissa ;
KIND = frank ;
false.

Zusammengesetzte Anfragen

Eine zusammengesetzte Anfrage besteht aus mehreren Teilanfragen, die durch "," oder ";" verbunden sind. Das "," steht dabei für das logische UND und der ";" für das logische ODER.

Beispiel 2: Welche Kinder haben Zeus und Hera (nicht nur gemeinsame Kinder)?
?- kind(KIND,zeus);kind(KIND,hera).

KIND = thalia ;
KIND = athena ;
KIND = ares ;
KIND = hephaistos ;
KIND = athena ;
KIND = ares ;
KIND = hephaistos ;
false.

In Worten: Wer ist Kind von Zeus oder von Hera.
Beachte, dass hier auch Thalia ausgegeben wird, die nur Tochter von Zeus ist.

Beispiel 2: Welche Vater-Tochter Paare gibt es?
?- kind(KIND,VATER),maennlich(VATER),weiblich(KIND).

KIND = thalia,
VATER = zeus ;
KIND = hera,
VATER = cronus ;
KIND = demeter,
VATER = cronus ;
KIND = athena,
VATER = zeus ;
KIND = hazel,
VATER = hades ;
KIND = bianca,
VATER = hades ;
KIND = clarissa,
VATER = ares ;
false.

In Worten: Wer steht in Beziehung KIND-ELTERNTEIL zueinander und der Elternteil ist männlich und das Kind ist weiblich.

Anfragen mit anonymen Variablen

Anonyme Variablen werden benutzt, wenn die Ausgabe unerwünschter Informationen unterdrückt werden soll. Das heißt, man ist am Wert dieser Variablen nicht interessiert. Die anonymen Variablen werden mit einem "_" gekennzeichnet

Beispiel: Hat Zeus Kinder? (Die Namen der Kinder interessieren nicht).
?- kind(_,zeus).

true.

Achtung: Werden in einer Anfrage mehrere anonyme Variablen benutzt, so können diese nicht für dieselbe Variable benutzt werden!

Beispiel: Hat Hephaistos Töchter?
?- kind(_,hephaistos),weiblich(_).

true.

Problem: Hephaistos hat nur Söhne!

Quellen

Suche

v
8.3.1.6
www.inf-schule.de/deklarativ/logischeprogrammierung/modellierungwissen/fachkonzept_anfragen
www.inf-schule.de/8.3.1.6
www.inf-schule.de/@/page/OF8wb1DCv0OtSn4M

Rückmeldung geben