- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Thu, 21 Sep 2006 07:31:35 -0400
- To: www-ws-desc@w3.org
- Message-ID: <OF8D3706CF.259FE2F3-ON852571F0.003A8553-852571F0.003F5129@ca.ibm.com>
Recall that as implementors were working with the extensions in Part 2, the meaning of the word REQUIRED caused some confusion. The problem was that since extensions are themselves optional, what did it mean for an extension to contain a REQUIRED property? The answer that everyone agrees with is that you have to state up front what extensions are in effect before you can interpret the word REQUIRED. Therefore when reading an extension spec, you interpret REQUIRED to mean that the property is REQUIRED if and only if the extension is in effect. Implementors further noticed that some properties only made sense if other extensions or properties or property values were present. This led to the idea that extensions should explicitly specify co-occurence contraints. For example, the SOAP binding make use of the HTTP binding, but the HTTP properties should only be present if the SOAP binding specifies a transport of HTTP. This type of property should be marked as OPTIONAL and the extensions specification should add constraints that define when it is required. Furthermore, it was realized that we need to allow one extension to override the semantics of another extension. For example, one extension may demote a REQUIRED property in one extension to OPTIONAL status. This is fine as long as the combined set of extensions in effect are mutually consistent. I therefore proposed that we spell these considerations out explicitly and I proposed text [1]. We discussed this at length in the July 20 telecon [2]. I've update the proposed text below, but I'd like to resolve one additional terminology issue. One of the issues that came up was my use of the terms "component model" and "component model instance". Glen felt these terms were used incorrectly. He felt that a "component model" was the set of components that were created from a WSDL document, i.e. that Glen's model is what I was calling an instance. I've thought about this and would like to defend my use of the terms. I think we should be using the term "model" in the same sense as it is used by OMG, e.g. in Model-Driven Development, or Unified Modelling Language (UML). In UML one creates "models" of systems, e.g. by drawing class diagrams. The correspondence with WSDL is that a component spec is like a class diagram. Our core spec contains a set of component specs and it therefore like a UML class model. In fact our primer contains an infoset diagram [3] that looks very much like a UML class diagram. I therefore propose that we adopt the meaning of "component model" to be the specification and not the set of components from a given WSDL document. If we agree with the use of "component model" to mean the core specification as defined by Part 1, and we agree that in order to interpret REQUIRED for extensions we need to state what extensions are in effect, then I would like to propose that we adopt the definition of "extended component model" to mean the core component model PLUS the set of extensions that are in effect. Here's the updated text: 6.4 Validity of Extended Component Model Instances As stated above, WSDL 2.0 provides a component model extensibility mechanism which allows new properties and components to be specified. An extension specification may also add new constraints or modify existing ones. The validity of a component model instance is therefore dependent on the set of extension specifications that it is asserted to conform to. An extended component model is the component model as defined by the WSDL 2.0 Core Language specification together with a set of extension specifications that are in effect. A component model instance is valid with respect to an extended component model if it conforms to the core language and the set of extension specifications that are in effect, with the provision that any extension specification may explicitly override any constraint in another specification. 6.4.1 Semantics of REQUIRED Properties in Extended Component Models When an extension specification defines a property to be REQUIRED, this is to be understood that the property is only REQUIRED the extension specification is in effect. An extension specification may override the REQUIRED constraint on any property defined in another specification and make it OPTIONAL. Thus, a property is only REQUIRED when the following conditions hold: * the extension specification is in effect * no other extension specification in the extension component model overrides this constraint An extension specification may also define co-occurence constraints that further qualify the conditions under which an OPTIONAL property is required. [1] http://lists.w3.org/Archives/Public/www-ws-desc/2006Jul/0076.html [2] http://www.w3.org/2006/07/20-ws-desc-minutes.html#action03 [3] http://www.w3.org/TR/2006/CR-wsdl20-primer-20060327/#wsdl-infoset-diagram Arthur Ryman, IBM Software Group, Rational Division blog: http://ryman.eclipsedevelopersjournal.com/ phone: +1-905-413-3077, TL 969-3077 assistant: +1-905-413-2411, TL 969-2411 fax: +1-905-413-4920, TL 969-4920 mobile: +1-416-939-5063, text: 4169395063@fido.ca
Received on Thursday, 21 September 2006 11:31:52 UTC