# Class DefaultMetadata

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultMetadata

All Implemented Interfaces:
  `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`, `Metadata`

public class DefaultMetadata extends ISOMetadata implements Metadata
Root entity which defines metadata about a resource or resources. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
`MD_Metadata` `├─language…………………………………………………` Language used for documenting metadata. `├─characterSet………………………………………` Full name of the character coding standard used for the metadata set. `├─contact……………………………………………………` Parties responsible for the metadata information. `│ ├─party………………………………………………` Information about the parties. `│ │ └─name………………………………………` Name of the party. `│ └─role…………………………………………………` Function performed by the responsible party. `├─identificationInfo………………………` Basic information about the resource(s) to which the metadata applies. `│ ├─citation………………………………………` Citation data for the resource(s). `│ │ ├─title……………………………………` Name by which the cited resource is known. `│ │ └─date………………………………………` Reference date for the cited resource. `│ ├─abstract………………………………………` Brief narrative summary of the content of the resource(s). `│ ├─extent……………………………………………` Bounding polygon, vertical, and temporal extent of the dataset. `│ │ ├─description……………………` The spatial and temporal extent for the referring object. `│ │ ├─geographicElement……` Geographic component of the extent of the referring object. `│ │ ├─temporalElement…………` Temporal component of the extent of the referring object. `│ │ └─verticalElement…………` Vertical component of the extent of the referring object. `│ └─topicCategory…………………………` Main theme(s) of the dataset. `├─dateInfo…………………………………………………` Date(s) associated with the metadata. `├─metadataScope……………………………………` The scope or type of resource for which metadata is provided. `│ └─resourceScope…………………………` Resource scope `└─parentMetadata…………………………………` Identification of the parent metadata record. `├─title………………………………………………` Name by which the cited resource is known. `└─date…………………………………………………` Reference date for the cited resource.

## Localization

When this object is marshalled as an ISO 19139 compliant XML document, the value given to the `setLanguage(Locale)` method will be used for the localization of `InternationalString` and `CodeList` instances of in this `DefaultMetadata` object and every children, as required by INSPIRE rules. If no language were specified, then the default locale will be the one defined in the `XML​.LOCALE` marshaller property, if any.

## Limitations

- Instances of this class are not synchronized for multi-threading. Synchronization, if needed, is caller's responsibility.
- Serialized objects of this class are not guaranteed to be compatible with future Apache SIS releases. Serialization support is appropriate for short term storage or RMI between applications running the same version of Apache SIS. For long term storage, use `XML` instead.

Since:
  0.3
See Also:
  - `Resource​.getMetadata()`
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class ModifiableMetadata

  `ModifiableMetadata​.State`

