Trait Profiles
A trait profile is a named, versioned set of required-to-implement traits and an associated list of required-to-implement properties and methods from those traits. When a thing indicates that it supports a given trait profile, it is promising that it fully supports all of the properties and methods that the trait profile requires.
Trait profiles provide a way for software to quickly classify the functionality of a thing and ensure that certain types of things have the appropriate minimal level of common functionality to ensure they meet user expectations.
For example, a trait profile for a "Dimmable Lamp" might require the
Base
, OnOff
, Level
, Energy
, and Light
traits, additionally
requiring some additional subset of the optional properties from those
traits to be implemented. The trait profile for a "Full-Color Lamp"
would require the exact same traits but also include an expanded list
of required-to-implement properties from those traits. A thing can
implement more than one trait profile, and some trait profiles require
that other specific trait profiles also be supported.