Queries posed by the system can be classified according to the kind of input they expect, the way the input is processed, etc. Queries of the same kind form a query class.
For example, queries requiring a yes/no answer form a query class with the following characteristics:
no, respectively, as the abstract answer;
There are built-in query classes for reading in yes/no answers, toplevel queries, debugger commands, etc.
A query class is characterized by a ground Prolog term,
which is supplied as the first argument to the query processing
ask_query/4. The characteristics of a query
class are normally described by the extendible predicate
'SU_messages':query_class(QueryClass, Prompt, InputMethod, MapMethod, FailureMode).
The arguments of the
query_class predicate have the
For example, a built-in input method is described by the atom
line. This requests that a line is input from the user, and the
code-list is returned. Another built-in input method is
); here, a Prolog term is read and
The input obtained using InputMethod is called raw input, as it may undergo further processing.
In addition to the built-in input methods, the user can define his/her
For example, the built-in map method
expects a code-list as raw input, and gives the answer term
no depending on the first non-whitespace character
of the input. For another example, the built-in map method
requests that the raw input itself be returned as the answer
term—this is often used in conjunction with the input method
In addition to the built-in map methods the user can define his/her
yes_or_noquery class. FailureMode determines what to print before re-querying the user. Possible values are: