/*$************************************************************************************************
**
** $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 org.opengis.annotation.UML;
import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
/**
*
* Role of the feature association.
*
* @author Guilhem Legal
* @module
*/
//@UML(identifier="FC_AssociationRole", specification=ISO_19110)
public interface AssociationRole extends PropertyType {
/**
* Type of association role, indicating whether this role acts as a "is part of" or 'is a member of" semantics.
* default value: "ordinary"
*
*/
//@UML(identifier="type", obligation=MANDATORY, specification=ISO_19110)
RoleType getType();
/**
* indicates if the instances of this association role within the containing feature instance are ordered or not,
* with FALSE = "not ordered" and TRUE = "ordered".
* If TRUE, the FC_PropertyType::definition shall contain an explanation of the meaning of the order.
* default value: FALSE
*/
//@UML(identifier="isOrdered", obligation=MANDATORY, specification=ISO_19110)
Boolean getIsOrdered();
/**
* indicates whether this role is navigable from the source feature to the target feature of the association.
* default value: TRUE
*/
//@UML(identifier="isNavigable", obligation=MANDATORY, specification=ISO_19110)
Boolean getIsNavigable();
/**
* relation of which this association role is a part.
*
*/
//@UML(identifier="relation", obligation=MANDATORY, specification=ISO_19110)
FeatureAssociation getRelation();
/**
* Type of the target value of this association
*/
//@UML(identifier="valueType", obligation=MANDATORY, specification=ISO_19110)
FeatureType getValueType();
}