1. A computer-implemented method for normalizing a data model of one or more entity classes, each entity class including a name and one or more attributes, the computer-implemented method comprising: refining the name of each of the entity classes to conform to a naming convention; determining a semantic meaning of each of the refined names and the one or more attributes of each entity class; determining that the name of a first entity class is semantically similar to the name of a second entity class based on a semantic distance between the semantic meaning of the name of the first entity class and the semantic meaning of the name of the second entity class; determining a substantial similarity between the first entity class and the second entity class based on a comparison of the semantic meaning of the one or more attributes of the first entity class to the semantic meaning of the one or more attributes of the second entity class; and normalizing the data model based on the substantial similarity.