For example, is it a bad idea to have a resource type called “hot water” instead of just “water”?
In general, it’s a good idea to make resource types generic, and leave the attributes to the job of the properties. E.g., use “water” as your resource type, and add “temperature” as a property with a target specification value that indicates what “hot” means.
But there are times when it is appropriate and useful to get more specific with your resource types. I.e., if 96-well plate is a super-common plate type always used in a particular screening process, you might as well make a resource type called “96-well plate” rather than something more generic like “plate”. It will save you time and be more clear in your design.
But if your experiment might use 96-well plates sometimes, and 384-well plates other times, it’s better to use the generic “plate” resource and add a “type” property to define what kind, or a “wells” property with a well count associated as a target value.