- From: David Martin <martin@ai.sri.com>
- Date: Wed, 13 Aug 2003 22:08:12 -0700
- To: "'www-ws@w3.org'" <www-ws@w3.org>
Folks - With respect to our recent telecon discussions on the possibility of switching to a representation in which the process is an OWL instance (instead of a class) I've made a fledgling effort to summarize some of the arguments favoring processes-as-instances, and some favoring processes-as-classes. (I should say, however, that I've put more effort into processes-as-instances.) Perhaps this can provide a starting point for some further discussion. The file is being maintained here: http://www.ai.sri.com/daml/daml.org/services/daml-s/instances/arguments.txt and the contents are copied below. Note that both my and Massimo's versions of Process.daml for instances are also on this page: http://www.ai.sri.com/daml/daml.org/services/daml-s/instances and several other relevant files. - David PAC = Processes as Classes PAI = Processes as Instances PAC-1, PAC-2, etc. are arguments favoring PAC PAI-1, PAI-2, etc. are arguments favoring PAI ==================================================================== ==================================================================== PAI Pros ==================================================================== ==================================================================== PAI-1. It allows us to specify things much more tersely, and much more readably. I guess at the heart of my concern is a conviction that, with our current approach, our process model has absolutely no chance of being used by a mainstream developer to specify a Web service (even many of those who understand and support the use of ontologies) - I think it'll just be rejected outright, because it's so hard to think about and work with. I realize that even if it's not used by developers for "hand-editing", that doesn't rule out its use by tools - but I'd prefer to have something that can be used both ways if possible. See Appendix A for an example. ==================================================================== PAI-2. PAC forces us to use constructs that are questionable and/or not well-supported (e.g., PowerSet) ==================================================================== PAI-3. Seems to me it's more intuitive to think of processes as instances than as classes. Some of our current PAC constructs aren't well-defined, or were only recently cleaned up (e.g., "invocable") - evidence that PAC is hard to think about. For instance, there are several places where we incorrectly specified X as range, and then realized that we needed XPowerSet. I think specifying X is a natural tendency, because it's much easier to think about. Note: Have a look at Loops! (I don't recall the details but I think there are problems there.) ==================================================================== PAI-4. PAC forces us to use OWL FULL ???? But not sure about PAI ==================================================================== PAI-5. We don't have the luxury of time. If processes-as-instances helps us to move forward more quickly with the 1.0 release and examples, etc., that in itself has value. Note that the OWL-S process model may eventually be superseded by whatever SWSL comes up with. That makes me think we might as well take the current opportunity (OWL-S 1.0 release) to heed the comments from various quarters that the process model is too complex, and to follow Jim Hendler's initial advice: "get out something that provides a 80% solution, and can be quickly understood and put into use for relatively simple cases". ==================================================================== ==================================================================== PAC Pros ==================================================================== ==================================================================== PAC-1. Some feel that PAC has a certain elegance. ==================================================================== PAC-2. There's a hope that PAC will support greater use of DL--based reasoning - but this hasn't been demonstrated. ==================================================================== PAC-3. With PAC we get instances as "execution traces" (and their relationship to processes) "for free". ==================================================================== ==================================================================== ==================================================================== ==================================================================== Appendix A: Here's how the control structure for FullCongoBuy looks, in our current (class-based) approach, and then in my draft instance-based approach. Note that the current approach would actually be much longer and less comprehensible if it didn't make use of listOfInstancesOf, which is a controversial construct. BEFORE: <daml:Class rdf:ID="FullCongoBuy"> <rdfs:subClassOf rdf:resource="&process;#CompositeProcess"/> <rdfs:subClassOf> <daml:Restriction> <daml:onProperty rdf:resource="&process;#composedOf"/> <daml:toClass> <daml:Class> <daml:intersectionOf rdf:parseType="daml:collection"> <daml:Class rdf:about="&process;#Sequence"/> <daml:Restriction> <daml:onProperty rdf:resource="&process;#components"/> <daml:toClass> <daml:Class> <process:listOfInstancesOf rdf:parseType="daml:collection"> <daml:Class rdf:about="#LocateBook"/> <daml:Class rdf:about="#CongoBuyBook"/> </process:listOfInstancesOf> </daml:Class> </daml:toClass> </daml:Restriction> </daml:intersectionOf> </daml:Class> </daml:toClass> </daml:Restriction> </rdfs:subClassOf> </daml:Class> AFTER: <process:CompositeProcess rdf:ID="FullCongoBuy"> <process:composedOf> <process:Sequence> <process:components rdf:parseType="daml:collection"> <process:ProcessComponent rdf:about="#LocateBook"/> <process:ProcessComponent rdf:about="#CongoBuyBook"/> </process:components rdf:parseType="daml:collection"> </process:Sequence> </process:composedOf> <process:CompositeProcess/>
Received on Thursday, 14 August 2003 01:08:27 UTC