SOAP Encoding Data Model notes

Status

This is my work-in-progress understanding of what the SOAP
data model amounts to; it doesn't reflect the views of the
XML Protocol WG, and may quite likely not reflect the reality
of the SOAP 1.2 spec either. Consider it my 'learning about
SOAP in public' exercise...

It is couched in terms of candidate text for the 'soap data
model' bit of the spec, though I'm well aware it's too rough
to be considered for that.

DanBri's SOAP Data Model notes

The SOAP data model is a subset of the Directed Labeled Graph
(DLG) class of data models. As such it provides a simple type
system that is a generalization of common features found in
type systems in programming languages, databases and
semi-structured data. Edges in the graph are labelled with
simple ("locally scoped") string values or ("globally
scoped") URI-qualified names corresponding to the XML
namespace mechanism. Nodes in the graph are either simple
(datatyped) values or represent complex objects that are
described by an aggregation of relations (labeled edges) to
other values.

The SOAP data model abstracts away from the details of the
referencing mechanisms (such as XML ID/IDREF, URI, XML
element containment) that support any particular concrete
encoding of a SOAP data graph. SOAP data model instances,
regardless of encoding format, can be merged to aggregate the
encoded information by folding together the abstract
edge-labeled data graphs. Globally scoped (URI-named) edges
and nodes provide one of many strategies to support SOAP data
model merging.

The SOAP data model provides an abstract view of
XML-encodable data graphs, represented as an unordered set of
node-edge-node 3-tuples. XML serializations of the SOAP data
model are by necessity ordered. All concrete XML encodings of
the SOAP data model must therefore specify the significance
of document (Infoset) ordering with respect to the abstract
edge-labeled graph model. Within a compound value (complex
node), each relation to another node is potentially
distinguished by a role name, ordinal or both. In this latter
case, the edge name itselfs corresponds to a pair of ordinal
and role name. (@@hmm, not sure here...)

The SOAP data model is consistent with, but does not specify,
a number of mechanisms for describing a "DLG Schema"
corresponding to meta-information about node and edges types
in the SOAP data graph. UML, RDF and other representational
formalisms may provide additional information about the node
and edge types that occur in a SOAP data model instance. SOAP
does not mandate the use of any particular mechanism for
this. DLG-schema information can be used to support the
concrete serialization of SOAP data graphs into XML, for
example by providing information about cardinality or domain
and range constraints on (globally scoped) edge types.