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 hadn't heard about this before, so I can't understand why it's bad.
So I tried googling about databases and ontology, and came about quite a few pdfs from 2006 that we're full of incomprehensible content (for my mind). I read a few of these and at this point still have absolutely no idea what they are talking about.
My current impression is that it was some crazy fad of 2006 that some academics were trying to sell us, but failed miserably due to the wording of their ideas. But I'm still curious if anyone actually knows what this is actually all about.
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.
Ok its still not truely clear, but I think I understand what you mean. Its kind of a snow flake database that stores all the metadata along with the data(?) sounds kind of reasonable if you had specialized software instead of a SQL based DB. It does seem hard to optimize but with all the NoSQL these days it might have some use.
Yeah, I know, the basis is not very difficult but it's hard to get your head around initially. If you really want to get a feel for it, I suggest you download an OWL editor such as Protégé and look for a tutorial (I remember working through a tutorial that models a lot about Pizza's, try searching for it). That will give you a better idea of what 'relationships' and 'meaning' mean in this context.
@RobertGould Daan seems to have focused on some of the interesting Set mathematics of the members of an ontology; which is really cool. However, for some people, the relationships approach is a bit easier to initially grasp. I have a traditional "family tree" answer, focusing on how you could store relationships; but, it is using very primitive Ontological features (for illustration purposes). I like to think of Ontologies as graph databases, with set mathematics applied to the nodes. They're entirely flexible, leading to the problem of messy ideas creating messy code.