Best conventions for storage of common object-type data across types

Thanks for your reply.
Won’t use enums as I don’t know all of them beforehand.
I don’t agree with your use of Type in the 2nd example:

  • making a Status type that only contains one scalar predicate (name) doesn’t make sense, instead of placing that scalar predicate in the main type (Company)

I’d appreciate feedback on the solutions I proposed, such as which you think is the best.