Hobson uses a generic model to represent various "buckets" of properties including configuration of hubs, plugins, devices, etc. (herein referred to as entities).
A PropertyContainerClass defines what is configurable about an entity. In more specific terms, it defines the configurable properties that an entity exposes.
For example, an SMS plugin might have two configurable properties: a username and password for an account with an SMS provider. That plugin would have a PropertyContainerClass with two supported properties: "username" of type STRING and "password" of type SECURE_TEXT.
It is worth noting that user interfaces will use PropertyContainerClasses to dynamically create forms the user can fill out to set the values of the supported properties.
It is also important to note that a PropertyContainerClass does NOT include the actual values for that configuration. For you object-oriented programmers out there, think of a PropertyContainerClass as an OO class defining configurable property meta-data. The actual values are an instance of that class which takes us to...
A PropertyContainer defines the values of a specific entity's configuration.
To extend our previous example, when user John Doe sets the SMS plugin's configuration (possibly through a web-based form), a PropertyContainer is created with two property values: "username" with a value of "john_doe" and "password" with a value of "Passw0rd". A PropertyContainer always has a reference to a PropertyContainerClass to which it is associated.