A wiser strategy is to avoid fixed assumptions, and instead let the behavior of the application arise dynamically from a flexible description of the information—one that can grow and change as new requirements emerge. Such a description is an ontology: a vocabulary that describes the data, how it is organized and interrelates, how it should be displayed to humans or translated for other machines.
A few characteristics typically distinguish an ontology from a conventional database schema:
- The vocabulary is itself first-class data within the architecture, which may change and evolve via the same tools that manage data in the system.
- We rightly refer to the entire corpus of the system as self-describing data. We also have to consider ontological data from an Open World perspective. This subtle change of perspective is particularly necessary in open and distributed data architectures.
- Finally, whereas a conventional schema describes the structure of data, an ontology may describe anything about anything, and thus it may be used to express any conceptual aspect of the system.
Notice that this explanation so far makes no mention of any specific technology, language, or formalism. In our work, we apply these concepts with an emphasis on pragmatic results. We have employed a wide range of tools and technologies according to the need and character of the project.
Our initial introduction to the ontology mindset was while working with MitoSystems’ proprietary ontology language and architecture. We have used Semantic Web technologies, including RDF, OWL and SPARQL. For projects that require a simple programming model, we have found it practical to use simplified ontologies written in JSON, making use of JSON Schema and common query models like GraphQL and MongoDB.
In the big picture, it is most important to understand ontology as an orientation toward understanding the big picture. This is what it means when we say "ontologize"—we start our projects with a thorough understanding of the structures of data that make the foundation of the project. Once we've built that understanding, that we can begin to build an application that truly fulfills the project's goals.
We'd love to talk to you about your own ontologies. Get in touch!