1. A method of clustering a set of objects having respective object types, respective object attributes, homogeneous relationships between respective objects of the same object type, and heterogeneous relationships between objects having a different object types, the method comprising: iteratively optimizing a clustering of the set of objects within a plurality of latent classes, dependent on object type, object attributes, homogeneous relationships, and heterogeneous relationships, by performing: in an expectation step, updating a set of posteriors to maximize a probability that an object is associated with a respective latent class comprising, for each object, individually fixing an assigned latent class for all other objects, and maximizing an objective function for the respective object, comprising minimizing a computed distance between an observation of the object attributes, homogeneous relationships, and heterogeneous relationships of a respective object and parameters of a corresponding expectation that the object is associated with the respective latent class, and repeating until no object changes in assigned latent class between successive repetition, and in a minimization step, updating the plurality of latent classes based on the updated set of posteriors; and storing the optimized clustering.