1. A computer program product comprising a non-transitory computer readable storage medium having computer usable program code embodied therewith, the computer usable program code comprising: computer usable program code configured to represent within a K-partite graph, first weighting factors between a set of identifier elements and a set of data elements, wherein the K-partite graph also represents second weighting factors between the set of identifier elements and a set of metadata elements, wherein the set of metadata elements are distributed in two or more layers, and wherein in the K-partite graph, the set of identifier elements, the set of data elements, and the set of metadata elements are independent and disjoint sets such that no two vertices within a same set are adjacent; computer usable program code configured to provide an identifier-metadata matrix to contain a weighting factor between each identifier element of the set of identifiers elements and each metadata element of the set of metadata elements, and provide an identifier-data matrix to contain a weighting factor between each identifier element of the set of identifier elements and each data element of the set of data elements; computer usable program code configured to calculate a score vector that ranks each data element in a set of data elements, the score vector being calculated by: adding an initialized predetermined value of score vector with an adjusted multiple of the first weighting factors and the second weighting factors traversed from a starting identifier element to a corresponding data element of the set of data elements via the set of metadata elements and another identifier elements of the set of data elements, wherein the adjusted multiple of the first weighting factors and the second weighting factors is an adjusted value, wherein the adjusted value is obtained after traversed the first weighting factors and the second weighting factors based on a number of layers for the set of the metadata; and calculating the score vector further comprises: initializing the score vector with the predetermined value for each score; determining a path between a starting identifier element and each data element in the set of data elements, the path being represented by a first value representing a weighting factor between the starting identifier element and a first metadata element, a second value representing a weighting factor between a first identifier element and the first metadata element, and a third value representing a weighting factor between the first identifier element and a first data element; retrieving the first value from the identifier-metadata matrix for each path; retrieving the second value from the identifier-metadata matrix for each path; retrieving the third value from the identifier-data matrix for each path; calculating an updated score for the first data element for each path by adding the predetermined value to multiple of the first value, the second value, and the third value; calculating a normalized score vector using the updated score; checking the normalized score vector with a predetermined iteration criterion; when the predetermined iteration criterion was not satisfied, repeating checking the normalized vector with the predetermined iteration criterion until the predetermined iteration criterion is satisfied by replacing the score vector with the normalized score vector and recalculating the normalized score vector; computer usable program code configured to select at least one data element from the set of data elements using the normalized score vector and a predetermined selection criterion when the predetermined iteration criteria is satisfied.