In general, there are many approaches to create data models and ontologies.
The two common ones are:
- Top-down: from abstract to concrete
- The ontology is created in an abstract way, first by defining general concepts of the domain and then by classifying them into specific hierarchies.
- These models might be too generic and cover more than the existing data structures by adding “empty” concepts without any data that represents them.
- The opposite might also occur - they might not reflect the true nature of the data structures and could miss some of their important characteristics.
- Bottom-up: from concrete to abstract
- They usually start with existing data structures, defining specific concrete concepts (the leaves of the hierarchy).
- These concepts are usually physical, application-specific, and incomplete from an enterprise perspective.
- They may not promote data sharing and abstractions, especially if they are built without reference to other parts of the organization/domain.
Choosing either approach is valid based on one’s different world-view and philosophical theories.
A combination of the top-down and bottom-up approaches is also possible: A middle-out approach - from the most relevant to the most abstract and most concrete.
In the middle-out approach :
- You start with the most important concepts in your organization/domain
- You try to generalize them by adding high-level concepts
- You add the relevant application-specific concrete concepts and try to generalize them either by adding middle-level concepts or by connecting them directly to the high-level ones
In my opinion, the best approach to start modeling an ontology is to look for existing ontologies (like FIBO for the financial domain) and try to reuse them as much as possible using the middle-out approach.
Import the relevant concepts from the existing ontology and then follow the steps of the middle-out approach.
This process should be iterative - as you might make mistakes along the way, and you want to detect them as soon as possible to avoid unnecessary work.