- From: Bijan Parsia <bparsia@isr.umd.edu>
- Date: Sun, 8 Feb 2004 11:09:42 -0500
- To: public-sws-ig@w3.org
Hey folks, In WSDL 2.0, an operation is a message exchange pattern (MEP) instantiated to a set of specific message "types" for each place in the MEP (with a few other things). The types in question (intuitively) describe the content of the message (there's some ongoing wrangling about headers, but, let's ignore them for the moment ;)). At the moment, WSDL 2.0 only has built in support for XML Schema element declarations (as types of messages), and has non-normative support for DTDs and RELAX-NG. So, there are two issues here: 1) Whether to add, normative or not, support for "Semantic Web" type systems, e.g., OWL and RDFS 2) How these types should be used to describe messages. These correspond, roughly, to additions made to the {types} component (section 3 or appendix D) and the {message reference} component (section 2.4). (URIs for these sections; Section 2.4, Message Reference: http://www.w3.org/TR/wsdl20/#MessageReference_details Section 3, Types: http://www.w3.org/TR/wsdl20/#eii-types Appendix D, Examples of Specifications of Extension Elements for Alternative Schema Language Support: http://www.w3.org/TR/wsdl20/#other-schemalang ) Now, I want to put aside the question of normativity for the moment, mostly because I think there are a series of technical issues that I'd like to get a better handle on. First question: What to (current) semantic web services deployers and consumers *want*? For some sorts of services, e.g., query or inference services, it seems like the current proposal is sufficient. If you are passing in a OWL ontology and expecting to get back entailments, it makes sense to use an rdf:RDF element for the input and an rdf:RDF *element* for the output. If you want to use a different serialization (say, the owl presentation syntax, or the DIG xml syntax) then you still are passing elements. We might want to distinguish RDF/XML documents by their owl species (perhaps via mimetype), but, again, this seems to be solvable with the current system. Non XML serializations could be handled now by, for example, elements of simple type, e.g., <n3>:a :b _:c</n3>. (This might be used for services that covert between RDF/XML and N3.) However, in my OWL-S experience, people seem to want to describe the inputs and outputs (not necessarily the input *messages* and output* messages) of a services with OWL Classes. I've become a little confused, in general, as to what that *means*, especially for OWL that describes non-computational entities, but ok, be that as it may. No, wait, don't be that as it may. The issue is that in WSDL, the types describe the messages, and do we want to say that the first input message to a services is a wordnet:Person? Or do we want to leave messages (at the WSDL level) described by elements (or simpleTypes) and layer OWL individuals and classes above that (something similar to how OWL-S does now)? Second question: Do we want to deal with the "Decker question"? That is, what information *must* be passed, and what information *must not* be passed between services. For example, if I claim that a services requires a Parent as input, and Parents are Persons, and Persons all haveParents, how much of the ancestory tree must I pass? (It could get quite large!) It really depends on the service. Similarly, knowing that someone is a Parent means that you know that he or she has at least one child. For some services, you might not need to know anything more about the children, for others, the actually number of children is critical, and yet for others, the number and names and perhaps other information is critical. In some distributed systems, this might not be quite a problem. E.g., in a linda/tuplespace like system, there information may be all shared (though, still, you might want to know what information a service will examine *before* you invoke it). In a chatty agent setting, you might expect the inital message to merely start the conversation, and futher information to be requested on demand (that still leaves the you might want to know in advance what will be required, either for efficiency or privacy). It would be nice if we had some means of specifying the information that must be communicated. Designing such a means is definitely out of scope of the WDSL group, at least for this go around. It might be right for some Query group. If, however, what we're passing in messages is results of queries (for example), then it would seem that the message's type *isn't* naturally an OWL Class. At least not the obvious OWL class of "Person". ********* The simplest proposal that might not work is to allow for OWL Classes (or rdfs, whatever) to be exposed in the Types section as a series of URIs (do we need non class individuals or properties? We can always use a nominal singleton class for either, I suppose, though, for the latter, that'd automatically shove you in owl full), and introduce an attribute that refers to them. What gets passed over the wire, in a message, is, by default, the identifier of relevant individual who is a member of the appropriate class. There is some care needed to identify by which KB/ontology this individual is known to be of that class (or, for example, an RDFS agent might send a cat where the disjoint class of dog was required because it couldn't detect the contradiction). Thoughts, comments, data points? Screams of pain still welcome. Cheers, Bijan Parsia.
Received on Sunday, 8 February 2004 11:09:46 UTC