Index: geoapi/src/main/java/org/opengis/metadata/distribution/Distribution.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/distribution/Distribution.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/distribution/Distribution.java	(copie de travail)
@@ -33,6 +33,8 @@
      * Provides a description of the format of the data to be distributed.
      *
      * @return Description of the format of the data to be distributed.
+     *
+     * @condition MD_Distributor.distributorFormat not documented.
      */
     @Profile (level=CORE)
     @UML(identifier="distributionFormat", obligation=CONDITIONAL, specification=ISO_19115)
Index: geoapi/src/main/java/org/opengis/metadata/distribution/Medium.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/distribution/Medium.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/distribution/Medium.java	(copie de travail)
@@ -49,6 +49,8 @@
      * Units of measure for the recording density.
      *
      * @return Units of measure for the recording density, or {@code null}.
+     *
+     * @condition density must be documented.
      */
     @UML(identifier="densityUnits", obligation=CONDITIONAL, specification=ISO_19115)
     Unit<?> getDensityUnits();
Index: geoapi/src/main/java/org/opengis/metadata/distribution/Distributor.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/distribution/Distributor.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/distribution/Distributor.java	(copie de travail)
@@ -48,6 +48,8 @@
      * Provides information about the format used by the distributor.
      *
      * @return Information about the format used by the distributor.
