21. A computer software product for use with a set of items each of which is characterized by one or more attribute-value pairs, the product comprising a computer-readable storage medium in which program instructions are stored, wherein the instructions, when read by a computer, cause the computer to receive a specification of one or more enabling relationships, which map enabling sets of one or more enabling attribute-value pairs to respective enableable attributes; receive a search query from a user comprising one or more search query attribute value pairs; responsive to the search query: designate, a current state that comprises one or more current-state attribute-value pairs that correspond to the one or more search query attribute value pairs; and generate a result set containing one or more of the items of the corpus; determine, based on the one or more enabling relationships specified, that all of the enabling attribute-value pairs of one of the enabling relationships are included in the one or more current-state attribute-value pairs of the current state; identify, in response to the determining that all of the enabling attribute-value pairs of one of the enabling relationships are included in the one or more current-state attribute-value pairs of the current state, that an enableable attribute of the one of the enabling relationships is enabled; determine that a populated attribute-value pair exists, wherein the populated attribute-value pair comprises the enabled attribute and a value therefor, and which, when added to the search query, results in an extended query that is satisfied by at least one of the items in the corpus; identify at least one extended state that comprises the current state and the populated attribute-value pair; identify a sub-enabled attribute that is an enableable attribute of one of the enabling relationships enabled by the extended state because the extended-state attribute-value pairs include all of the enabling attribute-value pairs of the one of the enabling relationships; determine whether a sub-search query comprises the search query and the populated attribute-value pair; generate, responsive to determining that a sub-search query comprises the search query and the populated attribute-value pair, a sub-result set containing one or more of the items of the corpus; identify a populated extended-state attribute-value pair that comprises the sub-enabled attribute and a value therefor, and for which an extended sub-result set generated responsively to an extended sub-search query consisting of the sub-search query and the populated extended-state attribute-value pair contains at least one of the items in the corpus; and present value of the populated attribute-value pair and the value of the populated extended-state attribute-value pair, wherein the populated attribute value pair is provided as a refinement option for selection by the user in order to refine the search query.
21. A computer software product for use with a set of items each of which is characterized by one or more attribute-value pairs, the product comprising a computer-readable storage medium in which program instructions are stored, wherein the instructions, when read by a computer, cause the computer to receive a specification of one or more enabling relationships, which map enabling sets of one or more enabling attribute-value pairs to respective enableable attributes; receive a search query from a user comprising one or more search query attribute value pairs; responsive to the search query: designate, a current state that comprises one or more current-state attribute-value pairs that correspond to the one or more search query attribute value pairs; and generate a result set containing one or more of the items of the corpus; determine, based on the one or more enabling relationships specified, that all of the enabling attribute-value pairs of one of the enabling relationships are included in the one or more current-state attribute-value pairs of the current state; identify, in response to the determining that all of the enabling attribute-value pairs of one of the enabling relationships are included in the one or more current-state attribute-value pairs of the current state, that an enableable attribute of the one of the enabling relationships is enabled; determine that a populated attribute-value pair exists, wherein the populated attribute-value pair comprises the enabled attribute and a value therefor, and which, when added to the search query, results in an extended query that is satisfied by at least one of the items in the corpus; identify at least one extended state that comprises the current state and the populated attribute-value pair; identify a sub-enabled attribute that is an enableable attribute of one of the enabling relationships enabled by the extended state because the extended-state attribute-value pairs include all of the enabling attribute-value pairs of the one of the enabling relationships; determine whether a sub-search query comprises the search query and the populated attribute-value pair; generate, responsive to determining that a sub-search query comprises the search query and the populated attribute-value pair, a sub-result set containing one or more of the items of the corpus; identify a populated extended-state attribute-value pair that comprises the sub-enabled attribute and a value therefor, and for which an extended sub-result set generated responsively to an extended sub-search query consisting of the sub-search query and the populated extended-state attribute-value pair contains at least one of the items in the corpus; and present value of the populated attribute-value pair and the value of the populated extended-state attribute-value pair, wherein the populated attribute value pair is provided as a refinement option for selection by the user in order to refine the search query. 25. The product according to claim 21 , wherein the instructions cause the computer to receive, from the user an indication of a selection of the refinement option, to generate, responsively to the indication, a refined search .query by adding the populated attribute-value pair to the search query, to generate, responsively to the refined search query, a refined result set, and to present the refined result set to the user.