On OWL-S CompositeService DataFlow

just a simple question, look at this code taken from the "OWL-S Semantic 
Markup for Web Services" by David Martin e al. :

<process:CompositeProcess rdf:ID="CP">
   <process:hasInput rdf:ID="I1"/>
   <process:hasOutput rdf:ID="O1"/>
   <process:composedOf>
      <process:Sequence rdf:ID="CP">
         <process:components rdf:parseType="Collection">
            <process:Perform rdf:ID="Step1">
               <process:process rdf:resource="&aux;#S1"/>
               <process:hasDataFrom>
                  <process:InputBinding>
                     <process:theParam rdf:resource="&aux;#I11"/>
                     <process:valueFunction expressionLanguage="&drs;" 
                                      rdf:parseType="Literal">
                        <drs:Functional_term>
                           <drs:term_function rdf:resource="&arith;#incr"/>
                           <drs:term_args rdf:parseType="Collection">
                              <process:valueOf>
                                  <process:theParam rdf:resource="#I1"/>
                                  <process:fromProcess
                                      rdf:resource="#TheParentPerform"/>
                              </process:valueOf>
                           </drs:term_args>
                        </drs:Functional_term>
                     </process:valueFunction>
                  </process:InputBinding>
                  <process:InputBinding>
                     <process:theParam rdf:resource="&aux;#I12"/>
                     <process:valueData
                        xsd:datatype="&xsd;#string"
                        >Academic</process:valueData>
                  </process:InputBinding>
               </process:hasDataFrom>
            </process:Perform>
            <process:Perform rdf:ID="Step2">
               <process:process rdf:resource="&aux;#S2"/>
               <process:hasDataFrom>
                  <process:Binding>
                     <process:theParam rdf:resource="&aux;#I21"/>
                     <process:valueSource>
                        <process:ValueOf>
                            <process:theParam rdf:resource="#O11"/>
                            <process:fromProcess rdf:resource="#Step1"/>
                        </process:ValueOf>
                     </process:valueSource>
                  </process:Binding>
               </process:hasDataFrom>
            </process:Perform>
         </process:components>

         <process:Produce>
            <process:producedBinding>
               <process:OutputBinding>
                   <process:theParam rdf:resource="#O1"/>
                   <process:valueFunction expressionLanguage="&drs;"
                                    rdf:parseType="Literal">
                      <drs:Functional_term>
                          <drs:term_function rdf:resource="&arith;#times"/>
                          <drs:term_args rdf:parseType="Collection">
                             <xsd:Integer rdf:datatype="&xsd;#Float"
                                >3.14159</xsd:Float>
                             <drs:Functional_term>
                                <drs:term_function
                                   rdf:resource="&arith;#max"/>
                                <drs:term_args rdf:parseType="Collection">
                                   <xsd:Integer rdf:datatype="&xsd;#Integer"
                                                >0</xsd:Integer>
                                   <process:valueOf>
                                      <process:theParam
                                          rdf:resource="#O21"/>
                                      <process:fromProcess
                                          rdf:resource="#S2"/>
                                   </process:valueOf>
                                </drs:term_args>
                             </drs:Functional_term>
                          </drs:term_args>
                      </drs:Functional_term>
                   </process:valueFunction>
               </process:OutputBinding>
            </process:producedBinding>
      </process:Sequence>
  </process:composedOf>
</process:CompositeProcess>

(Sorry it's a bit long but it's the only good example I've Found....)
They said:
"Produce is a new class used to capture dataflows to the outputs of the 
ParentPerform. The outputs can't be declared once and for all, because 
in the presence of IfThenElses those outputs will depend on which branch 
of the conditional the agent takes. So at the point in a branch where 
the data required to compute the output are known, we insert a Produce 
pseudo-step to say what the output will be."

OK! but...
is the "process:Produce" ControlConstruct in the right place?????
if "process:Poduce" is meant to be the last "pseudo-step" of the 
Sequence Construct, it should go before the </components> tag (because 
it should be the last component of the Sequence)..
but if "process:Produce" is meant to be the last "pseudo-step" of the 
whole CompositeService it should go after the </Sequence> tag and before 
the </composedOf> tag...
anyway it should not be placeed between </components> and 
</Sequence>!!!is it right?

So the question is: "should Produce be the last Step of the Sequence 
constructoror  Should it be the last Step of all the Compositeservice?
thank you



	

	
		
___________________________________ 
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB 
http://mail.yahoo.it

Received on Tuesday, 18 October 2005 10:35:24 UTC