Representing and reasoning with modular ontologies