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.
Features
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
Features inherited from EOL
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.)