Package org.apache.sis.xml

## Interface IdentifiedObject

- All Known Implementing Classes:
    `AbstractCompleteness`, `AbstractContentInformation`, `AbstractElement`, `AbstractGeographicExtent`, `AbstractGeolocationInformation`, `AbstractIdentification`, `AbstractLogicalConsistency`, `AbstractParty`, `AbstractPositionalAccuracy`, `AbstractResult`, `AbstractSpatialRepresentation`, `AbstractTemporalAccuracy`, `AbstractThematicAccuracy`, `DefaultAbsoluteExternalPositionalAccuracy`, `DefaultAccuracyOfATimeMeasurement`, `DefaultAcquisitionInformation`, `DefaultAddress`, `DefaultAggregateInformation`, `DefaultAlgorithm`, `DefaultApplicationSchemaInformation`, `DefaultAssociatedResource`, `DefaultAttributeGroup`, `DefaultBand`, `DefaultBoundingPolygon`, `DefaultBrowseGraphic`, `DefaultCitation`, `DefaultCitationDate`, `DefaultCompletenessCommission`, `DefaultCompletenessOmission`, `DefaultConceptualConsistency`, `DefaultConformanceResult`, `DefaultConstraints`, `DefaultContact`, `DefaultCoupledResource`, `DefaultCoverageDescription`, `DefaultCoverageResult`, `DefaultDataFile`, `DefaultDataIdentification`, `DefaultDataQuality`, `DefaultDigitalTransferOptions`, `DefaultDimension`, `DefaultDistribution`, `DefaultDistributor`, `DefaultDomainConsistency`, `DefaultEnvironmentalRecord`, `DefaultEvent`, `DefaultExtendedElementInformation`, `DefaultExtent`, `DefaultFeatureCatalogueDescription`, `DefaultFeatureTypeInfo`, `DefaultFormat`, `DefaultFormatConsistency`, `DefaultGCP`, `DefaultGCPCollection`, `DefaultGeographicBoundingBox`, `DefaultGeographicDescription`, `DefaultGeometricObjects`, `DefaultGeorectified`, `DefaultGeoreferenceable`, `DefaultGriddedDataPositionalAccuracy`, `DefaultGridSpatialRepresentation`, `DefaultIdentifier`, `DefaultImageDescription`, `DefaultIndividual`, `DefaultInstrument`, `DefaultKeywordClass`, `DefaultKeywords`, `DefaultLegalConstraints`, `DefaultLineage`, `DefaultMaintenanceInformation`, `DefaultMedium`, `DefaultMetadata`, `DefaultMetadataExtensionInformation`, `DefaultMetadataScope`, `DefaultNominalResolution`, `DefaultNonQuantitativeAttributeAccuracy`, `DefaultObjective`, `DefaultOnlineResource`, `DefaultOperation`, `DefaultOperationChainMetadata`, `DefaultOperationMetadata`, `DefaultOrganisation`, `DefaultPlan`, `DefaultPlatform`, `DefaultPlatformPass`, `DefaultPortrayalCatalogueReference`, `DefaultProcessing`, `DefaultProcessStep`, `DefaultProcessStepReport`, `DefaultQuantitativeAttributeAccuracy`, `DefaultQuantitativeResult`, `DefaultRangeDimension`, `DefaultRangeElementDescription`, `DefaultRelativeInternalPositionalAccuracy`, `DefaultReleasability`, `DefaultRepresentativeFraction`, `DefaultRequestedDate`, `DefaultRequirement`, `DefaultResolution`, `DefaultResponsibility`, `DefaultResponsibleParty`, `DefaultSampleDimension`, `DefaultScope`, `DefaultScope`, `DefaultScopeDescription`, `DefaultSecurityConstraints`, `DefaultSeries`, `DefaultServiceIdentification`, `DefaultSource`, `DefaultSpatialTemporalExtent`, `DefaultStandardOrderProcess`, `DefaultTelephone`, `DefaultTemporalConsistency`, `DefaultTemporalExtent`, `DefaultTemporalValidity`, `DefaultThematicClassificationCorrectness`, `DefaultTopologicalConsistency`, `DefaultUsability`, `DefaultUsage`, `DefaultVectorSpatialRepresentation`, `DefaultVerticalExtent`, `ISOMetadata`

      public interface IdentifiedObject

  The interface for all SIS objects having identifiers. Identifiers are `String` in a namespace identified by a `Citation`. The namespace can be some organization like EPSG for Coordinate Reference System objects, or a well-known acronym like ISBN for International Standard Book Number.

  When an identified object is marshalled in a ISO 19115-3 compliant XML document, some identifiers are handled in a special way: they appear as `gml:id`, `gco:uuid` or `xlink:href` attributes of the XML element. Those identifiers can be specified using the `IdentifierSpace` enum values as below:

  >     IdentifiedObject object = ...;
  >     object.getIdentifierMap().put(IdentifierSpace.ID, "myID");

  Relationship with GeoAPI
  Identifiers exist also in some (not all) GeoAPI objects. Some GeoAPI objects (`Instrument`, `Platform`, `Operation`, `Processing`, etc.) have an explicit single identifier attribute, while other GeoAPI objects (`Citation`, `Objective`, referencing `IdentifiedObject`, etc.) allow an arbitrary number of identifiers. However GeoAPI does not define explicit methods for handling the `id`, `uuid` or `href` attributes, since they are specific to XML marshalling (they do not appear in OGC/ISO abstract specifications). This `IdentifiedObject` interface provides a way to handle those identifiers.

  Note that GeoAPI defines a similar interface, also named `IdentifiedObject`. However that GeoAPI interface is not of general use, since it contains methods like `toWKT()` that are specific to referencing or geometric objects. In addition, the GeoAPI interface defines some attributes (name, alias, remarks) that are not needed for the purpose of handling XML `id`, `uuid` or `href` attributes.

  Since:
    0.3
  See Also:
    `IdentifierSpace`, `ISOMetadata`, `ReferenceResolver​.newIdentifiedObject(MarshalContext, Class, Identifier[])`

  Defined in the `sis-metadata` module

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `IdentifierMap` | `getIdentifierMap()` | A map view of the identifiers collection as (authority, code) entries.
    `Collection<? extends Identifier>` | `getIdentifiers()` | Returns all identifiers associated to this object.

