This informal working document is meant to provide conceptual background regarding decisions that have been made with respect to DAML-S, and also regarding outstanding issues that have yet to be resolved.
Feedback to
[email protected],
please.
Contents:
Question: Is there some clear-cut relationship, which should be formalized in the ontology, between each of these properties in the profile and the corresponding property in the process model?
This question has not yet been fully resolved.
In DAML-S, a process is described using CLASSES; a particular USE/EXECUTION of a process is described using INSTANCES.
See also: the thread headed Instantiating a DAML-S Process on [email protected].
However, the present process model is inherently (and implicitly) a "2-party" model. For instance, inputs are (implicitly) provided by the requester to the provider of a service. This has been done for simplicity; because it allows us to draw on various familiar conceptual models such as "client/server", "requester/provider", and "caller/callee"; and because it allows for a more compact means of representing commonplace 2-party processes, such as those involving only a buyer and a seller.
The present version of the process model, then, may be thought of as a special case, with simplifying assumptions, of the more general model to come.
The present model makes simplifying assumptions about messages, which are closely related to the simplifying assumptions (mentioned above) regarding 2-party processes. To wit: inputs (input properties) to a (non-composite) process specify messages that flow from the service requester to its provider (at the invocation of the process), whereas outputs (output properties) specify messages that flow from provider to requester (at the termination of the process).
As we evolve to a multi-party process model, we intend to evolve the model towards a more explicit representation of messages and conversation policies.
Question: How should the inputs (outputs, preconditions, effects) of a composite process be characterized? Should they be developer-specified, or automatically generated according to some precise definition of their relationship to the subprocesses' inputs (outputs, preconditions, effects)?
This relationship is roughly analogous to the relationship between a "one-step" path and the complete path through a purchase on a B2C Web site.
This question has not yet been fully resolved.
See also: the thread headed DAML-S Expressiveness Challenge #1 on www-rdf-logic.
The following is excerpted from the first message of that thread:
Imagine we want to describe the following subprocess (part of a larger process on some B2C web site), expressed here in a logic programming style: chargePayment(Amount) :- getCreditCardNumFromUser(CCNum), postCharge(CCNum, Amount). What we want to express in DAML+OIL (or DAML-L, when available) is analogous to what the repeated use of CCNum expresses. That is, it restricts the 1st argument input value of postCharge to be identical to the output value of getCreditCardNumFromUser, when an instance of this procedure executes. In DAML-S, there is a top-level Process class, which has an input property and an output property. For this example, both getCreditCardNumFromUser and postCharge are declared as subclasses of Process, and their inputs (outputs) are declared as subproperties of input (ouput). Something like this (simplifying and omitting details): PREREQUISITE INFO: In DAML-S, a process is described using CLASSES; a particular USE/EXECUTION of a process is described using INSTANCES. <!-- GIVEN: chargePayment is a subclass of Sequence (and Sequence is a subclass of Process) An instance of chargePayment is constrained to have an instance of getCreditCardNumFromUser as its first element, and an instance of postCharge as its second element --> <Class ID=getCreditCardNumFromUser> <subClassOf Process> ..... <Property ID=ccNumOutput> <subPropertyOf output> <domain getCreditCardNumFromUser> .... <Class ID=postCharge> <subClassOf Process> ..... <Property ID=ccNumInput> <subPropertyOf input> <domain postCharge> .... <!-- DESIRED CONSTRAINT GOES HERE, and says something like: "when ccNumInput and ccNumOuput are instantiated within the same instance of chargePayment, they have the same value" -->