CONCEPT Cited by 1 source
Domain model¶
Definition¶
A domain model — in the data-integration / knowledge-graph sense Netflix UDA uses — is a controlled vocabulary that defines:
- Classes of keyed entities (concepts with identity).
- Attributes of those classes (typed properties).
- Relationships between entities — keyed or nested, within the domain or across domains.
- Taxonomies of types — classes organised into subtype hierarchies of arbitrary depth.
It's the formal conceptualisation of a business or system domain, authored once and treated as data — not as source code, not as documentation.
"Upper is a language for formally describing domains — business or system — and their concepts. These concepts are organized into domain models: controlled vocabularies that define classes of keyed entities, their attributes, and their relationships to other entities, which may be keyed or nested, within the same domain or across domains." — Netflix UDA post (sources/2025-06-14-netflix-model-once-represent-everywhere-uda)
Monotonic extension¶
Domain models are extensible monotonically — new attributes and relationships can be added from other domain models without retracting prior facts. The algebraic property that makes this safe is conservative extension.
Domain models as data¶
The distinguishing claim of UDA's framing: domain models are data, not code, not docs. Expressed as conceptual RDF and organised into named graphs, they are introspectable, queryable (SPARQL), versionable, and diff-able like any other graph data. This is the precondition for transpiling them into many target schemas (GraphQL / Avro / SQL / RDF / Java).
Business domain + system domain¶
UDA extends the term in two directions:
- Business domain models —
actor,movie,asset, and their relationships. - System domain models — the data systems themselves (GraphQL, Avro, Data Mesh, Mappings) modelled in the same language. A system's schema language + information architecture becomes a domain model, so that the same tooling (transpiler, projections, UI) works on both.
Distinction from DDD "domain model"¶
Domain-Driven Design (Evans, 2003) uses "domain model" to mean the object graph + invariants within a single bounded-context service codebase. UDA's "domain model" is broader: it is a conceptual, tool-agnostic, data-representable specification of a domain's classes + relationships that can drive multiple service implementations + schemas at once. The wiki uses UDA's framing when the concept is invoked in an integration / knowledge-graph / schema-transpilation context.
Seen in¶
- sources/2025-06-14-netflix-model-once-represent-everywhere-uda — canonical wiki instance. Netflix UDA treats Upper-authored domain models as the single source from which GraphQL / Avro / SQL / RDF / Java schemas are transpiled and data-movement pipelines are auto-provisioned.
Related¶
- systems/netflix-uda · systems/netflix-upper — canonical platform + authoring language.
- concepts/metamodel — the model of domain models.
- concepts/knowledge-graph — the substrate domain models live in.
- concepts/named-graph — how UDA organises domain models within the graph.
- concepts/conservative-extension — the composition-safety property.
- concepts/upper-ontology — the specific metamodel role Upper plays.
- concepts/semantic-interoperability — the goal domain models serve.
- patterns/model-once-represent-everywhere · patterns/schema-transpilation-from-domain-model — the patterns domain models enable.