- From: Daniel Elenius <elenius@csl.sri.com>
- Date: Thu, 23 Jun 2005 09:33:39 -0700
- To: public-sws-ig@w3.org
David Martin wrote: > Thanks again. > > BTW, I edited your comments just slightly for formatting. I also > changed this wording: > > For this, we need a canonical way to serialize OWL instances, which we > don't have. > > to this: > > (Note: for this > case to be fully general, further work may be needed to establish > conventions for serializing arbitrary OWL instances). > Always the cautious guy ;) > because I felt your original was somewhat overstated. For one thing, > I don't think it's very hard to get to a set of conventions that would > meet the need. That may be, and maybe my "overstated" comment may make it happen faster. > Also, between now and the time that such a set of conventions is > widely adopted, I could imagine individual Web service providers > specifying their conventions (so you wouldn't have a canonical > solution, but still you'd have a somewhat workable one). If different providers have different conventions, we lose much of the point of doing SWSs in the first place, IMHO. Daniel > > - David > > Daniel Elenius wrote: > >> Following up on the last telecon, the attached version of the 1.2 >> grounding encodes the rules on how to use owlsParameter, >> xsltTransformationString, etc. >> Nothing really new here, just formally specifying what was already in >> the comments in Grounding.owl. All changes are below the definition of >> WsdlMessageMap. >> >> Cheers, >> Daniel >> >> >> >> >> ------------------------------------------------------------------------ >> >> <?xml version='1.0' encoding='ISO-8859-1'?> >> >> <!-- >> This document uses XML entities as abbreviations for URIs. >> --> >> >> <!DOCTYPE uridef[ >> <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns"> >> <!--Added for shadow list vocab--> >> <!ENTITY shadow-rdf >> "http://www.daml.org/services/owl-s/1.2/generic/ObjectList.owl"> >> <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema"> >> <!ENTITY owl "http://www.w3.org/2002/07/owl"> >> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema"> >> <!ENTITY service "http://www.daml.org/services/owl-s/1.2/Service.owl"> >> <!ENTITY process "http://www.daml.org/services/owl-s/1.2/Process.owl"> >> <!ENTITY DEFAULT >> "http://www.daml.org/services/owl-s/1.2/Grounding.owl"> >> ]> >> >> >> <rdf:RDF >> xmlns:rdf= "&rdf;#" >> xmlns:shadow-rdf = "&shadow-rdf;#" >> xmlns:rdfs= "&rdfs;#" >> xmlns:owl = "&owl;#" >> xmlns:service= "&service;#" >> xmlns:process= "&process;#" >> xmlns= "&DEFAULT;#" >> xml:base= "&DEFAULT;"> >> >> <owl:Ontology rdf:about=""> >> <owl:versionInfo> >> $Id: Grounding.owl,v 1.36 2005/05/18 21:45:19 martin Exp $ >> </owl:versionInfo> >> <rdfs:comment> >> Upper-level OWL ontology for Groundings that employ WSDL. >> Part of the OWL-S ontology; see http://www.daml.org/services/. >> >> This version is intended for use with WSDL 1.1. The OWL-S >> Coalition plans to produce a future version for use with WSDL 2.0, >> when it has been finalized (or nearly so). >> >> Note that other approaches to grounding may be accommodated >> within the OWL-S framework. This is the only approach produced >> to date by the OWL-S Coalition. >> >> For notes on version history, see >> http://www.daml.org/services/owl-s/1.2/status.html. </rdfs:comment> >> <owl:imports> >> <owl:Ontology rdf:about="&process;"/> >> </owl:imports> >> </owl:Ontology> >> >> >> <!--###################################################### >> WsdlGrounding >> ######################################################--> >> >> <owl:Class rdf:ID="WsdlGrounding"> >> <rdfs:comment> >> A WsdlGrounding is just a collection of WsdlAtomicProcessGrounding >> instances, one for each atomic process in the process model. >> </rdfs:comment> >> <rdfs:subClassOf rdf:resource="&service;#ServiceGrounding"/> >> </owl:Class> >> >> <owl:ObjectProperty rdf:ID="hasAtomicProcessGrounding"> >> <rdfs:domain rdf:resource="#WsdlGrounding"/> >> <rdfs:range rdf:resource="#WsdlAtomicProcessGrounding"/> >> </owl:ObjectProperty> >> >> >> <!--###################################################### >> WsdlAtomicProcessGrounding >> ######################################################--> >> >> <owl:Class rdf:ID="WsdlAtomicProcessGrounding"> >> <rdfs:comment> >> A class that relates elements of a OWL-S atomic process to a >> WSDL specification. >> </rdfs:comment> >> <rdfs:comment> >> Each instance of WsdlAtomicProcessGrounding must have exactly one >> value for owlsProcess and exactly one for wsdlOperation, which >> sets up >> a one-to-one correspondence between an atomic process and a WSDL >> operation. >> >> In addition, for each message part of the relevant WSDL input >> message, >> there must be exactly one value of wsdlInput. For each output of >> the >> atomic process, there must be exactly one value of wsdlOutput. These >> property instances show the correspondences between OWL-S >> inputs/outputs and WSDL message parts. In addition, single >> values are >> recommended (but not required) for wsdlInputMessage and >> wsdlOutputMessage. >> >> Note that the value of wsdlOperation may or may not uniquely >> identify >> a particular WSDL port with which to interact. If there are >> multiple >> such ports offering the specified operation, an OWL-S enactment >> engine >> is free to choose any of these ports. If it is desired to further >> constrain the choice of ports, a WsdlAtomicProcessGrounding may >> do so >> by specifying any number of values for wsdlService and/or wsdlPort. >> </rdfs:comment> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#owlsProcess"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <!-- owlsProcess --> >> >> <owl:ObjectProperty rdf:ID="owlsProcess"> >> <rdfs:comment> >> The atomic process to which this grounding applies. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&process;#AtomicProcess"/> >> </owl:ObjectProperty> >> <owl:FunctionalProperty rdf:about="#owlsProcess"/> >> >> <!-- wsdlOperation --> >> <owl:ObjectProperty rdf:ID="wsdlOperation"> >> <rdfs:comment> >> A WSDL operation to which the atomic process >> (referenced by owlsProcess) corresponds. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="#WsdlOperationRef"/> >> </owl:ObjectProperty> >> >> <!-- wsdlService --> >> >> <owl:DatatypeProperty rdf:ID="wsdlService"> >> <rdfs:comment> >> A URI for a WSDL Service that provides the operation to which >> this atomic process is grounded. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <!-- wsdlPort --> >> >> <owl:DatatypeProperty rdf:ID="wsdlPort"> >> <rdfs:comment> >> A URI for a WSDL Port that provides the operation to which >> this atomic process is grounded. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> <!-- wsdlInputMessage --> >> >> <owl:DatatypeProperty rdf:ID="wsdlInputMessage"> >> <rdfs:comment> >> A URI for the WSDL input message element corresponding >> to the inputs of the atomic process. >> </rdfs:comment> >> <rdf:type rdf:resource="&owl;#FunctionalProperty"/> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <!-- wsdlInput --> >> >> <owl:ObjectProperty rdf:ID="wsdlInput"> >> <rdfs:comment> >> There should be one instance of this property for each >> message part of the WSDL input message. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="#WsdlInputMessageMap"/> >> </owl:ObjectProperty> >> >> <!-- wsdlOutputMessage --> >> >> <owl:DatatypeProperty rdf:ID="wsdlOutputMessage"> >> <rdfs:comment> >> A URI for the WSDL message element corresponding >> to the outputs of the atomic process. >> </rdfs:comment> >> <rdf:type rdf:resource="&owl;#FunctionalProperty"/> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <!-- wsdlOutput --> >> <owl:ObjectProperty rdf:ID="wsdlOutput"> >> <rdfs:comment> >> There should be one instance of this property for each >> output of the atomic process. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="#WsdlOutputMessageMap"/> >> </owl:ObjectProperty> >> >> <!-- wsdlVersion --> >> >> <owl:DatatypeProperty rdf:ID="wsdlVersion"> >> <rdfs:comment> >> A URI indicating the version of WSDL being used. >> </rdfs:comment> >> <rdf:type rdf:resource="&owl;#FunctionalProperty"/> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <!-- wsdlDocument --> >> >> <owl:DatatypeProperty rdf:ID="wsdlDocument"> >> <rdfs:comment> >> A URI indicating a WSDL document to >> which this grounding refers. This isn't >> essential; primarily for convenience as documentation. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> >> <!--###################################################### >> WsdlOperationRef >> ######################################################--> >> >> <owl:Class rdf:ID="WsdlOperationRef"> >> <rdfs:comment> >> This class provides a unique specification of a WSDL operation. >> WSDL 1.1, on which this version of the grounding is based, does >> not have a way to uniquely identify an operation with a single >> URI. Uniqueness is achieved using a pair (portType, operation). >> </rdfs:comment> >> </owl:Class> >> >> <owl:DatatypeProperty rdf:ID="portType"> >> <rdfs:domain rdf:resource="#WsdlOperationRef" /> >> <rdfs:range rdf:resource="&xsd;#anyURI" /> >> </owl:DatatypeProperty> >> >> <owl:DatatypeProperty rdf:ID="operation"> >> <rdfs:domain rdf:resource="#WsdlOperationRef"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <owl:Class rdf:about="#WsdlOperationRef"> >> <rdfs:comment> >> Restricting the cardinality of portType to one >> </rdfs:comment> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#portType"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <owl:Class rdf:about="#WsdlOperationRef"> >> <rdfs:comment> >> Restricting the cardinality of operation to one >> </rdfs:comment> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#operation"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> >> <!--###################################################### >> WsdlMessageMap, WsdlInputMessageMap, WsdlOutputMessageMap >> >> To get the gist of these classes, read the comments for >> WsdlInputMessageMap and WsdlOutputMessageMap. >> ######################################################--> >> >> <owl:Class rdf:ID="WsdlMessageMap"> >> <rdfs:comment> >> Superclass for WsdlInputMessageMap and WsdlOutputMessageMap. >> </rdfs:comment> >> </owl:Class> >> >> <!-- owlsParameter --> >> >> <owl:ObjectProperty rdf:ID="owlsParameter"> >> <rdfs:comment> >> An input or output property of an atomic process. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlMessageMap"/> >> <rdfs:range rdf:resource="&process;#Parameter"/> >> </owl:ObjectProperty> >> >> <!-- wsdlMessagePart --> >> >> <owl:DatatypeProperty rdf:ID="wsdlMessagePart"> >> <rdfs:comment> >> A URI for a WSDL message part element. >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlMessageMap"/> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <owl:DatatypeProperty rdf:ID="xsltTransformation"> >> <rdfs:comment> >> XSLT Tranformation to transform OWL-S parameters (inputs and >> outputs) to and from WSDL messages. This property exists mainly >> for declaring >> a cardinality restriction, and should not be instantiated >> directly. Instantiate xsltTransformationString or >> xsltTransformationURI. >> (Ranges are specified with the sub properties.) >> </rdfs:comment> >> <rdfs:domain rdf:resource="#WsdlMessageMap"/> >> </owl:DatatypeProperty> >> >> <owl:DatatypeProperty rdf:ID="xsltTransformationString"> >> <rdfs:subPropertyOf rdf:resource="#xsltTransformation"/> >> <rdfs:comment> >> A string giving an XSLT Tranformation. >> </rdfs:comment> >> <rdfs:range rdf:resource="&xsd;#string"/> >> </owl:DatatypeProperty> >> >> <owl:DatatypeProperty rdf:ID="xsltTransformationURI"> >> <rdfs:subPropertyOf rdf:resource="#xsltTransformation"/> >> <rdfs:comment> >> A URI for an XSLT Tranformation. >> </rdfs:comment> >> <rdfs:range rdf:resource="&xsd;#anyURI"/> >> </owl:DatatypeProperty> >> >> <!-- Input Message Maps >> >> The purpose of a WsdlInputMessageMap is to show how to derive the >> WSDL input >> message parts from the OWL-S Parameter values. There should be one >> WsdlInputMessageMap >> for each WSDL input message part. >> >> There are two different kinds of input message maps: >> >> DirectInputMessageMap - This is used when we have a 1-1 mapping between >> Inputs in the AtomicProcess and WSDL message parts. There are two cases: >> (1) The parameterType of the Input is an OWL class. The OWL class is >> used as the message part type in the WSDL document. >> For this, we need a canonical way to serialize OWL instances, which >> we don't have. >> (2) The parameterType is an XSD simple type, and the WSDL message >> part has the >> same type. >> >> XSLTInputMessageMap - This is used when the the parameterType and the >> WSDL message part type is not the same. The WSDL type can be either >> simple or complex. >> In this case, a WSDL message part can be derived from multiple Inputs. >> --> >> >> <owl:Class rdf:ID="WsdlInputMessageMap"> >> <rdfs:subClassOf rdf:resource="#WsdlMessageMap"/> >> <owl:unionOf rdf:parseType="Collection"> >> <owl:Class rdf:about="#DirectInputMessageMap"/> >> <owl:Class rdf:about="#XSLTInputMessageMap"/> >> </owl:unionOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#wsdlMessagePart"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <owl:Class rdf:ID="DirectInputMessageMap"> >> <rdfs:subClassOf rdf:resource="#WsdlInputMessageMap"/> >> <owl:disjointWith rdf:resource="#XSLTInputMessageMap"/> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#owlsParameter"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#owlsParameter"/> >> <owl:allValuesFrom rdf:resource="&process;#Input"/> >> </owl:Restriction> >> </rdfs:subClassOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#xsltTransformation"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">0</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <owl:Class rdf:ID="XSLTInputMessageMap"> >> <rdfs:subClassOf rdf:resource="#WsdlInputMessageMap"/> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#owlsParameter"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">0</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#xsltTransformation"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <!-- Output Message Maps >> >> The purpose of WsdlOutputMessageMap is to show how to derive OWL-S >> Parameter values >> from the WSDL output message parts. There should be one >> WsdlOutputMessageMap for >> each Output of the corresponding AtomicProcess. >> >> There are two kinds of output message maps, similarly to input >> message maps. >> >> DirectOutputMessageMap - This is used when we have a 1-1 mapping between >> WSDL message parts and Outputs in the Atomic Process. There are two >> cases: >> (1) The parameterType of the Output is an OWL class. The OWL class is >> used as the message part type in the WSDL document. >> For this, we need a canonical way to serialize OWL instances, which >> we don't have. >> (2) The parameterType is an XSD simple type, and the WSDL message >> part has the >> same type. >> >> XSLTOutputMessageMap - This is used when the the parameterType and >> the WSDL message part type is not the same. The WSDL type can be >> either simple or complex. >> In this case, an OWL Output can be derived from multiple WSDL message >> parts. >> --> >> >> <owl:Class rdf:ID="WsdlOutputMessageMap"> >> <rdfs:subClassOf rdf:resource="#WsdlMessageMap"/> >> <owl:unionOf rdf:parseType="Collection"> >> <owl:Class rdf:about="#DirectOutputMessageMap"/> >> <owl:Class rdf:about="#XSLTOutputMessageMap"/> >> </owl:unionOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#owlsParameter"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#owlsParameter"/> >> <owl:allValuesFrom rdf:resource="&process;#Output"/> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <owl:Class rdf:ID="DirectOutputMessageMap"> >> <rdfs:subClassOf rdf:resource="#WsdlOutputMessageMap"/> >> <owl:disjointWith rdf:resource="#XSLTOutputMessageMap"/> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#wsdlMessagePart"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#xsltTransformation"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">0</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> <owl:Class rdf:ID="XSLTOutputMessageMap"> >> <rdfs:subClassOf rdf:resource="#WsdlOutputMessageMap"/> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#wsdlMessagePart"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">0</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> <rdfs:subClassOf> >> <owl:Restriction> >> <owl:onProperty rdf:resource="#xsltTransformation"/> >> <owl:cardinality >> rdf:datatype="&xsd;#nonNegativeInteger">1</owl:cardinality> >> </owl:Restriction> >> </rdfs:subClassOf> >> </owl:Class> >> >> </rdf:RDF> >> >> >>
Received on Thursday, 23 June 2005 16:33:48 UTC