Objects, attributes and relations need some representation in the UI, be it text labels, icons or any other appropriate type.
Every entity can have any number of representations of type Graphic.
E.g. an application could pass 3 texts with different lengths and 2 icons in different sizes/resolutions for a single entity, and the OOUI Kit then chooses the shortest text and one of the icons as labels for a button, the medium length text as tooltip and the long text as help.
Skins may be changed by the user without the app knowing.
All identifers in the model count as static entity and must have at least a short text (<= 3 words, similar to a menu entry or icon text) representation.
Instances count as dynamic entity. I.e. in addition to per-type (i.e. per-identifer) representations, an app may provide representations for a specific instance of an object.
A file manager has generic icons (static representations) for files, icons for certain file types (propably dynamic representations for files) and might even supply the content of image files as a possible (dynamic) representation. Note, that the kit can ignore this “icon” for the image or implement a full image viewer with that info.
We need to support applications, which have to draw into the window by themselves, e.g. chart apps.
We allow specific representations (arbitary Graphics, which may actually be huge scene subgraphs) for individual objects anyway, and we allow multiple representations of very different detail level.
See Open Problems