EMA-XPS Online


BABYLON-QUERY-LANGUAGE

Babylon Query Language (BQL)
============================

Die folgenden Seiten befassen sich mit einer in
babylon3 eingebrachten Erweiterung des Leistungs-
umfangs der von der GMD realisierten hybriden    
Schale Babylon2, der Babylon Query Language (BQL).
Durch sie soll ein Zugriff auf das Faktenwissen   
ermöglicht werden, wie er von Datenbankanwendungen
her bekannt ist.

Der gesamte Leistungsumfang der BQL ist unter EMA-
XPS nachgebildet worden. auf die einführenden
Seiten zur WISSENSVERARBEITUNG und SETs sei verwie-
sen.

Die Organisation dieses Kapitels ist angelehnt an
die des Kapitels 2 der babylon3 Dokumentation.   



Im weiteren folgen die Begriffsbestimmungen, die
im Zusammenhang mit der BQL Verwendung finden:


BQL-EXPRESSION
==============

Syntax: <bql-Ausdruck> ::=
               {<ask-Ausdruck> |
                <tell-Ausdruck> |
                <untell-Ausdruck> |
                <retell-Ausdruck>}

ASK, TELL, UNTELL und RETELL sind BQL-Ausdrücke, mit 
denen man Wissen aus der Wissensbasis abfragen kann
bzw. die Wissensbasis verändern kann.



EINFACHE-PRÄDIKATION
=====================

Syntax: [<Frame-Name> {Instanz | <bql-Variable>]
        [<Relations-Name> {Instanz | <bql-Variable>}
            {Wert | <bql-Variable>}]

Eine einfache Prädikation kann einstellig oder zwei-
stellig sein. Eine einstellige Prädikation
beschreibt eine Frame-Instanz Beziehung. Eine
zweistellige Prädikation beschreibt eine Instanz-
Wert Beziehung.
Dabei ist unerheblich, ob eine Bestandteil- oder eine
Merkmal-Relation zwischen der Instanz und den Werten
besteht. In Verbindung mit TELL, UNTELL oder RETELL
wird die zweistellige Prädikation verwendet. In Ver-
bindung mit ASK kann die Prädikation einstellig
oder zweistellig sein.

Die Ausdrücke in der Prädikation werden in babylon
von links nach rechts abgearbeitet. Dieses Verhalten
ist aber als quasi-parallel zu betrachten.



COMPOUND-PREDICATION
====================

Compound-predications sind Prädikationen, die
mit AND, OR oder NOT verknüpft sind ([and...;
[or...; [not...).
Sie dürfen nur innerhalb von bql-Ausdrücken
oder Regeln benutzt werden. Warnung:
nicht zu verwechseln mit '(and...'.



BQL-VARIABLE
============

Syntax: <logische Variable> ::=
            <Lisp-Typ: Symbol>

Eine logische Variable ist eine Variable mit
einem Unterstrich, die in allen bql-
Ausdrücken stehen kann. Sie wird sequentiell
an die Werte gebunden, die in der Wissensbasis
gefunden werden.

Beispiel: >(ask [Computer _x]
             (kb-format "~% Es steht folgender
             Computer zur Verfügung: ~% ~A"
             (name-of _x)))
          Es steht folgender Computer
                  zur Verfügung:
          SIEMENS-NIXDORF
          Es steht folgender Computer
                  zur Verfügung:
          WANG
          NIL



BABYLON-VARIABLE
================

Syntax: <babylon-variable>

Eine babylon-Variable ist eine Variable ohne
Unterstrich und wird als Platzhalter benutzt.

Beispiel: >(define-behavior ausstattung
            :primary ((ein-computer computer)
                      (eine-option optionen))
            :documentation " "
            :explanation nil
            (kb-confirm "Würden Sie gerne eine
              ~: (~A~) in Ihrem Computer haben?"
              (name-of eine-option)))
          =>
          #<Behavior-Method AUSSTATTUNG
                           (COMPUTER OPTIONEN)>

In diesem Beispiel sind "ein-computer" und 
"eine-option" babylon-Variablen.



LISP-TYP
========

Syntax: <Lisp-Typ: T>

Dies kann ein beliebiger Lisp-Ausdruck sein
oder babylon-Ausdruck, der sich wie ein Lisp-
Aufruf verhält und einen definierten Rückgabe-
wert besitzt. Ein Lisp-Ausdruck kann sein: eine
Zahl, eine Zeichenkette, ein Symbol, eine Liste
oder ein Funktionsaufruf.



CONTINUATION
============

Syntax: <bql-continuation> ::=
             {<Lisp-Typ::=T> ...}

Die <continuation> kann nur zusammen mit einem
ASK-Ausdruck vergleichbar dem DANN-Teil einer Regel 
benutzt werden. Sie besteht aus babylon-
Ausdrücken, die logische Variablen enthalten
dürfen, sofern diese auch in der zugehörigen
Prädikation auftreten. Die <continuation>
wird wiederholt, bis keine unterschiedlichen
Belegungen für die logischen Variablen mehr
existieren.



BQL-ANONYMUS
============

Syntax: <anonyme Variable> ::= _

Die anonyme Variable ist nur durch einen
Unterstrich gekennzeichnet und kann zusammen
mit den Funktionen RETELL und UNTELL benutzt
werden. Diese Variable kann anstelle eines
Wertes gesetzt werden. Sie kann auch eine
Menge von Werten vertreten. Die anonyme
Variable hat keine Belegung.

Beispiel: >(untell [Optionen Computer _])

überführt die Relation "Optionen" für die
Instanz "Computer" in den Zustand unbestimmt.


EMA-XPS Online