microbiomedata / nmdc-schema

National Microbiome Data Collaborative (NMDC) unified data model
https://microbiomedata.github.io/nmdc-schema/
Creative Commons Zero v1.0 Universal
27 stars 8 forks source link

Report slots, as used by some class, that have another class in their range, when that range class has a strcutred pattern #1990

Closed turbomam closed 4 months ago

turbomam commented 4 months ago

see also

turbomam commented 4 months ago

Some of this could have gone in a separate PR, although it all makes the output from src/scripts/project_id_patterns.py briefer

turbomam commented 4 months ago

QuantityValue.has_numeric_value global_range = 'float' usage.range = 'double'

turbomam commented 4 months ago
ChromatographicSeparationProcess.has_input
    global_range = 'NamedThing'
    any_of.range = 'Biosample'
    any_of.range = 'ProcessedSample'
    prioritized_range = {'range': 'Biosample', 'range_types': 'linkml:ClassDefinition'}
    prioritized_range = {'range': 'ProcessedSample', 'range_types': 'linkml:ClassDefinition'}
DataObject.was_generated_by
    global_range = 'Activity'
    any_of.range = 'Activity'
    any_of.range = 'OmicsProcessing'
    prioritized_range = {'range': 'Activity', 'range_types': 'linkml:ClassDefinition'}
    prioritized_range = {'range': 'OmicsProcessing', 'range_types': 'linkml:ClassDefinition'}
Extraction.has_input
    global_range = 'NamedThing'
    any_of.range = 'Biosample'
    any_of.range = 'ProcessedSample'
    prioritized_range = {'range': 'Biosample', 'range_types': 'linkml:ClassDefinition'}
    prioritized_range = {'range': 'ProcessedSample', 'range_types': 'linkml:ClassDefinition'}
MixingProcess.has_input
    global_range = 'NamedThing'
    any_of.range = 'Biosample'
    any_of.range = 'ProcessedSample'
    prioritized_range = {'range': 'Biosample', 'range_types': 'linkml:ClassDefinition'}
    prioritized_range = {'range': 'ProcessedSample', 'range_types': 'linkml:ClassDefinition'}
SubSamplingProcess.has_input
    global_range = 'NamedThing'
    any_of.range = 'Biosample'
    any_of.range = 'ProcessedSample'
    prioritized_range = {'range': 'Biosample', 'range_types': 'linkml:ClassDefinition'}
    prioritized_range = {'range': 'ProcessedSample', 'range_types': 'linkml:ClassDefinition'}
turbomam commented 4 months ago

then

merge patterns for consensus over typecodes and then assign the merged pattern as a constraint on the relevant class/slot pair.

turbomam commented 4 months ago

Merging this. Will address projecting the asserted patterns onto mentioning slots separately.