From b541495aa4a4f2b153f044bc5f42ed437bfb5750 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 11 Jul 2024 12:47:20 +0100 Subject: [PATCH 1/3] Mark propagatable slots as such in the LinkML model. This commit adds a "propagated" annotation to all slots that should be considered "propagatable", that is, all slots that, when set at the level of the mapping set, can (and should) be propagatated down to the level of individual mappings. The presence of the annotation in the model replaces the list available in the src/docs/spec-model.md document as the authoritative source for which slots are propatagable or not. The aforementioned list remains in place, but only as a convenience for readers of the spec. --- src/sssom_schema/schema/sssom_schema.yaml | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/sssom_schema/schema/sssom_schema.yaml b/src/sssom_schema/schema/sssom_schema.yaml index ca9928bf..c659037f 100644 --- a/src/sssom_schema/schema/sssom_schema.yaml +++ b/src/sssom_schema/schema/sssom_schema.yaml @@ -173,6 +173,9 @@ slots: subject_type: description: The type of entity that is being mapped. range: entity_type_enum + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: owl:Class predicate_id: @@ -283,6 +286,9 @@ slots: object_type: description: The type of entity that is being mapped. range: entity_type_enum + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: owl:Class mapping_set_id: @@ -363,6 +369,9 @@ slots: subject_source: description: URI of vocabulary or identifier source for the subject. range: EntityReference + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. @@ -371,6 +380,9 @@ slots: subject_source_version: description: Version IRI or version string of the source of the subject term. range: string + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl description: (A persistent Version IRI pointing to the Mondo version '2021-01-30') @@ -391,6 +403,9 @@ slots: object_source: description: URI of vocabulary or identifier source for the object. range: EntityReference + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. @@ -399,6 +414,9 @@ slots: object_source_version: description: Version IRI or version string of the source of the object term. range: string + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl description: (A persistent Version IRI pointing to the Mondo version '2021-01-30') @@ -406,6 +424,9 @@ slots: description: URL pointing to the source that provided the mapping, for example an ontology that already contains the mappings, or a database from which it was derived. range: uri + instantiates: sssom:Propagatable + annotations: + propagated: true mapping_set_source: description: A mapping set or set of mapping set that was used to derive the mapping set. slot_uri: prov:wasDerivedFrom @@ -430,17 +451,26 @@ slots: description: A reference to the tool or algorithm that was used to generate the mapping. Should be a URL pointing to more info about it, but can be free text. range: string + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: https://github.com/AgreementMakerLight/AML-Project mapping_tool_version: description: Version string that denotes the version of the mapping tool used. range: string + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: v3.2 mapping_date: description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. slot_uri: pav:authoredOn range: date + instantiates: sssom:Propagatable + annotations: + propagated: true publication_date: description: The date the mapping was published. This is different from the date the mapping was asserted. slot_uri: dcterms:created @@ -454,11 +484,17 @@ slots: for the match. range: EntityReference multivalued: true + instantiates: sssom:Propagatable + annotations: + propagated: true object_match_field: description: A list of properties (term annotations on the object) that was used for the match. range: EntityReference multivalued: true + instantiates: sssom:Propagatable + annotations: + propagated: true match_string: description: String that is shared by subj/obj. It is recommended to indicate the fields for the match using the object and subject_match_field slots. @@ -470,6 +506,9 @@ slots: recommended to store the match in separate rows. range: EntityReference multivalued: true + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: semapv:Stemming - value: semapv:StopWordRemoval @@ -479,6 +518,9 @@ slots: recommended to store the match in separate rows. range: EntityReference multivalued: true + instantiates: sssom:Propagatable + annotations: + propagated: true examples: - value: semapv:Stemming - value: semapv:StopWordRemoval @@ -722,3 +764,14 @@ classes: - mapping_set_group - last_updated - local_name + Propagatable: + class_uri: sssom:Propagatable + description: Metamodel extension class to describe slots whose value can be + propagated down from the MappingSet class to the Mapping class. + see_also: + - https://github.com/mapping-commons/sssom/issues/305 + attributes: + propagated: + description: Indicates whether a slot can be propagated from a mapping + down to individual mappings. + range: boolean From 4228b7dfe1138e4a8bbc22ec8d6bd627364c6fa4 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 11 Jul 2024 12:52:00 +0100 Subject: [PATCH 2/3] Amend model documentation about propagatable slots. Update the section about "propagatable slots" to refer to the LinkML model, and the newly added "propagated" annotation, as the source of truth for which slots are considered propagatable. --- src/docs/spec-model.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/docs/spec-model.md b/src/docs/spec-model.md index bf33644e..b99f5c3b 100644 --- a/src/docs/spec-model.md +++ b/src/docs/spec-model.md @@ -30,7 +30,9 @@ As mentioned briefly above, there are two different types of slots in the `Mappi * slots that provide informations about the set itself; * slots that provide informations about all the mappings in the set. -The latter are called “propagatable slots”. The propagatable slots are: +The latter are called “propagatable slots”. In the LinkML model, they are marked with a `propagated` annotation whose value is set to `true`. + +For convenience, here is the current list of propagatable slots: * `mapping_date`, * `mapping_provider`, @@ -47,8 +49,6 @@ The latter are called “propagatable slots”. The propagatable slots are: * `subject_source_version`, * `subject_type`. -(In a future version of this specification, this information will be formally specified directly within the LinkML schema.) - When a mapping set object has a value in one of its propagatable slots, this MUST be interpreted as if all mappings within the set had that same value in their corresponding slot. For example, if a set has the value _foo_ in its `mapping_tool` slot, all the mappings in that set MUST be treated as if they had the value _foo_ in their `mapping_tool` slot. This mechanism is intended as a convenience, so that a slot which has the same value for all mappings in a set can be specified only once at the level of the set rather than for each individual mapping. From ba330a29b9636bd3697dffee261fd48a345ea19b Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 11 Jul 2024 12:53:25 +0100 Subject: [PATCH 3/3] Update CHANGELOG. Mention the newly added concept of "propagatable slots" in the CHANGELOG for the next release. Also fix the CHANGELOG, that didn't contain an entry for the last two releases. --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f988b54..91baafbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,16 @@ ## Next -- Add issue_tracker_item and issue_tracker [model elements](https://github.com/mapping-commons/sssom/pull/259). +- Add the concept of "propagatable slots". + +## SSSOM version 0.15.1 + - Add recommendation to sort the keys in the YAML metadata block. +## SSSOM version 0.15.0 + +- Add issue_tracker_item and issue_tracker [model elements](https://github.com/mapping-commons/sssom/pull/259). + ## SSSOM version 0.13.0 - The necessity of the "canonical column ordering" was downgraded from MUST to SHOULD (https://github.com/mapping-commons/sssom/pull/285)