Protocols for the Web Frame Browser

v1.0
18 November 1999

The Web Frame Browser (WFB) provides web browsing capabilities for simple frame-slot-value knowledge representation systems. In order to use the web frame browser with such a KBMS, the KBMS must implement a server that communicates with the WFB using the protocol described below.

All information from a KBMS to the WFB is in the form of XML-like statements. Data from the WFB to the KBMS may be in XML or LISP format, as described below.

Please send comments on the protocol to Micheal Hewett (hewett@cs.utexas.edu).


Contents

  1. Definition of a WFB Server
  2. WFB Data Formats
  3. Contacting a WFB server
     3.1 WFB Services Protocol
  4. WFB Request Protocol
  5. KBMS Response Protocol
  6. Default port numbers
  7. Reference Implementations
     7.1 WFB
         7.1.1 Common LISP
     7.2 KBMS backend
         7.2.1 Common LISP
  A.1 Summary of Tokens

1. Definition of a WFB server

A WFB server receives HTTP requests, contacts appropriate KR server(s) for a response, and returns HTML that displays the response.

A WFB server also has a pass-through mode where it can simply pass on the response from the KR server without generating HTML. In this mode, the WFB can act as an "object broker" or, more appropriately, a "frame broker" among various systems.


2. WFB Data Formats

Messages from the WFB to the KR system are in one of the forms described below. When contacting the WFB, the KR system tells the WFB which mode to use. Messages passed during initial contact are described in the section on contacting the WFB.

2.1. XML mode

In markup mode, messages from the WFB are in an XML-like format. For example, a GET-SLOT-VALUE command is formatted as shown below:
   <GET-SLOT-VALUE FRAME="DOGS" SLOT="NUMBER-OF-LEGS">

2.2. LISP mode

Since so many KR systems are implemented in LISP, WFB provides a LISP mode which formats messages so that they are readable by Common LISP systems. LISP mode uses keyword-value pairs to represent the command and its arguments.

In LISP mode, a GET-SLOT-VALUE command is formatted as shown below:

   (:GET-SLOT-VALUE :FRAME "DOGS" :SLOT "NUMBER-OF-LEGS")
All symbols are uppercase keywords to avoid package problems. All values are strings.

In order to be compatible with both Common LISP and Scheme back-ends, the WFB will never send the symbols T or NIL. Boolean values will instead be the strings "true" and "false".


3. Contacting a WFB server

To make a KB available to the WFB, the KBMS must contact the WFB on its services port and send an information message describing itself. It then closes the services connection and waits to be contacted by the WFB server.

3.1. WFB Services protocol

These messages are sent over the services port, not over the KB port.

3.1.1. BEGIN-SERVICE

  <BEGIN-SERVICE
            name="service-name"
            type="service-type"
            host="hostname"
            port="port-number"
            description="Text description of the service"
            supported="WFB-operation" ...
            unsupported="WFB-operation" ...
            protocol="XML"|"LISP"
            public="true"|"false"
	    >
What about multiple KBs supported over the same port?

In response, the WFB returns either a PASSWORD message (indicating success) or a WFB-ERROR message with a description of the problem.

3.1.2. PASSWORD

    <PASSWORD value="some-password">
  or
    (:PASSWORD :VALUE "some-password")
In response to a BEGIN-SERVICE message, the WFB will normally return a PASSWORD message (indicating success). The KBMS must use the password to terminate the service. In addition, if the KB is not public the password must be used to access the KB for the duration of the current session.

3.1.3. END-SERVICE

  <END-SERVICE  name="service-name"  password="password">
The KBMS sends the END-SERVICE message to indicate that the service is no longer available. The message must contain the same service-name sent in the original message, as well as password returned by the WFB when the service was initiated.

The WFB will also end the service whenever it detects that the connection to the KBMS has been lost.


4. Requests to a KBMS

4.1. General retrieval

4.1.1. GET-ALL-FRAMES

    <GET-ALL-FRAMES>
  or
    (:GET-ALL-FRAMES)
The WFB sends this message to request a list of every frame in the KB. The KBMS should return a LIST of FRAME tokens, such as:
  <RESPONSE>
    <FRAME name="Dog"></FRAME>
    <FRAME name="Cat"></FRAME>
    <FRAME name="Turtle"></FRAME>
  </RESPONSE>

4.1.2. GET-KB-STATISTICS

    <GET-KB-STATISTICS>
  or
    (:GET-KB-STATISTICS)
