I is the set of values of the item before delta application.
I' is the set of values of the item after delta application.
T is the delta set triple. T = ( Tplus, Tminus, Tzero ) being plus, minus, and zero sets, respectively.
for any value prism v, M(v) is the set of its metadata values, and val(v) is its real value.
Change representation (with metadata)
The concept of value metadata brings changes to years-old data structures for change representation: item delta (and therefore item-delta-item), and delta set triple.
Value metadata in item deltas
Treatment of value metadata in item deltas can be summarized like this:
For "replace" deltas there is no difference: values from the
replaceset are copied into target item verbatim.
For "add" and "delete" deltas we treat metadata-carrying values as instructions to add or delete specified yields from the target item value (if present).
These changes are described in detail in the document on deltas.
Value metadata in delta set triples
Treatment of value metadata is currently not relativistic. This means that we do not provide plus/minus/zero sets for individual metadata values or individual yields. The division of values into plus/minus/zero sets is - still - based strictly on value equivalence, with no regard for the metadata.
Delta set triple creation
This is how it works when metadata are not taken into account:
When metadata are concerned, we can conceptually view the process as having two steps:
The second step looks like this:
Note that the real implementation in
ItemDeltaImpl.toDeltaSetTriple method is much more complex.
However, the rather simple specification provides room for alternate - maybe more efficient - implementations in the future.