Definitions and their Attributes

What is a Definition?

Within the DMO, a Definition is an Object's generic description, that is sufficiently specific as to distinguish it from an object of a different type. Generic means we are talking about classes of objects, rather than individual instances of the objects themselves. For example, a Definition might be "Vehicle", while a specific instance of a vehicle might be "Nissan 350Z, Blue, Chassis #34545755531". Reflecting on this definition however shows that it might not be sufficiently specific, if we have different types of vehicles. For example, we might need to distinguish between "Car", "Truck", "Bus", "Plane" and "Other." All of these are types of vehicles, but each is clearly of a different type. In that context, we are actually building a tree of definitions, where each more specific type constrains the class of objects which belong under that part of the tree.

The tree above shows one way to look at a hierarchy of definitions, but of course there are many others, and one of the design goals of DMO was to be totally flexible. Although we provide a set of more than 200 definitions by default, the user may completely replace them with their own tree design, which should map onto the real-world application they wish to solve. If you do make a definition, you need to keep in mind the following simple rules:

For each definition you create, think about whether it is really the abstraction you are dealing with, or a specific instance. It's also possible to go too far in splitting things into types and categories -- for example, you might have a definition for "Cars", and then decide to make several sub-definitions such as "Sports Car", "Wagon", "SUV", "Coupe", etc. Instead, a better approach may be to simply have one definition, "Car", and then use an attribute called "Type" which can distinguish better between them.