Epsilon Model Generation Language

EMG addresses the automated generation of complex models. EMG provides a set of predefined annotations that can be added to EOL operations and EPL patterns in order to perform the model generation.


  • Create fixed or random number of elements of a given type
  • Use pseudo-random primitive type generators to populate element attributes
  • Use EPL patterns to define element relations
  • Ability to query/navigate other models to retrieve attribute values
  • 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 12 of the Epsilon book provides a complete reference of the syntax and semantics of EMG.