Skip to content

Add profile build script and interface #121

@caufieldjh

Description

@caufieldjh

Discussed at D4D call on March 10 2026.

We want to have a minimal version of the D4D to be compatible with RO-Crate and potentially other schemas.
We also want to be able to use more detailed versions of specific classes where necessary.
One solution is to treat the minimal version as the exchange layer in which each slot has a flat representation attached to the Dataset class, but also enable anyone to build a D4D profile incorporating one or more of the more detailed modules.

So this is an example of a slot in the exchange layer:

    description: >-
      Ethical or compliance reviews conducted (e.g., IRB). Simplified to strings.
    range: string
    multivalued: true

But in an extended form, it would be more like

    description: >-
      Ethical or compliance reviews conducted (e.g., IRB). Simplified to strings.
    range:
      any_of:
      - string
      - EthicalReview
    multivalued: true

And in this case, it would still be backwards-compatible, but you could use the more detailed EthicalReview class:

    description: >
      Were any ethical or compliance review processes conducted (e.g., by an institutional
      review board)? If so, please provide a description of these review processes,
      including the frequency of review and documentation of outcomes, as well as a link or other access point to any
      supporting documentation.
    is_a: DatasetProperty
    attributes:
      contact_person:
       ...

This is partially due to a limitation of LinkML in that you can't specify the data type of something to be both a string and an object of a class that doesn't exist in the schema.
We want the exchange layer to not have to import every other class, but we still want to be able to use them.
That is what the profile is for - it is a version of the schema with the necessary level of detail.

This implementation will require both the build script and some manner of interface, minimally a CLI, to select the appropriate modules.
(Or, to be somewhat fancy, have an AI agent help with the process.)

Depends on #114.

Metadata

Metadata

Assignees

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