Since this question wasn't clear, I'll rephrase. See question-history for original.
I'm looking for academic papers that describe schema evolution on documents (1) in a generic way. More specifically some questions I'm hoping to see answered in part: given a schema A and documents adhering to schema A:
- what type of atomic 'change-operations' may occur on schema A for instances of schema A to be compatible with the newly created schema A+.
- in general terms, does an exhaustive list of these 'change-operations' (A) even exist (theoretically) or (B) would this be db-dependent? Intuitively I think the answer is (A)
- Assuming (A) any pointers to such a list? (2)
- Given a schema A and a schema B, is it possible to deconstruct the delta between these two schemas to their atomic 'change-operations'?
- Given the above, theoretically, it seems possible to either:
- do automatic migration of all instances of schema A to adhere to A+
- list where manual intervention is needed because of incompatibilities.
1) with documents I mean objects generally stored in nosql document-databases. I.e.: objects with complex types / nesting. The misplaced term nosql I used in the original question was an attempt to point this out.
2) Although pretty old Recent advances in schema and ontology evolution is an example of what I'm looking for. It illustrates a couple of 'change operations' as follows (through Moto et. al 2007 specifically mentioning Xml schema changes, copied verbatim) :
- Add a new optional or required element to a type
- Delete an element from a type
- Add new top-level constructs like complex types
- Remove top-level constructs
- Change the semantics of an element without changing its syntax – for instance, if the new version of an application treats the implicit units of a column to be in metric where previous versions did not
- Refactor a schema in a way that does not affect instance validation – for instance, factoring out common local type definitions into a single global type definition
- Nest a collection of elements inside another element
- Flatten an element by replacing it by its children
- Rename an element or change its namespace
- Change an element’s maximum or minimum multiplicity
- Modify an element’s type, either by changing it from one named type to another or adding or changing a restriction or extension
- Change an element’s default value
- Reorder elements in a type
Clearly this doesn't cover all change operations possible on a document schema. Missing for example are change-operations related to object-references.
Any pointers appreciated.