/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2011, Open Source Geospatial Foundation (OSGeo)
* (C) 2004-2005, Open Geospatial Consortium Inc.
*
* All Rights Reserved. http://www.opengis.org/legal/
*/
package org.opengis.metadata.identification;
import java.util.Collection;
import org.opengis.metadata.citation.Citation;
import org.opengis.metadata.citation.ResponsibleParty;
import org.opengis.metadata.maintenance.MaintenanceInformation;
import org.opengis.metadata.constraint.Constraints;
import org.opengis.metadata.distribution.Format;
import org.opengis.util.InternationalString;
import org.opengis.annotation.UML;
import org.opengis.annotation.Profile;
import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
import static org.opengis.annotation.ComplianceLevel.*;
/**
* Basic information required to uniquely identify a resource or resources.
*
*
* @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/metadata/identification/Identification.java $
* @version <A HREF="http://www.opengeospatial.org/standards/as#01-111">ISO 19115</A>
* @author Martin Desruisseaux (IRD)
* @author Cory Horner (Refractions Research)
* @since GeoAPI 2.0
*/
@Profile (level=CORE)
@UML(identifier="MD_Identification", specification=ISO_19115)
public interface Identification {
/**
* Citation data for the resource(s).
*
* @return Citation data for the resource(s).
*/
@Profile (level=CORE)
@UML(identifier="citation", obligation=MANDATORY, specification=ISO_19115)
Citation getCitation();
/**
* Brief narrative summary of the content of the resource(s).
*
* @return Brief narrative summary of the content.
*/
@Profile (level=CORE)
@UML(identifier="abstract", obligation=MANDATORY, specification=ISO_19115)
InternationalString getAbstract();
/**
* Summary of the intentions with which the resource(s) was developed.
*
* @return The intentions with which the resource(s) was developed, or {@code null}.
*/
@UML(identifier="purpose", obligation=OPTIONAL, specification=ISO_19115)
InternationalString getPurpose();
/**
* Recognition of those who contributed to the resource(s).
*
* @return Recognition of those who contributed to the resource(s).
*/
@UML(identifier="credit", obligation=OPTIONAL, specification=ISO_19115)
Collection<String> getCredits();
/**
* Status of the resource(s).
*
* @return Status of the resource(s), or {@code null}.
*/
@UML(identifier="status", obligation=OPTIONAL, specification=ISO_19115)
Collection<Progress> getStatus();
/**
* Identification of, and means of communication with, person(s) and organizations(s)
* associated with the resource(s).
*
* @return Means of communication with person(s) and organizations(s) associated with the
* resource(s).
*/
@Profile (level=CORE)
@UML(identifier="pointOfContact", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends ResponsibleParty> getPointOfContacts();
/**
* Provides information about the frequency of resource updates, and the scope of those updates.
*
* @return Frequency and scope of resource updates.
*/
@UML(identifier="resourceMaintenance", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends MaintenanceInformation> getResourceMaintenance();
/**
* Provides a graphic that illustrates the resource(s) (should include a legend for the graphic).
*
* @return A graphic that illustrates the resource(s).
*/
@UML(identifier="graphicOverview", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends BrowseGraphic> getGraphicOverviews();
/**
* Provides a description of the format of the resource(s).
*
* @return Description of the format.
*/
@UML(identifier="resourceFormat", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends Format> getResourceFormat();
/**
* Provides category keywords, their type, and reference source.
*
* @return Category keywords, their type, and reference source.
*/
@UML(identifier="descriptiveKeywords", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends Keywords> getDescriptiveKeywords();
/**
* Provides basic information about specific application(s) for which the resource(s)
* has/have been or is being used by different users.
*
* @return Information about specific application(s) for which the resource(s)
* has/have been or is being used.
*/
@UML(identifier="resourceSpecificUsage", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends Usage> getResourceSpecificUsages();
/**
* Provides information about constraints which apply to the resource(s).
*
* @return Constraints which apply to the resource(s).
*/
@UML(identifier="resourceConstraints", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends Constraints> getResourceConstraints();
/**
* Provides aggregate dataset information.
*
* @return Aggregate dataset information.
*
* @since GeoAPI 2.1
*/
@UML(identifier="aggregationInfo", obligation=OPTIONAL, specification=ISO_19115)
Collection<? extends AggregateInformation> getAggregationInfo();
}