- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Thu, 17 Mar 2005 07:25:23 -0500
- To: www-ws-desc@w3.org
- Message-ID: <OF42D83416.686814F6-ON85256FC7.000391F4-85256FC7.00443B63@ca.ibm.com>
My only remaining issue in LC105 concerns the interaction between extensions and equivalence of top-level components. The problem is that a WSDL document may include or import two definitions of the same top level component (interface, binding, service). We need a simple way to check if the two definitions are equivalent. Consider the following two documents: interface1.wsdl: <description ...> <interface name="MyInterface".../> </description interface2.wsdl: <description ..x:extension-attribute="value".> <x:extension-element../> <interface name="MyInterface".../> </description Suppose the definition of MyInterface is identical in both documents. Are they equivalent? The spec seems to allow for the possibility that they are not equivalent because x:extension-attribute or <x:extension-element> might alter the component model in interface2.wsdl. This means that we have to in effect construct the component models and execute the semantics of the extensions and then compare the component models in order to see if they are equivalent. This seems complex and a lot of work. It would be desirable if we could make some restrictions so that it was easy to compare the documents for equivalence without building the component models. I propose the following: 1. A top level extension attribute or element MAY add only top level extension components, i.e. it MAY NOT add top level attributes (since their scope gets "lost" when we combine documents), and it MAY NOT directly affect other top level components. 2. A nested extension attribute or element MAY add only extension components or properties to its parent component, and it MAY NOT directly affect other sibling nested components. 3. Components are equivalent if their value properties are equal, and their component reference properties either a) refer to equivalent components in the case of children components, or b) refer to components that have the same names in the case of non-children components. 1 and 2 clarify and restrict the scope of extension attributes and elements. This is probably a change in the semantics of the current spec, but there is very little written about extensions so it is hard to tell what the intension was. 3 simplifies the computation of component equivalence by making it depend only of the definition of components within a document. The children of a component are always in the same document, but the other referenced components may be in other documents. If the other referenced components are equivalent then they have the same names. If they are not equivalent, then we have an invalid component model anyway. Here name means their URIs which takes into account their nested context and uniquely identifies them. This doesn't change the semantics of the current spec. Arthur Ryman, Rational Desktop Tools Development 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 intranet: http://labweb.torolab.ibm.com/DRY6/
Received on Thursday, 17 March 2005 12:25:55 UTC