Informatikmaterialien 
von Tino Hempel

Startseite | Informatik | Physik | Mathematik | Sonstiges |
 


Richard-Wossidlo-Gymnasium Ribnitz-Damgarten
Fachbereich Informatik


Abfragen durch Anfragen


Für die Abfrage von Informationen aus Datenbanken wurde die Programmiersprache SQL entwickelt. Im folgenden sollen die typischen Abfrage in PROLOG modelliert werden.  

Anfragen

Nach dem Laden der Datenbasis im PROLOG-System mittels consult können nun Anfragen an dieses System gestellt werden. Diese müssen stets in der Anfrage-Zeile des Systems formuliert werden. Die Zeile wird üblicher Weise durch die Symbole "?–" kenntlich gemacht. 

Entscheidungsfragen sind Anfragen, in denen nur Konstanten vorkommen. Sie werden vom System mit yes oder no beantwortet.

Ergänzungsfragen sind Anfragen, in denen Variablen vorkommen. Das System versucht Variablenwerte so zu ermitteln, dass wahre Aussagen entstehen (WER-oder-WAS-Fragen).

Beispiel: 

% schueler(SNr, Vorname, Name, Jahrgang) - Kommentarzeile
schueler(4711, 'Paul', 'Müller', 10).
schueler(0815, 'Erich', 'Schmidt', 10).
schueler(7475, 'Sven', 'Lehmann', 11).
schueler(1234, 'Olaf', 'Müller', 11).
schueler(2313, 'Jürgen', 'Paulsen', 11).

Entscheidungsfragen Ergebnis
?- schueler(4711,'Paul','Müller',10). yes
?- schueler(4711,'Paul','Müller',9). no
?- schueler(4711,'Paul','Paulsen',10). no

Die dritte Anfrage zeigt, dass no keineswegs die Bedeutung von nicht hat, der Schüler kommt nur nicht in der Wissensbasis vor und deshalb liefert das System no.

Variablen

Zur Erstellung von Ergänzungsfragen ist es notwendig, Variablen zu benutzen. Eine Variable im PROLOG-System wird durch einen Großbuchstaben eingeleitet. So sind X, Mutter, AdFS Variablen.

Eine Variable mit Sonderrolle ist die sogenannte anonyme Variable. Sie wird durch das Symbol _ gekennzeichnet und benutzt, um unerwünschte Anzeigen zu unterdrücken.

Beispiel: 

natürliche Frage Ergänzungsfrage in PROLOG Ergebnis
Wer hat die Nummer 4711? ?- schueler(4711,Vorname,Name,Jahrgang). Vorname = 'Paul'
Name = 'Müller'
Jahrgang = 10
Wer heißt alles Müller? ?- schueler(Nr, Vorname, 'Müller',J). Nr = 4711
Vorname = 'Paul'
J = 10
oder
Nr = 1234
Vorname = 'Olaf'
J = 11
Welchen Vorname hat Paulsen? ?- schueler(_, Vorname, 'Paulsen',_). Vorname = 'Jürgen' 
Wer geht nicht in die 10??- schueler(_, Vorname, Name, J), J \== 11.Vorname = 'Paul'
Name = 'Müller'
Jahrgang = 10
oder
Vorname = 'Erich'
Name = 'Schmidt'
Jahrgang = 10
Welche Schüler heißen Schmidt oder Paulsen??- schueler(_, Vorname, 'Schmidt',_);_
   schueler(_, Vorname, 'Paulsen',_)
Vorname = 'Erich'
oder
Vorname = 'Jürgen'

Die dritte Anfrage zeigt die Unterdrückung der Ausgabe der Vaternamen durch Benutzung der anonymen Variable.
Die vierte Anfrage zeigt, dass an die Klasse eine Bedingung gestellt wird. In diesem Fall soll sie nicht 11 sein.
Die fünfte Anfrage zeigt, dass man auch ODER-Verknüpfungen machen kann.

UND- und ODER-Verknüpfungen

Eine UND-Verknüpfung wird erreicht, indem man zwischen den Einzelfragen ein Komma setzt. 
Eine ODER-Verknüpfung wird erreicht, indem man zwischen den Einzelfargen ein Semikolon setzt.




zur Startseite
© Tino Hempel 1997 - 2006 Im Web vertreten seit 1994.
Eine Internet-Seite aus dem Angebot von Tino Hempel.