Skip to main content
Jump to: navigation, search

VIATRA/Transformation/Transformation Language

< VIATRA‎ | Transformation
Revision as of 18:23, 6 March 2013 by Ujhelyiz.mit.bme.hu (Talk | contribs) (New page: == Transformation language over EMF Models == Design draft page This page describes a new language for describing models transformation, that builds on the experiences with the origina...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Transformation language over EMF Models

Design draft page

This page describes a new language for describing models transformation, that builds on the experiences with the original VIATRA2 Transformation Control Language (VTCL) and its spinoff, the pattern-based query language of EMF-IncQuery. It builds on the same concepts as the VTCL language, and directly re-uses the IncQuery pattern language for pattern definitions.

History

Main VTCL language elements

  • pattern: for defining constraints and conditions; multiple possibly pattern matchers available
  • gtrule: graph transformation rule describe elementary model manipulation steps, either as two graph patterns or a graph pattern and some imperative control (usually add/remove/update operations!)
  • asmrule: imperative control structures
    • asm function: globally available maps keyed by tuples

New ideas not entirely supported by the existing language

  • Alternative traversal methods, e.g. probabilistic simulation or design space exploration
    • Worked around by extending/replacing the interpreter
  • Native EMF support
    • Importer/exporter was used
  • High-level support for event-driven transformations
    • Preliminary support was introduced via triggers

Design ideas

Graph pattern matching

  • Graph pattern syntax and semantics re-used from EMF-IncQuery

Batch transformations

  • boolean operation -> check whether at least one match exists
  • Select one match for processing
    • Unboxing to single variables needed -> look for compatibility with EMFIncQuery Match processors
    • Which one to return: unspecified or random or first/last/nth via some ordering
  • Select all matches for processing
    • Unboxing similarly needed
    • Ordering and concurrent modification?

Event-driven mode

  • Defining what to do when a match
    • appears
    • disappears
    • is updated
  • Control elements to wait for some conditions?
  • Reuse of EMF-IncQuery EVM
  • Question: how to register event-driven rules, possible strategies
    • Fully event-driven transformation - every rule registered
    • Imperative style: only manual registration
    • Something in-between

Extensibility

  • Changable control flow (e.g. different interpreter/generated code strategies)
  • Insertion of custom Java code (at least as black box rules)
  • Other domain support (VPM, triple stores)

Back to the top