The WFB sends this message to request a set of statistics about the KB. The KBMS should reply with a set of VALUE tokens. The values contain the number of instances of different types, such as frames, slots, relations, rules, etc. For example:
  <RESPONSE>
    <VALUE name="Frames">42614</VALUE>
    <VALUE name="Slots">57</VALUE>
    <VALUE name="Relations">1141910</VALUE>
  </RESPONSE>

4.1.3. SEARCH

    <SEARCH
     value="text"
     exact="true"|"false"
     >
  or
    (:SEARCH :VALUE "text" :EXACT "true"|"false")
The WFB sends this message to request that a search of the KB be performed for the given text string. If EXACT is true, only components which exactly match the string should be returned. Otherwise, the KBMS may perform a partial match of the text string against the component names. Matching is assumed to be case-insensitive.

Normally, this message is used to retrieve a set of frame names that match the given string. The KBMS may return the names of frames, or other components.

An example:

  <SEARCH value="horse" exact="false">

  <RESPONSE>
    <FRAME name="Horses"></FRAME>
    <FRAME name="Seahorses"></FRAME>
    <SLOT name="Jockey-of-Horse"></SLOT>
  </RESPONSE>

4.2 Frame retrieval

4.2.1. GET-FACET

    <GET-FACET name="facet-name">
  or
    (:GET-FACET :NAME "facet-name")
The WFB sends this message to request a meta-level description of a facet. In response, the KBMS should return a FACET-INFO message, i.e.:
  <RESPONSE>
    <FACET-INFO name="facet-name">
        <STRING>The facet Bar is used internally to store rules.</STRING>
    </FACET-INFO>
  </RESPONSE>

4.2.2. GET-FRAME

    <GET-FRAME name="frame-name">
  or
    (:GET-FRAME :NAME "frame-name")
The WFB sends this message to request fairly complete information about a frame. Normally, the KBMS returns the set of slots and values that comprise the frame. Depending on the setting of various parameters, the KBMS may choose not to display some slots (i.e. those that contain internal KBMS information).

4.2.3. GET-FRAME-SLOTS

    <GET-FRAME-SLOTS frame="frame-name">
  or
    (:GET-FRAME-SLOTS :FRAME "frame-name")
The WFB sends this message to request a list of the slots belonging to a specific frame. The KBMS returns the requested slot names, without values.
  <RESPONSE>
    <SLOT name="NAME"></SLOT>
    <SLOT name="BIRTH-DATE"></SLOT>
    <SLOT name="HEIGHT"></SLOT>
    <SLOT name="WEIGHT"></SLOT>
  </RESPONSE>

4.2.4. GET-SLOT

    <GET-SLOT name="slot-name">
  or
    (:GET-SLOT :NAME "slot-name")
The WFB sends this message to request a meta-level description of a slot. In response, the KBMS should return a SLOT-INFO message, i.e.:
  <RESPONSE>
    <SLOT-INFO name="slot-name"><STRING>The slot Foo has domains (Dogs, Food, Time).</STRING></SLOT-INFO>
  </RESPONSE>

4.2.5. GET-SLOT-VALUE

    <GET-SLOT-VALUE frame="frame-name" slot="slot-name" [facet="facet-name"]>
  or
    (:GET-SLOT-VALUE :FRAME "frame-name" :SLOT "slot-name" [:FACET "facet-name"])
The WFB sends this message to request the value of a specific slot of a frame. If the KBMS supports facets, the message should contain a facet-name. If it doesn't, the KBMS should assume the default facet, one which normally indicates a positive value. The KBMS should respond with the value or values (if the slot has multiple cardinality):
  <RESPONSE>
    <VALUE>7.33</VALUE>
    <VALUE>5.17</VALUE>
    <VALUE>6.07</VALUE>
  </RESPONSE>

or

  <RESPONSE>
    <VALUE>
      <LIST> "Animals" 3.5 "Zanzibar"</LIST>
    </VALUE>
  </RESPONSE>

4.3 Frame creation and modification

4.3.1. NEW-FRAME

    <NEW-FRAME name="frame-name">
  or
    (:NEW-FRAME :NAME "frame-name")
The WFB sends this message to request that a new frame be created with the given name. Note that subtype or subclass information for the frame must be sent separately in the form of slot information.