- ## Field Summary

  ### Fields inherited from class ISOMetadata

  `identifiers`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultMetadata()`
  Creates an initially empty metadata.
  `DefaultMetadata(ResponsibleParty contact, Temporal dateStamp, Identification identificationInfo)`
  Creates a meta data initialized to the specified values.
  `DefaultMetadata(ResponsibleParty contact, Date dateStamp, Identification identificationInfo)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Replaced by `DefaultMetadata(ResponsibleParty, Temporal, Identification)`.
  `DefaultMetadata(Metadata object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultMetadata`
  `castOrCopy(Metadata object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `static DefaultMetadata`
  `deepCopy(Metadata object)`
  Returns an editable copy of the given metadata.
  `Collection<AcquisitionInformation>`
  `getAcquisitionInformation()`
  Returns information about the acquisition of the data.
  `Collection<Citation>`
  `getAlternativeMetadataReferences()`
  Returns reference(s) to alternative metadata or metadata in a non-ISO standard for the same resource.
  `Collection<ApplicationSchemaInformation>`
  `getApplicationSchemaInfo()`
  Returns information about the conceptual schema of a dataset.
  `CharacterSet`
  `getCharacterSet()`
  Deprecated.
  Replaced by `getLocalesAndCharsets().values()`.
  `Collection<ResponsibleParty>`
  `getContacts()`
  Returns the parties responsible for the metadata information.
  `Collection<ContentInformation>`
  `getContentInfo()`
  Returns information about the feature catalogue and describes the coverage and image data characteristics.
  `Collection<DataQuality>`
  `getDataQualityInfo()`
  Returns overall assessment of quality of a resource(s).
  `String`
  `getDataSetUri()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getIdentificationInfo()` followed by `AbstractIdentification​.getCitation()` followed by `DefaultCitation​.getOnlineResources()`.
  `Collection<CitationDate>`
  `getDateInfo()`
  Returns the date(s) associated with the metadata.
  `Date`
  `getDateStamp()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getDateInfo()`.
  `Distribution`
  `getDistributionInfo()`
  Returns information about the distributor of and options for obtaining the resource(s).
  `String`
  `getFileIdentifier()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataIdentifier()` in order to include the codespace attribute.
  `final Collection<String>`
  `getHierarchyLevelNames()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataScopes()` followed by `DefaultMetadataScope​.getName()`.
  `final Collection<ScopeCode>`
  `getHierarchyLevels()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataScopes()` followed by `DefaultMetadataScope​.getResourceScope()`.
  `Collection<Identification>`
  `getIdentificationInfo()`
  Returns basic information about the resource(s) to which the metadata applies.
  `Locale`
  `getLanguage()`
  Deprecated.
  Replaced by `getLocalesAndCharsets().keySet()`.
  `Collection<Locale>`
  `getLocales()`
  Deprecated.
  Replaced by `getLocalesAndCharsets().keySet()`.
  `Map<Locale,Charset>`
  `getLocalesAndCharsets()`
  Returns the language(s) and character set(s) used for documenting metadata.
  `Collection<Constraints>`
  `getMetadataConstraints()`
  Returns restrictions on the access and use of metadata.
  `Collection<MetadataExtensionInformation>`
  `getMetadataExtensionInfo()`
  Returns information describing metadata extensions.
  `Identifier`
  `getMetadataIdentifier()`
  Returns a unique identifier for this metadata record.
  `Collection<OnlineResource>`
  `getMetadataLinkages()`
  Returns the online location(s) where the metadata is available.
  `MaintenanceInformation`
  `getMetadataMaintenance()`
  Returns information about the frequency of metadata updates, and the scope of those updates.
  `Collection<Citation>`
  `getMetadataProfiles()`
  Returns the citation(s) for the profile(s) of the metadata standard to which the metadata conform.
  `Collection<DefaultMetadataScope>`
  `getMetadataScopes()`
  Returns the scope or type of resource for which metadata is provided.
  `String`
  `getMetadataStandardName()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.getTitle()`.
  `Collection<Citation>`
  `getMetadataStandards()`
  Returns the citation(s) for the standard(s) to which the metadata conform.
  `String`
  `getMetadataStandardVersion()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.getEdition()`.
  `String`
  `getParentIdentifier()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getParentMetadata()`.
  `Citation`
  `getParentMetadata()`
  Returns an identification of the parent metadata record.
  `Collection<PortrayalCatalogueReference>`
  `getPortrayalCatalogueInfo()`
  Returns information about the catalogue of rules defined for the portrayal of a resource(s).
  `Collection<ReferenceSystem>`
  `getReferenceSystemInfo()`
  Returns the description of the spatial and temporal reference systems used in the dataset.
  `Collection<Lineage>`
  `getResourceLineages()`
  Returns information about the provenance, sources and/or the production processes applied to the resource.
  `Collection<SpatialRepresentation>`
  `getSpatialRepresentationInfo()`
  Returns the digital representation of spatial information in the dataset.
  `void`
  `setAcquisitionInformation(Collection<? extends AcquisitionInformation> newValues)`
  Sets information about the acquisition of the data.
  `void`
  `setAlternativeMetadataReferences(Collection<? extends Citation> newValues)`
  Set reference(s) to alternative metadata or metadata in a non-ISO standard for the same resource.
  `void`
  `setApplicationSchemaInfo(Collection<? extends ApplicationSchemaInformation> newValues)`
  Returns information about the conceptual schema of a dataset.
  `void`
  `setCharacterSet(CharacterSet newValue)`
  Deprecated.
  Replaced by `getLocalesAndCharsets().put(…, newValue)`.
  `void`
  `setContacts(Collection<? extends ResponsibleParty> newValues)`
  Sets the parties responsible for the metadata information.
  `void`
  `setContentInfo(Collection<? extends ContentInformation> newValues)`
  Sets information about the feature catalogue and describes the coverage and image data characteristics.
  `void`
  `setDataQualityInfo(Collection<? extends DataQuality> newValues)`
  Sets overall assessment of quality of a resource(s).
  `void`
  `setDataSetUri(String newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `getIdentificationInfo()` followed by `AbstractIdentification​.getCitation()` followed by `DefaultCitation​.setOnlineResources(Collection)`.
  `void`
  `setDateInfo(Collection<? extends CitationDate> newValues)`
  Sets the date(s) associated with the metadata.
  `void`
  `setDateStamp(Date newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setDateInfo(Collection)`.
  `void`
  `setDistributionInfo(Distribution newValue)`
  Sets information about the distributor of and options for obtaining the resource(s).
  `void`
  `setFileIdentifier(String newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setMetadataIdentifier(Identifier)`
  `void`
  `setHierarchyLevelNames(Collection<? extends String> newValues)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setMetadataScopes(Collection)` and `DefaultMetadataScope​.setName(InternationalString)`.
  `void`
  `setHierarchyLevels(Collection<? extends ScopeCode> newValues)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setMetadataScopes(Collection)` and `DefaultMetadataScope​.setResourceScope(ScopeCode)`.
  `void`
  `setIdentificationInfo(Collection<? extends Identification> newValues)`
  Sets basic information about the resource(s) to which the metadata applies.
  `void`
  `setLanguage(Locale newValue)`
  Deprecated.
  Replaced by `getLocalesAndCharsets().put(newValue, …)`.
  `void`
  `setLocales(Collection<? extends Locale> newValues)`
  Deprecated.
  Replaced by putting keys in `getLocalesAndCharsets()`.
  `void`
  `setLocalesAndCharsets(Map<? extends Locale, ? extends Charset> newValues)`
  Sets the language(s) and character set(s) used within the dataset.
  `void`
  `setMetadataConstraints(Collection<? extends Constraints> newValues)`
  Sets restrictions on the access and use of metadata.
  `void`
  `setMetadataExtensionInfo(Collection<? extends MetadataExtensionInformation> newValues)`
  Sets information describing metadata extensions.
  `void`
  `setMetadataIdentifier(Identifier newValue)`
  Sets the unique identifier for this metadata record.
  `void`
  `setMetadataLinkages(Collection<? extends OnlineResource> newValues)`
  Sets the online location(s) where the metadata is available.
  `void`
  `setMetadataMaintenance(MaintenanceInformation newValue)`
  Sets information about the frequency of metadata updates, and the scope of those updates.
  `void`
  `setMetadataProfiles(Collection<? extends Citation> newValues)`
  Set the citation(s) for the profile(s) of the metadata standard to which the metadata conform.
  `void`
  `setMetadataScopes(Collection<? extends DefaultMetadataScope> newValues)`
  Sets the scope or type of resource for which metadata is provided.
  `void`
  `setMetadataStandardName(String newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.setTitle(InternationalString)`.
  `void`
  `setMetadataStandards(Collection<? extends Citation> newValues)`
  Sets the citation(s) for the standard(s) to which the metadata conform.
  `void`
  `setMetadataStandardVersion(String newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.setEdition(InternationalString)`.
  `void`
  `setParentIdentifier(String newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `getParentMetadata()`.
  `void`
  `setParentMetadata(Citation newValue)`
  Sets an identification of the parent metadata record.
  `void`
  `setPortrayalCatalogueInfo(Collection<? extends PortrayalCatalogueReference> newValues)`
  Sets information about the catalogue of rules defined for the portrayal of a resource(s).
  `void`
  `setReferenceSystemInfo(Collection<? extends ReferenceSystem> newValues)`
  Sets the description of the spatial and temporal reference systems used in the dataset.
  `void`
  `setResourceLineages(Collection<? extends Lineage> newValues)`
  Sets information about the provenance, sources and/or the production processes applied to the resource.
  `void`
  `setSpatialRepresentationInfo(Collection<? extends SpatialRepresentation> newValues)`
  Sets the digital representation of spatial information in the dataset.

  ### Methods inherited from class ISOMetadata

  `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier`

  ### Methods inherited from class ModifiableMetadata

  `checkWritePermission, collectionType, copyCollection, copyList, copyMap, copySet, deepCopy, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, writeCollection, writeList, writeMap, writeSet`

  ### Methods inherited from class AbstractMetadata

  `asMap, asTreeTable, clone, equals, equals, getInterface, hashCode, isEmpty, nilReasons, prune, toString`

  ### Methods inherited from class Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### DefaultMetadata

    public DefaultMetadata()
    Creates an initially empty metadata.

  - ### DefaultMetadata

    @Deprecated(since="1.5", forRemoval=true) public DefaultMetadata(ResponsibleParty contact, Date dateStamp, Identification identificationInfo)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Replaced by `DefaultMetadata(ResponsibleParty, Temporal, Identification)`.
    Creates a meta data initialized to the specified values.
    Parameters:
      `contact` - party responsible for the metadata information.
      `dateStamp` - date that the metadata was created.
      `identificationInfo` - basic information about the resource to which the metadata applies.

  - ### DefaultMetadata

    public DefaultMetadata(ResponsibleParty contact, Temporal dateStamp, Identification identificationInfo)
    Creates a meta data initialized to the specified values.
    Parameters:
      `contact` - party responsible for the metadata information.
      `dateStamp` - date that the metadata was created.
      `identificationInfo` - basic information about the resource to which the metadata applies.
    Since:
      1.5

  - ### DefaultMetadata

    public DefaultMetadata(Metadata object)
    Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, because the other metadata contained in the given object are not recursively copied.
    Parameters:
      `object` - the metadata to copy values from, or `null` if none.
    See Also:
      - `castOrCopy(Metadata)`

- ## Method Details

  - ### castOrCopy

    public static DefaultMetadata castOrCopy(Metadata object)
    Returns a SIS metadata implementation with the values of the given arbitrary implementation. This method performs the first applicable action in the following choices:
    - If the given object is `null`, then this method returns `null`.
    - Otherwise if the given object is already an instance of `DefaultMetadata`, then it is returned unchanged.
    - Otherwise a new `DefaultMetadata` instance is created using the copy constructor and returned. Note that this is a shallow copy operation, because the other metadata contained in the given object are not recursively copied.

    #### Use case

    This method is useful before XML marshalling or serialization, which may not be supported by all implementations. However, the returned metadata is not guaranteed to be editable. For editable metadata, see `deepCopy(Metadata)`.
    Parameters:
      `object` - the object to get as a SIS implementation, or `null` if none.
    Returns:
      a SIS implementation containing the values of the given object (may be the given object itself), or `null` if the argument was null.

  - ### deepCopy

    public static DefaultMetadata deepCopy(Metadata object)
    Returns an editable copy of the given metadata. All children are also copied. This method is more expensive than `castOrCopy(Metadata)` because the copy is unconditional and much deeper. However, the result is guaranteed to be editable.

    #### Use case

    Metadata returned by `Resource​.getMetadata()` are typically unmodifiable. This `deepCopy(…)` method is useful for completing those metadata with new elements, for example before insertion in a catalog.
    Parameters:
      `object` - the metadata to copy, or `null` if none.
    Returns:
      a deep copy of the given object, or `null` if the argument was null.
    Since:
      1.1
    See Also:
      - `ModifiableMetadata​.deepCopy(State)`
      - `ModifiableMetadata​.State​.EDITABLE`

  - ### getMetadataIdentifier

    @UML(identifier="metadataIdentifier", obligation=OPTIONAL, specification=ISO_19115) public Identifier getMetadataIdentifier()
    Returns a unique identifier for this metadata record.

    #### Standard usage

    OGC 07-045 (Catalog Service Specification — ISO metadata application profile) recommends usage of a UUID (Universal Unique Identifier) as specified by IETF to ensure identifier’s uniqueness.
    Returns:
      unique identifier for this metadata record, or `null`.
    Since:
      0.5

  - ### setMetadataIdentifier

    public void setMetadataIdentifier(Identifier newValue)
    Sets the unique identifier for this metadata record.
    Parameters:
      `newValue` - the new identifier, or `null` if none.
    Since:
      0.5

  - ### getFileIdentifier

    @Deprecated(since="1.0") public String getFileIdentifier()
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataIdentifier()` in order to include the codespace attribute.
    Returns the unique identifier for this metadata file.
    Specified by:
      `getFileIdentifier` in interface `Metadata`
    Returns:
      unique identifier for this metadata file, or `null`.

  - ### setFileIdentifier

    @Deprecated(since="1.0") public void setFileIdentifier(String newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `setMetadataIdentifier(Identifier)`
    Sets the unique identifier for this metadata file.
    Parameters:
      `newValue` - the new identifier, or `null` if none.

  - ### getLocalesAndCharsets

    @UML(identifier="defaultLocale+otherLocale", obligation=CONDITIONAL, specification=ISO_19115) public Map<Locale,Charset> getLocalesAndCharsets()
    Returns the language(s) and character set(s) used for documenting metadata. The first entry in iteration order is the default language and its character set. All other entries, if any, are alternate language(s) and character set(s) used within the resource.

    Unless another locale has been specified with the `XML​.LOCALE` property, this `DefaultMetadata` instance and its children will use the first locale returned by this method for marshalling `InternationalString` and `CodeList` instances in ISO 19115-2 compliant XML documents.

    Each (`Locale`, `Charset`) entry is equivalent to an instance of ISO 19115 `PT_Locale` class. The language code and the character set are mandatory elements in ISO standard. Consequently, this map should not contain null key or null values, but Apache SIS implementations is tolerant for historical reasons. The same character set may be associated to many languages.

    Returns:
      language(s) and character set(s) used for documenting metadata.
    Since:
      1.0

  - ### setLocalesAndCharsets

    public void setLocalesAndCharsets(Map<? extends Locale, ? extends Charset> newValues)
    Sets the language(s) and character set(s) used within the dataset. The first element in iteration order should be the default language. All other elements, if any, are alternate language(s) used within the resource.
    Parameters:
      `newValues` - the new language(s) and character set(s) used for documenting metadata.
    Since:
      1.0
    See Also:
      - `XML​.LOCALE`

  - ### getLanguage

    @Deprecated(since="1.0") public Locale getLanguage()
    Deprecated.
    Replaced by `getLocalesAndCharsets().keySet()`.
    Returns the default language used for documenting metadata.
    Specified by:
      `getLanguage` in interface `Metadata`
    Returns:
      language used for documenting metadata, or `null`.

  - ### setLanguage

    @Deprecated(since="1.0") public void setLanguage(Locale newValue)
    Deprecated.
    Replaced by `getLocalesAndCharsets().put(newValue, …)`.
    Sets the language used for documenting metadata. This method modifies the collection returned by
    invalid reference

        #getLanguages()

    as below:
    - If the languages collection is empty, then this method sets the collection to the given `newValue`.
    - Otherwise the first element in the languages collection is replaced by the given `newValue`.
    Parameters:
      `newValue` - the new language.

  - ### getLocales

    @Deprecated(since="1.0") public Collection<Locale> getLocales()
    Deprecated.
    Replaced by `getLocalesAndCharsets().keySet()`.
    Provides information about an alternatively used localized character string for a linguistic extension.
    Specified by:
      `getLocales` in interface `Metadata`
    Returns:
      alternatively used localized character string for a linguistic extension.

  - ### setLocales

    @Deprecated public void setLocales(Collection<? extends Locale> newValues)
    Deprecated.
    Replaced by putting keys in `getLocalesAndCharsets()`.
    Sets information about an alternatively used localized character string for a linguistic extension.
    Parameters:
      `newValues` - the new locales.

  - ### getCharacterSet

    @Deprecated(since="1.0") public CharacterSet getCharacterSet()
    Deprecated.
    Replaced by `getLocalesAndCharsets().values()`.
    Returns the character coding standard used for the metadata set.
    Specified by:
      `getCharacterSet` in interface `Metadata`
    Returns:
      character coding standard used for the metadata, or `null`.

  - ### setCharacterSet

    @Deprecated(since="1.0") public void setCharacterSet(CharacterSet newValue)
    Deprecated.
    Replaced by `getLocalesAndCharsets().put(…, newValue)`.
    Sets the character coding standard used for the metadata set.
    Parameters:
      `newValue` - the new character set.

  - ### getParentMetadata

    @UML(identifier="parentMetadata", obligation=CONDITIONAL, specification=ISO_19115) public Citation getParentMetadata()
    Returns an identification of the parent metadata record. This is non-null if this metadata is a subset (child) of another metadata that is described elsewhere.
    Returns:
      identification of the parent metadata record, or `null` if none.
    Since:
      0.5

  - ### setParentMetadata

    public void setParentMetadata(Citation newValue)
    Sets an identification of the parent metadata record.
    Parameters:
      `newValue` - the new identification of the parent metadata record.
    Since:
      0.5

  - ### getParentIdentifier

    @Deprecated(since="1.0") public String getParentIdentifier()
    Deprecated.
    As of ISO 19115:2014, replaced by `getParentMetadata()`.
    Returns the file identifier of the metadata to which this metadata is a subset (child).
    Specified by:
      `getParentIdentifier` in interface `Metadata`
    Returns:
      identifier of the metadata to which this metadata is a subset, or `null`.

  - ### setParentIdentifier

    @Deprecated(since="1.0") public void setParentIdentifier(String newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `getParentMetadata()`.
    Sets the file identifier of the metadata to which this metadata is a subset (child).
    Parameters:
      `newValue` - the new parent identifier.

  - ### getMetadataScopes

    @UML(identifier="metadataScope", obligation=CONDITIONAL, specification=ISO_19115) public Collection<DefaultMetadataScope> getMetadataScopes()
    Returns the scope or type of resource for which metadata is provided.
    Upcoming API change — generalization
    The element type will be changed to the `MetadataScope` interface when GeoAPI will provide it (tentatively in GeoAPI 3.1).
    Returns:
      scope or type of resource for which metadata is provided.
    Since:
      0.5

  - ### setMetadataScopes

    public void setMetadataScopes(Collection<? extends DefaultMetadataScope> newValues)
    Sets the scope or type of resource for which metadata is provided.
    Upcoming API change — generalization
    The element type will be changed to the `MetadataScope` interface when GeoAPI will provide it (tentatively in GeoAPI 3.1).
    Parameters:
      `newValues` - the new scope or type of resource.
    Since:
      0.5

  - ### getHierarchyLevels

    @Deprecated(since="1.0") public final Collection<ScopeCode> getHierarchyLevels()
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataScopes()` followed by `DefaultMetadataScope​.getResourceScope()`.
    Returns the scope to which the metadata applies.
    Specified by:
      `getHierarchyLevels` in interface `Metadata`
    Returns:
      scope to which the metadata applies.

  - ### setHierarchyLevels

    @Deprecated(since="1.0") public void setHierarchyLevels(Collection<? extends ScopeCode> newValues)
    Deprecated.
    As of ISO 19115:2014, replaced by `setMetadataScopes(Collection)` and `DefaultMetadataScope​.setResourceScope(ScopeCode)`.
    Sets the scope to which the metadata applies.
    Parameters:
      `newValues` - the new hierarchy levels.

  - ### getHierarchyLevelNames

    @Deprecated(since="1.0") public final Collection<String> getHierarchyLevelNames()
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataScopes()` followed by `DefaultMetadataScope​.getName()`.
    Returns the name of the hierarchy levels for which the metadata is provided.
    Specified by:
      `getHierarchyLevelNames` in interface `Metadata`
    Returns:
      hierarchy levels for which the metadata is provided.

  - ### setHierarchyLevelNames

    @Deprecated(since="1.0") public void setHierarchyLevelNames(Collection<? extends String> newValues)
    Deprecated.
    As of ISO 19115:2014, replaced by `setMetadataScopes(Collection)` and `DefaultMetadataScope​.setName(InternationalString)`.
    Sets the name of the hierarchy levels for which the metadata is provided.
    Parameters:
      `newValues` - the new hierarchy level names.

  - ### getContacts

    public Collection<ResponsibleParty> getContacts()
    Returns the parties responsible for the metadata information.
    Upcoming API change — generalization
    As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change will be tentatively applied in GeoAPI 4.0.
    Specified by:
      `getContacts` in interface `Metadata`
    Returns:
      parties responsible for the metadata information.

  - ### setContacts

    public void setContacts(Collection<? extends ResponsibleParty> newValues)
    Sets the parties responsible for the metadata information.
    Parameters:
      `newValues` - the new contacts.

  - ### getDateInfo

    @UML(identifier="dateInfo", obligation=MANDATORY, specification=ISO_19115) public Collection<CitationDate> getDateInfo()
    Returns the date(s) associated with the metadata.
    Returns:
      date(s) associated with the metadata.
    Since:
      0.5
    See Also:
      - `Citation​.getDates()`

  - ### setDateInfo

    public void setDateInfo(Collection<? extends CitationDate> newValues)
    Sets the date(s) associated with the metadata. The collection should contain at least an element for `DateType​.CREATION`.
    Parameters:
      `newValues` - new dates associated with the metadata.
    Since:
      0.5

  - ### getDateStamp

    @Deprecated(since="1.0") public Date getDateStamp()
    Deprecated.
    As of ISO 19115:2014, replaced by `getDateInfo()`.
    Returns the date that the metadata was created.
    Specified by:
      `getDateStamp` in interface `Metadata`
    Returns:
      date that the metadata was created, or `null`.

  - ### setDateStamp

    @Deprecated(since="1.0") public void setDateStamp(Date newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `setDateInfo(Collection)`.
    Sets the date that the metadata was created.
    Parameters:
      `newValue` - the new date stamp.

  - ### getMetadataStandards

    @UML(identifier="metadataStandard", obligation=OPTIONAL, specification=ISO_19115) public Collection<Citation> getMetadataStandards()
    Returns the citation(s) for the standard(s) to which the metadata conform. The collection returned by this method typically contains elements from the `Citations​.ISO_19115` list.
    Returns:
      the standard(s) to which the metadata conform.
    Since:
      0.5
    See Also:
      - `getMetadataProfiles()`

  - ### setMetadataStandards

    public void setMetadataStandards(Collection<? extends Citation> newValues)
    Sets the citation(s) for the standard(s) to which the metadata conform. Metadata standard citations should include an identifier.
    Parameters:
      `newValues` - the new standard(s) to which the metadata conform.
    Since:
      0.5

  - ### getMetadataProfiles

    @UML(identifier="metadataProfile", obligation=OPTIONAL, specification=ISO_19115) public Collection<Citation> getMetadataProfiles()
    Returns the citation(s) for the profile(s) of the metadata standard to which the metadata conform.
    Returns:
      the profile(s) to which the metadata conform.
    Since:
      0.5
    See Also:
      - `getMetadataStandards()`
      - `getMetadataExtensionInfo()`

  - ### setMetadataProfiles

    public void setMetadataProfiles(Collection<? extends Citation> newValues)
    Set the citation(s) for the profile(s) of the metadata standard to which the metadata conform. Metadata profile standard citations should include an identifier.
    Parameters:
      `newValues` - the new profile(s) to which the metadata conform.
    Since:
      0.5

  - ### getAlternativeMetadataReferences

    @UML(identifier="alternativeMetadataReference", obligation=OPTIONAL, specification=ISO_19115) public Collection<Citation> getAlternativeMetadataReferences()
    Returns reference(s) to alternative metadata or metadata in a non-ISO standard for the same resource.
    Returns:
      reference(s) to alternative metadata (e.g. Dublin core, FGDC).
    Since:
      0.5

  - ### setAlternativeMetadataReferences

    public void setAlternativeMetadataReferences(Collection<? extends Citation> newValues)
    Set reference(s) to alternative metadata or metadata in a non-ISO standard for the same resource.
    Parameters:
      `newValues` - the new reference(s) to alternative metadata (e.g. Dublin core, FGDC).
    Since:
      0.5

  - ### getMetadataStandardName

    @Deprecated(since="1.0") public String getMetadataStandardName()
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.getTitle()`.
    Returns the name of the metadata standard (including profile name) used.
    Specified by:
      `getMetadataStandardName` in interface `Metadata`
    Returns:
      name of the metadata standard used, or `null`.

  - ### setMetadataStandardName

    @Deprecated(since="1.0") public void setMetadataStandardName(String newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.setTitle(InternationalString)`.
    Name of the metadata standard (including profile name) used.
    Parameters:
      `newValue` - the new metadata standard name.

  - ### getMetadataStandardVersion

    @Deprecated(since="1.0") public String getMetadataStandardVersion()
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.getEdition()`.
    Returns the version (profile) of the metadata standard used.
    Specified by:
      `getMetadataStandardVersion` in interface `Metadata`
    Returns:
      version of the metadata standard used, or `null`.

  - ### setMetadataStandardVersion

    @Deprecated(since="1.0") public void setMetadataStandardVersion(String newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `getMetadataStandards()` followed by `DefaultCitation​.setEdition(InternationalString)`.
    Sets the version (profile) of the metadata standard used.
    Parameters:
      `newValue` - the new metadata standard version.

  - ### getMetadataLinkages

    @UML(identifier="metadataLinkage", obligation=OPTIONAL, specification=ISO_19115) public Collection<OnlineResource> getMetadataLinkages()
    Returns the online location(s) where the metadata is available.
    Returns:
      online location(s) where the metadata is available.
    Since:
      0.5

  - ### setMetadataLinkages

    public void setMetadataLinkages(Collection<? extends OnlineResource> newValues)
    Sets the online location(s) where the metadata is available.
    Parameters:
      `newValues` - the new online location(s).
    Since:
      0.5

  - ### getDataSetUri

    @Deprecated(since="1.0") public String getDataSetUri()
    Deprecated.
    As of ISO 19115:2014, replaced by `getIdentificationInfo()` followed by `AbstractIdentification​.getCitation()` followed by `DefaultCitation​.getOnlineResources()`.
    Provides the URI of the dataset to which the metadata applies.
    Specified by:
      `getDataSetUri` in interface `Metadata`
    Returns:
      Uniform Resource Identifier of the dataset, or `null`.

  - ### setDataSetUri

    @Deprecated(since="1.0") public void setDataSetUri(String newValue) throws URISyntaxException
    Deprecated.
    As of ISO 19115:2014, replaced by `getIdentificationInfo()` followed by `AbstractIdentification​.getCitation()` followed by `DefaultCitation​.setOnlineResources(Collection)`.
    Sets the URI of the dataset to which the metadata applies. This method sets the linkage of the first online resource in the citation of the first identification info.
    Parameters:
      `newValue` - the new data set URI.
    Throws:
      `URISyntaxException` - if the given value cannot be parsed as a URI.

  - ### getSpatialRepresentationInfo

    public Collection<SpatialRepresentation> getSpatialRepresentationInfo()
    Returns the digital representation of spatial information in the dataset.
    Specified by:
      `getSpatialRepresentationInfo` in interface `Metadata`
    Returns:
      digital representation of spatial information in the dataset.

  - ### setSpatialRepresentationInfo

    public void setSpatialRepresentationInfo(Collection<? extends SpatialRepresentation> newValues)
    Sets the digital representation of spatial information in the dataset.
    Parameters:
      `newValues` - the new spatial representation info.

  - ### getReferenceSystemInfo

    public Collection<ReferenceSystem> getReferenceSystemInfo()
    Returns the description of the spatial and temporal reference systems used in the dataset.
    Specified by:
      `getReferenceSystemInfo` in interface `Metadata`
    Returns:
      spatial and temporal reference systems used in the dataset.

  - ### setReferenceSystemInfo

    public void setReferenceSystemInfo(Collection<? extends ReferenceSystem> newValues)
    Sets the description of the spatial and temporal reference systems used in the dataset.
    Parameters:
      `newValues` - the new reference system info.

  - ### getMetadataExtensionInfo

    public Collection<MetadataExtensionInformation> getMetadataExtensionInfo()
    Returns information describing metadata extensions.
    Specified by:
      `getMetadataExtensionInfo` in interface `Metadata`
    Returns:
      metadata extensions.

  - ### setMetadataExtensionInfo

    public void setMetadataExtensionInfo(Collection<? extends MetadataExtensionInformation> newValues)
    Sets information describing metadata extensions.
    Parameters:
      `newValues` - the new metadata extension info.

  - ### getIdentificationInfo

    public Collection<Identification> getIdentificationInfo()
    Returns basic information about the resource(s) to which the metadata applies.
    Specified by:
      `getIdentificationInfo` in interface `Metadata`
    Returns:
      the resource(s) to which the metadata applies.

  - ### setIdentificationInfo

    public void setIdentificationInfo(Collection<? extends Identification> newValues)
    Sets basic information about the resource(s) to which the metadata applies.
    Parameters:
      `newValues` - the new identification info.

  - ### getContentInfo

    public Collection<ContentInformation> getContentInfo()
    Returns information about the feature catalogue and describes the coverage and image data characteristics.
    Specified by:
      `getContentInfo` in interface `Metadata`
    Returns:
      the feature catalogue, coverage descriptions and image data characteristics.

  - ### setContentInfo

    public void setContentInfo(Collection<? extends ContentInformation> newValues)
    Sets information about the feature catalogue and describes the coverage and image data characteristics.
    Parameters:
      `newValues` - the new content info.

  - ### getDistributionInfo

    public Distribution getDistributionInfo()
    Returns information about the distributor of and options for obtaining the resource(s).
    Upcoming API change — multiplicity
    As of ISO 19115:2014, this singleton has been replaced by a collection. This change will tentatively be applied in GeoAPI 4.0.
    Specified by:
      `getDistributionInfo` in interface `Metadata`
    Returns:
      the distributor of and options for obtaining the resource(s).

  - ### setDistributionInfo

    public void setDistributionInfo(Distribution newValue)
    Sets information about the distributor of and options for obtaining the resource(s).
    Upcoming API change — multiplicity
    As of ISO 19115:2014, this singleton has been replaced by a collection. This change will tentatively be applied in GeoAPI 4.0.
    Parameters:
      `newValue` - the new distribution info.

  - ### getDataQualityInfo

    public Collection<DataQuality> getDataQualityInfo()
    Returns overall assessment of quality of a resource(s).
    Specified by:
      `getDataQualityInfo` in interface `Metadata`
    Returns:
      overall assessment of quality of a resource(s).

  - ### setDataQualityInfo

    public void setDataQualityInfo(Collection<? extends DataQuality> newValues)
    Sets overall assessment of quality of a resource(s).
    Parameters:
      `newValues` - the new data quality info.

  - ### getPortrayalCatalogueInfo

    public Collection<PortrayalCatalogueReference> getPortrayalCatalogueInfo()
    Returns information about the catalogue of rules defined for the portrayal of a resource(s).
    Specified by:
      `getPortrayalCatalogueInfo` in interface `Metadata`
    Returns:
      the catalogue of rules defined for the portrayal of a resource(s).

  - ### setPortrayalCatalogueInfo

    public void setPortrayalCatalogueInfo(Collection<? extends PortrayalCatalogueReference> newValues)
    Sets information about the catalogue of rules defined for the portrayal of a resource(s).
    Parameters:
      `newValues` - the new portrayal catalog info.

  - ### getMetadataConstraints

    public Collection<Constraints> getMetadataConstraints()
    Returns restrictions on the access and use of metadata.
    Specified by:
      `getMetadataConstraints` in interface `Metadata`
    Returns:
      restrictions on the access and use of metadata.
    See Also:
      - `AbstractIdentification​.getResourceConstraints()`

  - ### setMetadataConstraints

    public void setMetadataConstraints(Collection<? extends Constraints> newValues)
    Sets restrictions on the access and use of metadata.
    Parameters:
      `newValues` - the new metadata constraints.
    See Also:
      - `AbstractIdentification​.setResourceConstraints(Collection)`

  - ### getApplicationSchemaInfo

    public Collection<ApplicationSchemaInformation> getApplicationSchemaInfo()
    Returns information about the conceptual schema of a dataset.
    Specified by:
      `getApplicationSchemaInfo` in interface `Metadata`
    Returns:
      the conceptual schema of a dataset.

  - ### setApplicationSchemaInfo

    public void setApplicationSchemaInfo(Collection<? extends ApplicationSchemaInformation> newValues)
    Returns information about the conceptual schema of a dataset.
    Parameters:
      `newValues` - the new application schema info.

  - ### getAcquisitionInformation

    public Collection<AcquisitionInformation> getAcquisitionInformation()
    Returns information about the acquisition of the data.
    Specified by:
      `getAcquisitionInformation` in interface `Metadata`
    Returns:
      the acquisition of data.

  - ### setAcquisitionInformation

    public void setAcquisitionInformation(Collection<? extends AcquisitionInformation> newValues)
    Sets information about the acquisition of the data.
    Parameters:
      `newValues` - the new acquisition information.

  - ### getMetadataMaintenance

    public MaintenanceInformation getMetadataMaintenance()
    Returns information about the frequency of metadata updates, and the scope of those updates.
    Specified by:
      `getMetadataMaintenance` in interface `Metadata`
    Returns:
      the frequency of metadata updates and their scope, or `null`.
    See Also:
      - `AbstractIdentification​.getResourceMaintenances()`

  - ### setMetadataMaintenance

    public void setMetadataMaintenance(MaintenanceInformation newValue)
    Sets information about the frequency of metadata updates, and the scope of those updates.
    Parameters:
      `newValue` - the new metadata maintenance.
    See Also:
      - `AbstractIdentification​.setResourceMaintenances(Collection)`

  - ### getResourceLineages

    @UML(identifier="resourceLineage", obligation=OPTIONAL, specification=ISO_19115) public Collection<Lineage> getResourceLineages()
    Returns information about the provenance, sources and/or the production processes applied to the resource.
    Returns:
      information about the provenance, sources and/or the production processes.
    Since:
      0.5

  - ### setResourceLineages

    public void setResourceLineages(Collection<? extends Lineage> newValues)
    Sets information about the provenance, sources and/or the production processes applied to the resource.
    Parameters:
      `newValues` - new information about the provenance, sources and/or the production processes.
    Since:
      0.5