Cool! As I was submitting the original post, I was like "oh this is probably one of those don't-mix-the-types things" which you have also captured here in the "attributes" mental model. So I do think that's the "workaround" I was/am headed toward.
However, I know that your customer going "yeah, okay, I get it" is not as satisfying as actually improving their situation/answering their question, so I will flesh out my example a little. First, this doesn't invalidate your point, but for clarity, to us, proteins ARE categorized by disease. Like, in some instances, a brain-related protein would be of interest for Alzheimers AND Parkinsons, but an immune system protein that we are looking at for MS wouldn't be of interest for, say, stroke (don't @ me, neuroscientists!). So that protein would be "an MS protein" for our purposes. But anyway!
So in my mind, there's a little bit of pressure to not have a million categories, so in a situation like we have, which will have very diverse tags, my inclination is to sort of "nest" right away. Then I have a theoretical user in my brain coming to the tags and going "How will I find my content?" and while it's true that some users will be like "gimme that protein!", many will be like "I want to know about my disease of interest!" and then when that menu opens, it doesn't make sense to stay strict to the attribute, because the interest is not going to be in, say, subtypes of Alzheimers (some day, hopefully!), it's going to be in projects (potential drugs that need questions answered about them), targets (what we've been calling "proteins"), clinical trials, etc.
So no, the problem isn't really "validity" of tag combos, it's having overlapping hierarchies, and I suppose supporting different use cases - people who would "start" at the disease level vs people who would "start" at the protein level and making sure they see the relevant subtags. I can currently have "AD -> target 1" and "PD -> target 1" tags at the same time, but I do have to manually add both of them, and everything I know about databases tells me not to do that. And when I do it, the display is sorta weird looking.

Anyway, just typing this out has brought me back to graph theory, so I think I need to develop my use cases more thoroughly before I can see what really conflicts, because right now it's just full of potential for conflict. Thanks for engaging!