Skip to content

Handling a YAML Stream file with multiple types of models #436

@ronaldtse

Description

@ronaldtse

Specifically, we want to handle this kind of file:

This is used in ISO 5843-6:2025.

The setup of "concept/.yaml + localized_concepts/.yaml" is way too complicated for management purposes from the filesystem. This approach is not suitable for management as source code.

For example, this would already work:

---
data:
  dates:
    - date: 2023-01-01T00:00:00.000+00:00
      type: accepted
  definition:
    - content: process by which atmospheric gases absorb electromagnetic radiation
  id: '1-EN'
  sources:
    - origin:
        ref: ISO 2533:1975
        clause: 3.2.1
      type: authoritative
  terms:
    - designation: absorption, atmospheric
      normative_status: preferred
      type: expression
  language_code: eng
dateAccepted: 2023-01-01T00:00:00.000+00:00
id: 3a75582e-699c-4e08-b26a-3ebd6fb00101
status: 3a75582e-699c-4e08-b26a-3ebd6fb00102
---
data:
  dates:
    - date: 2023-01-01T00:00:00.000+00:00
      type: accepted
  definition:
    - content: processus par lequel les gaz atmosphériques absorbent le rayonnement électromagnétique
  id: '1-FR'
  sources:
    - origin:
        ref: ISO 2533:1975
        clause: 3.2.1
      type: authoritative
  terms:
    - designation: absorption atmosphérique
      normative_status: preferred
      type: expression
  language_code: fra
dateAccepted: 2023-01-01T00:00:00.000+00:00
id: b4e76f2a-9d3c-4a1f-8e5b-6c0d9f1a2b83
status: valid
---
data:
  dates:
    - date: 2023-01-01T00:00:00.000+00:00
      type: accepted
  definition:
    - content: процесс поглощения атмосферными газами электромагнитного излучения
  id: '1-RU'
  sources:
    - origin:
        ref: ISO 2533:1975
        clause: 3.2.1
      type: authoritative
  terms:
    - designation: атмосферное поглощение
      normative_status: preferred
      type: expression
  language_code: rus
dateAccepted: 2023-01-01T00:00:00.000+00:00
id: 3a75582e-699c-4e08-b26a-3ebd6fb00103
status: valid
---
data:
  dates:
    - date: 2023-01-01T00:00:00.000+00:00
      type: accepted
  definition:
    - content: prozess bei dem atmosphärische Gase elektromagnetische Strahlung absorbieren
  id: '1-DE'
  sources:
    - origin:
        ref: ISO 2533:1975
        clause: 3.2.1
      type: authoritative
  terms:
    - designation: atmosphärische Absorption
      normative_status: preferred
      type: expression
  language_code: deu
dateAccepted: 2023-01-01T00:00:00.000+00:00
id: 3a75582e-699c-4e08-b26a-3ebd6fb00104
status: valid
---
data:
  identifier: '1'
  localized_concepts:
    eng: 3a75582e-699c-4e08-b26a-3ebd6fb00101
    fra: 3a75582e-699c-4e08-b26a-3ebd6fb00102
    rus: 3a75582e-699c-4e08-b26a-3ebd6fb00103
    deu: 3a75582e-699c-4e08-b26a-3ebd6fb00104
dateAccepted: 2023-01-01T00:00:00.000+00:00
id: 3a75582e-699c-4e08-b26a-3ebd6fb00100
status: valid

I think there are 2 ways:

  1. We declare at the model level that "the first 4 things will be localized concepts, the 5th is a concept" (or the other way round since it would be easier: the first is a concept and the rest are localized concepts).
  2. Somehow we define it in the YAML file itself, e.g. the first document is a "meta" document that points to the types/models of each following document
  3. We define the type in each document stating what class it is (e.g. _lutaml_model: my_class) but I don't know how we can tie them together (i.e. concepts "has" localized concepts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions