We present the model transformation language of the VIATRA2 framework, which provides a rule and pattern-based transformation language for manipulating graph models by combining graph transformation and abstract state machines into a single specification paradigm. This language offers advanced constructs for querying (e.g. recursive graph patterns) and manipulating models (e.g. generic and meta transformation rules) in unidirectional model transformations frequently used in formal model analysis to carry out powerful abstractions. In addition, powerful language constructs are provided for multi-level metamodeling to design modeling languages and template-based code generation.