I also find it amusing that the discussion surrounding tagging suffers from the lack of a controlled vocabulary :-)
In the Clay's post above he makes use of a simple boolean expression language to define subsets of all tagged objects in a given space. This is natural, if you think of a tag space as being an infinitely extensible bitset associated with each tagged object. Then you can ask for things like this:
( apple && g5 && ! ( nyc || newyork) )
(My grammar is a little more C-ish than Clay's, but the syntaxes are equivalent.)
Futhermore, you can do things like XOR tag spaces, not that I imagine the result would be very useful.
Where boolean tag expressions will come in useful, however, is not just in defining subsets of the object space. Tag expressions could also be used to define equivalency between tags applied using different systems, on the same website or elsewhere. For example, suppose we want to define equivalencies for "Apple Computers" for two people, when one (Kevin) lives in New York and the other (Yves) uses the stock ticker instead of the company name and runs an orchard:
|apple && ! ( nyc || newyork)||=||AAPL && ! orchard|
The example is a bit far-fetched, serves to illustrate the principle. And the left and right sides of the above expression need not both be on the same system - one could be in deli.cio.us, and the other in Flickr. In this way, the problem of two different users applying tags like "teen" in drastically different ways can be solved.
Once you start to define equivalencies, those equivalencies can act as bonds between the users in the equation, and from there you can start building trust and authority into what is essentially a fantastically anarchic way of classifying information.
1: This is actually true, although tags were classified in a hierarchy, so I suppose it's not really tagging from a purist perspective.