Epsilon Transformation Language

ETL is a hybrid, rule-based model-to-model transformation language built on top of EOL. ETL provides all the standard features of a transformation language but also provides enhanced flexibility as it can transform many input to many output models,and can query/navigate/modify both source and target models.


  • Transform many input to many output models
  • Ability to query/navigate/modify both source and target models
  • Declarative rules with imperative bodies
  • Automated rule execution
  • Lazy and greedy rules
  • Multiple rule inheritance
  • Guarded rules
  • Support for simultaneously accessing/modifying many models of (potentially) different metamodels
  • All the usual programming constructs (while and for loops, statement sequencing, variables etc.)
  • Support for those convenient first-order logic OCL operations (select, reject, collect etc.)
  • Ability to create and call methods of Java objects
  • Support for dynamically attaching operations to existing meta-classes and types at runtime
  • Support for cached operations
  • Support for extended properties
  • Support for user interaction
  • Ability to create reusable libraries of operations and import them from different Epsilon (not only EOL) modules

Examples and Screencasts


Chapter 6 of the Epsilon book provides a complete reference of the syntax and semantics of ETL.