]> $Id: Process.owl,v 1.148 2007/01/18 23:17:02 martin Exp $ Upper-level OWL ontology for Processes. Part of the DAML-S/OWL-S effort; see http://www.daml.org/services/owl-s/. 1 This is the simplest way to relate parameters to SWRL (and DRS) variables. If an Input parameter has a constant value, or (as in the case of Output) is a description in terms of of some other process parameters, then supply it here. Note that it must be interpreted after reading it as an XMLLiteral. Parameter is the disjoint union of Input and Output An Existential is a variable that can occur in a precondition and a Result. We presuppose that there is (just) one binding of all the existentials that, combined with the bindings of input parameters, makes the precondition true. If there is such a binding, then the Process is feasible. The values of the existentials so obtained can appear in the effects of Results, and, if the Process is composite, can be referred to in its body. Result hasResultVar inCondition hasEffect withOutput 1 1 1 1 valueSpecifier valueForm valueForm is to be used to specify a pseudo-OWL description that is legal OWL except that variables (including process parameters) and ValueOf forms can appear as the object of properties where those things violate the range of the property. The intent is that this be interpreted as a pattern indicating the actual value of the binding after the variables have been substituted for. valueFunction As with valueForm, a pseudo-OWL description is used to indicate the application of a locally (to the client) available function to convert data (specified by variables or ValueOf) to a correct form. valueSource This is the simplest kind of data flow valueType valueData valueData is for specifying constant (XML) data to be bound to a parameter. Ideally, the valueData property would also be a subproperty of valueSpecifier so that it would be one of the three possible properties used to specify a value for a Binding. But as we cannot do that, we treat it separately, but note that if it is used, the others should not be. For now, its range is any XML datatype. ValueOf Within a value form, or when using valueSource, references to I/O parameters of processes require a tuple of (perform-ref, param-ref, which we represent with ValueOf 1 We allow for the possibility that another parameter of the same process is referenced, in which case this property is optional (hence maxCard) 1 The subClassOf element is redundant, but we keep it because it is helpful to some tools The subClassOf element is redundant, but we keep it because it is helpful to some tools The most general class of processes A Process can have at most one name, but names need not be unique. 1 hasResult The PERFORM construct is how one references a process in a composite process. This is analogous to a function call in a program body. The inputs to the PERFORM are described using the hasDataFrom property. 1 This property has as range a Binding object, which may either indicate constants or values that are derived from the parameters (typically outputs) of other performs in the SAME COMPOSITE PROCESS. A special-purpose object, used to refer, at runtime, to the execution instance of the process whose definition it occurs in. A CompositeProcess must have exactly 1 composedOf property. 1 A Local is a distinct type of variable used for intermediate results in a CompositeProcess. A Loc is a variable that may be written and overwritten as often as one pleases. The value should be an object belonging to the parameterType of the Loc. There is zero probability of being able to say this in Owl. A Link is a communication channel that may be written exactly once. 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 OWL. 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. This is not well defined for conditional effects at present. A CompositeProcess can have at most one invocable property. Similarly for computedInput, computedOutput, computedEffect, and computedPrecondition. 1 1 1 1 1 The components propery of selected control construct subclasses holds a specific arrangement of subprocesses or control constructs. The range is declared at each relevant subclass of ControlConstruct. A multiset of control constructs OWL does not make any distinction between bags and lists. We redefine the ControlConstructList class, rather than use equivalentClass, so as to make that distinction. Sequence is defined as having a list of component processes that specify the body. The Preconditions, parameters and effects of the sequence are not defined in the minimal version. An obvious extension would be to define the effect of the sequence to be the union of the effect of the individual members, and the parameters of the sequence to be the union of the parameters of individual members. However, some implementations may decide to use the last event's effects as the effect of the sequence, etc. 1 Here the process consists of concurrent execution of a bunch of sub-processes. No further specification about waiting, synchronization, etc. Similar to other ontologies' use of "Concurrent" or "Parallel". 1 Here the process consists of concurrent execution of a bunch of sub-processes. with barrier synchroniztion. With Split and Split and Join, we can define processes which have partial synchronization (ex. split all and join some subset). Allows the process components (specified as a bag) to be executed in some unspecified order but not concurrently. Execution and completion of all components is required. The execution of processes in an "Any-Order" construct cannot overlap, i.e.atomic processes cannot be executed concurrently and composite processes cannot be interleaved. 1 Choice calls for the execution of a single control construct from a given bag of control constructs (given by the components property). Any of the given control constructs may be chosen for execution. 1 If-Then-Else Class is a ControlConstruct that consists of a Condition, a then and an optional else process. 1 1 1 The if condition of an if-then-else AsProcess turns an arbitrary control construct into a "local process" that is called at the point it is defined. One could accomplish (almost) the same thing by replacing any instance of AsProcess by a Perform of a process with the same properties defined for this one use. But AsProcess spares one the trouble, thus allowing one to associate outputs, effects, and even preconditions with an arbitrary subtree of a composite-process definition. (The "almost" above has to do with the fact that the variables of the enclosing process definition may be referred to within an AsProcess; that ThisPerform, used within an AsProcess, refers to the _enclosing_ process; and that an AsProcess may not have explicitly declared participants, because it is meaningless for them to differ from those of ThisPerform.) AsProcess's may be Atomic or Composite, but not Simple; they are used purely as syntactic devices. Considered as a ControlConstruct, AsProcess has no components. However, if it is a CompositeProcess it may have a body. 0 Assignment to a Loc. Free-form. Write to an output or a link. This can happen only once for a given output or link. Iterate is an "abstract" class, in the sense that it's not detailed enough to be instantiated in a process model. It's here to serve as the common superclass of Repeat-While, Repeat-Until, and potentially other specific iteration constructs that might be needed in the future. The Repeat-While class specializes the ControlConstruct class where the with properties "whileCondition" (range of type Condition) and ``whileProcess'' (range of type Repeat). Repeat-While tests for the condition, exits if it is false and does the operation if the condition is true, then loops. 1 1 The Repeat-Until class specializes the ControlConstruct class where the with properties "untilCondition" (range of type Condition) and "untilProcess" (range of type Reapeat). Repeat-Until does the operation, tests for the condition, exits if it is true, and otherwise loops. 1 1 Interval of time allowed for completion of the process component (relative to the start of process component execution). A ControlConstruct can have at most one instance of timeout.