]>
$Id: Process.daml,v 1.23 2003/03/05 00:25:11 martin Exp $
Upper-level DAML ontology for Processes.
Part of the DAML-S effort; see http://www.daml.org/services/.
-- 0.7: This is deprecated, in favor of sameValues, defined further below.
-- The remaining comments are retained from the 0.6 release:
This is a "place-holder" for now, which needs further work.
The domain and range will be properties.
"X sameValuesAs Y" is used to indicate that properties X and Y take
the same values within a given context; that is, within an execution
instance of some process. This is used simply to indicate such things
as the binding of output property X of a subprocess with input property
Y of a subsequent subprocess, within the same parent process.
The range is a list of classes.
This property is defined similarly to DAML+OIL properties having List
as range, such as daml:oneOf and daml:intersectionOf, and is meant
to be used similarly, with parseType=collection.
"Class listOfInstancesOf X Y Z" (for example) is used to indicate the class
of lists having an instance of class X as their first member, an instance
of class Y as their second member, and an instance of class Z as their
third member.
An instance of listOfInstancesOf represents an anonymous class, as
explained here:
http://www.daml.org/services/daml-s/0.7/listOfInstancesOf.html.
Note that listOfInstancesOf is provided as "syntactic sugar"; that is,
it isn't required to express the intended anonymous class definition.
It is provided to allow for shorter, more readable expressions in process
definitions.
There are some unresolved concerns about the use of this
property, which are also explained in the HTML document.
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.
The condition of a conditional effect.
An UnConditionalEffect has no condition.
The condition of a conditional output
An UnConditionalOutput has no condition.
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.
This is the power set of AtomicProcess (defined below); that is, the set
of all subsets of AtomicProcess. This class is needed as the range
of certain properties.
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 ProcessPowerSet (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.
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.
This is a deprecated usage; expandsTo is preferred.This is a deprecated usage; collapsesTo is preferred.
A CompositeProcess must have exactly 1 composedOf property.
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. Similarly for
computedInput, computedOutput, computedEffect, and
computedPrecondition.
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 processThe range is to be a list of ValueOf. Start time for the Event End time for the Event Event/Process is during Interval, the exact time
interval over which the event occurs
A ProcessComponent can have at most one of each of the restricted properties.