Ontologies may be defined as data structures that are used to describe entities and dependencies between the entities. An entity may be represented by a class or concept of an ontology. Such a class may have a characteristic that may for example point to a different class and thus specify a range of the characteristic. Furthermore, a class may have an inheritance relation to a further class, that is, the class inherits the characteristics of the further class.
Ontologies may be used, for example, to describe web services by specifying the capabilities of the web services in relation to general or potential capabilities. With such an ontology, a reasoner may be used to identify in an automated way a web service that is capable to fulfill requirements of a service request. In an example of a dynamic service selection, a service request may be received by a computer system and the computer system may use a reasoner to subsume the service request under a class representing a web service. The web service thus selected may then be invoked to fulfill the service request and it is ensured that the selected web service is capable of fulfilling the service request. Further examples may include more general services that represent modular software programs that may be invoked by a different software program through a communication means.