EMA-XPS Online
ASK
ASK
===
Syntax: (ask <Prädikation> [:once]
<bql-continuation>)
Diese Funktion stellt Anfragen an die Wissens-
basis. Der WENN- und DANN-Teil einer Regel
entsprechen in ihrer Bedeutung einer ASK-
Anfrage und deren <bql-continuation>. Ein ASK
ist ähnlich einer Regelausführung. Die
<Prädikation> entspricht dem WENN-Teil, die
<bql-continuation> dem DANN-Teil. Letztere
kommt nur zur Ausführung, falls erstere
wenigstens einmal erfüllbar ist.
Die <Prädikation> kann wie folgt aussehen
[<Framename> <Instanz>],
oder
[<Relationsname> <Instanz> <Wert>]
Sie kann durch logische Operatoren
wie [and ... oder [or ... verknüpft
werden.
<Instanz> und <Wert> können eine logische
Variable enthalten, die durch einen Unter-
strich am Namensanfang (z.B.: _ein-computer)
erkannt werden kann. Die entsprechende Bele-
gung wird in der Wissensbasis gesucht und an
der Variablen gebunden.
<bql-continuation> besteht aus babylon-Aus-
drücken, die logische Variablen enthalten
dürfen, sofern sie in <Prädikation> benutzt
werden. Die <bql-continuation> wird wiederholt
bis keine unterschiedliche Belegungen für die
logische Variable mehr existieren. Die Be-
legungen sind gleich, wenn die Werte der
logischen Variable EQUAL sind.
[:once] bedeutet das die continuation nur ein-
mal ausgeführt wird. Die Funktion ASK wird
anhalten, nachdem sie die erste Belegung in der
Prädikation gefunden hat.
ASK liefert immer NIL.
Beispiel: >(ask
[or
[Optionen SIEMENS-NIXDORF _option]
[Optionen WANG _option]]
(kb-format "~% ~A"
(name-of _option)))
1GB-FESTPLATTE
16MB-RAM
850MB-FESTPLATTE
QUAD-SPEED-CDROM
NIL
Siehe auch die HAS-PART Prädikation, sowie die
Operatoren ELEMENT-OF und MATCH, deren Rückgabe-
werte nur im Zusammenhang mit ASK sinnvoll sind.
EMA-XPS Online