MOF Layer Reference
Farkitect organises all content into three layers based on the Meta Object Facility (MOF) standard.
M3 — Meta-Metamodel
Section titled “M3 — Meta-Metamodel”| Aspect | Detail |
|---|---|
| Contains | MOF Core: Class, Property, DataType, Enumeration, Relationship |
| Purpose | Defines what M2 metamodels can contain |
| Editable | No — always read-only |
| Visible | Yes — appears in Explorer with red text |
| Per-project | Shared — same M3 in every project |
M3 is the foundation. You never edit it. It exists so that Farkitect knows what “element type,” “property,” and “relationship type” mean.
M2 — Metamodels
Section titled “M2 — Metamodels”| Aspect | Detail |
|---|---|
| Contains | Element types, relationship types, properties, enumerations, notation, constraints |
| Purpose | Defines modelling languages |
| Editable | Built-in M2s: no. Custom M2s: yes |
| Visible | Yes — appears in Explorer with yellow text |
| Per-project | Built-in: shared. Custom: project-specific |
M2 packages have a standard structure with role-tagged sub-packages: elementTypes, elementTypeLayer, relationshipTypes, enumerations, views.
Built-in M2 metamodels
Section titled “Built-in M2 metamodels”| Metamodel | Element types | Relationship types |
|---|---|---|
| M2 Common | 4 (Note, Text, Boundary, Artifact) | 4 (Trace, Realization, Annotation, Dependency) |
| M2 ArchiMate 3.2 | 61 across 8 layers | 11 |
| M2 UML Class Diagram | 4 across 1 layer | 5 |
| M2 C4 Model | 6 across 3 layers | 3 |
| M2 Logical Data Model | 2 (Entity, Attribute) | 1 (Related) |
| M2 Business Model Canvas | 9 across 3 layers | 11 |
| M2 Business Motivation Model | 15 across 5 layers | 21 |
| M2 Requirements | 10 across 2 layers | 10 |
| M2 TOGAF | 35 across 6 layers | 11 |
M1 — Models
Section titled “M1 — Models”| Aspect | Detail |
|---|---|
| Contains | Elements, relationships, property values, diagrams, catalogs |
| Purpose | The actual modelling work — instances of M2 types |
| Editable | Yes (subject to project role) |
| Visible | Yes — appears in Explorer with white text |
| Per-project | Always project-specific |
Every M1 element has a classifier pointing to its M2 element type. This determines the element’s properties, notation, and constraints.
Layer Relationships
Section titled “Layer Relationships”M3 defines → M2 (what metamodels can contain)M2 defines → M1 (what models can contain)M1 classifier → M2 type (each instance points to its type)M1 imports → M2 package (packages declare which metamodels they use)Package Layer Designation
Section titled “Package Layer Designation”Every package has a layer field: "M3", "M2", or "M1". This determines:
- How it appears in the Explorer (text colour)
- Whether it’s editable
- What role it plays in the metamodel architecture