Highlights
New primitive types for use in scientific computing
Provides new primitives such as `uint32` for precise specification of numeric base types
https://github.com/linkml/linkml-model/pull/185/files
This work was done by the linkml/ndarray-wg as part of the Berkeley neuro-hackathon
Enum model enhancements
`permissible_values` now allows for many of the same slots as other elements, allowing for placement in an is-a hierarchy. See 192, 194, 195
This metamodel also introduces the concept of enum *bindings*. See the examples here: https://github.com/linkml/linkml-model/blob/main/tests/input/examples/schema_definition-enum_bindings-1.yaml
For example, given a class for modeling concepts or vocabulary terms in your model:
yaml
Concept:
description: A generic class for representing an element from a vocabulary or ontology.
attributes:
id:
identifier: true
description: CURIE/identifier for the concept. E.g. ENVO:1234567
name:
description: human-readable label of the concept. E.g. "blood"
vocabulary:
description: E.g. UBERON, PO, ENVO, NCIT
and a class that uses it:
yaml
EnvironmentalMaterialSample:
attributes:
name:
description: E.g. my blood sample
sample_material_type:
range: Concept
This allows for a great deal of flexibility. But what if we want to restrict the values of the id field of the referenced concept based on a (static of dynamic) enum?
We can modify the attribute or slot:
yaml
sample_material_type:
range: Concept
bindings:
- binds_value_of: id
range: ENVOMaterialEnum
obligation_level: RECOMMENDED
description: Material type from the ENVO ontology
Currently this only serves as documentation as logic to validate bindings is not yet implemented
What's Changed
* remove domain from is_a, mixin, mixins per ticket 1261 by sierra-moxon in https://github.com/linkml/linkml-model/pull/192
* Adding extended types. Fixes https://github.com/linkml/linkml/issues/1871 by cmungall in https://github.com/linkml/linkml-model/pull/185
* Allowing permissible_value to have implements and instantiates by cmungall in https://github.com/linkml/linkml-model/pull/194
* Adding is_a and mixins to slots for permissible_value. by cmungall in https://github.com/linkml/linkml-model/pull/195
* Adding enum bindings by cmungall in https://github.com/linkml/linkml-model/pull/193
* Adding type_mappings to metamodel by cmungall in https://github.com/linkml/linkml-model/pull/196
* Allowing multivalued to be used in slot expressions as well as top level slots. by cmungall in https://github.com/linkml/linkml-model/pull/197
* Update ifabsent metamodel by vincentkelleher in https://github.com/linkml/linkml-model/pull/198
New Contributors
* vincentkelleher made their first contribution in https://github.com/linkml/linkml-model/pull/198
**Full Changelog**: https://github.com/linkml/linkml-model/compare/v1.7.0...v1.8.0