Categorizing the world has been a philosophical concern dating back to ancient Greece and Parmenides (circa 540-515 BC). But, ontologies have evolved from these philosophical roots, to have significant application in industry. Tom Gruber’s 1993 papers, A Translation Approach to Portable Ontology Specifications and Toward Principles for the Design of Ontologies Used for Knowledge Sharing defined and popularized the current usage of the term.
Tom Gruber, in a discussion of ontologies for the Encyclopedia of Database Systems, said:
In the context of computer and information sciences, an ontology defines a set of representational primitives with which to model a domain of knowledge or discourse. The representational primitives are typically classes (or sets), attributes (or properties), and relationships (or relations among class members). The definitions of the representational primitives include information about their meaning and constraints on their logically consistent application... An ontology specifies a vocabulary with which to make assertions, which may be inputs or outputs of knowledge agents (such as a software program). As an interface specification, the ontology provides a language for communicating with the agent. An agent supporting this interface is not required to use the terms of the ontology as an internal encoding of its knowledge. Nonetheless, the definitions and formal constraints of the ontology do put restrictions on what can be meaningfully stated in this language. In essence, committing to an ontology (e.g. supporting an interface using the ontology's vocabulary) requires that statements that are asserted on inputs and outputs be logically consistent with the definitions and constraints of the ontology... Similarly, while an ontology must be formulated in some representation language, it is intended to be a semantic level specification -- that is, it is independent of data modeling strategy or implementation... Ontologies are typically formulated in languages which are closer in expressive power to logical formalisms such as the predicate calculus. This allows the ontology designer to be able to state semantic constraints without forcing a particular encoding strategy... Ontology engineering is concerned with making representational choices that capture the relevant distinctions of a domain at the highest level of abstraction while still being as clear as possible about the meanings of terms.I liked the direction that this was going, so I did some more googling and found some more descriptions. This next one is from the W3C:
On the Semantic Web, vocabularies define the concepts and relationships (also referred to as “terms”) used to describe and represent an area of concern. Vocabularies are used to classify the terms that can be used in a particular application, characterize possible relationships, and define possible constraints on using those terms. In practice, vocabularies can be very complex (with several thousands of terms) or very simple (describing one or two concepts only). There is no clear division between what is referred to as “vocabularies” and “ontologies”. The trend is to use the word “ontology” for more complex, and possibly quite formal collection of terms, whereas “vocabulary” is used when such strict formalism is not necessarily used or only in a very loose sense. Vocabularies are the basic building blocks for inference techniques on the Semantic Web.And, this one is from Wikipedia:
In computer science and information science, an ontology is a formal naming and definition of the types, properties, and interrelationships of the entities that really or fundamentally exist for a particular domain of discourse. It is thus a practical application of philosophical ontology, with a taxonomy. An ontology compartmentalizes the variables needed for some set of computations and establishes the relationships between them. The fields of artificial intelligence, the Semantic Web, systems engineering, software engineering, biomedical informatics, library science, enterprise bookmarking, and information architecture all create ontologies to limit complexity and to organize information. The ontology can then be applied to problem solving.Common to all these descriptions is the need to name, define and understand the key concepts, relationships and constraints of a domain. And, one invests the time to understand a domain for some purpose. I would definitely agree that understanding the purpose behind, and assumptions used in, the creation of an ontology are important. They definitely scope the work and create a basis for re-use.