- From: David Martin <martin@AI.SRI.COM>
- Date: Tue, 06 Apr 2004 15:28:13 -0700
- To: David Martin <martin@AI.SRI.COM>
- Cc: Bijan Parsia <bparsia@isr.umd.edu>, public-sws-ig <public-sws-ig@w3.org>
David Martin wrote: > OK, here's a revision of the Add example that takes into account recent > comments in this same thread. Still not sure what namespace we'll be > using for the ???'s - but I think it'll be "drs". Drew, does this seem > compatible with DRS directions? > > - David > > <process:AtomicProcess rdf:id="Add"> > <process:hasInput> > <Input rdf:id="Add_In1"> > <parameterType > rdf:datatype="&xsd;anyURI">xsd:float</parameterType> > </Input> > <process:hasInput rdf:id="Add_In2"> > <Input> > <parameterType > rdf:datatype="&xsd;anyURI">xsd:float</parameterType> > </Input> > </process:hasInput> > <process:hasOutput> > <Output rdf:id="Add_Out"> > <parameterType > rdf:datatype="&xsd;anyURI">xsd:float</parameterType> > </Output> > </process:hasOutput> > <process:hasEffect> > <???:LogicalExpression> > <???:inLanguage><LogicFormalism > rdf:resource="&lf;swrl/></???:inLanguage> > <???:expression rdf:parseType="literal"> > <???:Formula rdf:parseType="Collection"> > <swrl:datavaluedPropertyAtom> > <swrl:propertyPredicate rdf:resource="&arithmetic;sum"/> > <swrl:argument1> > <arithmetic:Pair> > <first rdf:resource="#Add_In1"> > <second rdf:resource="#Add_In2"> > </arithmetic:Pair> > </swrl:argument1> > <swrl:argument2 rdf:resource="#Add_Out"/> > </swrl:datavaluedPropertyAtom> > </???:Formula> > <???:expression rdf:parseType="literal"> > <???:LogicalExpression> > </process:hasEffect> > </process:AtomicProcess> Some interesting questions / objections came up about the effect part of this example today in our telecon. Here are 2 of the primary points that came up, as I understand them. My comments follow each point. Responses welcome. Issue 1) "This example expresses the relationship between inputs and outputs. It's not correct to call that kind of characterization an 'effect'. An 'effect' is a change to 'the world' (including changes to knowledgebases)." I've some sympathy with that, but we do frequently talk about outputs as "knowledge effects". What's the harm in talking about the value of an output as one of the "effects" of a service? Although it's clearly transitory, nevertheless the service certainly "had the effect" of setting the output to that particular value. For those who object to calling this an "effect", would you be happy if it were called a "postcondition"? Issue 2) "It's not useful to characterize the output of a purely-informational service in this way. For one thing, it's just a restatement of the code that implements the service." This objection seems groundless to me. I can easily imagine service composition tasks where the composer will need to select an appropriate purely-informational service, and some characterization of the outputs' relationship to the inputs is precisely the information that will be needed. (example below) With respect to the issue of restatement - many (or most or all) of our frequently-discussed examples (of conditional outputs and effects) involve some degree of restatement of what the service does. Indeed, how could they be otherwise and still be useful? The point of this example was *not* to expose the inner workings of the "Add" service. It was to characterize the relationship between input and output values in terms of some existing ontology (where "sum" was already defined). I think perhaps the utter simplicity of this example and its roots in basic math have led to some confusion. Let's imagine something with more obvious utility. Suppose there are 2 standard ways of computing the annual interest on a certificate of deposit. Service S1 computes it using method 1, and service S2 computes it using method 2. Now suppose there's a standard accounting ontology that defines these methods using properties "interest_method1" and "interest_method2". Each of these properties has Pair(balance, rate) for domain and float for range. The meaning of an instance of interest_method1: Pair($500, 10%) interest_method1 $55.10 is simply that $55.10 is the correct value of interest for the given balance and rate, under that method of computation (which involves some form of compounding). I claim the following: A) It would be extremely useful for a service composer to be able to distinguish between S1 and S2, and there should be a way for us to express that distinction using effects (or "postconditions", if that's the preferred terminology, or perhaps conditional outputs) that mention interest_method1 and interest_method2. B) However we do it for this example should also apply to the simple math example ("Add"). Cheers, David
Received on Tuesday, 6 April 2004 18:34:43 UTC