Releases: linkml/linkml-model
v1.8.0
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:
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:
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:
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 #192
- Adding extended types. Fixes linkml/linkml#1871 by @cmungall in #185
- Allowing permissible_value to have implements and instantiates by @cmungall in #194
- Adding is_a and mixins to slots for permissible_value. by @cmungall in #195
- Adding enum bindings by @cmungall in #193
- Adding type_mappings to metamodel by @cmungall in #196
- Allowing multivalued to be used in slot expressions as well as top level slots. by @cmungall in #197
- Update ifabsent metamodel by @vincentkelleher in #198
New Contributors
- @vincentkelleher made their first contribution in #198
Full Changelog: v1.7.0...v1.8.0
v1.8.0rc1
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:
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:
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:
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
- Relax domain on is_a, mixin, mixins such that inheritance is valid for permissible values; fixes linkml/linkml#1261 by @sierra-moxon in #192
- Adding is_a and mixins to slots for permissible_value. by @cmungall in #195
- Allowing permissible_value to have implements and instantiates by @cmungall in #194
- Adding extended types. Fixes linkml/linkml#1871 by @cmungall in #185
- Adding enum bindings by @cmungall in #193
- Adding type_mappings to metamodel by @cmungall in #196
- Allowing multivalued to be used in slot expressions as well as top level slots. by @cmungall in #197
- Update ifabsent metamodel to allow for
EnumName(PermissibleValue)
by @vincentkelleher in #198
New Contributors
- @vincentkelleher made their first contribution in #198
Full Changelog: v1.7.0...v1.8.0rc1
v1.7.0
Array Support
The 1.7.x series of LinkML sees the introduction of first-class array support through the introduction of the linkml:array metamodel slot.
Basic example of usage, to define a 3D array:
TemperatureDataset:
attributes:
temperature_matrix:
range: float
unit:
ucum_code: K
array:
exact_number_dimensions: 3
Individual axes can be named and constrained. See #181 for a log of discussions. Additional documentation will be added to the main LinkML site.
Thanks to the work of the @linkml/ndarray-wg
This work was conducted as part of the LinkML Neurodata Hackashop sponsored by NeurodataWithoutBorders and DANDI and organized by @satra and @oruebel at Berkeley in Feb 2024.
Additional Highights
- Include LABEL in Permissible Value Formula Options by @nicholsn in #171
- Make maximum_value and minimum_value accept linkml:Any by @sneakers-the-rat in #176
What's Changed
- Fix repository name in release workflow by @pkalita-lbl in #169
- Remove Mark from author list by @nlharris in #170
- Include LABEL in Permissible Value Formula Options by @nicholsn in #171
- XY alias removal of axes by @melonora in #172
- Bump to latest linkml version for dev group by @cmungall in #173
- Add missing oslc and bibo prefixes by @sneakers-the-rat in #177
- Make maximum_value and minimum_value accept linkml:Any by @sneakers-the-rat in #176
- Update array metamodel and examples by @rly in #175
- Adding examples to test by @cmungall in #174
- Adding mappings to SIO by @cmungall in #178
- Mention BasicSubset just once by @yarikoptic in #182
- First pass at native NDArray support. by @cmungall in #181
- 1.7.0 release candidate by @cmungall in #179
- Remove "has_extra_dimensions" by @rly in #184
- 1.7.0rc3 by @cmungall in #183
New Contributors
- @nlharris made their first contribution in #170
- @nicholsn made their first contribution in #171
- @melonora made their first contribution in #172
- @sneakers-the-rat made their first contribution in #177
Full Changelog: v1.6.0...v1.7.0
v1.7.0rc1
What's Changed
- Fix repository name in release workflow by @pkalita-lbl in #169
- Include LABEL in Permissible Value Formula Options by @nicholsn in #171
- XY alias removal of axes by @melonora in #172
- Bump to latest linkml version for dev group by @cmungall in #173
- Add missing oslc and bibo prefixes by @sneakers-the-rat in #177
- Make maximum_value and minimum_value accept linkml:Any by @sneakers-the-rat in #176
- Update array metamodel and examples by @rly in #175
- Adding examples to test by @cmungall in #174
- Adding mappings to SIO by @cmungall in #178
New Contributors
- @nlharris made their first contribution in #170
- @nicholsn made their first contribution in #171
- @melonora made their first contribution in #172
- @sneakers-the-rat made their first contribution in #177
Full Changelog: v1.6.0...v1.7.0rc1
v1.6.0
Highlights
This release marks the start of versioned documentation deployment
https://linkml.io/linkml-model/1.6.x/docs/
What's Changed
- Adding instantiates metaslot by @cmungall in #163
- Adding AnyValue to the metamodel by @cmungall in #164
- changing the range of extensions from string to AnyValue by @cmungall in #162
- proposal add jsonpointer path types by @cmungall in #159
- basic repo maintenance by @sierra-moxon in #167
- Add missing "not" to partial_match slot description by @pkalita-lbl in #166
- Use versioned documentation deployment by @pkalita-lbl in #168
Full Changelog: v1.5.2...v1.6.0
v1.6.0rc1
What's Changed
- Add classes OneDimensionalSeries, TwoDimensionalArray by @rly in #143
- refining array model by @cmungall in #153
- Change time type's URI to xsd:time by @pkalita-lbl in #154
- Adding a codegen spec by @cmungall in #157
- Regenerate output products using latest linkml generators. by @cmungall in #158
- CDISC mappings by @cmungall in #156
- Codespell: config, action, typos fixed by @yarikoptic in #161
- proposal add jsonpointer path types by @cmungall in #159
- Adding implements metaslot by @cmungall in #163
- changing the range of extensions from string to Any by @cmungall in #162
New Contributors
- @rly made their first contribution in #143
- @yarikoptic made their first contribution in #161
Full Changelog: v1.5.0...v1.6.0rc1
v1.5.2
What's Changed
- Change time type's URI to xsd:time by @pkalita-lbl in #154
- Adding a codegen spec by @cmungall in #157
- Regenerate output products using latest linkml generators. by @cmungall in #158
- CDISC mappings by @cmungall in #156
- Codespell: config, action, typos fixed by @yarikoptic in #161
New Contributors
- @yarikoptic made their first contribution in #161
Full Changelog: v1.5.1...v1.5.2
v1.5.1
1.5.0 release
Changes between 1.5 and 1.4
Example Value Objects
Previously examples
were limited to objects with two fields (value and description)
1.5 adds a object
field that has range Any
, allowing an arbitrary nested object to be used
See: https://w3id.org/linkml/Example
implements
Any LinkML element can now list a number of uris or curies to indicate conformance to an external schema without importing it
See: https://w3id.org/linkml/implements
Note: currently this is treated purely as documentation, but in future tools may use this to perform an additional level of validation on a project.
inlined_as_simple_dict
added inlined_as_simple_dict. This can be used to explicitly indicate that a collection is inlined as a SimpleDict.
For more information, see the section Collection Forms in part 6 of the specification
An example of inlining as a dict is commonly seen on all linkml schemas:
prefixes:
chemrof: https://w3id.org/chemrof/
COB: http://purl.obolibrary.org/obo/COB_
BFO: http://purl.obolibrary.org/obo/BFO_
Currently tools do not use this element, so usage is purely documentational. In future validators may use this to determine whether to interpret a dict as a SimpleDict or not.
Additional metadata fields for schemas
The following can now be added to schema elements
- created_by
- created_on
- last_updated_on
- modified_by
- status
Documentation improvements
Thanks for @vincentvialard for many clarifications and fixes to the specification and documentation
What's Changed
- added ../ to local paths to fix broken links by @vincentvialard in #144
- add enums to description of schema definition by @vincentvialard in #145
- fixing normalization errors by @cmungall in #147
- allow example objects by @cmungall in #135
- Additions for 1.5 by @cmungall in #148
- Adding a curie type by @cmungall in #149
- Docs for type designators by @cmungall in #151
- Adding a contributor guide, also describe model sync process by @cmungall in #150
Full Changelog: v1.4.0...v1.5.0
v1.5.0rc2
Identical to https://github.com/linkml/linkml-model/releases/tag/v1.5.0rc1, except this time created using 1.4.10 of linkml generators