- From: David Martin <martin@ai.sri.com>
- Date: Wed, 18 Feb 2004 21:17:58 -0800
- To: Francis McCabe <fgm@fla.fujitsu.com>
- Cc: public-sws-ig@w3.org
Francis McCabe wrote: > > Perhaps this is slightly tangential to the issue; but ... > > this view of process seems very one-shot and RPC-ish. No argument about that. But note that we are not starting from scratch here on a new language. This particular proposal ie part of fleshing out and tidying up an existing language, and yes, it is a lot like a workflow or programming language in many ways. We never claimed of OWL-S that our primary objective was modeling conversations. > > an ongoing conversation is still a process. But you don't invoke or > perform or use a conversation. Well, yes, but as part of a conversation you might ask a question of another person and then wait for the answer. - David > > Frank > > On Feb 17, 2004, at 9:10 AM, David Martin wrote: > >> >> Following up on this proposal, below is an initial version of the >> OWL-S code for the "Perform" construct. This will go in Process.owl. >> >> It's essentially the same as I described in the original message, but >> calling it "Perform" instead of "Use". Also, I'm adding the property >> hasBinding, which was missing from the example, and slightly renaming >> a couple other properties. >> >> Here's the updated example: >> >> <process:Perform> >> <process resource="http://..../SomeProcess.owl"> >> <hasBinding> >> <InputBinding> >> <formal resource="http://..../SomeProcess.owl#Input1"/> >> <actual resource="#Person1"/> >> </InputBinding> >> </hasBinding> >> <hasBinding> >> <OutputBinding> >> <formal resource="http://..../SomeProcess.owl#Output1"/> >> <actual resource="#MyVar43"/> >> </OutputBinding> >> </hasBinding> >> >> ... other bindings ... >> </process:Perform> >> >> Here are the proposed new declarations for Process.owl: >> >> >> <owl:Class rdf:ID="Binding"> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#formal"/> >> <owl:cardinality >> rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#actual" /> >> <owl:cardinality >> rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </owl:Class> >> >> <owl:ObjectProperty rdf:ID="formal"> >> <rdfs:domain rdf:resource="#Binding"/> >> <rdfs:range rdf:resource="#Parameter"/> >> </owl:ObjectProperty> >> >> <!-- I don't think it's possible to specify the range. It's supposed >> -- to be the union of swrl:Variable and the parameterType of the >> -- corresponding formal. >> --> >> <owl:ObjectProperty rdf:ID="actual"> >> <rdfs:domain rdf:resource="#Binding"/> >> </owl:ObjectProperty> >> >> <!-- Similarly, here I don't think it's possible to specify the >> desired restriction on the 'actual' properyy. >> --> >> >> <owl:Class rdf:ID="InputBinding"> >> <rdfs:subClassOf rdf:resource="#Binding"/> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#formal"/> >> <owl:allValuesFrom rdf:resource="#Input"/> >> </owl:Restriction> >> </owl:Class> >> >> <owl:Class rdf:ID="OutputBinding"> >> <rdfs:subClassOf rdf:resource="#Binding"/> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#formal"/> >> <owl:allValuesFrom rdf:resource="#Output"/> >> </owl:Restriction> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#actual"/> >> <owl:allValuesFrom rdf:resource="&swrl;#Variable"/> >> </owl:Restriction> >> </owl:Class> >> >> <owl:Class rdf:ID="Perform"> >> <rdfs:subClassOf rdf:resource="#ControlConstruct"/> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#process"/> >> <owl:cardinality >> rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </owl:Class> >> >> <owl:Property rdf:ID="process"> >> <rdfs:domain rdf:resource="#Perform"/> >> <rdfs:range rdf:resource="#Process"/> >> </owl:Property> >> >> <owl:Property rdf:ID="hasBinding"> >> <rdfs:domain rdf:resource="#Perform"/> >> <rdfs:range rdf:resource="#Binding"/> >> </owl:Property> >> >> >> Comments welcome. >> >> Regards, David >> >> >> David Martin wrote: >> >>> Greetings -- >>> In an earlier discussion on this list, I had proposed 3 new "control >>> constructs" for the OWL-S process model: "Invoke", "Accept", "Select". >>> (See public-sws-thread >>> [OWL-S]: Proposal for 3 new control constructs] >>> here: >>> http://lists.w3.org/Archives/Public/public-sws-ig/2004Jan/0110.html >>> ) >>> In our recent OWL-S telecons, we have reached a consensus *not* to >>> explicitly distinguish between the "invoke" and "accept" of a Web >>> service, at least, not in the way that I proposed earlier. Also, we >>> are putting aside the "select" construct. >>> Instead of distinct "invoke" and "accept" constructs, this message >>> proposes a single new construct, which indicates the "use of" or a >>> "reference to" a Web service that's defined elsewhere. This is in >>> accord with the recognition that we want to maintain a highest (most >>> abstract) level of process description, which states what needs to >>> get done when, but tolerates minimal commitments about where each >>> thing needs to get done, and by whom. (That is, we want to allow it >>> to be left unspecified as to which subprocesses are executed by which >>> participants/roles, and by which distinct enactment engines.) >>> This is *not* to say that these things will never be specified - just >>> that we want to allow a level of description where they may be >>> absent. In fact, we are also thinking in terms of a second, lower, >>> more detailed, style of description (a "middle level", in my mind) in >>> which these kinds of details are added in. But more about that in >>> other messages. >>> Here's an initial strawman proposal for this new construct, which >>> indicates the use of a Web service that's defined elsewhere. It's >>> syntactically about the same as the "invoke" construct proposed >>> earlier -- but it doesn't carry the same implications about what's >>> going to happen where. >>> We've been calling one of these things a "Reference" in >>> conversations, but to me that's not really very helpful, so I'm >>> proposing "Use". Other suggestions are welcome. ("Employ", "enact", >>> "execute", "do", "run", "apply" ?) >>> USE >>> --- >>> The use construct, used something like this: >>> <Use> >>> <process resource="http://..../SomeProcess.owl"> >>> </Use> >>> simply means "The indicated process, defined elsewhere, is used at >>> this point (within a larger process)". For simplicity, I'm assuming >>> here and throughout this message that the specified process model is >>> an atomic process. >>> I also propose a conventional means of binding arguments, that happens >>> inside this construct. Like this: >>> <Use> >>> <process resource="http://..../SomeProcess.owl"> >>> <binding> >>> <formalInput resource="http://..../SomeProcess.owl#Input1"/> >>> <actualInput resource="#Person1"/> >>> </binding> >>> <binding> >>> <formalOutput resource="http://..../SomeProcess.owl#Output1"/> >>> <actualOutput resource="#MyVar43"/> >>> </binding> >>> ... other bindings ... >>> </Use> >>> The "formalInput" and "formalOutput" properties have values that are >>> instances of process:Input or process:Output, respectively. >>> The "actualInput" property has values that are either variables or >>> instances of the type associated with the formalInput. >>> The "actualOutput" property has values that are variables. >>> (Note: variables can include, but are not limited to, inputs and >>> outputs associated with the larger, composite process. The details >>> of variables are being discussed in other e-mail threads.) >>> I will send the OWL declarations, which would go into Process.owl, in >>> a later message. >>> Comments welcome. >>> Thanks, David >> >> >
Received on Thursday, 19 February 2004 00:18:13 UTC