Tags should take arguments

Rather than being simple strings, tags on content should be able to take arguments. They could be positional arguments (for example, trip(Boston, Kingsport) or smiles(Alice) on a photo, history(Valletta) or criticism(CSS) on a blog post), key-value properties (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.

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