Object Model — ER Diagram

Three properties carry all the edges: isIn (physical containment), partOf (functional membership), and dependsOn (operational dependency).

erDiagram
    AREA    |o--o{ AREA   : "isIn"
    DEVICE  }o--o| AREA   : "isIn"
    DEVICE  |o--o{ DEVICE : "isIn"
    DEVICE  }o--o{ SYSTEM : "partOf"
    SYSTEM  |o--o{ SYSTEM : "partOf"
    DEVICE  }o--o{ DEVICE : "dependsOn"

Cardinality key

SymbolMeaning
||exactly one
|ozero or one
o{zero or many
|{one or many

The marker closest to each entity name describes that entity’s cardinality as seen from the other side of the relationship.

Relationships

EdgePropertyLeft cardinalityRight cardinalityNotes
AREA → AREAisInzero or one parentzero or many childrenTop-level areas have no parent
DEVICE → AREAisInzero or many devices per areazero or one area per deviceAll devices should have a location
DEVICE → DEVICEisInzero or one parent devicezero or many sub-devicese.g. a circuit breaker is in a panel
DEVICE → SYSTEMpartOfzero or many devices per systemzero or many systems per deviceMany-to-many; a UPS can serve multiple systems
SYSTEM → SYSTEMpartOfzero or one parent systemzero or many sub-systemsTop-level systems have no parent
DEVICE → DEVICEdependsOnzero or many dependentszero or many dependenciesMany-to-many; traversed for root-cause analysis

Properties in use

PropertyTypeNotes
isAstringarea | system | device | term
isInlink or link[]Physical containment — upward pointer
partOflink or link[]Functional system membership
dependsOnlink[]Infrastructure this requires to operate; always an array
titlestringDisplay name for Dataview / Bases
listOfstringDrives Base view filters on this note

Semantic distinctions

QuestionProperty to follow
Where is this physically?isIn (upward to area)
What system does this serve?partOf (upward to system)
What must be working for this to work?dependsOn (to other devices)
What else breaks if this fails?reverse of dependsOn (computed by query)

dependsOn is always an array because a device typically has more than one dependency (power source and network connection at minimum). It is the key property for automated triage: an n8n workflow detecting a failure can walk the dependsOn graph to determine whether the failure is local or a cascade from an upstream dependency.

Publishing note

As of 2026-02, Obsidian Bases support on Publish is planned but not yet available. Dynamic relationship lists (devices in an area, sub-systems of a system) render correctly inside Obsidian via embedded Base views, but appear blank on the published site until Obsidian ships Bases support for Publish.