Package org.apache.sis.xml

## Interface IdentifierSpace<T>

- Type Parameters:
    `T` - the type of object used as identifier values.
  All Superinterfaces:
    `Citation`

      public interface IdentifierSpace<T>
      extends Citation

  Some identifier namespaces that are handled in a special way. The identifier namespaces are usually defined as authorities in the `Citations` class. However a few identifiers defined in the `gco:ObjectIdentification` XML attribute group are handled in a special way. For example identifiers associated to the `HREF` space are marshalled in the outer property element, as in the example below:

  >     <cit:CI_Citation>
  >       <cit:series xlink:href="http://myReference">
  >         <cit:CI_Series>
  >           <cit:name>...</cit:name>
  >         </cit:CI_Series>
  >       </cit:series>
  >     </cit:CI_Citation>

  The values defined in this interface can be used as keys in the map returned by `IdentifiedObject​.getIdentifierMap()`.
  Since:
    0.3
  See Also:
    `Citations`, `IdentifiedObject`, `IdentifierMap`

  Defined in the `sis-metadata` module

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static IdentifierSpace<URI>` | `HREF` | An optional attribute for URN to an external resources, or to an other part of a XML document, or an identifier.
    `static IdentifierSpace<String>` | `ID` | A standard GML attribute available on every object-with-identity.
    `static IdentifierSpace<UUID>` | `UUID` | An optional attribute available on every object-with-identity provided in the GMD schemas that implement ISO 19115 in XML.
    `static IdentifierSpace<XLink>` | `XLINK` | Any XML attributes defined by OGC in the xlink schema.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getName()` | Returns the name of this identifier space.

    - ### Methods inherited from interface Citation

      `getAlternateTitles, getCitedResponsibleParties, getCollectiveTitle, getDates, getEdition, getEditionDate, getIdentifiers, getISBN, getISSN, getOtherCitationDetails, getPresentationForms, getSeries, getTitle`

- - ### Field Detail

    - #### ID

          static final IdentifierSpace<String> ID

      A standard GML attribute available on every object-with-identity. Its type is `"xs:ID"` - i.e. it is a fragment identifier, unique within document scope only, for internal cross-references. It is not useful by itself as a persistent unique identifier.

      The XML attribute name is `"gml:id"`, but is also used for `"gco:id"` in metadata documents. However the `"gco:"` prefix is omitted in XML documents (i.e. the `gco:id` attribute is unqualified).

      Elements with `gml:id` or `gco:id` attribute can be referenced from other XML elements using the `xlink:href` attribute. This is done automatically by Apache SIS implementations at marshalling and unmarshalling time. If many of `gml:id`, `gco:uuid` and `xlink:href` attributes are used, then `gml:id` has precedence.

      See Also:
        `XmlID`

    - #### UUID

          static final IdentifierSpace<UUID> UUID

      An optional attribute available on every object-with-identity provided in the GMD schemas that implement ISO 19115 in XML. May be used as a persistent unique identifier, but only available within GMD context.

      The XML attribute name is `"gco:uuid"`. However the `"gco:"` prefix is omitted in XML documents (i.e. the `gco:uuid` attribute is unqualified).

      Elements with `gco:uuid` attribute can be referenced from other XML elements using the `gco:uuidref` attribute. However this is not done automatically by Apache SIS. Users need to manage their set of UUIDs in their own `ReferenceResolver` subclass.

      See Also:
        `UUID`

    - #### HREF

          static final IdentifierSpace<URI> HREF

      An optional attribute for URN to an external resources, or to an other part of a XML document, or an identifier. This is one of the many attributes available in the `XLINK` identifier space, but is provided as a special constant because `href` is the most frequently used `xlink` attribute.

      The XML attribute name is `"xlink:href"`.

      See Also:
        `XLink​.getHRef()`

    - #### XLINK

          static final IdentifierSpace<XLink> XLINK

      Any XML attributes defined by OGC in the xlink schema. Note that the above `HREF` identifier space is a special case of this `xlink` identifier space.
      See Also:
        `XLink`

  - ### Method Detail

    - #### getName

          String getName()

      Returns the name of this identifier space.
      - For the constants defined in this `IdentifierSpace` interface, this is the XML attribute name with its prefix. Attribute names can be `"gml:id"`, `"gco:uuid"` or `"xlink:href"`.
      - For the constants defined in the `Citations` class, this is the identifier namespace. They are usually not XML attribute name because those identifiers are marshalled as `<MD_Identifier>` XML elements rather than attributes.
      Returns:
        the name of this identifier space (may be XML attribute name).