W3C home > Mailing lists > Public > public-sws-ig@w3.org > December 2004

Re: Doubt about expressing partial order plan in OWL-S 1.1

From: Drew McDermott <drew.mcdermott@yale.edu>
Date: Thu, 30 Dec 2004 19:36:39 -0500
Message-ID: <16852.40727.770044.682512@DVM-Powerbook.local>
To: public-sws-ig@w3.org


> [Manshan Lin]
> If the resulting plan is in partial order manner, I'm wondering 
> whether we can directly use the constructs (such as Sequence,
> Unordered,Split-join) in OWL-S process model to express the plan. 
> 
> For example:
> OperationB<OperationEnd,
> OperationC<OperationEnd,
> OperationD<OperationB,
> OperationD<OperationC,
> OperationE<OperationC
> OperationBegin<OperationD
> OperationBegin<OperationE
> (Note: OperationBegin, OperationB, ... mean performs of 
> the processes)
> 
> If "Unordered" construct allows interleaving,
> can we express the above plan as following ?

Actually, it doesn't.  It's been replaced by "Any-order," which
requires its steps to be executed in sequence, without saying _which_
sequence.

But let's say you used Split-Join instead.

> -------------------------------------------------
> X1=(Sequence OperationB OperationEnd)
> X2=(Sequence OperationC OperationEnd)
> ...
> X7=(Sequence OperationBegin OperationE)
> Y=(Unorder X1 X2 X3 X4 X5 X6 X7)
> -------------------------------------------------

So Y would = (Split-Join X1 ... X7)

> ***I don't know whether the same perform instance can appear
> in two or more constructs.***

Syntactically it certainly can, because we routinely use rdf:ID's to
refer to occurrences of performs.  You can toss that ID in instead of
the entire description.  (In the surface syntax, you would use a tag
as a step; the current grammar might not allow that.)

The question is what the semantics would be.  There really isn't any
official semantics.  In a denotational framework, the denotation of a
process expression would be the set of all its execution traces.  The
control constructs that compose processes would be defined analogous
to this definition for Sequence:

     E is an execution of a;b;...;c

if and only if E is a time interval I such that instances of a, b, ...,
c occur in that order in the interval, not overlapping, in the right
order, such that begin(a) coincides with begin(I), etc. etc.

In other words, an occurrence of _a_ in _a;b;...;c_ is interpreted as
a process type.  If we give an ID to the defining RDF for _a_, that
makes the ID a synonym for that process type.  Hence, there should be
no obstacle to including it in multiple places.  Unfortunately, the
meaning comes out wrong.  Nothing says that in a particular execution
trace the subtrace corresponding to the occurrence of #a in this
context (say):

    <objList:first rdf:resource="#a"/>

(in a Sequence, say) is the same as the subtrace corresponding to 'a'
in this context: 

    <objList:first>
       <perform rdf:ID="a"> ...
	  <owls:process rdf:resource="examp:a"/>
       </perform>
    </objList:first>

(in another Sequence, or a Split-Join).  The class Perform has
processes as elements, not execution traces.  So reusing an ID saves a
bit of typing, but means exactly the same as what you'd get by
retyping the entire Perform description.  (Plus, it would mislead the
innocent.) 

                                               -- Drew


-- 

                                         -- Drew McDermott
                                            Yale University
                                            Computer Science Department
Received on Friday, 31 December 2004 00:36:56 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Sunday, 16 March 2008 00:10:59 GMT