1. A computer-implemented method for calculating a ranking of at least one item in a plurality of items, the method comprising: receiving user preferences comprising a plurality of first-order user preferences indicative of a user's preferences for items in the plurality of items, and at least one second-order user preference indicative of the user's preferences among first-order user preferences in the plurality of first-order user preferences; calculating, with at least one processor, a ranking of the at least one item in the plurality of items based, at least in part on, at least one data structure encoding a preference graph that represents the received user preferences; and identifying and outputting at least a subset of the plurality of items to a user, in accordance with the ranking.