Hopefully this question fits here. I had it posted on another stackexchange site and it was deleted for being off topic--but the problem is this doesn't fit neatly into a topic. It lies on the border of software/algorithms, math/logic, possibly data structures, but since the main utility is in terms of the mental model of the human user it seems to fit here.
We are all familiar with tree/"folder"-based organization schemes, in which items are grouped in progressively more specific categories, with each single item or sub-category belonging to ONE larger category. However, there are quite some instances where it would be useful to allow each category to have MULTIPLE "parents". For instance, one might want to categorize a paper about an image processing algorithm under both a "photography" category and a "programming" category, or a photo of a bird taken on vacation in Africa to be categorized under both "Africa vacation" and "wildlife", and have it be equally findable browsing either of these categories. The tree model necessarily requires prioritizing one classification over the other, or keeping multiple copies of path nodes or even files themselves.
This problem seems obvious enough that I'd think someone would have already come up with a name, standard logical scheme, and implementation(s) for such a "non-exclusive classification". What I mean is, some kind of application layer that sits "on top of" the tree structure of the native file system and provides a "multiple overlapping category" metaphor to the user, allowing navigation to a sub-item from any of its parents, as well as displaying all parents of a node besides only the one on the path that was used to browse there. There are a few limited cases where I know such a thing DOES exist, like in photo apps where tags are assigned to images non-exclusively.
I'm wondering, though, if there is an accepted name for this type of organization scheme so that I can search for software that implements it. If not, I may choose to implement one as this seems too useful not to exist, but I don't want to re-invent something that's already out there. To give a concrete example, this idea was prompted for me by the specific case of Chrome bookmarks, but there are many other use cases I can think of.