memento_mori said:
The first is handled by specific tags implying the less general one, and that might be good enough.
This is what we are already doing with combo-tags, but it's messy and inelegant. It ends up leading to a potentially combinatorial number of tags (for every adjective noun pair that is meaningful), and each is typically only used for a handful of posts.
Having a string of implications for each combo solves the problem of diluting the more general term (because they will invariably end up being omitted without them), but they have to be done manually, by an admin, after discussion in the forum. More likely someone someone will coin a new combo-tag on the fly, and just slip it in without discussion, causing the implication to not be created.
Thirdly, the string of implications, or even just manually adding the base tag (and adjective if it's a tag on its own, like striped, tartan, checked, etc) leads to tag bloat in the taglist of the posts in which it is used.
See also forum #35599 for a practical example of some of the problems with this method.
memento_mori said:
For the second, it could allow only one layer of child tags (but call them attached tags instead), so you could do "(kaguya black_hair) (mokou white_hair) touhou". That's easier to store (I think) and also easier to display (just indent the attachments).
I'm not sure that this would be a lot easier to implement than the general case, though if it is, I'm sure nesting of limited depth would be better than none at all.
For the problems in the first case though, and the incompatibility of combining the two cases if we use nesting for both without multiple levels, I would still look at exploring ways to do two levels or deeper if possible.
Even in the ideal case, limiting the depth wouldn't be much of a problem, though one level would be quite limiting.
I don't think display would ever be a huge issue (displayed indented or in a file-tree like you say) so long as levels can be closed/hidden and the taglist scrollable. Both of which are relatively easy to do with CSS and AJAX.