/*$************************************************************************************************
**
** $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;
import org.geotoolkit.feature.catalog.util.Multiplicity;
/**
*
* Abstract class for feature properties.
*
* @author Guilhem Legal
* @module
*/
//@UML(identifier="FC_PropertyType", specification=ISO_19110)
public interface PropertyType {
/**
* an unique identifier used in the XML instance.
*/
//@Extension
String getId();
/**
* Member name that locates this member within a feature type.
*/
//@UML(identifier="memberName", obligation=MANDATORY, specification=ISO_19110)
LocalName getMemberName();
/**
* Definition of the member in a natural language. This attribute is required if the definition is not provided by
* FC_FeatureCalaogue::definitionSource. If not provided,
* the definitionReference should specify a citation where the definition may be found,
* and any additional information as to which is to be used.
*/
//@UML(identifier="definition", obligation=CONDITIONAL, specification=ISO_19110)
String getDefinition();
/**
* Cardinality of the member in the feature class.
* If this is an attribute or operation, the default cardinality is 1.
* If this is an association role, then the default cardinality is 0..*.
* For operations, this is the number of return values possible.
* This is an elaboration of the GFM to allow for complete specifications for various programming and data definition language.
*/
//@UML(identifier="cardinality", obligation=MANDATORY, specification=ISO_19110)
Multiplicity getCardinality();
/**
* Role that links the operations, attributes and associations roles with feature types that contain them.
* The association class FC_Binding describes particular information regarding the use of this poperty type within this feature type.
* This is a "strong agregation" or composition in the general Feature Model (ISO 19109). Here it ios realized by a "weak agragation".
* This is valid since a weak agragation can be converted to a strong aggragation by replicating the value of the target role for each use.
* In this case, the property type represent a value, and the realization of the GFM's property type would create a GF_PropertyType whose identity
* is the combination of the FC_PropertyType and the owning FC_FeatureType.
*/
//@UML(identifier="featureType", obligation=OPTIONAL, specification=ISO_19110)
FeatureType getFeatureType();
/**
* Role that links this property type to the constraints placed upon it.
*/
//@UML(identifier="constrainedBy", obligation=OPTIONAL, specification=ISO_19110)
List<Constraint> getConstrainedBy();
/**
* Role that links this instance to the source of its definition.
*/
//@UML(identifier="definitionReference", obligation=OPTIONAL, specification=ISO_19110)
DefinitionReference getDefinitionReference();
}