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.
Update: example
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.