- - ### Method Detail

    - #### getIdentifiers

          Collection<? extends Identifier> getIdentifiers()

      Returns all identifiers associated to this object. Each identifier code shall be unique in the identifier authority name space. Examples of namespace are:
      - EPSG codes
      - Universal Product Code (UPC)
      - National Stock Number (NSN)
      - International Standard Book Number (ISBN)
      - International Standard Serial Number (ISSN)
      - Universally Unique Identifier (UUID)
      - XML ID attribute
      - XLink (`href`, `role`, `arcrole`, `title`, `show` and `actuate` attributes)
      Note that XML ID attribute are actually unique only in the scope of the XML document being processed.
      Returns:
        all identifiers associated to this object, or an empty collection if none.
      See Also:
        `DefaultCitation​.getIdentifiers()`, `DefaultObjective​.getIdentifiers()`, `AbstractIdentifiedObject​.getIdentifiers()`

    - #### getIdentifierMap

          IdentifierMap getIdentifierMap()

      A map view of the identifiers collection as (authority, code) entries. Each map entry is associated to an element from the above identifier collection in which the key is the identifier authority and the value is the identifier code.

      There is usually a one-to-one relationship between the map entries and the identifier elements, but not always:

      - The map view may contain less entries, because the map interface allows only one entry per authority. If the identifier collection contains many identifiers for the same authority, then only the first occurrence is visible through this `Map` view.
      - The map view may also contain more entries than the identifier collection. For example the `Citation` interface defines separated attributes for ISBN, ISSN and other identifiers. This map view may choose to unify all those attributes in a single view.
      The map supports `put` operations if and only if this `IdentifiedObject` is modifiable.
      Returns:
        the identifiers as a map of (authority, code) entries, or an empty map if none.