Re: the precondition property in OWL-S 1.0

From: Drew McDermott <drew.mcdermott@yale.edu>
Date: Mon, 10 Nov 2003 12:16:32 -0500 (EST)
Message-Id: <200311101716.hAAHGWH26480@pantheon-po03.its.yale.edu>

```

[David Martin]
I think Monika suggested this:

Process - hasPrecondition - Precondition
where Precondition is a subclass of Condition

whereas Drew seems to be suggesting this:

Process - hasPrecondition - Condition

(with no Precondition class anywhere).

That reminds me - we still have an open issue about the class of an
effect (that is, the range of ceEffect).  Currently it's just "Thing",
which isn't very satisfying. Do people feel that it's OK to have
Condition for this range, or do we need something distinct?

Effects are fundamentally different from conditions.  They just don't
have the same vocabulary.  Effects are not true or false; they are
"imposed" or "not imposed."

Here are some examples:

(increase q x): means "Quantity q increases by x."

(when p e) in an effect means, "If p was true before the action, e
is imposed after

(new x p): "A new x comes into existence, such that p."  (This is
not standard, but several people with practical planning
applications say it's absolutely necessary, and it certainly
seems to be in the web-services world.)

On the Precondition-class issue: I am willing to lose on this issue,
but I think the winners will eventually repent.  As Mike Huhns pointed
out, all there is to know about a formula is captured in the way it is
expressed in some syntactic framework.  Putting a formula into a
precondition slot doesn't change anything about it.  It's not like
moving an animal into the Pet class by housebreaking it.  If to be in
the Precondition class is to be the precondition of some step, then
there is no way to decree that a Condition is _not_ in the
precondition class.  How could you ever know?  You could put every
Condition into the Precondition class and it wouldn't do any harm.

It's as if we had a class Password, such that a string was in this
class if and only if it was a password used by someone, somewhere.
What would be the point?  What we care about is that a string is the
value of the hasPassword property for some particular application.
(Of course, a particular application could have a class
Acceptable-password, which allowed strings with digits and punctuation
marks, but disallowed English words, but then it would be something