There's no built in support for tag trees per se, but I think the necessary components are in place.
Lets assume we have a bunch of tiddlers that are tagged, and that those tags are either tagged "person" or "city".
In TW5, you can transclude a list of tiddlers with triple curly braces around a tiddler filter. This gives you all the tags that are tagged "person":
This gives you all the tiddlers tagged with tags that are tagged "person":
{{{ [tag[person]tagging[]] }}}
Finally this one gives you all the tiddlers tagged with tags that are tagged by tags that are tagged "person":
{{{ [tag[person]tagging[]tagging[]] }}}
Things get a bit more interesting if we introduce templates. Assume that this is the text of a tiddler called "HierarchicalTagTemplate":
<div style="padding:1em;">
<$transclude template="$:/core/ui/TagTemplate"/>
{{{ [is[current]tagging[]] ||HierarchicalTagTemplate}}}
</div>
Then we can display a tree of tags from a particular root like this:
<$transclude template="TestTemplate" target="RootTag"/>
Right now, TW5 will go into an infinite loop if you have a circular tagging loop; which needs fixing.
There is documentation about the filter syntax here:
And documentation about list transclusion here:
Best wishes
Jeremy