1. A computer-implemented method, comprising: receiving a plurality of data items of one or more types, wherein each data item is associated with one or more attributes and each attribute is associated with an attribute name and an attribute value, with two or more data items each being associated with a same attribute of the one or more attributes; calculating a plurality of keys, each key corresponding to an attribute of the one or more attributes, each key based on the attribute name and the attribute value of each attribute, wherein a particular key of the plurality of keys corresponds to the same attribute that is associated with the two or more data items; determining whether each key of the plurality of keys is found in a dictionary; adding a key of the plurality of keys to the dictionary along with an attribute description when it is determined that the key is not found in the dictionary; calculating a number of occurrences of each key in the dictionary in relation to a number of the plurality of data items; classifying each attribute as a mandatory type, an expected type, or an optional type based on the calculated number of occurrences; creating a template for each type; adding the attribute description to the template based on the number of occurrences of each key in relation to the number of the plurality of data items, including: adding the attribute description to the template as a mandatory attribute if the number of occurrences divided by the number of data items is above or equal to the first given threshold; adding the attribute description to the template as an expected attribute if the number of occurrences divided by the number of data items is less than a first given threshold and greater than or equal to a second given threshold; and adding the attribute description to the template as an optional attribute if the number of occurrences divided by the number of data items is less than the second given threshold.