4.3.2. NEW-SLOT

    <NEW-SLOT
     name="slot-name"
     domains="domain1 domain2 domain3 ..."
     cardinality="number">
  or
    (:NEW-SLOT 
       :NAME        "slot-name"
       :DOMAINS     "domain1 domain2 domain3 ..."
       :CARDINALITY "number")
The WFB sends this message to request that a new slot be created. This is a slot class or slot type, not a specific instance of a slot on a frame. Example:
    <NEW-SLOT name="birth-date" domains="Living-Things Calendar-Dates" cardinality="1">

4.3.3. NEW-FACET

    <NEW-FACET name="facet-name">
  or
    (:NEW-FACET :NAME "facet-name")
The WFB sends this message to request that a new facet be created. This is a facet class or facet type, not a specific instance of a facet on a slot.

4.3.4. SET-SLOT-VALUE

    <SET-SLOT-VALUE 
     frame="frame-name"
     slot="slot-name"
    [facet="facet-name"]
     value="value">
  or
    (:SET-SLOT-VALUE 
       :FRAME "frame-name"
       :SLOT  "slot-name"  
       :FACET "facet-name"  
       :VALUE "value")
The WFB sends this message to store a value on a slot. If the KBMS supports facets, a facet name will also be included.

4.4 Predicates

4.4.1. IS-FRAME

    <IS-FRAME name="frame-name">
  or
    (:IS-FRAME :NAME "frame-name")
The WFB sends this message to query whether a frame with the given name exists in the KB. The KBMS should respond with either a true or false VALUE
  <RESPONSE>
    <VALUE>true</VALUE>
  </RESPONSE>

4.4.2. IS-SLOT

    <IS-SLOT name="slot-name">
  or
    (:IS-SLOT :NAME "slot-name")
The WFB sends this message to query whether a slot with the given name exists in the KB. The KBMS should respond with either a true or false VALUE
  <RESPONSE>
    <VALUE>true</VALUE>
  </RESPONSE>

4.4.3. IS-FACET

    <IS-FACET name="facet-name">
  or
    (:IS-FACET :NAME "facet-name")
The WFB sends this message to query whether a facet with the given name exists in the KB. The KBMS should respond with either a true or false VALUE
  <RESPONSE>
    <VALUE>true</VALUE>
  </RESPONSE>

4.4.4. IS-RULE

    <IS-RULE name="rule-name">
  or
    (:IS-RULE :NAME "rule-name")
The WFB sends this message to query whether a rule with the given name exists in the KB. The KBMS should respond with either a true or false VALUE
  <RESPONSE>
    <VALUE>true</VALUE>
  </RESPONSE>

4.5 KB information

4.5.1. GET-PARAMETER

    <GET-PARAMETER parameter="parameter-name">
  or
    (:GET-PARAMETER :PARAMETER "parameter-name")
The WFB will not send this message, but it may be sent by another system using the pass-through port on the WFB. It retrieves a parameter value from the KBMS.
  <RESPONSE>
    <PARAMETER name="parameter" value="value">
  </RESPONSE>

4.5.2. PARAMETER

    <PARAMETER
     name="parameter-name"
     value="value">
The KBMS sends this message in response to a GET-PARAMETER message from a third-party source. Example:
  <RESPONSE>
    <PARAMETER name="parameter" value="value">
  </RESPONSE>

4.5.3. SET-PARAMETER

    <SET-PARAMETER
     parameter="parameter-name"
     value="value">
  or
    (:SET-PARAMETER :PARAMETER "parameter-name" :VALUE "value")
The KBMS sends this message to set a parameter in the WFB.

4.5.4. KB

    <KB
     any-parameter="value"
     ...>
  or
    (:KB :ANY-PARAMETER "value")
The WFB will never generate this message, but it may be passed along by another program through the pass-through port. The KBMS must interpret this command - the WFB has no idea of its semantic meaning. This can be used to pass information outside of the WFB frame-slot model. Example:
    <KB use-partition="snail-taxonomy">

4.6 Error messages

4.6.1. WFB-ERROR

    <WFB-ERROR value="error description">
  or
    (:WFB-ERROR :VALUE "error description")
The WFB sends this message to request a list

5. Responses from the KBMS

5.0.1. RESPONSE

    <RESPONSE> ...  </RESPONSE> 
Each response from the KBMS must be enclosed in a <RESPONSE> </RESPONSE> pair.

5.1. Knowledge level

