1. A method for recommending an object to a user comprising: defining an ontology as nodes in a directed acyclic graph each node representing a concept wherein general concepts are parent nodes and specific concepts are child nodes of the parent nodes; using a propagating function to infer missing scores in the ontology; calculating personalized scores of the concepts at the nodes of the ontology relative to a known user preference by propagating a score for the known user preference based on concepts of the known user preference, the propagating function, and the directed acyclic graph; selecting a product because it is instance of a concept that has a high personalized score in the directed acyclic graph; and recommending the product to the user.