/*$************************************************************************************************
**
** $Id:
**
** $URL: https://geoapi.svn.sourceforge.net/svnroot/geoapi/trunk/geoapi/src/main/java/org/opengis/services/Interface.java $
**
** Copyright (C) 2004-2005 Open GIS Consortium, Inc.
** All Rights Reserved. http://www.opengis.org/legal/
**
*************************************************************************************************/
package org.opengis.feature.catalog;
import java.util.Date;
import java.util.List;
import org.opengis.annotation.UML;
import org.opengis.metadata.citation.ResponsibleParty;
import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
/**
* A feature catalogue contains its identification and contact information,
* and definition of some number of feature types with other information necessary for those definitions.
*
* @author Guilhem Legal
* @module
*/
//@UML(identifier="FC_FeatureCatalogue", specification=ISO_19110)
public interface FeatureCatalogue {
/**
* an unique identifier used in the XML instance.
*/
//@Extension
String getId();
/**
* name for this feature catalogue.
*/
//@UML(identifier="name", obligation=MANDATORY, specification=ISO_19110)
String getName();
/**
* Subject domain(s) of feature types defined in this feature catalogue.
*/
//@UML(identifier="scope", obligation=MANDATORY, specification=ISO_19110)
List<String> getScope();
/**
* Description of kind(s) of use to whitch this feature catalogue may be put.
*/
//@UML(identifier="fieldOfApplication", obligation=OPTIONAL, specification=ISO_19110)
List<String> getFieldOfApplication();
/**
* Version number of this feature catalogue,
* which may include both a major version number or letter and a sequence of minor release numbers or letters,
* such as "3.2.4a". The format of this attribute may difer between cataloguing authorities.
*/
//@UML(identifier="versionNumber", obligation=MANDATORY, specification=ISO_19110)
String getVersionNumber();
/**
* Effective date of this feature catalogue.
*/
//@UML(identifier="versionDate", obligation=MANDATORY, specification=ISO_19110)
Date getVersionDate();
/**
* Name, address, country, and telecommunications address of person or organization having primary responsability.
* for the intellectual content of this feature catalogue.
*/
//@UML(identifier="producer", obligation=MANDATORY, specification=ISO_19110)
ResponsibleParty getProducer();
/**
* Formal functionnal language in which the feature operation formal definition occurs in this feature catalogue.
* Obligation Conditional : Mandatory if feature operation formal definition occurs in feature catalogue.
*/
//@UML(identifier="functionalLanguage", obligation=CONDITIONAL, specification=ISO_19110)
String getFunctionalLanguage();
/**
* Role that links this feature catalogue to the feature types that is contains.
*/
//@UML(identifier="featureType", obligation=MANDATORY, specification=ISO_19110)
List<FeatureType> getFeatureType();
/**
* Role that links this feature catalogue to the sources of definitions of feature types,
* property types, and listed values that it contains.
*/
//@UML(identifier="definitionSource", obligation=OPTIONAL, specification=ISO_19110)
List<DefinitionSource> getDefinitionSource();
}