It sounds like the base abstraction here is "tagging."
At the protocol level, would it make sense to focus on a generic tagging system that could describe any kind of event?
It seems like that would be broadly useful while still allowing clients to decide at the application level if they want to, say, use tags to describe a person's relationships.