[w3c sml] Bug 4639 - cycle proposal recommendation

Attached is the latest (and hopefully the last!) draft of my working
document. I've spent lots of time on this and thought about each
proposal and have arrived at what I consider the best option - which is,
in fact, very close to what we started out with in the original
submission. (Somehow, that's comforting.) 

I was not around when the discussion of alternatives was started and so
the following comments may not apply but I was trying to think of why we
got sidetracked from our original cycle 'algorithm' after we changed
"document" to "element". (In other words, why did I spend so much time
on this only to come up a solution that we started with?) I think that
maybe the discussion of the fact that an SML reference does not point to
itself was a red herring and led us to think we needed alternative cycle
definitions. There was discussion about the fact that, now that we can't
start with documents as nodes, how do we identify the elements that make
up the cycle, specifically the 1st element. I think the answer to this
is that we don't need to start the graph with the elements. The key is
that the directed graph should be created first by determining the arcs
(SML references of a given type and derived types) and only then can the
nodes of the graph be discovered (the targets of this set of
references). Then cycle detection can commence.

At any rate, I added my recommended spec changes to the bug so you can
read it there. If you're interested in my background notes, you can read
the attached working document. The doc also contains my recommendation.

http://www.w3.org/Bugs/Public/show_bug.cgi?id=4639

This proposal will also cover bugs 5108 and 4984.

The only thing left to point out is the following (and, based on our
previous discussions, I think we just live with this). "sml:ref" is
allowed only in the instance document to indicate that that the element
is a reference (no matter what is defined in the schema). "sml:acyclic"
is only required when the reference cannot have cycles and must appear
in a complexType in a schema document. Instance document authors must
remember to add sml:ref to all instance SML references whereas the
sml:acyclic attribute is defined in the schema.

--
ginny

Received on Sunday, 4 November 2007 20:13:21 UTC