Domain
A domain is the top-most definitional level in RIDDL. We use the word domain in the sense of a knowledge domain; like an entire business, a field of study, or some portion of these. It has nothing to do with Internet domain names. A domain is an arbitrary boundary around some subset of concepts in the universe. As with Domain Driven Design, RIDDL uses the concept of a domain to group together a set of related concepts.
Domains in RIDDL are inert. That is they only serve to contain definitions that do things, but they don't do things themselves.
Domains can recursively contain other nested domains so that a hierarchy of domains and subdomains is established. Because of this, we can organize any large, complex knowledge domain or field of study, into an hierarchical ontology.
For example, if you were modelling the domain of Two Wheeled Vehicles you might devise a domain hierarchy like this: * Two Wheeled Vehicle - Motorized - ICE powered motorcycles - Scooter - Electric Bicycles - Segway * UnMotorized * Bicycles * Oxcart * Handtruck * Human With Training Wheels
Cross-Context Definitions¶
Domains are inert, but two definitions may live at domain scope precisely because they span the contexts beneath it:
- A Repository that synthesizes data from entities in several contexts, and is queried by several contexts
- A Connector whose two ends are ports in different contexts
Both are validated for correct scope. A domain-scoped repository that reaches only one context is an Error — it is provably unnecessary there. A context-scoped connector whose ends cross contexts is likewise an Error, and so is the reverse.
Authorship and Attribution¶
A domain is one of only two places an author may be defined
(the other is a Module); everywhere else, authors are referenced
with by author Name. A domain may also declare a version and a
copyright.
Validation
A domain that identifies no author — considering its own author references and defined authors, as well as those of any enclosing domain — draws a MissingWarning. It is suppressible through the existing missing-warning gates.
Occurs In¶
Contains¶
Within a domain, you can define these things:
- Users - someone or thing that uses the domain
- Authors - who defined the domain
- Connectors - when the two ends are in different contexts
- Contexts - a precisely defined bounded context within the domain, including application contexts
- Copyrights - the applicable legal notice
- Domains - domains can have nested domains (subdomains)
- Epics - a story about external entities interacting with the domain
- Includes and
importdirectives - Repositories - when they synthesize across contexts
- Sagas - multi-step atomic processes
- Types - information definitions used throughout the domain
- Versions - one component of the version coordinate