Attribute-value pairs
Attribute-value pairs contain information about items in the information commons.
You might think of an attribute as a box in a form to be filled in, and a value as the thing you write in the box as you fill in the form.
For example, name might be an attribute and John Smith might be the value you fill in.
telephone_number might be another attribute and 650 723-1691 might be the value you fill in.
This gives rise to the attribute-value pairs
name: John Smith
telephone_number: 650 723-1691
It's easy to imagine that lots more information about a person could be represented using attributes and values - address, date_of_birth, nationality, and even favorite_color.
By gathering together all the attributes and values that refer to the same object, and collecting this bundle of information under a unique address, we obtain a u-form.
Formats for attributes and values
An attribute is any
UTF-8 string. Attributes are case insensitive --- that is, a u-form cannot have the attributes "Height" and "height". Conventionally we lower-case all attributes.
A value can be any binary value of a known length. Conventionally we use
Visage Standard Message Format (see also VSMF) to encode data. Many implementations use VSMF as the native 'language' of their API, so that storing a non-VSMF value would require encapsulating it in a VMSF structure.
VSMF is a powerful recursive type system, capable of serializing a wide variety of common structures, including simple types like integers and strings, as well as container types like u-form and e-forms (dictionaries) and lists. VSMF is so powerful that there is a large amount of representational redundancy, and implementations must take care to handle "similar" VSMF types (e.g., big-endian short integer and small-endian short integer, or heterogeneous and homogenous arrays) equivalently when necessary. The VSMF type system is extensible, and it is designed so that nested values of unknown type can be skipped.
Attribute namespaces are defined by roles. There is a proposal for type-enhanced roles which define the range of acceptable value for a given attribute in a role, but it has never been implemented.
Back to CiviumDocumentation
