Text generation in SUREGEN-2 means that instances of classes describe themselves. For every class, therefore, it must be specified via ToDescribe how this is to be done. This macro accepts (in the simplest case) the class' name and an arbitrary LISP expression, which is evaluated when an instance of the class is to be described. Thus
(ToDescribe :a Thing :use "A thing")
is perfectly acceptable. A possible option to ToDescribe, signalled by :as, is the desired (syntactical) form of the description. So:
(ToDescribe :a Thing :as :NP :use "Ein Ding")
(ToDescribe :a Thing :as :MC :use "Ein Ding existiert.")
("Ein Ding" = "A thing", "Ein Ding existiert."= "A thing exists.")
would return the respective strings when the forms :NP (=noun phrase) or :MC (=main clause) are desired. The parameters to :as are in now way limited (other than being LISP "atoms").
The use of canned text as in the above examples can be useful in the early phases of system design and sometimes (in the case of phraseologisms) even in production version. The expressive power of SUREGEN-II however stems from more complicated expressions. These expressions can
- use morphosyntactical expressions
- refer to slot values
- employ of other objects' descriptions
- use typical (semantic) constellations (see below).
Moreover, it is possible to specify not only the description of the entire instance, but merely of one of its "facet"s, signalled by the :the keyword.
Some more examples will illustrate this:
(ToDescribe :a Thing :as :NP
:use (noun-phrase :noun "Ding" :pronoun :neutral))
(ToDescribe :a Thing :as :MC
:subject (noun-phrase :noun "Ding" :pronoun :neutral)
("Ding" = "thing", "existieren."= "to exist")
are paraphrases of the above examples, now built "from scratch".