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 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.
  `static final IdentifierSpace<String>`
  `ID`
  A standard GML attribute available on every object-with-identity.
  `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.
  `static final IdentifierSpace<XLink>`
  `XLINK`
  Any XML attributes defined by OGC in the xlink schema.

- ## Method Summary

  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 Details

  - ### 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 Details

  - ### 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).