- From: Jacek Kopecky <jacek@systinet.com>
- Date: Thu, 9 May 2002 16:20:08 +0200 (CEST)
- To: Marc Hadley <marc.hadley@sun.com>
- cc: Henrik Frystyk Nielsen <henrikn@microsoft.com>, <noah_mendelsohn@us.ibm.com>, Martin Gudgin <martin.gudgin@btconnect.com>, <xml-dist-app@w3.org>
Marc, I agree with the first part about encodingStyle, I disagree with many pieces of your second part. Let me rephrase the second part in my words (changed pieces marked with asterisks): * Roots and non-serialization-root top-level elements * =================================================== I think there is general agreement to the following: (i) Graph roots are graph nodes with no inbound edges. (ii) ids and refs are scoped to the envelope rather than the body or a particular header block. (iii) Cross-block (header->header, header->body, body->header) refs result in two otherwise separate graphs becoming a single graph. * (iv) The current encoding does not forbid top-level * non-serialization-root multi-refs, it just doesn't mandate them. * Developers new to SOAP 1.2 would be unlikely to produce software that * generated top-level non-serialization-root muti-refs, but migration * from existing SOAP 1.1 codebases may produce software that generates * top-level multi-refs. * (v) When using the RPC convention we need a way of identifying the EII * that represents the RPC struct. We can't use the notion of a graph root * identifying the RPC struct because of potential references to the RPC * struct EII (which would make it a non graph root). To satisfy (v) we have a couple of options: * (a) Implicit identification. Explicitly disallow "top level" * non-serialization-root multirefs. This will result in there being * only a single child EII in the body, that EII being the RPC struct. * [see below for why I don't think there is dependency between this and * any particular school of thought about encodingStyle] (b) Explicit identification. Introduce a means of identifying the EII that represents the RPC struct. There are a couple of ways that spring to mind that would allow us to do this: * 1. Some form of tagging - e.g. the SOAP 1.1 root attribute. This * requires a change to the data model to introduce the concept of * "serialization root" (not graph root as this is already implicit) so * that the encoding can generate suitable mark-up during serialisation * and that the RPC section can say that the RPC root is the only * serialization root in the Body. 2. Positional - e.g. first EII in the body is the RPC struct ======================================================= Why I believe there is no dependency between option a and any particular school of thought about encodingStyle: RPC says that the SOAP Body carries exactly one struct (or array) in the SOAP Data Model. (No box-carring.) Without top-level non-serialization-root elements in the Body, there can be only one element in a SOAP Data Model encoding, no matter the scoping of encodingStyle. Jacek Kopecky Senior Architect, Systinet (formerly Idoox) http://www.systinet.com/ On Wed, 8 May 2002, Marc Hadley wrote: > I'd like to summarise where we are in discussing root, top-level > multi-refs and encodingStyle to see if we have reached any kind of > useful conclusion. > > Scope of encodingStyle AII > ========================== > > There seems to a few schools of thought: > > (i) encodingStyle should operate something along the lines of xmlns or > xml:base. E.g. you can put it on the Envelope EII and it will apply to > the contents of the Body EII and all header blocks but not to the SOAP > envelope structures themselves. > > (ii) encodingStyle applies to descendents of the EII it is placed on. > E.g. you can put it on the Body EII and it applies to the contents of > the body (but not the Body EII itself). > > (iii) encodingStyle applies to the EII it is placed on and that EIIs > descendants. E.g. you couldn't place it on the Body EII, but you could > use it on child EIIs of the Body EII. > > An open question exists regarding encoding refs between EIIs scoped by > different values of encodingStyle. E.g. what does it mean to refer to an > EII in an RDF graph from an EII in the SOAP encoding ? > > > Roots and top-level multi-refs > ============================== > > I think there is general agreement to the following: > > (i) Graph roots are graph nodes with no inbound edges. > (ii) ids and refs are scoped to the envelope rather than the body or a > particular header block. > (iii) Cross-block (header->header, header->body, body->header) refs > result in two otherwise separate graphs becoming a single graph. > (iv) The current encoding does not forbid top-level multi-refs, it just > doesn't describe them. Developers new to SOAP 1.2 would be unlikely to > produce software that generated top-level muti-refs, but migration from > existing SOAP 1.1 codebases may produce software that generates > top-level multi-refs. > (v) When using the RPC convention we need a way of identifying the EII > that represents the RPC struct. We can't use the notion of a graph root > identifying the RPC struct because of potential cross-block references > (see (iii)) to the RPC struct EII (which would make it a non graph root). > > To satisfy (v) we have a couple of options: > > (a) Implicit identification. Explicitly disallow "top level" multirefs. > This will result in there being only a single child EII in the body, > that EII being the RPC struct. This seems to require encodingStyle > school of thought (see top of message) (a) or (b), i.e. that the > encodingStyle is in scope for the whole of the body, otherwise it would > be legal to have multiple separate graphs in the body, each with their > own encodingStyle. > > (b) Explicit identification. Introduce a means of identifying the EII > that represents the RPC struct. There are a couple of ways that spring > to mind that would allow us to do this: > > 1. Some form of tagging - e.g. the SOAP 1.1 root attribute. This > requires a change to the data model to introduce the concept of "RPC > root" (not graph root as this is already implicit) so that the encoding > can generate suitable mark-up during serialisation and that the "RPC > root" property is available in the graph following deserialisation. > > 2. Positional - e.g. first EII in the body is the RPC struct > > In summary I don't think we have yet come to any real conclusion, but > hopefully I have captured the options available and noted any > dependencies between them. > > Regards, > Marc. > >
Received on Thursday, 9 May 2002 10:20:13 UTC