FeatureType provides metadata model describing the represented information. This is considered “metadata” as it is a description of the information stored in the features.
FeatureType is used when:
The type is represented by PropertyType, AttributeType, GeometryType, ComplexType, FeatureType.
This forms a “dynamic type system” indicating we can describe new types of information at runtime. To make this a complete type system we have support for references (with AssociationType) and methods (with OperationType) although use of these facilities is considered experimental at present.
As shown above a ComplexType contains a list of properties each represented as a PropertyDescriptor with a distinct name and property type.