The following is a simple idea seems to be old hat among RFID designers. It was new to me in 2007 at least in this context. We assume here that a tag address is a sequence of bits and that distinct tags have distinct constant addresses. RFID tags conditionally respond to queries by matching on address bits transmitted in the query.
The idea that was new to me is that the query may specify a subset of the bits to be matched and to which multiple chips may respond. I suppose here that the subset of address bits is always an initial segment of the address and that any segment size may be specified. This is extra information in the query and this is thus a cost.
The value of this selectivity is that a simple fast algorithm can take an inventory of all chips in physical range. The set of all possible addresses forms a tree and a single broadcast query can probe for the existence of members in any subtree. With m tags in range and n possible addresses, this leads immediately to a series of at most m(log n) queries to determine the entire set of tags.
With RFID there is a problem of two tags being at distances which are an odd multiple of half the wavelength of the probe frequency. This causes destructive interference of reflected signals. Several frequencies may be required.