What model/ontology/vocabulary do I use?
One of the most common questions posed is how to model in RDF or OWL a certain situation. A broader variant questions about which ontology should be used for the domain of concern.
Although very relevant questions, both those who ask the question as those who answer them often miss the point of the true power of Semantic Technologies. Sometimes such questions lead to furious discussions on which model is the best. In my opinion these discussions are often futile as the real world is usually more complex than the discussed model and the world is so rapidly changing that when an agreement has been settled adaptions are required.
The discussions are based on the unspoken assumptions that any business model can be modeled to match perfectly the domain of discourse. One believes there is a single right model, consequently stating that one formulation is inherently better than another. Often this quality assessment is expressed without mentioning the point of view (from the software construction perspective or from the business domain perspective). Finally misunderstandings are created because the common believe that people have a common understanding of the same word even when it is reused from an existing model.
None of these assumptions match reality. Any ontology is modeling in an abstract way the reality. Its aim is hiding complexity while approaching as good as possible the problem domain. Being an abstraction is a crucial notion. It means that for each term being used a definition must be given in the context of the problem domain. That means that for two different problem domains the same term can have a different definition. Obviously, but we are as humans often mislead by our natural interpretation of a word. For example, the class called PERSON, can be defined as "a human that is living on the earth." while another it means a "legal identity representing a human". Intuitively both overlap to a great extend, however when it comes to system building the subtle differences in semantics become important.
The practice of knowledge representation in computer science is tightly connected with programming languages. As programming languages are fragile constructs incapable to deal with the real complexity of the world, one has silently accepted the limitation that a program deals with a single point of view. This line of thought has been the driving force for all past software engineering practices: do good analysis, create from that the conceptual model, enhance it to a program model and then program up the necessary constructs. This has settled in most computer scientists head the idea that in order to manage complexity one has to focus on creating a single right model. Managing multiple view is considered hard and even bad practice. While we as humans are extremely capable of doing so.
However knowledge representation frameworks are not programming environments. Most of them are capable to handle multiple views gracefully. As most knowledge representation experts have a firm background in software engineering and ultimately a program will be written to exploit the formulated knowledge, the single right model idea sneeks into the knowledge representation process as the ideal to aim for. This is utopia. The Linked Data web shows the existence of multiple views on the same concept. How to integrate (or better cooporate) them into an application is the 2010's software challenge.
In order to get the most of semantic technologies one has to embrace the multi-model view. One has to provide the reasons for a chosen abstraction. One has to write definitions of the used terms. Make them as precise as possible. One must express relationships between different models. And all this information has to be taken into account in the software development process. Which in itself has to provide feedback on its abilities to deal with the knowledge. By doing so, the constructed software will be capable to sustain business view changes and will be able to serve more target audiences.
Without sacrificing the stability and quality of the software component.
So next time you are in a discussion on what is the best model, consider the idea to have more views at the same time. Document them, asses the differences, their potential usage and new opportunities arise.