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/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