OBDASpecification createSpecification(Mapping mapping, DBMetadata dbMetadata, ClassifiedTBox tbox) {
Mapping sameAsOptimizedMapping = sameAsInverseRewriter.rewrite(mapping, dbMetadata);
Mapping canonicalMapping = mappingCanonicalRewriter.rewrite(sameAsOptimizedMapping, dbMetadata);
Mapping saturatedMapping = mappingSaturator.saturate(canonicalMapping, dbMetadata, tbox);
Mapping normalizedMapping = mappingNormalizer.normalize(saturatedMapping);
return specificationFactory.createSpecification(normalizedMapping, dbMetadata, tbox);
}
}