1. A computer-implemented method performed by one or more data processing apparatus, comprising: storing a representation of a taxonomy for components that are available for constructing content items, wherein the taxonomy includes a hierarchy of categories, and each component belongs to one or more categories, each of the categories being a child node descending directly or through one or more intermediate categories from a root category; receiving a set of co-occurrence constraints on component selection for constructing the content items wherein each co-occurrence constraint of the set of co-occurrence constraints specifies a permission or a prohibition of simultaneous selection of components a respective first category and components from a respective second category for a single content item, and wherein a permission or a prohibition for a category specified in the co-occurrence constraint applies to all subcategories that descend from the first and second categories; determining a processing order of each co-occurrence constraint that is based on a level of one of the respective nodes of the respective categories of the co-occurrence constraint, and the processing order defines a processing sequence of the co-occurrence constraints according to a top-down deterministic traversal of categories of same levels of the hierarchy so that co-occurrence constraints for a category at a given level of the hierarchy are processed prior to processing co-occurrence constraints of categories of one or more child levels of the given level, each co-occurrence constraint in the set of co-occurrence constraints being processed for a respective category specified in the co-occurrence constraint when the category is reached during the top-down deterministic traversal of the hierarchy; processing the co-occurrence constraints according to the processing order to generate combined co-occurrence constraints, the processing comprising resolving conflicts between co-occurrence constraints that are discovered during the top-down deterministic traversal of the hierarchy in an order of discovery so that a conflict between a first co-occurrence constraint and a second co-occurrence constraint that is processed subsequent to the first co-occurrence constraint in the processing order is resolved so that the second co-occurrence constraint overrides the first co-occurrence constraint when the second co-occurrence constraint is processed; determining an eligible pair of components for constructing a first content item based on the taxonomy and the combined co-occurrence constraints; wherein: storing the representation of the taxonomy further comprises storing a directed acyclic graph, each category of the taxonomy being represented as a node in the directed acyclic graph, and a directed edge from a first node to a second node in the directed acyclic graph indicates that a second category represented by the second node descends from a first category represented by the first node and that the second category is a subcategory of the first category; and each of the set of co-occurrence constraints is expressed as a respective (n+1)-tuple of a form (c — 1, c — 2,. .. , c_n, Boolean), where c — 1, c — 2,. .. , c_n are nodes in the directed acyclic graph, and the Boolean represents either a permission or a prohibition of simultaneous selection of n components, each of the n components being associated with a respective one of the n nodes.