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.