An extension of Property for an attribute, or data.
The notion of an "attribute" is similar to that of an attribute in UML.
This interface is capable of modelling "primitive data", things like strings, numerics, dates, etc... However for "complex data" (that is non-primitive data types which are made up other primitive data types), a specific sub-interface is used, see {@link ComplexAttribute}.
An analogy for an attribute is a "field" in a java object. A field also brings together a field name, value and type.
Identifiable
When an attribute is identifiable the {@link #getID()} method returns aunique identifier for the attribute. The type of the attribute is used to determine identifiability.
Attribute attribute = ...; if ( attribute.getType().isIdentified() ) { String id = attribute.getID(); }
Validation
An attribute may hold any value at runtime; checking that the value meets the constraints supplied by the AttributeType is the work of the validate() method.
@see Property
@author Jody Garnett (Refractions Research)
@author Justin Deoliveira (The Open Planning Project)
@source $URL$