sdmx-twg / sdmx-im

SDMX Information Model - UML model and functional description, definition of classes, associations and attributes
6 stars 3 forks source link

Multi-valued dataKeySet keyValues values #35

Open hoehrmann opened 2 months ago

hoehrmann commented 2 months ago

https://registry.sdmx.org/sdmx/v2/structure/dataconstraint/IAEG-SDGs/CN_SERIES_SDG_GLC/+/?format=sdmx-json&version=2.0.0&prettyPrint=true does this:

data:
  dataConstraints:
    - id: CN_SERIES_SDG_GLC
      name: SDG Series Level content constraints
      description: SDG Series Level content constraints for the Country Global
        Dataflow. They define which dimensions/codes are enabled for each
        individual series.
      version: "1.17"
      agencyID: IAEG-SDGs
      role: Allowed
      constraintAttachment:
        dataflows:
          - urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=IAEG-SDGs:DF_SDG_GLC(1.17)
      dataKeySets:
        - isIncluded: true
          keys:
            - keyValues:
                - id: SERIES
                  value: SI_POV_DAY1
                - id: UNIT_MEASURE
                  value: PT
                - id: UNIT_MULT
                  value: "0"
                - id: COMPOSITE_BREAKDOWN
                  value: _T
                - id: INCOME_WEALTH_QUANTILE
                  value: _T
                - id: PRODUCT
                  value: _T
                - id: ACTIVITY
                  value: _T
            - keyValues:
                - id: SERIES
                  value: SI_POV_DAY1
                - id: UNIT_MEASURE
                  value: PT
                - id: UNIT_MULT
                  value: "0"
                - id: COMPOSITE_BREAKDOWN
                  value: MS_MIGRANT
                - id: INCOME_WEALTH_QUANTILE
                  value: _T
                - id: PRODUCT
                  value: _T
                - id: ACTIVITY
                  value: _T
            - keyValues:
                - id: SERIES
                  value: SI_POV_DAY1
                - id: UNIT_MEASURE
                  value: PT
                - id: UNIT_MULT
                  value: "0"
                - id: COMPOSITE_BREAKDOWN
                  value: MS_NOMIGRANT
                - id: INCOME_WEALTH_QUANTILE
                  value: _T
                - id: PRODUCT
                  value: _T
                - id: ACTIVITY
                  value: _T
            - keyValues:
                - id: SERIES
                  value: SI_POV_DAY1
                - id: UNIT_MEASURE
                  value: PT
                - id: UNIT_MULT
                  value: "0"
                - id: COMPOSITE_BREAKDOWN
                  value: MS_EUMIGRANT
                - id: INCOME_WEALTH_QUANTILE
                  value: _T
                - id: PRODUCT
                  value: _T
                - id: ACTIVITY
                  value: _T
            - keyValues:
                - id: SERIES
                  value: SI_POV_DAY1
                - id: UNIT_MEASURE
                  value: PT
                - id: UNIT_MULT
                  value: "0"
                - id: COMPOSITE_BREAKDOWN
                  value: MS_NONEUMIGRANT
                - id: INCOME_WEALTH_QUANTILE
                  value: _T
                - id: PRODUCT
                  value: _T
                - id: ACTIVITY
                  value: _T

In order to allow multiple values for COMPOSITE_BREAKDOWN everything else is also repeated.

That's silly and impossible to maintain by hand.

There must be a better way to encode this information, like allowing an array of values?

(In doubt, please handle this as a public review comment on SDMX 3.1 once the comment period begins.)

agent96 commented 1 month ago

I believe this duplicates this issue: https://github.com/sdmx-twg/sdmx-im/issues/31