# Package org.apache.sis.util.iso

package org.apache.sis.util.iso
Implementations of GeoAPI types from the `org​.opengis​.util` package. The main content of this package are:

- Implementations of `GenericName` (derived from ISO 19103):
  - `DefaultLocalName` for identifier within a name space.
  - `DefaultMemberName` for identifying a member of a record.
  - `DefaultTypeName` for identifying an attribute type associated to a member.
  - `DefaultScopedName` for a composite of a head name and a tail name.
- Implementations of `Record` and related classes (derived from ISO 19103):
  - `DefaultRecord` for a list of logically related elements as (name, value) pairs.
  - `DefaultRecordType` for definition of the type of a `Record`.
  - `DefaultRecordSchema` for a collection of `RecordType`s in a given namespace.
- Static utility methods:
  - `Types` for working with UML identifiers and description of GeoAPI types.
  - `Names` for simple creation and operations on `GenericName`.

## Anatomy of a name

Names may be fully qualified (like `"urn:ogc:def:crs:EPSG::4326"`), or they may be relative to a scope (like `"EPSG::4326"` in the `"urn:ogc:def:crs"` scope). In the following illustration, each line is one possible construction for `"urn:ogc:crs:epsg:4326"` (taken as an abridged form of above URN for this example only). For each construction:

- The first columns shows the name in a green background.
- The second and third columns show the (head.tail) and (path.tip) components, respectively.
- The parts without colored background do not appear in the string representation or in the list of parsed names.

Components in scope, head, tail, path and tip
scope.name | head.tail | path.tip | Type
--- | --- | --- | ---
`urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | Scoped name with global namespace
`urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | Scoped name
`urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | Scoped name
`urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | Scoped name
`urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | `urn:ogc:crs:epsg:4326` | Local name

Since:
  0.3

Defined in the `sis-metadata` module

- Related Packages
  Package
  Description
  org.apache.sis.util
  Simple data objects and miscellaneous utilities.
  org.apache.sis.util.collection
  Addition to the collection framework.
  org.apache.sis.util.logging
  Extensions to the JDK logging framework.
- Classes
  Class
  Description
  AbstractFactory
  Base class of factories provided in the Apache SIS library.
  AbstractName
  Base class for sequence of identifiers rooted within the context of a namespace.
  DefaultLocalName
  Identifier within a name space for a local object.
  DefaultMemberName
  The name to identify a member of a record.
  DefaultNameFactory
  A factory for creating `AbstractName` objects.
  DefaultNameSpace
  A domain in which names given by character strings are defined.
  DefaultRecord
  A list of logically related elements as (name, value) pairs in a dictionary.
  DefaultRecordSchema
  A collection of record types in a given namespace.
  DefaultRecordType
  An immutable definition of the type of a record.
  DefaultScopedName
  A composite of a name space (as a local name) and a generic name valid in that name space.
  DefaultTypeName
  The name of an attribute type associated to a member name.
  Names
  Static methods for creating, parsing and formatting generic names.
  Types
  Static methods working on GeoAPI types and `CodeList` values.