Tags are a subset of hierarchies + symlinks. If you have a one level hierarchy, you have the equivalent of tags.
I don't think I've seen tagging systems that let me tag tags out in the wild.
The tagged objects define the relationships between differing tags which allows you to define that arbitrary graph. The graph can be viewed as an effectively infinite depth tree if you wish to.