Conventional information systems are built on top of a relational database that requires its data model to be stable. This lack of adaptability is very restrictive for systems that manipulate evolving or heterogenous knowledge. The authors of this paper faced this issue at the time of the development of an information system of structural failures. As knowledge on structural failures is very heterogeneous and dynamic, it is practically impossible to define a stable database schema ahead. The widely accepted alternative to relational databases are semantic web ontologies. However, software developers miss adequate frameworks and design methodologies in this area. This paper tries to fill the gap by proposing a methodology for designing ontology-backed software applications that make the ontology possible to evolve while being exploited by one or more applications at the same time. The methodology relies on a contract between the ontology and the application that is formally expressed in terms of integrity constraints. Violation of the contract means either that the ontology evolved in a way that is incompatible with the particular application or the application produced invalid data. In the first case, the ontology change must either be rolled back, or the application needs to be upgraded. In the second case, the user has to modify entered data to fulfill the contract. Furthermore, this paper elaborates an object ontological mapping, transaction management, and efficient querying API. A reference Java implementation of the methodology and the proof-of-concept application in the civil engineering domain is introduced at the end of the paper.