Tefkat
Tefkat is a model transformation language and a model transformation engine.  The language is based on F-logic and the theory of stratified logic programs.  The engine is an Eclipse plug-in for the Eclipse Modeling Framework (EMF).

History 

Tefkat was one of the sub-projects of the Pegamento project at the Distributed Systems Technology Centre (DSTC), Australia.  Although the project was already underway, the most active research occurred for the submission of a response to the OMG's  MOF 2.0  Queries / Views / Transformations Request for Proposals.

Tefkat was open-sourced before the closure of the DSTC in June 2006.

Brief description 

Tefkat defines a mapping from a set of source metamodels to a set of target metamodels.  A Tefkat transformation consists of rules, patterns and templates.  Rules contain a source term and a target term.  Patterns are simply named composite source terms, and templates are simply named composite target terms.  These elements are based on F-logic and pure logic programming, however the absence of function symbols means a significant reduction in complexity.

Tefkat has two more significant language elements: trackings and injections.  Trackings allow arbitrary relationships to be preserved in a trace model.  Injections allow the identity of target objects to be specified in terms of a function symbol.  Thus injections are similar (but more powerful) to QVT's keys, which specify a target object's identity to be a function of its type and some of its properties.

The declarative semantics of a Tefkat transformation is the perfect model of traces and targets that satisfies all the rules.  A more imperative semantics of a Tefkat transformation is the iterated least fixed-point of the immediate consequence of each rule.  Due to stratification, these semantics are equivalent and unambiguous.  Tefkat does not use explicit rule-calling; all (non-abstract) rules fire independently from all others, however rules can be loosely coupled using trackings, injections, rule extension and/or rule superseding.

Concrete syntax 

Tefkat has an SQL-like concrete syntax designed to concisely convey the intent of each rule, pattern or template.

 RULE ClassToTable
 FORALL  Class c { name: n; }
 MAKE    Table t { name: n; }
 ;

Compliance 

The Tefkat language is defined in terms of (E)MOF 2.0, however the engine is implemented in terms of Ecore, the EMOF-like metametamodel at the centre of EMF.  The language is very similar to the Relations package of QVT, however it is not strictly compliant.

See also 

 Model Driven Architecture (MDA): OMG's vision of MDE
 QVT: the OMG's adopted QVT specification
 Stratification (mathematics)
 Logic programming

References 

 Tefkat project page
 Practical Declarative Model Transformation with Tefkat

Specification languages