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