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.
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.
?- 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.
?- 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.
?- 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.
?- 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
?- 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
- [1]: Anfragen an eine Wissensbasis - Urheber: TM - Lizenz: inf-schule.de