Request For Clarification
- This is an issue that's come up a couple of times[1,2,3] over the last
two or three weeks, each time there's been no conclusive outcome, I
was hoping that Andrew and/or Henrik could voice their opinions.
Basically the issue is, when doing section 5 encoding with section 7
RPC, is there any defined order of the struct that is the response,
and the other independent serializations within the body. Or
alternatively can you rely on the first struct in the body being the
request / response ?
section 5, point 11, states
Syntactically, an element may be "independent" or "embedded." An
independent element is any element appearing at the top level of a
serialization. All others are embedded elements.
However its not clear exactly where the "top level of a serialization"
is. . The current implementations that i've looked at all have the
independent elements within the body, after the request/response
- Noah writes:
>>> What I think needs clarification is in section 7.1  where it
>>> should say that the request as well as the response must be
>>> serialized as the root object of the graph if encoded according to
>>> section 5.
>I agree. Would it make sense to go a bit further and establish rules
>along the lines of:
>* (Chap 5) If no multi-refs are referenced, use of the root attribute
>optional. The lexical root of the tree is deemed a root of the objectIsn't it only when there is no "true root" of a serialization (for
example multiple interlinked multi-refs) that the root attribute may
have to be used to disambiguate the true root of an object graph? Also,
this might be special to object graphs as it wouldn't cause any problems
for an RDF graph, for example.
I agree that in the simple case of no multi-refs, the lexical root of
the tree is the root of the object graph as well.
>* (Chap 7) As you suggest: RPC request/response must be the root ofthe
>graph, and there can be only one root of the serialization (else fault)yup
>* (Chap 5 or 7, I'm not sure) Either in all uses of the encoding (chap5)
>or when used specifically for RPC (Chap 7 ...which would BTW apply tomulti-ref
>other encodings too...a good thing I think) "When references to
>objects are present an a serialization, the ROOT attribute must be usedto
>establish the root of the object graph." A concern I have about thisis
>that there might be problems when doing partial deserializations...youIf my statement above is true then it seems that this should be
>might be deserializing a tree, for my header it might only be a subtree
>(for graphs in which that makes sense), which one(s) need a ROOT
mentioned in section 7 as it implies object graphs. However, it seems
that the MUST requirement for use of the "root" attribute only applies
in the case of multiple, interlinked multi-refs. The graph may be
unambiguous even with multi-refs involved which seems to call for a for
a MAY in those cases, no?
>What do you think?Henrik