FAIR-MI / miiid-schema

A metadata schema for the Minimum Information about Intermicrobial Interaction Data (MIIID) using LinkML
https://fair-mi.github.io/miiid-schema/
GNU General Public License v3.0
3 stars 0 forks source link

Add missing values controlled vocabularies as union of ranges #9

Open cpauvert opened 1 year ago

cpauvert commented 1 year ago

This should is related to #4 but there is an issue with the validation of the data.

linkml-validate \
   -s src/miiid_schema/schema/miiid_schema.yaml \
   -C IntermicrobialInteraction\
    src/data/examples/valid/IntermicrobialInteraction-pairwise-with-missing-data.yaml

fails with:

Traceback (most recent call last):
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/bin/linkml-validate", line 8, in <module>
    sys.exit(cli())
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/linkml/validators/jsonschemavalidator.py", line 167, in cli
    results = validator.validate_object(obj, target_class=py_target_class)
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/linkml/validators/jsonschemavalidator.py", line 68, in validate_object
    return jsonschema.validate(inst_dict, schema=jsonschema_obj, format_checker=jsonschema.Draft7Validator.FORMAT_CHECKER)
  File "/home/cpauvert/.cache/pypoetry/virtualenvs/miiid-schema-6-7ZvLG3-py3.9/lib/python3.9/site-packages/jsonschema/validators.py", line 1121, in validate
    raise error
jsonschema.exceptions.ValidationError: '1236' is not one of ['NOT_APPLICABLE', 'NOT_COLLECTED', 'NOT_PROVIDED', 'RESTRICTED_ACCESS']

Failed validating 'enum' in schema[1]:
    {'description': 'List of missing values reporting terms according '
                    'based on the International Nucleotide Sequence '
                    'Database Collaboration (INSDC )',
     'enum': ['NOT_APPLICABLE',
              'NOT_COLLECTED',
              'NOT_PROVIDED',
              'RESTRICTED_ACCESS'],
     'title': 'MissingValue',
     'type': 'string'}

On instance:
    '1236'

This could be due to the fact that the any_of is applied to an enum : MissingValue and a custom type NCBITaxId.

https://github.com/FAIR-MI/miiid-schema/blob/f99e409b3f153548c7dc4adb7fe019175d11a2d0/src/miiid_schema/schema/miiid_schema.yaml#L78-L85