-
Notifications
You must be signed in to change notification settings - Fork 3
Description
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.