next up previous
Next: Inference Up: Knowledge Representation Previous: Model fragments

Participant class declaration and participant type hierarchies

In general, participant classes need not be defined. However, certain types of participant may be described in terms of other interesting participants, irrespective of the modelling choices. This feature provides syntactic sugar for describing important relations between participants, making it easier to declare required properties of a scenario model in terms of the participants of the scenario. For example, the behaviour of a population may be described in terms of population size and growth rate variables:

(defEntity population
  :participants (size growth-rate))

Participant class declarations may also be employed within model fragments to provide a more specific definition of the meaning of the source-participants and the target-participants. In this way, participant specifications are constrained to be a feature of another participant by means of the :entity statement, as the following example illustrates:

(defModelFragment define-population-growth-phenomenon
  :source-participants ((?p :type population))
  :target-participants 
    ((?ps :type stock :entity (size ?p))
     (?pg :type variable :entity (growth-rate ?p))
     (?pb :type flow)
     (?pd :type flow))
  :assumptions ((relevant growth ?p))
  :postconditions ((== ?pg (- ?pb ?pd))
                   (flow ?pb source ?pl)
                   (flow ?pd ?pl sink)))

Furthermore, participant class declarations may define one class to be an immediate subclass of another. For example, the population participant class of holometabolous insects (e.g. butterflies) may be defined as a subclass of the population participant class:

(defEntity holometabolous-insect-population
  :subclass-of (population)
  :participants 
    (larva-number pupa-number adult-number))

In this way, a participant type hierarchy is defined. Each subclass inherits all participants of its superclasses (i.e. its immediate superclass and superclasses of superclasses).

In summary, a participant class declaration is a tuple $ \Pi=\langle \Pi_S,P\rangle$ where $ \Pi_S$ is a participant class, called the immediate superclass of the participant class and $ P$ is a set of participants classes that describe important features of the participant class.


next up previous
Next: Inference Up: Knowledge Representation Previous: Model fragments
Jeroen Keppens 2004-03-01