This thesis describes an investigation into the practical use of ontologies for the development of information systems. Ontologies are formal descriptions of shared knowledge in a domain. An ontology can be used as a specification of an information system because it specifies the knowledge that is required for the tasks the information system has to perform. Sharing and reuse of ontologies across different domains and applications can therefore improve information systems design. Ontologies have been a subject for a lot of research carried out in the artificial intelligence community. Although many ontologies have been developed, they fail to demonstrate that ontologies for large and complex domains can be developed that can be used and reused across different applications. There are three reasons for this: (i) many ontologies have not been used to develop a real-life application, (ii) many ontologies have not been reused for different applications in different domains and (iii)many ontologies are merely taxonomies of domain concepts and fail to capture meta-level and tacit background knowledge.