RE: Question on the meaning of "permanently unassigned" in EXI spec 7.3.3

Hi Kevin,

Please find below my understanding of the specification.

A local value index is "permanently unassigned" means that the index will never be reused for any string indexed for the given local value partition.
To be more precise:

-          Global value indexes can be reassigned during the EXI stream processing. They go from 0 to valuePartitionCapacity-1 and then back to 0

-          Local value indexes always go up and are never reused for other strings
If we take this example:
<root>
                <A>V</A>
                <A>S</A>
                <A>V</A>
</root>
With a value partition capacity equal to 1, the table will look as follow:

1.       First A element is encoded, V is encoded literally and then indexed as (globalID, localID) = (0,0)

2.       Second A element is encoded, S is encoded literally and then indexed as (globalID, localID) = (0,1). V is not indexed anymore

3.       Third A element is encoded, V is encoded literally and then indexed as (globalID, localID) = (0,2). S is not indexed anymore

Please let me know if that clears up things.

Regards,
                Youenn


From: Kevin Braun [mailto:kbraun@obj-sys.com]
Sent: vendredi 8 novembre 2013 22:48
To: public-exi-comments@w3.org
Subject: Question on the meaning of "permanently unassigned" in EXI spec 7.3.3

Hi Folks,

In section 7.3.3 of the EXI spec, it reads:


When S is added to the global value partition and there was already a string V in the global value partition associated with the compact identifier globalID<http://www.w3.org/TR/2011/REC-exi-20110310/#key-globalID>, the string S replaces the string V in the global table, and the string V is removed from its associated local value partition by rendering its compact identifier permanently unassigned.

I am not clear on what happens in the case where V is later encountered again.  Can you please clarify what is meant by "permanently unassigned"?  For example, suppose V has a global id of 0 and a local id of 0.  S replaces V and V's compact identifier is "permanently unassigned" in the associated local value partition.  But, what exactly does that mean?  I assume it means that the local id of 0 is never reused in that local partition?  Now what does it mean should I need to encode V again?  Does "permanently unassigned" also mean either:
    The string V can never be added to that same local partition again, but it could be added to some other local partition?
OR
    The string V can never be added to any local partition at all?

I suspect it doesn't mean either of those things, but I'm not sure about it.  Perhaps the confusion here lies between these two readings of the above clause:
"...and the string V is removed from its associated local value partition by permanently mapping V to no compact identifier"
vs.
"...and the string V is removed from its associated local value partition by permanently mapping V's compact identifier to no string"

I think the former interpretation is how it actually does read, though I suspect the latter interpretation is what was intended.

Thanks in advance,
Kevin

Received on Monday, 25 November 2013 10:46:32 UTC