+     *
+     * @condition MD_Distribution.distributionFormat not documented.
      */
     @UML(identifier="distributorFormat", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends Format> getDistributorFormats();
Index: geoapi/src/main/java/org/opengis/metadata/maintenance/ScopeDescription.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/maintenance/ScopeDescription.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/maintenance/ScopeDescription.java	(copie de travail)
@@ -33,6 +33,9 @@
      * Attributes to which the information applies.
      *
      * @return Attributes to which the information applies.
+     *
+     * @condition features, featureInstances, attributeInstances, dataset and other not
+     *            documented.
      */
     @UML(identifier="attributes", obligation=CONDITIONAL, specification=ISO_19115)
     Set<? extends AttributeType> getAttributes();
@@ -41,6 +44,9 @@
      * Features to which the information applies.
      *
      * @return Features to which the information applies.
+     *
+     * @condition attributes, featureInstances, attributeInstances, dataset and other not
+     *            documented.
      */
     @UML(identifier="features", obligation=CONDITIONAL, specification=ISO_19115)
     Set<? extends FeatureType> getFeatures();
@@ -49,6 +55,9 @@
      * Feature instances to which the information applies.
      *
      * @return Feature instances to which the information applies.
+     *
+     * @condition attributes, features, attributeInstances, dataset and other not
+     *            documented.
      */
     @UML(identifier="featureInstances", obligation=CONDITIONAL, specification=ISO_19115)
     Set<? extends FeatureType> getFeatureInstances();
@@ -59,6 +68,9 @@
      * @return Attribute instances to which the information applies.
      *
      * @since GeoAPI 2.1
+     *
+     * @condition attributes, features, featureInstances, dataset and other not
+     *            documented.
      */
     @UML(identifier="attributeInstances", obligation=CONDITIONAL, specification=ISO_19115)
     Set<? extends AttributeType> getAttributeInstances();
@@ -69,6 +81,9 @@
      * @return Dataset to which the information applies.
      *
      * @since GeoAPI 2.1
+     *
+     * @condition attributes, features, featureInstances, attributeInstances and other not
+     *            documented.
      */
     @UML(identifier="dataset", obligation=CONDITIONAL, specification=ISO_19115)
     String getDataset();
@@ -80,6 +95,9 @@
      * @return Class of information that does not fall into the other categories.
      *
      * @since GeoAPI 2.1
+     *
+     * @condition attributes, features, featureInstances, attributeInstances and dataset not
+     *            documented.
      */
     @UML(identifier="other", obligation=CONDITIONAL, specification=ISO_19115)
     String getOther();
Index: geoapi/src/main/java/org/opengis/metadata/constraint/LegalConstraints.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/constraint/LegalConstraints.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/constraint/LegalConstraints.java	(copie de travail)
@@ -53,6 +53,8 @@
      * {@linkplain Restriction#OTHER_RESTRICTIONS other restrictions}.
      *
      * @return Other restrictions and legal prerequisites for accessing and using the resource.
+     *
+     * @condition accessConstraints or useConstraintss equal otherRestrictions.
      */
     @UML(identifier="otherConstraints", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends InternationalString> getOtherConstraints();
Index: geoapi/src/main/java/org/opengis/metadata/quality/DataQuality.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/quality/DataQuality.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/quality/DataQuality.java	(copie de travail)
@@ -44,6 +44,8 @@
      * {@linkplain org.opengis.metadata.maintenance.ScopeCode#DATASET dataset}.
      *
      * @return Quantitative quality information for the data.
+     *
+     * @condition lineage not provided.
      */
     @UML(identifier="report", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends Element> getReports();
@@ -55,6 +57,8 @@
      *
      * @return Non-quantitative quality information about the lineage of the data specified,
      *         or {@code null}.
+     *
+     * @condition report not provided.
      */
     @Profile (level=CORE)
     @UML(identifier="lineage", obligation=CONDITIONAL, specification=ISO_19115)
Index: geoapi/src/main/java/org/opengis/metadata/identification/Resolution.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/identification/Resolution.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/identification/Resolution.java	(copie de travail)
@@ -35,6 +35,8 @@
      * {@linkplain #getDistance ground sample distance} may be provided.
      *
      * @return Level of detail expressed as the scale of a comparable hardcopy, or {@code null}.
+     *
+     * @condition distance not documented.
      */
     @Profile (level=CORE)
     @UML(identifier="equivalentScale", obligation=CONDITIONAL, specification=ISO_19115)
@@ -49,6 +51,8 @@
      *
      * @todo change return type to ISO 19103 {@code Distance} or to JScience {@code Measure}.
      * @unitof Distance
+     *
+     * @condition equivalentScale not documented.
      */
     @Profile (level=CORE)
     @UML(identifier="distance", obligation=CONDITIONAL, specification=ISO_19115)
Index: geoapi/src/main/java/org/opengis/metadata/identification/DataIdentification.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/identification/DataIdentification.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/identification/DataIdentification.java	(copie de travail)
@@ -65,6 +65,8 @@
      * Full name of the character coding standard(s) used for the dataset.
      *
      * @return Name(s) of the character coding standard(s) used.
+     *
+     * @condition ISO/IEC 10646-1 not used.
      */
     @Profile (level=CORE)
     @UML(identifier="characterSet", obligation=CONDITIONAL, specification=ISO_19115)
@@ -74,9 +76,11 @@
      * Main theme(s) of the dataset.
      *
      * @return Main theme(s).
+     *
+     * @condition if hierarchyLevel equals dataset.
      */
     @Profile (level=CORE)
-    @UML(identifier="topicCategory", obligation=MANDATORY, specification=ISO_19115)
+    @UML(identifier="topicCategory", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<TopicCategory> getTopicCategories();
 
     /**
@@ -93,9 +97,12 @@
      * extent of the dataset.
      *
      * @return Additional extent information.
+     *
+     * @condition if hierarchyLevel equals dataset? either extent.geographicElement.EX_GeographicBoundingBox
+     *            or extent.geographicElement.EX_GeographicDescription is required.
      */
     @Profile (level=CORE)
-    @UML(identifier="extent", obligation=OPTIONAL, specification=ISO_19115)
+    @UML(identifier="extent", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends Extent> getExtent();
 
     /**
Index: geoapi/src/main/java/org/opengis/metadata/identification/AggregateInformation.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/identification/AggregateInformation.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/identification/AggregateInformation.java	(copie de travail)
@@ -31,6 +31,8 @@
      * Citation information about the aggregate dataset.
      *
      * @return Citation information about the aggregate dataset, or {@code null}.
+     *
+     * @condition aggregateDataSetIdentifier not documented.
      */
     @UML(identifier="aggregateDataSetName", obligation=CONDITIONAL, specification=ISO_19115)
     Citation getAggregateDataSetName();
@@ -39,6 +41,8 @@
      * Identification information about aggregate dataset.
      *
      * @return Identification information about aggregate dataset, or {@code null}.
+     *
+     * @condition aggregateDataSetName not documented.
      */
     @UML(identifier="aggregateDataSetIdentifier", obligation=CONDITIONAL, specification=ISO_19115)
     Identifier getAggregateDataSetIdentifier();
Index: geoapi/src/main/java/org/opengis/metadata/spatial/Georectified.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/spatial/Georectified.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/spatial/Georectified.java	(copie de travail)
@@ -46,8 +46,10 @@
      * georeferenced grid data.
      *
      * @return Description of geographic position points used to test accuracy, or {@code null}.
+     *
+     * @condition checkPointAvailability equals yes.
      */
-    @UML(identifier="checkPointDescription", obligation=OPTIONAL, specification=ISO_19115)
+    @UML(identifier="checkPointDescription", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getCheckPointDescription();
 
     /**
Index: geoapi/src/main/java/org/opengis/metadata/ExtendedElementInformation.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/ExtendedElementInformation.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/ExtendedElementInformation.java	(copie de travail)
@@ -44,6 +44,9 @@
      *
      * @return Short form suitable for use in an implementation method such as XML or SGML,
      *         or {@code null}.
+     *
+     * @condition {@linkplain #getDataType data type} not equal
+     *            {@linkplain Datatype#CODE_LIST_ELEMENT code list element}.
      */
     @UML(identifier="shortName", obligation=CONDITIONAL, specification=ISO_19115)
     String getShortName();
@@ -55,6 +58,9 @@
      * {@link #getShortName} may be used instead.
      *
      * @return Three digit code assigned to the extended element, or {@code null}.
+     *
+     * @condition {@linkplain #getDataType data type} not equal
+     *            {@linkplain Datatype#CODE_LIST_ELEMENT code list element}.
      */
     @UML(identifier="domainCode", obligation=CONDITIONAL, specification=ISO_19115)
     Integer getDomainCode();
@@ -71,6 +77,11 @@
      * Obligation of the extended element.
      *
      * @return Obligation of the extended element, or {@code null}.
+     *
+     * @condition {@linkplain #getDataType data type} not equal
+     *            {@linkplain Datatype#CODE_LIST code list} or
+     *            {@linkplain Datatype#ENUMERATION enumeration} or
+     *            {@linkplain Datatype#CODE_LIST_ELEMENT code list element}.
      */
     @UML(identifier="obligation", obligation=CONDITIONAL, specification=ISO_19115)
     Obligation getObligation();
@@ -81,6 +92,9 @@
      * is {@linkplain Obligation#CONDITIONAL conditional}.
      *
      * @return The condition under which the extended element is mandatory, or {@code null}.
+     *
+     * @condition {@linkplain #getObligation obligation} equals
+     *            {@linkplain Obligation#CONDITIONAL conditional}.
      */
     @UML(identifier="condition", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getCondition();
@@ -113,6 +127,10 @@
      * code list element}.
      *
      * @return Valid values that can be assigned to the extended element, or {@code null}.
+     *
+     * @condition {@linkplain #getDataType data type} not {@linkplain Datatype#ENUMERATION enumeration},
+     *            {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT
+     *            code list element}
      */
     @UML(identifier="domainValue", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getDomainValue();
Index: geoapi/src/main/java/org/opengis/metadata/MetaData.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/MetaData.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/MetaData.java	(copie de travail)
@@ -56,6 +56,8 @@
      * Language used for documenting metadata.
      *
      * @return Language used for documenting metadata, or {@code null}.
+     *
+     * @condition Not defined by encoding.
      */
     @Profile (level=CORE)
     @UML(identifier="language", obligation=CONDITIONAL, specification=ISO_19115)
@@ -65,6 +67,8 @@
      * Full name of the character coding standard used for the metadata set.
      *
      * @return character coding standard used for the metadata, or {@code null}.
+     *
+     * @condition Not used and not defined by encoding.
      */
     @Profile (level=CORE)
     @UML(identifier="characterSet", obligation=CONDITIONAL, specification=ISO_19115)
@@ -74,6 +78,8 @@
      * File identifier of the metadata to which this metadata is a subset (child).
      *
      * @return Identifier of the metadata to which this metadata is a subset, or {@code null}.
+     *
+     * @condition hierarchyLevel is not equal to dataset.
      */
     @UML(identifier="parentIdentifier", obligation=CONDITIONAL, specification=ISO_19115)
     String getParentIdentifier();
@@ -82,6 +88,8 @@
      * Scope to which the metadata applies.
      *
      * @return Scope to which the metadata applies.
+     *
+     * @condition hierarchyLevel is not equal to dataset.
      */
     @UML(identifier="hierarchyLevel", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<ScopeCode> getHierarchyLevels();
@@ -90,6 +98,8 @@
      * Name of the hierarchy levels for which the metadata is provided.
      *
      * @return Hierarchy levels for which the metadata is provided.
+     *
+     * @condition hierarchyLevel is not equal to dataset.
      */
     @UML(identifier="hierarchyLevelName", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<String> getHierarchyLevelNames();
Index: geoapi/src/main/java/org/opengis/metadata/lineage/Source.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/lineage/Source.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/lineage/Source.java	(copie de travail)
@@ -36,6 +36,8 @@
      * Detailed description of the level of the source data.
      *
      * @return Description of the level of the source data, or {@code null}.
+     *
+     * @condition sourceExtent not provided.
      */
     @UML(identifier="description", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getDescription();
@@ -68,6 +70,8 @@
      * Information about the spatial, vertical and temporal extent of the source data.
      *
      * @return Information about the extent of the source data.
+     *
+     * @condition description not provided.
      */
     @UML(identifier="sourceExtent", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends Extent> getSourceExtents();
Index: geoapi/src/main/java/org/opengis/metadata/lineage/Lineage.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/lineage/Lineage.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/lineage/Lineage.java	(copie de travail)
@@ -36,12 +36,13 @@
 public interface Lineage {
     /**
      * General explanation of the data producer's knowledge about the lineage of a dataset.
-     * Should be provided only if
+     *
+     * @return Explanation of the data producer's knowledge about the lineage, or {@code null}.
+     *
+     * @condition Should be provided only if
      * {@linkplain org.opengis.metadata.quality.Scope#getLevel scope level} is
      * {@linkplain org.opengis.metadata.maintenance.ScopeCode#DATASET dataset} or
      * {@linkplain org.opengis.metadata.maintenance.ScopeCode#SERIES series}.
-     *
-     * @return Explanation of the data producer's knowledge about the lineage, or {@code null}.
      */
     @Profile (level=CORE)
     @UML(identifier="statement", obligation=CONDITIONAL, specification=ISO_19115)
@@ -51,6 +52,9 @@
      * Information about an event in the creation process for the data specified by the scope.
      *
      * @return Information about an event in the creation process.
+     *
+     * @condition Mandatory if {@linkplain #getStatement statement} and
+     * {@linkplain #getSources source} are not provided.
      */
     @UML(identifier="processStep", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends ProcessStep> getProcessSteps();
@@ -59,6 +63,9 @@
      * Information about the source data used in creating the data specified by the scope.
      *
      * @return Information about the source data.
+     *
+     * @condition Mandatory if {@linkplain #getStatement statement} and
+     * {@linkplain #getProcessSteps process step} are not provided.
      */
     @UML(identifier="source", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends Source> getSources();
Index: geoapi/src/main/java/org/opengis/metadata/extent/Extent.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/extent/Extent.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/extent/Extent.java	(copie de travail)
@@ -37,6 +37,10 @@
      * Returns the spatial and temporal extent for the referring object.
      *
      * @return The spatial and temporal extent, or {@code null} in none.
+     *
+     * @condition {@linkplain #getGeographicElements geographic element} and
+     *            {@linkplain #getTemporalElements temporal element} and
+     *            {@linkplain #getVerticalElements vertical element} not documented.
      */
     @UML(identifier="description", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getDescription();
@@ -45,6 +49,10 @@
      * Provides geographic component of the extent of the referring object
      *
      * @return The geographic extent, or an empty set if none.
+     *
+     * @condition {@linkplain #getDescription description} and
+     *            {@linkplain #getTemporalElements temporal element} and
+     *            {@linkplain #getVerticalElements vertical element} not documented.
      */
     @UML(identifier="geographicElement", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends GeographicExtent> getGeographicElements();
@@ -53,6 +61,10 @@
      * Provides temporal component of the extent of the referring object
      *
      * @return The temporal extent, or an empty set if none.
+     *
+     * @condition {@linkplain #getDescription description} and
+     *            {@linkplain #getGeographicElements geographic element} and
+     *            {@linkplain #getVerticalElements vertical element} not documented.
      */
     @UML(identifier="temporalElement", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends TemporalExtent> getTemporalElements();
@@ -61,6 +73,10 @@
      * Provides vertical component of the extent of the referring object
      *
      * @return The vertical extent, or an empty set if none.
+     *
+     * @condition {@linkplain #getDescription description} and
+     *            {@linkplain #getGeographicElements geographic element} and
+     *            {@linkplain #getTemporalElements temporal element} not documented.
      */
     @UML(identifier="verticalElement", obligation=CONDITIONAL, specification=ISO_19115)
     Collection<? extends VerticalExtent> getVerticalElements();
Index: geoapi/src/main/java/org/opengis/metadata/citation/ResponsibleParty.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/citation/ResponsibleParty.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/citation/ResponsibleParty.java	(copie de travail)
@@ -36,6 +36,9 @@
      * and {@link #getPositionName positionName} should be provided.
      *
      * @return Name, surname, given name and title of the responsible person, or {@code null}.
+     *
+     * @condition {@link #getOrganisationName organisation name} and
+     *            {@link #getPositionName position name} not documented.
      */
     @UML(identifier="individualName", obligation=CONDITIONAL, specification=ISO_19115)
     String getIndividualName();
@@ -46,6 +49,9 @@
      * and {@link #getPositionName positionName} should be provided.
      *
      * @return Name of the responsible organization, or {@code null}.
+     *
+     * @condition {@link #getIndividualName individual name} and
+     *            {@link #getPositionName position name} not documented.
      */
     @UML(identifier="organisationName", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getOrganisationName();
@@ -56,6 +62,9 @@
      * and {@code positionName} should be provided.
      *
      * @return Role or position of the responsible person, or {@code null}
+     *
+     * @condition {@link #getIndividualName individual name} and
+     *            {@link #getOrganisationName organisation name} not documented.
      */
     @UML(identifier="positionName", obligation=CONDITIONAL, specification=ISO_19115)
     InternationalString getPositionName();
Index: geoapi/src/main/java/org/opengis/metadata/content/Band.java
===================================================================
--- geoapi/src/main/java/org/opengis/metadata/content/Band.java	(révision 1402)
+++ geoapi/src/main/java/org/opengis/metadata/content/Band.java	(copie de travail)
@@ -49,11 +49,12 @@
     Double getMinValue();
 
     /**
-     * Units in which sensor wavelengths are expressed. Should be non-null if
-     * {@linkplain #getMinValue min value} or {@linkplain #getMaxValue max value}
-     * are provided.
+     * Units in which sensor wavelengths are expressed.
      *
      * @return Units in which sensor wavelengths are expressed, or {@code null}.
+     *
+     * @condition Should be non-null if {@linkplain #getMinValue min value} or
+     *            {@linkplain #getMaxValue max value} are provided.
      */
     @UML(identifier="units", obligation=CONDITIONAL, specification=ISO_19115)
     Unit<Length> getUnits();