5.1.1. FACET

    <FACET name="facet-name"> ...  </FACET> 
The KBMS sends this to indicate that FACET information follows. If the KBMS uses facets, this usually indicates that VALUE tokens will follow.

5.1.2. FACET-INFO

    <FACET-INFO name="facet-name"> ...  </FACET-INFO> 
The KBMS uses this form in response to a GET-FACET message. The contents are used to display a message to the user regarding the facet.

5.1.3. FRAME

    <FRAME name="frame-name"> ...  </FRAME> 
The KBMS uses this form to indicate that information about a frame follows. The KBMS usually presents SLOT and VALUE information between the opening and closing FRAME tokens.

5.1.4. RULE

    <RULE> ...  </RULE> 
The KBMS uses this form to indicate that information about a frame follows. The KBMS usually presents SLOT and VALUE information between the opening and closing RULE tokens. The WFB will give a special interpretation to the slots DIRECTION, ANTECEDENT, CONSEQUENT and DESCRIPTION. Other slots will be displayed as for a normal frame.

DIRECTION can be "forward" or "backward".

5.1.5. SLOT

    <SLOT name="slot-name"> ...  </SLOT> 
The KBMS uses this form to indicate that slot information follows. THE KBMS usually sends FACET and/or VALUE information between the opening and closing SLOT tokens.

5.1.6. SLOT-INFO

    <SLOT-INFO> ...  </SLOT-INFO> 
The KBMS uses this form to indicate that informational text describing a slot is to follow. This describes the slot at a meta-level, perhaps including its domains, a descriptive string, or its cardinality. It does not normally describe the contents of the slot on a specific frame.

5.1.7. VALUE

    <VALUE [name="value-name"]> ...  </VALUE> 
The KBMS uses this form to indicate that a value, usually the value of a slot, is to follow. The VALUE form is also used to return a value in response to a predicate such as IS-FRAME.

5.2. Low-level data types

These are type tags for low-level data.

5.2.1. ARRAY

    <ARRAY [length="array-length"]> ...  </ARRAY>
This form indicates that an array is being transmitted. The contents of the array may be all of one type, or of different types, as in a LISP list. Specifying the array length is optional.

5.2.2. BOOLEAN

    <BOOLEAN> ...  </BOOLEAN> 
This form indicates that a boolean value is being transmitted. The contents should be either the string true or false. Character case is not important.

5.2.3. FLOAT

    <FLOAT> ...  </FLOAT> 
This form indicates that a floating-point number is being transmitted. The value of the number may be of any precision, and may be in scientific notation.

5.2.4. HTML

    <HTML> ...  </HTML> 
This form indicates that HTML code is being sent. The HTML code should be inserted into the output at the point in the output stream corresponding to this point in the input stream.

A KBMS may use this to send an active link as the value of a frame-slot.

5.2.5. INTEGER

    <INTEGER [base="base"]> ...  </INTEGER> 
This form indicates that an integral number is being transmitted. The value of the integer may be of any precision, and may be in scientific notation.

Using the base parameter allows hex strings to be passed, for example to transmit color values. The base value is always in base 10.

5.2.6. LIST

    <LIST> ...  </LIST> 
This form indicates that a LIST is being sent. The internal construction of a LIST is exactly the same as defined in Common LISP.

5.2.7. NOTE

    <NOTE> ...  </NOTE> 
This form indicates a notation that should be displayed on the screen in addition to the other information being sent. Notes are usually displayed at the bottom of the screen (like a footnote) or in a separate display. The text between the NOTE and /NOTE tokens forms the note.

5.2.8. OBJECT

    <OBJECT> ...  </OBJECT> 
This form indicates that an OBJECT (which may correspond to a structure, record or class instance in a regular programming language) is being transmitted. The receiver must be able to interpret the meaning of the object contents, which are undefined.

5.2.9. STRING

    <STRING> ...  </STRING> 
This form indicates that a text string is being transmitted. The text may contain any characters. The < and " characters may be escaped with a backslash ("\"), although HTML character escape sequences are preferred.

5.2.10. URL

    <URL> ...  </URL> 
This form indicates that a special kind of string, namely a URL, is being transmitted.

5.3. Error messages

5.3.1. KB-ERROR

    <KB-ERROR 
     command="command"
     value="error description">
The KBMS uses this form to indicate that an error occurred during execution of a request. If the WFB receives this message, the error description will be displayed on the screen in an appropriate format.

