Package org.opengis.util

A set of base types from ISO 19103 which can not be mapped directly from Java, plus utilities. Type hierarchy is as below:
Package overview
Records Names Factories Other
 ISO 19103 object
  ├─ RecordSchema
  ├─ Type
  │   └─ RecordType
  └─ Record
 ISO 19103 object
  └─ GenericName
      ├─ ScopedName
      └─ LocalName
          ├─ TypeName
          └─ MemberName
 GeoAPI object
  └─ Factory
      ├─ NameFactory
      ├─ ObjectFactory
      └─ AuthorityFactory
 GeoAPI object
  └─ InternationalString

Names and Namespaces

The job of a "name" in the context of ISO 19103 is to associate that name with an Object. A use of the namespace structure defined in 19103 is the translation of given names into specific storage formats. XML has different naming rules than shapefiles, and both are different than netCDF. Specialized names are mapped to data as below:

The GenericName javadoc provides more details about name structure.

Records and Schemas

A RecordType is similar to a struct declaration in C/C++, a table definition in SQL, a RECORD in Pascal, or an attribute-only class declaration in Java if it were stripped of all notions of inheritance. RecordTypes can be organized into a named collection called RecordSchema, which is similar to a schema in SQL or a package in Java. Both records and schemas behave as dictionaries for their members.

A Record is an instance of RecordType containing the actual attribute values. If we think about RecordType as equivalent to a simple feature (ISO 19109) or a Java class, then we can establish the following equivalence table:

Equivalences between records, features and Java constructs
ISO 19103 ISO 19109 Java equivalent
Record Feature Object
Record.getRecordType() Feature.getType() Object.getClass()
RecordType FeatureType Class
RecordType.getTypeName() FeatureType.getName() Class.getName()
RecordType.getContainer() Class.getPackage()
RecordType.getMembers() FeatureType.getProperties(boolean) Class.getFields()
RecordType.locate(MemberName) getProperty(String) Class.getField(String)
RecordType.isInstance(Record) Class.isInstance(Object)
RecordSchema Package