The PrepareMeal-example may illustrate use of other objects' descriptions:
(SuregenConcept P_PrepareMeal :is-a SuregenProcess
:has-intern ((SP :are (P1_buyFood P2_cook P3_setTable))))
(ToDescribe :a P_PrepareMeal
:use (Sentences (DescribeS (First (my :SP)) :as :MC)
(DescribeS (Second (my :SP)) :as :MC)
(DescribeS (Third (my :SP)) :as :MC)))
DescribeS returns an objects' description in the appropriate form as specified by the :as-parameter. Calling DescribeS in ToDescribe -forms effectively builds up a net (hopefully acyclic) of increasingly complex descriptions. In this way an entire medical procedure, say an appendectomy can be defined by its subprocesses such that
(DescribeS I-appendectomy :as :text)
generates the surgical report.
As mentioned earlier on, it is possible to force the description of only a certain facet of an instance to be described. How this is to be done must of course be defined previously with ToDescribe:
(ToDescribe :the colour :of-a Thing :as :MC
:use (main-clause
:subject (noun-phrase :noun "Ding"
:pronoun :definite)
:predicate "sein"
:adverb (my :colour)))
(DescribeS I-thing :facet :colour :as :MC)
=> "Das Ding ist blau."
("sein" = "to be", "Das Ding ist blau."= "The thing is blue")