5.3.2. UNSUPPORTED

    <UNSUPPORTED command="command"> 
The KBMS uses this form to indicate that it can not perform the requested command.

6. Default port numbers

6.1. Service Port

The WFB accepts connections from KBMS servers over this port. The protocol used is described here. The default service port is 5714. This port number can be modified by the WFB as desired upon startup.

6.2. HTTP Port

The WFB will serve HTML web pages over port 6215. This port number can be modified as desired.

6.2. Pass-through Port

The WFB will serve as a frame server to clients contacting it on port 6607. This port number can be modified as desired.

A.1. Summary of Tokens

xyz
Table 1. Messages in the WFB - KBMS protocol
Message From Format(s) Section Description
ARRAY KBMS
<ARRAY [length="array-length"]> ...  </ARRAY>
Data Types Values between the open and close ARRAY tokens specify the contents of the array. Specifying the array length is optional.
BEGIN-SERVICE KBMS
  <BEGIN-SERVICE
    name="service-name"
    type="service-type"
    host="hostname"
    port="port-number"
    description="Text description of the service"
    supported="WFB-operation" ...
    unsupported="WFB-operation" ...
    protocol="XML"|"LISP"
    public="true"|"false"
    >
Services Initiates a session between a KBMS and a WFB server.
BOOLEAN KBMS
<BOOLEAN>
     true | false
</BOOLEAN>
Data Types Case-insensitive.
END-SERVICE KBMS
  <END-SERVICE
    name="service-name"
    password="password">
Services Ends a session between a KBMS and a WFB server.
FACET KBMS
<FACET name="facet-name"> ... <FACET>
Responses Usually contains VALUE forms between the open and close FACET tokens.
FACET-INFO KBMS
<FACET-INFO name="facet-name"> ...  </FACET-INFO>
Responses A user-oriented description of a facet. This is produced in response to a GET-FACET message.
FLOAT KBMS
<FLOAT> ...  </FLOAT>
Data Types Transmits a floating-point number in decimal or scientific notation.
FRAME KBMS
<FRAME name="frame-name"> ... </FRAME>
Responses The contents contain information about a specific frame, usually using SLOT forms.
GET-ALL-FRAMES WFB
<GET-ALL-FRAMES>
Requests Requests that the KBMS return a list of every frame in the KB. This usually means frame names only, not frame contents.
GET-FACET WFB
<GET-FACET name="facet-name">
Requests Requests meta-level information about a facet, usually for display to a human user.
GET-FRAME WFB
<GET-FRAME name="frame-name">
Requests This message requests the contents of a frame.
GET-FRAME-SLOTS WFB
<GET-FRAME-SLOTS frame="frame-name">
Requests This message requests a list of every slot currently instantiated on the given frame instance.
GET-KB-STATISTICS WFB
<GET-KB-STATISTICS>
Requests Requests a count of various components in the KB, such as frames, relations (slot-values), etc. The KBMS can return any message, although VALUE forms are suggested.
GET-PARAMETER External
<GET-PARAMETER parameter="parameter-name">
Requests The WFB may forward this through a pass-through port. The requestor is asking for the value of a specific parameter in the KBMS.
GET-SLOT WFB
<GET-SLOT name="slot-name">
Requests Requests meta-level information about a slot, usually for display to a human user.
GET-SLOT-VALUE WFB
<GET-SLOT-VALUE
        frame="frame-name"
        slot="slot-name"
        [facet="facet-name"]>
