$Id: Process.daml,v 1.13 2001/11/13 05:52:07 martin Exp $ Upper-level DAML ontology for Processes. Part of the DAML-S effort; see http://www.daml.org/services/. This is a "place-holder" for now, which awaits further work from the DAML/OIL community. An instance of Condition is a logical formula that evaluates to true or false. Eventually we expect this to be defined elsewhere, as part of a DAML+OIL extension allowing for logical expressions. This is the power set of Process (defined below); that is, the set of all subsets of Process. This class is needed as the range of certain properties. It's placed in "preliminaries" because of the expectation that a better way of declaring these ranges may be developed. A ServiceModel describes how a Service works, and a ProcessModel is a type of ServiceModel (the only type being defined for DAML-S). See also the introductory comments to Service.daml. It is important to understand that DAML-S conceptualizes a specific process as a *class*, each of whose instances is a particular use/invocation of the process. Thus, each specific process (such as BuyBook in Congo.daml) is a *subclass*, rather than an instance, of Process. This is why the range of hasProcess is specified as ProcessClass (which is the class of all subclasses of Process). In the case of a composite process, indicates the top-level process class. A ProcessControlModel is used to monitor and control execution of a Process. This is just a "stub" for now; will be developed further in future releases of DAML-S. A ProcessModel can have at most one Process and one ProcessControlModel. The most general class of processes A Process can have at most one name, but names need not be unique. The condition of a conditional effect. The condition of a conditional output Address is a machine name, leave it unrestricted for now Documents that are read by the Process (could be a database, an html form, whatever), range is left unrestricted at this level. Documents that are updated by the Process (could be a database, an html form, whatever), range is left unrestricted at this level. Documents that are written to by the Process (could be a database, an html form or other); range is left unrestricted at this level. Time of an instantaneous Event Start time for the Event End time for the Event Event/Process is during Interval, the exact time interval over which the event occurs Start time for the Event Start time for the Event Invocable is a flag that tells whether the CompositeProcess bottoms out in atomic processes. (If so, it is "invocable".) A computed input is a single expression that characterizes the inputs required by a composite process, and the conditions under which they are required. This expression may, if needed, tie together 2 or more inputs; for example, "either a credit card number, or a bank account number must be given", or "if product id starts with 'M', no shipping method need be given". Additionally, this expression may refer to things other than inputs; for example; "if user's credit rating is 'excellent' or better, Social Security number is not required", or "if product weight is less than 1 lb., no shipping myth did need be given". A "computed" input is so named because it is meant to be computed automatically by some tool, by inspecting the makeup of the composite process. The language used to represent a computed input is not specified here, and will be the subject of future work; hence, the use of Thing as range. It will require expressiveness greater than that of DAML+OIL. A computed output is a single expression that characterizes the outputs required by a composite process, and the conditions under which they are required. See comment for computedInput. A computed precondition is a single expression that characterizes the preconditions of a composite process, based on the preconditions of its sub processes. A computed effect is a single expression that characterizes the effects of a composite process, based on the effects of its sub processes. A CompositeProcess can have at most one invocable property. The components propery of a control construct holds a specific arrangement of subprocesses or control constructs. The range is declared at each subclass of ControlConstruct. A ProcessComponent is either a Process or a ControlConstruct. Attribute to keep a pointer to the current process component. Attribute to keep a pointer to the next process component. A ControlConstruct can have at most one currentProcessComponent and one nextProcessComponent property. A multiset of ProcessComponents A list of ProcessComponents The if condition of an if-then-else The repeat while construct The repeat until process