/*$************************************************************************************************
**
** $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.List;
import org.opengis.util.LocalName;
/**
* class of real world phenomena with common properties.
*
* @author Guilhem Legal
* @module
*/
//@UML(identifier="FC_FeatureType", specification=ISO_19110)
public interface FeatureType {
//@Extension
String getId();
/**
* Text string that uniquely identifies this feature type within the feature catalogue that contains this feature type.
*/
//@UML(identifier="typeName", obligation=MANDATORY, specification=ISO_19110)
LocalName getTypeName();
/**
* Definition of the feature type in a natural language.
* This attribute is required if the definition is not provided by FC_FeatureCatalogue::definitionSource.
* If not provided, the definitionReference should specify a citation where the definition may be found,
* and any additional information as to which definition is to be used.
*/
//@UML(identifier="definition", obligation=CONDITIONAL, specification=ISO_19110)
String getDefinition();
/**
* Code that uniquely identifies this feature type within the feature catalogue that contains this feature type.
*/
//@UML(identifier="code", obligation=OPTIONAL, specification=ISO_19110)
String getCode();
/**
* Indicates if the feature type is abstract or not.
*/
//@UML(identifier="isAbstract", obligation=MANDATORY, specification=ISO_19110)
Boolean getIsAbstract();
/**
* equivalent name(s) of this feature type.
*/
//@UML(identifier="aliases", obligation=OPTIONAL, specification=ISO_19110)
List<LocalName> getAliases();
/**
* Role that links this feature type to a set of superclasses from which it inherits its operations,
* associations and properties.
*/
//@UML(identifier="inheritsFrom", obligation=OPTIONAL, specification=ISO_19110)
List<InheritanceRelation> getInheritsFrom();
/**
* Role that links this feature type to a set of subclasses which inherits its operations,
* associations and properties.
*/
//@UML(identifier="inheritsTo", obligation=OPTIONAL, specification=ISO_19110)
List<InheritanceRelation> getInheritsTo();
/**
* Role that links this feature type to the feature catalogue that contains it.
*/
//@UML(identifier="featureCatalogue", obligation=MANDATORY, specification=ISO_19110)
FeatureCatalogue getFeatureCatalogue();
/**
* Role that links this feature type to the property types that it contains.
* The association class FC_Binding describes particular information regarding the use of this property type within this feature type.
*/
//@UML(identifier="carrierOfCharacteristics", obligation=OPTIONAL, specification=ISO_19110)
List<PropertyType> getCarrierOfCharacteristics();
/**
* role tat links this feature type to the constraints placed upon it.
*/
//@UML(identifier="constrainedBy", obligation=OPTIONAL, specification=ISO_19110)
List<Constraint> getConstrainedBy();
/**
* role tat links this feature type to the source of its definition.
*/
//@UML(identifier="definitionReference", obligation=OPTIONAL, specification=ISO_19110)
DefinitionReference getDefinitionReference();
}