Tags should take arguments

Rather than being simple strings, tags on content should be able to take arguments. Arguments could be positional (for example, trip(Boston, Kingsport) or smiles(Alice) on a photo, history(Valletta) or criticism(CSS) on a blog post), key-value pairs (trip(from: Boston, to: Kingsport)), or an unordered set of nested tags (road{Kingsport, Boston} == road{Boston, Kingsport}).

This would allow queries like smiles(Alice) smiles(Bob) to find all pictures where both Alice and Bob are smiling, trip(?, ?) to find all pictures from trips, and trip(?, Kingsport) to find all pictures from trips to Kingsport.

Like normal tags, these tags do not need a predefined schema; they can, and probably should, be ad hoc by default.