I've recently built a tagging system based on SKOS [1]. This supports hierarchical as well as associative relationships between tags (while not strictly requiring either), as well as ad hoc groups of tags.
While SKOS was intended for more formal vocabularies, I've found its use as a basis for a tagging system makes exploration and navigation of a topic area reasonably organic, as it allows users to specify relationships only as they see as fit and intuitive.
While SKOS was intended for more formal vocabularies, I've found its use as a basis for a tagging system makes exploration and navigation of a topic area reasonably organic, as it allows users to specify relationships only as they see as fit and intuitive.
[1]: https://www.w3.org/TR/skos-primer/