The Epsilon component aims at building a framework for supporting the construction of domain-specific languages and tools for model management tasks, i.e., model merging, model comparison, inter- and intra-model consistency checking, text generation, etc. It will provide a metamodel-agnostic approach that supports model management tasks for any kind of metamodel and model instances.
The Epsilon component will provide the basis for building integrated domain-specific model management languages and tools:
We emphasise that the Epsilon component consists of not only the core language, EOL, and its tools, but also the integrated task-specific languages, which support each other. For example, the transformation and comparison languages are both used within EML.
The Epsilon component will focus on supporting those aspects needed in the context of general model management, including:
At this time, code has been developed that supports parsing, checking, editing, and execution of the Epsilon Object Language, which supports model navigation and modification. Currently, these are deployed as separate Eclipse plug-in components, which run within Eclipse. The parser and run-time may also be used independently of Eclipse.
The following code is ready for submission to an Eclipse Epsilon component:
An initial user guide, installation guide and examples will also be made available. An online tutorial will also be provided for getting started.
The informal architecture of the Epsilon platform is depicted below.

The core of the platform is the Epsilon Object Language (EOL) which provides a metamodel agnostic layer for navigating, querying, and modifying models. EOL reuses part of the OCL language but does not completely conform to the OCL 2.0 standard. New, domain-specific languages (e.g., ETL, EML, a MOF 2.0 Action Semantics language, ...) are defined on top of EOL and reuse its facilities for navigating and modifying models.
Initial support has been provided for MOF (MDR) models, EMF models, and XML models, but additional models will be investigated.
The Epsilon Merging Language (EML) is a recent addition to the Epsilon component. The overall design of the EML language, and its tool support, is illustrated below.
The EML engine applies to an EML specification, defined in terms of a number of rules. These rules make use of EOL for comparison and model navigation. The context in which rules are executed is also supplied via EOL.
Screenshots of the EML editor and the EML launch configuration are provided below.
The Epsilon binaries are available for download; please see the descriptions at http://www.cs.york.ac.uk/~dkolovos/epsilon
Epsilon was developed in a community at the University of York, UK, supported and tested by the European Integrated Project MODELWARE (IST Project 511731). We will continue development of Epsilon in the context of MODELWARE’s successor project, MODELPLEX, which started September 2006. MODELPLEX will provide the necessary time and resources to ensure a continuity of development in the subproject.
We will encourage user communities to use the technology and contribute to improvement through feedback. We will also encourage user and external developers to contribute examples, reusable transformations, and code.
We aim to involve users and developers through publicity in publications, conferences, and presentations. We are also using Epsilon in lecturing at the University of York in courses in model-driven development and language design, and will make our teaching material available to lecturers and instructors worldwide.