5 th International Workshop on Multi-Level Modeling MULTI 2018 – Copenhagen, October 16, 2018 Multi-Level Modeling with XML Dr. Jens Gulden Information Systems and Enterprise Modeling, ICB Institute for Computer Science and Business Information Systems University of Duisburg-Essen, Germany Institut für Informatik und Wirtschaftsinformatik (ICB)
Agenda State of MLM Tooling Support Benefits of a Multi-Level XML Format Research Questions Requirements and Approach Prototype Implementation Related Work Limitations & Conclusion 2 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
State of MML Tooling Support Variety of (prototypical) tools Mixed concepts / homonyms, synonyms Lack of a standardized representation of multi- level models Could serve as a means of communication among modeling experts Collections of multi-level models in central places Integration of different multi-level modeling tools 3 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Benefits of a Multi-Level XML Format XML offers existing language infrastructure standard syntax XML Schema Definition (XSD) query and transformation languages XPath, XSLT Extension mechanisms are language- inherent Existing schema validation mechanism Readable by human experts + suitable as technical exchange format 4 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Research Questions Q1: How can XML be extended in a way that both instance and type characteristics can be represented by XML entity elements? Q2: How can schema validation be adapted to multi-level XML? 5 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Requirements and Approach Language Design: core idea is to re-use the existing XML type definition technology by lightweight extensions Req. 1: Combine type definitions and instance entity definitions Req. 2: Provide multi-level features : abstraction levels, intrinsic features Req. 3: Design with minimal invasive changes to existing standards Req. 4: Implement with recursion to existing schema validation 6 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Syntax Proposal <element { attr N ="..." } [ ml:level="level" ] <element { attr N ="..." } [ ml:level="level" ] [ ml:of="parent" ] [ ml:of="parent" ] [ ml:abstract=" [ true ] " ] > [ ml:abstract=" [ true ] " ] > [ <xsd:complexType> [ <xsd:complexType> ... schema declarations ... ... schema declarations ... </xsd:complexType> ] </xsd:complexType> ] { <child N {attr N ="..."} > ... </child N > } { <child N {attr N ="..."} > ... </child N > } [ text content ] [ text content ] </element> </element> <xsd:complexType> <xsd:complexType> <xsd:sequence> <xsd:sequence> { <xsd:element { attr N ="..." } { <xsd:element { attr N ="..." } [ ml:intrinsic="level" | ml:potency="levels" ] > ... [ ml:intrinsic="level" | ml:potency="levels" ] > ... </xsd:element> } </xsd:element> } </xsd:sequence> </xsd:sequence> { <xsd:attribute { attr N ="..." } { <xsd:attribute { attr N ="..." } [ ml:intrinsic="level" | ml:potency="levels" ] > ... [ ml:intrinsic="level" | ml:potency="levels" ] > ... </xsd:attribute> } </xsd:attribute> } </xsd:complexType> </xsd:complexType> 7 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
<ingredients xmlns:ml= "urn:ml" xmlns:xs= "http://www.w3.org/2001/XMLSchema" > Example <ingredient ml:abstract= "yes" > <xs:complexType> <xs:sequence> <!-- <xs:element ref="name"/> (implicit by language) --> <xs:element name= "tasteDescription" type= "xs:string" ml:potency= "2" /> </xs:sequence> <xs:attribute name= "healthy" type= "xs:boolean" ml:potency= "1" /> </xs:complexType> </ingredient> <vegetarianIngredient ml:of= "ingredient" healthy= "true" > <xs:complexType> <xs:sequence> <xs:attribute name= "healthy" type= "xs:boolean" /> </xs:sequence> </xs:complexType> </vegetarianIngredient> <spice ml:of= "ingredient" > <xs:complexType> <xs:attribute name= "appetizing" type= "xs:boolean" /> <xs:attribute name= "sudatory" type= "xs:boolean" /> <!-- makes you sweat --> <xs:attribute name= "digestive" type= "xs:boolean" /> </xs:complexType> <aMistake>a mistake</aMistake> </spice> <pepper ml:of= "spice" color= "red" > <xs:complexType> <xs:attribute name= "color" type= "pepperColor" /> </xs:complexType> <tasteDescription>very tasty!</tasteDescription> </pepper> <!-- this is a regular level-agnostic auxiliary XML Schema definition --> <xs:simpleType name= "pepperColor" final= "restriction" > <xs:restriction base= "xs:string" > <xs:enumeration value= "green" /> <xs:enumeration value= "black" /> <xs:enumeration value= "white" /> <xs:enumeration value= "red" /> </xs:restriction> </xs:simpleType> <salt ml:of= "spice" > <xs:complexType> <xs:attribute name= "avgLifetime" type= "xs:double" /> </xs:complexType> <tasteDescription>very tasty!</tasteDescription> </salt> 8 <pepper color= "green" /> Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen </ingredients>
Example (zoomed) <ingredients xmlns:ml= "urn:ml" xmlns:xs= "http://www.w3.org/2001/XMLSchema" > <ingredient ml:abstract= "yes" > <xs:complexType> <xs:sequence> <!-- <xs:element ref="name"/> (implicit by language) --> <xs:element name= "tasteDescription" type= "xs:string" ml:potency= "2" /> </xs:sequence> <xs:attribute name= "healthy" type= "xs:boolean" ml:potency= "1" /> </xs:complexType> </ingredient> <vegetarianIngredient ml:of= "ingredient" healthy= "true" > <xs:complexType> <xs:sequence> <xs:attribute name= "healthy" type= "xs:boolean" /> </xs:sequence> </xs:complexType> </vegetarianIngredient> <spice ml:of= "ingredient" > <xs:complexType> <xs:attribute name= "appetizing" type= "xs:boolean" /> <xs:attribute name= "sudatory" type= "xs:boolean" /> <!-- makes you sweat --> <xs:attribute name= "digestive" type= "xs:boolean" /> </xs:complexType> <aMistake>a mistake</aMistake> </spice> <pepper ml:of= "spice" color= "red" > <xs:complexType> <xs:attribute name= "color" type= "pepperColor" /> </xs:complexType> <tasteDescription>very tasty!</tasteDescription> 9 </pepper> Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Schema Validation Idea: multi-level document transformed to 2-level XML schema , then run regular validator → Req. 4 (lightweight, backward-compatible) Theoretic proof for backward-compatibility Documents architecture: 10 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Prototype Implementation .xml .xsl .xsd 1 2 11 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Prototype Implementation .xml .xsl .xsd 1 ☞ ☞ Source code download: Source code download: 2 https://www.wi-inf.uni-due.de/FGFrank/download/mxml-0.1.0.zip https://www.wi-inf.uni-due.de/FGFrank/download/mxml-0.1.0.zip 12 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Related Work MultEcore: .xmi + .ecore each abstraction level in one Ecore model extension of Ecore to a multi-level architecture achieved by organizing multiple single-level models M-Objects’s XML storage format according to author MetaDepth: other textual representation Attention: “multi-level XML document” sometimes meaning XML document with a nesting depth of children elements greater than one 13 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Limitations & Conclusion Only first step, language still is incomplete Chance for systematic unification of existing approaches Proof-of-concept for XML-based multi-level exchange format, fulfills requirements. Future Work: create meta-model to unify concepts of existing different approaches write exporters / importers for existing tools as proof-of-concept, e. g., for XModeler 14 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Thank you Thank you Jens Gulden jens.gulden@uni-due.de 15 Jens Gulden | Multi-Level Modeling with XML | 2018-10-16 | Copenhagen
Recommend
More recommend