W3C home > Mailing lists > Public > www-ws-desc@w3.org > April 2005

RE: Contradictions regarding transitivity of wsdl:import

From: David Booth <dbooth@w3.org>
Date: Fri, 15 Apr 2005 20:21:42 -0400
To: Arthur Ryman <ryman@ca.ibm.com>, Martin Gudgin <mgudgin@microsoft.com>
Cc: www-ws-desc@w3.org
Message-Id: <1113610902.13968.395.camel@nc6000.w3.org>

Arthur & Gudge,

It sounds like you are saying that:

1. The merging of components *is* transitive with import (as I had
concluded).  So if A imports B imports C, and I'm analyzing WSDL
document A, then the components for A include all the components from B
and C.  HOWEVER . . .

2. The visibility of components is *not* transitive with import.  And
(as Arthur explained to me offline) the visibility of import is
controlled at the XML Infoset level -- not at the component level -- by
section 4.2.

If I'm now understanding you properly, I would observe:

1. Section 4.2 really needs clarification.  It isn't at all clear (to me
at least) how the visibility of components is being restricted for
import, especially given that this visibility is not controlled at the
component model level.  In fact, it seems very odd to me to talk about
controlling the visibility of *components* at the XML Infoset level,
since components don't exist at the XML Infoset level.

2. It seems bizarre to me that the {interfaces} property of A would have
components from C that are not visible to A. The effect of having all of
B's and C's components in A's component model (even though A does not
import C) is that when I read a sentence in another part of the spec,
such as the following from sec 2.9.2.2 on bindings:
[[
The interface attribute information item refers, by QName, to an
Interface component.
]]
I would (naively) assume that if an Interface component exists in the
{interfaces} property, I can refer to it by its QName.  It is not at all
obvious that another rule in another corner of the spec (i.e. sec 4.2)
is supposed to take precedence and limit the visibility of the QName
reference in sec 2.9.2.2 to only the directly imported *subset* of those
Interface components in my {interfaces} property.

I think it would be considerably clearer if the component model for a
"WSDL 2.0 document"*** (see below) would consist of all and *only* those
components that are supposed to be visible to that WSDL 2.0 document
(which in the A-imports-B-imports-C example would include components
that originated from B but NOT those that originated from C).  Is there
some reason why you think this approach would be inadequate?

*** By "WSDL 2.0 document" I specifically mean a description element
information item that conforms to the WSDL 2.0 specification -- I do NOT
mean a single physical document.


On Fri, 2005-04-15 at 11:42, Arthur Ryman wrote:
> David,
> 
> I disagree. Imports are not for the same namespace. All components get
> added to the component model, not just those in the same namespace.
> The <wsdl:import> statement is just an assertion that the definitions
> in the current document refer to some other namespace. 
> 
> 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/
> 
> 
> David Booth <dbooth@w3.org>
> Sent by: www-ws-desc-request@w3.org
> 
> 04/14/2005 09:36 PM
>                To
> Martin Gudgin
> <mgudgin@microsoft.com>
>                cc
> www-ws-desc@w3.org
>           Subject
> RE:
> Contradictions
> regarding
> transitivity of
> wsdl:import
> 
> 
> 
> 
> 
> I think I've located the problem.  Sec 4.2 says:
> [[
> Components in directly imported descriptions are part of the component
> model of the importing description.
> ]]
> In the A-imports-B-imports-C example, if I'm determining what
> components
> A imports from B, "the importing description" in the above sentence
> would be A and the "directly imported descriptions" of A would be {B}.
> Substituting these into the sentence above yields:
> [[
> Components in {B} are part of the component model of the A.
> ]]
> which is *not* what we want, since the components in B clearly include
> components that originated from C (which would thus make import
> transitive), whereas we only want those components in B that
> *originated* from B (i.e., non-transitive).
> 
> I think 4.2 needs to be changed to say something like:
> [[
> Each component in the {interfaces}, {bindings} or {service} property
> of
> the imported document is added to the {interfaces}, {bindings} or
> {service} property of the importing document (respectively), if and
> only
> if the namespace part of the {name} property of that component is
> identical to the value of the namespace attribute information item of
> the import element information item.  In other words, only those
> components that are "in the namespace" that was specified in the
> namespace attribute information item of the import element information
> item are imported.
> ]]
> 
> The editors may be able to come up with a simpler (but still accurate)
> way of expressing that, but I think it captures the intended effect,
> of
> causing import be non-transitive.
> 
> -- 
> 
> David Booth
> W3C Fellow / Hewlett-Packard
> 
-- 

David Booth
W3C Fellow / Hewlett-Packard
Received on Saturday, 16 April 2005 00:21:43 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:35 GMT