Requests This message requests the value of a specific slot (and facet, if supported).
HTML KBMS
<HTML> ...  </HTML>
Data Types The contents contain HTML code, which the receiver will normally use without modification.
INTEGER KBMS
<INTEGER [base="base"]> ...  </INTEGER>
Data Types Transmits an integer value in any base. Default base is 10. The value may be in scientific notation.
IS-FACET WFB
<IS-FACET name="facet-name">
Requests This message requests a boolean response indicating whether the given name is the name of a defined facet in the KBMS.
IS-FRAME WFB
<IS-FRAME name="frame-name">
Requests This message requests a boolean response indicating whether the given name is the name of a defined frame in the KBMS.
IS-RULE WFB
<IS-rule name="rule-name">
Requests This message requests a boolean response indicating whether the given name is the name of a defined rule in the KBMS.
IS-SLOT WFB
<IS-SLOT name="slot-name">
Requests This message requests a boolean response indicating whether the given name is the name of a defined slot in the KBMS.
KB external
<KB parameter="value">
Requests This message passes some undefined information to the KBMS. The sender and receiver must define the contents. The WFB will never generate this message and will not understand the contents.
KB-ERROR KBMS
<KB-ERROR command="command" value="error description">
Responses The KBMS generates this message to indicate that an error was generated while processing the given command.
LIST KBMS
<LIST> ...  </LIST>
Data Types This message indicates that the contents of a LIST (corresponding to the Common LISP LIST data structure) are being transmitted.
NEW-FACET WFB
<NEW-FACET name="facet-name">
Requests This message requests the KBMS to create a new facet with the given name.
NEW-FRAME WFB
<NEW-FRAME name="frame-name">
Requests This message requests the KBMS to create a new frame with the given name.
NEW-SLOT WFB
<NEW-SLOT name="slot-name">
Requests This message requests the KBMS to create a new slot with the given name.
NOTE KBMS
<NOTE> ...  </NOTE>
Data Types This message indicates a note, or ancillary information, that is attached to a response. The receiver should display the NOTE in a footnote position, or in a special display.
OBJECT KBMS
<OBJECT> ...  </OBJECT>
Data Types Transmits an object (structure, record, class instance, ...). The receiver must understand the contents.
PARAMETER KBMS
<PARAMETER
        name="parameter-name"
        value="value">
Responses This message is transmitted in response to a GET-PARAMETER message.
PASSWORD WFB
    <PASSWORD value="some-password">
  or
    (:PASSWORD :VALUE "some-password")
Services Used by the KBMS to end a service or by the user to access a private KB.
RESPONSE KBMS
<RESPONSE> ... </RESPONSE>
Responses The KBMS must begin and end any response to a message with the RESPONSE token. This is so the receiving agent can know when the message begins and ends.
RULE KBMS
<RULE name="rule-name"> ... </RULE>
Responses The contents contain information about a specific rule, usually using SLOT forms. The slots antecedent, consequent, direction and description are given special handling by the WFB.
SEARCH WFB
<SEARCH
        value="text"
        exact="true"|"false">
Requests The KBMS is requested to perform a search for items containing the given string. The items may be frames, slots, facets, values or other forms.
SET-PARAMETER WFB
<SET-PARAMETER
   parameter="parameter-name"    value="value">
Requests The WFB may forward this through a pass-through port. The requestor is asking the KBMS to set the value of a specific parameter in the KBMS. The KBMS should reply with an appropriate NOTE or KB-ERROR.
SET-SLOT-VALUE WFB
<SET-SLOT-VALUE 
   frame="frame-name"    slot="slot-name"    [facet="facet-name"]    value="value">
Requests The KBMS is requested to set the value of the frame-slot to the specified value. If the KBMS supports facets, the message should contain a facet parameter. If it doesn't, the KBMS should use its default facet, usually the one corresponding to a positive value.
SLOT KBMS
<SLOT name="slot-name"> ... </SLOT>
Responses The contents contain information about a slot, usually FACET and/or VALUE forms.
SLOT-INFO KBMS
<SLOT-INFO name="slot-name"> ...  </SLOT-INFO>
Responses A user-oriented description of a slot. This is produced in response to a GET-SLOT message.
STRING KBMS
<STRING> ...  </STRING>
Data Types Indicates that a text string is being transmitted.
UNSUPPORTED KBMS
<UNSUPPORTED command="command">
Responses Indicates that the KBMS does not support the command indicated in the command parameter. This message is sent in response to a specific command. Use the BEGIN-SERVICE command to indicate that a KBMS does not generally support a command.
URL KBMS
<URL> ... </URL>
Data Types Indicates that a URL is being transmitted.
VALUE KBMS
<VALUE [name="value-name"]> ...  </VALUE>
Responses Transmitted in response to a GET-SLOT-VALUE or a GET-KB-STATISTICS message.
WFB-ERROR WFB
<WFB-ERROR value="error description">
Responses Transmitted by the WFB, usually to indicate that it could not understand a given message. The receiver should understand the message and make appropriate changes. When this message is transmitted in reply to a specific response from a KBMS, such as in response to a GET-SLOT-VALUE message, the original message will be repeated, up to three times total. The KBMS should not send a new value in response to the error message, but should wait for the new request from the WFB.

Related web pages


AKB by Micheal Hewett