Optimization of Sequences of XML Schema Modifications - The ROfEL Approach Thomas Nösinger, Meike Klettke, Andreas Heuer Database Research Group University of Rostock, Germany (tn, meike, ah)@informatik.uni-rostock.de ABSTRACT element and shortly afterwards delete the same element. In The transformation language ELaX (Evolution Language for the overall context of an efficient realization of modification XML-Schema [16]) is a domain-specific language for modi- steps, such operations have to be removed. Further issues fying existing XML Schemas. ELaX was developed to ex- are incorrect information (possibly caused by network prob- press complex modifications by using add, delete and up- lems), for example if the same element is deleted twice or the date statements. Additionally, it is used to consistently order of modifications is invalid (e.g. update before add). log all change operations specified by a user. In this pa- The new rule-based optimizer for ELaX (ROfEL - Rule- per we present the rule-based optimization algorithm ROfEL based Optimizer for ELaX) had been developed for solving (Rule-based Optimizer for ELaX) for reducing the number the above mentioned problems. With ROfEL it is possible of logged operations by identifying and removing unneces- to identify unnecessary or redundant operations by using sary, redundant and also invalid modifications. This is an different straightforward optimization rules. Furthermore, essential prerequisite for the co-evolution of XML Schemas the underlying algorithm is capable to correct invalid modi- and corresponding XML documents. fication steps. All in all, ROfEL could reduce the number of modification steps by removing or even correcting the logged ELaX operations. 1. INTRODUCTION This paper is organized as follows. Section 2 gives the The eXtensible Markup Language (XML) [2] is one of the necessary background of XML Schema, ELaX and corre- most popular formats for exchanging and storing structured sponding concepts. Section 3 and section 4 present our and semi-structured information in heterogeneous environ- approach, by first specifying our ruled-based algorithm RO- ments. To assure that well-defined XML documents are fEL and then showing how our approach can be applied for valid it is necessary to introduce a document description, an example. Related work is shown in section 5. Finally, which contains information about allowed structures, con- in section 6 we draw our conclusions. straints, data types and so on. XML Schema [4] is one com- monly used standard for dealing with this problem. After 2. TECHNICAL BACKGROUND using an XML Schema a period of time, the requirements In this section we present a common notation used in the can change; for example if additional elements are needed, remainder of this paper. At first, we will shortly introduce data types change or integrity constraints are introduced. the XSD (XML Schema Definition [4]), before details con- This may result in the adaptation of the XML Schema def- cerning ELaX (Evolution Language for XML-Schema [16]) inition. and the logging of ELaX are given. In [16] we presented the transformation language ELaX The XML Schema abstract data model consists of different (Evolution Language for XML-Schema) to describe and for- components (simple and complex type definitions, element mulate these XML Schema modifications. Furthermore, we and attribute declarations, etc.). Additionally, the element mentioned briefly that ELaX is also useful to log informa- information item serves as an XML representation of these tion about modifications consistently, an essential prerequi- components and defines which content and attributes can be site for the co-evolution process of XML Schema and corre- used in an XML Schema. The possibility of specifying decla- sponding XML documents [14]. rations and definitions in a local or global scope leads to four One problem of storing information over a long period of different modeling styles [13]. One of them is the Garden of time is, that there can be different unnecessary or redundant Eden style, in which all above mentioned components are modifications. Consider modifications which firstly add an globally defined. This results in a high re-usability of decla- rations and defined data types and influences the flexibility of an XML Schema in general. The transformation language ELaX1 was developed to handle modifications on an XML Schema and to express such modifications formally. The abstract data model, el- Copyright c by the paper’s authors. Copying permitted only ement information item and Garden of Eden style were for private and academic purposes. important through the development process and influence In: G. Specht, H. Gamper, F. Klan (eds.): Proceedings of the 26th GI- 1 Workshop on Foundations of Databases (Grundlagen von Datenbanken), The whole transformation language ELaX is available at: 21.10.2014 - 24.10.2014, Bozen, Italy, published at http://ceur-ws.org. www.ls-dbis.de/elax // ↓ most recent operation: add ↓ the EBNF (Extended Backus-Naur Form) like notation of ELaX. U: op(EID) → del(EID) → add(EID, content) (5) An ELaX statement always starts with ”add”, ”delete” ⇒ op(EID) → add(EID, content) or ”update” followed by one of the alternative components (simple type, element declaration, etc.), an identifier of the I: add(EID, ) → add(EID, content) (6) current component and completed with optional tuples of ⇒ add(EID, content) attributes and values (examples follow on, e.g. see figure I: upd(EID, ) → add(EID, content) 1). The identifier is a unique EID (emxid)2 , a QNAME (7) (qualified name) or a subset of XPath expressions. In the ⇒ upd(EID, content) remaining parts we will use the EID as the identifier, but a // ↓ most recent operation: update (upd) ↓ transformation would be easily possible. I: op(EID) → del(EID) → upd(EID, content) (8) ELaX statements are logged for further analyses and also as a prerequisite for the rule-base optimizer (see section 3). ⇒ op(EID) → upd(EID, content) Figure 1 illustrates the relational schema of the log. The U: add(EID, content) → upd(EID, content) (9) ⇒ add(EID, content) op- msg- file-ID time EID content Type Type U: add(EID, content) → upd(EID, content’) 1 1 1 add 0 add element name 'name' type 'xs:decimal' id 'EID1' ; (10) 1 2 1 upd 0 update element name 'name' change type 'xs:string' ; ⇒ add(EID, MERGE(content0 , content)) 1 3 2 add 0 add element name 'count' type 'xs:decimal' id 'EID2' ; … … … … … … R: upd(EID, content) → upd(EID, content) (11) ⇒ upd(EID, content) Figure 1: Schema with relation for logging ELaX U: upd(EID, content) → upd(EID, content’) (12) ⇒ upd(EID, MERGE(content0 , content)) chosen values are simple ones (especially the length). The attributes file-ID and time are the composite key for the The rules have to be sequentially analyzed from left to right logging relation, the EID represents the unique identifier for (→), whereas the left operation comes temporally before the a component of the XSD. The op-Type is a short form for right one (i.e., time(left) < time(right). To warrant that the add, delete (del) or update (upd) operations, the msg-Type operations are working on the same component, the EID is for the different message types (ELaX (0), etc.). Lastly, of both operations is equal. If two operations exist and a the content contains the logged ELaX statements. The file- rule applies to them, then the result can be found on the ID and msg-Type are management information, which are right side of ⇒. The time of the result is the time of the not covered in this paper. prior (left) operation, except further investigations are ex- plicit necessary or the time is unknown (e.g. empty). Another point of view illustrates, that the introduced rules 3. RULE-BASED OPTIMIZER are complete concerning the given operations add, delete The algorithm ROfEL (Rule-based Optimizer for ELaX) and update. Figure 2 represents an operation matrix, in was developed to reduce the number of logged ELaX opera- which every possible combination is covered with at least one tions. This is possible by combining given operations and/or rule. On the x-axis the prior operation and on the y-axis the removing unnecessary or even redundant operations. Fur- thermore, the algorithm could identify invalid operations in prior a given log and correct these to a certain degree. operation add delete update ROfEL is a rule-based algorithm. Provided that a log of add (6) (5) (7) ELaX operations is given (see section 2), the following rules recent delete (3) (2) (4) are essential to reduce the number of operations. In com- update (9) , (10) (8) (11) , (12) pliance with ELaX these operations are delete (del), add or update (upd). If a certain distinction is not necessary a general operation (op) or variable ( ) are used, empty Figure 2: Operation matrix of rules denotes a not given operation. Additionally, the rules are classified by their purpose to handle redundant (R), unnec- recent operation are given, whereas the three-valued rules essary (U) or invalid (I) operations. ROfEL stops (S) if no (5) and (8) are minimized to the both most recent operations other rules are applicable, for example no other operation (e.g. without op(EID)). The break-even point contains the with the same EID is given. applying rule or rules (considering the possibility of merging the content, see below). S: empty → op(EID) ⇒ op(EID) (1) Rule (4) is one example for further investigations. If a // ↓ most recent operation: delete (del) ↓ component is deleted (del(EID)) but updated (upd(EID)) (2) before, then it is not possible to replace the prior operation R: del(EID) → del(EID) ⇒ del(EID) with the result (del(EID)) without analyzing other opera- U: add(EID, content) → del(EID) ⇒ empty (3) tions between them. The problem is: if another operation (op(EID’)) references the deleted component (e.g. a simple U: upd(EID, content) → del(EID) ⇒ del(EID) (4) type) but because of ROfEL upd(EID) (it is the prior op- with time(del(EID)) := TIME(del(EID), upd(EID, content)) eration) is replaced with del(EID), then op(EID’) would be 2 Our conceptual model is EMX (Entity Model for XML invalid. Therefore, the function TIME() is used to deter- Schema [15]), in which every component of a model has its mine the correct time of the result. The function is given own, global identifier: EID in pseudocode in figure 3. TIME() has two input parame- TIME(op, op’): value pairs of the most recent operation are completely in- // time(op) = t; time(op’) = t’; time(opx) = tx; serted into the result. Simultaneously, these attributes are // op.EID == op’.EID; op.EID != opx.EID; t > t’; removed from the content of the prior operation. At the end begin of the function, all remaining attributes of the prior (right) if ((t > tx > t’) AND operation are inserted, before the result is returned. (op.EID in opx.content)) All mentioned rules, as well as the functions TIME() and then return t; MERGE() are essential parts of the main function RO- return t’; FEL(); the pseudocode is presented in figure 5. ROFEL() end. ROFEL(log): Figure 3: TIME() function of optimizer // log = ((t1,op1), (t2,op2), ...); t1 < t2 < ...; begin for (i := log.size(); i >= 2; i := i - 1) MERGE(content, content’): for (k := i - 1; k >= 1 ; k := k - 1) // content = (A1 = ’a1’, A2 = ’a2’, if(!(log.get(i).EID == log.get(k).EID AND // A3 = ’’, A4 = ’a4’); log.get(i).time != log.get(k).time)) // content’ = (A1 = ’a1’, A2 = ’’, then continue; // A3 = ’a3’, A5 = ’a5’); // R: del(EID) -> del(EID) => del(EID) (2) begin if (log.get(i).op-Type == 1 AND result := {}; log.get(k).op-Type == 1) count := 1; then while (count <= content.size()) log.remove(i); result.add(content.get(count)); return ROFEL(log); if (content.get(count) in content’) // U: upd(EID, content) -> del(EID) then // => del(EID) (4) content’.remove(content.get(count)); if (log.get(i).op-Type == 1 AND count := count + 1; log.get(k).op-Type == 2) count := 1; then while (count <= content’.size()) temp := TIME(log.get(i), log.get(k)); result.add(content’.get(count)); if (temp == log.get(i).time) count := count + 1; then // result = (A1 = ’a1’, A2 = ’a2’, log.remove(k); // A3 = ’’, A4 = ’a4’, A5 = ’a5’); return ROFEL(log); return result; log.get(k) := log.get(i); end. log.remove(i); return ROFEL(log); [...] Figure 4: MERGE() function of optimizer // U: upd(EID,con) -> upd(EID,con’) // => upd(EID, MERGE(con’,con)) (12) if (log.get(i).op-Type == 2 AND ters and returns a time value, dependent on the existence of log.get(k).op-Type == 2) an operation, which references the EID in its content. If no then such operation exists, the time of the result in rule (4) would temp := MERGE(log.get(i).content, be the time of the left (op), otherwise of the right operation log.get(k).content); (op’ ). The lines with // are comments and contain further log.get(k).content := temp; information, some hints or even explanations of variables. log.remove(i); The rules (6), (7) and (8) adapt invalid operations. For ex- return ROFEL(log); ample if a component is updated but deleted before (see rule return log; (8)), then ROfEL has to decide, which operation is valid. In end. this and similar cases the most recent operation is preferred, because it is more difficult (or even impossible) to check the Figure 5: Main function ROFEL() of optimizer intention of the prior operation. Consequently, in rule (8) del(EID) is removed and rule op(EID) → upd(EID, content) has one input parameter, the log of ELaX operations. This applies (op(EID) could be empty; see rule (1)). log is a sequence sorted according to time, it is analyzed The rules (10) and (12) removes unnecessary operations reversely. In general, one operation is pinned (log.get(i)) by merging the content of the involved operations. The func- and compared with the next, prior operation (log.get(k)). tion MERGE() implements this, the pseudocode is pre- If log.get(k) modifies the same component as log.get(i) (i.e., sented in figure 4. MERGE() has two input parameter, EID is equal) and the time is different, then an applying rule the content of the most recent (left) and prior (right) oper- is searched, otherwise the next operation (log.get(k - 1)) is ation. The content is given as a sequence of attribute-value analyzed. The algorithm terminates, if the outer loop com- pairs (see ELaX description in section 2). The result of the pletes successfully (i.e., no further optimization is possible). function is the combination of the input, whereas the con- Three rules are presented in figure 5; the missing ones tent of the most recent operation is preferred analogical to are skipped ([...]). The first rule is (2), the occurrence of the above mentioned behaviour for I rules. All attribute- redundant delete operations. According to the above men- tioned time choosing guidelines, the most recent operation ROfEL op- time EID content (log.get(i)) is removed. After this the optimizer starts again Type with the modified log recursively (return ROFEL(log)). 1 1 add add element name 'name' type 'xs:decimal' id 'EID1' ; 10 The second rule is (4), which removes an unnecessary up- 2 1 upd update element name 'name' change type 'xs:string' ; 3 2 add add element name 'count' type 'xs:decimal' id 'EID2' ; date operation, because the whole referenced component will 4 3 add add element name 'start' type 'xs:date' id 'EID3' ; be deleted later. This rule uses the TIME() function of fig- 5 42 add add element name 'stop' type 'xs:date' id 'EID42' ; ure 3 to decide, which time should be assigned to the result. 6 4 add add complextype name 'confType' id 'EID4' ; 3 If another operation between log.get(i) and log.get(k) exists 7 5 add add group mode sequence id 'EID5' in 'EID4' ; and this operation contains or references log.get(i).EID, then 8 42 upd update element name 'stop' change type 'xs:string' ; the most recent time (log.get(i).time) is assigned, otherwise 9 6 add add elementref 'name' id 'EID6' in 'EID5' ; the prior time (log.get(k).time). 10 4 7 add add elementref 'count' id 'EID7' in 'EID5' ; The last rule is (12), different updates on the same com- 11 8 add add elementref 'start' id 'EID8' in 'EID5' ; 12 42 del delete element name 'stop' ; ponent are given. The MERGE() function of figure 4 com- 13 2 9 add add element name 'conf' type 'confType' id 'EID9' ; bines the content of both operations, before the content of 14 42 del delete element name 'stop' ; the prior operation is changed and the most recent operation is removed. After introducing detailed information about the concept Figure 7: XML Schema modification log of figure 6 of the ROfEL algorithm, we want to use it to optimize an example in the next section. given in the XML Schema (EID > 9). Additionally, some 4. EXAMPLE entries are connected within the new introduced column RO- In the last section we specified the rule-based algorithm fEL. The red lines and numbers represent the involved log ROfEL (Rule-based Optimizer for ELaX), now we want to entries and applying ROfEL rule. explain the use with an example: we want to store some in- The sorted log is analyzed reversely, the operation with formation about a conference. We assume the XML Schema time stamp 14 is pinned and compared with time entry 13. of figure 6 is given, a corresponding XML document is also Because the modified component is not the same (EID not presented. The XML Schema is in the Garden of Eden style equal), the next operation with time 12 is taken. Both op- erations delete the same component (op-Type == 1 ). Ac- cording to rule (2), the redundant entry 14 is removed and ROFEL restarts with the adapted log. Rule (4) applies next, a component is updated but deleted later. This rule calls the TIME() function to determine, if the time of the result (i.e., del(EID)) should be 12 or 8. Because no operation between 12 and 8 references EID 42, the time of the result of (4) is 8. The content of time 8 is replaced with delete element name ’stop’;, the op-Type is set to 1 and the time entry 12 is deleted. Afterwards, ROFEL restarts again and rule (3) could be used to compare the new operation of entry 8 (original entry 12) with the operation of time 5. A component is inserted but deleted later, so all modifications on this component are unnecessary in general. Consequently, both entries are deleted and the component with EID 42 is not given in the XML Schema of figure 6. The last applying rule is (10). An element declaration is inserted (time 1) and updated (time 2). Consequently, the MERGE() function is used to combine the content of both operations. According to the ELaX specification, the content of the update operation contains the attribute type Figure 6: XML Schema with XML document with the value xs:string, whereas the add operation contains the attribute type with the value xs:decimal and id with and contains four element declarations (conf, name, count, EID1. All attribute-value pairs of the update operation are start) and one complex type definition (confType) with a completely inserted into the output of the function (type = group model (sequence). The group model has three ele- ”xs:string”). Simultaneously, the attribute type is removed ment references, which reference one of the simple type el- from the content of the add operation (type = ”xs:decimal”). ement declarations mentioned above. The identification of The remaining attributes are inserted in the output (id = all components is simplified by using an EID, it is visualized ”EID1”). Afterwards, the content of entry 1 is replaced by as a unique ID attribute (id = ”..”). add element ’name’ type ”xs:string” id ”EID1”; and the sec- The log of modification steps to create this XML Schema ond entry is deleted (time 2). is presented in figure 7. The relational schema is reduced in The modification log of figure 7 is optimized with rules comparison to figure 1. The time, the component EID, the (2), (4), (3) and (10). It is presented in figure 8. All in all, op-Type and the content of the modification steps are given. five of 14 entries are removed, whereas one is replaced by a The log contains different modification steps, which are not combination of two others. op- In [8] an approach is presented, which deals with four time EID content Type operations (insert, delete, update, move) on a tree repre- 1 1 add add element name 'name' type 'xs:string' id 'EID1' ; sentation of XML. It is similar to our algorithm, but we use 3 2 add add element name 'count' type 'xs:decimal' id 'EID2' ; ELaX as basis and EIDs instead of update-intensive labelling 4 3 add add element name 'start' type 'xs:date' id 'EID3' ; mechanisms. Moreover the distinction between property and 6 4 add add complextype name 'confType' id 'EID4' ; node, the ”deletion always wins” view, as well as the limita- 7 5 add add group mode sequence id 'EID5' in 'EID4' ; tion that ”reduced sequence might still be reducible” [8] are 9 6 add add elementref 'name' id 'EID6' in 'EID5' ; 10 7 add add elementref 'count' id 'EID7' in 'EID5' ; drawbacks. The optimized reduction algorithm eliminates 11 8 add add elementref 'start' id 'EID8' in 'EID5' ; the last drawback, but needs another complex structure, an 13 9 add add element name 'conf' type 'confType' id 'EID9' ; operation hyper-graph. Figure 8: XML Schema modification log of figure 7 6. CONCLUSION after using rules (2), (4), (3) and (10) of ROfEL The rule-based algorithm ROfEL (Rule-based Optimizer for ELaX) was developed to reduce the number of logged ELaX (Evolution Language for XML-Schema [16]) opera- This simple example illustrates how ROfEL can reduce the tions. In general ELaX statements are add, delete and up- number of logged operations introduced in section 3. More date operations on the components of XML Schema, speci- complex examples are easy to construct and can be solved fied by a user. by using the same rules and the same algorithm. ROfEL allows the identification and deletion of unnec- essary and redundant modifications by applying different heuristic rules. Additionally, invalid operations are also cor- 5. RELATED WORK rected or removed. In general if the preconditions and condi- Comparable to the object lifecycle, we create new types tions for an adaptation of two ELaX log entries are satisfied or elements, use (e.g. modify, move or rename) and delete (e.g. EID equivalent, op-Type correct, etc.), one rule is ap- them. The common optimization rules to reduce the num- plied and the modified, reduced log is returned. ber of operations are originally introduced in [10] and are We are confident, that even if ROfEL is domain specific available in other application in the same way. In [11], rules and the underlying log is specialized for our needs, the above for reducing a list of user actions (e.g. move, replace, delete, specified rules are applicable in other scenarios or applica- ...) are introduced. In [9], pre and postconditions of op- tions, in which the common modification operations add, erations are used for deciding which optimizations can be delete and update are used (minor adaptations precondi- executed. Additional applications can easily be found in tioned). further scientific disquisitions. Future work. The integration of a cost-based component Regarding other transformation languages, the most com- in ROfEL could be very interesting. It is possible, that under monly used are XQuery [3] and XSLT (Extensible Stylesheet consideration of further analyses the combination of different Language Transformations [1]), there are also approaches to operations (e.g. rule (10)) is inefficient in general. In this reduce the number of unnecessary or redundant operations. and similar cases a cost function with different thresholds Moreover, different transformations to improve efficiency are could be defined to guarantee, that only efficient adaptations mentioned. of the log are applied. A convenient cost model would be In [12] different ”high-level transformations to prune and necessary, but this requires further research. merge the stream data flow graph” [12] are applied. ”Such Feasibility of the approach. At the University of Ro- techniques not only simplify the later analyses, but most stock we implemented the prototype CodeX (Conceptual importantly, they can rewrite some queries” [12], an essen- design and evolution for XML Schema) for dealing with the tial prerequisite for the efficient evaluation of XQuery over co-evolution [14] of XML Schema and XML documents; RO- streaming data. fEL and corresponding concepts are fully integrated. As we In [5] packages are introduced because of efficiency ben- plan to report in combination with the first release of CodeX, efits. A package is a collection of stylesheet modules ”to the significantly reduced number of logged operations proves avoid compiling libraries repeatedly when they are used in that the whole algorithm is definitely feasible. multiple stylesheets, and to avoid holding multiple copies of the same library in memory simultaneously” [5]. Fur- 7. REFERENCES thermore, XSLT works with templates and matching rules for identifying structures in general. If different templates [1] XSL Transformations (XSLT) Version 2.0. could be applied, automatic or user given priorities manage http://www.w3.org/TR/2007/REC-xslt20-20070123/, which template is chosen. To avoid unexpected behaviour January 2007. Online; accessed 25-June-2014. and improve the efficiency of analyses, it is a good practise [2] Extensible Markup Language (XML) 1.0 (Fifth to remove unnecessary or redundant templates. Edition). Another XML Schema modification language is XSchema- http://www.w3.org/TR/2008/REC-xml-20081126/, Update [6], which is used in the co-evolution prototype EXup November 2008. Online; accessed 25-June-2014. [7]. Especially the auto adaptation guidelines are similar to [3] XQuery 1.0: An XML Query Language (Second the ROfEL purpose of reducing the number of modification Edition). steps. ”Automatic adaptation will insert or remove the min- http://www.w3.org/TR/2010/REC-xquery-20101214/, imum allowed number of elements for instance” [6], i.e., ”a December 2010. Online; accessed 25-June-2014. minimal set of updates will be applied to the documents” [4] W3C XML Schema Definition Language (XSD) 1.1 [6]. Part 1: Structures. http://www.w3.org/TR/2012/ REC-xmlschema11-1-20120405/, April 2012. Online; accessed 25-June-2014. [5] XSL Transformations (XSLT) Version 3.0. http://www.w3.org/TR/2013/WD-xslt-30-20131212/, December 2013. Online; accessed 25-June-2014. [6] F. Cavalieri. Querying and Evolution of XML Schemas and Related Documents. Master’s thesis, University of Genova, 2009. [7] F. Cavalieri. EXup: an engine for the evolution of XML schemas and associated documents. In Proceedings of the 2010 EDBT/ICDT Workshops, EDBT ’10, pages 21:1–21:10, New York, NY, USA, 2010. ACM. [8] F. Cavalieri, G. Guerrini, M. Mesiti, and B. Oliboni. On the Reduction of Sequences of XML Document and Schema Update Operations. In ICDE Workshops, pages 77–86, 2011. [9] H. U. Hoppe. Task-oriented Parsing - a Diagnostic Method to Be Used Adaptive Systems. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI ’88, pages 241–247, New York, NY, USA, 1988. ACM. [10] M. Klettke. Modellierung, Bewertung und Evolution von XML-Dokumentkollektionen. Habilitation, Fakultät für Informatik und Elektrotechnik, Universität Rostock, 2007. [11] R. Kramer. iContract - the Java(tm) Design by Contract(tm) tool. In In TOOLS ’98: Proceedings of the Technology of Object-Oriented Languages and Systems, page 295. IEEE Computer Society, 1998. [12] X. Li and G. Agrawal. Efficient Evaluation of XQuery over Streaming Data. In In Proc. VLDB’05, pages 265–276, 2005. [13] E. Maler. Schema Design Rules for UBL...and Maybe for You. In XML 2002 Proceedings by deepX, 2002. [14] T. Nösinger, M. Klettke, and A. Heuer. Evolution von XML-Schemata auf konzeptioneller Ebene - Übersicht: Der CodeX-Ansatz zur Lösung des Gültigkeitsproblems. In Grundlagen von Datenbanken, pages 29–34, 2012. [15] T. Nösinger, M. Klettke, and A. Heuer. A Conceptual Model for the XML Schema Evolution - Overview: Storing, Base-Model-Mapping and Visualization. In Grundlagen von Datenbanken, 2013. [16] T. Nösinger, M. Klettke, and A. Heuer. XML Schema Transformations - The ELaX Approach. In DEXA (1), pages 293–302, 2013.