You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2022/11/17 11:01:26 UTC

[sis] branch geoapi-3.1 updated (a143312778 -> 86bb5bbf6b)

This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a change to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git


    from a143312778 Merge branch 'geoapi-4.0' into geoapi-3.1
     add a3a1bb0985 Upgrade `org.apache.sis.metadata.quality` package to ISO 19157:2013. Work partially done by Alexis Gaillard.
     add 8a0a390a7b Replace "https://standards.iso.org/iso/" URL by "https://schemas.isotc211.org/" for downloading XSD files. This change does not impact namespaces of elements in XML files, which stay on "standards.iso.org". The ISO/TC 211 URL seems more stable and is advised as the official schema repository for TC 211.
     add d79ae0a663 Update the `RenameOnImport.lst` file for importing data in old schema.
     add 41e6a8261c Use adapters for deciding whether to marshall an element (depending on metadata standard).
     add 5967341a84 Update for a change in GeoAPI: - New method: `ParameterDescriptor.getValueType()`.
     add 4f2555bbe9 Add a `Classes.boundOfParameterizedDeclaration(…)\ method and use it for making `ParameterDescriptor.getValueType()` conform to specification, which is to return the type elements when using array or collection.
     add f06c086e84 Generalize `Numbers.isNumber(Class)` by checking also for types unknown to this static method.
     add 7b995facc0 Save the "TypeName to Java class" association in `DefaultTypeName`.
     add 76741edb14 Add a `Names.createMemberName(CharSequence, String, CharSequence, TypeName)` convenience method.
     add 74d119635e Constructor argument should be `CharSequence` instead of `InternationalString` for consistency with similar constructors in the rest of metadata packages.
     add a31026987c Add a few tests for metadata quality package.
     add 0d58e3a7b4 Remove `DefaultParameter` (the implementation of ISO 19157 `DQM_Parameter`). This is replaced by a retrofitting in `ParameterDescriptor` for a unified API.
     new 86bb5bbf6b Merge branch 'geoapi-4.0' into geoapi-3.1. This is the upgrade of metadata quality package from ISO 19115 to ISO 19157.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/sis/feature/AbstractAttribute.java  |   3 +-
 .../apache/sis/feature/DefaultAttributeType.java   |   3 +-
 .../main/java/org/apache/sis/feature/Features.java |   6 +-
 .../apache/sis/internal/jaxb/FilterByVersion.java  |   4 +-
 .../apache/sis/internal/jaxb/cat/CodeListUID.java  |  10 +-
 ...V_CouplingType.java => DQM_ValueStructure.java} |  24 +-
 .../sis/internal/jaxb/code/package-info.java       |   3 +-
 .../apache/sis/internal/jaxb/gco/GO_DateTime.java  |  26 +-
 .../apache/sis/internal/jaxb/gco/package-info.java |   2 +-
 ...D_AttributeGroup.java => DQM_BasicMeasure.java} |  42 +-
 ...{MD_MetadataScope.java => DQM_Description.java} |  42 +-
 .../metadata/{DQ_Result.java => DQM_Measure.java}  |  43 +-
 .../{SV_Parameter.java => DQM_Parameter.java}      |  30 +-
 .../{CI_Contact.java => DQM_SourceReference.java}  |  43 +-
 .../{DQ_Element.java => DQ_EvaluationMethod.java}  |  50 +-
 .../{DQ_Element.java => DQ_MeasureReference.java}  |  50 +-
 ... => DQ_StandaloneQualityReportInformation.java} |  52 +-
 .../sis/internal/jaxb/metadata/package-info.java   |   3 +-
 .../internal/jaxb/metadata/replace/Parameter.java  | 173 ++++++
 .../jaxb/metadata/replace/QualityParameter.java    | 246 +++++++++
 .../jaxb/metadata/replace/ServiceParameter.java    | 234 ++++----
 .../jaxb/metadata/replace/package-info.java        |  21 +-
 .../sis/internal/metadata/ReferencingServices.java |   5 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |  63 ++-
 .../org/apache/sis/metadata/PropertyAccessor.java  |   4 +-
 .../java/org/apache/sis/metadata/SpecialCases.java |  19 +-
 .../sis/metadata/StandardImplementation.java       |   6 +-
 .../sis/metadata/iso/acquisition/package-info.java |   2 +-
 .../sis/metadata/iso/citation/package-info.java    |   2 +-
 .../sis/metadata/iso/constraint/package-info.java  |   2 +-
 .../sis/metadata/iso/content/package-info.java     |   2 +-
 .../metadata/iso/distribution/package-info.java    |   2 +-
 .../sis/metadata/iso/extent/package-info.java      |   2 +-
 .../metadata/iso/identification/package-info.java  |   2 +-
 .../sis/metadata/iso/lineage/package-info.java     |   2 +-
 .../sis/metadata/iso/maintenance/package-info.java |   2 +-
 .../org/apache/sis/metadata/iso/package-info.java  |   2 +-
 .../metadata/iso/quality/AbstractCompleteness.java |   2 +-
 ...ractResult.java => AbstractDataEvaluation.java} |  77 ++-
 .../sis/metadata/iso/quality/AbstractElement.java  | 589 +++++++++++----------
 .../iso/quality/AbstractLogicalConsistency.java    |   2 +-
 ...bstractResult.java => AbstractMetaquality.java} |  82 +--
 .../iso/quality/AbstractPositionalAccuracy.java    |  12 +-
 .../sis/metadata/iso/quality/AbstractResult.java   | 105 +++-
 .../iso/quality/AbstractTemporalAccuracy.java      |  42 +-
 ...lAccuracy.java => AbstractTemporalQuality.java} |  52 +-
 .../iso/quality/AbstractThematicAccuracy.java      |  17 +-
 .../DefaultAbsoluteExternalPositionalAccuracy.java |   5 +-
 .../quality/DefaultAccuracyOfATimeMeasurement.java |  10 +-
 ...lity.java => DefaultAggregationDerivation.java} |  49 +-
 .../metadata/iso/quality/DefaultBasicMeasure.java  | 225 ++++++++
 .../iso/quality/DefaultCompletenessCommission.java |   3 +-
 .../iso/quality/DefaultCompletenessOmission.java   |   3 +-
 .../iso/quality/DefaultConceptualConsistency.java  |   7 +-
 ...efaultUsability.java => DefaultConfidence.java} |  53 +-
 .../iso/quality/DefaultConformanceResult.java      |   7 +-
 .../iso/quality/DefaultCoverageResult.java         |  67 ++-
 .../metadata/iso/quality/DefaultDataQuality.java   |  84 ++-
 .../DefaultDescription.java}                       | 118 ++---
 .../DefaultDescriptiveResult.java}                 |  92 ++--
 .../iso/quality/DefaultDomainConsistency.java      |   3 +-
 ...ctElement.java => DefaultEvaluationMethod.java} | 311 +++--------
 .../iso/quality/DefaultFormatConsistency.java      |   5 +-
 ...ltUsability.java => DefaultFullInspection.java} |  51 +-
 .../DefaultGriddedDataPositionalAccuracy.java      |   3 +-
 ...faultUsability.java => DefaultHomogeneity.java} |  53 +-
 .../DefaultIndirectEvaluation.java}                |  90 ++--
 .../sis/metadata/iso/quality/DefaultMeasure.java   | 469 ++++++++++++++++
 .../iso/quality/DefaultMeasureReference.java       | 201 +++++++
 .../DefaultNonQuantitativeAttributeAccuracy.java   |  22 +-
 ...efaultNonQuantitativeAttributeCorrectness.java} |  56 +-
 .../DefaultQuantitativeAttributeAccuracy.java      |   3 +-
 .../iso/quality/DefaultQuantitativeResult.java     |  31 +-
 .../DefaultRelativeInternalPositionalAccuracy.java |   3 +-
 ...lValidity.java => DefaultRepresentativity.java} |  51 +-
 .../iso/quality/DefaultSampleBasedInspection.java  | 191 +++++++
 ...alAccuracy.java => DefaultSourceReference.java} |  86 ++-
 .../DefaultStandaloneQualityReportInformation.java | 163 ++++++
 .../iso/quality/DefaultTemporalConsistency.java    |   8 +-
 .../iso/quality/DefaultTemporalValidity.java       |   8 +-
 .../DefaultThematicClassificationCorrectness.java  |   3 +-
 .../iso/quality/DefaultTopologicalConsistency.java |   9 +-
 .../sis/metadata/iso/quality/DefaultUsability.java |  19 +-
 ...lAccuracy.java => DefaultUsabilityElement.java} |  54 +-
 .../sis/metadata/iso/quality/ISOMetadata.java}     |  40 +-
 .../sis/metadata/iso/quality/package-info.java     |  95 +---
 .../sis/metadata/iso/spatial/package-info.java     |   2 +-
 .../java/org/apache/sis/metadata/package-info.java |   2 +-
 .../apache/sis/util/iso/DefaultNameFactory.java    |  80 ++-
 .../org/apache/sis/util/iso/DefaultTypeName.java   | 232 ++++----
 .../main/java/org/apache/sis/util/iso/Names.java   |  97 ++--
 .../java/org/apache/sis/util/iso/TypeNames.java    |  41 +-
 .../main/java/org/apache/sis/xml/Namespaces.java   |  80 +--
 .../src/main/java/org/apache/sis/xml/readme.html   |  16 +-
 .../org/apache/sis/xml/RenameOnImport.lst          |  14 +-
 .../internal/jaxb/cat/CodeListMarshallingTest.java |   2 +-
 .../metadata/replace/QualityParameterTest.java     | 117 ++++
 .../metadata/replace/ServiceParameterTest.java     |  14 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |   3 +-
 .../apache/sis/metadata/iso/AllMetadataTest.java   |  51 +-
 .../DefaultServiceIdentificationTest.java          |   8 +-
 .../quality/AbstractPositionalAccuracyTest.java    |  13 +-
 .../iso/quality/DefaultDomainConsistencyTest.java} |  23 +-
 .../DefaultQuantitativeResultTest.java}            |  29 +-
 .../sis/metadata/xml/SchemaComplianceTest.java     |   4 +-
 .../apache/sis/test/suite/MetadataTestSuite.java   |   3 +
 .../sis/test/xml/AnnotationConsistencyCheck.java   |  62 ++-
 .../org/apache/sis/test/xml/PackageVerifier.java   |  10 +-
 .../org/apache/sis/test/xml/SchemaCompliance.java  |   7 +-
 .../java/org/apache/sis/util/iso/NamesTest.java    |  35 +-
 .../org/apache/sis/util/iso/TypeNamesTest.java     |  10 +-
 .../java/org/apache/sis/util/iso/TypesTest.java    |   2 +-
 .../org/apache/sis/xml/RenameListGenerator.java    |  24 +-
 .../sis/metadata/xml/2007/PositionalAccuracy.xml   |  11 +-
 .../apache/sis/metadata/xml/2007/ProcessStep.xml   |   2 +-
 .../metadata/xml/2007/ServiceIdentification.xml    |   2 +-
 .../org/apache/sis/metadata/xml/2016/Citation.xml  |   4 +-
 .../org/apache/sis/metadata/xml/2016/Extent.xml    |   2 +-
 .../org/apache/sis/metadata/xml/2016/Locales.xml   |   2 +-
 .../org/apache/sis/metadata/xml/2016/Metadata.xml  |  20 +-
 .../apache/sis/metadata/xml/2016/Multiplicity.xml  |   2 +-
 .../sis/metadata/xml/2016/PositionalAccuracy.xml   |  33 +-
 .../apache/sis/metadata/xml/2016/ProcessStep.xml   |   2 +-
 .../metadata/xml/2016/ServiceIdentification.xml    |   6 +-
 .../internal/referencing/ServicesForMetadata.java  |   5 +-
 .../sis/parameter/DefaultParameterDescriptor.java  |  40 +-
 .../parameter/DefaultParameterDescriptorTest.java  |  50 +-
 .../org/apache/sis/parameter/ParametersTest.java   |   8 +-
 .../apache/sis/internal/system/DataDirectory.java  |   2 +-
 .../org/apache/sis/internal/util/Constants.java    |   7 +-
 .../src/main/java/org/apache/sis/util/Classes.java | 190 +++++--
 .../src/main/java/org/apache/sis/util/Numbers.java |   9 +-
 .../org/apache/sis/util/UnknownNameException.java  |   7 +-
 .../test/java/org/apache/sis/util/ClassesTest.java |  86 ++-
 pom.xml                                            |   2 +-
 135 files changed, 4307 insertions(+), 2124 deletions(-)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/code/{SV_CouplingType.java => DQM_ValueStructure.java} (77%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{MD_AttributeGroup.java => DQM_BasicMeasure.java} (67%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{MD_MetadataScope.java => DQM_Description.java} (68%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{DQ_Result.java => DQM_Measure.java} (69%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{SV_Parameter.java => DQM_Parameter.java} (76%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{CI_Contact.java => DQM_SourceReference.java} (66%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{DQ_Element.java => DQ_EvaluationMethod.java} (59%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{DQ_Element.java => DQ_MeasureReference.java} (59%)
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/{MD_MetadataExtensionInformation.java => DQ_StandaloneQualityReportInformation.java} (54%)
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/Parameter.java
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{AbstractResult.java => AbstractDataEvaluation.java} (59%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{AbstractResult.java => AbstractMetaquality.java} (56%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{AbstractTemporalAccuracy.java => AbstractTemporalQuality.java} (75%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultUsability.java => DefaultAggregationDerivation.java} (66%)
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultBasicMeasure.java
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultUsability.java => DefaultConfidence.java} (66%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/{DefaultMetadataScope.java => quality/DefaultDescription.java} (52%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/{citation/DefaultIndividual.java => quality/DefaultDescriptiveResult.java} (54%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{AbstractElement.java => DefaultEvaluationMethod.java} (57%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultUsability.java => DefaultFullInspection.java} (65%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultUsability.java => DefaultHomogeneity.java} (65%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/{citation/DefaultIndividual.java => quality/DefaultIndirectEvaluation.java} (54%)
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultMeasure.java
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultMeasureReference.java
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultNonQuantitativeAttributeAccuracy.java => DefaultNonQuantitativeAttributeCorrectness.java} (62%)
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultTemporalValidity.java => DefaultRepresentativity.java} (64%)
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultRelativeInternalPositionalAccuracy.java => DefaultSourceReference.java} (54%)
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultStandaloneQualityReportInformation.java
 copy core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultRelativeInternalPositionalAccuracy.java => DefaultUsabilityElement.java} (65%)
 copy core/{sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AxisOrderReversal3D.java => sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/ISOMetadata.java} (51%)
 create mode 100644 core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameterTest.java
 copy core/{sis-feature/src/test/java/org/apache/sis/filter/XPathTest.java => sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultDomainConsistencyTest.java} (61%)
 copy core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/{identification/DefaultKeywordsTest.java => quality/DefaultQuantitativeResultTest.java} (51%)


[sis] 01/01: Merge branch 'geoapi-4.0' into geoapi-3.1. This is the upgrade of metadata quality package from ISO 19115 to ISO 19157.

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 86bb5bbf6b5b3c94e23e76b0c712818533d85fdd
Merge: a143312778 0d58e3a7b4
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Thu Nov 17 12:00:37 2022 +0100

    Merge branch 'geoapi-4.0' into geoapi-3.1.
    This is the upgrade of metadata quality package from ISO 19115 to ISO 19157.
    
    https://issues.apache.org/jira/browse/SIS-394

 .../org/apache/sis/feature/AbstractAttribute.java  |   3 +-
 .../apache/sis/feature/DefaultAttributeType.java   |   3 +-
 .../main/java/org/apache/sis/feature/Features.java |   6 +-
 .../apache/sis/internal/jaxb/FilterByVersion.java  |   4 +-
 .../apache/sis/internal/jaxb/cat/CodeListUID.java  |  10 +-
 .../sis/internal/jaxb/code/DQM_ValueStructure.java |  89 ++++
 .../sis/internal/jaxb/code/package-info.java       |   3 +-
 .../apache/sis/internal/jaxb/gco/GO_DateTime.java  |  26 +-
 .../apache/sis/internal/jaxb/gco/package-info.java |   2 +-
 .../internal/jaxb/metadata/DQM_BasicMeasure.java   |  92 ++++
 .../internal/jaxb/metadata/DQM_Description.java    |  92 ++++
 .../sis/internal/jaxb/metadata/DQM_Measure.java    |  92 ++++
 .../sis/internal/jaxb/metadata/DQM_Parameter.java  |  93 ++++
 .../jaxb/metadata/DQM_SourceReference.java         |  92 ++++
 .../jaxb/metadata/DQ_EvaluationMethod.java         |  97 ++++
 .../jaxb/metadata/DQ_MeasureReference.java         |  97 ++++
 .../DQ_StandaloneQualityReportInformation.java     |  99 ++++
 .../sis/internal/jaxb/metadata/package-info.java   |   3 +-
 .../internal/jaxb/metadata/replace/Parameter.java  | 173 ++++++
 .../jaxb/metadata/replace/QualityParameter.java    | 246 +++++++++
 .../jaxb/metadata/replace/ServiceParameter.java    | 234 ++++----
 .../jaxb/metadata/replace/package-info.java        |  21 +-
 .../sis/internal/metadata/ReferencingServices.java |   5 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |  63 ++-
 .../org/apache/sis/metadata/PropertyAccessor.java  |   4 +-
 .../java/org/apache/sis/metadata/SpecialCases.java |  19 +-
 .../sis/metadata/StandardImplementation.java       |   6 +-
 .../sis/metadata/iso/acquisition/package-info.java |   2 +-
 .../sis/metadata/iso/citation/package-info.java    |   2 +-
 .../sis/metadata/iso/constraint/package-info.java  |   2 +-
 .../sis/metadata/iso/content/package-info.java     |   2 +-
 .../metadata/iso/distribution/package-info.java    |   2 +-
 .../sis/metadata/iso/extent/package-info.java      |   2 +-
 .../metadata/iso/identification/package-info.java  |   2 +-
 .../sis/metadata/iso/lineage/package-info.java     |   2 +-
 .../sis/metadata/iso/maintenance/package-info.java |   2 +-
 .../org/apache/sis/metadata/iso/package-info.java  |   2 +-
 .../metadata/iso/quality/AbstractCompleteness.java |   2 +-
 ...ractResult.java => AbstractDataEvaluation.java} |  77 ++-
 .../sis/metadata/iso/quality/AbstractElement.java  | 589 +++++++++++----------
 .../iso/quality/AbstractLogicalConsistency.java    |   2 +-
 ...bstractResult.java => AbstractMetaquality.java} |  82 +--
 .../iso/quality/AbstractPositionalAccuracy.java    |  12 +-
 .../sis/metadata/iso/quality/AbstractResult.java   | 105 +++-
 .../iso/quality/AbstractTemporalAccuracy.java      |  42 +-
 ...lAccuracy.java => AbstractTemporalQuality.java} |  52 +-
 .../iso/quality/AbstractThematicAccuracy.java      |  17 +-
 .../DefaultAbsoluteExternalPositionalAccuracy.java |   5 +-
 .../quality/DefaultAccuracyOfATimeMeasurement.java |  10 +-
 ...lity.java => DefaultAggregationDerivation.java} |  49 +-
 .../metadata/iso/quality/DefaultBasicMeasure.java  | 225 ++++++++
 .../iso/quality/DefaultCompletenessCommission.java |   3 +-
 .../iso/quality/DefaultCompletenessOmission.java   |   3 +-
 .../iso/quality/DefaultConceptualConsistency.java  |   7 +-
 ...efaultUsability.java => DefaultConfidence.java} |  53 +-
 .../iso/quality/DefaultConformanceResult.java      |   7 +-
 .../iso/quality/DefaultCoverageResult.java         |  67 ++-
 .../metadata/iso/quality/DefaultDataQuality.java   |  84 ++-
 .../metadata/iso/quality/DefaultDescription.java   | 172 ++++++
 .../iso/quality/DefaultDescriptiveResult.java      | 142 +++++
 .../iso/quality/DefaultDomainConsistency.java      |   3 +-
 ...ctElement.java => DefaultEvaluationMethod.java} | 311 +++--------
 .../iso/quality/DefaultFormatConsistency.java      |   5 +-
 ...ltUsability.java => DefaultFullInspection.java} |  51 +-
 .../DefaultGriddedDataPositionalAccuracy.java      |   3 +-
 ...faultUsability.java => DefaultHomogeneity.java} |  53 +-
 .../iso/quality/DefaultIndirectEvaluation.java     | 142 +++++
 .../sis/metadata/iso/quality/DefaultMeasure.java   | 469 ++++++++++++++++
 .../iso/quality/DefaultMeasureReference.java       | 201 +++++++
 .../DefaultNonQuantitativeAttributeAccuracy.java   |  22 +-
 ...efaultNonQuantitativeAttributeCorrectness.java} |  56 +-
 .../DefaultQuantitativeAttributeAccuracy.java      |   3 +-
 .../iso/quality/DefaultQuantitativeResult.java     |  31 +-
 .../DefaultRelativeInternalPositionalAccuracy.java |   3 +-
 ...lValidity.java => DefaultRepresentativity.java} |  51 +-
 .../iso/quality/DefaultSampleBasedInspection.java  | 191 +++++++
 ...alAccuracy.java => DefaultSourceReference.java} |  86 ++-
 .../DefaultStandaloneQualityReportInformation.java | 163 ++++++
 .../iso/quality/DefaultTemporalConsistency.java    |   8 +-
 .../iso/quality/DefaultTemporalValidity.java       |   8 +-
 .../DefaultThematicClassificationCorrectness.java  |   3 +-
 .../iso/quality/DefaultTopologicalConsistency.java |   9 +-
 .../sis/metadata/iso/quality/DefaultUsability.java |  19 +-
 ...lAccuracy.java => DefaultUsabilityElement.java} |  54 +-
 .../sis/metadata/iso/quality/ISOMetadata.java      |  60 +++
 .../sis/metadata/iso/quality/package-info.java     |  95 +---
 .../sis/metadata/iso/spatial/package-info.java     |   2 +-
 .../java/org/apache/sis/metadata/package-info.java |   2 +-
 .../apache/sis/util/iso/DefaultNameFactory.java    |  80 ++-
 .../org/apache/sis/util/iso/DefaultTypeName.java   | 232 ++++----
 .../main/java/org/apache/sis/util/iso/Names.java   |  97 ++--
 .../java/org/apache/sis/util/iso/TypeNames.java    |  41 +-
 .../main/java/org/apache/sis/xml/Namespaces.java   |  80 +--
 .../src/main/java/org/apache/sis/xml/readme.html   |  16 +-
 .../org/apache/sis/xml/RenameOnImport.lst          |  14 +-
 .../internal/jaxb/cat/CodeListMarshallingTest.java |   2 +-
 .../metadata/replace/QualityParameterTest.java     | 117 ++++
 .../metadata/replace/ServiceParameterTest.java     |  14 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |   3 +-
 .../apache/sis/metadata/iso/AllMetadataTest.java   |  51 +-
 .../DefaultServiceIdentificationTest.java          |   8 +-
 .../quality/AbstractPositionalAccuracyTest.java    |  13 +-
 .../iso/quality/DefaultDomainConsistencyTest.java  |  47 ++
 .../iso/quality/DefaultQuantitativeResultTest.java |  50 ++
 .../sis/metadata/xml/SchemaComplianceTest.java     |   4 +-
 .../apache/sis/test/suite/MetadataTestSuite.java   |   3 +
 .../sis/test/xml/AnnotationConsistencyCheck.java   |  62 ++-
 .../org/apache/sis/test/xml/PackageVerifier.java   |  10 +-
 .../org/apache/sis/test/xml/SchemaCompliance.java  |   7 +-
 .../java/org/apache/sis/util/iso/NamesTest.java    |  35 +-
 .../org/apache/sis/util/iso/TypeNamesTest.java     |  10 +-
 .../java/org/apache/sis/util/iso/TypesTest.java    |   2 +-
 .../org/apache/sis/xml/RenameListGenerator.java    |  24 +-
 .../sis/metadata/xml/2007/PositionalAccuracy.xml   |  11 +-
 .../apache/sis/metadata/xml/2007/ProcessStep.xml   |   2 +-
 .../metadata/xml/2007/ServiceIdentification.xml    |   2 +-
 .../org/apache/sis/metadata/xml/2016/Citation.xml  |   4 +-
 .../org/apache/sis/metadata/xml/2016/Extent.xml    |   2 +-
 .../org/apache/sis/metadata/xml/2016/Locales.xml   |   2 +-
 .../org/apache/sis/metadata/xml/2016/Metadata.xml  |  20 +-
 .../apache/sis/metadata/xml/2016/Multiplicity.xml  |   2 +-
 .../sis/metadata/xml/2016/PositionalAccuracy.xml   |  33 +-
 .../apache/sis/metadata/xml/2016/ProcessStep.xml   |   2 +-
 .../metadata/xml/2016/ServiceIdentification.xml    |   6 +-
 .../internal/referencing/ServicesForMetadata.java  |   5 +-
 .../sis/parameter/DefaultParameterDescriptor.java  |  40 +-
 .../parameter/DefaultParameterDescriptorTest.java  |  50 +-
 .../org/apache/sis/parameter/ParametersTest.java   |   8 +-
 .../apache/sis/internal/system/DataDirectory.java  |   2 +-
 .../org/apache/sis/internal/util/Constants.java    |   7 +-
 .../src/main/java/org/apache/sis/util/Classes.java | 190 +++++--
 .../src/main/java/org/apache/sis/util/Numbers.java |   9 +-
 .../org/apache/sis/util/UnknownNameException.java  |   7 +-
 .../test/java/org/apache/sis/util/ClassesTest.java |  86 ++-
 pom.xml                                            |   2 +-
 135 files changed, 5369 insertions(+), 1750 deletions(-)

diff --cc core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
index 0000000000,fc7dcb875b..b902327e87
mode 000000,100644..100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
@@@ -1,0 -1,245 +1,246 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one or more
+  * contributor license agreements.  See the NOTICE file distributed with
+  * this work for additional information regarding copyright ownership.
+  * The ASF licenses this file to You under the Apache License, Version 2.0
+  * (the "License"); you may not use this file except in compliance with
+  * the License.  You may obtain a copy of the License at
+  *
+  *     http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+ package org.apache.sis.internal.jaxb.metadata.replace;
+ 
+ import java.util.Map;
+ import javax.xml.bind.annotation.XmlType;
+ import javax.xml.bind.annotation.XmlElement;
+ import javax.xml.bind.annotation.XmlRootElement;
+ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+ import org.opengis.util.TypeName;
+ import org.opengis.util.InternationalString;
+ import org.opengis.metadata.Identifier;
+ import org.opengis.metadata.quality.Description;
+ import org.opengis.metadata.quality.ValueStructure;
+ import org.opengis.parameter.ParameterDescriptor;
+ import org.opengis.referencing.operation.Matrix;
+ import org.apache.sis.metadata.iso.DefaultIdentifier;
+ import org.apache.sis.metadata.iso.quality.DefaultDescription;
+ import org.apache.sis.internal.jaxb.gco.GO_GenericName;
+ import org.apache.sis.util.Classes;
+ import org.apache.sis.util.iso.Names;
+ import org.apache.sis.xml.Namespaces;
+ 
+ // Branch-dependent imports
+ import org.opengis.coverage.Coverage;
++import org.opengis.referencing.ReferenceIdentifier;
+ 
+ 
+ /**
+  * Parameter information conform to the ISO 19157:2013 specification.
+  * GeoAPI tries to provides a single API for the parameter classes defined in various specifications
+  * (ISO 19111, ISO 19115, ISO 19157, Web Processing Service).
+  * But we still need separated representations at XML (un)marshalling time.
+  * This class is for the ISO 19157:2013 case.
+  *
+  * <p>Note that this implementation is simple and serves no other purpose than being a container for XML
+  * parsing and formatting. For real parameter framework, consider using {@link org.apache.sis.parameter}
+  * package instead.</p>
+  *
+  * <h2>Note about raw-type usage</h2>
+  * We use raw type (i.e. we implement {@code ParameterDescriptor} instead of {@code ParameterDescriptor<T>})
+  * because there is no way we can know {@code <T>} for sure at unmarshalling time. This is not a recommended
+  * practice, so <strong>this class shall not be in public API</strong>.  However it should be okay to create
+  * {@code QualityParameter} instances in Apache SIS internal code if all methods creating such instances
+  * declare {@code ParameterDescriptor<?>} as their return type.
+  *
+  * @author  Martin Desruisseaux (Geomatys)
+  * @version 1.3
+  * @since   1.3
+  * @module
+  */
+ @SuppressWarnings("rawtypes")   // For the omission of <T> in Parameter<T> - see javadoc.
+ @XmlType(name = "DQM_Parameter_Type", namespace = Namespaces.DQM, propOrder = {
+     "code",
+     "definition",
+     "description",
+     "valueType",
+     "valueStructure"
+ })
+ @XmlRootElement(name = "DQM_Parameter", namespace = Namespaces.DQM)
+ public final class QualityParameter extends Parameter {
+     /**
+      * Name of the data quality parameter, to be represented as identifier code.
+      *
+      * @see #getName()
+      */
+     @XmlElement(name="name", required=true)
+     String code;
+ 
+     /**
+      * Definition of the data quality parameter.
+      * Stored in {@link Identifier#getDescription()}.
+      *
+      * @see #getName()
+      */
+     @XmlElement(required = true)
+     InternationalString definition;
+ 
+     /**
+      * Description of the data quality parameter.
+      *
+      * @see #getDescription()
+      */
+     @XmlElement
+     Description description;
+ 
+     /**
+      * Value type of the data quality parameter (shall be one of the data types defined in ISO/TS 19103:2005).
+      *
+      * @see #getValueType()
+      * @see #getValueClass()
+      */
+     @XmlElement(required = true)
+     @XmlJavaTypeAdapter(GO_GenericName.class)   // Not in package-info because shall not be applied to getLegacyName().
+     TypeName valueType;
+ 
+     /**
+      * Structure of the data quality parameter.
+      *
+      * @see #getValueClass()
+      */
+     @XmlElement
+     ValueStructure valueStructure;
+ 
+     /**
+      * Creates an initially empty parameter.
+      * This constructor is needed by JAXB at unmarshalling time.
+      *
+      * <p><strong>Consider this constructor as private</strong> except for testing purpose.
+      * See <cite>Note about raw-type usage</cite> in class javadoc.</p>
+      */
+     QualityParameter() {
+     }
+ 
+     /**
+      * Creates a parameter initialized to the values of the given one.
+      * This is used for marshalling an arbitrary parameter as an ISO 19157 parameter.
+      */
+     @SuppressWarnings("unchecked")
+     private QualityParameter(final ParameterDescriptor<?> parameter) {
+         super(parameter);
+         final Identifier id = parameter.getName();
+         if (id != null) {
+             code = id.getCode();
+             definition = id.getDescription();
+         }
+         InternationalString text = parameter.getDescription();
+         if (text != null) {
+             description = new DefaultDescription(text);
+         }
+         valueType = parameter.getValueType();
+         valueStructure = ValueStructure.valueOf(parameter.getValueClass()).orElse(null);
+     }
+ 
+     /**
+      * Returns the given parameter as an instance of {@code QualityParameter}.
+      *
+      * @param  parameter  the parameter (may be {@code null}).
+      * @return the service parameter, or {@code null} if the given argument was null.
+      */
+     public static QualityParameter castOrCopy(final ParameterDescriptor<?> parameter) {
+         if (parameter == null || parameter instanceof QualityParameter) {
+             return (QualityParameter) parameter;
+         }
+         return new QualityParameter(parameter);
+     }
+ 
+     /**
+      * Returns the name as an {@code Identifier}, which is the type requested by ISO 19111.
+      * Note that this is different than the type requested by ISO 19157, which is {@link String}.
+      *
+      * @return the parameter name as an identifier (the type specified by ISO 19111).
+      */
+     @Override
 -    public synchronized Identifier getName() {
++    public synchronized ReferenceIdentifier getName() {
+         if (name == null && code != null) {
 -            final DefaultIdentifier id = new DefaultIdentifier(code);
++            final RS_Identifier id = new RS_Identifier(null, code, null);
+             id.setDescription(definition);
+             id.transitionTo(DefaultIdentifier.State.FINAL);
+             name = id;
+         }
+         return name;
+     }
+ 
+     /**
+      * Returns a narrative explanation of the role of the parameter.
+      *
+      * @return a narrative explanation of the role of the parameter, or {@code null} if none.
+      */
+     @Override
+     public InternationalString getDescription() {
+         final Description description = this.description;
+         return (description != null) ? description.getTextDescription() : null;
+     }
+ 
+     /**
+      * Infers the value class from the type name.
+      * This method is the reason why we can not parameterize this {@code QualityParameter} class
+      * (see <cite>Note about raw-type usage</cite> in class javadoc), because there is no way we
+      * can ensure that the class inferred from {@link #valueType} is really for type {@code <T>}.
+      *
+      * @return the value class inferred from the attribute type, or {@code null} if unknown.
+      */
+     @Override
+     public Class<?> getValueClass() {
+         Class<?> type = super.getValueClass();
+         if (type == null) {
+             final ValueStructure s = valueStructure;
+             type = (s != null) ? s.toJavaType().orElse(null) : Names.toClass(valueType);
+         }
+         return type;
+     }
+ 
+     /**
+      * Returns the name that describes the type of parameter values.
+      *
+      * @return the type name of value component(s) in this parameter.
+      */
+     @Override
+     public TypeName getValueType() {
+         return valueType;
+     }
+ 
+     /**
+      * Suggests a type name for the components of given collection or array class.
+      * The component type is fetched on a <cite>best effort</cite> basis only.
+      * This method does the following checks:
+      * <ul>
+      *   <li>If the given class is a class, then its {@linkplain Class#getComponentType() component type} is used.</li>
+      *   <li>Otherwise if the class is an {@link Iterable}, then the upper bound of elements is fetched.</li>
+      *   <li>Otherwise if the class is a {@link Map}, then the upper bound of keys is fetched.</li>
+      *   <li>Otherwise if the class is a {@link Matrix} or {@link Coverage}, then {@link Double} components is assumed.</li>
+      *   <li>Otherwise the given class is used as if it was already a component type (i.e. a singleton item).</li>
+      * </ul>
+      *
+      * This method is used for mapping {@link Class} to ({@link ValueStructure}, {@link TypeName}) pair.
+      * The other member of the pair is given by {@link ValueStructure#valueOf(Class)}.
+      *
+      * @param  valueClass  the type of values for which to infer a {@link TypeName} instance.
+      * @return a type name for components of the given type.
+      */
+     public static TypeName getValueType(Class<?> valueClass) {
+         if (valueClass.isArray()) {
+             valueClass = valueClass.getComponentType();
+         } else if (Iterable.class.isAssignableFrom(valueClass) || Map.class.isAssignableFrom(valueClass)) {
+             valueClass = Classes.boundOfParameterizedDeclaration(valueClass);
+         } else if (Matrix.class.isAssignableFrom(valueClass) || Coverage.class.isAssignableFrom(valueClass)) {
+             valueClass = Double.class;
+         }
+         return Names.createTypeName(valueClass);
+     }
+ }
diff --cc core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
index 8b190ed7f7,350daf8bb5..c0a46ff19a
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
@@@ -39,12 -34,9 +34,12 @@@ import org.apache.sis.internal.metadata
  import org.apache.sis.util.iso.DefaultMemberName;
  import org.apache.sis.util.iso.Names;
  import org.apache.sis.xml.Namespaces;
- import org.apache.sis.util.ComparisonMode;
- import org.apache.sis.util.resources.Errors;
  
- import static org.apache.sis.util.Utilities.deepEquals;
  import static org.apache.sis.internal.util.CollectionsExt.nonNull;
  
++// Branch-dependent imports
++import org.opengis.referencing.ReferenceIdentifier;
++
  
  /**
   * Parameter information conform to the ISO 19115:2014 specification.
@@@ -214,6 -227,26 +230,26 @@@ public final class ServiceParameter ext
          return null;
      }
  
+     /**
+      * Returns the name as an {@code Identifier}, which is the type requested by ISO 19111.
+      * Note that this is different than the type requested by ISO 19115, which is {@link MemberName}.
+      *
+      * This method is the converse of {@link #getMemberName(ParameterDescriptor)}.
+      *
+      * @return the parameter name as an identifier (the type specified by ISO 19111).
+      */
+     @Override
 -    public synchronized Identifier getName() {
++    public synchronized ReferenceIdentifier getName() {
+         if (name == null && memberName != null) {
 -            if (memberName instanceof Identifier) {
 -                name = (Identifier) memberName;
++            if (memberName instanceof ReferenceIdentifier) {
++                name = (ReferenceIdentifier) memberName;
+             } else {
+                 name = new NameToIdentifier(memberName);
+             }
+         }
+         return name;
+     }
+ 
      /**
       * Returns the name to be marshalled in the ISO 19139:2007 way. Example:
       *
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
index f4b1a92af8,b60c360ec5..10be7cc10e
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
@@@ -23,12 -23,13 +23,14 @@@ import javax.xml.bind.annotation.XmlRoo
  import org.opengis.metadata.lineage.Lineage;
  import org.opengis.metadata.quality.DataQuality;
  import org.opengis.metadata.quality.Element;
- import org.opengis.metadata.quality.Scope;
+ import org.opengis.metadata.quality.StandaloneQualityReportInformation;
 -import org.opengis.metadata.maintenance.Scope;
  import org.opengis.metadata.maintenance.ScopeCode;
- import org.apache.sis.metadata.iso.ISOMetadata;
 -import org.apache.sis.metadata.iso.maintenance.DefaultScope;
  import org.apache.sis.internal.jaxb.FilterByVersion;
  import org.apache.sis.internal.xml.LegacyNamespaces;
  
++// Branch-dependent imports
++import org.opengis.metadata.quality.Scope;
++
  
  /**
   * Quality information for the data specified by a data quality scope.
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java
index f68c3e3d20,0650db257b..e0a8813103
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java
@@@ -141,7 -79,8 +79,8 @@@
      @XmlJavaTypeAdapter(MD_ContentInformation.class),
      @XmlJavaTypeAdapter(MD_Format.class),
      @XmlJavaTypeAdapter(MD_Identifier.class),
+ //  @XmlJavaTypeAdapter(MD_RangeDimension.class),       // Pending new ISO 19157 revision.
 -    @XmlJavaTypeAdapter(MD_Scope.class),
 +    @XmlJavaTypeAdapter(MD_Scope.Legacy.class),
      @XmlJavaTypeAdapter(MD_SpatialRepresentation.class),
      @XmlJavaTypeAdapter(MD_SpatialRepresentationTypeCode.class),
      @XmlJavaTypeAdapter(MX_DataFile.class),
diff --cc core/sis-referencing/src/test/java/org/apache/sis/parameter/ParametersTest.java
index 31aacc3d3e,fdb16740a8..908b73d1e2
--- a/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParametersTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParametersTest.java
@@@ -23,8 -23,9 +23,8 @@@ import javax.measure.Unit
  import org.opengis.parameter.ParameterDescriptor;
  import org.opengis.parameter.ParameterDirection;
  import org.opengis.parameter.ParameterValue;
- import org.opengis.referencing.ReferenceIdentifier;
  import org.opengis.parameter.ParameterValueGroup;
 -import org.opengis.metadata.Identifier;
+ import org.opengis.util.TypeName;
  import org.opengis.util.GenericName;
  import org.opengis.util.InternationalString;
  import org.apache.sis.measure.Range;
@@@ -38,6 -39,6 +38,9 @@@ import org.junit.Test
  
  import static org.junit.Assert.*;
  
++// Branch-dependent imports
++import org.opengis.referencing.ReferenceIdentifier;
++
  
  /**
   * Tests the static methods in the {@link Parameters} class.