1. A system for generating recommendations, comprising: a processor to execute modules, including: a communications module to receive a message requesting recommendations via a network, the message specifying a label identifying an item, a predicate describing a type of the item and at least one constraint on one or more items to be returned as recommendations; a canonicalization module to generate canonicalized representations of relationships by associating each component of the relationship data with a unique identifier (ID), the relationship data including a label component identifying an item, a predicate describing a type of the item and an intent describing an action that established the relationship; a relationship storage module for storing the canonicalized representations in a memory; and a recommendation generation module for generating recommendations based on the canonicalized representations of the relationships stored in the memory by performing collaborative filtering to identify a set of items related to the items identified in the message requesting recommendations and satisfying the at least one constraint.