# Interface RecordSchema

All Known Implementing Classes:
  `DefaultRecordSchema`

@UML(identifier="RecordSchema", specification=ISO_19103) public interface RecordSchema
A collection of record types. All schemas possess an associated name space within which the record type names are defined. A schema is a flat data structure, similar to a Java package.

Record schemas do not provide a hierarchical framework within which data types may be organized. Name spaces, however, do define a hierarchical framework for arbitrary named items. Record schemas can participate in this framework by virtue of the fact that they are all identified by local name or some subclass. A schema's location in the hierarchy can be communicated by `getSchemaName().scope().name()`.

Since:
  2.1

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Map<TypeName, RecordType>`
  `getDescription()`
  Returns the dictionary of all (name, record type) pairs in this schema.
  `LocalName`
  `getSchemaName()`
  Returns the schema name.
  `RecordType`
  `locate(TypeName name)`
  Looks up the provided type name and returns the associated record type.

- ## Method Details

  - ### getSchemaName

    @UML(identifier="schemaName", obligation=MANDATORY, specification=ISO_19103) LocalName getSchemaName()
    Returns the schema name. The scope of the schema name is associated with a name space which fixes this schema to a specific location in the type hierarchy.
    Returns:
      The schema name.

  - ### getDescription

    @UML(identifier="description", obligation=MANDATORY, specification=ISO_19103) Map<TypeName, RecordType> getDescription()
    Returns the dictionary of all (name, record type) pairs in this schema.
    Returns:
      All (name, record type) pairs in this schema.

  - ### locate

    @UML(identifier="locate", obligation=MANDATORY, specification=ISO_19103) RecordType locate(TypeName name)
    Looks up the provided type name and returns the associated record type. If the type name is not defined within this schema, then this method returns `null`. This is functionally equivalent to `getDescription().get(name)`.
    Parameters:
      `name` - The name of type type to lookup.
    Returns:
      The type for the given name, or `null` if none.