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
- ICE powered motorcycles
- Electric Bicycles
- Human With Training Wheels
Within a domain, you can define these things:
- Actors - someone or thing that uses the domain
- Applications - an actor interface
- Authors - who defined the domain
- Contexts - a precisely defined bounded context within the domain
- Domains - domains can have nested domains (subdomains)
- Epics - a story about external entities interacting with the domain
- Includes - inclusion of entity content from a file
- Options - optional declarations about a definition
- Plants - a data processing plant
- Terms - definition of a term relevant to the domain
- Types - information definitions used throughout the domain