W3C home > Mailing lists > Public > public-sws-ig@w3.org > March 2005

Re: Choice = If-Then-Else with conditions in Result?

From: Drew McDermott <drew.mcdermott@yale.edu>
Date: Thu, 10 Mar 2005 14:54:43 -0500
Message-ID: <16944.42499.492063.503114@dhcp130132249186.its.yale.edu>
To: public-sws-ig@w3.org


> [Martin Gulich]
> 
> If so, I think that the Choice structure is not very useful when the output
> of the process is conditionally decided in the Results. For when the output
> of the process is decided based on the conditions in the Results, this very
> output might not have been produced by the component chosen from the
> Choice-bag. Consider the composite process SignInAlternatives in the
> FullCongoBuyExample: if an account already exists, the output is bound to
> the output of SignInSequence, otherwise it is bound to the output of
> CreateAcctSequence. Both of these processes are in the Choice-bag of
> SignInAlternatives. But how do we know that the correct component in the
> Choice-bag has been executed? For a machine that automatically interprets
> the description of SignInAlternatives to know this, it must first inspect
> the conditions of all the Results of SignInAlternatives, before it chooses a
> component from the Choice-bag and executes it. I think this makes Choice
> (implicitly) equal to the If-Then-Else control structure, but more diffuse.
> So to conclude, the Choice control structure is only safe to use when no
> conditions are present in the Result descriptions of the process.

Yes.  This issue is what led to the introduction of the 'produce'
control construct into OWL-S.  In a composite process, it is often
clumsy or impossible to specify outputs in a 'result' block.  Instead,
at the relevant point in the control flow, one writes (in the surface
syntax): 

     produce(output1 <= expression1, output2 <= expression2, ...)

In the RDF syntax, one writes

   <Produce>
      <producedBinding>
	 <OutputBinding>
	    <toParam rdf:resouce="output1"/>
	    <valueData>expression1</valueData>
	 </OutputBinding>
	 <OutputBinding>
	    <toParam rdf:resouce="output2"/>
	    <valueData>expression2</valueData>
	 </OutputBinding>
	 ...
      </producedBinding>
   </Produce>

Unfortunately, the Congo process model hasn't been updated.  I am
working on generating a surface-syntax version with a consistent RDF
translation.  


                                         -- Drew McDermott
                                            Yale University
                                            Computer Science Department


Ontology recapitulates philology -- Larry Birnbaum
Received on Thursday, 10 March 2005 19:54:20 GMT

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