Skip to content
🤷

Forgive us! These docs are a work in progress. Some pages may be incomplete or describe features that aren't quite finished yet. Farkitect is in early development and we don't recommend using it for real work just yet. Feel free to explore — just be aware that things are still being built.

MOF Layer Reference

Farkitect organises all content into three layers based on the Meta Object Facility (MOF) standard.

AspectDetail
ContainsMOF Core: Class, Property, DataType, Enumeration, Relationship
PurposeDefines what M2 metamodels can contain
EditableNo — always read-only
VisibleYes — appears in Explorer with red text
Per-projectShared — 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.

AspectDetail
ContainsElement types, relationship types, properties, enumerations, notation, constraints
PurposeDefines modelling languages
EditableBuilt-in M2s: no. Custom M2s: yes
VisibleYes — appears in Explorer with yellow text
Per-projectBuilt-in: shared. Custom: project-specific

M2 packages have a standard structure with role-tagged sub-packages: elementTypes, elementTypeLayer, relationshipTypes, enumerations, views.

MetamodelElement typesRelationship types
M2 Common4 (Note, Text, Boundary, Artifact)4 (Trace, Realization, Annotation, Dependency)
M2 ArchiMate 3.261 across 8 layers11
M2 UML Class Diagram4 across 1 layer5
M2 C4 Model6 across 3 layers3
M2 Logical Data Model2 (Entity, Attribute)1 (Related)
M2 Business Model Canvas9 across 3 layers11
M2 Business Motivation Model15 across 5 layers21
M2 Requirements10 across 2 layers10
M2 TOGAF35 across 6 layers11
AspectDetail
ContainsElements, relationships, property values, diagrams, catalogs
PurposeThe actual modelling work — instances of M2 types
EditableYes (subject to project role)
VisibleYes — appears in Explorer with white text
Per-projectAlways project-specific

Every M1 element has a classifier pointing to its M2 element type. This determines the element’s properties, notation, and constraints.

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)

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