I was just reading this article and it mentions that some organization had an Ontology as(?) their database(?) layer, and that the decision to do this was bad. Problem is I
AI people at some point thought that in case we want to build a system to be able to somehow think we should enable the system to somehow know what we know about the world. In other words they wanted to impose our own understanding of the word to the computers by generating a database which almost contains information and concise definitions about concepts and entities we know. Such databases have been built with different algorithms but not very precise after all. You better have a look on a database which is known to be among the best called CYC. http://sw.opencyc.org/ check few words in the box and see what you get as a return. Best wishes
An ontology is a schema (model) describing the types (and possibly some individuals) in a domain, the relationships that may exist between types and individuals, and constraints on the way that individuals and properties may be combined.
One analogy is with the UML class diagrams - but ontologies have formal semantics, so can be machine-interpreted, rather than just being diagrams for human consumption.
Example:
Classes: Project, Person, ProjectManager. ProjectManager is a subclass of Person (apparently). People and Projects are disjoint
Relationships: worksOn, manages. Manages is a sub-property of worksOn
Constraints: People work on Projects, not the other way around. Only Project Managers can manage projects.
This simple example enables machine inferences, e.g. if X manages Y, then we can infer that Y is a Project, and X is a Project Manager and therefore a Person.
Karussell already provided the wikipedia definition:
"a formal representation of the knowledge by a set of concepts within a domain and the relationships between those concepts".
In order to implement such a representation, several languages have been developed. The one that currently gets the most attention is probably the Web Ontology Language (OWL).
In a traditional relational database, concepts can be stored using tables, but the system does not contain any information about what the concepts mean and how they relate to each other. Ontologies do provide the means to store such information, which allows for a much richer way to store information. This also means that one can construct fairly advanced and intelligent queries. Query languages such as SPARQL have been developed specifically for this purpose.
For my masters thesis, I have worked with OWL ontologies, but this was as part of a fairly academic research. I don't know if any of this technology is currently used in practice very much, but I'm sure the potential is there.
An example of 'meaning' and reasoning over the ontologies: say you define in your ontology a class Pizza
, and a class Vegetarian Pizza
, which is a Pizza
that has no Ingredients
that belong to the class Meat
. If you now create some instance of a Pizza
that just happens not to have any meat ingredients, the system can automatically infer that your pizza is also a Vegetarian Pizza
, even if you did not explicitly specify it.
Once upon a time I have assigned such question to a good developer to answer as a task, because my superior believed in Ontologies. It didn't materialize to any sharp answer and my superior was fired after some time. I'm still curious.
My current understanding is that this is an idea of words in a natural language (or "entities") being connected to each other with different relations. Then we generalize that idea to any DB entities. And basically, we end up with nothing interesting and with no useful query language.
I may be wrong.
Some of the comments above seem a bit dismissive. I've used an ontology database in a real product and it was the only way to solve the problem. An ontology can be used to create a database that can encompass the complexities of the real world much better than something like an relational database. More "information" than "data". It's especially good when the relationships are complex and the information set is large and incomplete. Especially neat is the query mechanism in a good ontology database - it intelligently uses the schema/ontology (such as any class hierarchies) to return answers that would not be found otherwise.
I am a total layman, but it appears to me that artificial intelligence research has a 50 year history that goes round in cycles.
We've been round the cycle twice. Possibly this time it will be different...?