diff --git a/ExtensionDefinition/index.html b/ExtensionDefinition/index.html index 9e150618..110ce788 100644 --- a/ExtensionDefinition/index.html +++ b/ExtensionDefinition/index.html @@ -539,6 +539,7 @@

Direct

name: extension definition
 description: A definition of an extension (non-standard) slot.
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 attributes:
   slot_name:
     name: slot_name
@@ -575,6 +576,7 @@ 

Induced

name: extension definition
 description: A definition of an extension (non-standard) slot.
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 attributes:
   slot_name:
     name: slot_name
diff --git a/Mapping/index.html b/Mapping/index.html
index 45786bce..5e089140 100644
--- a/Mapping/index.html
+++ b/Mapping/index.html
@@ -875,6 +875,7 @@ 

Direct

name: mapping
 description: Represents an individual mapping between a pair of entities
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 slots:
 - subject_id
 - subject_label
@@ -972,6 +973,7 @@ 

Induced

name: mapping
 description: Represents an individual mapping between a pair of entities
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 attributes:
   subject_id:
     name: subject_id
diff --git a/MappingRegistry/index.html b/MappingRegistry/index.html
index 8b703518..40fa6fb6 100644
--- a/MappingRegistry/index.html
+++ b/MappingRegistry/index.html
@@ -558,6 +558,7 @@ 

Direct

description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ +rank: 1000 slots: - mapping_registry_id - mapping_registry_title @@ -576,6 +577,7 @@

Induced

description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ +rank: 1000 attributes: mapping_registry_id: name: mapping_registry_id diff --git a/MappingSet/index.html b/MappingSet/index.html index b2b9f376..2b4395d8 100644 --- a/MappingSet/index.html +++ b/MappingSet/index.html @@ -741,6 +741,7 @@

Direct

name: mapping set
 description: Represents a set of mappings
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 slots:
 - curie_map
 - mappings
@@ -787,6 +788,7 @@ 

Induced

name: mapping set
 description: Represents a set of mappings
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 slot_usage:
   license:
     name: license
diff --git a/MappingSetReference/index.html b/MappingSetReference/index.html
index fb476d23..9ca406fe 100644
--- a/MappingSetReference/index.html
+++ b/MappingSetReference/index.html
@@ -565,6 +565,7 @@ 

Direct

from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ +rank: 1000 slots: - mapping_set_id - mirror_from @@ -582,6 +583,7 @@

Induced

from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ +rank: 1000 attributes: mapping_set_id: name: mapping_set_id diff --git a/NoTermFound/index.html b/NoTermFound/index.html index 2d51c34c..13a346a6 100644 --- a/NoTermFound/index.html +++ b/NoTermFound/index.html @@ -513,6 +513,7 @@

Direct

see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv +rank: 1000 class_uri: sssom:NoTermFound
@@ -528,6 +529,7 @@

Induced

see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv +rank: 1000 class_uri: sssom:NoTermFound
diff --git a/Prefix/index.html b/Prefix/index.html index bbd6c92e..a1572a6a 100644 --- a/Prefix/index.html +++ b/Prefix/index.html @@ -529,6 +529,7 @@

Direct

name: prefix
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 slots:
 - prefix_name
 - prefix_url
@@ -539,6 +540,7 @@ 

Induced

name: prefix
 from_schema: https://w3id.org/sssom/schema/
+rank: 1000
 attributes:
   prefix_name:
     name: prefix_name
diff --git a/Propagatable/index.html b/Propagatable/index.html
index dc240cd9..cd7b234d 100644
--- a/Propagatable/index.html
+++ b/Propagatable/index.html
@@ -511,6 +511,7 @@ 

Direct

from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 +rank: 1000 attributes: propagated: name: propagated @@ -533,6 +534,7 @@

Induced

from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 +rank: 1000 attributes: propagated: name: propagated diff --git a/linkml-index/index.html b/linkml-index/index.html index c6e3ae85..2b9e4ef5 100644 --- a/linkml-index/index.html +++ b/linkml-index/index.html @@ -64,7 +64,7 @@
- + Skip to content @@ -369,37 +369,64 @@
  • - - Classes + + Introduction
  • - - Slots + + Mapping metadata elements
  • - - Enumerations + + Mappings set metadata elements
  • + + Index (all classes, enums and elements) + + +
  • @@ -948,37 +975,64 @@
    • - - Classes + + Introduction
    • - - Slots + + Mapping metadata elements
    • - - Enumerations + + Mappings set metadata elements
    • + + Index (all classes, enums and elements) + + +
    • @@ -1002,54 +1056,491 @@ -

      sssom

      +

      SSSOM Official Data Model Documentation

      +

      SSSOM banner

      Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM)

      -

      URI: https://w3id.org/sssom/schema/

      -

      Name: sssom

      -

      Classes

      +

      Schema PURL: https://w3id.org/sssom/schema/

      +

      Introduction

      +

      While the SSSOM model is quite general and mappings can be shared in different formats, the most common format is the SSSOM/TSV format. +Here is a tabular representation of some example mappings for illustration purposes:

      - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Classsubject_idsubject_labelpredicate_idobject_idobject_labelmapping_justificationauthor_idconfidencecomment
      KF_FOOD:F001appleskos:exactMatchFOODON:00002473apple (whole)semapv:ManualMappingCurationorcid:0000-0002-7356-17790.95"We could map to FOODON:03310788 instead to cover sliced apples, but only 'whole' apple types exist."
      KF_FOOD:F002galaskos:exactMatchFOODON:00003348Gala apple (whole)semapv:ManualMappingCurationorcid:0000-0002-7356-17791.0
      KF_FOOD:F003pinkskos:exactMatchFOODON:00004186Pink apple (whole)semapv:ManualMappingCurationorcid:0000-0002-7356-17790.9"We could map to FOODON:00004187 instead which more specifically refers to 'raw' Pink apples. Decided against to be consistent with other mapping choices."
      KF_FOOD:F004braeburnskos:broadMatchFOODON:00002473apple (whole)semapv:ManualMappingCurationorcid:0000-0002-7356-17791.0
      +

      In the TSV format, mapping set metadata is included at the top of the file, before the mappings themselves, in yaml-like key-value pairs:

      +
      +

      Example header (YAML format)

      +

      +curie_map:
      +  FOODON: http://purl.obolibrary.org/obo/FOODON_
      +  KF_FOOD: https://kewl-foodie.inc/food/
      +  orcid: https://orcid.org/
      +mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv
      +mapping_set_description: >
      +  Manually curated alignment of KEWL FOODIE INC internal food and 
      +  nutrition database with Food Ontology (FOODON). Intended to be 
      +  used for ontological analysis and grouping of KEWL FOODIE INC 
      +  related data.
      +license: https://creativecommons.org/licenses/by/4.0/
      +mapping_date: 2022-05-02
      +

      +
      +

      See here for concrete examples.

      +

      Mapping metadata elements

      +

      Mapping: Represents an individual mapping between a pair of entities

      + + + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Column/Field DescriptionRequired
      ExtensionDefinitionA definition of an extension (non-standard) slot.subject_idThe ID of the subject of the mapping.Optional
      MappingRepresents an individual mapping between a pair of entitiessubject_labelThe label of subject of the mappingRecommended
      MappingRegistryA registry for managing mapping sets. It holds a set of mapping set references, and can import other registries.subject_categoryThe conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases.Optional
      MappingSetRepresents a set of mappingspredicate_idThe ID of the predicate or relation that relates the subject and object of this match.Required
      MappingSetReferenceA reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping.predicate_labelThe label of the predicate/relation of the mappingOptional
      NoTermFoundsssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found.predicate_modifierA modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussionOptional
      PrefixNoneobject_idThe ID of the object of the mapping.Optional
      PropagatableMetamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class.object_labelThe label of object of the mappingRecommended
      object_categoryThe conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases.Optional
      mapping_justificationA mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable.Required
      author_idIdentifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs.Optional
      author_labelA string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead.Optional
      reviewer_idIdentifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.Optional
      reviewer_labelA string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead.Optional
      creator_idIdentifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.Optional
      creator_labelA string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead.Optional
      licenseA url to the license of the mapping. In absence of a license we assume no license.Optional
      subject_typeThe type of entity that is being mapped.Optional
      subject_sourceURI of vocabulary or identifier source for the subject.Optional
      subject_source_versionVersion IRI or version string of the source of the subject term.Optional
      object_typeThe type of entity that is being mapped.Optional
      object_sourceURI of vocabulary or identifier source for the object.Optional
      object_source_versionVersion IRI or version string of the source of the object term.Optional
      mapping_providerURL 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.Optional
      mapping_sourceThe mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another.Optional
      mapping_cardinalityA string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set.Optional
      mapping_toolA 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.Optional
      mapping_tool_versionVersion string that denotes the version of the mapping tool used.Optional
      mapping_dateThe date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file.Optional
      publication_dateThe date the mapping was published. This is different from the date the mapping was asserted.Optional
      confidenceA score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence.Optional
      curation_ruleA curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule.Optional
      curation_rule_textA curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text.Optional
      subject_match_fieldA list of properties (term annotations on the subject) that was used for the match.Optional
      object_match_fieldA list of properties (term annotations on the object) that was used for the match.Optional
      match_stringString that is shared by subj/obj. It is recommended to indicate the fields for the match using the object and subject_match_field slots.Optional
      subject_preprocessingMethod of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.Optional
      object_preprocessingMethod of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.Optional
      similarity_scoreA score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm.Optional
      similarity_measureThe measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified.Optional
      see_alsoA URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignmentOptional
      issue_tracker_itemThe issue tracker item discussing this mapping.Optional
      otherPipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data.Optional
      commentFree text field containing either curator notes or text generated by tool providing additional informative information.Optional
      +

      Mappings set metadata elements

      +

      MappingSet: Represents a set of mappings

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Column/FieldDescriptionRequired
      curie_mapA dictionary that contains prefixes as keys and their URI expansions as values.Optional
      mappingsContains a list of mapping objectsRecommended
      mapping_set_idA globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable.Required
      mapping_set_versionA version string for the mapping.Optional
      mapping_set_sourceA mapping set or set of mapping set that was used to derive the mapping set.Optional
      mapping_set_titleThe display name of a mapping set.Optional
      mapping_set_descriptionA description of the mapping set.Optional
      creator_idIdentifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.Optional
      creator_labelA string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead.Optional
      licenseA url to the license of the mapping. In absence of a license we assume no license.Optional
      subject_typeThe type of entity that is being mapped.Optional
      subject_sourceURI of vocabulary or identifier source for the subject.Optional
      subject_source_versionVersion IRI or version string of the source of the subject term.Optional
      object_typeThe type of entity that is being mapped.Optional
      object_sourceURI of vocabulary or identifier source for the object.Optional
      object_source_versionVersion IRI or version string of the source of the object term.Optional
      mapping_providerURL 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.Optional
      mapping_toolA 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.Optional
      mapping_tool_versionVersion string that denotes the version of the mapping tool used.Optional
      mapping_dateThe date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file.Optional
      publication_dateThe date the mapping was published. This is different from the date the mapping was asserted.Optional
      subject_match_fieldA list of properties (term annotations on the subject) that was used for the match.Optional
      object_match_fieldA list of properties (term annotations on the object) that was used for the match.Optional
      subject_preprocessingMethod of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.Optional
      object_preprocessingMethod of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.Optional
      see_alsoA URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignmentOptional
      issue_trackerA URL location of the issue tracker for this entity.Optional
      otherPipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data.Optional
      commentFree text field containing either curator notes or text generated by tool providing additional informative information.Optional
      extension_definitionsA list that defines the extension slots used in the mapping set.Optional
      -

      Slots

      +

      Index (all classes, enums and elements)

      +

      Columns/Slots/Fields

      @@ -1348,7 +1839,50 @@

      Slots

      -

      Enumerations

      +

      Classes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ClassDescription
      ExtensionDefinitionA definition of an extension (non-standard) slot.
      MappingRepresents an individual mapping between a pair of entities
      MappingRegistryA registry for managing mapping sets. It holds a set of mapping set references, and can import other registries.
      MappingSetRepresents a set of mappings
      MappingSetReferenceA reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping.
      NoTermFoundsssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found.
      PrefixNone
      PropagatableMetamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class.
      +

      Enumerations

      @@ -1371,7 +1905,7 @@

      Enumerations

      -

      Types

      +

      Types

      @@ -1462,21 +1996,6 @@

      Types

      -

      Subsets

      - - - - - - - - - - - - - -
      SubsetDescription
      diff --git a/search/search_index.json b/search/search_index.json index 65f2d661..21937fc5 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Simple Standard for Sharing Ontological Mappings (SSSOM) The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven standard designed to facilitate the exchange and integration of semantic entity mappings. As data interoperability becomes increasingly crucial across various domains, SSSOM provides a standardized format to share mappings, enabling researchers and developers to more easily connect and utilize diverse datasets. By establishing a common framework, SSSOM enhances the consistency, quality, and discoverability of mappings, thereby supporting more effective data integration and analysis. Standardization : SSSOM provides a unified format for representing semantic, or ontological, mappings, making it easier for different systems and organizations to exchange mapping data consistently. Interoperability : By using SSSOM, data from diverse sources can be integrated more seamlessly, allowing for improved data analysis and research across various fields, including biology, healthcare, and information technology. Beyond defining the standard itself, the SSSOM Core Team and the SSSOM community also develop reference tools and software libraries for working with the standard. SSSOM at a glance: Model and Exchange Format Basic model The data model of SSSOM is centered around two fundamental concepts: mappings and mapping sets. A SSSOM mapping is a statement that there is a correspondence between two semantic entities. It comprises two components: The core mapping (or raw mapping ), which is a triple that represents the correspondence itself between a subject entity, for example a class in an ontology, and an object entity, for example an identifier in some database, via a semantic mapping predicate, for example skos:exactMatch . Metadata that provide supplementary pieces of information about the core mapping. This notably includes information about the provenance of the statement (for example, who authored the statement), the confidence with which the mappings holds, and its justification (a reason that supports the fidelity of the mapping between the subject and the object, such as expert review , or exact lexical matching on the entities' primary names). A SSSOM mapping set is a collection of SSSOM mappings. Mapping sets can also be associated with metadata, such as license statements, or a description. The SSSOM/TSV format The main format proposed by the SSSOM standard to exchange mapping sets is the SSSOM/TSV format . Here is a basic example of a file in that format: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 Quick links General GitHub page Detailed description Formal specification Publications A Simple Standard for Sharing Ontological Mappings (SSSOM) (initial publication in Database ) A Simple Standard for Ontological Mappings 2022: Updates of data model and outlook (paper and presentation at the Ontology Matching Workshop 2022) A Simple Standard for Ontological Mappings 2023: Updates on data model, collaborations and tooling (paper and presentation at the Ontology Matching Workshop 2023) Other presentations Related software sssom-py (reference implementation of the standard, a toolkit and API for processing mappings, written in Python) SSSOM-Java (an implementation of the SSSOM standard for the Java language) The SSSOM Core Team Contact The preferred way to contact the SSSOM team is through the issue tracker (for problems with SSSOM) or the GitHub discussion forums (for general questions). You can find any of the members of the SSSOM core team on GitHub . Their GitHub profiles usually also provide email addresses. You can also reach us in the OBO Foundry Slack , in the #sssom channel. Steering committee The Steering committee is a self-appointed group of SSSOM contributors, whose aim is to drive the evolution of the standard and coordinate community contributions. Nicolas Matentzoglu (Semanticly, Independent Consultant; @matentzn ) Damien Goutte-Gattat (Flybase) Harshad Hegde (LBNL) Chris Mungall (LBNL) Melissa Haendel (UNC) Documentation/specification editors Anita Caron (EMBL-EBI) Charlie Hoyt (Harvard Medical School; @cthoyt ) David Osumi-Sutherland (EMBL-EBI) Emily Hartley (Critical Path Institute) Ernesto Jimenez-Ruiz (City, University of London) Harry Caufield (LBNL) Henriette Harmse (EMBL-EBI) James McLaughlin (EMBL-EBI) John Graybeal (Independent Consultant) Sierra Moxon (LBNL) Simon Jupp (SciBite) Thomas Liener (Independent Consultant) Tiffany Callahan ( @callahantiff ) William Duncan (University of Florida) Contributors Alasdair Gray Alex Wagner Amelia L. Hoyt Andrew Williams Anne Thessen Benjamin M. Gyori Bill Baumgartner Cassia Trojahn Clement Jonquet Christopher Chute Chris T. Evelo Damion Dooley Davera Gabriel Harold Solbrig HyeongSik Kim Ian Harrow Ian Braun James Malone James Overton James P. Balhoff James Stevenson Javier Mill\u00e1n Acosta Jiao Dahzi Joe Flack Jooho Lee Julie McMurry Kori Kuzma Kristin Kostka Lauren Chan Melissa Haendel Monica Munoz-Torres Nicole Vasilevsky Nomi Harris N\u00faria Queralt-Rosinach Sabrina Toro Sebastian Koehler Shahim Essaid Sophie Aubin Sue Bello Sujay Patil Sven Hertling Tim Putman Vinicius de Souza Acknowledgements See Funding for details on direct contributions. We thank the Link Model Language (LinkML) project and team for their great framework and the LinkML team for their support developing the schema.","title":"Home"},{"location":"#simple-standard-for-sharing-ontological-mappings-sssom","text":"The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven standard designed to facilitate the exchange and integration of semantic entity mappings. As data interoperability becomes increasingly crucial across various domains, SSSOM provides a standardized format to share mappings, enabling researchers and developers to more easily connect and utilize diverse datasets. By establishing a common framework, SSSOM enhances the consistency, quality, and discoverability of mappings, thereby supporting more effective data integration and analysis. Standardization : SSSOM provides a unified format for representing semantic, or ontological, mappings, making it easier for different systems and organizations to exchange mapping data consistently. Interoperability : By using SSSOM, data from diverse sources can be integrated more seamlessly, allowing for improved data analysis and research across various fields, including biology, healthcare, and information technology. Beyond defining the standard itself, the SSSOM Core Team and the SSSOM community also develop reference tools and software libraries for working with the standard.","title":"Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"#sssom-at-a-glance-model-and-exchange-format","text":"","title":"SSSOM at a glance: Model and Exchange Format"},{"location":"#basic-model","text":"The data model of SSSOM is centered around two fundamental concepts: mappings and mapping sets. A SSSOM mapping is a statement that there is a correspondence between two semantic entities. It comprises two components: The core mapping (or raw mapping ), which is a triple that represents the correspondence itself between a subject entity, for example a class in an ontology, and an object entity, for example an identifier in some database, via a semantic mapping predicate, for example skos:exactMatch . Metadata that provide supplementary pieces of information about the core mapping. This notably includes information about the provenance of the statement (for example, who authored the statement), the confidence with which the mappings holds, and its justification (a reason that supports the fidelity of the mapping between the subject and the object, such as expert review , or exact lexical matching on the entities' primary names). A SSSOM mapping set is a collection of SSSOM mappings. Mapping sets can also be associated with metadata, such as license statements, or a description.","title":"Basic model"},{"location":"#the-sssomtsv-format","text":"The main format proposed by the SSSOM standard to exchange mapping sets is the SSSOM/TSV format . Here is a basic example of a file in that format: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1","title":"The SSSOM/TSV format"},{"location":"#quick-links","text":"General GitHub page Detailed description Formal specification Publications A Simple Standard for Sharing Ontological Mappings (SSSOM) (initial publication in Database ) A Simple Standard for Ontological Mappings 2022: Updates of data model and outlook (paper and presentation at the Ontology Matching Workshop 2022) A Simple Standard for Ontological Mappings 2023: Updates on data model, collaborations and tooling (paper and presentation at the Ontology Matching Workshop 2023) Other presentations Related software sssom-py (reference implementation of the standard, a toolkit and API for processing mappings, written in Python) SSSOM-Java (an implementation of the SSSOM standard for the Java language)","title":"Quick links"},{"location":"#the-sssom-core-team","text":"","title":"The SSSOM Core Team"},{"location":"#contact","text":"The preferred way to contact the SSSOM team is through the issue tracker (for problems with SSSOM) or the GitHub discussion forums (for general questions). You can find any of the members of the SSSOM core team on GitHub . Their GitHub profiles usually also provide email addresses. You can also reach us in the OBO Foundry Slack , in the #sssom channel.","title":"Contact"},{"location":"#steering-committee","text":"The Steering committee is a self-appointed group of SSSOM contributors, whose aim is to drive the evolution of the standard and coordinate community contributions. Nicolas Matentzoglu (Semanticly, Independent Consultant; @matentzn ) Damien Goutte-Gattat (Flybase) Harshad Hegde (LBNL) Chris Mungall (LBNL) Melissa Haendel (UNC)","title":"Steering committee"},{"location":"#documentationspecification-editors","text":"Anita Caron (EMBL-EBI) Charlie Hoyt (Harvard Medical School; @cthoyt ) David Osumi-Sutherland (EMBL-EBI) Emily Hartley (Critical Path Institute) Ernesto Jimenez-Ruiz (City, University of London) Harry Caufield (LBNL) Henriette Harmse (EMBL-EBI) James McLaughlin (EMBL-EBI) John Graybeal (Independent Consultant) Sierra Moxon (LBNL) Simon Jupp (SciBite) Thomas Liener (Independent Consultant) Tiffany Callahan ( @callahantiff ) William Duncan (University of Florida)","title":"Documentation/specification editors"},{"location":"#contributors","text":"Alasdair Gray Alex Wagner Amelia L. Hoyt Andrew Williams Anne Thessen Benjamin M. Gyori Bill Baumgartner Cassia Trojahn Clement Jonquet Christopher Chute Chris T. Evelo Damion Dooley Davera Gabriel Harold Solbrig HyeongSik Kim Ian Harrow Ian Braun James Malone James Overton James P. Balhoff James Stevenson Javier Mill\u00e1n Acosta Jiao Dahzi Joe Flack Jooho Lee Julie McMurry Kori Kuzma Kristin Kostka Lauren Chan Melissa Haendel Monica Munoz-Torres Nicole Vasilevsky Nomi Harris N\u00faria Queralt-Rosinach Sabrina Toro Sebastian Koehler Shahim Essaid Sophie Aubin Sue Bello Sujay Patil Sven Hertling Tim Putman Vinicius de Souza","title":"Contributors"},{"location":"#acknowledgements","text":"See Funding for details on direct contributions. We thank the Link Model Language (LinkML) project and team for their great framework and the LinkML team for their support developing the schema.","title":"Acknowledgements"},{"location":"5star-mappings/","text":"5-Star Entity Mappings - Cheatsheet Download as PDF . This document is under development. Get involved by opening an issue on the issue tracker . Towards more reusable and transparent mappings for Open Science. Entity Mappings connect clinical codes, data model enums, ontology classes and terms in clinical terminologies across knowledge organization systems and databases. Entity mappings are pivotal for the integration of healthcare data, but they are expensive to produce and often use-case-dependent. Despite the cost of creating these mappings, they are rarely shared across organizations, and even if they are made available, they lack standardization and metadata. Here we outline a 5-Star mapping system (inspired by Tim Berners-Lee\u2019s 5-star system for Linked Data) to help you bring mapping production in your organization to the next level - step by step. 1-Star Mappings Goal : Export mapping in a computationally accessible format, make it publicly available and record mapping precision. Implementation : Record subject id, object id and mapping precision (exact, broad, narrow, close, related) Use globally unique and persistent identifiers for subject id and object id (e.g. OMOP:123456) Use a computable file format (JSON, XML, CSV, TSV) rather than XLSX or HTML Make mappings available in a public space without access restrictions Optional : record the subject and object labels to make it easier for humans to read the file Enables : Direct integration into ETL pipelines Dropping societal costs by enabling others to re-use mappings Moving data between semantic spaces 2-Star Mappings Goal : Make mappings available in a place with version control suitable for providing community feedback, make your own uncertainty explicit, add license and select semantic mapping predicate. Implementation Make mapping set available in a public version control system (e.g. GitHub) with an issue tracker Record the semantic predicate explicitly (e.g. owl:equivalentClass, skos:exactMatch) Record a confidence value for the mapping between 0 and 1, where appropriate Use a standard open license for the use of the mapping set (e.g. Creative Commons) Enables : The worry-free re-use of mappings even if target or source terminologies are \u201cclosed\u201d Transparently versioned access to mappings and the opportunity to provide more direct feedback Downstream users can filter for high-confidence mappings 3-Star Mappings Goal : Export mappings in a community standard format with basic versioning and provenance information. Implementation Export mappings in SSSOM ( https://w3id.org/sssom ) format (you do not have to curate using SSSOM!) Record the following additional metadata mapping_justification(s) (Lexical, Logical match, Human curated etc.) mapping_date subject_source, object_source, subject_source_version, object_source_version mapping_tool (if the mapping was automatically computed using a tool), creator_id Enables : Dropping costs of reusing mappings further by providing a standard format to exchange mappings Enabling the decentralised production of mappings by independent expert communities Basic metadata, in particular justifications, enable downstream users to assess \u201cfitness for purpose\u201d for a different context 4-Star Mappings Goal : Make it easier to discover mappings by registering them at public mapping registry Implementation Register the mapping at a mapping commons (if none exists, create one) Record the following additional metadata: mapping_set_id, mapping_set_description, mapping_set_version mapping_provider (if the mapping is not original, i.e. it is not derived from another source) Provide an executable mapping_justification (see https://w3id.org/sssom#minimum) Enables : Mappings can easily be made available by Open Terminology services which enable scalable data mapping services 5-Star Mappings Goal : Ensure currency of mappings Implementation : Mappings are up-to-date with the latest versions of the sources being mapped Have no issue on their issue tracker open for more than 3 months without an interaction Usually requires a lifecycle management system that integrates automated matching Enables : Reduced effort dealing with mappings to deprecated codes or classes Worry-free application of mappings in automated ETL processes","title":"5-Star Entity Mappings - Cheatsheet"},{"location":"5star-mappings/#5-star-entity-mappings-cheatsheet","text":"Download as PDF . This document is under development. Get involved by opening an issue on the issue tracker .","title":"5-Star Entity Mappings - Cheatsheet"},{"location":"5star-mappings/#towards-more-reusable-and-transparent-mappings-for-open-science","text":"Entity Mappings connect clinical codes, data model enums, ontology classes and terms in clinical terminologies across knowledge organization systems and databases. Entity mappings are pivotal for the integration of healthcare data, but they are expensive to produce and often use-case-dependent. Despite the cost of creating these mappings, they are rarely shared across organizations, and even if they are made available, they lack standardization and metadata. Here we outline a 5-Star mapping system (inspired by Tim Berners-Lee\u2019s 5-star system for Linked Data) to help you bring mapping production in your organization to the next level - step by step.","title":"Towards more reusable and transparent mappings for Open Science."},{"location":"5star-mappings/#1-star-mappings","text":"Goal : Export mapping in a computationally accessible format, make it publicly available and record mapping precision. Implementation : Record subject id, object id and mapping precision (exact, broad, narrow, close, related) Use globally unique and persistent identifiers for subject id and object id (e.g. OMOP:123456) Use a computable file format (JSON, XML, CSV, TSV) rather than XLSX or HTML Make mappings available in a public space without access restrictions Optional : record the subject and object labels to make it easier for humans to read the file Enables : Direct integration into ETL pipelines Dropping societal costs by enabling others to re-use mappings Moving data between semantic spaces","title":"1-Star Mappings"},{"location":"5star-mappings/#2-star-mappings","text":"Goal : Make mappings available in a place with version control suitable for providing community feedback, make your own uncertainty explicit, add license and select semantic mapping predicate. Implementation Make mapping set available in a public version control system (e.g. GitHub) with an issue tracker Record the semantic predicate explicitly (e.g. owl:equivalentClass, skos:exactMatch) Record a confidence value for the mapping between 0 and 1, where appropriate Use a standard open license for the use of the mapping set (e.g. Creative Commons) Enables : The worry-free re-use of mappings even if target or source terminologies are \u201cclosed\u201d Transparently versioned access to mappings and the opportunity to provide more direct feedback Downstream users can filter for high-confidence mappings","title":"2-Star Mappings"},{"location":"5star-mappings/#3-star-mappings","text":"Goal : Export mappings in a community standard format with basic versioning and provenance information. Implementation Export mappings in SSSOM ( https://w3id.org/sssom ) format (you do not have to curate using SSSOM!) Record the following additional metadata mapping_justification(s) (Lexical, Logical match, Human curated etc.) mapping_date subject_source, object_source, subject_source_version, object_source_version mapping_tool (if the mapping was automatically computed using a tool), creator_id Enables : Dropping costs of reusing mappings further by providing a standard format to exchange mappings Enabling the decentralised production of mappings by independent expert communities Basic metadata, in particular justifications, enable downstream users to assess \u201cfitness for purpose\u201d for a different context","title":"3-Star Mappings"},{"location":"5star-mappings/#4-star-mappings","text":"Goal : Make it easier to discover mappings by registering them at public mapping registry Implementation Register the mapping at a mapping commons (if none exists, create one) Record the following additional metadata: mapping_set_id, mapping_set_description, mapping_set_version mapping_provider (if the mapping is not original, i.e. it is not derived from another source) Provide an executable mapping_justification (see https://w3id.org/sssom#minimum) Enables : Mappings can easily be made available by Open Terminology services which enable scalable data mapping services","title":"4-Star Mappings"},{"location":"5star-mappings/#5-star-mappings","text":"Goal : Ensure currency of mappings Implementation : Mappings are up-to-date with the latest versions of the sources being mapped Have no issue on their issue tracker open for more than 3 months without an interaction Usually requires a lifecycle management system that integrates automated matching Enables : Reduced effort dealing with mappings to deprecated codes or classes Worry-free application of mappings in automated ETL processes","title":"5-Star Mappings"},{"location":"Boolean/","text":"Type: Boolean A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Boolean"},{"location":"Boolean/#type-boolean","text":"A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool","title":"Type: Boolean"},{"location":"Boolean/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Boolean/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Curie/","text":"Type: Curie a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str Comments in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Curie"},{"location":"Curie/#type-curie","text":"a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str","title":"Type: Curie"},{"location":"Curie/#comments","text":"in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation","title":"Comments"},{"location":"Curie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Curie/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Date/","text":"Type: Date a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Date"},{"location":"Date/#type-date","text":"a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str","title":"Type: Date"},{"location":"Date/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Date/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"DateOrDatetime/","text":"Type: DateOrDatetime Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#type-dateordatetime","text":"Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"DateOrDatetime/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Datetime/","text":"Type: Datetime The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Datetime"},{"location":"Datetime/#type-datetime","text":"The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str","title":"Type: Datetime"},{"location":"Datetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Datetime/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Decimal/","text":"Type: Decimal A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Decimal"},{"location":"Decimal/#type-decimal","text":"A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal","title":"Type: Decimal"},{"location":"Decimal/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Decimal/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Double/","text":"Type: Double A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Double"},{"location":"Double/#type-double","text":"A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double","title":"Type: Double"},{"location":"Double/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Double/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"EntityReference/","text":"Type: EntityReference A reference to an entity involved in the mapping. __ URI: rdfs:Resource base : str uri : rdfs:Resource repr : str typeof : uriorcurie See Also https://mapping-commons.github.io/sssom/spec/#tsv Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: EntityReference"},{"location":"EntityReference/#type-entityreference","text":"A reference to an entity involved in the mapping. __ URI: rdfs:Resource base : str uri : rdfs:Resource repr : str typeof : uriorcurie","title":"Type: EntityReference"},{"location":"EntityReference/#see-also","text":"https://mapping-commons.github.io/sssom/spec/#tsv","title":"See Also"},{"location":"EntityReference/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"EntityReference/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"EntityTypeEnum/","text":"Enum: EntityTypeEnum URI: EntityTypeEnum Permissible Values Value Meaning Description owl class owl:Class owl object property owl:ObjectProperty owl data property owl:DataProperty owl annotation property owl:AnnotationProperty owl named individual owl:NamedIndividual skos concept skos:Concept rdfs resource rdfs:Resource rdfs class rdfs:Class rdfs literal rdfs:Literal This value indicate that the entity being mapped is not a semantic entity wit... rdfs datatype rdfs:Datatype rdf property rdf:Property Slots Name Description subject_type The type of entity that is being mapped predicate_type The type of entity that is being mapped object_type The type of entity that is being mapped Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ LinkML Source name: entity_type_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: owl class: text: owl class meaning: owl:Class owl object property: text: owl object property meaning: owl:ObjectProperty owl data property: text: owl data property meaning: owl:DataProperty owl annotation property: text: owl annotation property meaning: owl:AnnotationProperty owl named individual: text: owl named individual meaning: owl:NamedIndividual skos concept: text: skos concept meaning: skos:Concept rdfs resource: text: rdfs resource meaning: rdfs:Resource rdfs class: text: rdfs class meaning: rdfs:Class rdfs literal: text: rdfs literal description: This value indicate that the entity being mapped is not a semantic entity with a distinct identifier, but is instead represented entirely by its literal label. This value MUST NOT be used in the predicate_type slot. meaning: rdfs:Literal see_also: - https://mapping-commons.github.io/sssom/spec-model/#literal-mappings - https://github.com/mapping-commons/sssom/issues/234 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/literals.sssom.tsv rdfs datatype: text: rdfs datatype meaning: rdfs:Datatype rdf property: text: rdf property meaning: rdf:Property","title":"Enum: EntityTypeEnum"},{"location":"EntityTypeEnum/#enum-entitytypeenum","text":"URI: EntityTypeEnum","title":"Enum: EntityTypeEnum"},{"location":"EntityTypeEnum/#permissible-values","text":"Value Meaning Description owl class owl:Class owl object property owl:ObjectProperty owl data property owl:DataProperty owl annotation property owl:AnnotationProperty owl named individual owl:NamedIndividual skos concept skos:Concept rdfs resource rdfs:Resource rdfs class rdfs:Class rdfs literal rdfs:Literal This value indicate that the entity being mapped is not a semantic entity wit... rdfs datatype rdfs:Datatype rdf property rdf:Property","title":"Permissible Values"},{"location":"EntityTypeEnum/#slots","text":"Name Description subject_type The type of entity that is being mapped predicate_type The type of entity that is being mapped object_type The type of entity that is being mapped","title":"Slots"},{"location":"EntityTypeEnum/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"EntityTypeEnum/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"EntityTypeEnum/#linkml-source","text":"name: entity_type_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: owl class: text: owl class meaning: owl:Class owl object property: text: owl object property meaning: owl:ObjectProperty owl data property: text: owl data property meaning: owl:DataProperty owl annotation property: text: owl annotation property meaning: owl:AnnotationProperty owl named individual: text: owl named individual meaning: owl:NamedIndividual skos concept: text: skos concept meaning: skos:Concept rdfs resource: text: rdfs resource meaning: rdfs:Resource rdfs class: text: rdfs class meaning: rdfs:Class rdfs literal: text: rdfs literal description: This value indicate that the entity being mapped is not a semantic entity with a distinct identifier, but is instead represented entirely by its literal label. This value MUST NOT be used in the predicate_type slot. meaning: rdfs:Literal see_also: - https://mapping-commons.github.io/sssom/spec-model/#literal-mappings - https://github.com/mapping-commons/sssom/issues/234 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/literals.sssom.tsv rdfs datatype: text: rdfs datatype meaning: rdfs:Datatype rdf property: text: rdf property meaning: rdf:Property","title":"LinkML Source"},{"location":"ExtensionDefinition/","text":"Class: ExtensionDefinition A definition of an extension (non-standard) slot. URI: sssom:ExtensionDefinition classDiagram class ExtensionDefinition ExtensionDefinition : property ExtensionDefinition : slot_name ExtensionDefinition : type_hint Slots Name Cardinality and Range Description Inheritance slot_name 1 Ncname The name of the extension slot direct property 0..1 Uriorcurie The property associated with the extension slot direct type_hint 0..1 Uriorcurie Expected type of the values of the extension slot direct Usages used by used in type used MappingSet extension_definitions range ExtensionDefinition Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:ExtensionDefinition native sssom:ExtensionDefinition LinkML Source Direct name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie Induced name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Class: ExtensionDefinition"},{"location":"ExtensionDefinition/#class-extensiondefinition","text":"A definition of an extension (non-standard) slot. URI: sssom:ExtensionDefinition classDiagram class ExtensionDefinition ExtensionDefinition : property ExtensionDefinition : slot_name ExtensionDefinition : type_hint","title":"Class: ExtensionDefinition"},{"location":"ExtensionDefinition/#slots","text":"Name Cardinality and Range Description Inheritance slot_name 1 Ncname The name of the extension slot direct property 0..1 Uriorcurie The property associated with the extension slot direct type_hint 0..1 Uriorcurie Expected type of the values of the extension slot direct","title":"Slots"},{"location":"ExtensionDefinition/#usages","text":"used by used in type used MappingSet extension_definitions range ExtensionDefinition","title":"Usages"},{"location":"ExtensionDefinition/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ExtensionDefinition/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"ExtensionDefinition/#mappings","text":"Mapping Type Mapped Value self sssom:ExtensionDefinition native sssom:ExtensionDefinition","title":"Mappings"},{"location":"ExtensionDefinition/#linkml-source","text":"","title":"LinkML Source"},{"location":"ExtensionDefinition/#direct","text":"name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie","title":"Direct"},{"location":"ExtensionDefinition/#induced","text":"name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Induced"},{"location":"Float/","text":"Type: Float A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Float"},{"location":"Float/#type-float","text":"A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float","title":"Type: Float"},{"location":"Float/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Float/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Integer/","text":"Type: Integer An integer URI: xsd:integer base : int uri : xsd:integer Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Integer"},{"location":"Integer/#type-integer","text":"An integer URI: xsd:integer base : int uri : xsd:integer","title":"Type: Integer"},{"location":"Integer/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Integer/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Jsonpath/","text":"Type: Jsonpath A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Jsonpath"},{"location":"Jsonpath/#type-jsonpath","text":"A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str","title":"Type: Jsonpath"},{"location":"Jsonpath/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Jsonpath/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Jsonpointer/","text":"Type: Jsonpointer A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Jsonpointer"},{"location":"Jsonpointer/#type-jsonpointer","text":"A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str","title":"Type: Jsonpointer"},{"location":"Jsonpointer/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Jsonpointer/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Mapping/","text":"Class: Mapping Represents an individual mapping between a pair of entities URI: owl:Axiom classDiagram class Mapping Mapping : author_id Mapping : author_label Mapping : comment Mapping : confidence Mapping : creator_id Mapping : creator_label Mapping : curation_rule Mapping : curation_rule_text Mapping : issue_tracker_item Mapping : license Mapping : mapping_cardinality Mapping --|> mapping_cardinality_enum : mapping_cardinality Mapping : mapping_date Mapping : mapping_justification Mapping : mapping_provider Mapping : mapping_source Mapping : mapping_tool Mapping : mapping_tool_version Mapping : match_string Mapping : object_category Mapping : object_id Mapping : object_label Mapping : object_match_field Mapping : object_preprocessing Mapping : object_source Mapping : object_source_version Mapping : object_type Mapping --|> entity_type_enum : object_type Mapping : other Mapping : predicate_id Mapping : predicate_label Mapping : predicate_modifier Mapping --|> predicate_modifier_enum : predicate_modifier Mapping : publication_date Mapping : reviewer_id Mapping : reviewer_label Mapping : see_also Mapping : similarity_measure Mapping : similarity_score Mapping : subject_category Mapping : subject_id Mapping : subject_label Mapping : subject_match_field Mapping : subject_preprocessing Mapping : subject_source Mapping : subject_source_version Mapping : subject_type Mapping --|> entity_type_enum : subject_type Slots Name Cardinality and Range Description Inheritance subject_id 0..1 EntityReference The ID of the subject of the mapping direct subject_label 0..1 recommended String The label of subject of the mapping direct subject_category 0..1 String The conceptual category to which the subject belongs to direct predicate_id 1 EntityReference The ID of the predicate or relation that relates the subject and object of th... direct predicate_label 0..1 String The label of the predicate/relation of the mapping direct predicate_modifier 0..1 PredicateModifierEnum A modifier for negating the predicate direct object_id 0..1 EntityReference The ID of the object of the mapping direct object_label 0..1 recommended String The label of object of the mapping direct object_category 0..1 String The conceptual category to which the subject belongs to direct mapping_justification 1 EntityReference A mapping justification is an action (or the written representation of that a... direct author_id * EntityReference Identifies the persons or groups responsible for asserting the mappings direct author_label * String A string identifying the author of this mapping direct reviewer_id * EntityReference Identifies the persons or groups that reviewed and confirmed the mapping direct reviewer_label * String A string identifying the reviewer of this mapping direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 0..1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_source 0..1 EntityReference The mapping set this mapping was originally defined in direct mapping_cardinality 0..1 MappingCardinalityEnum A string indicating whether this mapping is from a 1:1 (the subject_id maps t... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct confidence 0..1 Double A score between 0 and 1 to denote the confidence or probability that the matc... direct curation_rule * EntityReference A curation rule is a (potentially) complex condition executed by an agent tha... direct curation_rule_text * String A curation rule is a (potentially) complex condition executed by an agent tha... direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct match_string * String String that is shared by subj/obj direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct similarity_score 0..1 Double A score between 0 and 1 to denote the similarity between two entities, where ... direct similarity_measure 0..1 String The measure used for computing a similarity score direct see_also * String A URL specific for the mapping instance direct issue_tracker_item 0..1 EntityReference The issue tracker item discussing this mapping direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct Usages used by used in type used MappingSet mappings range Mapping Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self owl:Axiom native sssom:Mapping LinkML Source Direct name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ slots: - subject_id - subject_label - subject_category - predicate_id - predicate_label - predicate_modifier - object_id - object_label - object_category - mapping_justification - author_id - author_label - reviewer_id - reviewer_label - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_source - mapping_cardinality - mapping_tool - mapping_tool_version - mapping_date - publication_date - confidence - curation_rule - curation_rule_text - subject_match_field - object_match_field - match_string - subject_preprocessing - object_preprocessing - similarity_score - similarity_measure - see_also - issue_tracker_item - other - comment class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true Induced name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ attributes: subject_id: name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id owner: mapping domain_of: - mapping range: EntityReference subject_label: name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label owner: mapping domain_of: - mapping range: string recommended: true subject_category: name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category owner: mapping domain_of: - mapping range: string predicate_id: name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id owner: mapping domain_of: - mapping range: EntityReference required: true predicate_label: name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label owner: mapping domain_of: - mapping range: string predicate_modifier: name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier owner: mapping domain_of: - mapping range: predicate_modifier_enum object_id: name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id owner: mapping domain_of: - mapping range: EntityReference object_label: name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label owner: mapping domain_of: - mapping range: string recommended: true object_category: name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category owner: mapping domain_of: - mapping range: string mapping_justification: name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification owner: mapping domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration author_id: name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id owner: mapping domain_of: - mapping range: EntityReference author_label: name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label owner: mapping domain_of: - mapping range: string reviewer_id: name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id owner: mapping domain_of: - mapping range: EntityReference reviewer_label: name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label owner: mapping domain_of: - mapping range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping domain_of: - mapping set - mapping range: uri subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping domain_of: - mapping set - mapping range: uri mapping_source: name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source owner: mapping domain_of: - mapping range: EntityReference mapping_cardinality: name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality owner: mapping domain_of: - mapping range: mapping_cardinality_enum mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping domain_of: - mapping set - mapping range: date confidence: name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 curation_rule: name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule owner: mapping domain_of: - mapping range: EntityReference curation_rule_text: name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text owner: mapping domain_of: - mapping range: string subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference match_string: name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string owner: mapping domain_of: - mapping range: string subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference similarity_score: name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 similarity_measure: name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure owner: mapping domain_of: - mapping range: string see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping domain_of: - mapping set - mapping range: string issue_tracker_item: name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item owner: mapping domain_of: - mapping range: EntityReference other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping domain_of: - mapping set - mapping range: string class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true","title":"Class: Mapping"},{"location":"Mapping/#class-mapping","text":"Represents an individual mapping between a pair of entities URI: owl:Axiom classDiagram class Mapping Mapping : author_id Mapping : author_label Mapping : comment Mapping : confidence Mapping : creator_id Mapping : creator_label Mapping : curation_rule Mapping : curation_rule_text Mapping : issue_tracker_item Mapping : license Mapping : mapping_cardinality Mapping --|> mapping_cardinality_enum : mapping_cardinality Mapping : mapping_date Mapping : mapping_justification Mapping : mapping_provider Mapping : mapping_source Mapping : mapping_tool Mapping : mapping_tool_version Mapping : match_string Mapping : object_category Mapping : object_id Mapping : object_label Mapping : object_match_field Mapping : object_preprocessing Mapping : object_source Mapping : object_source_version Mapping : object_type Mapping --|> entity_type_enum : object_type Mapping : other Mapping : predicate_id Mapping : predicate_label Mapping : predicate_modifier Mapping --|> predicate_modifier_enum : predicate_modifier Mapping : publication_date Mapping : reviewer_id Mapping : reviewer_label Mapping : see_also Mapping : similarity_measure Mapping : similarity_score Mapping : subject_category Mapping : subject_id Mapping : subject_label Mapping : subject_match_field Mapping : subject_preprocessing Mapping : subject_source Mapping : subject_source_version Mapping : subject_type Mapping --|> entity_type_enum : subject_type","title":"Class: Mapping"},{"location":"Mapping/#slots","text":"Name Cardinality and Range Description Inheritance subject_id 0..1 EntityReference The ID of the subject of the mapping direct subject_label 0..1 recommended String The label of subject of the mapping direct subject_category 0..1 String The conceptual category to which the subject belongs to direct predicate_id 1 EntityReference The ID of the predicate or relation that relates the subject and object of th... direct predicate_label 0..1 String The label of the predicate/relation of the mapping direct predicate_modifier 0..1 PredicateModifierEnum A modifier for negating the predicate direct object_id 0..1 EntityReference The ID of the object of the mapping direct object_label 0..1 recommended String The label of object of the mapping direct object_category 0..1 String The conceptual category to which the subject belongs to direct mapping_justification 1 EntityReference A mapping justification is an action (or the written representation of that a... direct author_id * EntityReference Identifies the persons or groups responsible for asserting the mappings direct author_label * String A string identifying the author of this mapping direct reviewer_id * EntityReference Identifies the persons or groups that reviewed and confirmed the mapping direct reviewer_label * String A string identifying the reviewer of this mapping direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 0..1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_source 0..1 EntityReference The mapping set this mapping was originally defined in direct mapping_cardinality 0..1 MappingCardinalityEnum A string indicating whether this mapping is from a 1:1 (the subject_id maps t... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct confidence 0..1 Double A score between 0 and 1 to denote the confidence or probability that the matc... direct curation_rule * EntityReference A curation rule is a (potentially) complex condition executed by an agent tha... direct curation_rule_text * String A curation rule is a (potentially) complex condition executed by an agent tha... direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct match_string * String String that is shared by subj/obj direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct similarity_score 0..1 Double A score between 0 and 1 to denote the similarity between two entities, where ... direct similarity_measure 0..1 String The measure used for computing a similarity score direct see_also * String A URL specific for the mapping instance direct issue_tracker_item 0..1 EntityReference The issue tracker item discussing this mapping direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct","title":"Slots"},{"location":"Mapping/#usages","text":"used by used in type used MappingSet mappings range Mapping","title":"Usages"},{"location":"Mapping/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Mapping/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Mapping/#mappings","text":"Mapping Type Mapped Value self owl:Axiom native sssom:Mapping","title":"Mappings"},{"location":"Mapping/#linkml-source","text":"","title":"LinkML Source"},{"location":"Mapping/#direct","text":"name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ slots: - subject_id - subject_label - subject_category - predicate_id - predicate_label - predicate_modifier - object_id - object_label - object_category - mapping_justification - author_id - author_label - reviewer_id - reviewer_label - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_source - mapping_cardinality - mapping_tool - mapping_tool_version - mapping_date - publication_date - confidence - curation_rule - curation_rule_text - subject_match_field - object_match_field - match_string - subject_preprocessing - object_preprocessing - similarity_score - similarity_measure - see_also - issue_tracker_item - other - comment class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true","title":"Direct"},{"location":"Mapping/#induced","text":"name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ attributes: subject_id: name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id owner: mapping domain_of: - mapping range: EntityReference subject_label: name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label owner: mapping domain_of: - mapping range: string recommended: true subject_category: name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category owner: mapping domain_of: - mapping range: string predicate_id: name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id owner: mapping domain_of: - mapping range: EntityReference required: true predicate_label: name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label owner: mapping domain_of: - mapping range: string predicate_modifier: name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier owner: mapping domain_of: - mapping range: predicate_modifier_enum object_id: name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id owner: mapping domain_of: - mapping range: EntityReference object_label: name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label owner: mapping domain_of: - mapping range: string recommended: true object_category: name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category owner: mapping domain_of: - mapping range: string mapping_justification: name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification owner: mapping domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration author_id: name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id owner: mapping domain_of: - mapping range: EntityReference author_label: name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label owner: mapping domain_of: - mapping range: string reviewer_id: name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id owner: mapping domain_of: - mapping range: EntityReference reviewer_label: name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label owner: mapping domain_of: - mapping range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping domain_of: - mapping set - mapping range: uri subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping domain_of: - mapping set - mapping range: uri mapping_source: name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source owner: mapping domain_of: - mapping range: EntityReference mapping_cardinality: name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality owner: mapping domain_of: - mapping range: mapping_cardinality_enum mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping domain_of: - mapping set - mapping range: date confidence: name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 curation_rule: name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule owner: mapping domain_of: - mapping range: EntityReference curation_rule_text: name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text owner: mapping domain_of: - mapping range: string subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference match_string: name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string owner: mapping domain_of: - mapping range: string subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference similarity_score: name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 similarity_measure: name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure owner: mapping domain_of: - mapping range: string see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping domain_of: - mapping set - mapping range: string issue_tracker_item: name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item owner: mapping domain_of: - mapping range: EntityReference other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping domain_of: - mapping set - mapping range: string class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true","title":"Induced"},{"location":"MappingCardinalityEnum/","text":"Enum: MappingCardinalityEnum URI: MappingCardinalityEnum Permissible Values Value Meaning Description 1:1 None One-to-one mapping 1:n None One-to-many mapping n:1 None Many-to-one mapping 1:0 None One-to-none mapping 0:1 None None-to-one mapping n:n None Many-to-many mapping Slots Name Description mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t... Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ LinkML Source name: mapping_cardinality_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: '1:1': text: '1:1' description: One-to-one mapping 1:n: text: 1:n description: One-to-many mapping n:1: text: n:1 description: Many-to-one mapping '1:0': text: '1:0' description: One-to-none mapping 0:1: text: 0:1 description: None-to-one mapping n:n: text: n:n description: Many-to-many mapping","title":"Enum: MappingCardinalityEnum"},{"location":"MappingCardinalityEnum/#enum-mappingcardinalityenum","text":"URI: MappingCardinalityEnum","title":"Enum: MappingCardinalityEnum"},{"location":"MappingCardinalityEnum/#permissible-values","text":"Value Meaning Description 1:1 None One-to-one mapping 1:n None One-to-many mapping n:1 None Many-to-one mapping 1:0 None One-to-none mapping 0:1 None None-to-one mapping n:n None Many-to-many mapping","title":"Permissible Values"},{"location":"MappingCardinalityEnum/#slots","text":"Name Description mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t...","title":"Slots"},{"location":"MappingCardinalityEnum/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingCardinalityEnum/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingCardinalityEnum/#linkml-source","text":"name: mapping_cardinality_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: '1:1': text: '1:1' description: One-to-one mapping 1:n: text: 1:n description: One-to-many mapping n:1: text: n:1 description: Many-to-one mapping '1:0': text: '1:0' description: One-to-none mapping 0:1: text: 0:1 description: None-to-one mapping n:n: text: n:n description: Many-to-many mapping","title":"LinkML Source"},{"location":"MappingRegistry/","text":"Class: MappingRegistry A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. URI: sssom:MappingRegistry classDiagram class MappingRegistry MappingRegistry : documentation MappingRegistry : homepage MappingRegistry : imports MappingRegistry : issue_tracker MappingRegistry : mapping_registry_description MappingRegistry : mapping_registry_id MappingRegistry : mapping_registry_title MappingRegistry : mapping_set_references MappingRegistry --|> mapping set reference : mapping_set_references Slots Name Cardinality and Range Description Inheritance mapping_registry_id 1 EntityReference The unique identifier of a mapping registry direct mapping_registry_title 0..1 String The title of a mapping registry direct mapping_registry_description 0..1 String The description of a mapping registry direct imports * Uri A list of registries that should be imported into this one direct mapping_set_references * recommended MappingSetReference A list of mapping set references direct documentation 0..1 Uri A URL to the documentation of this mapping commons direct homepage 0..1 Uri A URL to a homepage of this mapping commons direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:MappingRegistry native sssom:MappingRegistry LinkML Source Direct name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ slots: - mapping_registry_id - mapping_registry_title - mapping_registry_description - imports - mapping_set_references - documentation - homepage - issue_tracker Induced name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ attributes: mapping_registry_id: name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id owner: mapping registry domain_of: - mapping registry range: EntityReference required: true mapping_registry_title: name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title owner: mapping registry domain_of: - mapping registry range: string mapping_registry_description: name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description owner: mapping registry domain_of: - mapping registry range: string imports: name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports owner: mapping registry domain_of: - mapping registry range: uri mapping_set_references: name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references owner: mapping registry domain_of: - mapping registry range: mapping set reference recommended: true documentation: name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation owner: mapping registry domain_of: - mapping registry range: uri homepage: name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage owner: mapping registry domain_of: - mapping registry range: uri issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping registry domain_of: - mapping set - mapping registry range: uri","title":"Class: MappingRegistry"},{"location":"MappingRegistry/#class-mappingregistry","text":"A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. URI: sssom:MappingRegistry classDiagram class MappingRegistry MappingRegistry : documentation MappingRegistry : homepage MappingRegistry : imports MappingRegistry : issue_tracker MappingRegistry : mapping_registry_description MappingRegistry : mapping_registry_id MappingRegistry : mapping_registry_title MappingRegistry : mapping_set_references MappingRegistry --|> mapping set reference : mapping_set_references","title":"Class: MappingRegistry"},{"location":"MappingRegistry/#slots","text":"Name Cardinality and Range Description Inheritance mapping_registry_id 1 EntityReference The unique identifier of a mapping registry direct mapping_registry_title 0..1 String The title of a mapping registry direct mapping_registry_description 0..1 String The description of a mapping registry direct imports * Uri A list of registries that should be imported into this one direct mapping_set_references * recommended MappingSetReference A list of mapping set references direct documentation 0..1 Uri A URL to the documentation of this mapping commons direct homepage 0..1 Uri A URL to a homepage of this mapping commons direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct","title":"Slots"},{"location":"MappingRegistry/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingRegistry/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingRegistry/#mappings","text":"Mapping Type Mapped Value self sssom:MappingRegistry native sssom:MappingRegistry","title":"Mappings"},{"location":"MappingRegistry/#linkml-source","text":"","title":"LinkML Source"},{"location":"MappingRegistry/#direct","text":"name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ slots: - mapping_registry_id - mapping_registry_title - mapping_registry_description - imports - mapping_set_references - documentation - homepage - issue_tracker","title":"Direct"},{"location":"MappingRegistry/#induced","text":"name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ attributes: mapping_registry_id: name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id owner: mapping registry domain_of: - mapping registry range: EntityReference required: true mapping_registry_title: name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title owner: mapping registry domain_of: - mapping registry range: string mapping_registry_description: name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description owner: mapping registry domain_of: - mapping registry range: string imports: name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports owner: mapping registry domain_of: - mapping registry range: uri mapping_set_references: name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references owner: mapping registry domain_of: - mapping registry range: mapping set reference recommended: true documentation: name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation owner: mapping registry domain_of: - mapping registry range: uri homepage: name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage owner: mapping registry domain_of: - mapping registry range: uri issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping registry domain_of: - mapping set - mapping registry range: uri","title":"Induced"},{"location":"MappingSet/","text":"Class: MappingSet Represents a set of mappings URI: sssom:MappingSet classDiagram class MappingSet MappingSet : comment MappingSet : creator_id MappingSet : creator_label MappingSet : curie_map MappingSet --|> prefix : curie_map MappingSet : extension_definitions MappingSet --|> extension definition : extension_definitions MappingSet : issue_tracker MappingSet : license MappingSet : mapping_date MappingSet : mapping_provider MappingSet : mapping_set_description MappingSet : mapping_set_id MappingSet : mapping_set_source MappingSet : mapping_set_title MappingSet : mapping_set_version MappingSet : mapping_tool MappingSet : mapping_tool_version MappingSet : mappings MappingSet --|> mapping : mappings MappingSet : object_match_field MappingSet : object_preprocessing MappingSet : object_source MappingSet : object_source_version MappingSet : object_type MappingSet --|> entity_type_enum : object_type MappingSet : other MappingSet : publication_date MappingSet : see_also MappingSet : subject_match_field MappingSet : subject_preprocessing MappingSet : subject_source MappingSet : subject_source_version MappingSet : subject_type MappingSet --|> entity_type_enum : subject_type Slots Name Cardinality and Range Description Inheritance curie_map * Prefix A dictionary that contains prefixes as keys and their URI expansions as value... direct mappings * recommended Mapping Contains a list of mapping objects direct mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mapping_set_version 0..1 String A version string for the mapping direct mapping_set_source * Uri A mapping set or set of mapping set that was used to derive the mapping set direct mapping_set_title 0..1 String The display name of a mapping set direct mapping_set_description 0..1 String A description of the mapping set direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct see_also * String A URL specific for the mapping instance direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct extension_definitions * ExtensionDefinition A list that defines the extension slots used in the mapping set direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:MappingSet native sssom:MappingSet LinkML Source Direct name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ slots: - curie_map - mappings - mapping_set_id - mapping_set_version - mapping_set_source - mapping_set_title - mapping_set_description - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_tool - mapping_tool_version - mapping_date - publication_date - subject_match_field - object_match_field - subject_preprocessing - object_preprocessing - see_also - issue_tracker - other - comment - extension_definitions slot_usage: license: name: license domain_of: - mapping set - mapping required: true Induced name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ slot_usage: license: name: license domain_of: - mapping set - mapping required: true attributes: curie_map: name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map owner: mapping set domain_of: - mapping set range: prefix inlined: true mappings: name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings owner: mapping set domain_of: - mapping set range: mapping recommended: true inlined_as_list: true mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set domain_of: - mapping set - mapping set reference range: uri required: true mapping_set_version: name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version owner: mapping set domain_of: - mapping set range: string mapping_set_source: name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source owner: mapping set domain_of: - mapping set range: uri mapping_set_title: name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title owner: mapping set domain_of: - mapping set range: string mapping_set_description: name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description owner: mapping set domain_of: - mapping set range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping set domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping set domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping set domain_of: - mapping set - mapping range: uri required: true subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping set domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping set domain_of: - mapping set - mapping range: uri mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping set domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping set domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping set domain_of: - mapping set - mapping range: date subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping set domain_of: - mapping set - mapping range: string issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping set domain_of: - mapping set - mapping registry range: uri other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping set domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping set domain_of: - mapping set - mapping range: string extension_definitions: name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions owner: mapping set domain_of: - mapping set range: extension definition","title":"Class: MappingSet"},{"location":"MappingSet/#class-mappingset","text":"Represents a set of mappings URI: sssom:MappingSet classDiagram class MappingSet MappingSet : comment MappingSet : creator_id MappingSet : creator_label MappingSet : curie_map MappingSet --|> prefix : curie_map MappingSet : extension_definitions MappingSet --|> extension definition : extension_definitions MappingSet : issue_tracker MappingSet : license MappingSet : mapping_date MappingSet : mapping_provider MappingSet : mapping_set_description MappingSet : mapping_set_id MappingSet : mapping_set_source MappingSet : mapping_set_title MappingSet : mapping_set_version MappingSet : mapping_tool MappingSet : mapping_tool_version MappingSet : mappings MappingSet --|> mapping : mappings MappingSet : object_match_field MappingSet : object_preprocessing MappingSet : object_source MappingSet : object_source_version MappingSet : object_type MappingSet --|> entity_type_enum : object_type MappingSet : other MappingSet : publication_date MappingSet : see_also MappingSet : subject_match_field MappingSet : subject_preprocessing MappingSet : subject_source MappingSet : subject_source_version MappingSet : subject_type MappingSet --|> entity_type_enum : subject_type","title":"Class: MappingSet"},{"location":"MappingSet/#slots","text":"Name Cardinality and Range Description Inheritance curie_map * Prefix A dictionary that contains prefixes as keys and their URI expansions as value... direct mappings * recommended Mapping Contains a list of mapping objects direct mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mapping_set_version 0..1 String A version string for the mapping direct mapping_set_source * Uri A mapping set or set of mapping set that was used to derive the mapping set direct mapping_set_title 0..1 String The display name of a mapping set direct mapping_set_description 0..1 String A description of the mapping set direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct see_also * String A URL specific for the mapping instance direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct extension_definitions * ExtensionDefinition A list that defines the extension slots used in the mapping set direct","title":"Slots"},{"location":"MappingSet/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingSet/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingSet/#mappings","text":"Mapping Type Mapped Value self sssom:MappingSet native sssom:MappingSet","title":"Mappings"},{"location":"MappingSet/#linkml-source","text":"","title":"LinkML Source"},{"location":"MappingSet/#direct","text":"name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ slots: - curie_map - mappings - mapping_set_id - mapping_set_version - mapping_set_source - mapping_set_title - mapping_set_description - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_tool - mapping_tool_version - mapping_date - publication_date - subject_match_field - object_match_field - subject_preprocessing - object_preprocessing - see_also - issue_tracker - other - comment - extension_definitions slot_usage: license: name: license domain_of: - mapping set - mapping required: true","title":"Direct"},{"location":"MappingSet/#induced","text":"name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ slot_usage: license: name: license domain_of: - mapping set - mapping required: true attributes: curie_map: name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map owner: mapping set domain_of: - mapping set range: prefix inlined: true mappings: name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings owner: mapping set domain_of: - mapping set range: mapping recommended: true inlined_as_list: true mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set domain_of: - mapping set - mapping set reference range: uri required: true mapping_set_version: name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version owner: mapping set domain_of: - mapping set range: string mapping_set_source: name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source owner: mapping set domain_of: - mapping set range: uri mapping_set_title: name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title owner: mapping set domain_of: - mapping set range: string mapping_set_description: name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description owner: mapping set domain_of: - mapping set range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping set domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping set domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping set domain_of: - mapping set - mapping range: uri required: true subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping set domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping set domain_of: - mapping set - mapping range: uri mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping set domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping set domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping set domain_of: - mapping set - mapping range: date subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping set domain_of: - mapping set - mapping range: string issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping set domain_of: - mapping set - mapping registry range: uri other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping set domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping set domain_of: - mapping set - mapping range: string extension_definitions: name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions owner: mapping set domain_of: - mapping set range: extension definition","title":"Induced"},{"location":"MappingSetReference/","text":"Class: MappingSetReference A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. URI: sssom:MappingSetReference classDiagram class MappingSetReference MappingSetReference : last_updated MappingSetReference : local_name MappingSetReference : mapping_set_group MappingSetReference : mapping_set_id MappingSetReference : mirror_from MappingSetReference : registry_confidence Slots Name Cardinality and Range Description Inheritance mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mirror_from 0..1 Uri A URL location from which to obtain a resource, such as a mapping set direct registry_confidence 0..1 Double This value is set by the registry that indexes the mapping set direct mapping_set_group 0..1 String Set by the owners of the mapping registry direct last_updated 0..1 Date The date this reference was last updated direct local_name 0..1 String The local name assigned to file that corresponds to the downloaded mapping se... direct Usages used by used in type used MappingRegistry mapping_set_references range MappingSetReference Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:MappingSetReference native sssom:MappingSetReference LinkML Source Direct name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ slots: - mapping_set_id - mirror_from - registry_confidence - mapping_set_group - last_updated - local_name Induced name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ attributes: mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set reference domain_of: - mapping set - mapping set reference range: uri required: true mirror_from: name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from owner: mapping set reference domain_of: - mapping set reference range: uri registry_confidence: name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence owner: mapping set reference domain_of: - mapping set reference range: double mapping_set_group: name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group owner: mapping set reference domain_of: - mapping set reference range: string last_updated: name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated owner: mapping set reference domain_of: - mapping set reference range: date local_name: name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name owner: mapping set reference domain_of: - mapping set reference range: string","title":"Class: MappingSetReference"},{"location":"MappingSetReference/#class-mappingsetreference","text":"A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. URI: sssom:MappingSetReference classDiagram class MappingSetReference MappingSetReference : last_updated MappingSetReference : local_name MappingSetReference : mapping_set_group MappingSetReference : mapping_set_id MappingSetReference : mirror_from MappingSetReference : registry_confidence","title":"Class: MappingSetReference"},{"location":"MappingSetReference/#slots","text":"Name Cardinality and Range Description Inheritance mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mirror_from 0..1 Uri A URL location from which to obtain a resource, such as a mapping set direct registry_confidence 0..1 Double This value is set by the registry that indexes the mapping set direct mapping_set_group 0..1 String Set by the owners of the mapping registry direct last_updated 0..1 Date The date this reference was last updated direct local_name 0..1 String The local name assigned to file that corresponds to the downloaded mapping se... direct","title":"Slots"},{"location":"MappingSetReference/#usages","text":"used by used in type used MappingRegistry mapping_set_references range MappingSetReference","title":"Usages"},{"location":"MappingSetReference/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingSetReference/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingSetReference/#mappings","text":"Mapping Type Mapped Value self sssom:MappingSetReference native sssom:MappingSetReference","title":"Mappings"},{"location":"MappingSetReference/#linkml-source","text":"","title":"LinkML Source"},{"location":"MappingSetReference/#direct","text":"name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ slots: - mapping_set_id - mirror_from - registry_confidence - mapping_set_group - last_updated - local_name","title":"Direct"},{"location":"MappingSetReference/#induced","text":"name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ attributes: mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set reference domain_of: - mapping set - mapping set reference range: uri required: true mirror_from: name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from owner: mapping set reference domain_of: - mapping set reference range: uri registry_confidence: name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence owner: mapping set reference domain_of: - mapping set reference range: double mapping_set_group: name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group owner: mapping set reference domain_of: - mapping set reference range: string last_updated: name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated owner: mapping set reference domain_of: - mapping set reference range: date local_name: name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name owner: mapping set reference domain_of: - mapping set reference range: string","title":"Induced"},{"location":"Ncname/","text":"Type: Ncname Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Ncname"},{"location":"Ncname/#type-ncname","text":"Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str","title":"Type: Ncname"},{"location":"Ncname/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Ncname/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"NoTermFound/","text":"Class: NoTermFound sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. URI: sssom:NoTermFound classDiagram class NoTermFound Slots Name Cardinality and Range Description Inheritance See Also https://github.com/mapping-commons/sssom/issues/28 https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:NoTermFound native sssom:NoTermFound LinkML Source Direct name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv class_uri: sssom:NoTermFound Induced name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv class_uri: sssom:NoTermFound","title":"Class: NoTermFound"},{"location":"NoTermFound/#class-notermfound","text":"sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. URI: sssom:NoTermFound classDiagram class NoTermFound","title":"Class: NoTermFound"},{"location":"NoTermFound/#slots","text":"Name Cardinality and Range Description Inheritance","title":"Slots"},{"location":"NoTermFound/#see-also","text":"https://github.com/mapping-commons/sssom/issues/28 https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv","title":"See Also"},{"location":"NoTermFound/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"NoTermFound/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"NoTermFound/#mappings","text":"Mapping Type Mapped Value self sssom:NoTermFound native sssom:NoTermFound","title":"Mappings"},{"location":"NoTermFound/#linkml-source","text":"","title":"LinkML Source"},{"location":"NoTermFound/#direct","text":"name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv class_uri: sssom:NoTermFound","title":"Direct"},{"location":"NoTermFound/#induced","text":"name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv class_uri: sssom:NoTermFound","title":"Induced"},{"location":"Nodeidentifier/","text":"Type: Nodeidentifier A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#type-nodeidentifier","text":"A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Nodeidentifier/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Objectidentifier/","text":"Type: Objectidentifier A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str Comments Used for inheritance and type checking Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#type-objectidentifier","text":"A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#comments","text":"Used for inheritance and type checking","title":"Comments"},{"location":"Objectidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Objectidentifier/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"PredicateModifierEnum/","text":"Enum: PredicateModifierEnum URI: PredicateModifierEnum Permissible Values Value Meaning Description Not None Negating the mapping predicate Slots Name Description predicate_modifier A modifier for negating the predicate Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ LinkML Source name: predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: Not: text: Not description: Negating the mapping predicate. The meaning of the triple becomes subject_id is not a predicate_id match to object_id.","title":"Enum: PredicateModifierEnum"},{"location":"PredicateModifierEnum/#enum-predicatemodifierenum","text":"URI: PredicateModifierEnum","title":"Enum: PredicateModifierEnum"},{"location":"PredicateModifierEnum/#permissible-values","text":"Value Meaning Description Not None Negating the mapping predicate","title":"Permissible Values"},{"location":"PredicateModifierEnum/#slots","text":"Name Description predicate_modifier A modifier for negating the predicate","title":"Slots"},{"location":"PredicateModifierEnum/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"PredicateModifierEnum/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"PredicateModifierEnum/#linkml-source","text":"name: predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: Not: text: Not description: Negating the mapping predicate. The meaning of the triple becomes subject_id is not a predicate_id match to object_id.","title":"LinkML Source"},{"location":"Prefix/","text":"Class: Prefix URI: sssom:Prefix classDiagram class Prefix Prefix : prefix_name Prefix : prefix_url Slots Name Cardinality and Range Description Inheritance prefix_name 0..1 Ncname direct prefix_url 0..1 Uri direct Usages used by used in type used MappingSet curie_map range Prefix Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:Prefix native sssom:Prefix LinkML Source Direct name: prefix from_schema: https://w3id.org/sssom/schema/ slots: - prefix_name - prefix_url Induced name: prefix from_schema: https://w3id.org/sssom/schema/ attributes: prefix_name: name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name owner: prefix domain_of: - prefix range: ncname required: true prefix_url: name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url owner: prefix domain_of: - prefix range: uri","title":"Class: Prefix"},{"location":"Prefix/#class-prefix","text":"URI: sssom:Prefix classDiagram class Prefix Prefix : prefix_name Prefix : prefix_url","title":"Class: Prefix"},{"location":"Prefix/#slots","text":"Name Cardinality and Range Description Inheritance prefix_name 0..1 Ncname direct prefix_url 0..1 Uri direct","title":"Slots"},{"location":"Prefix/#usages","text":"used by used in type used MappingSet curie_map range Prefix","title":"Usages"},{"location":"Prefix/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Prefix/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Prefix/#mappings","text":"Mapping Type Mapped Value self sssom:Prefix native sssom:Prefix","title":"Mappings"},{"location":"Prefix/#linkml-source","text":"","title":"LinkML Source"},{"location":"Prefix/#direct","text":"name: prefix from_schema: https://w3id.org/sssom/schema/ slots: - prefix_name - prefix_url","title":"Direct"},{"location":"Prefix/#induced","text":"name: prefix from_schema: https://w3id.org/sssom/schema/ attributes: prefix_name: name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name owner: prefix domain_of: - prefix range: ncname required: true prefix_url: name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url owner: prefix domain_of: - prefix range: uri","title":"Induced"},{"location":"Propagatable/","text":"Class: Propagatable Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. URI: sssom:Propagatable classDiagram class Propagatable Propagatable : propagated Slots Name Cardinality and Range Description Inheritance propagated 0..1 Boolean Indicates whether a slot can be propagated from a mapping down to individual ... direct See Also https://github.com/mapping-commons/sssom/issues/305 Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:Propagatable native sssom:Propagatable LinkML Source Direct name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable Induced name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable","title":"Class: Propagatable"},{"location":"Propagatable/#class-propagatable","text":"Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. URI: sssom:Propagatable classDiagram class Propagatable Propagatable : propagated","title":"Class: Propagatable"},{"location":"Propagatable/#slots","text":"Name Cardinality and Range Description Inheritance propagated 0..1 Boolean Indicates whether a slot can be propagated from a mapping down to individual ... direct","title":"Slots"},{"location":"Propagatable/#see-also","text":"https://github.com/mapping-commons/sssom/issues/305","title":"See Also"},{"location":"Propagatable/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Propagatable/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Propagatable/#mappings","text":"Mapping Type Mapped Value self sssom:Propagatable native sssom:Propagatable","title":"Mappings"},{"location":"Propagatable/#linkml-source","text":"","title":"LinkML Source"},{"location":"Propagatable/#direct","text":"name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable","title":"Direct"},{"location":"Propagatable/#induced","text":"name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable","title":"Induced"},{"location":"Sparqlpath/","text":"Type: Sparqlpath A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF. URI: xsd:string base : str uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Sparqlpath"},{"location":"Sparqlpath/#type-sparqlpath","text":"A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF. URI: xsd:string base : str uri : xsd:string repr : str","title":"Type: Sparqlpath"},{"location":"Sparqlpath/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Sparqlpath/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"String/","text":"Type: String A character string URI: xsd:string base : str uri : xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: String"},{"location":"String/#type-string","text":"A character string URI: xsd:string base : str uri : xsd:string","title":"Type: String"},{"location":"String/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"String/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Time/","text":"Type: Time A time object represents a (local) time of day, independent of any particular day URI: xsd:time base : XSDTime uri : xsd:time repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Time"},{"location":"Time/#type-time","text":"A time object represents a (local) time of day, independent of any particular day URI: xsd:time base : XSDTime uri : xsd:time repr : str","title":"Type: Time"},{"location":"Time/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Time/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Uri/","text":"Type: Uri a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str Comments in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Uri"},{"location":"Uri/#type-uri","text":"a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str","title":"Type: Uri"},{"location":"Uri/#comments","text":"in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node","title":"Comments"},{"location":"Uri/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uri/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Uriorcurie/","text":"Type: Uriorcurie a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#type-uriorcurie","text":"a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uriorcurie/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"author_id/","text":"author_id URI : pav:authoredBy Applicable to : Mapping Description Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id domain_of: - mapping range: EntityReference","title":"author_id"},{"location":"author_id/#author_id","text":"URI : pav:authoredBy Applicable to : Mapping Description Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs.","title":"author_id"},{"location":"author_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"author_id/#schema-developer-documentation","text":"LinkML source name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"author_label/","text":"author_label URI : sssom:author_label Applicable to : Mapping Description A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label domain_of: - mapping range: string","title":"author_label"},{"location":"author_label/#author_label","text":"URI : sssom:author_label Applicable to : Mapping Description A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead.","title":"author_label"},{"location":"author_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"author_label/#schema-developer-documentation","text":"LinkML source name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"chaining-rules/","text":"SSSOM Mapping Chains The goal of this document is to capture all obvious mapping chaining rules that could be applied to SSSOM, and later delivered as part of sssom toolkit . This is all structural, and should not be confused with proper reasoning or mapping reconciliation ala boomer . The idea is to provide the functionality to apply these chaining rules over a given mapping set, and record the appropriate metadata for that rule. Rules: Transitivity Rule Role chains over exact/equivalent matches Inverse Rule Generalisation Rule Transitivity Rule Transitivity of a relation R implies that if an entity A is R -related to an entity B which in turn is R -related to an entity C , A is also R -related to C . Predicates applicable in transitivity rules We consider the following predicates transitive: skos:exactMatch skos:narrowMatch skos:broadMatch owl:equivalentClass / owl:equivalentProperty rdfs:subClassOf / rdfs:subPropertyOf owl:sameAs Note that technically speaking skos:narrowMatch and skos:broadMatch are not considered transitive ( skos:broaderTransitive would be), but we are not defining a new semantics here, just a reasonable default for a mapping tool, which will nearly always hold true. Predicates we do not consider transitive include: skos:relatedMatch (for practical reasons), oboInOwl:hasDbXref , skos:closeMatch , rdfs:seeAlso (weakest form of a mapping link), rdf:type . Rules T1: (:A)-[predicate_id]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C) Examples T1-EX: (:A)-[skos:broadMatch]->(:B)-[skos:broadMatch]->(:C) -> (:A)-[skos:broadMatch]->(:C) Role chains over exact/equivalent matches Role chains are rules that allow us to bridge across mappings across multiple different properties. Role chains over exact are simple to define, so we start with these Predicates applicable in transitity rules skos:narrowMatch skos:broadMatch skos:closeMatch skos:relatedMatch Rules for SKOS RCE1: (:A)-[skos:exactMatch|owl:equivalentClass]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C) RCE2: (:A)-[predicate_id]->(:B)-[skos:exactMatch]->(:C) -> (:A)-[predicate_id]->(:C) Rules that should probably not be inferred (OWL) The following rules hold true, but will be left to a reasoner to be inferred: RCE-N1: (:A)-[owl:equivalentClass]->(:B)-[rdfs:subClassOf]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N2: (:A)-[rdfs:subClassOf]->(:B)-[owl:equivalentClass]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N3: (:A)-[owl:equivalentProperty]->(:B)-[rdfs:subPropertyOf]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C) RCE-N4: (:A)-[rdfs:subPropertyOf]->(:B)-[owl:equivalentProperty]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C) Inverse Rules R inverse of S implies that if an entity A is R -related to an entity B then B is also S -related to A . We like to call the output of an inverse rule a walk-back . A command that applies an inverse rule could be called flip . Predicates applicable in inverse rules This excludes the exact predicates for which inverse rules are redundant. Rules for SKOS RI1: (:A)-[skos:narrowMatch]->(:B) -> (:B)-[skos:broadMatch]->(:A) RI2: (:A)-[skos:broadMatch]->(:B) -> (:B)-[skos:narrowMatch]->(:A) Rules for SEMAPV RI3: (:A)-[semapv:crossSpeciesExactMatch]->(:B) -> (:B)-[semapv:crossSpeciesExactMatch]->(:A) RI4: (:A)-[semapv:crossSpeciesNarrowMatch]->(:B) -> (:B)-[semapv:crossSpeciesBroadMatch]->(:A) RI5: (:A)-[semapv:crossSpeciesBroadMatch]->(:B) -> (:B)-[semapv:crossSpeciesNarrowMatch]->(:A) Generalisation Rules Generalisation rules are rules that can be applied to weaken a mapping deliberately. This is sometimes useful, for example when combining strong OWL-Semantics mappings with weaker SKOS-based ones. Rules RG1: (:A)-[owl:equivalentTo]->(:B) -> (:A)-[skos:exactMatch]->(:B) RG2: (:A)-[owl:subClassOf]->(:B) -> (:A)-[skos:broadMatch]->(:B)","title":"Applying Chaining Rules"},{"location":"chaining-rules/#sssom-mapping-chains","text":"The goal of this document is to capture all obvious mapping chaining rules that could be applied to SSSOM, and later delivered as part of sssom toolkit . This is all structural, and should not be confused with proper reasoning or mapping reconciliation ala boomer . The idea is to provide the functionality to apply these chaining rules over a given mapping set, and record the appropriate metadata for that rule. Rules: Transitivity Rule Role chains over exact/equivalent matches Inverse Rule Generalisation Rule","title":"SSSOM Mapping Chains"},{"location":"chaining-rules/#transitivity-rule","text":"Transitivity of a relation R implies that if an entity A is R -related to an entity B which in turn is R -related to an entity C , A is also R -related to C .","title":"Transitivity Rule"},{"location":"chaining-rules/#predicates-applicable-in-transitivity-rules","text":"We consider the following predicates transitive: skos:exactMatch skos:narrowMatch skos:broadMatch owl:equivalentClass / owl:equivalentProperty rdfs:subClassOf / rdfs:subPropertyOf owl:sameAs Note that technically speaking skos:narrowMatch and skos:broadMatch are not considered transitive ( skos:broaderTransitive would be), but we are not defining a new semantics here, just a reasonable default for a mapping tool, which will nearly always hold true. Predicates we do not consider transitive include: skos:relatedMatch (for practical reasons), oboInOwl:hasDbXref , skos:closeMatch , rdfs:seeAlso (weakest form of a mapping link), rdf:type .","title":"Predicates applicable in transitivity rules"},{"location":"chaining-rules/#rules","text":"T1: (:A)-[predicate_id]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C)","title":"Rules"},{"location":"chaining-rules/#examples","text":"T1-EX: (:A)-[skos:broadMatch]->(:B)-[skos:broadMatch]->(:C) -> (:A)-[skos:broadMatch]->(:C)","title":"Examples"},{"location":"chaining-rules/#role-chains-over-exactequivalent-matches","text":"Role chains are rules that allow us to bridge across mappings across multiple different properties. Role chains over exact are simple to define, so we start with these","title":"Role chains over exact/equivalent matches"},{"location":"chaining-rules/#predicates-applicable-in-transitity-rules","text":"skos:narrowMatch skos:broadMatch skos:closeMatch skos:relatedMatch","title":"Predicates applicable in transitity rules"},{"location":"chaining-rules/#rules-for-skos","text":"RCE1: (:A)-[skos:exactMatch|owl:equivalentClass]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C) RCE2: (:A)-[predicate_id]->(:B)-[skos:exactMatch]->(:C) -> (:A)-[predicate_id]->(:C)","title":"Rules for SKOS"},{"location":"chaining-rules/#rules-that-should-probably-not-be-inferred-owl","text":"The following rules hold true, but will be left to a reasoner to be inferred: RCE-N1: (:A)-[owl:equivalentClass]->(:B)-[rdfs:subClassOf]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N2: (:A)-[rdfs:subClassOf]->(:B)-[owl:equivalentClass]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N3: (:A)-[owl:equivalentProperty]->(:B)-[rdfs:subPropertyOf]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C) RCE-N4: (:A)-[rdfs:subPropertyOf]->(:B)-[owl:equivalentProperty]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C)","title":"Rules that should probably not be inferred (OWL)"},{"location":"chaining-rules/#inverse-rules","text":"R inverse of S implies that if an entity A is R -related to an entity B then B is also S -related to A . We like to call the output of an inverse rule a walk-back . A command that applies an inverse rule could be called flip .","title":"Inverse Rules"},{"location":"chaining-rules/#predicates-applicable-in-inverse-rules","text":"This excludes the exact predicates for which inverse rules are redundant.","title":"Predicates applicable in inverse rules"},{"location":"chaining-rules/#rules-for-skos_1","text":"RI1: (:A)-[skos:narrowMatch]->(:B) -> (:B)-[skos:broadMatch]->(:A) RI2: (:A)-[skos:broadMatch]->(:B) -> (:B)-[skos:narrowMatch]->(:A)","title":"Rules for SKOS"},{"location":"chaining-rules/#rules-for-semapv","text":"RI3: (:A)-[semapv:crossSpeciesExactMatch]->(:B) -> (:B)-[semapv:crossSpeciesExactMatch]->(:A) RI4: (:A)-[semapv:crossSpeciesNarrowMatch]->(:B) -> (:B)-[semapv:crossSpeciesBroadMatch]->(:A) RI5: (:A)-[semapv:crossSpeciesBroadMatch]->(:B) -> (:B)-[semapv:crossSpeciesNarrowMatch]->(:A)","title":"Rules for SEMAPV"},{"location":"chaining-rules/#generalisation-rules","text":"Generalisation rules are rules that can be applied to weaken a mapping deliberately. This is sometimes useful, for example when combining strong OWL-Semantics mappings with weaker SKOS-based ones.","title":"Generalisation Rules"},{"location":"chaining-rules/#rules_1","text":"RG1: (:A)-[owl:equivalentTo]->(:B) -> (:A)-[skos:exactMatch]->(:B) RG2: (:A)-[owl:subClassOf]->(:B) -> (:A)-[skos:broadMatch]->(:B)","title":"Rules"},{"location":"comment/","text":"comment URI : rdfs:comment Applicable to : MappingSet , Mapping Description Free text field containing either curator notes or text generated by tool providing additional informative information. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment domain_of: - mapping set - mapping range: string","title":"comment"},{"location":"comment/#comment","text":"URI : rdfs:comment Applicable to : MappingSet , Mapping Description Free text field containing either curator notes or text generated by tool providing additional informative information.","title":"comment"},{"location":"comment/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"comment/#schema-developer-documentation","text":"LinkML source name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"confidence/","text":"confidence URI : sssom:confidence Applicable to : Mapping Description A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. Properties Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1 Schema developer documentation LinkML source name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"confidence"},{"location":"confidence/#confidence","text":"URI : sssom:confidence Applicable to : Mapping Description A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence.","title":"confidence"},{"location":"confidence/#properties","text":"Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1","title":"Properties"},{"location":"confidence/#schema-developer-documentation","text":"LinkML source name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"Schema developer documentation"},{"location":"contributing/","text":"Contributing to SSSOM Contribution guidelines Code of Conduct","title":"Resources for contributors"},{"location":"contributing/#contributing-to-sssom","text":"Contribution guidelines Code of Conduct","title":"Contributing to SSSOM"},{"location":"create-mapping-commons/","text":"Getting started First, create a virtual environment of your choice (anaconda, venv, pyenv, poetry etc.). If you need assistance with virtual environments, here's a guide to help you setup pyenv and use poetry with it. Install the cruft package. Cruft enables keeping projects up-to-date with future updates made to this original template. pip install cruft Create a project using the mapping-commons-cookiecutter template. cruft create https://github.com/mapping-commons/mapping-commons-cookiecutter This kickstarts an interactive session where you declare the following: project_name : Name of the project. [defaults to: my-commons-name] github_org : Name of the github org the project belongs to. [defaults to: my-org] project_description : Description of the project [defaults to: 'This is the project description.'] full_name : Name of the author [defaults to: 'My Name'] email : Author's email [defaults to: 'my-name@my-org.org'] yo : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ] license : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ] What does this do? The following files and directories are autogenerated in the project: TODO Version control GitHub Go to [https://github.com/new] and follow the instructions, being sure to NOT add a README or .gitignore file (this cookiecutter template will take care of this for you) Add the remote to your local git repository bash git remote add origin https://github.com/my-user-or-organization/my-commons-name.git git branch -M main git push -u origin main GitLab TODO Future updates to the project's boilerplate code In order to be up-to-date with the template, first check if there is a mismatch between the project's boilerplate code and the template by running: cruft check This indicates if there is a difference between the current project's boilerplate code and the latest version of the project template. If the project is up-to-date with the template: SUCCESS: Good work! Project's cruft is up to date and as clean as possible :). Otherwise, it will indicate that the project's boilerplate code is not up-to-date by the following: FAILURE: Project's cruft is out of date! Run `cruft update` to clean this mess up. For viewing the difference, run cruft diff . This shows the difference between the project's boilerplate code and the template's latest version. After running cruft update , the project's boilerplate code will be updated to the latest version of the template.","title":"Create mapping commons"},{"location":"create-mapping-commons/#getting-started","text":"First, create a virtual environment of your choice (anaconda, venv, pyenv, poetry etc.). If you need assistance with virtual environments, here's a guide to help you setup pyenv and use poetry with it. Install the cruft package. Cruft enables keeping projects up-to-date with future updates made to this original template. pip install cruft Create a project using the mapping-commons-cookiecutter template. cruft create https://github.com/mapping-commons/mapping-commons-cookiecutter This kickstarts an interactive session where you declare the following: project_name : Name of the project. [defaults to: my-commons-name] github_org : Name of the github org the project belongs to. [defaults to: my-org] project_description : Description of the project [defaults to: 'This is the project description.'] full_name : Name of the author [defaults to: 'My Name'] email : Author's email [defaults to: 'my-name@my-org.org'] yo : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ] license : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ]","title":"Getting started"},{"location":"create-mapping-commons/#what-does-this-do","text":"The following files and directories are autogenerated in the project:","title":"What does this do?"},{"location":"create-mapping-commons/#todo","text":"","title":"TODO"},{"location":"create-mapping-commons/#version-control","text":"","title":"Version control"},{"location":"create-mapping-commons/#github","text":"Go to [https://github.com/new] and follow the instructions, being sure to NOT add a README or .gitignore file (this cookiecutter template will take care of this for you) Add the remote to your local git repository bash git remote add origin https://github.com/my-user-or-organization/my-commons-name.git git branch -M main git push -u origin main","title":"GitHub"},{"location":"create-mapping-commons/#gitlab","text":"","title":"GitLab"},{"location":"create-mapping-commons/#todo_1","text":"","title":"TODO"},{"location":"create-mapping-commons/#future-updates-to-the-projects-boilerplate-code","text":"In order to be up-to-date with the template, first check if there is a mismatch between the project's boilerplate code and the template by running: cruft check This indicates if there is a difference between the current project's boilerplate code and the latest version of the project template. If the project is up-to-date with the template: SUCCESS: Good work! Project's cruft is up to date and as clean as possible :). Otherwise, it will indicate that the project's boilerplate code is not up-to-date by the following: FAILURE: Project's cruft is out of date! Run `cruft update` to clean this mess up. For viewing the difference, run cruft diff . This shows the difference between the project's boilerplate code and the template's latest version. After running cruft update , the project's boilerplate code will be updated to the latest version of the template.","title":"Future updates to the project's boilerplate code"},{"location":"creator_id/","text":"creator_id URI : dcterms:creator Applicable to : MappingSet , Mapping Description Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id domain_of: - mapping set - mapping range: EntityReference","title":"creator_id"},{"location":"creator_id/#creator_id","text":"URI : dcterms:creator Applicable to : MappingSet , Mapping Description Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.","title":"creator_id"},{"location":"creator_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"creator_id/#schema-developer-documentation","text":"LinkML source name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"creator_label/","text":"creator_label URI : sssom:creator_label Applicable to : MappingSet , Mapping Description A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label domain_of: - mapping set - mapping range: string","title":"creator_label"},{"location":"creator_label/#creator_label","text":"URI : sssom:creator_label Applicable to : MappingSet , Mapping Description A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead.","title":"creator_label"},{"location":"creator_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"creator_label/#schema-developer-documentation","text":"LinkML source name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"curation_rule/","text":"curation_rule URI : sssom:curation_rule Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv Schema developer documentation LinkML source name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule domain_of: - mapping range: EntityReference","title":"curation_rule"},{"location":"curation_rule/#curation_rule","text":"URI : sssom:curation_rule Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule.","title":"curation_rule"},{"location":"curation_rule/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"curation_rule/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv","title":"See Also"},{"location":"curation_rule/#schema-developer-documentation","text":"LinkML source name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"curation_rule_text/","text":"curation_rule_text URI : sssom:curation_rule_text Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv Schema developer documentation LinkML source name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text domain_of: - mapping range: string","title":"curation_rule_text"},{"location":"curation_rule_text/#curation_rule_text","text":"URI : sssom:curation_rule_text Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text.","title":"curation_rule_text"},{"location":"curation_rule_text/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"curation_rule_text/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv","title":"See Also"},{"location":"curation_rule_text/#schema-developer-documentation","text":"LinkML source name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"curie_map/","text":"curie_map URI : sssom:curie_map Applicable to : MappingSet Description A dictionary that contains prefixes as keys and their URI expansions as values. Properties Range : Prefix . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/225 https://github.com/mapping-commons/sssom/pull/349 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv Schema developer documentation LinkML source name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map domain_of: - mapping set range: prefix inlined: true","title":"curie_map"},{"location":"curie_map/#curie_map","text":"URI : sssom:curie_map Applicable to : MappingSet Description A dictionary that contains prefixes as keys and their URI expansions as values.","title":"curie_map"},{"location":"curie_map/#properties","text":"Range : Prefix . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"curie_map/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/225 https://github.com/mapping-commons/sssom/pull/349 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv","title":"See Also"},{"location":"curie_map/#schema-developer-documentation","text":"LinkML source name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map domain_of: - mapping set range: prefix inlined: true","title":"Schema developer documentation"},{"location":"documentation/","text":"documentation URI : sssom:documentation Applicable to : MappingRegistry Description A URL to the documentation of this mapping commons. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation domain_of: - mapping registry range: uri","title":"documentation"},{"location":"documentation/#documentation","text":"URI : sssom:documentation Applicable to : MappingRegistry Description A URL to the documentation of this mapping commons.","title":"documentation"},{"location":"documentation/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"documentation/#schema-developer-documentation","text":"LinkML source name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation domain_of: - mapping registry range: uri","title":"Schema developer documentation"},{"location":"editors/","text":"Simple Standard for Sharing Ontological Mappings (SSSOM) How to make a new release Automated: On the main code page, click on Releases (right hand column) Click on the Draft a new release button Click the Choose a tag button, create a new tag: X.X.X Click on the Generate a new release button Make sure only the Select as the latest release checkbox is checked. Click Publish release button Manual: make build make pypi This triggers a GitHub Action workflow that releases the new version of SSSOM to PyPi. Documentation deployment This can be done in two ways: * Automated: Every time a pull request is merged into the main branch, a github action is triggered to deploy documentation automatically. * Manually: The make command to deploy documentation is make deploy .","title":"Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"editors/#simple-standard-for-sharing-ontological-mappings-sssom","text":"","title":"Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"editors/#how-to-make-a-new-release","text":"Automated: On the main code page, click on Releases (right hand column) Click on the Draft a new release button Click the Choose a tag button, create a new tag: X.X.X Click on the Generate a new release button Make sure only the Select as the latest release checkbox is checked. Click Publish release button Manual: make build make pypi This triggers a GitHub Action workflow that releases the new version of SSSOM to PyPi.","title":"How to make a new release"},{"location":"editors/#documentation-deployment","text":"This can be done in two ways: * Automated: Every time a pull request is merged into the main branch, a github action is triggered to deploy documentation automatically. * Manually: The make command to deploy documentation is make deploy .","title":"Documentation deployment"},{"location":"extension_definitions/","text":"extension_definitions URI : sssom:extension_definitions Applicable to : MappingSet Description A list that defines the extension slots used in the mapping set. Properties Range : ExtensionDefinition . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/328 https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv Schema developer documentation LinkML source name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions domain_of: - mapping set range: extension definition","title":"extension_definitions"},{"location":"extension_definitions/#extension_definitions","text":"URI : sssom:extension_definitions Applicable to : MappingSet Description A list that defines the extension slots used in the mapping set.","title":"extension_definitions"},{"location":"extension_definitions/#properties","text":"Range : ExtensionDefinition . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"extension_definitions/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/328 https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv","title":"See Also"},{"location":"extension_definitions/#schema-developer-documentation","text":"LinkML source name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions domain_of: - mapping set range: extension definition","title":"Schema developer documentation"},{"location":"faq/","text":"Frequently Asked Questions (FAQ) Why should our mappings be FAIR and carefully standardised? Mappings are frequently created on an ad-hoc basis, using simple two-column spreadsheets where the first column corresponds to the subject of the mapping, and the second column to the object of the mapping. This is insufficient for a variety of reasons: non-transparent precision: While the assumption is that the subject \"sort of mostly exactly\" maps to the object, in practice this is rarely the case. Matches can exact , where the subject corresponds 100% to the object, broad , where the object is broader than the subject, and others. Qualifiers like exact , broad , narrow , related and close qualify the precision of the mapping (not to be mistaken for fuzziness of confidence). Without knowing the precision, we cannot accurately transform our data, nor can we use the mappings to \"walk\", i.e. move from one mapping to another, see SSSOM 5-Star recommendation for mappings non-transparent incompleteness: We don't know when the mapping was created, on the basis of what version of the terminological source of the subject or object. As time passes, we also lose confidence whether there would now be more suitable mappings, or wether there are new terms that are now fully covered by the mappings. non-transparent confidence: whether a tool or a human propose the mapping, there is always a bit of a risk the mapping call may be wrong. As consumers of the mappings we need to know how confident the mapping authors were (confidence score), and why they confident (curation rules, mapping justification). Currently, mappings are created by a variety of systems, manually curated and automatic, and we need a way to efficiently collect and combine them. Mapping sets and mappings with quality provenance metadata allow us to trace faulty mappings to the source and correct them in a way that all users of the mapping set will profit from it. Is there a central repository of SSSOM files? The idea of a mapping commons is to provide mappings in a decentralised fashion akin to OBO ontologies. A mapping commons collects mappings relevant to a particular community, either by reference (i.e. pulling in mapping sets already published elsewhere), or directly maintained at the mapping commons ( example ). Their integration as part of a repository (mapping server) would look like EBI's Ontology X-ref Browser or BioPortal , but the exact scope of these repositories is use case dependent - EBI may chose to show cross references from and to ontologies loaded into OLS, while BioPortal chooses to show a different set of mappings. The plan is to update EBI's OxO to support the full SSSOM data model, drawing curated mappings from a variety of mapping commons, by Summer 2022 - but its unlikely that one central place will index all available mappings. Who is responsible for the conversion into SSSOM - the primary developers of an artefact, or a mapping commons? Like with everything on the web, the closer to the source the SSSOM mappings are curated, the better. Ideally, mappings are maintained as part of ontology release pipelines or by primary mapping creators, rather than derived from a secondary source such as a database, further downstream. The reason for this is that ideally, we would want mappings to be reviewable and editable in much the same way as open ontologies, offering issue trackers and an active community incorporating changes. That said, it is unlikely that all existing mappings will be maintained by the source directly. For example, we expect to maintain the SSSOM mappings derived from the vast majority of OBO ontology xrefs as a downstream task ( example ). How dependent are we on the sssom-py toolkit? SSSOM follows the core design principle that mapping tables should be (a) self-contained, i.e. including its prefix maps similar to a turtle file, and (b) readable by normal data science toolkits. An SSSOM table can be read with pandas using the comment='#' parameter (with one caveat, which is that # must be used as a character solely to denote comments), or a very simply combination of a yaml reader and pandas. The SSSOM toolkit however offers some extra functionality, like export to JSON-LD, or RDF or import from other frequently used format. Is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories? A (SSSOM) mapping server is a repository for mappings that enables the browsing of existing mappings, exposing all (or some relevant subset of) SSSOM metadata as search facets. In that sense, it should be considered complementary, as it enables the search for accurate mappings from a specific term or set of terms, something that goes beyond what most ontologies would offer. However, the concept of ontology mappings can be perceived as antagonistic to Open Ontology principles, as its goal is not the logical integration of knowledge, but the association or linking of terms across controlled semantic spaces . The OBO vision involves the building of a coherent, non-redundant semantic space of logically interconnected ontologies, which in particular wants to avoid the introduction of overlapping concepts. The mapping world specifically embraces heterogenous semantic spaces and overlapping concepts, and seeks to bridge the semantic gaps using well-defined mapping relations such as \"skos:broadMatch\" or \"owl:equivalentClass\".","title":"FAQ"},{"location":"faq/#frequently-asked-questions-faq","text":"","title":"Frequently Asked Questions (FAQ)"},{"location":"faq/#why-should-our-mappings-be-fair-and-carefully-standardised","text":"Mappings are frequently created on an ad-hoc basis, using simple two-column spreadsheets where the first column corresponds to the subject of the mapping, and the second column to the object of the mapping. This is insufficient for a variety of reasons: non-transparent precision: While the assumption is that the subject \"sort of mostly exactly\" maps to the object, in practice this is rarely the case. Matches can exact , where the subject corresponds 100% to the object, broad , where the object is broader than the subject, and others. Qualifiers like exact , broad , narrow , related and close qualify the precision of the mapping (not to be mistaken for fuzziness of confidence). Without knowing the precision, we cannot accurately transform our data, nor can we use the mappings to \"walk\", i.e. move from one mapping to another, see SSSOM 5-Star recommendation for mappings non-transparent incompleteness: We don't know when the mapping was created, on the basis of what version of the terminological source of the subject or object. As time passes, we also lose confidence whether there would now be more suitable mappings, or wether there are new terms that are now fully covered by the mappings. non-transparent confidence: whether a tool or a human propose the mapping, there is always a bit of a risk the mapping call may be wrong. As consumers of the mappings we need to know how confident the mapping authors were (confidence score), and why they confident (curation rules, mapping justification). Currently, mappings are created by a variety of systems, manually curated and automatic, and we need a way to efficiently collect and combine them. Mapping sets and mappings with quality provenance metadata allow us to trace faulty mappings to the source and correct them in a way that all users of the mapping set will profit from it.","title":"Why should our mappings be FAIR and carefully standardised?"},{"location":"faq/#is-there-a-central-repository-of-sssom-files","text":"The idea of a mapping commons is to provide mappings in a decentralised fashion akin to OBO ontologies. A mapping commons collects mappings relevant to a particular community, either by reference (i.e. pulling in mapping sets already published elsewhere), or directly maintained at the mapping commons ( example ). Their integration as part of a repository (mapping server) would look like EBI's Ontology X-ref Browser or BioPortal , but the exact scope of these repositories is use case dependent - EBI may chose to show cross references from and to ontologies loaded into OLS, while BioPortal chooses to show a different set of mappings. The plan is to update EBI's OxO to support the full SSSOM data model, drawing curated mappings from a variety of mapping commons, by Summer 2022 - but its unlikely that one central place will index all available mappings.","title":"Is there a central repository of SSSOM files?"},{"location":"faq/#who-is-responsible-for-the-conversion-into-sssom-the-primary-developers-of-an-artefact-or-a-mapping-commons","text":"Like with everything on the web, the closer to the source the SSSOM mappings are curated, the better. Ideally, mappings are maintained as part of ontology release pipelines or by primary mapping creators, rather than derived from a secondary source such as a database, further downstream. The reason for this is that ideally, we would want mappings to be reviewable and editable in much the same way as open ontologies, offering issue trackers and an active community incorporating changes. That said, it is unlikely that all existing mappings will be maintained by the source directly. For example, we expect to maintain the SSSOM mappings derived from the vast majority of OBO ontology xrefs as a downstream task ( example ).","title":"Who is responsible for the conversion into SSSOM - the primary developers of an artefact, or a mapping commons?"},{"location":"faq/#how-dependent-are-we-on-the-sssom-py-toolkit","text":"SSSOM follows the core design principle that mapping tables should be (a) self-contained, i.e. including its prefix maps similar to a turtle file, and (b) readable by normal data science toolkits. An SSSOM table can be read with pandas using the comment='#' parameter (with one caveat, which is that # must be used as a character solely to denote comments), or a very simply combination of a yaml reader and pandas. The SSSOM toolkit however offers some extra functionality, like export to JSON-LD, or RDF or import from other frequently used format.","title":"How dependent are we on the sssom-py toolkit?"},{"location":"faq/#is-the-concept-of-a-mapping-server-equivalent-complementary-or-antagonistic-to-the-existing-ontology-repositories","text":"A (SSSOM) mapping server is a repository for mappings that enables the browsing of existing mappings, exposing all (or some relevant subset of) SSSOM metadata as search facets. In that sense, it should be considered complementary, as it enables the search for accurate mappings from a specific term or set of terms, something that goes beyond what most ontologies would offer. However, the concept of ontology mappings can be perceived as antagonistic to Open Ontology principles, as its goal is not the logical integration of knowledge, but the association or linking of terms across controlled semantic spaces . The OBO vision involves the building of a coherent, non-redundant semantic space of logically interconnected ontologies, which in particular wants to avoid the introduction of overlapping concepts. The mapping world specifically embraces heterogenous semantic spaces and overlapping concepts, and seeks to bridge the semantic gaps using well-defined mapping relations such as \"skos:broadMatch\" or \"owl:equivalentClass\".","title":"Is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories?"},{"location":"funding/","text":"Funding The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven project which has received support from many different sources. We list the most important ones in the following. Volunteering efforts A huge fraction of the work on SSSOM has been done by volunteers without dedicated grant support. We hereby acknowledge their contributions as being absolutely essential. A selection of amazing contributions (by no means exhaustive): The development of SSSOM Java Hundreds of careful contributions to discussions on the SSSOM issue tracker The first draft of the Mapping Registry Cookiecutter We try to keep track of other Community efforts here Phenomics First (NIH / NHGRI #1RM1HG010860-01) A lot of the groundwork of SSSOM was done to support a disease mapping project as part of the Mondo Disease Ontology , which included, but was not limited to: Creation of a basic metadata model Implementation of validation and parsing methods in sssom-py Generating training materials Organising workshops Outreach activties to clinical communities such as OHDSI The grant was awared to members of the Monarch Initiative. Monarch (NIH / OD #5R24OD011883) To support development of cross-species mappings and knowledge graph integration for the Monarch Knowledge Graph , a few new features had to be supported: Groundwork for the Semantic Mapping Vocabulary which contains, for example, cross-species mapping properties. The advancement of the concepts and tools behind the \"Mapping Commons\", including supporting the development of the Mapping Registry Cookiecutter Various improvements to the SSSOM metadata model, including the introduction of curation rules. The OxO2 SSSOM mapping browser The grant was awared to members of the Monarch Initiative. Bosch Gift to LBNL A lot of the work on tooling was supported by a Bosch Gift to the Lawrence Berkely National Laboratory (Chris Mungall group). We thank Bosch for their generous support which helped us with the following: Implementation of conversion and testing methods in sssom-py The development of training materials The development of specialised matching tools such as OAK lexmatch which provided the first implementation of the SSSOM standard in a matching tool. DARPA: Young Faculty Award W911NF2010255 A huge amount of refactoring of sssom-py and development best practices, as well as training materials, was provided through this grant (awared to Benjamin M. Gyori). Other contributions include work on the Semantic mapping reasoner and assembler","title":"Funding"},{"location":"funding/#funding","text":"The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven project which has received support from many different sources. We list the most important ones in the following.","title":"Funding"},{"location":"funding/#volunteering-efforts","text":"A huge fraction of the work on SSSOM has been done by volunteers without dedicated grant support. We hereby acknowledge their contributions as being absolutely essential. A selection of amazing contributions (by no means exhaustive): The development of SSSOM Java Hundreds of careful contributions to discussions on the SSSOM issue tracker The first draft of the Mapping Registry Cookiecutter We try to keep track of other Community efforts here","title":"Volunteering efforts"},{"location":"funding/#phenomics-first-nih-nhgri-1rm1hg010860-01","text":"A lot of the groundwork of SSSOM was done to support a disease mapping project as part of the Mondo Disease Ontology , which included, but was not limited to: Creation of a basic metadata model Implementation of validation and parsing methods in sssom-py Generating training materials Organising workshops Outreach activties to clinical communities such as OHDSI The grant was awared to members of the Monarch Initiative.","title":"Phenomics First (NIH / NHGRI #1RM1HG010860-01)"},{"location":"funding/#monarch-nih-od-5r24od011883","text":"To support development of cross-species mappings and knowledge graph integration for the Monarch Knowledge Graph , a few new features had to be supported: Groundwork for the Semantic Mapping Vocabulary which contains, for example, cross-species mapping properties. The advancement of the concepts and tools behind the \"Mapping Commons\", including supporting the development of the Mapping Registry Cookiecutter Various improvements to the SSSOM metadata model, including the introduction of curation rules. The OxO2 SSSOM mapping browser The grant was awared to members of the Monarch Initiative.","title":"Monarch (NIH / OD #5R24OD011883)"},{"location":"funding/#bosch-gift-to-lbnl","text":"A lot of the work on tooling was supported by a Bosch Gift to the Lawrence Berkely National Laboratory (Chris Mungall group). We thank Bosch for their generous support which helped us with the following: Implementation of conversion and testing methods in sssom-py The development of training materials The development of specialised matching tools such as OAK lexmatch which provided the first implementation of the SSSOM standard in a matching tool.","title":"Bosch Gift to LBNL"},{"location":"funding/#darpa-young-faculty-award-w911nf2010255","text":"A huge amount of refactoring of sssom-py and development best practices, as well as training materials, was provided through this grant (awared to Benjamin M. Gyori). Other contributions include work on the Semantic mapping reasoner and assembler","title":"DARPA: Young Faculty Award W911NF2010255"},{"location":"glossary/","text":"Glossary The glossary is currently being developed here .","title":"Glossary"},{"location":"glossary/#glossary","text":"The glossary is currently being developed here .","title":"Glossary"},{"location":"homepage/","text":"homepage URI : sssom:homepage Applicable to : MappingRegistry Description A URL to a homepage of this mapping commons. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage domain_of: - mapping registry range: uri","title":"homepage"},{"location":"homepage/#homepage","text":"URI : sssom:homepage Applicable to : MappingRegistry Description A URL to a homepage of this mapping commons.","title":"homepage"},{"location":"homepage/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"homepage/#schema-developer-documentation","text":"LinkML source name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage domain_of: - mapping registry range: uri","title":"Schema developer documentation"},{"location":"imports/","text":"imports URI : sssom:imports Applicable to : MappingRegistry Description A list of registries that should be imported into this one. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports domain_of: - mapping registry range: uri","title":"imports"},{"location":"imports/#imports","text":"URI : sssom:imports Applicable to : MappingRegistry Description A list of registries that should be imported into this one.","title":"imports"},{"location":"imports/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"imports/#schema-developer-documentation","text":"LinkML source name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports domain_of: - mapping registry range: uri","title":"Schema developer documentation"},{"location":"introduction/","text":"Introduction Abstract Mappings, or cross-references, are used to link terms across different ontologies. However, there is currently little to no standardisation in how such mappings are represented. While properties such as hasDbXref property are widely used in ontologies such as GO and MONDO, the meaning of such mappings is unclear, and cannot be further described with additional metadata or provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) is an initiative to provide a minimal and standard set of elements for the dissemination of mappings between ontology terms, to ensure a reliable interpretation of generated mappings and to enable sharing and data integration between people and applications. This document introduces the SSSOM catalog of metadata elements, which can be used to attach meta- and provenance data to both mappings and sets of mappings; a controlled vocabulary for the description of match types (SSSOM CV); a definition of both RDF and TSV serialisations of ontology mappings; and a (non-exhaustive) selection of recommended mapping predicates. Introduction Currently, there are three methods typically used to express mappings in OWL: direct logical axioms using owl:equivalentClass; the oboInOwl hasDbXref property; and the SKOS vocabulary for mapping properties. The first, owl:equivalentClass, is a strong logical equivalence assertion which is not appropriate for more nuanced mappings such as close matches. The second, hasDbXref, does not assert formal logical equivalence but also has no clearly defined meaning. Finally, the SKOS vocabulary provides a hierarchy of mapping properties which allow the unambigous specification of exact, close, broad, and narrow matches, but does not provide the means for mappings to be annotated with additional metadata such as confidence scores and provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) addresses these problems by defining a catalog of metadata terms to describe mappings. Both individual mappings and sets of mappings can be described, enabling provenance and metadata to be captured on multiple levels. SSSOM interoperates with existing methods for the specification of mappings, allowing any predicate to be used to describe the nature of each mapping including those from OWL and SKOS. The provenance of mappings - such as whether the mapping was created as the result of a human-curated equivalence match, or a semantic similarity match - is specified using a controlled vocabulary (CV), SSSOM CV. Combined with the metadata properties provided by SSSOM such as confidence and semantic_similarity_score, this provenance information can be used to capture mapping descriptions in a manner that is explicit and amenable to curation. Two serialisations for SSSOM mappings are provided in this document, aimed at different communities: an RDF/OWL serialisation using IRIs that is aimed at the Knowledge Graph/Semantic Web community, and a TSV serialisation using CURIE syntax which is aimed at the wider bioinformatics community. An unambiguous translation between these serialisations is provided. Challenges for exchange and use of mappings Despite their importance for data integration, term mappings are typically neglected as data artefacts (57). A mapping in this context is a correspondence between two terms, referred to here as \"subject\" and \"object\" terms. A \"predicate\" defines the type of relationship between the subject and the object, such as skos:exactMatch, or owl:equivalentClass. A mapping, or \"match\", does not have to be exact: it can be broad, e.g. between a conceptually narrow term such as \"Red Delicious\" and a conceptually broader term such as \"Apple\". To our knowledge, no formal review has been published that analyzes the representation and formats used for collections of term mappings (mapping sets, or alignments), but in our experience, most mapping sets are represented as tables using an ad-hoc \"schema\", often merely a simple two-column format that lists matching terms in two naming schemes. An example of such a table can be seen in the following Table. Subject Object UBERON:0002101 FMA:24875 UBERON:0000019 FMA:54448 Table 1: An example of a typical mapping table one might find on the web. This type of table lacks clear semantics and is therefore very difficult to use and re-use either by humans or by machines. We will discuss a few of the most critical problems in the sections that follow. Non-transparent imprecision . Mapping precision describes, usually qualitatively, whether a mapping between a subject and an object is exact, broad, narrow, close or related. An exact mapping means that the subject term can be replaced with the object term and vice versa, i.e. they refer to the exact same real-world entity. A broad mapping links a subject term to a more general term, for example, the term \"leg\" to the term \"hindlimb\" (if the ontology defines leg as the parts of the hindlimb that exclude the foot). A narrow mapping links a subject term to a more specific term. For example, \"long QT syndrome\" in the Mondo Disease Ontology is a narrow match to \"Romano-Ward long QT syndrome\" in Orphanet. A close mapping relates two terms that are neither exact, broad or narrow, but belong to the same category of things and are semantically similar, such as \"apple\" to \"pear\", or \"paw\" to \"hand\". Due to its subjective nature (\"what is close?\"), this is a problematic category of mapping, but it is widely used, for example for relating similar anatomical terms across species. Related mappings are mappings across categories of things, such as the mapping between a phenotype \"enlarged liver\" and the anatomical entity \"liver\". In practice, it is rare that mapping tables such as the one presented in Table 1 constitute a set of purely \"exact\" matches. Different use cases may require different levels of mapping precision. For example, for entity merging (defined as the process of merging two entities from different sources into one) or data translation (defined as the process of moving annotations from using one ontology to another), exact mappings may be required, while for data grouping broad matches are often sufficient (ensuring that the subject is classified under the object term). For many machine learning use cases, close and related matches will be extremely useful regardless of their lack of semantic precision (though semantic precision is likely to improve predictive power). In practice, many mappings are to varying degrees imprecise but do not specify the mapping precision. This makes it impossible to reliably apply them to use cases such as entity merging or data translation. Non-transparent accuracy, confidence, and provenance . To scale to real-world use cases, automated tools are critical for matching terms across databases, terminologies and ontologies. Such tools typically implement mapping rules that determine whether a given pair of terms constitutes a match. For example, label matching rules might include \"match if subject and object labels match\", \"match if subject label matches with an exact synonym of the object\" and \"match if subject and object exhibit a very high degree of semantic similarity\". Depending on the rules, tools will have more or less confidence that a match constitutes a mapping. Even human curators often have different levels of confidence about the accuracy of any given mapping, especially if the process of determining whether a mapping is accurate involves the review of (often complex) descriptions and term definitions. Different use cases will profit from different degrees of accuracy. For example, if we seek to integrate data from various medical terminologies to inform medical diagnosis, we may require not only a very high degree of confidence about the mapping but also ensure that the mapping is \"explainable\" to users. To ensure that diagnostic decisions that require bridging of data silos through mappings are explainable, we furthermore need provenance (documentation of where a piece of data comes from and how it was produced), such as an explicit statement of the mapping rules by which the match was originally determined (for example, the labels of both terms could have been the same). Thanks to efforts by initiatives such as the Ontology Alignment Evaluation Initiative (OAEI), many mapping tables on the web include at least a confidence score. However, in our experience, mapping rules are rarely stated explicitly as part of the mappings or mapping set metadata. Many mappings in the wild are to varying degrees inaccurate, but without a confidence score and explicit mapping rules, this inaccuracy will not be transparent. Non-transparent incompleteness . Mapping sets can be incomplete for (at least) three major reasons: (1) they are out of date, i.e. a term in one ontology was removed (deprecated) in a later version of the ontology or a term with a more precise mapping was introduced; (2) they are deliberately partial, i.e. covering only a subset of terms, which were mapped for a specific purpose (for example a manual effort to map all COVID-19-relevant phenotypes from the Human Phenotype Ontology to the Mammalian Phenotype Ontology); or (3) they accidentally omit certain correct mappings, as the automated approaches that were used did not detect them (false negatives). We cannot determine whether a mapping set such as the one given in Table X1 is up-to-date, deliberately partial or accidentally incomplete without sufficient metadata about the purpose of the mappings, the tools used and the version of the source data used for the matching process. UnFAIRness . The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reusable. Unlike many of the widely used controlled vocabularies, ontologies and data schemas, mappings are rarely published using standard formats and metadata vocabularies and can therefore be considered second class citizens in the world of FAIR semantics. While some tools exist to browse mappings (the F and A in FAIR, findable and accessible), such as OxO and BioPortal, they lack access to at least some of the metadata required to determine their applicability for a use case: Are mappings likely to be correct? Are they precise enough? Have they been updated recently? Can I trust the authority that generated the mappings? While some minimum level of interoperability (the I in FAIR) is achieved simply by publishing the mappings as RDF triples (which rarely happens in practice), most mappings are best captured in the form of simple tables (in our experience the preferred format for both mapping curators and data engineers). Furthermore, the predicates or relations used in the mappings are far from standardized. Different relations have different semantics, ranging from strong logical relations such as owl:sameAs or owl:equivalentClass to predicates with no formally specified semantics such as oboInOwl:hasDbXref. In our experience, reusability (the R in FAIR) is a significant obstacle to FAIRness. It is infeasible to simply reuse existing mappings without the metadata required to make imprecision, inaccuracy and incompleteness explicit. Repositories such as OxO and BioPortal cannot make mappings more accessible, because the metadata required to do so simply does not exist. In order to gradually improve our mappings and make them FAIRer, we need to be able to share, review, fix and maintain our mappings in much the same way as our ontologies themselves - using standard formats and rich metadata. FAIRifying data is an effort that aims to supply practical solutions for the use of the FAIR guiding principles throughout the research data life cycle. It recommends technologies that support semantic interoperability in a sustainable way, and practices that support FAIRness. The FAIRSemantics effort is currently discussing how to incorporate semantic mappings, and we reached out to them to consider SSSOM for this purpose. Background about mappings A mapping can be defined as a triple s, p, o , where s is the subject of the mapping, p is the mapping predicate (or relation) and o is the object. There are many different mapping predicates used in practice, but they are not always standardized. The Semantic Web community uses a number of standard mapping predicates, such as owl:sameAs or owl:equivalentClass (logical mapping predicates) and skos:exactMatch or skos:broadMatch (terminological mapping predicates). We refer to mapping subjects and objects as \"terms\", which we will loosely define here as a set of symbols that define some entity in the real world. Usually, a term can be referred to by an identifier that uniquely identifies some entity in a certain context. For example, UBERON:0002101 is the identifier for a term that refers to the anatomical entity \"limb\". Putting it all together, the mapping describes a correspondence in which the term with the id UBERON:0002101 constitutes a terminological exact match to the term with the identifier FMA:24875. Mappings between data model elements, databases and other representations can be described similarly. Note that we generally use the terms \"matching\" and \"mapping\" interchangeably. Occasionally we refer to \"matching\" as the process to determine a mapping candidate (lexical matching, logical matching etc), a \"match\" as the result of the matching process, and a \"mapping\" the process and result of the process that deduces a true correspondence from a (set of) matches. For SSSOM, this distinction is a bit academic, but useful to keep in mind when talking about the interplay of automated approaches (which result in \"matches\") and manual approaches (which typically result in the final mappings). Ontology alignment is the task of determining corresponding terms shared between two or more ontologies, i.e. mappings. Sometimes \"ontology alignment\" refers to the output of the alignment process. Mapping sets can be \"partial\", i.e. covering only a subset of terms in the subject or object source (ontology, database, etc), \"derived\", i.e. one mapping set can be obtained from one or more others (for example, a XAO to MeSH mapping can be obtained by combining a XAO-Uberon mapping with a Uberon-MeSH mapping), or \"complete\". We refer to a \"complete\" mapping, i.e. the set of all correspondences between two resources (ontologies, databases), as an \"alignment\". The identifier of a term has three parts: a namespace that describes in which database or ontology the identifier is defined, a local identifier that unambiguously identifies an entity within that namespace, and optionally a separator that can be used to separate the namespace from the local identifier to make them easier to process. UBERON:0002101, for example, comprises the namespace \"UBERON\", the separator \":\" and the local identifier \"0002101\". There are various syntaxes for denoting identifiers; the UBERON:0002101 notation is called compact URI (CURIE) syntax, which is used widely across the database and ontology worlds. The problem with this syntax is that UBERON may not be a globally unique prefix, so files making use of such CURIEs must come with a prefix map that ensures that UBERON (in the CURIE syntax referred to as \"prefix\") is globally unique by mapping it to the persistent International Resource Identifier (IRI) prefix http://purl.obolibrary.org/obo/UBERON_. This may not be a major problem for a fairly unique prefix such as \"UBERON\", but it is for prefixes such as \"ICD\", which can refer to many different name spaces, such as ICD9, ICD10, ICD11 and more, all of which correspond to entirely different terminologies. Approaches to mapping . There are many different techniques that can be employed to generate term mappings. Automated matching techniques include ontology matching, entity resolution (the task of determining whether two database records correspond to the same entity), semantic similarity or automated reasoning. Recent approaches based on machine learning and graph embeddings show promise for working with messier inputs. No single tool will perform equally well on all inputs: some of the semantics-aware tools like LogMap and Agreement Maker Light (AML) can exploit the ontology structure to determine high-quality matches but will have problems with the large-scale data linking tasks required by modern big-data applications. Purely automated approaches to mapping are often insufficient for real world use cases that require a high degree of accuracy, such as medical diagnostics. They often need to be refined by hand or using sophisticated mapping reconciliation approaches independent of the actual matching. Determining a mapping is often complex, due to the high degree of terminological variability: different communities may use very different names for the same real world entities . For example, for example, the condition referred to in the Human Phenotype Ontology (HPO) as \"Hyperchloriduria\" is called \"increased urine chloride ion level\" in the Mammalian Phenotype Ontology (MP), which is used by the model organism community. Mapping rules - capturing the conditions under which a match is established . Mapping rules define the conditions under which we determine a match between two terms. For example, the condition for a mapping rule could be \"if the subject label and object label match exactly\". In practice, mapping rules can be very simple (e.g., \"exact match of term labels\"), more complex (\"exact match between label of subject and exact synonym of object after they are pre-processed using stemming\"), or even more exacting (\"complex match determined by a human curator that carefully reviewed the descriptions and definitions of both terms and concluded they mean the same thing\"). One problem for both manually curated mappings and automated approaches is that these mapping rules are often hidden deeply in the code or are not documented at all. Exposing mapping rules along with confidence scores would be very valuable for reviewing mappings and explaining them to users. Our reference implementation for SSSOM is rdf-matcher, which makes these mapping rules explicit, but other approaches such as OMOP2OBO also capture mapping rules as part of the mapping metadata.","title":"Introduction"},{"location":"introduction/#introduction","text":"","title":"Introduction"},{"location":"introduction/#abstract","text":"Mappings, or cross-references, are used to link terms across different ontologies. However, there is currently little to no standardisation in how such mappings are represented. While properties such as hasDbXref property are widely used in ontologies such as GO and MONDO, the meaning of such mappings is unclear, and cannot be further described with additional metadata or provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) is an initiative to provide a minimal and standard set of elements for the dissemination of mappings between ontology terms, to ensure a reliable interpretation of generated mappings and to enable sharing and data integration between people and applications. This document introduces the SSSOM catalog of metadata elements, which can be used to attach meta- and provenance data to both mappings and sets of mappings; a controlled vocabulary for the description of match types (SSSOM CV); a definition of both RDF and TSV serialisations of ontology mappings; and a (non-exhaustive) selection of recommended mapping predicates.","title":"Abstract"},{"location":"introduction/#introduction_1","text":"Currently, there are three methods typically used to express mappings in OWL: direct logical axioms using owl:equivalentClass; the oboInOwl hasDbXref property; and the SKOS vocabulary for mapping properties. The first, owl:equivalentClass, is a strong logical equivalence assertion which is not appropriate for more nuanced mappings such as close matches. The second, hasDbXref, does not assert formal logical equivalence but also has no clearly defined meaning. Finally, the SKOS vocabulary provides a hierarchy of mapping properties which allow the unambigous specification of exact, close, broad, and narrow matches, but does not provide the means for mappings to be annotated with additional metadata such as confidence scores and provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) addresses these problems by defining a catalog of metadata terms to describe mappings. Both individual mappings and sets of mappings can be described, enabling provenance and metadata to be captured on multiple levels. SSSOM interoperates with existing methods for the specification of mappings, allowing any predicate to be used to describe the nature of each mapping including those from OWL and SKOS. The provenance of mappings - such as whether the mapping was created as the result of a human-curated equivalence match, or a semantic similarity match - is specified using a controlled vocabulary (CV), SSSOM CV. Combined with the metadata properties provided by SSSOM such as confidence and semantic_similarity_score, this provenance information can be used to capture mapping descriptions in a manner that is explicit and amenable to curation. Two serialisations for SSSOM mappings are provided in this document, aimed at different communities: an RDF/OWL serialisation using IRIs that is aimed at the Knowledge Graph/Semantic Web community, and a TSV serialisation using CURIE syntax which is aimed at the wider bioinformatics community. An unambiguous translation between these serialisations is provided.","title":"Introduction"},{"location":"introduction/#challenges-for-exchange-and-use-of-mappings","text":"Despite their importance for data integration, term mappings are typically neglected as data artefacts (57). A mapping in this context is a correspondence between two terms, referred to here as \"subject\" and \"object\" terms. A \"predicate\" defines the type of relationship between the subject and the object, such as skos:exactMatch, or owl:equivalentClass. A mapping, or \"match\", does not have to be exact: it can be broad, e.g. between a conceptually narrow term such as \"Red Delicious\" and a conceptually broader term such as \"Apple\". To our knowledge, no formal review has been published that analyzes the representation and formats used for collections of term mappings (mapping sets, or alignments), but in our experience, most mapping sets are represented as tables using an ad-hoc \"schema\", often merely a simple two-column format that lists matching terms in two naming schemes. An example of such a table can be seen in the following Table. Subject Object UBERON:0002101 FMA:24875 UBERON:0000019 FMA:54448 Table 1: An example of a typical mapping table one might find on the web. This type of table lacks clear semantics and is therefore very difficult to use and re-use either by humans or by machines. We will discuss a few of the most critical problems in the sections that follow. Non-transparent imprecision . Mapping precision describes, usually qualitatively, whether a mapping between a subject and an object is exact, broad, narrow, close or related. An exact mapping means that the subject term can be replaced with the object term and vice versa, i.e. they refer to the exact same real-world entity. A broad mapping links a subject term to a more general term, for example, the term \"leg\" to the term \"hindlimb\" (if the ontology defines leg as the parts of the hindlimb that exclude the foot). A narrow mapping links a subject term to a more specific term. For example, \"long QT syndrome\" in the Mondo Disease Ontology is a narrow match to \"Romano-Ward long QT syndrome\" in Orphanet. A close mapping relates two terms that are neither exact, broad or narrow, but belong to the same category of things and are semantically similar, such as \"apple\" to \"pear\", or \"paw\" to \"hand\". Due to its subjective nature (\"what is close?\"), this is a problematic category of mapping, but it is widely used, for example for relating similar anatomical terms across species. Related mappings are mappings across categories of things, such as the mapping between a phenotype \"enlarged liver\" and the anatomical entity \"liver\". In practice, it is rare that mapping tables such as the one presented in Table 1 constitute a set of purely \"exact\" matches. Different use cases may require different levels of mapping precision. For example, for entity merging (defined as the process of merging two entities from different sources into one) or data translation (defined as the process of moving annotations from using one ontology to another), exact mappings may be required, while for data grouping broad matches are often sufficient (ensuring that the subject is classified under the object term). For many machine learning use cases, close and related matches will be extremely useful regardless of their lack of semantic precision (though semantic precision is likely to improve predictive power). In practice, many mappings are to varying degrees imprecise but do not specify the mapping precision. This makes it impossible to reliably apply them to use cases such as entity merging or data translation. Non-transparent accuracy, confidence, and provenance . To scale to real-world use cases, automated tools are critical for matching terms across databases, terminologies and ontologies. Such tools typically implement mapping rules that determine whether a given pair of terms constitutes a match. For example, label matching rules might include \"match if subject and object labels match\", \"match if subject label matches with an exact synonym of the object\" and \"match if subject and object exhibit a very high degree of semantic similarity\". Depending on the rules, tools will have more or less confidence that a match constitutes a mapping. Even human curators often have different levels of confidence about the accuracy of any given mapping, especially if the process of determining whether a mapping is accurate involves the review of (often complex) descriptions and term definitions. Different use cases will profit from different degrees of accuracy. For example, if we seek to integrate data from various medical terminologies to inform medical diagnosis, we may require not only a very high degree of confidence about the mapping but also ensure that the mapping is \"explainable\" to users. To ensure that diagnostic decisions that require bridging of data silos through mappings are explainable, we furthermore need provenance (documentation of where a piece of data comes from and how it was produced), such as an explicit statement of the mapping rules by which the match was originally determined (for example, the labels of both terms could have been the same). Thanks to efforts by initiatives such as the Ontology Alignment Evaluation Initiative (OAEI), many mapping tables on the web include at least a confidence score. However, in our experience, mapping rules are rarely stated explicitly as part of the mappings or mapping set metadata. Many mappings in the wild are to varying degrees inaccurate, but without a confidence score and explicit mapping rules, this inaccuracy will not be transparent. Non-transparent incompleteness . Mapping sets can be incomplete for (at least) three major reasons: (1) they are out of date, i.e. a term in one ontology was removed (deprecated) in a later version of the ontology or a term with a more precise mapping was introduced; (2) they are deliberately partial, i.e. covering only a subset of terms, which were mapped for a specific purpose (for example a manual effort to map all COVID-19-relevant phenotypes from the Human Phenotype Ontology to the Mammalian Phenotype Ontology); or (3) they accidentally omit certain correct mappings, as the automated approaches that were used did not detect them (false negatives). We cannot determine whether a mapping set such as the one given in Table X1 is up-to-date, deliberately partial or accidentally incomplete without sufficient metadata about the purpose of the mappings, the tools used and the version of the source data used for the matching process. UnFAIRness . The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reusable. Unlike many of the widely used controlled vocabularies, ontologies and data schemas, mappings are rarely published using standard formats and metadata vocabularies and can therefore be considered second class citizens in the world of FAIR semantics. While some tools exist to browse mappings (the F and A in FAIR, findable and accessible), such as OxO and BioPortal, they lack access to at least some of the metadata required to determine their applicability for a use case: Are mappings likely to be correct? Are they precise enough? Have they been updated recently? Can I trust the authority that generated the mappings? While some minimum level of interoperability (the I in FAIR) is achieved simply by publishing the mappings as RDF triples (which rarely happens in practice), most mappings are best captured in the form of simple tables (in our experience the preferred format for both mapping curators and data engineers). Furthermore, the predicates or relations used in the mappings are far from standardized. Different relations have different semantics, ranging from strong logical relations such as owl:sameAs or owl:equivalentClass to predicates with no formally specified semantics such as oboInOwl:hasDbXref. In our experience, reusability (the R in FAIR) is a significant obstacle to FAIRness. It is infeasible to simply reuse existing mappings without the metadata required to make imprecision, inaccuracy and incompleteness explicit. Repositories such as OxO and BioPortal cannot make mappings more accessible, because the metadata required to do so simply does not exist. In order to gradually improve our mappings and make them FAIRer, we need to be able to share, review, fix and maintain our mappings in much the same way as our ontologies themselves - using standard formats and rich metadata. FAIRifying data is an effort that aims to supply practical solutions for the use of the FAIR guiding principles throughout the research data life cycle. It recommends technologies that support semantic interoperability in a sustainable way, and practices that support FAIRness. The FAIRSemantics effort is currently discussing how to incorporate semantic mappings, and we reached out to them to consider SSSOM for this purpose.","title":"Challenges for exchange and use of mappings"},{"location":"introduction/#background-about-mappings","text":"A mapping can be defined as a triple s, p, o , where s is the subject of the mapping, p is the mapping predicate (or relation) and o is the object. There are many different mapping predicates used in practice, but they are not always standardized. The Semantic Web community uses a number of standard mapping predicates, such as owl:sameAs or owl:equivalentClass (logical mapping predicates) and skos:exactMatch or skos:broadMatch (terminological mapping predicates). We refer to mapping subjects and objects as \"terms\", which we will loosely define here as a set of symbols that define some entity in the real world. Usually, a term can be referred to by an identifier that uniquely identifies some entity in a certain context. For example, UBERON:0002101 is the identifier for a term that refers to the anatomical entity \"limb\". Putting it all together, the mapping describes a correspondence in which the term with the id UBERON:0002101 constitutes a terminological exact match to the term with the identifier FMA:24875. Mappings between data model elements, databases and other representations can be described similarly. Note that we generally use the terms \"matching\" and \"mapping\" interchangeably. Occasionally we refer to \"matching\" as the process to determine a mapping candidate (lexical matching, logical matching etc), a \"match\" as the result of the matching process, and a \"mapping\" the process and result of the process that deduces a true correspondence from a (set of) matches. For SSSOM, this distinction is a bit academic, but useful to keep in mind when talking about the interplay of automated approaches (which result in \"matches\") and manual approaches (which typically result in the final mappings). Ontology alignment is the task of determining corresponding terms shared between two or more ontologies, i.e. mappings. Sometimes \"ontology alignment\" refers to the output of the alignment process. Mapping sets can be \"partial\", i.e. covering only a subset of terms in the subject or object source (ontology, database, etc), \"derived\", i.e. one mapping set can be obtained from one or more others (for example, a XAO to MeSH mapping can be obtained by combining a XAO-Uberon mapping with a Uberon-MeSH mapping), or \"complete\". We refer to a \"complete\" mapping, i.e. the set of all correspondences between two resources (ontologies, databases), as an \"alignment\". The identifier of a term has three parts: a namespace that describes in which database or ontology the identifier is defined, a local identifier that unambiguously identifies an entity within that namespace, and optionally a separator that can be used to separate the namespace from the local identifier to make them easier to process. UBERON:0002101, for example, comprises the namespace \"UBERON\", the separator \":\" and the local identifier \"0002101\". There are various syntaxes for denoting identifiers; the UBERON:0002101 notation is called compact URI (CURIE) syntax, which is used widely across the database and ontology worlds. The problem with this syntax is that UBERON may not be a globally unique prefix, so files making use of such CURIEs must come with a prefix map that ensures that UBERON (in the CURIE syntax referred to as \"prefix\") is globally unique by mapping it to the persistent International Resource Identifier (IRI) prefix http://purl.obolibrary.org/obo/UBERON_. This may not be a major problem for a fairly unique prefix such as \"UBERON\", but it is for prefixes such as \"ICD\", which can refer to many different name spaces, such as ICD9, ICD10, ICD11 and more, all of which correspond to entirely different terminologies. Approaches to mapping . There are many different techniques that can be employed to generate term mappings. Automated matching techniques include ontology matching, entity resolution (the task of determining whether two database records correspond to the same entity), semantic similarity or automated reasoning. Recent approaches based on machine learning and graph embeddings show promise for working with messier inputs. No single tool will perform equally well on all inputs: some of the semantics-aware tools like LogMap and Agreement Maker Light (AML) can exploit the ontology structure to determine high-quality matches but will have problems with the large-scale data linking tasks required by modern big-data applications. Purely automated approaches to mapping are often insufficient for real world use cases that require a high degree of accuracy, such as medical diagnostics. They often need to be refined by hand or using sophisticated mapping reconciliation approaches independent of the actual matching. Determining a mapping is often complex, due to the high degree of terminological variability: different communities may use very different names for the same real world entities . For example, for example, the condition referred to in the Human Phenotype Ontology (HPO) as \"Hyperchloriduria\" is called \"increased urine chloride ion level\" in the Mammalian Phenotype Ontology (MP), which is used by the model organism community. Mapping rules - capturing the conditions under which a match is established . Mapping rules define the conditions under which we determine a match between two terms. For example, the condition for a mapping rule could be \"if the subject label and object label match exactly\". In practice, mapping rules can be very simple (e.g., \"exact match of term labels\"), more complex (\"exact match between label of subject and exact synonym of object after they are pre-processed using stemming\"), or even more exacting (\"complex match determined by a human curator that carefully reviewed the descriptions and definitions of both terms and concluded they mean the same thing\"). One problem for both manually curated mappings and automated approaches is that these mapping rules are often hidden deeply in the code or are not documented at all. Exposing mapping rules along with confidence scores would be very valuable for reviewing mappings and explaining them to users. Our reference implementation for SSSOM is rdf-matcher, which makes these mapping rules explicit, but other approaches such as OMOP2OBO also capture mapping rules as part of the mapping metadata.","title":"Background about mappings"},{"location":"issue_tracker/","text":"issue_tracker URI : sssom:issue_tracker Applicable to : MappingSet , MappingRegistry Description A URL location of the issue tracker for this entity. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: https://github.com/mapping-commons/mh_mapping_initiative/issues Example value : https://github.com/mapping-commons/mh_mapping_initiative/issues Description : (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv Schema developer documentation LinkML source name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker domain_of: - mapping set - mapping registry range: uri","title":"issue_tracker"},{"location":"issue_tracker/#issue_tracker","text":"URI : sssom:issue_tracker Applicable to : MappingSet , MappingRegistry Description A URL location of the issue tracker for this entity.","title":"issue_tracker"},{"location":"issue_tracker/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"issue_tracker/#examples","text":"Example: https://github.com/mapping-commons/mh_mapping_initiative/issues Example value : https://github.com/mapping-commons/mh_mapping_initiative/issues Description : (A URL resolving to the issue tracker of the Mouse-Human mapping initiative)","title":"Examples"},{"location":"issue_tracker/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv","title":"See Also"},{"location":"issue_tracker/#schema-developer-documentation","text":"LinkML source name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker domain_of: - mapping set - mapping registry range: uri","title":"Schema developer documentation"},{"location":"issue_tracker_item/","text":"issue_tracker_item URI : sssom:issue_tracker_item Applicable to : Mapping Description The issue tracker item discussing this mapping. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: SSSOM_GITHUB_ISSUE:166 Example value : SSSOM_GITHUB_ISSUE:166 Description : (A URL resolving to an issue discussing a new SSSOM element request) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv Schema developer documentation LinkML source name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item domain_of: - mapping range: EntityReference","title":"issue_tracker_item"},{"location":"issue_tracker_item/#issue_tracker_item","text":"URI : sssom:issue_tracker_item Applicable to : Mapping Description The issue tracker item discussing this mapping.","title":"issue_tracker_item"},{"location":"issue_tracker_item/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"issue_tracker_item/#examples","text":"Example: SSSOM_GITHUB_ISSUE:166 Example value : SSSOM_GITHUB_ISSUE:166 Description : (A URL resolving to an issue discussing a new SSSOM element request)","title":"Examples"},{"location":"issue_tracker_item/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv","title":"See Also"},{"location":"issue_tracker_item/#schema-developer-documentation","text":"LinkML source name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"last_updated/","text":"last_updated URI : sssom:last_updated Applicable to : MappingSetReference Description The date this reference was last updated. Properties Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated domain_of: - mapping set reference range: date","title":"last_updated"},{"location":"last_updated/#last_updated","text":"URI : sssom:last_updated Applicable to : MappingSetReference Description The date this reference was last updated.","title":"last_updated"},{"location":"last_updated/#properties","text":"Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"last_updated/#schema-developer-documentation","text":"LinkML source name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated domain_of: - mapping set reference range: date","title":"Schema developer documentation"},{"location":"license/","text":"license URI : dcterms:license Applicable to : MappingSet , Mapping Description A url to the license of the mapping. In absence of a license we assume no license. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license domain_of: - mapping set - mapping range: uri","title":"license"},{"location":"license/#license","text":"URI : dcterms:license Applicable to : MappingSet , Mapping Description A url to the license of the mapping. In absence of a license we assume no license.","title":"license"},{"location":"license/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"license/#schema-developer-documentation","text":"LinkML source name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license domain_of: - mapping set - mapping range: uri","title":"Schema developer documentation"},{"location":"linkml-index/","text":"sssom Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) URI: https://w3id.org/sssom/schema/ Name: sssom Classes Class Description ExtensionDefinition A definition of an extension (non-standard) slot. Mapping Represents an individual mapping between a pair of entities MappingRegistry A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. MappingSet Represents a set of mappings MappingSetReference A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. NoTermFound sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. Prefix None Propagatable Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. Slots Slot Description author_id Identifies the persons or groups responsible for asserting the mappings author_label A string identifying the author of this mapping comment Free text field containing either curator notes or text generated by tool pro... confidence A score between 0 and 1 to denote the confidence or probability that the matc... creator_id Identifies the persons or groups responsible for the creation of the mapping creator_label A string identifying the creator of this mapping curation_rule A curation rule is a (potentially) complex condition executed by an agent tha... curation_rule_text A curation rule is a (potentially) complex condition executed by an agent tha... curie_map A dictionary that contains prefixes as keys and their URI expansions as value... documentation A URL to the documentation of this mapping commons extension_definitions A list that defines the extension slots used in the mapping set homepage A URL to a homepage of this mapping commons imports A list of registries that should be imported into this one issue_tracker A URL location of the issue tracker for this entity issue_tracker_item The issue tracker item discussing this mapping last_updated The date this reference was last updated license A url to the license of the mapping local_name The local name assigned to file that corresponds to the downloaded mapping se... mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t... mapping_date The date the mapping was asserted mapping_justification A mapping justification is an action (or the written representation of that a... mapping_provider URL pointing to the source that provided the mapping, for example an ontology... mapping_registry_description The description of a mapping registry mapping_registry_id The unique identifier of a mapping registry mapping_registry_title The title of a mapping registry mapping_set_description A description of the mapping set mapping_set_group Set by the owners of the mapping registry mapping_set_id A globally unique identifier for the mapping set (not each individual mapping... mapping_set_references A list of mapping set references mapping_set_source A mapping set or set of mapping set that was used to derive the mapping set mapping_set_title The display name of a mapping set mapping_set_version A version string for the mapping mapping_source The mapping set this mapping was originally defined in mapping_tool A reference to the tool or algorithm that was used to generate the mapping mapping_tool_version Version string that denotes the version of the mapping tool used mappings Contains a list of mapping objects match_string String that is shared by subj/obj mirror_from A URL location from which to obtain a resource, such as a mapping set object_category The conceptual category to which the subject belongs to object_id The ID of the object of the mapping object_label The label of object of the mapping object_match_field A list of properties (term annotations on the object) that was used for the m... object_preprocessing Method of preprocessing applied to the fields of the object object_source URI of vocabulary or identifier source for the object object_source_version Version IRI or version string of the source of the object term object_type The type of entity that is being mapped other Pipe separated list of key value pairs for properties not part of the SSSOM s... predicate_id The ID of the predicate or relation that relates the subject and object of th... predicate_label The label of the predicate/relation of the mapping predicate_modifier A modifier for negating the predicate predicate_type The type of entity that is being mapped prefix_name prefix_url propagated Indicates whether a slot can be propagated from a mapping down to individual ... property The property associated with the extension slot publication_date The date the mapping was published registry_confidence This value is set by the registry that indexes the mapping set reviewer_id Identifies the persons or groups that reviewed and confirmed the mapping reviewer_label A string identifying the reviewer of this mapping see_also A URL specific for the mapping instance similarity_measure The measure used for computing a similarity score similarity_score A score between 0 and 1 to denote the similarity between two entities, where ... slot_name The name of the extension slot subject_category The conceptual category to which the subject belongs to subject_id The ID of the subject of the mapping subject_label The label of subject of the mapping subject_match_field A list of properties (term annotations on the subject) that was used for the ... subject_preprocessing Method of preprocessing applied to the fields of the subject subject_source URI of vocabulary or identifier source for the subject subject_source_version Version IRI or version string of the source of the subject term subject_type The type of entity that is being mapped type_hint Expected type of the values of the extension slot Enumerations Enumeration Description EntityTypeEnum MappingCardinalityEnum PredicateModifierEnum Types Type Description Boolean A binary (true or false) value Curie a compact URI Date a date (year, month and day) in an idealized calendar DateOrDatetime Either a date or a datetime Datetime The combination of a date and time Decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... Double A real number that conforms to the xsd:double specification EntityReference A reference to an entity involved in the mapping Float A real number that conforms to the xsd:float specification Integer An integer Jsonpath A string encoding a JSON Path Jsonpointer A string encoding a JSON Pointer Ncname Prefix part of CURIE Nodeidentifier A URI, CURIE or BNODE that represents a node in a model Objectidentifier A URI or CURIE that represents an object in the model Sparqlpath A string encoding a SPARQL Property Path String A character string Time A time object represents a (local) time of day, independent of any particular... Uri a complete URI Uriorcurie a URI or a CURIE Subsets Subset Description","title":"LinkML documentation"},{"location":"linkml-index/#sssom","text":"Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) URI: https://w3id.org/sssom/schema/ Name: sssom","title":"sssom"},{"location":"linkml-index/#classes","text":"Class Description ExtensionDefinition A definition of an extension (non-standard) slot. Mapping Represents an individual mapping between a pair of entities MappingRegistry A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. MappingSet Represents a set of mappings MappingSetReference A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. NoTermFound sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. Prefix None Propagatable Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class.","title":"Classes"},{"location":"linkml-index/#slots","text":"Slot Description author_id Identifies the persons or groups responsible for asserting the mappings author_label A string identifying the author of this mapping comment Free text field containing either curator notes or text generated by tool pro... confidence A score between 0 and 1 to denote the confidence or probability that the matc... creator_id Identifies the persons or groups responsible for the creation of the mapping creator_label A string identifying the creator of this mapping curation_rule A curation rule is a (potentially) complex condition executed by an agent tha... curation_rule_text A curation rule is a (potentially) complex condition executed by an agent tha... curie_map A dictionary that contains prefixes as keys and their URI expansions as value... documentation A URL to the documentation of this mapping commons extension_definitions A list that defines the extension slots used in the mapping set homepage A URL to a homepage of this mapping commons imports A list of registries that should be imported into this one issue_tracker A URL location of the issue tracker for this entity issue_tracker_item The issue tracker item discussing this mapping last_updated The date this reference was last updated license A url to the license of the mapping local_name The local name assigned to file that corresponds to the downloaded mapping se... mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t... mapping_date The date the mapping was asserted mapping_justification A mapping justification is an action (or the written representation of that a... mapping_provider URL pointing to the source that provided the mapping, for example an ontology... mapping_registry_description The description of a mapping registry mapping_registry_id The unique identifier of a mapping registry mapping_registry_title The title of a mapping registry mapping_set_description A description of the mapping set mapping_set_group Set by the owners of the mapping registry mapping_set_id A globally unique identifier for the mapping set (not each individual mapping... mapping_set_references A list of mapping set references mapping_set_source A mapping set or set of mapping set that was used to derive the mapping set mapping_set_title The display name of a mapping set mapping_set_version A version string for the mapping mapping_source The mapping set this mapping was originally defined in mapping_tool A reference to the tool or algorithm that was used to generate the mapping mapping_tool_version Version string that denotes the version of the mapping tool used mappings Contains a list of mapping objects match_string String that is shared by subj/obj mirror_from A URL location from which to obtain a resource, such as a mapping set object_category The conceptual category to which the subject belongs to object_id The ID of the object of the mapping object_label The label of object of the mapping object_match_field A list of properties (term annotations on the object) that was used for the m... object_preprocessing Method of preprocessing applied to the fields of the object object_source URI of vocabulary or identifier source for the object object_source_version Version IRI or version string of the source of the object term object_type The type of entity that is being mapped other Pipe separated list of key value pairs for properties not part of the SSSOM s... predicate_id The ID of the predicate or relation that relates the subject and object of th... predicate_label The label of the predicate/relation of the mapping predicate_modifier A modifier for negating the predicate predicate_type The type of entity that is being mapped prefix_name prefix_url propagated Indicates whether a slot can be propagated from a mapping down to individual ... property The property associated with the extension slot publication_date The date the mapping was published registry_confidence This value is set by the registry that indexes the mapping set reviewer_id Identifies the persons or groups that reviewed and confirmed the mapping reviewer_label A string identifying the reviewer of this mapping see_also A URL specific for the mapping instance similarity_measure The measure used for computing a similarity score similarity_score A score between 0 and 1 to denote the similarity between two entities, where ... slot_name The name of the extension slot subject_category The conceptual category to which the subject belongs to subject_id The ID of the subject of the mapping subject_label The label of subject of the mapping subject_match_field A list of properties (term annotations on the subject) that was used for the ... subject_preprocessing Method of preprocessing applied to the fields of the subject subject_source URI of vocabulary or identifier source for the subject subject_source_version Version IRI or version string of the source of the subject term subject_type The type of entity that is being mapped type_hint Expected type of the values of the extension slot","title":"Slots"},{"location":"linkml-index/#enumerations","text":"Enumeration Description EntityTypeEnum MappingCardinalityEnum PredicateModifierEnum","title":"Enumerations"},{"location":"linkml-index/#types","text":"Type Description Boolean A binary (true or false) value Curie a compact URI Date a date (year, month and day) in an idealized calendar DateOrDatetime Either a date or a datetime Datetime The combination of a date and time Decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... Double A real number that conforms to the xsd:double specification EntityReference A reference to an entity involved in the mapping Float A real number that conforms to the xsd:float specification Integer An integer Jsonpath A string encoding a JSON Path Jsonpointer A string encoding a JSON Pointer Ncname Prefix part of CURIE Nodeidentifier A URI, CURIE or BNODE that represents a node in a model Objectidentifier A URI or CURIE that represents an object in the model Sparqlpath A string encoding a SPARQL Property Path String A character string Time A time object represents a (local) time of day, independent of any particular... Uri a complete URI Uriorcurie a URI or a CURIE","title":"Types"},{"location":"linkml-index/#subsets","text":"Subset Description","title":"Subsets"},{"location":"local_name/","text":"local_name URI : sssom:local_name Applicable to : MappingSetReference Description The local name assigned to file that corresponds to the downloaded mapping set. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name domain_of: - mapping set reference range: string","title":"local_name"},{"location":"local_name/#local_name","text":"URI : sssom:local_name Applicable to : MappingSetReference Description The local name assigned to file that corresponds to the downloaded mapping set.","title":"local_name"},{"location":"local_name/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"local_name/#schema-developer-documentation","text":"LinkML source name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name domain_of: - mapping set reference range: string","title":"Schema developer documentation"},{"location":"mapping-commons/","text":"How to set up a Mapping Commons A mapping commons is an open, collaborative space for managing and reconciling mappings. The goal is to collect mappings from a variety of sources into a mapping set registry , standardise them into a common representation, curate some basic metrics such as \"confidence\" (how much does the community managing the commons trust a specific mapping source?) and provenance (where exactly did this mapping come from before it was integrated). There is no agreed upon standard for mapping registries yet. SSSOM itself provides a lighweight metadata model for mapping registries which is, as of August 2023, under active development. Typical setup of a mapping commons We recommend to base your mapping commons on a combination of GitHub (or GitLab) collaborative workflows (issues and discussions for the community, access management etc) and a git repository based on the Mapping Commons Cookiecutter Template for version control of the mappings. Using the template system above allows you to: make use of basic CI and quality control for your mappings, provides a standard way to document metadata about your mapping sets provides a basic ETL system based on gnu make (which you dont have to use, its just convenient) Provides a standardised registry format that can be re-used/imported by others. Examples of Mapping Commons are: https://github.com/mapping-commons/mh_mapping_initiative https://gitlab.c-path.org/c-pathontology/mapping-commons","title":"Set up a mapping registry/commons"},{"location":"mapping-commons/#how-to-set-up-a-mapping-commons","text":"A mapping commons is an open, collaborative space for managing and reconciling mappings. The goal is to collect mappings from a variety of sources into a mapping set registry , standardise them into a common representation, curate some basic metrics such as \"confidence\" (how much does the community managing the commons trust a specific mapping source?) and provenance (where exactly did this mapping come from before it was integrated). There is no agreed upon standard for mapping registries yet. SSSOM itself provides a lighweight metadata model for mapping registries which is, as of August 2023, under active development.","title":"How to set up a Mapping Commons"},{"location":"mapping-commons/#typical-setup-of-a-mapping-commons","text":"We recommend to base your mapping commons on a combination of GitHub (or GitLab) collaborative workflows (issues and discussions for the community, access management etc) and a git repository based on the Mapping Commons Cookiecutter Template for version control of the mappings. Using the template system above allows you to: make use of basic CI and quality control for your mappings, provides a standard way to document metadata about your mapping sets provides a basic ETL system based on gnu make (which you dont have to use, its just convenient) Provides a standardised registry format that can be re-used/imported by others. Examples of Mapping Commons are: https://github.com/mapping-commons/mh_mapping_initiative https://gitlab.c-path.org/c-pathontology/mapping-commons","title":"Typical setup of a mapping commons"},{"location":"mapping-justifications/","text":"Guide to using Mapping Justifications The goal of this document is to provide the user with a few pointers into the art of mapping justification construction. As of Summer 2023, the SSSOM justification system is still evolving, and will likely benefit from yoru input. Where informative metadata properties or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively. Table of contents lexical matching semantic similarity threshold-based matching manual mapping curation mapping review Other justifications background knowledge-based matching composite matching instance-based matching lexical similarity threshold-based matching logical reasoning mapping chaining-based matching mapping inversion-based matching semantic similarity threshold-based matching structural matching unspecified matching Lexical matching There are two kinds of lexical matching justifications we try to distinguish: semapv:LexicalMatching : The match is exact (potentially after pre-processing) semapv:LexicalSimilarityThresholdMatching : The match is fuzzy (for example, Levenshtein distance). Note: embedding similarity, even if constructed purely of a word embedding, is considered a form of semantic similarity. Level 1: Track the fact that the match was based on a lexical process Whenever a mapping was established by a lexical matching process, track at least that fact: mapping_justification : semapv:LexicalMatching . This indicates that the mapping was determined through some form of exact lexical matching. Level 2: Track the specific datamodel fields involved in the matching process Regardless of which specific lexical matching justification you are working on, it is often useful to document the source field of the values used to aquire the match. For example: subject_match_field : rdfs:label indicates that the value of the rdfs:label property on the subject entity was used to establish the match. object_match_field : skos:prefLabel indicates that the value of the skos:prefLabel property on the object entity was used to establish the match. match_string : somestring the exact string that was used to establish the match. This is especially useful if preprocessing methods are applied, see below (Level 3). Level 3: Pre-processing There are many pre-processing techniques for text in the NLP literature, such as lower-casing or lemmatisation. To judge the fidelity of a match, it is often useful to document the exact techniques used. subject_preprocessing : semapv:BlankNormalisation indicates that before determining the match, blank characters (spaces etc) where standardised in some way. There are plenty of preprocessing techniques already recorded in SEMAPV , including semapv:BlankNormalisation, semapv:CaseNormalization, semapv:DiacriticsSuppression, semapv:DigitSuppression, semapv:Lemmatization, semapv:LinkStripping, semapv:PunctuationElemination, semapv:RegexRemoval, semapv:RegexReplacement, semapv:Stemming, semapv:StopWordRemoval, semapv:TermExtraction, semapv:Tokenization, but feel free to add more. However, there is one aspect that makes this process quite difficult to implement: Most matchers will blindly apply a set of normalisation techniques prior to processing, but not document which exact technique had an effect . It is obviously less useful to say: we applied all these 20 techniques, if only one of them was actually effectual (i.e. caused the string to change). If there is no (easy) way to keep track of which technique was effectual for any given match, we believe that it is still better to document all techniques, but doing so on mapping set level rather than for each individual mappings (to keep the mapping sets smaller). Semantic similarity threshold-based matching The basic idea behind \"Semantic similarity threshold-based matching\" is that a process that is \"semantics aware\" (in the loose sense, either by being cognisant about the graph structure, the logical structure, or a contextual textual knowledge such as an embedded Wikipedia article) enabled computing a score between the subject and object entity that to some degree reflects the \"similarity\" between the two entities. There are many examples of this: The (graph-)structure around the subject and object entities are projected into a common embedding space, and the similarity between the subject and object entities are expressed as cosine similarity between the two embeddings. The jaccard similarity between a set of properties of the subject and object entities is calculated. The Resnik score is calculated between the subject and object entities. Important note on applicability of SSSOM for semantic similarity profiles : SSSOM is not used for documenting semantic similarity profiles, i.e. cross-tables where some set of terms are compared with another set of terms and the semantic similarity is recorded as a score. SSSOM is used to document mappings, and only if a mapping decision is influenced by a semantic similarity based approach, especially in conjunction with as specific thresshold, SSSOM is applicable. For pure semantic similarity tables use OAK Semantic Similarity . Semantic vs lexical similarity? : Semantic similarity is different from lexical similarity intuitively because the context (the graph structure, the background information) is taken into account and provides an (often crude) model of the actual entity, rather than of the word describing it. However, the distinctions can become a bit hazy. Imagine learning a graph embedding on a graph without edges, or a word embedding purely on a single label - there is definitely a grey zone where lexical similarity finishes and semantic similarity begins. In practice though, it should be mostly clear. Level 1: Documenting semantic similarity matches The suggested metadata for semantic similarity threshold-based matching approach is: semantic_similarity_measure semantic_similarity_score ((authors note: Maybe we need a value for similarity threshold ?)) Manual mapping curation semapv:ManualMappingCuration is a process conducted by a (usually human) agent to determine a mapping by virtue of domain expertise. The task usually involves the agent determining, for a given subject_id , a suitable obect_id in the object_source . Level 1: Documenting manual mapping curation The suggested minimal metadata for manual mapping curation is: author_id : Documenting, using a unique identifier such as an ORCID, the identity of the author performing the expert curation. comment : When no formal curation_rule is provided (see below), it is recommended to provide a short comment with the mapping justification, especially if there is some uncertainty or ambiguity about the mapping decision. Level 2: Documenting the confidence of expert curation confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717) is correct with 90% confidence. In manual curation, confidence expresses the domain expertise degree of conviction that the asserted mapping holds true. While manual mapping curation is still considered a gold standard, in practice human agents have (a) varying levels of expertise on the subject domain, (b) varying levels of understanding of the intuitions behind \"semantic spaces\" and associated concepts and (c) varying levels of metadata associated with a concept to be able to determine a match (definitions, labels, papers, synonyms, etc). Documenting confidence can be very useful both to increase the transparency of data science pipelines that involve entity mappings, and as a means to increase curation speed: rather than trying to achieve 100% confidence for a mapping, which can be extremely time-consuming, it is often better to first \"wave through\" a mapping with lower confidence to reach coverage, and later revisit low confidence mappings iteratively. Level 3: Documenting curation rules For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rule s can help increase consistency for manual curation, and transparency for downstream users. For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement. Curation rules are often very use case-specific and difficult to standardise. As of August 2023, SSSOM does not provide any standardised curation rules, but encourages the community to define them locally. Mapping review semapv:MappingReview is a process conducted by a (usually human) agent to determine the validity of a specific given mapping. It differs from semapv:ManualMappingCuration in that it does not involve looking for alternative mappings or indeed, necessarily determining if a mapping is the best possible mapping. It should be considered cheaper, less trustworthy evidence compared to semapv:ManualMappingCuration . There are two kinds of mapping reviews in SSSOM: Review as an independent justification: semapv:MappingReview is an independent process that determines the validity of a mapping. Review of an existing justification: Instead of evaluating an entire mapping, you can record the fact that someone has looked at a specific justification and deemed it acceptable. In this case, simply record the reviewers identify using the reviewer_id or reviewer_label fields.","title":"Mapping Justifications"},{"location":"mapping-justifications/#guide-to-using-mapping-justifications","text":"The goal of this document is to provide the user with a few pointers into the art of mapping justification construction. As of Summer 2023, the SSSOM justification system is still evolving, and will likely benefit from yoru input. Where informative metadata properties or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively.","title":"Guide to using Mapping Justifications"},{"location":"mapping-justifications/#table-of-contents","text":"lexical matching semantic similarity threshold-based matching manual mapping curation mapping review Other justifications background knowledge-based matching composite matching instance-based matching lexical similarity threshold-based matching logical reasoning mapping chaining-based matching mapping inversion-based matching semantic similarity threshold-based matching structural matching unspecified matching","title":"Table of contents"},{"location":"mapping-justifications/#lexical-matching","text":"There are two kinds of lexical matching justifications we try to distinguish: semapv:LexicalMatching : The match is exact (potentially after pre-processing) semapv:LexicalSimilarityThresholdMatching : The match is fuzzy (for example, Levenshtein distance). Note: embedding similarity, even if constructed purely of a word embedding, is considered a form of semantic similarity.","title":"Lexical matching"},{"location":"mapping-justifications/#level-1-track-the-fact-that-the-match-was-based-on-a-lexical-process","text":"Whenever a mapping was established by a lexical matching process, track at least that fact: mapping_justification : semapv:LexicalMatching . This indicates that the mapping was determined through some form of exact lexical matching.","title":"Level 1: Track the fact that the match was based on a lexical process"},{"location":"mapping-justifications/#level-2-track-the-specific-datamodel-fields-involved-in-the-matching-process","text":"Regardless of which specific lexical matching justification you are working on, it is often useful to document the source field of the values used to aquire the match. For example: subject_match_field : rdfs:label indicates that the value of the rdfs:label property on the subject entity was used to establish the match. object_match_field : skos:prefLabel indicates that the value of the skos:prefLabel property on the object entity was used to establish the match. match_string : somestring the exact string that was used to establish the match. This is especially useful if preprocessing methods are applied, see below (Level 3).","title":"Level 2: Track the specific datamodel fields involved in the matching process"},{"location":"mapping-justifications/#level-3-pre-processing","text":"There are many pre-processing techniques for text in the NLP literature, such as lower-casing or lemmatisation. To judge the fidelity of a match, it is often useful to document the exact techniques used. subject_preprocessing : semapv:BlankNormalisation indicates that before determining the match, blank characters (spaces etc) where standardised in some way. There are plenty of preprocessing techniques already recorded in SEMAPV , including semapv:BlankNormalisation, semapv:CaseNormalization, semapv:DiacriticsSuppression, semapv:DigitSuppression, semapv:Lemmatization, semapv:LinkStripping, semapv:PunctuationElemination, semapv:RegexRemoval, semapv:RegexReplacement, semapv:Stemming, semapv:StopWordRemoval, semapv:TermExtraction, semapv:Tokenization, but feel free to add more. However, there is one aspect that makes this process quite difficult to implement: Most matchers will blindly apply a set of normalisation techniques prior to processing, but not document which exact technique had an effect . It is obviously less useful to say: we applied all these 20 techniques, if only one of them was actually effectual (i.e. caused the string to change). If there is no (easy) way to keep track of which technique was effectual for any given match, we believe that it is still better to document all techniques, but doing so on mapping set level rather than for each individual mappings (to keep the mapping sets smaller).","title":"Level 3: Pre-processing"},{"location":"mapping-justifications/#semantic-similarity-threshold-based-matching","text":"The basic idea behind \"Semantic similarity threshold-based matching\" is that a process that is \"semantics aware\" (in the loose sense, either by being cognisant about the graph structure, the logical structure, or a contextual textual knowledge such as an embedded Wikipedia article) enabled computing a score between the subject and object entity that to some degree reflects the \"similarity\" between the two entities. There are many examples of this: The (graph-)structure around the subject and object entities are projected into a common embedding space, and the similarity between the subject and object entities are expressed as cosine similarity between the two embeddings. The jaccard similarity between a set of properties of the subject and object entities is calculated. The Resnik score is calculated between the subject and object entities. Important note on applicability of SSSOM for semantic similarity profiles : SSSOM is not used for documenting semantic similarity profiles, i.e. cross-tables where some set of terms are compared with another set of terms and the semantic similarity is recorded as a score. SSSOM is used to document mappings, and only if a mapping decision is influenced by a semantic similarity based approach, especially in conjunction with as specific thresshold, SSSOM is applicable. For pure semantic similarity tables use OAK Semantic Similarity . Semantic vs lexical similarity? : Semantic similarity is different from lexical similarity intuitively because the context (the graph structure, the background information) is taken into account and provides an (often crude) model of the actual entity, rather than of the word describing it. However, the distinctions can become a bit hazy. Imagine learning a graph embedding on a graph without edges, or a word embedding purely on a single label - there is definitely a grey zone where lexical similarity finishes and semantic similarity begins. In practice though, it should be mostly clear.","title":"Semantic similarity threshold-based matching"},{"location":"mapping-justifications/#level-1-documenting-semantic-similarity-matches","text":"The suggested metadata for semantic similarity threshold-based matching approach is: semantic_similarity_measure semantic_similarity_score ((authors note: Maybe we need a value for similarity threshold ?))","title":"Level 1: Documenting semantic similarity matches"},{"location":"mapping-justifications/#manual-mapping-curation","text":"semapv:ManualMappingCuration is a process conducted by a (usually human) agent to determine a mapping by virtue of domain expertise. The task usually involves the agent determining, for a given subject_id , a suitable obect_id in the object_source .","title":"Manual mapping curation"},{"location":"mapping-justifications/#level-1-documenting-manual-mapping-curation","text":"The suggested minimal metadata for manual mapping curation is: author_id : Documenting, using a unique identifier such as an ORCID, the identity of the author performing the expert curation. comment : When no formal curation_rule is provided (see below), it is recommended to provide a short comment with the mapping justification, especially if there is some uncertainty or ambiguity about the mapping decision.","title":"Level 1: Documenting manual mapping curation"},{"location":"mapping-justifications/#level-2-documenting-the-confidence-of-expert-curation","text":"confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717) is correct with 90% confidence. In manual curation, confidence expresses the domain expertise degree of conviction that the asserted mapping holds true. While manual mapping curation is still considered a gold standard, in practice human agents have (a) varying levels of expertise on the subject domain, (b) varying levels of understanding of the intuitions behind \"semantic spaces\" and associated concepts and (c) varying levels of metadata associated with a concept to be able to determine a match (definitions, labels, papers, synonyms, etc). Documenting confidence can be very useful both to increase the transparency of data science pipelines that involve entity mappings, and as a means to increase curation speed: rather than trying to achieve 100% confidence for a mapping, which can be extremely time-consuming, it is often better to first \"wave through\" a mapping with lower confidence to reach coverage, and later revisit low confidence mappings iteratively.","title":"Level 2: Documenting the confidence of expert curation"},{"location":"mapping-justifications/#level-3-documenting-curation-rules","text":"For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rule s can help increase consistency for manual curation, and transparency for downstream users. For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement. Curation rules are often very use case-specific and difficult to standardise. As of August 2023, SSSOM does not provide any standardised curation rules, but encourages the community to define them locally.","title":"Level 3: Documenting curation rules"},{"location":"mapping-justifications/#mapping-review","text":"semapv:MappingReview is a process conducted by a (usually human) agent to determine the validity of a specific given mapping. It differs from semapv:ManualMappingCuration in that it does not involve looking for alternative mappings or indeed, necessarily determining if a mapping is the best possible mapping. It should be considered cheaper, less trustworthy evidence compared to semapv:ManualMappingCuration . There are two kinds of mapping reviews in SSSOM: Review as an independent justification: semapv:MappingReview is an independent process that determines the validity of a mapping. Review of an existing justification: Instead of evaluating an entire mapping, you can record the fact that someone has looked at a specific justification and deemed it acceptable. In this case, simply record the reviewers identify using the reviewer_id or reviewer_label fields.","title":"Mapping review"},{"location":"mapping-predicates/","text":"How to pick the right mapping predicates A mapping predicate such as skos:exactMatch specifies the semantics of the mapping relation - in other words, it defines how a computer (and human!) should interpret the mapping when it is being used. For example, a computer program may be allowed to merge nodes in a knowledge graph only when they are skos:exactMatch , but not when they are, say, skos:closeMatch . Picking the right predicate to specify the meaning of your mapping is often a difficult process. The following guide should help you to understand the most widely used mapping predicates and when they are appropriate. Table of content The three primary concerns for selecting a mapping predicate The 3 step process for selecting an appropriate mapping predicate Frequently asked questions about mapping predicates Glossary subject : the entity that is being mapped object : the entity that the subject is mapped to predicate : the semantic mapping relationship used The three primary concerns for selecting a mapping predicate There are at least three things you need to decide before selecting an appropriate mapping predicate: Precision Acceptable degree of noise Intended use case What is the precision of the mapping? As a curator, you should try to investigate the intended meaning of both the subject and the object. This task usually involves trying to find out as much as possible about the mapped identifiers: What is their human readable definition? Are there any logical axioms that could help with understanding the intended meaning? Sometimes, this even involves asking the respective stewards of the database or ontology for clarification. Important: The key here is \"intended meaning\". For example, when you see FOODON:Apple (FOODON is an ontology), you do not try to figure out what an apple is , but what thing in the world (in your conceptual model of the world) the FOODON developers intended the FOODON:Apple identifier to refer to . This might be an apple that you can eat, or a cultivar ! The precision is simply: is the mapping exact , close , broad , narrow or related ? Here is a basic guide about how to think of each: exact : The two terms are intended to refer to the same thing. For example, both the subject and the object identifiers refer to the concept of Gala cultivar . close : The two terms are intended to refer to roughly the same thing, but not quite. This is a hazy category and should be avoided in practice, because when taken too literally, most mappings could be interpreted as close mappings. This is not the point of creating mappings, if their intention is to be useful (see \"use case\" considerations later in this document). An example of a close mapping is one between the \"heart\" concept in a database of anatomical entities for biological research on chimpanzees and the \"human heart\" in an electronic health record for humans. broad : The object is conceptually broader than the subject. For example, \"human heart\" in an electronic health record refers to \"heart\" in a general anatomy ontology that covers all species, such as Uberon. Another example is \"Gala (cultivar)\" in one ontology or database to \"Apple (cultivar)\" in another: the Apple (cultivar) has a broader meaning then \"Gala (cultivar)\". For a good mapping, it is advisable that \"broad\" and \"narrow\" are applied a bit more strictly than is technically permitted by the SKOS specification: both the subject and the object should belong to the same category . For example, you should use broad (or narrow) only if both the subject and the object are \"cultivars\" (in the above example). narrow : The object is conceptually narrower than the subject. For example \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\". Think of it as the opposite of \"broad\". broad and narrow are so-called inverse categories: If \"Gala (cultivar)\" is a broad match to \"Apple (cultivar)\", then \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\"! One note of caution : narrow matches generally have less useful applications then broad ones. For example, if we want to group subject entities in a database under an ontology to make them queryable in a knowledge graph, only broad matches to the ontology can be retrieved. For example, if we map \"Gala (cultivar)\" in a database to \"Apple (cultivar)\" in an ontology, and we wish to write a semantic query to obtain all records that are about \"Apple (cultivar)\" according to the ontology, we obtain \"Gala (cultivar)\". This is not true the other way around: if the ontology term is more specific then the database term, it can't be used to group the database data. related : The subject refers to an analogous concept of a different category. For example \"Apple\" and \"Apple tree\" are considered related matches, but not exact matches, as \"Apple\" is of the \"fruit\" category, and \"Apple tree\" of the \"tree\" category. Other examples include: \"disease\" and \"phenotype\", \"chemical\" and \"chemical exposure\", \"car\" and \"car manufacturing process\". In general, related mappings should be reserved for \"direct analogues\". For example, we should not try to map to related and broad categories at the same time, like, for example, \"Gala (cultivar)\" to \"Apple tree\". This causes a huge amount of proliferation of very \"low value\" mappings (see use case section later). What is the acceptable degree of noise of the mapping? \"Noise\" is the permissible margin of error for some target use case. Depending on what you want to do with your mappings, different quality levels are acceptable. This section is not exhaustive . While reading through this section, you should keep one thing in mind: it is never a good idea to think about mappings as \"correct\" or \"wrong\". Even the the exact same identifier (for example in Wikidata, or even the biomedical data domain) can mean something very different depending on which database it is using it or in which part of which datamodel (or value set) they are used. Mapping should therefore be perceived as an inexact art where the goal is not \"correctness\" but \"fitness for purpose\": can the mappings deliver the use case I am interested in? In the following, we will take a closer look at the varying levels of noise you may need to weigh against each other. \"zero-noise\". Some mappings directly inform decision processes of downstream consumers, such as clinical decision support or manufacturing. For example, in an electronic health record (EHR) system we may want to know what the latest recommended drugs (or contra-indications) for a conditions are, and the disease-drugs relationships may be curated using one terminology such as OMOP , and the EHR may be represented using ICD10-CM (a clinical terminology used widely by hospitals). In these cases, noise should be zero or close to zero, as patient lives depend on the correctness of these mappings. \"low-noise\". Most mappings are used to augment/inform processes that are a bit upstream of the final consumer. For example, mappings are used to group data for analysis or make it easier to find related data during search (enhancing search indexing semantically). The final consumer does not immediately \"see\" the mappings, but just the consequences of applying the mappings. In these cases, a bit of noise may be acceptable, i.e. some mappings that are \"not quite right\". Practically, this is very often the case where data sources are aligned automatically to enable searches across, so a few bad mappings are better than having none. \"high-noise\": Some use cases employ data processing approaches that are themselves highly resilient to noise, like Machine Learning. Here, even a larger number of mappings (in a knowledge graph for example) which are \"not quite right\", or noisy, may be acceptable (if the signal to noise ratio is still ok, i.e. there are \"more good than bad\" mappings). There is no easy formula by which you can decide what level of noise is acceptable. Your use case will determine this. What you, as the steward of your organisation's mapping data, should consider is that there is (roughly) an order of magnitude in cost involved between the three levels: \"high-noise\": Very cheap to generate. Automated matching tools can be used to generate the mappings, with no human review required. Your system may implement a way for your consumers to flag up bad results which can be traced back to a bad mapping, and simply exclude them moving forward. \"low-noise\": Moderately expensive. Most mappings are generated using automated matchers, but then confirmed by a human curator. The confirmation process can often be \"hand-wavy\" to weed out obviously bad mappings, but do not involve the same rigour as \"zero-noise\" mappings would require to maintain scalability to large volumes of mappings. Such a \"hand-wavy\" confirmative review can take 10 seconds to 100 seconds (if a quick lookup is required). \"zero-noise\": Very expensive. Every mapping must be carefully reviewed by a human curator, sometimes by a group of curators. In our experience, reviewing or establishing a mapping like this (manually) can take anything between 10 and 30 minutes - occasionally more. You can use these estimated costs for mapping review to determine how much it would cost to apply the same level of rigour to your own mappings. What is the intended use case? This section is informative, not exhaustive, and will give you a sense of how use cases affect your choice of mapping predicate. We have covered some implications of use cases in the sections above: Some use cases require lower levels of noise , others can live with higher levels of noise. Mappings are rarely 100% exact when mapping across semantic spaces (different database, ontologies, terminologies). What matters is not \"correctness\" - what matters is that the mappings are \" fit for purpose \" (i.e. useful for your use case). Some mappings may be of more value for your use case than others (for example, exact mappings may be more valuable than broad mappings). You can find the right level of cost benefit by selecting optimising value and cost of generating/maintaining such mappings. close mappings may often have a very low value, but if your acceptable level of noise is high, just generate them, since they don't cost you anything! Other key considerations in the sections are: Semantic frameworks for analysis and querying Instance vs concept-level mapping Typical use cases Semantic frameworks for analysis and querying There are four semantic frameworks/formalisms that default SSSOM supports: (1) SPARQL/RDF(S) (querying an integrated knowledge with basic SPARQL); (2) Simple Knowledge organisation systems (SKOS) ; (3) Web Ontology Language (OWL) ; (4) no formalism (property graphs, non-semantic use cases). We will briefly discuss the implications of each for your use cases. SPARQL/RDF(S) is a very general semantic framework that allows query across property paths . Many SPARQL engines provide at least RDFS entailment regime, which allows for some (basic) semantic reasoning (subClassOf, property domains). This is the most likely semantic framework of choice if your use case involves semantic queries such as those involving sub-class groupings. SKOS is a semantic framework that layers on top of RDF and specifies semantics for a handful of properties that are useful for building taxonomies that do not seek to follow the rigorous semantics of the class-level modelling constructs such as subClassOf. We have no experience with SKOS reasoners, and do not know if there are any out there. This means, in effect, that this \"case\" (semantic framework) has the same exact considerations as the SPARQL/RDF(S) one above. OWL is a very powerful semantic framework that is based on formal logic. Ontologies represented in OWL offer support for complex expressions of knowledge, way beyond what RDFS and SKOS can do. OWL is the semantic framework of choice if the goal is to build and reason over an integrated (merged) ontology. An example use case where OWL is the appropriate framework is integration of species-specific anatomy ontologies under species-neutral ones, see for example Uberon . A basic rule of thumb is: unless you know positively that you have to reason over the merged graph, i.e. set of all ontologies you have mapped across, OWL is probably overkill and should be avoided. Using no semantic framework does not mean semantic mappings are useless! Many extremely useful applications exist for mappings which do not involve a semantic framework, such as those related to Labelled Property Graphs (for example neo4j ). Even if you just want to translate your data into a graph, it is useful to know the semantics of your mappings as they can inform your graph queries. Other semantic frameworks exist such as rule-based systems (e.g. Datalog, SWRL), but they are not used as widely as the above in our domain. Instance vs Property vs Concept-level mapping To pick the correct mapping predicate, it is important to understand whether you are mapping concepts or instances: Concept-level: the entity being mapped constitutes a class or a concept. A concept can be thought of a collection or set of individuals. For example, \"Apple\" could refer to the class of all apples. Instance-level: the entity being mapped constitutes an individual or an instance. An instance is a single real-world entity, such as Barack Obama. Instances are members of classes/concepts. For example, Barack Obama belongs to the class of \"Person\", or \"Former Presidents\". Another example is an individual apple on a shelf in a supermarket (\"Gala Apple 199999\"), which is an instance of the \"Apple\" class. Note that notions like broad or narrow make no sense when mapping instances. We typically try to avoid the SKOS vocabulary for mapping instances, and make use of owl:sameAs instead. Note that owl:sameAs does have implications for reasoning, but it is also the preferred property when within the \"RDF/SPARQL\" semantic framework. If the mapping involves an instance and a class, you have hit a corner case of the SSSOM use case. This case can still be represented, but instance-concept relationships are not widely thought of as \"mappings\". In much the same way as concepts and instances, you can also map properties or \"relationships\": Property-level: the entities being mapped are both properties, like, for example, rdfs:label, skos:prefLabel, RO:0000050 (part of). Note that it does not make sense to try to map instances of concepts, or concepts, directly to properties. There are no relationships that would support such a mapping. Typical use cases Typical use cases for mappings include: Semantic data integration . This often involves linking data to ontologies or semantic layers in knowledge graphs. Data from one source (such as an EHR) is translated to another (such as OMOP, see above). To analyse the data semantically, the most valuable links are exact and broad as these allow you to directly query the ontology to retrieve instance data. close and narrow matches are less useful for such a use case, but maybe be consulted as the \"next best thing\" to an exact mapping. Often, a low level of noise is acceptable. Data translation . Similar to data integration, but we want to map as precisely as possible. Only exact matches really matter if we want to make sure that data annotated with one ontology means the exact same thing as data annotated with another. Noise in the mappings is often not acceptable. An example for this is if one source has annotated all its genes using the HUGO Gene Nomenclature Committee (HGNC) while another is using NCBI Gene Database identifiers. broad , narrow and even close matches are mostly meaningless - we need a 1:1 translation table with next to zero noise. Ontology and knowledge graph merging . Here, the key issue is that exact matches matches have as little noise as possible. Some merging approaches use probabilistic algorithms to weed out out potentially bad mappings (low levels of noise may be acceptable, see for example boomer ), but any naive merging approach, which is still prevalent in the knowledge graph world, will usually do the following: (1) Merge all exact matches into one \"node\" in the knowledge graph and (2) redirect all data against all these exact matches to that newly created node. The 3-step process for selecting an appropriate mapping predicate The following 3-step process condenses the sections above into a simple to follow algorithm. Given two terms A and B: Target: semantic framework: Does your use case require OWL reasoning over the merged subject and object sources? If yes, use OWL vocabulary for properties If no, use RDF/SPARQL/SKOS vocabulary for properties Are A and B instances, properties or concepts? If A and B are instances, use only vocabulary suitable for instances If A and B are concepts, use only vocabulary suitable for concepts If A and B are properties, use only vocabulary suitable for properties If either one of A or B is an instance and the other is a concept, use only vocabulary suitable for describing instance-class relationships Is A roughly the same as B? If yes, does the difference between \"truly exact\" and your understanding of A and B constitute \"acceptable noise level\"? If yes: the mapping is exact . If no: the mapping is close . If no, determine if the precision as described above. You can now select the mapping predicate based on the table below: Mapping Predicate Precision Suitable for semantic framework Suitable entity types? Acceptable noise skos:exactMatch exact SKOS/RDF(S)/SPARQL/NO Concept low skos:relatedMatch related SKOS/RDF(S)/SPARQL/NO Concept low skos:broadMatch broad SKOS/RDF(S)/SPARQL/NO Concept low skos:narrowMatch narrow SKOS/RDF(S)/SPARQL/NO Concept low skos:closeMatch close SKOS/RDF(S)/SPARQL/NO Concept low owl:sameAs exact SKOS/RDF(S)/SPARQL/OWL/NO Instance low owl:equivalentClass exact OWL Concept no rdfs:subClassOf broad RDF(S)/SPARQL/OWL Concept no owl:equivalentProperty exact OWL Property no rdfs:subPropertyOf broad OWL Property no oboInOwl:hasDbXref exact SKOS/RDF(S)/SPARQL Any high rdfs:seeAlso close SKOS/RDF(S)/SPARQL Any high rdf:type exact/broad RDF(S)/SPARQL/OWL Instance-Concept no Note that \"acceptable noise\" refers to \"what is acceptable for the target semantic framework\". When using OWL, even a bit of noise can have huge consequences for reasoning, so it is not advisable to use the OWL vocabulary in cases where there is a lot of noise. Frequently asked questions None of the mapping predicates listed here seem to fit for my use case. Can I define my own? The SSSOM specification is currently open to specifying new mapping predicates. However, it is always advisable to open an issue to discuss such cases with the wider community - there may be some benefit in standardising predicates from the start!","title":"How to use mapping predicates"},{"location":"mapping-predicates/#how-to-pick-the-right-mapping-predicates","text":"A mapping predicate such as skos:exactMatch specifies the semantics of the mapping relation - in other words, it defines how a computer (and human!) should interpret the mapping when it is being used. For example, a computer program may be allowed to merge nodes in a knowledge graph only when they are skos:exactMatch , but not when they are, say, skos:closeMatch . Picking the right predicate to specify the meaning of your mapping is often a difficult process. The following guide should help you to understand the most widely used mapping predicates and when they are appropriate.","title":"How to pick the right mapping predicates"},{"location":"mapping-predicates/#table-of-content","text":"The three primary concerns for selecting a mapping predicate The 3 step process for selecting an appropriate mapping predicate Frequently asked questions about mapping predicates","title":"Table of content"},{"location":"mapping-predicates/#glossary","text":"subject : the entity that is being mapped object : the entity that the subject is mapped to predicate : the semantic mapping relationship used","title":"Glossary"},{"location":"mapping-predicates/#the-three-primary-concerns-for-selecting-a-mapping-predicate","text":"There are at least three things you need to decide before selecting an appropriate mapping predicate: Precision Acceptable degree of noise Intended use case","title":"The three primary concerns for selecting a mapping predicate"},{"location":"mapping-predicates/#what-is-the-precision-of-the-mapping","text":"As a curator, you should try to investigate the intended meaning of both the subject and the object. This task usually involves trying to find out as much as possible about the mapped identifiers: What is their human readable definition? Are there any logical axioms that could help with understanding the intended meaning? Sometimes, this even involves asking the respective stewards of the database or ontology for clarification. Important: The key here is \"intended meaning\". For example, when you see FOODON:Apple (FOODON is an ontology), you do not try to figure out what an apple is , but what thing in the world (in your conceptual model of the world) the FOODON developers intended the FOODON:Apple identifier to refer to . This might be an apple that you can eat, or a cultivar ! The precision is simply: is the mapping exact , close , broad , narrow or related ? Here is a basic guide about how to think of each: exact : The two terms are intended to refer to the same thing. For example, both the subject and the object identifiers refer to the concept of Gala cultivar . close : The two terms are intended to refer to roughly the same thing, but not quite. This is a hazy category and should be avoided in practice, because when taken too literally, most mappings could be interpreted as close mappings. This is not the point of creating mappings, if their intention is to be useful (see \"use case\" considerations later in this document). An example of a close mapping is one between the \"heart\" concept in a database of anatomical entities for biological research on chimpanzees and the \"human heart\" in an electronic health record for humans. broad : The object is conceptually broader than the subject. For example, \"human heart\" in an electronic health record refers to \"heart\" in a general anatomy ontology that covers all species, such as Uberon. Another example is \"Gala (cultivar)\" in one ontology or database to \"Apple (cultivar)\" in another: the Apple (cultivar) has a broader meaning then \"Gala (cultivar)\". For a good mapping, it is advisable that \"broad\" and \"narrow\" are applied a bit more strictly than is technically permitted by the SKOS specification: both the subject and the object should belong to the same category . For example, you should use broad (or narrow) only if both the subject and the object are \"cultivars\" (in the above example). narrow : The object is conceptually narrower than the subject. For example \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\". Think of it as the opposite of \"broad\". broad and narrow are so-called inverse categories: If \"Gala (cultivar)\" is a broad match to \"Apple (cultivar)\", then \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\"! One note of caution : narrow matches generally have less useful applications then broad ones. For example, if we want to group subject entities in a database under an ontology to make them queryable in a knowledge graph, only broad matches to the ontology can be retrieved. For example, if we map \"Gala (cultivar)\" in a database to \"Apple (cultivar)\" in an ontology, and we wish to write a semantic query to obtain all records that are about \"Apple (cultivar)\" according to the ontology, we obtain \"Gala (cultivar)\". This is not true the other way around: if the ontology term is more specific then the database term, it can't be used to group the database data. related : The subject refers to an analogous concept of a different category. For example \"Apple\" and \"Apple tree\" are considered related matches, but not exact matches, as \"Apple\" is of the \"fruit\" category, and \"Apple tree\" of the \"tree\" category. Other examples include: \"disease\" and \"phenotype\", \"chemical\" and \"chemical exposure\", \"car\" and \"car manufacturing process\". In general, related mappings should be reserved for \"direct analogues\". For example, we should not try to map to related and broad categories at the same time, like, for example, \"Gala (cultivar)\" to \"Apple tree\". This causes a huge amount of proliferation of very \"low value\" mappings (see use case section later).","title":"What is the precision of the mapping?"},{"location":"mapping-predicates/#what-is-the-acceptable-degree-of-noise-of-the-mapping","text":"\"Noise\" is the permissible margin of error for some target use case. Depending on what you want to do with your mappings, different quality levels are acceptable. This section is not exhaustive . While reading through this section, you should keep one thing in mind: it is never a good idea to think about mappings as \"correct\" or \"wrong\". Even the the exact same identifier (for example in Wikidata, or even the biomedical data domain) can mean something very different depending on which database it is using it or in which part of which datamodel (or value set) they are used. Mapping should therefore be perceived as an inexact art where the goal is not \"correctness\" but \"fitness for purpose\": can the mappings deliver the use case I am interested in? In the following, we will take a closer look at the varying levels of noise you may need to weigh against each other. \"zero-noise\". Some mappings directly inform decision processes of downstream consumers, such as clinical decision support or manufacturing. For example, in an electronic health record (EHR) system we may want to know what the latest recommended drugs (or contra-indications) for a conditions are, and the disease-drugs relationships may be curated using one terminology such as OMOP , and the EHR may be represented using ICD10-CM (a clinical terminology used widely by hospitals). In these cases, noise should be zero or close to zero, as patient lives depend on the correctness of these mappings. \"low-noise\". Most mappings are used to augment/inform processes that are a bit upstream of the final consumer. For example, mappings are used to group data for analysis or make it easier to find related data during search (enhancing search indexing semantically). The final consumer does not immediately \"see\" the mappings, but just the consequences of applying the mappings. In these cases, a bit of noise may be acceptable, i.e. some mappings that are \"not quite right\". Practically, this is very often the case where data sources are aligned automatically to enable searches across, so a few bad mappings are better than having none. \"high-noise\": Some use cases employ data processing approaches that are themselves highly resilient to noise, like Machine Learning. Here, even a larger number of mappings (in a knowledge graph for example) which are \"not quite right\", or noisy, may be acceptable (if the signal to noise ratio is still ok, i.e. there are \"more good than bad\" mappings). There is no easy formula by which you can decide what level of noise is acceptable. Your use case will determine this. What you, as the steward of your organisation's mapping data, should consider is that there is (roughly) an order of magnitude in cost involved between the three levels: \"high-noise\": Very cheap to generate. Automated matching tools can be used to generate the mappings, with no human review required. Your system may implement a way for your consumers to flag up bad results which can be traced back to a bad mapping, and simply exclude them moving forward. \"low-noise\": Moderately expensive. Most mappings are generated using automated matchers, but then confirmed by a human curator. The confirmation process can often be \"hand-wavy\" to weed out obviously bad mappings, but do not involve the same rigour as \"zero-noise\" mappings would require to maintain scalability to large volumes of mappings. Such a \"hand-wavy\" confirmative review can take 10 seconds to 100 seconds (if a quick lookup is required). \"zero-noise\": Very expensive. Every mapping must be carefully reviewed by a human curator, sometimes by a group of curators. In our experience, reviewing or establishing a mapping like this (manually) can take anything between 10 and 30 minutes - occasionally more. You can use these estimated costs for mapping review to determine how much it would cost to apply the same level of rigour to your own mappings.","title":"What is the acceptable degree of noise of the mapping?"},{"location":"mapping-predicates/#what-is-the-intended-use-case","text":"This section is informative, not exhaustive, and will give you a sense of how use cases affect your choice of mapping predicate. We have covered some implications of use cases in the sections above: Some use cases require lower levels of noise , others can live with higher levels of noise. Mappings are rarely 100% exact when mapping across semantic spaces (different database, ontologies, terminologies). What matters is not \"correctness\" - what matters is that the mappings are \" fit for purpose \" (i.e. useful for your use case). Some mappings may be of more value for your use case than others (for example, exact mappings may be more valuable than broad mappings). You can find the right level of cost benefit by selecting optimising value and cost of generating/maintaining such mappings. close mappings may often have a very low value, but if your acceptable level of noise is high, just generate them, since they don't cost you anything! Other key considerations in the sections are: Semantic frameworks for analysis and querying Instance vs concept-level mapping Typical use cases","title":"What is the intended use case?"},{"location":"mapping-predicates/#semantic-frameworks-for-analysis-and-querying","text":"There are four semantic frameworks/formalisms that default SSSOM supports: (1) SPARQL/RDF(S) (querying an integrated knowledge with basic SPARQL); (2) Simple Knowledge organisation systems (SKOS) ; (3) Web Ontology Language (OWL) ; (4) no formalism (property graphs, non-semantic use cases). We will briefly discuss the implications of each for your use cases. SPARQL/RDF(S) is a very general semantic framework that allows query across property paths . Many SPARQL engines provide at least RDFS entailment regime, which allows for some (basic) semantic reasoning (subClassOf, property domains). This is the most likely semantic framework of choice if your use case involves semantic queries such as those involving sub-class groupings. SKOS is a semantic framework that layers on top of RDF and specifies semantics for a handful of properties that are useful for building taxonomies that do not seek to follow the rigorous semantics of the class-level modelling constructs such as subClassOf. We have no experience with SKOS reasoners, and do not know if there are any out there. This means, in effect, that this \"case\" (semantic framework) has the same exact considerations as the SPARQL/RDF(S) one above. OWL is a very powerful semantic framework that is based on formal logic. Ontologies represented in OWL offer support for complex expressions of knowledge, way beyond what RDFS and SKOS can do. OWL is the semantic framework of choice if the goal is to build and reason over an integrated (merged) ontology. An example use case where OWL is the appropriate framework is integration of species-specific anatomy ontologies under species-neutral ones, see for example Uberon . A basic rule of thumb is: unless you know positively that you have to reason over the merged graph, i.e. set of all ontologies you have mapped across, OWL is probably overkill and should be avoided. Using no semantic framework does not mean semantic mappings are useless! Many extremely useful applications exist for mappings which do not involve a semantic framework, such as those related to Labelled Property Graphs (for example neo4j ). Even if you just want to translate your data into a graph, it is useful to know the semantics of your mappings as they can inform your graph queries. Other semantic frameworks exist such as rule-based systems (e.g. Datalog, SWRL), but they are not used as widely as the above in our domain.","title":"Semantic frameworks for analysis and querying"},{"location":"mapping-predicates/#instance-vs-property-vs-concept-level-mapping","text":"To pick the correct mapping predicate, it is important to understand whether you are mapping concepts or instances: Concept-level: the entity being mapped constitutes a class or a concept. A concept can be thought of a collection or set of individuals. For example, \"Apple\" could refer to the class of all apples. Instance-level: the entity being mapped constitutes an individual or an instance. An instance is a single real-world entity, such as Barack Obama. Instances are members of classes/concepts. For example, Barack Obama belongs to the class of \"Person\", or \"Former Presidents\". Another example is an individual apple on a shelf in a supermarket (\"Gala Apple 199999\"), which is an instance of the \"Apple\" class. Note that notions like broad or narrow make no sense when mapping instances. We typically try to avoid the SKOS vocabulary for mapping instances, and make use of owl:sameAs instead. Note that owl:sameAs does have implications for reasoning, but it is also the preferred property when within the \"RDF/SPARQL\" semantic framework. If the mapping involves an instance and a class, you have hit a corner case of the SSSOM use case. This case can still be represented, but instance-concept relationships are not widely thought of as \"mappings\". In much the same way as concepts and instances, you can also map properties or \"relationships\": Property-level: the entities being mapped are both properties, like, for example, rdfs:label, skos:prefLabel, RO:0000050 (part of). Note that it does not make sense to try to map instances of concepts, or concepts, directly to properties. There are no relationships that would support such a mapping.","title":"Instance vs Property vs Concept-level mapping"},{"location":"mapping-predicates/#typical-use-cases","text":"Typical use cases for mappings include: Semantic data integration . This often involves linking data to ontologies or semantic layers in knowledge graphs. Data from one source (such as an EHR) is translated to another (such as OMOP, see above). To analyse the data semantically, the most valuable links are exact and broad as these allow you to directly query the ontology to retrieve instance data. close and narrow matches are less useful for such a use case, but maybe be consulted as the \"next best thing\" to an exact mapping. Often, a low level of noise is acceptable. Data translation . Similar to data integration, but we want to map as precisely as possible. Only exact matches really matter if we want to make sure that data annotated with one ontology means the exact same thing as data annotated with another. Noise in the mappings is often not acceptable. An example for this is if one source has annotated all its genes using the HUGO Gene Nomenclature Committee (HGNC) while another is using NCBI Gene Database identifiers. broad , narrow and even close matches are mostly meaningless - we need a 1:1 translation table with next to zero noise. Ontology and knowledge graph merging . Here, the key issue is that exact matches matches have as little noise as possible. Some merging approaches use probabilistic algorithms to weed out out potentially bad mappings (low levels of noise may be acceptable, see for example boomer ), but any naive merging approach, which is still prevalent in the knowledge graph world, will usually do the following: (1) Merge all exact matches into one \"node\" in the knowledge graph and (2) redirect all data against all these exact matches to that newly created node.","title":"Typical use cases"},{"location":"mapping-predicates/#the-3-step-process-for-selecting-an-appropriate-mapping-predicate","text":"The following 3-step process condenses the sections above into a simple to follow algorithm. Given two terms A and B: Target: semantic framework: Does your use case require OWL reasoning over the merged subject and object sources? If yes, use OWL vocabulary for properties If no, use RDF/SPARQL/SKOS vocabulary for properties Are A and B instances, properties or concepts? If A and B are instances, use only vocabulary suitable for instances If A and B are concepts, use only vocabulary suitable for concepts If A and B are properties, use only vocabulary suitable for properties If either one of A or B is an instance and the other is a concept, use only vocabulary suitable for describing instance-class relationships Is A roughly the same as B? If yes, does the difference between \"truly exact\" and your understanding of A and B constitute \"acceptable noise level\"? If yes: the mapping is exact . If no: the mapping is close . If no, determine if the precision as described above. You can now select the mapping predicate based on the table below: Mapping Predicate Precision Suitable for semantic framework Suitable entity types? Acceptable noise skos:exactMatch exact SKOS/RDF(S)/SPARQL/NO Concept low skos:relatedMatch related SKOS/RDF(S)/SPARQL/NO Concept low skos:broadMatch broad SKOS/RDF(S)/SPARQL/NO Concept low skos:narrowMatch narrow SKOS/RDF(S)/SPARQL/NO Concept low skos:closeMatch close SKOS/RDF(S)/SPARQL/NO Concept low owl:sameAs exact SKOS/RDF(S)/SPARQL/OWL/NO Instance low owl:equivalentClass exact OWL Concept no rdfs:subClassOf broad RDF(S)/SPARQL/OWL Concept no owl:equivalentProperty exact OWL Property no rdfs:subPropertyOf broad OWL Property no oboInOwl:hasDbXref exact SKOS/RDF(S)/SPARQL Any high rdfs:seeAlso close SKOS/RDF(S)/SPARQL Any high rdf:type exact/broad RDF(S)/SPARQL/OWL Instance-Concept no Note that \"acceptable noise\" refers to \"what is acceptable for the target semantic framework\". When using OWL, even a bit of noise can have huge consequences for reasoning, so it is not advisable to use the OWL vocabulary in cases where there is a lot of noise.","title":"The 3-step process for selecting an appropriate mapping predicate"},{"location":"mapping-predicates/#frequently-asked-questions","text":"None of the mapping predicates listed here seem to fit for my use case. Can I define my own? The SSSOM specification is currently open to specifying new mapping predicates. However, it is always advisable to open an issue to discuss such cases with the wider community - there may be some benefit in standardising predicates from the start!","title":"Frequently asked questions"},{"location":"mapping_cardinality/","text":"mapping_cardinality URI : sssom:mapping_cardinality Applicable to : Mapping Description A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. Properties Range : MappingCardinalityEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality domain_of: - mapping range: mapping_cardinality_enum","title":"mapping_cardinality"},{"location":"mapping_cardinality/#mapping_cardinality","text":"URI : sssom:mapping_cardinality Applicable to : Mapping Description A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set.","title":"mapping_cardinality"},{"location":"mapping_cardinality/#properties","text":"Range : MappingCardinalityEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_cardinality/#schema-developer-documentation","text":"LinkML source name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality domain_of: - mapping range: mapping_cardinality_enum","title":"Schema developer documentation"},{"location":"mapping_date/","text":"mapping_date URI : pav:authoredOn Applicable to : MappingSet , Mapping Description The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. Properties Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date domain_of: - mapping set - mapping range: date","title":"mapping_date"},{"location":"mapping_date/#mapping_date","text":"URI : pav:authoredOn Applicable to : MappingSet , Mapping Description The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file.","title":"mapping_date"},{"location":"mapping_date/#properties","text":"Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_date/#schema-developer-documentation","text":"LinkML source name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date domain_of: - mapping set - mapping range: date","title":"Schema developer documentation"},{"location":"mapping_justification/","text":"mapping_justification URI : sssom:mapping_justification Applicable to : Mapping Description A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Regex pattern : ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ Examples Example: semapv:LexicalMatching Example value : semapv:LexicalMatching Example: semapv:ManualMappingCuration Example value : semapv:ManualMappingCuration Schema developer documentation LinkML source name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration","title":"mapping_justification"},{"location":"mapping_justification/#mapping_justification","text":"URI : sssom:mapping_justification Applicable to : Mapping Description A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable.","title":"mapping_justification"},{"location":"mapping_justification/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Regex pattern : ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$","title":"Properties"},{"location":"mapping_justification/#examples","text":"Example: semapv:LexicalMatching Example value : semapv:LexicalMatching Example: semapv:ManualMappingCuration Example value : semapv:ManualMappingCuration","title":"Examples"},{"location":"mapping_justification/#schema-developer-documentation","text":"LinkML source name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration","title":"Schema developer documentation"},{"location":"mapping_provider/","text":"mapping_provider URI : sssom:mapping_provider Applicable to : MappingSet , Mapping 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. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider domain_of: - mapping set - mapping range: uri","title":"mapping_provider"},{"location":"mapping_provider/#mapping_provider","text":"URI : sssom:mapping_provider Applicable to : MappingSet , Mapping 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.","title":"mapping_provider"},{"location":"mapping_provider/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_provider/#schema-developer-documentation","text":"LinkML source name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider domain_of: - mapping set - mapping range: uri","title":"Schema developer documentation"},{"location":"mapping_registry_description/","text":"mapping_registry_description URI : sssom:mapping_registry_description Applicable to : MappingRegistry Description The description of a mapping registry. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description domain_of: - mapping registry range: string","title":"mapping_registry_description"},{"location":"mapping_registry_description/#mapping_registry_description","text":"URI : sssom:mapping_registry_description Applicable to : MappingRegistry Description The description of a mapping registry.","title":"mapping_registry_description"},{"location":"mapping_registry_description/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_registry_description/#schema-developer-documentation","text":"LinkML source name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description domain_of: - mapping registry range: string","title":"Schema developer documentation"},{"location":"mapping_registry_id/","text":"mapping_registry_id URI : sssom:mapping_registry_id Applicable to : MappingRegistry Description The unique identifier of a mapping registry. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Schema developer documentation LinkML source name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id domain_of: - mapping registry range: EntityReference required: true","title":"mapping_registry_id"},{"location":"mapping_registry_id/#mapping_registry_id","text":"URI : sssom:mapping_registry_id Applicable to : MappingRegistry Description The unique identifier of a mapping registry.","title":"mapping_registry_id"},{"location":"mapping_registry_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"mapping_registry_id/#schema-developer-documentation","text":"LinkML source name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id domain_of: - mapping registry range: EntityReference required: true","title":"Schema developer documentation"},{"location":"mapping_registry_title/","text":"mapping_registry_title URI : sssom:mapping_registry_title Applicable to : MappingRegistry Description The title of a mapping registry. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title domain_of: - mapping registry range: string","title":"mapping_registry_title"},{"location":"mapping_registry_title/#mapping_registry_title","text":"URI : sssom:mapping_registry_title Applicable to : MappingRegistry Description The title of a mapping registry.","title":"mapping_registry_title"},{"location":"mapping_registry_title/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_registry_title/#schema-developer-documentation","text":"LinkML source name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title domain_of: - mapping registry range: string","title":"Schema developer documentation"},{"location":"mapping_set_description/","text":"mapping_set_description URI : dcterms:description Applicable to : MappingSet Description A description of the mapping set. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. Example value : This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. Schema developer documentation LinkML source name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description domain_of: - mapping set range: string","title":"mapping_set_description"},{"location":"mapping_set_description/#mapping_set_description","text":"URI : dcterms:description Applicable to : MappingSet Description A description of the mapping set.","title":"mapping_set_description"},{"location":"mapping_set_description/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_description/#examples","text":"Example: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. Example value : This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/.","title":"Examples"},{"location":"mapping_set_description/#schema-developer-documentation","text":"LinkML source name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description domain_of: - mapping set range: string","title":"Schema developer documentation"},{"location":"mapping_set_group/","text":"mapping_set_group URI : sssom:mapping_set_group Applicable to : MappingSetReference Description Set by the owners of the mapping registry. A way to group . Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group domain_of: - mapping set reference range: string","title":"mapping_set_group"},{"location":"mapping_set_group/#mapping_set_group","text":"URI : sssom:mapping_set_group Applicable to : MappingSetReference Description Set by the owners of the mapping registry. A way to group .","title":"mapping_set_group"},{"location":"mapping_set_group/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_group/#schema-developer-documentation","text":"LinkML source name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group domain_of: - mapping set reference range: string","title":"Schema developer documentation"},{"location":"mapping_set_id/","text":"mapping_set_id URI : sssom:mapping_set_id Applicable to : MappingSet , MappingSetReference Description A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Examples Example: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Description : (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) Schema developer documentation LinkML source name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id domain_of: - mapping set - mapping set reference range: uri required: true","title":"mapping_set_id"},{"location":"mapping_set_id/#mapping_set_id","text":"URI : sssom:mapping_set_id Applicable to : MappingSet , MappingSetReference Description A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable.","title":"mapping_set_id"},{"location":"mapping_set_id/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"mapping_set_id/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Description : (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.)","title":"Examples"},{"location":"mapping_set_id/#schema-developer-documentation","text":"LinkML source name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id domain_of: - mapping set - mapping set reference range: uri required: true","title":"Schema developer documentation"},{"location":"mapping_set_references/","text":"mapping_set_references URI : sssom:mapping_set_references Applicable to : MappingRegistry Description A list of mapping set references. Properties Range : MappingSetReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Schema developer documentation LinkML source name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references domain_of: - mapping registry range: mapping set reference recommended: true","title":"mapping_set_references"},{"location":"mapping_set_references/#mapping_set_references","text":"URI : sssom:mapping_set_references Applicable to : MappingRegistry Description A list of mapping set references.","title":"mapping_set_references"},{"location":"mapping_set_references/#properties","text":"Range : MappingSetReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"mapping_set_references/#schema-developer-documentation","text":"LinkML source name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references domain_of: - mapping registry range: mapping set reference recommended: true","title":"Schema developer documentation"},{"location":"mapping_set_source/","text":"mapping_set_source URI : prov:wasDerivedFrom Applicable to : MappingSet Description A mapping set or set of mapping set that was used to derive the mapping set. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Description : A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. Schema developer documentation LinkML source name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source domain_of: - mapping set range: uri","title":"mapping_set_source"},{"location":"mapping_set_source/#mapping_set_source","text":"URI : prov:wasDerivedFrom Applicable to : MappingSet Description A mapping set or set of mapping set that was used to derive the mapping set.","title":"mapping_set_source"},{"location":"mapping_set_source/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_source/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Description : A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived.","title":"Examples"},{"location":"mapping_set_source/#schema-developer-documentation","text":"LinkML source name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source domain_of: - mapping set range: uri","title":"Schema developer documentation"},{"location":"mapping_set_title/","text":"mapping_set_title URI : dcterms:title Applicable to : MappingSet Description The display name of a mapping set. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: The Mondo-OMIM mappings by Monarch Initiative. Example value : The Mondo-OMIM mappings by Monarch Initiative. Schema developer documentation LinkML source name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title domain_of: - mapping set range: string","title":"mapping_set_title"},{"location":"mapping_set_title/#mapping_set_title","text":"URI : dcterms:title Applicable to : MappingSet Description The display name of a mapping set.","title":"mapping_set_title"},{"location":"mapping_set_title/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_title/#examples","text":"Example: The Mondo-OMIM mappings by Monarch Initiative. Example value : The Mondo-OMIM mappings by Monarch Initiative.","title":"Examples"},{"location":"mapping_set_title/#schema-developer-documentation","text":"LinkML source name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title domain_of: - mapping set range: string","title":"Schema developer documentation"},{"location":"mapping_set_version/","text":"mapping_set_version URI : owl:versionInfo Applicable to : MappingSet Description A version string for the mapping. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: 2020-01-01 Example value : 2020-01-01 Description : (A date-based version that indicates that the mapping was published on the 1st January in 2021.) Example: 1.2.1 Example value : 1.2.1 Description : (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) Schema developer documentation LinkML source name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version domain_of: - mapping set range: string","title":"mapping_set_version"},{"location":"mapping_set_version/#mapping_set_version","text":"URI : owl:versionInfo Applicable to : MappingSet Description A version string for the mapping.","title":"mapping_set_version"},{"location":"mapping_set_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_version/#examples","text":"Example: 2020-01-01 Example value : 2020-01-01 Description : (A date-based version that indicates that the mapping was published on the 1st January in 2021.) Example: 1.2.1 Example value : 1.2.1 Description : (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).)","title":"Examples"},{"location":"mapping_set_version/#schema-developer-documentation","text":"LinkML source name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version domain_of: - mapping set range: string","title":"Schema developer documentation"},{"location":"mapping_source/","text":"mapping_source URI : sssom:mapping_source Applicable to : Mapping Description The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv Example value : MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv Schema developer documentation LinkML source name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source domain_of: - mapping range: EntityReference","title":"mapping_source"},{"location":"mapping_source/#mapping_source","text":"URI : sssom:mapping_source Applicable to : Mapping Description The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another.","title":"mapping_source"},{"location":"mapping_source/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_source/#examples","text":"Example: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv Example value : MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv","title":"Examples"},{"location":"mapping_source/#schema-developer-documentation","text":"LinkML source name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"mapping_tool/","text":"mapping_tool URI : sssom:mapping_tool Applicable to : MappingSet , Mapping 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. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: https://github.com/AgreementMakerLight/AML-Project Example value : https://github.com/AgreementMakerLight/AML-Project Schema developer documentation LinkML source name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool domain_of: - mapping set - mapping range: string","title":"mapping_tool"},{"location":"mapping_tool/#mapping_tool","text":"URI : sssom:mapping_tool Applicable to : MappingSet , Mapping 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.","title":"mapping_tool"},{"location":"mapping_tool/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_tool/#examples","text":"Example: https://github.com/AgreementMakerLight/AML-Project Example value : https://github.com/AgreementMakerLight/AML-Project","title":"Examples"},{"location":"mapping_tool/#schema-developer-documentation","text":"LinkML source name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"mapping_tool_version/","text":"mapping_tool_version URI : sssom:mapping_tool_version Applicable to : MappingSet , Mapping Description Version string that denotes the version of the mapping tool used. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: v3.2 Example value : v3.2 Schema developer documentation LinkML source name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version domain_of: - mapping set - mapping range: string","title":"mapping_tool_version"},{"location":"mapping_tool_version/#mapping_tool_version","text":"URI : sssom:mapping_tool_version Applicable to : MappingSet , Mapping Description Version string that denotes the version of the mapping tool used.","title":"mapping_tool_version"},{"location":"mapping_tool_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_tool_version/#examples","text":"Example: v3.2 Example value : v3.2","title":"Examples"},{"location":"mapping_tool_version/#schema-developer-documentation","text":"LinkML source name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"mappings/","text":"mappings URI : sssom:mappings Applicable to : MappingSet Description Contains a list of mapping objects Properties Range : Mapping . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Schema developer documentation LinkML source name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings domain_of: - mapping set range: mapping recommended: true inlined: true inlined_as_list: true","title":"mappings"},{"location":"mappings/#mappings","text":"URI : sssom:mappings Applicable to : MappingSet Description Contains a list of mapping objects","title":"mappings"},{"location":"mappings/#properties","text":"Range : Mapping . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"mappings/#schema-developer-documentation","text":"LinkML source name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings domain_of: - mapping set range: mapping recommended: true inlined: true inlined_as_list: true","title":"Schema developer documentation"},{"location":"match_string/","text":"match_string URI : sssom:match_string Applicable to : Mapping 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. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string domain_of: - mapping range: string","title":"match_string"},{"location":"match_string/#match_string","text":"URI : sssom:match_string Applicable to : Mapping 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.","title":"match_string"},{"location":"match_string/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"match_string/#schema-developer-documentation","text":"LinkML source name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"matching-tool-implementation-guide/","text":"Matching Tools: Implementation Guide for SSSOM Summary *: The goal of this document is to advice matching tool developers how to implement SSSOM-style matching justifications as part of their output. For example, if a mapping was determined (or is supported by) a lexical matching process, we can document that, alongside metadata that further describes the details about that process. As of 17.07.2023, this guide is a work in progress . If you are a tool developer interested to implement these recommendations, feel free to reach out on https://github.com/mapping-commons/sssom/issues for support and feel empowered to help us improve this guide! Basics A (semantic) mapping in the sense of this guide is a tuple that describes the correspondence of a subject s to an object o via a mapping predicate p . |j| is a non-empty set of mapping justifications that provide evidence towards the validity of the correspondence. As stated above, but re-stated for clarity: every mapping can be associated with 1 or more justifications . Carefully consider if a piece of metadata should be applied on mapping or mapping set level. As a rule of thumb, if a piece of metadata applies to absolutely all mappings in the target set, then consider adding it as metadata to the mapping set, to safe space. Justifications in the sense of this guide comprise a category (documented in the mapping_justification field), which is represented as a specific matching activity such as \"lexical matching\", \"logical matching\", \"manual mapping curation\", etc, a confidence value that represents the amount of confidence the justification contributes to the perceived truthfulness of a mapping, and additional metadata that provide additional provenance. The basic vocabulary for the justification category is the Semantic Mapping Vocabulary . Feel free to use the issue tracker to request new categories to be added. There is a fast turnaround. The goal of providing mapping justifications is to enable cross-purpose re-use of mappings, sharing of mappings and mapping reconciliation . Mapping justifications make individual mapping decisions transparent. Adding justifications is always valueable, even if not all detailed metadata is provided . Many justifications are combinations of other justifications. For example, we may decide that a match is justified if (a) there is a lexical match and (b) the surrounding graph-structure is isomorphic or (c) the entities involved share the same properties. In this case, we should add individual justifications for each individual justification. The confidence value expresses how confident the specific justification makes you feel about the truthfulness of the mapping . If a joint probability is calculated from multiple justifications, add a separate justification for that, e.g. semapv:CompositeMatching . In the SSSOM TSV formats, every row corresponds to a justification, not a mapping. So the same mapping with three justifications will result in three rows in the SSSOM TSV file. Background Before reading on, please skim through the technical documentation of SSSOM to get a sense of what kind of properties exist, and read our primer on mapping justifications first, which explains how to design a number of frequently used mapping justifications. As the collection of justifications can impact the performance of he matching process (at least for huge matching tasks), it is adviseable that the process can be switched off by the CLI. For most matching processes, we first construct a candidate mapping set from a combination of sources, for example: Mappings provided by user as input to the matching process Lexical exact matching Lexical fuzzy matching (traditional and word embeddings) As a second step, we use often complex combinations of techniques to refine and expand the candidate mapping set: Structural matching (graph-based approaches etc) Semantic matching Logical matching (for example by deconstructing complex terms into composites and then using logical reasoning). Similarity based matching, including graph-embedding similarity (machine learning), old-school semantic similarity measures like Resnik or even Jaccard (over some part of the ontology/schema structure) As a rule of thumb, the more complex the rules by which a match is determined, the harder it is to provide a useful justification. To put it slighly differently: the more complex a justification, the less useful it is if the goal is to make matching decisions transparent for human users . A good example of this are decisions based on embedding (e.g. graph, node) similarity: while it is often useful to understand that a match has been determined by a threshold (e.g. >=0.9) of cosine similarity of a node embedding, it is less important to communicate exactly how the embedding space was constructed. This insight guides our implementation in two ways: We start by focusing on the \"easy\" cases with clear mapping justifications (like the lexical ones used to construct the candidate mapping set ), and incrementally work our way up towards harder ones. We have a default justification for \"complex\" cases which we have not covered yet. This is necessary not only because it may be hard to construct complex justifications from within a matching tool, but also because SSSOM simply does not have a way to express the justification yet (in this case, request clarification on the SSSOM issue tracker ). Basic thoughts about architecture The MELT framework offers a well designed architecture for matchers. While the interested readers is referred to the MELT documentation for details, we want to use it here as an example on how a tool implementor, from a higher level perspective, could think about collecting SSSOM metadata as part of the matchig process. Conceptually, a matching process (from the perspective of the MELT developers) has four inputs: Source ontology: O_s Target ontology: O_t (potentially empty) input alignment: Map_in Configuration (for the matching tool): Cong and return one outut: Output alignment: Map_out Note that any given implementation can take other inputs and produce other outputs, but for the sake of this guide we assume this basic architecture. Conceptually, four elements are important to matching process: The alignment The individual correspondence part of the alignment Evidence gathered for towards the truthfullness of the alignment A matcher that implements the \"matching process\" described above in terms of intput/output In the MELT reference implementation, for example, there is an Alignment class. During the matching process, the alignment is passed through a series of matchers to be augmented. For example, a bounded path matcher . In essence, the matching process is a series of matchings strung together, passing where the alignment produced by the last process is passed through to the next, then augmented, then passed on (potentially for other processes such as filtering, which we consider matching processes as well). During an individual matching process like bounded path matcher , correspondences are added and removed from the alignment. The key for a meaningful SSSOM integration is this: when a new correspondence (mapping) is added to the alignment (or \"mapping set\" in SSSOM speach) you add a piece of evidence alongside the correspondence . This is usually done by extending the correspondence data model with a new field: justification, evidence, or similar. A piece of evidence includes three major things: A justification. Usually, any matcher type will correspond to exactly one justification in the SEMAPV vocabulary . A confidence level. This reflects how much confidence the process has induced in the mapping all by itself. Any other metadata important for that specific justifications, such as subject_match_field for a lexical matching process. Your matching process should collect this metadata, and, by the end of the process, the whole alignment, including correspondences and justifications for each correspondence should be exported. Important note : In the final TSV file, every justification will have its own row! So a correspondence (mapping) will appear on multiple rows! Step-by-step guide for implementation This step by step guide is roughly according to our own thinking of what should be done first, second, and so on. Add an option to your matching tool to output legal SSSOM TSV (recommended format now), for example --export-sssom or similar. OPTIONAL: Add an option to your matching tool to accept legal SSSOM TSV as user input as an alternative to Alignment API (recommended format now). Always provide basic provenance in the SSSOM output: mapping_tool : The canonical reference to your tool, ideally a persistent identifier. mapping_tool_version : The version of the tool used to compute the mapping set. mapping_set_id : A (often randomly generated) mapping set identifier. mapping_date : The date the mapping was generated. OPTIONAL: if available, add subject_source , object_source and subject_source_version , object_source_version . Document some basic entity metadata, this can help reading the mapping set: subject_label , object_label : If available, add the label of the subject, and object id. Add basic justification support Track lexical matching-based mapping decisions. A good chunk of candidate mappings will be computed by some form of lexical matching. See here for details. If something more complex than a simple lexical matching has happened, try to find an appropriate one in SEMAPV . If none exists, or its too much work to create one, use as a fall-through: semapv:CompositeMatching in the case that the match was established through a combination of approaches, but you don't want to provide justifications for each individual one. semapv:UnspecifiedMatching in the case you dont know why the match happened. All justifications should come with a confidence value that expresses how confident the specific justification makes you feel about the truthfulness of the mapping . Track if a mapping was provided (as input) by a user. Ideally, if the input to the matching process is SSSOM, simply adopt all of the mapping justifications provided by the user. If the provided mapping has no metadata, add a suitable mapping_provider value (e.g. MYTOOL:USER , to indicate that the mapping was provided by the user). Add advanced justification support. Add all metadata explained in mapping justifications . Where suitable fields or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively. There is likely a lot of interesting details to be added, so dont be shy to request/suggest! If you reject a user provided mapping, it makes sense to include that in a negative mapping set in SSSOM. You could provide predicate_modifier = NOT to ensure the file is not interpreted wrongly. HIGHLY OPTIONAL: In some few cases, it may be interesting to inform the user that not all mappings are 1:1. In this case, it could be advisable to use the mapping_cardinality field. OPTIONAL: If relevant you can add the subject_type and object_type fields to your output, if known. This can be interesting in some cases with mixed content (being able to separate owl:Class related mappings from those about owl:ObjectProperty ). You can always use the comment or other * fields to deposit additional useful metadata that can later be turned into structured content. Examples MGI Mouse-Human mappings SSSOM examples","title":"Matching tool implementation guide"},{"location":"matching-tool-implementation-guide/#matching-tools-implementation-guide-for-sssom","text":"Summary *: The goal of this document is to advice matching tool developers how to implement SSSOM-style matching justifications as part of their output. For example, if a mapping was determined (or is supported by) a lexical matching process, we can document that, alongside metadata that further describes the details about that process. As of 17.07.2023, this guide is a work in progress . If you are a tool developer interested to implement these recommendations, feel free to reach out on https://github.com/mapping-commons/sssom/issues for support and feel empowered to help us improve this guide!","title":"Matching Tools: Implementation Guide for SSSOM"},{"location":"matching-tool-implementation-guide/#basics","text":"A (semantic) mapping in the sense of this guide is a tuple that describes the correspondence of a subject s to an object o via a mapping predicate p . |j| is a non-empty set of mapping justifications that provide evidence towards the validity of the correspondence. As stated above, but re-stated for clarity: every mapping can be associated with 1 or more justifications . Carefully consider if a piece of metadata should be applied on mapping or mapping set level. As a rule of thumb, if a piece of metadata applies to absolutely all mappings in the target set, then consider adding it as metadata to the mapping set, to safe space. Justifications in the sense of this guide comprise a category (documented in the mapping_justification field), which is represented as a specific matching activity such as \"lexical matching\", \"logical matching\", \"manual mapping curation\", etc, a confidence value that represents the amount of confidence the justification contributes to the perceived truthfulness of a mapping, and additional metadata that provide additional provenance. The basic vocabulary for the justification category is the Semantic Mapping Vocabulary . Feel free to use the issue tracker to request new categories to be added. There is a fast turnaround. The goal of providing mapping justifications is to enable cross-purpose re-use of mappings, sharing of mappings and mapping reconciliation . Mapping justifications make individual mapping decisions transparent. Adding justifications is always valueable, even if not all detailed metadata is provided . Many justifications are combinations of other justifications. For example, we may decide that a match is justified if (a) there is a lexical match and (b) the surrounding graph-structure is isomorphic or (c) the entities involved share the same properties. In this case, we should add individual justifications for each individual justification. The confidence value expresses how confident the specific justification makes you feel about the truthfulness of the mapping . If a joint probability is calculated from multiple justifications, add a separate justification for that, e.g. semapv:CompositeMatching . In the SSSOM TSV formats, every row corresponds to a justification, not a mapping. So the same mapping with three justifications will result in three rows in the SSSOM TSV file.","title":"Basics"},{"location":"matching-tool-implementation-guide/#background","text":"Before reading on, please skim through the technical documentation of SSSOM to get a sense of what kind of properties exist, and read our primer on mapping justifications first, which explains how to design a number of frequently used mapping justifications. As the collection of justifications can impact the performance of he matching process (at least for huge matching tasks), it is adviseable that the process can be switched off by the CLI. For most matching processes, we first construct a candidate mapping set from a combination of sources, for example: Mappings provided by user as input to the matching process Lexical exact matching Lexical fuzzy matching (traditional and word embeddings) As a second step, we use often complex combinations of techniques to refine and expand the candidate mapping set: Structural matching (graph-based approaches etc) Semantic matching Logical matching (for example by deconstructing complex terms into composites and then using logical reasoning). Similarity based matching, including graph-embedding similarity (machine learning), old-school semantic similarity measures like Resnik or even Jaccard (over some part of the ontology/schema structure) As a rule of thumb, the more complex the rules by which a match is determined, the harder it is to provide a useful justification. To put it slighly differently: the more complex a justification, the less useful it is if the goal is to make matching decisions transparent for human users . A good example of this are decisions based on embedding (e.g. graph, node) similarity: while it is often useful to understand that a match has been determined by a threshold (e.g. >=0.9) of cosine similarity of a node embedding, it is less important to communicate exactly how the embedding space was constructed. This insight guides our implementation in two ways: We start by focusing on the \"easy\" cases with clear mapping justifications (like the lexical ones used to construct the candidate mapping set ), and incrementally work our way up towards harder ones. We have a default justification for \"complex\" cases which we have not covered yet. This is necessary not only because it may be hard to construct complex justifications from within a matching tool, but also because SSSOM simply does not have a way to express the justification yet (in this case, request clarification on the SSSOM issue tracker ).","title":"Background"},{"location":"matching-tool-implementation-guide/#basic-thoughts-about-architecture","text":"The MELT framework offers a well designed architecture for matchers. While the interested readers is referred to the MELT documentation for details, we want to use it here as an example on how a tool implementor, from a higher level perspective, could think about collecting SSSOM metadata as part of the matchig process. Conceptually, a matching process (from the perspective of the MELT developers) has four inputs: Source ontology: O_s Target ontology: O_t (potentially empty) input alignment: Map_in Configuration (for the matching tool): Cong and return one outut: Output alignment: Map_out Note that any given implementation can take other inputs and produce other outputs, but for the sake of this guide we assume this basic architecture. Conceptually, four elements are important to matching process: The alignment The individual correspondence part of the alignment Evidence gathered for towards the truthfullness of the alignment A matcher that implements the \"matching process\" described above in terms of intput/output In the MELT reference implementation, for example, there is an Alignment class. During the matching process, the alignment is passed through a series of matchers to be augmented. For example, a bounded path matcher . In essence, the matching process is a series of matchings strung together, passing where the alignment produced by the last process is passed through to the next, then augmented, then passed on (potentially for other processes such as filtering, which we consider matching processes as well). During an individual matching process like bounded path matcher , correspondences are added and removed from the alignment. The key for a meaningful SSSOM integration is this: when a new correspondence (mapping) is added to the alignment (or \"mapping set\" in SSSOM speach) you add a piece of evidence alongside the correspondence . This is usually done by extending the correspondence data model with a new field: justification, evidence, or similar. A piece of evidence includes three major things: A justification. Usually, any matcher type will correspond to exactly one justification in the SEMAPV vocabulary . A confidence level. This reflects how much confidence the process has induced in the mapping all by itself. Any other metadata important for that specific justifications, such as subject_match_field for a lexical matching process. Your matching process should collect this metadata, and, by the end of the process, the whole alignment, including correspondences and justifications for each correspondence should be exported. Important note : In the final TSV file, every justification will have its own row! So a correspondence (mapping) will appear on multiple rows!","title":"Basic thoughts about architecture"},{"location":"matching-tool-implementation-guide/#step-by-step-guide-for-implementation","text":"This step by step guide is roughly according to our own thinking of what should be done first, second, and so on. Add an option to your matching tool to output legal SSSOM TSV (recommended format now), for example --export-sssom or similar. OPTIONAL: Add an option to your matching tool to accept legal SSSOM TSV as user input as an alternative to Alignment API (recommended format now). Always provide basic provenance in the SSSOM output: mapping_tool : The canonical reference to your tool, ideally a persistent identifier. mapping_tool_version : The version of the tool used to compute the mapping set. mapping_set_id : A (often randomly generated) mapping set identifier. mapping_date : The date the mapping was generated. OPTIONAL: if available, add subject_source , object_source and subject_source_version , object_source_version . Document some basic entity metadata, this can help reading the mapping set: subject_label , object_label : If available, add the label of the subject, and object id. Add basic justification support Track lexical matching-based mapping decisions. A good chunk of candidate mappings will be computed by some form of lexical matching. See here for details. If something more complex than a simple lexical matching has happened, try to find an appropriate one in SEMAPV . If none exists, or its too much work to create one, use as a fall-through: semapv:CompositeMatching in the case that the match was established through a combination of approaches, but you don't want to provide justifications for each individual one. semapv:UnspecifiedMatching in the case you dont know why the match happened. All justifications should come with a confidence value that expresses how confident the specific justification makes you feel about the truthfulness of the mapping . Track if a mapping was provided (as input) by a user. Ideally, if the input to the matching process is SSSOM, simply adopt all of the mapping justifications provided by the user. If the provided mapping has no metadata, add a suitable mapping_provider value (e.g. MYTOOL:USER , to indicate that the mapping was provided by the user). Add advanced justification support. Add all metadata explained in mapping justifications . Where suitable fields or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively. There is likely a lot of interesting details to be added, so dont be shy to request/suggest! If you reject a user provided mapping, it makes sense to include that in a negative mapping set in SSSOM. You could provide predicate_modifier = NOT to ensure the file is not interpreted wrongly. HIGHLY OPTIONAL: In some few cases, it may be interesting to inform the user that not all mappings are 1:1. In this case, it could be advisable to use the mapping_cardinality field. OPTIONAL: If relevant you can add the subject_type and object_type fields to your output, if known. This can be interesting in some cases with mixed content (being able to separate owl:Class related mappings from those about owl:ObjectProperty ). You can always use the comment or other * fields to deposit additional useful metadata that can later be turned into structured content.","title":"Step-by-step guide for implementation"},{"location":"matching-tool-implementation-guide/#examples","text":"MGI Mouse-Human mappings SSSOM examples","title":"Examples"},{"location":"mirror_from/","text":"mirror_from URI : sssom:mirror_from Applicable to : MappingSetReference Description A URL location from which to obtain a resource, such as a mapping set. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from domain_of: - mapping set reference range: uri","title":"mirror_from"},{"location":"mirror_from/#mirror_from","text":"URI : sssom:mirror_from Applicable to : MappingSetReference Description A URL location from which to obtain a resource, such as a mapping set.","title":"mirror_from"},{"location":"mirror_from/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mirror_from/#schema-developer-documentation","text":"LinkML source name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from domain_of: - mapping set reference range: uri","title":"Schema developer documentation"},{"location":"object_category/","text":"object_category URI : sssom:object_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256 Schema developer documentation LinkML source name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category domain_of: - mapping range: string","title":"object_category"},{"location":"object_category/#object_category","text":"URI : sssom:object_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases.","title":"object_category"},{"location":"object_category/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_category/#examples","text":"Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.)","title":"Examples"},{"location":"object_category/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256","title":"See Also"},{"location":"object_category/#schema-developer-documentation","text":"LinkML source name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"object_id/","text":"object_id URI : owl:annotatedTarget Applicable to : Mapping Description The ID of the object of the mapping. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' Schema developer documentation LinkML source name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id domain_of: - mapping range: EntityReference","title":"object_id"},{"location":"object_id/#object_id","text":"URI : owl:annotatedTarget Applicable to : Mapping Description The ID of the object of the mapping.","title":"object_id"},{"location":"object_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_id/#examples","text":"Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears'","title":"Examples"},{"location":"object_id/#schema-developer-documentation","text":"LinkML source name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_label/","text":"object_label URI : sssom:object_label Applicable to : Mapping Description The label of object of the mapping Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Examples Example: Thickened ears Example value : Thickened ears Schema developer documentation LinkML source name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label domain_of: - mapping range: string recommended: true","title":"object_label"},{"location":"object_label/#object_label","text":"URI : sssom:object_label Applicable to : Mapping Description The label of object of the mapping","title":"object_label"},{"location":"object_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"object_label/#examples","text":"Example: Thickened ears Example value : Thickened ears","title":"Examples"},{"location":"object_label/#schema-developer-documentation","text":"LinkML source name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label domain_of: - mapping range: string recommended: true","title":"Schema developer documentation"},{"location":"object_match_field/","text":"object_match_field URI : sssom:object_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the object) that was used for the match. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field domain_of: - mapping set - mapping range: EntityReference","title":"object_match_field"},{"location":"object_match_field/#object_match_field","text":"URI : sssom:object_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the object) that was used for the match.","title":"object_match_field"},{"location":"object_match_field/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_match_field/#schema-developer-documentation","text":"LinkML source name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_preprocessing/","text":"object_preprocessing URI : sssom:object_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval Schema developer documentation LinkML source name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"object_preprocessing"},{"location":"object_preprocessing/#object_preprocessing","text":"URI : sssom:object_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.","title":"object_preprocessing"},{"location":"object_preprocessing/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_preprocessing/#examples","text":"Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval","title":"Examples"},{"location":"object_preprocessing/#schema-developer-documentation","text":"LinkML source name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_source/","text":"object_source URI : sssom:object_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the object. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource. Schema developer documentation LinkML source name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source domain_of: - mapping set - mapping range: EntityReference","title":"object_source"},{"location":"object_source/#object_source","text":"URI : sssom:object_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the object.","title":"object_source"},{"location":"object_source/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_source/#examples","text":"Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource.","title":"Examples"},{"location":"object_source/#schema-developer-documentation","text":"LinkML source name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_source_version/","text":"object_source_version URI : sssom:object_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the object term. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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') Schema developer documentation LinkML source name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version domain_of: - mapping set - mapping range: string","title":"object_source_version"},{"location":"object_source_version/#object_source_version","text":"URI : sssom:object_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the object term.","title":"object_source_version"},{"location":"object_source_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_source_version/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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')","title":"Examples"},{"location":"object_source_version/#schema-developer-documentation","text":"LinkML source name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"object_type/","text":"object_type URI : sssom:object_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped. Properties Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: owl:Class Example value : owl:Class Schema developer documentation LinkML source name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type domain_of: - mapping set - mapping range: entity_type_enum","title":"object_type"},{"location":"object_type/#object_type","text":"URI : sssom:object_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped.","title":"object_type"},{"location":"object_type/#properties","text":"Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_type/#examples","text":"Example: owl:Class Example value : owl:Class","title":"Examples"},{"location":"object_type/#schema-developer-documentation","text":"LinkML source name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type domain_of: - mapping set - mapping range: entity_type_enum","title":"Schema developer documentation"},{"location":"other/","text":"other URI : sssom:other Applicable to : MappingSet , Mapping Description Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other domain_of: - mapping set - mapping range: string","title":"other"},{"location":"other/#other","text":"URI : sssom:other Applicable to : MappingSet , Mapping Description Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data.","title":"other"},{"location":"other/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"other/#schema-developer-documentation","text":"LinkML source name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"predicate_id/","text":"predicate_id URI : owl:annotatedProperty Applicable to : Mapping Description The ID of the predicate or relation that relates the subject and object of this match. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Examples Example: owl:sameAs Example value : owl:sameAs Description : The subject and the object are instances (owl individuals), and the two instances are the same. Example: owl:equivalentClass Example value : owl:equivalentClass Description : The subject and the object are classes (owl class), and the two classes are the same. Example: owl:equivalentProperty Example value : owl:equivalentProperty Description : The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. Example: rdfs:subClassOf Example value : rdfs:subClassOf Description : The subject and the object are classes (owl class), and the subject is a subclass of the object. Example: rdfs:subPropertyOf Example value : rdfs:subPropertyOf Description : The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. Example: skos:relatedMatch Example value : skos:relatedMatch Description : The subject and the object are associated in some unspecified way. Example: skos:closeMatch Example value : skos:closeMatch Description : The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. Example: skos:exactMatch Example value : skos:exactMatch Description : The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. Example: skos:narrowMatch Example value : skos:narrowMatch Description : From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple. Example: skos:broadMatch Example value : skos:broadMatch Description : From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple. Example: oboInOwl:hasDbXref Example value : oboInOwl:hasDbXref Description : Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) Example: rdfs:seeAlso Example value : rdfs:seeAlso Description : The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. Schema developer documentation LinkML source name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id domain_of: - mapping range: EntityReference required: true","title":"predicate_id"},{"location":"predicate_id/#predicate_id","text":"URI : owl:annotatedProperty Applicable to : Mapping Description The ID of the predicate or relation that relates the subject and object of this match.","title":"predicate_id"},{"location":"predicate_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"predicate_id/#examples","text":"Example: owl:sameAs Example value : owl:sameAs Description : The subject and the object are instances (owl individuals), and the two instances are the same. Example: owl:equivalentClass Example value : owl:equivalentClass Description : The subject and the object are classes (owl class), and the two classes are the same. Example: owl:equivalentProperty Example value : owl:equivalentProperty Description : The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. Example: rdfs:subClassOf Example value : rdfs:subClassOf Description : The subject and the object are classes (owl class), and the subject is a subclass of the object. Example: rdfs:subPropertyOf Example value : rdfs:subPropertyOf Description : The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. Example: skos:relatedMatch Example value : skos:relatedMatch Description : The subject and the object are associated in some unspecified way. Example: skos:closeMatch Example value : skos:closeMatch Description : The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. Example: skos:exactMatch Example value : skos:exactMatch Description : The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. Example: skos:narrowMatch Example value : skos:narrowMatch Description : From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple. Example: skos:broadMatch Example value : skos:broadMatch Description : From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple. Example: oboInOwl:hasDbXref Example value : oboInOwl:hasDbXref Description : Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) Example: rdfs:seeAlso Example value : rdfs:seeAlso Description : The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information.","title":"Examples"},{"location":"predicate_id/#schema-developer-documentation","text":"LinkML source name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id domain_of: - mapping range: EntityReference required: true","title":"Schema developer documentation"},{"location":"predicate_label/","text":"predicate_label URI : sssom:predicate_label Applicable to : Mapping Description The label of the predicate/relation of the mapping Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: has cross-reference Example value : has cross-reference Description : The label of the oboInOwl:hasDbXref property to represent cross-references. Schema developer documentation LinkML source name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label domain_of: - mapping range: string","title":"predicate_label"},{"location":"predicate_label/#predicate_label","text":"URI : sssom:predicate_label Applicable to : Mapping Description The label of the predicate/relation of the mapping","title":"predicate_label"},{"location":"predicate_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"predicate_label/#examples","text":"Example: has cross-reference Example value : has cross-reference Description : The label of the oboInOwl:hasDbXref property to represent cross-references.","title":"Examples"},{"location":"predicate_label/#schema-developer-documentation","text":"LinkML source name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"predicate_modifier/","text":"predicate_modifier URI : sssom:predicate_modifier Applicable to : Mapping Description A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion Properties Range : PredicateModifierEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: Not Example value : Not Description : Negates the predicate, see documentation of predicate_modifier_enum See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/107 Schema developer documentation LinkML source name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier domain_of: - mapping range: predicate_modifier_enum","title":"predicate_modifier"},{"location":"predicate_modifier/#predicate_modifier","text":"URI : sssom:predicate_modifier Applicable to : Mapping Description A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion","title":"predicate_modifier"},{"location":"predicate_modifier/#properties","text":"Range : PredicateModifierEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"predicate_modifier/#examples","text":"Example: Not Example value : Not Description : Negates the predicate, see documentation of predicate_modifier_enum","title":"Examples"},{"location":"predicate_modifier/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/107","title":"See Also"},{"location":"predicate_modifier/#schema-developer-documentation","text":"LinkML source name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier domain_of: - mapping range: predicate_modifier_enum","title":"Schema developer documentation"},{"location":"predicate_type/","text":"predicate_type URI : sssom:predicate_type Applicable to : Description The type of entity that is being mapped. Properties Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: owl:AnnotationProperty Example value : owl:AnnotationProperty Example: owl:ObjectProperty Example value : owl:ObjectProperty Schema developer documentation LinkML source name: predicate_type description: The type of entity that is being mapped. examples: - value: owl:AnnotationProperty - value: owl:ObjectProperty from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_type range: entity_type_enum","title":"predicate_type"},{"location":"predicate_type/#predicate_type","text":"URI : sssom:predicate_type Applicable to : Description The type of entity that is being mapped.","title":"predicate_type"},{"location":"predicate_type/#properties","text":"Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"predicate_type/#examples","text":"Example: owl:AnnotationProperty Example value : owl:AnnotationProperty Example: owl:ObjectProperty Example value : owl:ObjectProperty","title":"Examples"},{"location":"predicate_type/#schema-developer-documentation","text":"LinkML source name: predicate_type description: The type of entity that is being mapped. examples: - value: owl:AnnotationProperty - value: owl:ObjectProperty from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_type range: entity_type_enum","title":"Schema developer documentation"},{"location":"prefix_name/","text":"prefix_name URI : sssom:prefix_name Applicable to : Prefix Properties Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Schema developer documentation LinkML source name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name domain_of: - prefix range: ncname required: true","title":"prefix_name"},{"location":"prefix_name/#prefix_name","text":"URI : sssom:prefix_name Applicable to : Prefix","title":"prefix_name"},{"location":"prefix_name/#properties","text":"Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"prefix_name/#schema-developer-documentation","text":"LinkML source name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name domain_of: - prefix range: ncname required: true","title":"Schema developer documentation"},{"location":"prefix_url/","text":"prefix_url URI : sssom:prefix_url Applicable to : Prefix Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url domain_of: - prefix range: uri","title":"prefix_url"},{"location":"prefix_url/#prefix_url","text":"URI : sssom:prefix_url Applicable to : Prefix","title":"prefix_url"},{"location":"prefix_url/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"prefix_url/#schema-developer-documentation","text":"LinkML source name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url domain_of: - prefix range: uri","title":"Schema developer documentation"},{"location":"presentations/","text":"Presentations A Simple Standard for Ontological Mappings 2024: The case for prioritising 5-Star mappings (Every Cure, internal seminar) August 1 st , 2024, virtual Talk to Every Cure technical team (Knowledge Sharing Series) to make the case for prioritising the collection of mapping provenance. Slides (Re-)bridging the anatomy ontologies with SSSOM July 19 th , 2024 15 th International Conference on Biomedical Ontologies (ICBO) Slides , paper , sources Workshop on Prefixes, CURIEs, and IRIs 2023 November 27 th , 2023, virtual Lightning talk on the deeper integration of the Bioregistry and curies toolkit with the SSSOM Python package Workshop info OM2023: A Simple Standard for Sharing Ontological Mappings 2023: Updates on data model, collaborations and tooling 7th November 2023 http://om2023.ontologymatching.org/ Slides SSSOM Updates 2023 (FAIR Impact and FAIRCORE4EOSC Life Working Session) 6th October 2023 Slides OHDSI 2023 Symposium: Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI) 3rd July 2023, https://www.ohdsi-europe.org/index.php/symposium-2023 Seminar info Elixir Data Interoperability Meeting: Introduction to SSSOM 6th March 2023 This talk is a variant of the CCB Seminar Series talk below Slides Ontology Summit 2023: Open, FAIR and standardised mappings for ontologies, controlled vocabularies and database entities 22 February 2023, virtual This talk is a variant of the CCB Seminar Series talk below Seminar info Video recording (scroll to minute 46) Slides CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings December 2022 talk, virtual Seminar info Video recording Slides OHDSI Symposium 2022: There are no \"good\" mappings. October 2022, hybrid symposium (https://www.ohdsi.org/ohdsi2022-workgroup-activities/) Seminar info Slides OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook 23rd October 2022, Workshop for Ontology Matching, ISWC 2022, virtual Seminar info Slides OBO Academy 2022: Introduction to manual mapping curation 17th May 2022, Seminar, Monarch Seminar Series Video recording Seminar info Slides Workshop on Prefixes, CURIEs, and IRIs 2021 Fall 2021, Use Case Talk on the need for prefix maps for SSSOM Video Workshop info Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM) 28th April 2022, Team Meeting Seminar info Slides WSBO-2021: Workshop on Synergizing Biomedical Ontologies 14th July 2021, Workshop Workshop info Slides MC-2021: 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings Workshop info Video recording Slides: Introduction Slides: OMOP2OBO .","title":"Presentations"},{"location":"presentations/#presentations","text":"","title":"Presentations"},{"location":"presentations/#a-simple-standard-for-ontological-mappings-2024-the-case-for-prioritising-5-star-mappings-every-cure-internal-seminar","text":"August 1 st , 2024, virtual Talk to Every Cure technical team (Knowledge Sharing Series) to make the case for prioritising the collection of mapping provenance. Slides","title":"A Simple Standard for Ontological Mappings 2024: The case for prioritising 5-Star mappings (Every Cure, internal seminar)"},{"location":"presentations/#re-bridging-the-anatomy-ontologies-with-sssom","text":"July 19 th , 2024 15 th International Conference on Biomedical Ontologies (ICBO) Slides , paper , sources","title":"(Re-)bridging the anatomy ontologies with SSSOM"},{"location":"presentations/#workshop-on-prefixes-curies-and-iris-2023","text":"November 27 th , 2023, virtual Lightning talk on the deeper integration of the Bioregistry and curies toolkit with the SSSOM Python package Workshop info","title":"Workshop on Prefixes, CURIEs, and IRIs 2023"},{"location":"presentations/#om2023-a-simple-standard-for-sharing-ontological-mappings-2023-updates-on-data-model-collaborations-and-tooling","text":"7th November 2023 http://om2023.ontologymatching.org/ Slides","title":"OM2023: A Simple Standard for Sharing Ontological Mappings 2023: Updates on data model, collaborations and tooling"},{"location":"presentations/#sssom-updates-2023-fair-impact-and-faircore4eosc-life-working-session","text":"6th October 2023 Slides","title":"SSSOM Updates 2023 (FAIR Impact and FAIRCORE4EOSC Life Working Session)"},{"location":"presentations/#ohdsi-2023-symposium-synergizing-simple-standard-for-sharing-ontology-mappings-sssom-and-the-observational-health-data-sciences-and-informatics-ohdsi","text":"3rd July 2023, https://www.ohdsi-europe.org/index.php/symposium-2023 Seminar info","title":"OHDSI 2023 Symposium: Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI)"},{"location":"presentations/#elixir-data-interoperability-meeting-introduction-to-sssom","text":"6th March 2023 This talk is a variant of the CCB Seminar Series talk below Slides","title":"Elixir Data Interoperability Meeting: Introduction to SSSOM"},{"location":"presentations/#ontology-summit-2023-open-fair-and-standardised-mappings-for-ontologies-controlled-vocabularies-and-database-entities","text":"22 February 2023, virtual This talk is a variant of the CCB Seminar Series talk below Seminar info Video recording (scroll to minute 46) Slides","title":"Ontology Summit 2023: Open, FAIR and standardised mappings for ontologies, controlled vocabularies and database entities"},{"location":"presentations/#ccb-seminar-series-open-sssom-unlocking-the-wealth-of-biomedical-data-using-shared-standardized-entity-mappings","text":"December 2022 talk, virtual Seminar info Video recording Slides","title":"CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings"},{"location":"presentations/#ohdsi-symposium-2022-there-are-no-good-mappings","text":"October 2022, hybrid symposium (https://www.ohdsi.org/ohdsi2022-workgroup-activities/) Seminar info Slides","title":"OHDSI Symposium 2022: There are no \"good\" mappings."},{"location":"presentations/#om-2022-a-simple-standard-for-ontological-mappings-2022-updates-of-data-model-and-outlook","text":"23rd October 2022, Workshop for Ontology Matching, ISWC 2022, virtual Seminar info Slides","title":"OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook"},{"location":"presentations/#obo-academy-2022-introduction-to-manual-mapping-curation","text":"17th May 2022, Seminar, Monarch Seminar Series Video recording Seminar info Slides","title":"OBO Academy 2022: Introduction to manual mapping curation"},{"location":"presentations/#workshop-on-prefixes-curies-and-iris-2021","text":"Fall 2021, Use Case Talk on the need for prefix maps for SSSOM Video Workshop info","title":"Workshop on Prefixes, CURIEs, and IRIs 2021"},{"location":"presentations/#pistoia-seminar-2022-a-simple-standard-for-sharing-ontological-mappings-sssom","text":"28th April 2022, Team Meeting Seminar info Slides","title":"Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"presentations/#wsbo-2021-workshop-on-synergizing-biomedical-ontologies","text":"14th July 2021, Workshop Workshop info Slides","title":"WSBO-2021: Workshop on Synergizing Biomedical Ontologies"},{"location":"presentations/#mc-2021-1st-mapping-commons-workshop-on-simple-standard-for-sharing-ontology-mappings","text":"Workshop info Video recording Slides: Introduction Slides: OMOP2OBO .","title":"MC-2021: 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings"},{"location":"propagated/","text":"propagated URI : sssom:propagated Applicable to : Propagatable Description Indicates whether a slot can be propagated from a mapping down to individual mappings. Properties Range : Boolean . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean","title":"propagated"},{"location":"propagated/#propagated","text":"URI : sssom:propagated Applicable to : Propagatable Description Indicates whether a slot can be propagated from a mapping down to individual mappings.","title":"propagated"},{"location":"propagated/#properties","text":"Range : Boolean . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"propagated/#schema-developer-documentation","text":"LinkML source name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean","title":"Schema developer documentation"},{"location":"property/","text":"property URI : sssom:property Applicable to : ExtensionDefinition Description The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). Properties Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie","title":"property"},{"location":"property/#property","text":"URI : sssom:property Applicable to : ExtensionDefinition Description The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous).","title":"property"},{"location":"property/#properties","text":"Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"property/#schema-developer-documentation","text":"LinkML source name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Schema developer documentation"},{"location":"publication_date/","text":"publication_date URI : dcterms:created Applicable to : MappingSet , Mapping Description The date the mapping was published. This is different from the date the mapping was asserted. Properties Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date domain_of: - mapping set - mapping range: date","title":"publication_date"},{"location":"publication_date/#publication_date","text":"URI : dcterms:created Applicable to : MappingSet , Mapping Description The date the mapping was published. This is different from the date the mapping was asserted.","title":"publication_date"},{"location":"publication_date/#properties","text":"Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"publication_date/#schema-developer-documentation","text":"LinkML source name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date domain_of: - mapping set - mapping range: date","title":"Schema developer documentation"},{"location":"registry_confidence/","text":"registry_confidence URI : sssom:registry_confidence Applicable to : MappingSetReference Description This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. Properties Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence domain_of: - mapping set reference range: double","title":"registry_confidence"},{"location":"registry_confidence/#registry_confidence","text":"URI : sssom:registry_confidence Applicable to : MappingSetReference Description This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set.","title":"registry_confidence"},{"location":"registry_confidence/#properties","text":"Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"registry_confidence/#schema-developer-documentation","text":"LinkML source name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence domain_of: - mapping set reference range: double","title":"Schema developer documentation"},{"location":"related-documentation/","text":"Related documentation SSSOM Toolkit : A toolkit and library for processing SSSOM files in Python SSSOM Java : A toolkit and library for processing SSSOM files in Java Semantic Mapping Vocabulary (SEMAPV) : The mapping vocabulary used for mapping justifications and specialised mapping predicates LinkML : The modelling framework used by SSSOM OBO Academy : Ontology and mapping related training materials Monarch Initiative : Knowledge Graph related products supported by the Monarch Initiatives, including many tools using and producing SSSOM","title":"Related documentation"},{"location":"related-documentation/#related-documentation","text":"SSSOM Toolkit : A toolkit and library for processing SSSOM files in Python SSSOM Java : A toolkit and library for processing SSSOM files in Java Semantic Mapping Vocabulary (SEMAPV) : The mapping vocabulary used for mapping justifications and specialised mapping predicates LinkML : The modelling framework used by SSSOM OBO Academy : Ontology and mapping related training materials Monarch Initiative : Knowledge Graph related products supported by the Monarch Initiatives, including many tools using and producing SSSOM","title":"Related documentation"},{"location":"reviewer_id/","text":"reviewer_id URI : sssom:reviewer_id Applicable to : Mapping Description Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id domain_of: - mapping range: EntityReference","title":"reviewer_id"},{"location":"reviewer_id/#reviewer_id","text":"URI : sssom:reviewer_id Applicable to : Mapping Description Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.","title":"reviewer_id"},{"location":"reviewer_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"reviewer_id/#schema-developer-documentation","text":"LinkML source name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"reviewer_label/","text":"reviewer_label URI : sssom:reviewer_label Applicable to : Mapping Description A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label domain_of: - mapping range: string","title":"reviewer_label"},{"location":"reviewer_label/#reviewer_label","text":"URI : sssom:reviewer_label Applicable to : Mapping Description A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead.","title":"reviewer_label"},{"location":"reviewer_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"reviewer_label/#schema-developer-documentation","text":"LinkML source name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"see_also/","text":"see_also URI : rdfs:seeAlso Applicable to : MappingSet , Mapping Description A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also domain_of: - mapping set - mapping range: string","title":"see_also"},{"location":"see_also/#see_also","text":"URI : rdfs:seeAlso Applicable to : MappingSet , Mapping Description A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment","title":"see_also"},{"location":"see_also/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"see_also/#schema-developer-documentation","text":"LinkML source name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"similarity_measure/","text":"similarity_measure URI : sssom:similarity_measure Applicable to : Mapping Description The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: https://www.wikidata.org/entity/Q865360 Example value : https://www.wikidata.org/entity/Q865360 Description : (the Wikidata IRI for the Jaccard index measure). Example: wikidata:Q865360 Example value : wikidata:Q865360 Description : (the Wikidata CURIE for the Jaccard index measure). Example: Levenshtein distance Example value : Levenshtein distance Description : (a score to measure the distance between two character sequences). See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv Schema developer documentation LinkML source name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure domain_of: - mapping range: string","title":"similarity_measure"},{"location":"similarity_measure/#similarity_measure","text":"URI : sssom:similarity_measure Applicable to : Mapping Description The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified.","title":"similarity_measure"},{"location":"similarity_measure/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"similarity_measure/#examples","text":"Example: https://www.wikidata.org/entity/Q865360 Example value : https://www.wikidata.org/entity/Q865360 Description : (the Wikidata IRI for the Jaccard index measure). Example: wikidata:Q865360 Example value : wikidata:Q865360 Description : (the Wikidata CURIE for the Jaccard index measure). Example: Levenshtein distance Example value : Levenshtein distance Description : (a score to measure the distance between two character sequences).","title":"Examples"},{"location":"similarity_measure/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv","title":"See Also"},{"location":"similarity_measure/#schema-developer-documentation","text":"LinkML source name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"similarity_score/","text":"similarity_score URI : sssom:similarity_score Applicable to : Mapping Description A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. Properties Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1 See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv Schema developer documentation LinkML source name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"similarity_score"},{"location":"similarity_score/#similarity_score","text":"URI : sssom:similarity_score Applicable to : Mapping Description A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm.","title":"similarity_score"},{"location":"similarity_score/#properties","text":"Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1","title":"Properties"},{"location":"similarity_score/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv","title":"See Also"},{"location":"similarity_score/#schema-developer-documentation","text":"LinkML source name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"Schema developer documentation"},{"location":"slot_name/","text":"slot_name URI : sssom:slot_name Applicable to : ExtensionDefinition Description The name of the extension slot. Properties Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Schema developer documentation LinkML source name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true","title":"slot_name"},{"location":"slot_name/#slot_name","text":"URI : sssom:slot_name Applicable to : ExtensionDefinition Description The name of the extension slot.","title":"slot_name"},{"location":"slot_name/#properties","text":"Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"slot_name/#schema-developer-documentation","text":"LinkML source name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true","title":"Schema developer documentation"},{"location":"spec-formats-json/","text":"The JSON serialisation format The JSON serialisation format is currently unspecified. It is intended as a more-or-less direct serialisation of the MappingSet class into the JSON format as specified by RFC 8259 , but many details of the serialisation are left unspecified for now.","title":"JSON serialisation"},{"location":"spec-formats-json/#the-json-serialisation-format","text":"The JSON serialisation format is currently unspecified. It is intended as a more-or-less direct serialisation of the MappingSet class into the JSON format as specified by RFC 8259 , but many details of the serialisation are left unspecified for now.","title":"The JSON serialisation format"},{"location":"spec-formats-owl/","text":"The OWL/RDF serialisation format This section defines a way to serialise SSSOM mappings as reified OWL axioms . This has the advantage that any mapping set can be simply merged with an ontology in the usual way, for example using ROBOT merge . The OWL/RDF serialisation rules deal with three types of reified OWL axioms, and a few sub-types: Predicate is an annotation property Predicate is an object property and Object/Subject are classes Object/Subject are individuals Predicate is language relational construct of RDFS or OWL ( rdfs:subClassOf , owl:equivalentClass ) Predicate is an annotation property: If the predicate corresponds to an annotation property, the mapping gets converted to an OWLAnnotationAssertion axiom: OWLAnnotationAssertion(P,S,O) . All mapping level metadata ( meta ) gets converted into OWLAnnotation objects which are materialised as axiom annotations on the mapping annotation assertion, see OWL 2 Structural Specification : AnnotationAssertion(meta P, S, O) Where meta is a sequence of OWL Annotations objects like: Annotation(Q1,V1) Annotation(Q2,V2) ... Annotation(Qn,Vn) where Qi is a SSSOM metadata slot and Vi is an annotation value. Note that if a SSSOM metadata element value is a list L (i.e. can have multiple elements, such as creator and others), individual annotations are created for each of them: Annotation(Q,V) for all V in L. Example: AnnotationAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) skos:exactMatch ) Mapping set level annotations are manifested as Ontology annotation in the usual way, according to the OWL 2 Structural Specification . Predicate is an object property Case 1: Object and Subject are classes. The mapping gets translated into an existential restriction: SubclassOf(S, P some O) All metadata slots are added as OWLAnnotation objects and added to SubclassOf axiom as axiom annotations: SubclassOf(meta, S, P some O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) ObjectSomeValuesFrom( )) Case 2: Object and Subject are individuals The mapping gets translated into an object property assertion: ObjectPropertyAssertion(P, S, O) All metadata slots are added as OWLAnnotation objects and added to ObjectPropertyAssertion axiom as axiom annotations: ObjectPropertyAssertion(meta, P, S, O) Example: ObjectPropertyAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) ) Predicate is language relational construct of RDFS or OWL The mapping gets translated into an annotated axiom using the following table: Mapping predicate Generated axiom owl:equivalentClass EauivalentClass(meta, S, O) rdfs:subClassOf SubClassOf(meta, S, O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) )","title":"OWL/RDF serialisation"},{"location":"spec-formats-owl/#the-owlrdf-serialisation-format","text":"This section defines a way to serialise SSSOM mappings as reified OWL axioms . This has the advantage that any mapping set can be simply merged with an ontology in the usual way, for example using ROBOT merge . The OWL/RDF serialisation rules deal with three types of reified OWL axioms, and a few sub-types: Predicate is an annotation property Predicate is an object property and Object/Subject are classes Object/Subject are individuals Predicate is language relational construct of RDFS or OWL ( rdfs:subClassOf , owl:equivalentClass )","title":"The OWL/RDF serialisation format"},{"location":"spec-formats-owl/#predicate-is-an-annotation-property","text":"If the predicate corresponds to an annotation property, the mapping gets converted to an OWLAnnotationAssertion axiom: OWLAnnotationAssertion(P,S,O) . All mapping level metadata ( meta ) gets converted into OWLAnnotation objects which are materialised as axiom annotations on the mapping annotation assertion, see OWL 2 Structural Specification : AnnotationAssertion(meta P, S, O) Where meta is a sequence of OWL Annotations objects like: Annotation(Q1,V1) Annotation(Q2,V2) ... Annotation(Qn,Vn) where Qi is a SSSOM metadata slot and Vi is an annotation value. Note that if a SSSOM metadata element value is a list L (i.e. can have multiple elements, such as creator and others), individual annotations are created for each of them: Annotation(Q,V) for all V in L. Example: AnnotationAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) skos:exactMatch ) Mapping set level annotations are manifested as Ontology annotation in the usual way, according to the OWL 2 Structural Specification .","title":"Predicate is an annotation property:"},{"location":"spec-formats-owl/#predicate-is-an-object-property","text":"","title":"Predicate is an object property"},{"location":"spec-formats-owl/#case-1-object-and-subject-are-classes","text":"The mapping gets translated into an existential restriction: SubclassOf(S, P some O) All metadata slots are added as OWLAnnotation objects and added to SubclassOf axiom as axiom annotations: SubclassOf(meta, S, P some O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) ObjectSomeValuesFrom( ))","title":"Case 1: Object and Subject are classes."},{"location":"spec-formats-owl/#case-2-object-and-subject-are-individuals","text":"The mapping gets translated into an object property assertion: ObjectPropertyAssertion(P, S, O) All metadata slots are added as OWLAnnotation objects and added to ObjectPropertyAssertion axiom as axiom annotations: ObjectPropertyAssertion(meta, P, S, O) Example: ObjectPropertyAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) )","title":"Case 2: Object and Subject are individuals"},{"location":"spec-formats-owl/#predicate-is-language-relational-construct-of-rdfs-or-owl","text":"The mapping gets translated into an annotated axiom using the following table: Mapping predicate Generated axiom owl:equivalentClass EauivalentClass(meta, S, O) rdfs:subClassOf SubClassOf(meta, S, O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) )","title":"Predicate is language relational construct of RDFS or OWL"},{"location":"spec-formats-tsv/","text":"The SSSOM/TSV serialisation format The SSSOM/TSV format is intended as the main format for exchanging SSSOM mapping set objects. The RECOMMENDED filename extension for a SSSOM/TSV file is .sssom.tsv , but SSSOM/TSV parsers MUST accept SSSOM/TSV files regardless of their extension. Structure A SSSOM/TSV file contains one, and only one, mapping set object. It is made of two different parts: the metadata block , which contains essentially all the slots of the MappingSet class except the mappings slot; the mappings block (also called the TSV section ), which contains the individual mappings. A SSSOM/TSV file MUST NOT contain anything other than those two blocks. Metadata block The metadata block is written as the YAML 1.2 serialisation of the MappingSet object, except that the mappings slot is not included (since it contains the mappings, that are serialised in the mappings block instead). The metadata block MUST appear at the beginning of the file. Every line of the block MUST be preceded by a # character; the # character MAY be followed by one or several space characters (U+0020) before the YAML content \u2013 if so, every line MUST have the same number of space characters. The metadata block ends with the first line that does not begin with a # character, which marks the beginning of the mappings block. The metadata block SHOULD only contain the slots that do have a value. SSSOM/TSV writers SHOULD skip slots with no value when serialising the mapping set object. Multi-valued slots with a single value As an exception to the standard YAML rules regarding the serialisation of sequences, a multi-valued slot that happens to contain a single value MAY be serialised as a scalar value rather than as sequence containing only one item. For example, a creator_id slot with the single value ORCID:1111-2222-3333-4444 MAY be serialised as creator_id: \"ORCID:1111-2222-3333-4444\" This is, strictly speaking, invalid according the YAML specification; the correct serialisation would be either creator_id: [ \"ORCID:1111-2222-3333-4444\" ] or creator_id: - \"ORCID:1111-2222-3333-4444\" but the scalar form is frequently found in existing SSSOM/TSV files, so SSSOM/TSV parsers SHOULD accept it. SSSOM/TSV writers SHOULD favour one of the correct YAML serialisations, however. Forbidden YAML features The following features of the YAML 1.2 specification MUST NOT be used within the metadata block: YAML directives ( YAML 1.2 \u00a76.8.1 ); TAG directives ( YAML 1.2 \u00a76.8.2 ); Node tags ( YAML 1.2 \u00a76.9.1 ); Node anchors ( YAML 1.2 \u00a76.9.2 ); Alias nodes ( YAML 1.2 \u00a77.1 ). SSSOM/TSV writers MUST NOT generate any of those when writing the metadata block. The expected behaviour of SSSOM/TSV parsers upon encountering them is unspecified. Mappings block The mappings block contains the mappings, serialised as a matrix where each line represents an individual mapping and each column (separated by tab characters, U+0009) represents one of the slots of the Mapping class . The mappings block MUST follow immediately the metadata block within a SSSOM/TSV file. It starts with a header line containing the column names, which are the names of the slots in the Mapping class. There SHOULD be no empty columns. If none of the mappings in a set has a value for a given slot, that slot SHOULD be skipped when writing the header line and the individual mappings. Multi-valued slots MUST be serialised as a list of values separated by | characters. Quoting Within the mappings block, the following quoting rules, adapted from RFC 4180 , apply: Any value MAY be enclosed in double quotes ( \" ). Values containing line breaks, double quotes, or tabs (U+0009) MUST be enclosed in double quotes. When a value is enclosed in double quotes, a double quote appearing within the value MUST be escaped by preceding it with another double quote. SSSOM/TSV parsers MUST strip any enclosing double quotes and escaping double quotes before passing the parsed objects to the application code. External metadata mode The metadata block MAY be stored in a separate file from the TSV section, instead of preceding it in the same file as described above. This is called the external metadata mode (by contrast, when the two blocks are in the same file, this is called the embedded metadata mode ). In external mode, the metadata block follows the same rules as described in the Metadata block section above, except that lines MUST NOT start with a # character. It is RECOMMENDED that the file containing the metadata block has the same basename as the file containing the TSV section, with a .sssom.yml extension. When an external metadata file is used, the file containing the TSV section MUST NOT contain anything else than the TSV section. That is, the first line of that file MUST be the header line containing the column names. Implementations SHOULD support reading SSSOM/TSV files in external metadata mode; they MAY support writing SSSOM/TSV files in that mode. Encoding SSSOM/TSV files MUST be encoded in UTF-8 ( RFC 3629 ). They MUST NOT start with a byte order mark (U+FEFF). This applies to external metadata files as well, when the external metadata mode is used. Identifiers All identifiers in a SSSOM/TSV file, that is, all the values of slots typed as EntityReference , MUST be serialised in CURIE syntax . SSSOM/TSV parsers SHOULD reject files containing identifiers serialised as IRIs. As stated in the description of the model ( Identifiers section ), all prefix names used in CURIEs MUST be declared in the curie_map slot of the mapping set object, unless the prefix is a \u201cbuilt-in\u201d prefix (in which case it MAY be omitted). SSSOM/TSV parsers MUST reject a file with undeclared, non-built-in prefix names. A SSSOM/TSV writer SHOULD refuse to serialise a mapping set that contains IRIs that cannot be contracted into CURIEs because there is no suitable prefix declaration in its CURIE map. The use of a custom, ad-hoc logic to infer a possible prefix name where none has been provided (e.g., \u201cif the IRI ends with a ZZZ_NNNNNNN pattern, turn it into a ZZZ:NNNNNNN CURIE\u201d) is strongly discouraged. Propagatable slots As explained in another section , some slots in the MappingSet class are intended, not to describe the mapping set itself, but to store values that are shared by all mappings in the set. These slots are called the \u201cpropagatable slots\u201d, because their values should be \u201cpropagated\u201d from the mapping set down to the individual mappings. Propagation \u201cPropagation\u201d is the operation of assigning to individual mappings in a set the values from the propagatable slots of the set. That operation SHOULD be performed by a SSSOM/TSV parser before passing the parsed objects to the application code. For any given propagatable slot, propagation is only allowed if none of the individual mappings already have their own value in that slot. If any mapping (even only one mapping) has a value in that slot, then the slot MUST be considered as non-propagatable. Otherwise, a propagating SSSOM/TSV parser MUST (1) copy over the value of the propagatable slot on the MappingSet object to the corresponding slot of every individual Mapping objects, and (2) remove the propagated value from the MappingSet object. Implementations that support propagation MUST also support condensation. Condensation \u201cCondensation\u201d is the opposite of \u201cpropagation\u201d. It is the operation of assigning common values to the propagatable slots of the set, based on the values of these slots on individual mappings. That operation SHOULD be performed by a SSSOM/TSV writer prior to writing a set into a SSSOM/TSV file, but that behaviour, if available, MUST be deactivatable. For any given propagatable slot, condensation is only allowed if (1) all mappings in the set have the same value, and (2) the mapping set does not already have a value in the slot, unless that value happens to be the same as the value in all mappings. If those two conditions are met, then a condensating SSSOM/TSV writer MUST (1) set the value of the slot on the MappingSet object to the common value of the slot in all mappings, and (2) remove the condensed value from the individual Mapping object. Implementations that support condensation MUST also support propagation. Non-standard slots If an implementation does not support non-standard slots , then: a SSSOM/TSV reader MUST discard any unknown top-level YAML key in the metadata block, and any unknown TSV column in the TSV section; a SSSOM/TSV writer MUST NOT write any unknown top-level YAML key in the metadata block, or any unknown TSV column in the TSV section. Support for defined extensions This section applies to implementations that supports defined extensions. A SSSOM/TSV reader MUST check the validity of the extension definitions listed in the extension_definitions slot in the YAML metadata block: definitions with no slot_name , or with a slot_name that is not a XML non-colonized name, MUST be ignored; definitions with any unexpected content (e.g. other keys than just slot_name , property , and type_hint ) MUST be ignored; the property and type_hint values for a given definition, if present, MUST be CURIEs and MUST be resolvable using the mapping set\u2019s curie_map , otherwise the definition MUST be ignored. A SSSOM/TSV reader MUST, upon encountering a non-standard YAML key in the metadata block or an unknown TSV column, check that the name of the key or of the column matches the slot_name of one of the extension definitions listed in the mapping set\u2019s extension_definitions slot. If there is no match, the non-standard slot MUST be discarded. Upon encountering a non-standard slot whose corresponding definition has a type_hint of https://w3id.org/linkml/Uriorcurie , the reader SHOULD check that the value is a CURIE and is resolvable using the mapping set\u2019s curie_map . Compatibility with previous versions of the specification Implementations MUST support the current version of the specification. However, SSSOM/TSV parsers MAY additionally accept to parse files that were compliant to a previous version. This section provides advice for implementations willing to support older versions. Compatibility with pre-1.0 versions match_type slot Initial versions of this specification defined a match_type slot on the Mapping class. The slot was intended to describe the kind of match that led to the mapping, and accepted values from a specific enumeration. In SSSOM 0.9.1, this slot was replaced by the mapping_justification slot, and the enumeration was replaced by terms from the SEMAPV vocabulary . Upon encountering a match_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a mapping_justification slot and convert the enumeration values using the following table: match_type value mapping_justification value Lexical semapv:LexicalMatching Logical semapv:LogicalMatching HumanCurated semapv:ManualMappingCuration Complex semapv:CompositeMatching Unspecified semapv:UnspecifiedMatching SemanticSimilarity semapv:SemanticSimilarityThresholdMatching Any other value in the match_type slot MUST be treated as an error. If the set contains both match_type and mapping_justification slots, it is advised to simply ignore the former. match_term_type slot Initial versions of this specification defined a match_term_type slot on the Mapping class. The slot was intended to describe what was being matched. In SSSOM 0.9.1, this slot was replaced by two distinct slots called subject_type and object_type (this notably allowed for the case where the subject and the object are of a different type, something the match_term_type slot did not support). Upon encountering a match_term_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a pair of subject_type and object_type slots, both slots having the same value derived from the original value using the following table: match_term_type value subject_type and object_type value ConceptMatch skos concept ClassMatch owl class ObjectPropertyMatch owl object property IndividualMatch owl named individual DataPropertyMatch owl data property TermMatch rdfs literal Any other value in the match_term_type slot MUST be treated as an error. If the set already contains subject_type and object_type slots, any match_term_type slot can be silently ignored. semantic_similarity_score and semantic_similarity_measure Initial versions of this specification defined a semantic_similarity_score slot to store the semantic similarity, and a semantic_similarity_measure slot to describe how the the semantic similarity is assessed. In SSSOM 1.0, those slots were replaced by more generic similarity_score and similarity_measure slots. Upon encountering a semantic_similarity_score (respectively semantic_similarity_measure ) slot, implementations supporting pre-1.0 versions MUST silently transform it into a similarity_score (respectively similarity_measure ) slot. No changes on the value of the slot are required. Canonical SSSOM/TSV format This section defines a \u201ccanonical\u201d variant of the SSSOM/TSV format, which has stricter serialisation rules. The purpose of the canonical SSSOM/TSV format is to minimise differences across SSSOM/TSV files that would be induced by small diverging behaviours between different SSSOM/TSV implementations. The rules in this section apply to SSSOM/TSV writers only. SSSOM/TSV writers SHOULD write files in the canonical format, but SSSOM/TSV readers MUST NOT reject a file solely because it does not follow the canonical rules. General rules A canonical SSSOM/TSV writer: MUST use line breaks made of only the U+000A character (no U+000D, and no U+000D + U+000A sequences); MUST condense the slots whenever possible, as described in the Condensation section. Rules for the metadata block When writing the metadata block, a canonical SSSOM/TSV writer: MUST embed the metadata block in the same file as the TSV section (no external metadata); MUST NOT insert additional space characters between the initial # character and the YAML content; MUST serialise multi-valued slots as YAML \u201cblock sequences\u201d ( YAML Specification \u00a78.2.1 ) \u2013 even when the list of values contains only one item; MUST serialise scalar values in YAML \u201cplain style\u201d ( YAML Specification \u00a77.3.3 ) whenever possible, otherwise in \u201cdouble-quoted style\u201d ( YAML Specification \u00a77.3.1 ); MUST serialise the slots in the order they appear in the \u201cSlots\u201d table , in the documentation for the MappingSet class; MUST NOT include in the CURIE map the prefix names that are considered \u201cbuilt-in\u201d; MUST NOT include in the CURIE map any prefix name that is not used anywhere in the set; MUST sort the prefix names in the CURIE map in lexicographical order. In addition, if extension slots are supported, the writer: MUST write any extension slot in the mapping set after the standard slots; MUST sort the extension slots lexicographically on the property of their corresponding extension definitions; MUST sort extension definitions on their property value; MUST not include an extension definition if the corresponding extension is not used anywhere in the set. Rules for the mappings block When writing the mappings block, a canonical SSSOM/TSV writer: MUST quote values only when needed, as per the rules in the Quoting section; MUST serialise floating point values with up to three digits as needed after the decimal point, rounding the last digit to the nearest neighbour (rounding up if both neighbours are equidistant); MUST write the columns in the order the slots appear in the \u201cSlots\u201d table , in the documentation for the Mapping class; MUST sort the mappings in lexicographical order on all their slots, in the order the slots appear in the \u201cSlots\u201d table . In addition, if extension slots are supported, the writer: MUST write any non-standard column after the standard columns; MUST sort the non-standard column lexicographically on the property of their corresponding extension definitions. Examples This section is non-normative . A SSSOM/TSV file in embedded metadata mode: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 The same set in external metadata mode: first the file containing the metadata block: curie_map: FOODON: http://purl.obolibrary.org/obo/FOODON_ KF_FOOD: https://kewl-foodie.inc/food/ orcid: https://orcid.org/ mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. license: https://creativecommons.org/licenses/by/4.0/ mapping_date: 2022-05-02 then the file containing the mappings block: subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 Invalid examples Illegal case 1: the metadata block cannot contains comments that are not part of the metadata. # This is a comment that does not belong here. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" # This is another comment that also does not belong here. #creator_id: # - \"orcid:0000-0002-7356-1779\" Illegal case 2: there should be no empty lines. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" #creator_id: # - \"orcid:0000-0002-7356-1779\"","title":"SSSOM/TSV serialisation"},{"location":"spec-formats-tsv/#the-sssomtsv-serialisation-format","text":"The SSSOM/TSV format is intended as the main format for exchanging SSSOM mapping set objects. The RECOMMENDED filename extension for a SSSOM/TSV file is .sssom.tsv , but SSSOM/TSV parsers MUST accept SSSOM/TSV files regardless of their extension.","title":"The SSSOM/TSV serialisation format"},{"location":"spec-formats-tsv/#structure","text":"A SSSOM/TSV file contains one, and only one, mapping set object. It is made of two different parts: the metadata block , which contains essentially all the slots of the MappingSet class except the mappings slot; the mappings block (also called the TSV section ), which contains the individual mappings. A SSSOM/TSV file MUST NOT contain anything other than those two blocks.","title":"Structure"},{"location":"spec-formats-tsv/#metadata-block","text":"The metadata block is written as the YAML 1.2 serialisation of the MappingSet object, except that the mappings slot is not included (since it contains the mappings, that are serialised in the mappings block instead). The metadata block MUST appear at the beginning of the file. Every line of the block MUST be preceded by a # character; the # character MAY be followed by one or several space characters (U+0020) before the YAML content \u2013 if so, every line MUST have the same number of space characters. The metadata block ends with the first line that does not begin with a # character, which marks the beginning of the mappings block. The metadata block SHOULD only contain the slots that do have a value. SSSOM/TSV writers SHOULD skip slots with no value when serialising the mapping set object.","title":"Metadata block"},{"location":"spec-formats-tsv/#multi-valued-slots-with-a-single-value","text":"As an exception to the standard YAML rules regarding the serialisation of sequences, a multi-valued slot that happens to contain a single value MAY be serialised as a scalar value rather than as sequence containing only one item. For example, a creator_id slot with the single value ORCID:1111-2222-3333-4444 MAY be serialised as creator_id: \"ORCID:1111-2222-3333-4444\" This is, strictly speaking, invalid according the YAML specification; the correct serialisation would be either creator_id: [ \"ORCID:1111-2222-3333-4444\" ] or creator_id: - \"ORCID:1111-2222-3333-4444\" but the scalar form is frequently found in existing SSSOM/TSV files, so SSSOM/TSV parsers SHOULD accept it. SSSOM/TSV writers SHOULD favour one of the correct YAML serialisations, however.","title":"Multi-valued slots with a single value"},{"location":"spec-formats-tsv/#forbidden-yaml-features","text":"The following features of the YAML 1.2 specification MUST NOT be used within the metadata block: YAML directives ( YAML 1.2 \u00a76.8.1 ); TAG directives ( YAML 1.2 \u00a76.8.2 ); Node tags ( YAML 1.2 \u00a76.9.1 ); Node anchors ( YAML 1.2 \u00a76.9.2 ); Alias nodes ( YAML 1.2 \u00a77.1 ). SSSOM/TSV writers MUST NOT generate any of those when writing the metadata block. The expected behaviour of SSSOM/TSV parsers upon encountering them is unspecified.","title":"Forbidden YAML features"},{"location":"spec-formats-tsv/#mappings-block","text":"The mappings block contains the mappings, serialised as a matrix where each line represents an individual mapping and each column (separated by tab characters, U+0009) represents one of the slots of the Mapping class . The mappings block MUST follow immediately the metadata block within a SSSOM/TSV file. It starts with a header line containing the column names, which are the names of the slots in the Mapping class. There SHOULD be no empty columns. If none of the mappings in a set has a value for a given slot, that slot SHOULD be skipped when writing the header line and the individual mappings. Multi-valued slots MUST be serialised as a list of values separated by | characters.","title":"Mappings block"},{"location":"spec-formats-tsv/#quoting","text":"Within the mappings block, the following quoting rules, adapted from RFC 4180 , apply: Any value MAY be enclosed in double quotes ( \" ). Values containing line breaks, double quotes, or tabs (U+0009) MUST be enclosed in double quotes. When a value is enclosed in double quotes, a double quote appearing within the value MUST be escaped by preceding it with another double quote. SSSOM/TSV parsers MUST strip any enclosing double quotes and escaping double quotes before passing the parsed objects to the application code.","title":"Quoting"},{"location":"spec-formats-tsv/#external-metadata-mode","text":"The metadata block MAY be stored in a separate file from the TSV section, instead of preceding it in the same file as described above. This is called the external metadata mode (by contrast, when the two blocks are in the same file, this is called the embedded metadata mode ). In external mode, the metadata block follows the same rules as described in the Metadata block section above, except that lines MUST NOT start with a # character. It is RECOMMENDED that the file containing the metadata block has the same basename as the file containing the TSV section, with a .sssom.yml extension. When an external metadata file is used, the file containing the TSV section MUST NOT contain anything else than the TSV section. That is, the first line of that file MUST be the header line containing the column names. Implementations SHOULD support reading SSSOM/TSV files in external metadata mode; they MAY support writing SSSOM/TSV files in that mode.","title":"External metadata mode"},{"location":"spec-formats-tsv/#encoding","text":"SSSOM/TSV files MUST be encoded in UTF-8 ( RFC 3629 ). They MUST NOT start with a byte order mark (U+FEFF). This applies to external metadata files as well, when the external metadata mode is used.","title":"Encoding"},{"location":"spec-formats-tsv/#identifiers","text":"All identifiers in a SSSOM/TSV file, that is, all the values of slots typed as EntityReference , MUST be serialised in CURIE syntax . SSSOM/TSV parsers SHOULD reject files containing identifiers serialised as IRIs. As stated in the description of the model ( Identifiers section ), all prefix names used in CURIEs MUST be declared in the curie_map slot of the mapping set object, unless the prefix is a \u201cbuilt-in\u201d prefix (in which case it MAY be omitted). SSSOM/TSV parsers MUST reject a file with undeclared, non-built-in prefix names. A SSSOM/TSV writer SHOULD refuse to serialise a mapping set that contains IRIs that cannot be contracted into CURIEs because there is no suitable prefix declaration in its CURIE map. The use of a custom, ad-hoc logic to infer a possible prefix name where none has been provided (e.g., \u201cif the IRI ends with a ZZZ_NNNNNNN pattern, turn it into a ZZZ:NNNNNNN CURIE\u201d) is strongly discouraged.","title":"Identifiers"},{"location":"spec-formats-tsv/#propagatable-slots","text":"As explained in another section , some slots in the MappingSet class are intended, not to describe the mapping set itself, but to store values that are shared by all mappings in the set. These slots are called the \u201cpropagatable slots\u201d, because their values should be \u201cpropagated\u201d from the mapping set down to the individual mappings.","title":"Propagatable slots"},{"location":"spec-formats-tsv/#propagation","text":"\u201cPropagation\u201d is the operation of assigning to individual mappings in a set the values from the propagatable slots of the set. That operation SHOULD be performed by a SSSOM/TSV parser before passing the parsed objects to the application code. For any given propagatable slot, propagation is only allowed if none of the individual mappings already have their own value in that slot. If any mapping (even only one mapping) has a value in that slot, then the slot MUST be considered as non-propagatable. Otherwise, a propagating SSSOM/TSV parser MUST (1) copy over the value of the propagatable slot on the MappingSet object to the corresponding slot of every individual Mapping objects, and (2) remove the propagated value from the MappingSet object. Implementations that support propagation MUST also support condensation.","title":"Propagation"},{"location":"spec-formats-tsv/#condensation","text":"\u201cCondensation\u201d is the opposite of \u201cpropagation\u201d. It is the operation of assigning common values to the propagatable slots of the set, based on the values of these slots on individual mappings. That operation SHOULD be performed by a SSSOM/TSV writer prior to writing a set into a SSSOM/TSV file, but that behaviour, if available, MUST be deactivatable. For any given propagatable slot, condensation is only allowed if (1) all mappings in the set have the same value, and (2) the mapping set does not already have a value in the slot, unless that value happens to be the same as the value in all mappings. If those two conditions are met, then a condensating SSSOM/TSV writer MUST (1) set the value of the slot on the MappingSet object to the common value of the slot in all mappings, and (2) remove the condensed value from the individual Mapping object. Implementations that support condensation MUST also support propagation.","title":"Condensation"},{"location":"spec-formats-tsv/#non-standard-slots","text":"If an implementation does not support non-standard slots , then: a SSSOM/TSV reader MUST discard any unknown top-level YAML key in the metadata block, and any unknown TSV column in the TSV section; a SSSOM/TSV writer MUST NOT write any unknown top-level YAML key in the metadata block, or any unknown TSV column in the TSV section.","title":"Non-standard slots"},{"location":"spec-formats-tsv/#support-for-defined-extensions","text":"This section applies to implementations that supports defined extensions. A SSSOM/TSV reader MUST check the validity of the extension definitions listed in the extension_definitions slot in the YAML metadata block: definitions with no slot_name , or with a slot_name that is not a XML non-colonized name, MUST be ignored; definitions with any unexpected content (e.g. other keys than just slot_name , property , and type_hint ) MUST be ignored; the property and type_hint values for a given definition, if present, MUST be CURIEs and MUST be resolvable using the mapping set\u2019s curie_map , otherwise the definition MUST be ignored. A SSSOM/TSV reader MUST, upon encountering a non-standard YAML key in the metadata block or an unknown TSV column, check that the name of the key or of the column matches the slot_name of one of the extension definitions listed in the mapping set\u2019s extension_definitions slot. If there is no match, the non-standard slot MUST be discarded. Upon encountering a non-standard slot whose corresponding definition has a type_hint of https://w3id.org/linkml/Uriorcurie , the reader SHOULD check that the value is a CURIE and is resolvable using the mapping set\u2019s curie_map .","title":"Support for defined extensions"},{"location":"spec-formats-tsv/#compatibility-with-previous-versions-of-the-specification","text":"Implementations MUST support the current version of the specification. However, SSSOM/TSV parsers MAY additionally accept to parse files that were compliant to a previous version. This section provides advice for implementations willing to support older versions.","title":"Compatibility with previous versions of the specification"},{"location":"spec-formats-tsv/#compatibility-with-pre-10-versions","text":"","title":"Compatibility with pre-1.0 versions"},{"location":"spec-formats-tsv/#match_type-slot","text":"Initial versions of this specification defined a match_type slot on the Mapping class. The slot was intended to describe the kind of match that led to the mapping, and accepted values from a specific enumeration. In SSSOM 0.9.1, this slot was replaced by the mapping_justification slot, and the enumeration was replaced by terms from the SEMAPV vocabulary . Upon encountering a match_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a mapping_justification slot and convert the enumeration values using the following table: match_type value mapping_justification value Lexical semapv:LexicalMatching Logical semapv:LogicalMatching HumanCurated semapv:ManualMappingCuration Complex semapv:CompositeMatching Unspecified semapv:UnspecifiedMatching SemanticSimilarity semapv:SemanticSimilarityThresholdMatching Any other value in the match_type slot MUST be treated as an error. If the set contains both match_type and mapping_justification slots, it is advised to simply ignore the former.","title":"match_type slot"},{"location":"spec-formats-tsv/#match_term_type-slot","text":"Initial versions of this specification defined a match_term_type slot on the Mapping class. The slot was intended to describe what was being matched. In SSSOM 0.9.1, this slot was replaced by two distinct slots called subject_type and object_type (this notably allowed for the case where the subject and the object are of a different type, something the match_term_type slot did not support). Upon encountering a match_term_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a pair of subject_type and object_type slots, both slots having the same value derived from the original value using the following table: match_term_type value subject_type and object_type value ConceptMatch skos concept ClassMatch owl class ObjectPropertyMatch owl object property IndividualMatch owl named individual DataPropertyMatch owl data property TermMatch rdfs literal Any other value in the match_term_type slot MUST be treated as an error. If the set already contains subject_type and object_type slots, any match_term_type slot can be silently ignored.","title":"match_term_type slot"},{"location":"spec-formats-tsv/#semantic_similarity_score-and-semantic_similarity_measure","text":"Initial versions of this specification defined a semantic_similarity_score slot to store the semantic similarity, and a semantic_similarity_measure slot to describe how the the semantic similarity is assessed. In SSSOM 1.0, those slots were replaced by more generic similarity_score and similarity_measure slots. Upon encountering a semantic_similarity_score (respectively semantic_similarity_measure ) slot, implementations supporting pre-1.0 versions MUST silently transform it into a similarity_score (respectively similarity_measure ) slot. No changes on the value of the slot are required.","title":"semantic_similarity_score and semantic_similarity_measure"},{"location":"spec-formats-tsv/#canonical-sssomtsv-format","text":"This section defines a \u201ccanonical\u201d variant of the SSSOM/TSV format, which has stricter serialisation rules. The purpose of the canonical SSSOM/TSV format is to minimise differences across SSSOM/TSV files that would be induced by small diverging behaviours between different SSSOM/TSV implementations. The rules in this section apply to SSSOM/TSV writers only. SSSOM/TSV writers SHOULD write files in the canonical format, but SSSOM/TSV readers MUST NOT reject a file solely because it does not follow the canonical rules.","title":"Canonical SSSOM/TSV format"},{"location":"spec-formats-tsv/#general-rules","text":"A canonical SSSOM/TSV writer: MUST use line breaks made of only the U+000A character (no U+000D, and no U+000D + U+000A sequences); MUST condense the slots whenever possible, as described in the Condensation section.","title":"General rules"},{"location":"spec-formats-tsv/#rules-for-the-metadata-block","text":"When writing the metadata block, a canonical SSSOM/TSV writer: MUST embed the metadata block in the same file as the TSV section (no external metadata); MUST NOT insert additional space characters between the initial # character and the YAML content; MUST serialise multi-valued slots as YAML \u201cblock sequences\u201d ( YAML Specification \u00a78.2.1 ) \u2013 even when the list of values contains only one item; MUST serialise scalar values in YAML \u201cplain style\u201d ( YAML Specification \u00a77.3.3 ) whenever possible, otherwise in \u201cdouble-quoted style\u201d ( YAML Specification \u00a77.3.1 ); MUST serialise the slots in the order they appear in the \u201cSlots\u201d table , in the documentation for the MappingSet class; MUST NOT include in the CURIE map the prefix names that are considered \u201cbuilt-in\u201d; MUST NOT include in the CURIE map any prefix name that is not used anywhere in the set; MUST sort the prefix names in the CURIE map in lexicographical order. In addition, if extension slots are supported, the writer: MUST write any extension slot in the mapping set after the standard slots; MUST sort the extension slots lexicographically on the property of their corresponding extension definitions; MUST sort extension definitions on their property value; MUST not include an extension definition if the corresponding extension is not used anywhere in the set.","title":"Rules for the metadata block"},{"location":"spec-formats-tsv/#rules-for-the-mappings-block","text":"When writing the mappings block, a canonical SSSOM/TSV writer: MUST quote values only when needed, as per the rules in the Quoting section; MUST serialise floating point values with up to three digits as needed after the decimal point, rounding the last digit to the nearest neighbour (rounding up if both neighbours are equidistant); MUST write the columns in the order the slots appear in the \u201cSlots\u201d table , in the documentation for the Mapping class; MUST sort the mappings in lexicographical order on all their slots, in the order the slots appear in the \u201cSlots\u201d table . In addition, if extension slots are supported, the writer: MUST write any non-standard column after the standard columns; MUST sort the non-standard column lexicographically on the property of their corresponding extension definitions.","title":"Rules for the mappings block"},{"location":"spec-formats-tsv/#examples","text":"This section is non-normative . A SSSOM/TSV file in embedded metadata mode: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 The same set in external metadata mode: first the file containing the metadata block: curie_map: FOODON: http://purl.obolibrary.org/obo/FOODON_ KF_FOOD: https://kewl-foodie.inc/food/ orcid: https://orcid.org/ mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. license: https://creativecommons.org/licenses/by/4.0/ mapping_date: 2022-05-02 then the file containing the mappings block: subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1","title":"Examples"},{"location":"spec-formats-tsv/#invalid-examples","text":"Illegal case 1: the metadata block cannot contains comments that are not part of the metadata. # This is a comment that does not belong here. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" # This is another comment that also does not belong here. #creator_id: # - \"orcid:0000-0002-7356-1779\" Illegal case 2: there should be no empty lines. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" #creator_id: # - \"orcid:0000-0002-7356-1779\"","title":"Invalid examples"},{"location":"spec-formats/","text":"SSSOM serialisation formats The SSSOM standard defines the following serialisation formats for storing and exchanging mapping sets: the SSSOM/TSV format; the SSSOM JSON format; and the OWL/RDF format. Implementations MUST support the SSSOM/TSV format. They MAY support the other formats.","title":"Introduction"},{"location":"spec-formats/#sssom-serialisation-formats","text":"The SSSOM standard defines the following serialisation formats for storing and exchanging mapping sets: the SSSOM/TSV format; the SSSOM JSON format; and the OWL/RDF format. Implementations MUST support the SSSOM/TSV format. They MAY support the other formats.","title":"SSSOM serialisation formats"},{"location":"spec-intro/","text":"Specification of the SSSOM standard This document is the official specification for the SSSOM standard. It is divided in two sections covering the two different components of the standard: the specification for the data model , to manipulate SSSOM mappings and mapping sets in your programs; the specification for the serialisation formats , to read, write, and exchange SSSOM mapping sets. Both sections are normative . Conventions used in this document Key words Throughout the specification, the key words \u201cMUST\u201d, \u201cMUST NOT\u201d, \u201cREQUIRED\u201d, \u201cSHALL\u201d, \u201cSHALL NOT\u201d, \u201cSHOULD\u201d, \u201cSHOULD NOT\u201d, \u201cRECOMMENDED\u201d, \u201cNOT RECOMMENDED\u201d, \u201cMAY\u201d, and \u201cOPTIONAL\u201d are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals, as shown here. IRI prefixes Throughout the specification, the following IRI prefix names are used: Prefix name IRI prefix owl http://www.w3.org/2002/07/owl# rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs http://www.w3.org/2000/01/rdf-schema# semapv https://w3id.org/semapv/vocab/ skos http://www.w3.org/2004/02/skos/core# sssom https://w3id.org/sssom/ xsd http://www.w3.org/2001/XMLSchema# linkml https://w3id.org/linkml/","title":"Introduction"},{"location":"spec-intro/#specification-of-the-sssom-standard","text":"This document is the official specification for the SSSOM standard. It is divided in two sections covering the two different components of the standard: the specification for the data model , to manipulate SSSOM mappings and mapping sets in your programs; the specification for the serialisation formats , to read, write, and exchange SSSOM mapping sets. Both sections are normative .","title":"Specification of the SSSOM standard"},{"location":"spec-intro/#conventions-used-in-this-document","text":"","title":"Conventions used in this document"},{"location":"spec-intro/#key-words","text":"Throughout the specification, the key words \u201cMUST\u201d, \u201cMUST NOT\u201d, \u201cREQUIRED\u201d, \u201cSHALL\u201d, \u201cSHALL NOT\u201d, \u201cSHOULD\u201d, \u201cSHOULD NOT\u201d, \u201cRECOMMENDED\u201d, \u201cNOT RECOMMENDED\u201d, \u201cMAY\u201d, and \u201cOPTIONAL\u201d are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals, as shown here.","title":"Key words"},{"location":"spec-intro/#iri-prefixes","text":"Throughout the specification, the following IRI prefix names are used: Prefix name IRI prefix owl http://www.w3.org/2002/07/owl# rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs http://www.w3.org/2000/01/rdf-schema# semapv https://w3id.org/semapv/vocab/ skos http://www.w3.org/2004/02/skos/core# sssom https://w3id.org/sssom/ xsd http://www.w3.org/2001/XMLSchema# linkml https://w3id.org/linkml/","title":"IRI prefixes"},{"location":"spec-model/","text":"The SSSOM data model The SSSOM data model (hereafter \u201cthe model\u201d) defines the data structure to represent and manipulate SSSOM concepts. The model is formally described as a LinkML schema, from which the documentation is derived. This section provides an overview of the model and supplementary informations that may not be found in the schema (and its derived documentation) itself. Of note, the schema, not this section, is always the authoritative source of truth for all questions pertaining to the model. Overview The model consists in a handful of classes, the most important of them being the Mapping class and the MappingSet class . Any SSSOM implementation MUST support those two classes and all their slots; support for the other classes is OPTIONAL. The Mapping class represents an individual mapping. Fundamental slots in that class are: subject_id and object_id , referring to the entities being mapped to each other; predicate_id , referring to the relationship between the mapped entities; mapping_justification , which should provide the justification for the mapping. Those slots are mandatory (including the mapping_justification slot: the SSSOM standard posits that there can be no mapping without some form of justification) and an implementation MUST NOT allow the creation of a mapping object that does not have a value for any one of them. Other slots are intended to provide further details about a mapping. Those \u201cfurther details\u201d are sometimes referred to as \u201cmapping metadata\u201d, though the SSSOM standard makes no formal distinction between \u201cdata\u201d and \u201cmetadata\u201d \u2013 there are only \u201cdata about a mapping\u201d. The MappingSet class represents, well, a set of individual mappings, which are contained in the mappings slot (a list of Mapping instances). Other slots in that class are intended either to provide further details about the set itself (sometimes referred to as \u201cmapping set metadata\u201d, with the same caveat as above regarding the data/metadata distinction), or to provide common details for all the mappings in the set (see the Propagation of mapping set slots section further below for details). Of note, within a set, a mapping may not necessarily be uniquely identified by the combination of its four mandatory slots ( subject_id , predicate_id , object_id , and mapping_justification ). A set may very well contain several mappings with the same subject, predicate, object, and justification, but that differ on some of the other, complementary slots. Identifiers Throughout the model, identifiers to external resources are represented using the custom type EntityReference (based on the LinkML type uriorcurie ), which accepts both full-length IRIs and CURIEs as possible identifier formats. (Note however that serialisation formats may mandate the use of one identifier format over the other; for example, the SSSOM/TSV format requires the systematic use of CURIEs, whereas the OWL/RDF format conversely requires the systematic use of IRIs). Whenever the CURIE syntax is used in a mapping set (whether this is by choice of the SSSOM producer, or because it is mandated by the serialisation format), all CURIEs MUST be unambiguously resolvable into corresponding full-length IRIs without requiring any external resources. This means that any prefix name used MUST be properly declared in the set\u2019s curie_map slot, which is a dictionary associating a prefix name to an IRI prefix. By exception, prefix names listed in the table found in the IRI prefixes section are considered \u201cbuilt-in\u201d. As such, they MAY be omitted from the curie_map . If they are not omitted, they MUST point to the same IRI prefixes as in the aforementioned table. Propagation of mapping set slots As mentioned briefly above, there are two different types of slots in the MappingSet class: slots that provide informations about the set itself; slots that provide informations about all the mappings in the set. The latter are called \u201cpropagatable slots\u201d. 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 , mapping_tool , mapping_tool_version , object_match_field , object_preprocessing , object_source , object_source_version , object_type , subject_match_field , subject_preprocessing , subject_source , subject_source_version , subject_type . 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. Slots that are not in the above list (\u201cnon-propagatable slots\u201d) describe the mapping set itself, not the mappings it contains, even if the slot also exists on the Mapping class. For example, the creator_id slot, when used in the MappingSet class, is intended to refer to the creators of the set, not the creators of the individual mappings (which may be different, and which are listed in the creator_id slot of every mapping). Allowed and common mapping predicates Implementations MUST accept any arbitrary predicate in the predicate_id slot. The following mapping predicates are considered common, and implementations MAY encourage users to use them: Predicate Description owl:sameAs The subject and the object are instances (OWL individuals), and the two instances are the same. owl:equivalentClass The subject and the object are OWL classes, and the two classes are the same. owl:equivalentProperty The subject and the object are OWL object, data, or annotation properties, and the two properties are the same. rdfs:subClassOf The subject and the object are OWL classes, and the subject is a subclass of the object. rdfs:subPropertyOf The subject and the object are OWL object, data, or annotation properties, and the subject is a subproperty of the object. skos:relatedMatch The subject and the object are associated in some unspecified way. skos:closeMatch The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. skos:exactMatch The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. skos:narrowMatch The object is a narrower concept than the subject. skos:broadMatch The object is a broader concept than the subject. oboInOwl:hasDbXref Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go). rdfs:seeAlso The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. In addition, predicates from the following sources MAY also be encouraged: any relation from the Relation Ontology (RO) ; any relation under skos:mappingRelation in the Semantic Mapping Vocabulary . Literal mappings The SSSOM model is primarily intended to represent mappings between semantic entities. However, it may also be used to represent mappings where at least one side is a literal string that does not have an identifier of its own. Any such mapping is henceforth called a literal mapping . To represent a mapping whose subject (resp. object) is a literal: the subject_type (resp. object_type ) slot MUST be set to rdfs literal ; the subject_label (resp. object_label ) slot MUST be set to the literal itself; the subject_id (resp. object_id ) slot MAY be left empty. The last point is an exception to the normal rules about required slots, which state that a mapping must always have a subject_id and an object_id . Implementations MUST accept a mapping without a subject_id (resp. object_id ) if and only if the subject_type (resp. object_type ) slot is set to rdfs literal . All other slots in the Mapping class may be used normally in a literal mapping, with the same meaning as for a non-literal mapping. When computing the cardinality of mappings in a set (e.g. to set the value of the mapping_cardinality slot), if the mapping has a literal subject (resp. object), then the subject_label (resp. object_label ) slot must be used for determining the number of occurrences of the subject (resp. object) in the set. Representing unmapped entities The special value sssom:NoTermFound MAY be used as the object_id of a mapping to explicitly state that the subject of said mapping cannot be mapped to any entity in the domain represented by the object_source slot. Likewise, the sssom:NoTermFound value MAY be used as the subject_id of a mapping to state that the object of said mapping cannot be mapped to any entity in the domain represented by the subject_source slot. When that special value is used as the subject_id (respectively object_id ), the subject_source (respectively object_source ) slot SHOULD be defined. The sssom:NoTermFound value MUST NOT be used in any other slot than subject_id or object_id . The meaning of the NOT predicate modifier in a mapping that refers to sssom:NoTermFound is unspecified. When computing cardinality values (to fill the mapping_cardinality slot), mappings that refer to sssom:NoTermFound MUST be ignored. Non-standard slots Implementations are only REQUIRED to support the standard metadata slots defined in the SSSOM LinkML schema. However, implementations MAY support the use of supplementary, non-standard slots (hereafter called extension slots or simply extensions ). There are two types of extension slots: defined extension slots and undefined extension slots. Defined extensions Defined extensions are non-standard slots that are explicitly declared (or, defined ) before being used. Implementations SHOULD support the use of defined extensions. Extensions are defined in the extension_definition slot of the MappingSet object. Each definition is comprised of three elements: the name of the slot, as it will appear when used in a mapping set ( slot_name ); a property intended to specify the meaning of the slot ( property ); the type of values expected by the slot ( type_hint ). A definition MUST have at least a slot_name . The name MUST be a XML \u201cnon-colonized name\u201d (\u201cNCName\u201d, see Namespaces in XML, \u00a72 ). The name MUST NOT match the name of an existing standard slot. To avoid any conflicy with a future version of the SSSOM specification (which could introduce new standard slot names), implementations are strongly encouraged to craft extension slot names that start with the ext_ prefix. No new standard slot with a name starting with ext_ will ever be introduced in any future version of the standard. (This is an advice for SSSOM producers only; SSSOM consumers MUST NOT reject an extension slot solely on the basis that its name does not start with ext .) A definition SHOULD have a property . If it does not, implementations MUST automatically construct a default property by concatenating the prefix http://sssom.invalid/ with the name of the extension. The slot name and the property MUST be unique to each definition. No two definitions can share the same name and/or the same property. A definition MAY have a type_hint . If it does not, a default type of http://www.w3.org/2001/XMLSchema#string is assumed. Once defined, an extension slot may be used as a supplementary slot in either the Mapping class or the MappingSet class (or both), as if it was a normal, standard slot. How those slots are represented internally and provided to client code is left at the discretion of the implementations. Undefined extensions Undefined extensions are non-standard slots that are not explicitly defined as described in the previous section. Implementations MAY support undefined extensions. Upon encountering a non-standard slot that is not a defined extension, an implementation that supports undefined extensions MUST behave as if the slot had been defined with: a property constructed by catenating the prefix http://sssom.invalid/ to the name of the slot; a type_hint of http://www.w3.org/2001/XMLSchema#string . Restrictions on the values of extension slots General restrictions The following restrictions apply to all extension slots, regardless of whether they are defined or undefined. Each mapping set and each mapping can have at most one value for each extension slot. The expected behaviour upon encountering a repeated extension slot is unspecified. An extension value MUST be either a string or an instance of a simple data type such as a numerical value (integer or floating point), a boolean value, or a date or datetime value. In particular, composite data structures (e.g. lists or dictionaries) MUST NOT be used as extension values. It is always possible to use arbitrarily complex values by encoding them as literal strings. However, how complex values would be encoded is out of scope of this specification; implementations MUST treat such values as opaque strings. Further restrictions for typed defined extensions If a defined extension slot has a type_hint other than http://www.w3.org/2001/XMLSchema#string , implementations MAY enforce further constraints on extension values based on the type hint, according to the following table: Type hint Constraints http://www.w3.org/2001/XMLSchema#integer Implementations MAY check that the value is an integer http://www.w3.org/2001/XMLSchema#double Implementations MAY check that the value is a floating number http://www.w3.org/2001/XMLSchema#boolean Implementations MAY check that the value is either true or false http://www.w3.org/2001/XMLSchema#date Implementations MAY check that the value is a date in the ISO 8601 format ( yyyy-mm-dd ) http://www.w3.org/2001/XMLSchema#datetime Implementations MAY check that the value is a date and time value in the ISO 8601 format ( yyyy-mm-ddThh:mm:ssTZ ) Implementations MAY decide to recognise more types and to enforce type-specific constraints. For example, an implementation could recognise the type http://www.w3.org/2001/XMLSchema#negativeInteger and check that the value starts with a minus sign.","title":"Introduction"},{"location":"spec-model/#the-sssom-data-model","text":"The SSSOM data model (hereafter \u201cthe model\u201d) defines the data structure to represent and manipulate SSSOM concepts. The model is formally described as a LinkML schema, from which the documentation is derived. This section provides an overview of the model and supplementary informations that may not be found in the schema (and its derived documentation) itself. Of note, the schema, not this section, is always the authoritative source of truth for all questions pertaining to the model.","title":"The SSSOM data model"},{"location":"spec-model/#overview","text":"The model consists in a handful of classes, the most important of them being the Mapping class and the MappingSet class . Any SSSOM implementation MUST support those two classes and all their slots; support for the other classes is OPTIONAL. The Mapping class represents an individual mapping. Fundamental slots in that class are: subject_id and object_id , referring to the entities being mapped to each other; predicate_id , referring to the relationship between the mapped entities; mapping_justification , which should provide the justification for the mapping. Those slots are mandatory (including the mapping_justification slot: the SSSOM standard posits that there can be no mapping without some form of justification) and an implementation MUST NOT allow the creation of a mapping object that does not have a value for any one of them. Other slots are intended to provide further details about a mapping. Those \u201cfurther details\u201d are sometimes referred to as \u201cmapping metadata\u201d, though the SSSOM standard makes no formal distinction between \u201cdata\u201d and \u201cmetadata\u201d \u2013 there are only \u201cdata about a mapping\u201d. The MappingSet class represents, well, a set of individual mappings, which are contained in the mappings slot (a list of Mapping instances). Other slots in that class are intended either to provide further details about the set itself (sometimes referred to as \u201cmapping set metadata\u201d, with the same caveat as above regarding the data/metadata distinction), or to provide common details for all the mappings in the set (see the Propagation of mapping set slots section further below for details). Of note, within a set, a mapping may not necessarily be uniquely identified by the combination of its four mandatory slots ( subject_id , predicate_id , object_id , and mapping_justification ). A set may very well contain several mappings with the same subject, predicate, object, and justification, but that differ on some of the other, complementary slots.","title":"Overview"},{"location":"spec-model/#identifiers","text":"Throughout the model, identifiers to external resources are represented using the custom type EntityReference (based on the LinkML type uriorcurie ), which accepts both full-length IRIs and CURIEs as possible identifier formats. (Note however that serialisation formats may mandate the use of one identifier format over the other; for example, the SSSOM/TSV format requires the systematic use of CURIEs, whereas the OWL/RDF format conversely requires the systematic use of IRIs). Whenever the CURIE syntax is used in a mapping set (whether this is by choice of the SSSOM producer, or because it is mandated by the serialisation format), all CURIEs MUST be unambiguously resolvable into corresponding full-length IRIs without requiring any external resources. This means that any prefix name used MUST be properly declared in the set\u2019s curie_map slot, which is a dictionary associating a prefix name to an IRI prefix. By exception, prefix names listed in the table found in the IRI prefixes section are considered \u201cbuilt-in\u201d. As such, they MAY be omitted from the curie_map . If they are not omitted, they MUST point to the same IRI prefixes as in the aforementioned table.","title":"Identifiers"},{"location":"spec-model/#propagation-of-mapping-set-slots","text":"As mentioned briefly above, there are two different types of slots in the MappingSet class: slots that provide informations about the set itself; slots that provide informations about all the mappings in the set. The latter are called \u201cpropagatable slots\u201d. 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 , mapping_tool , mapping_tool_version , object_match_field , object_preprocessing , object_source , object_source_version , object_type , subject_match_field , subject_preprocessing , subject_source , subject_source_version , subject_type . 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. Slots that are not in the above list (\u201cnon-propagatable slots\u201d) describe the mapping set itself, not the mappings it contains, even if the slot also exists on the Mapping class. For example, the creator_id slot, when used in the MappingSet class, is intended to refer to the creators of the set, not the creators of the individual mappings (which may be different, and which are listed in the creator_id slot of every mapping).","title":"Propagation of mapping set slots"},{"location":"spec-model/#allowed-and-common-mapping-predicates","text":"Implementations MUST accept any arbitrary predicate in the predicate_id slot. The following mapping predicates are considered common, and implementations MAY encourage users to use them: Predicate Description owl:sameAs The subject and the object are instances (OWL individuals), and the two instances are the same. owl:equivalentClass The subject and the object are OWL classes, and the two classes are the same. owl:equivalentProperty The subject and the object are OWL object, data, or annotation properties, and the two properties are the same. rdfs:subClassOf The subject and the object are OWL classes, and the subject is a subclass of the object. rdfs:subPropertyOf The subject and the object are OWL object, data, or annotation properties, and the subject is a subproperty of the object. skos:relatedMatch The subject and the object are associated in some unspecified way. skos:closeMatch The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. skos:exactMatch The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. skos:narrowMatch The object is a narrower concept than the subject. skos:broadMatch The object is a broader concept than the subject. oboInOwl:hasDbXref Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go). rdfs:seeAlso The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. In addition, predicates from the following sources MAY also be encouraged: any relation from the Relation Ontology (RO) ; any relation under skos:mappingRelation in the Semantic Mapping Vocabulary .","title":"Allowed and common mapping predicates"},{"location":"spec-model/#literal-mappings","text":"The SSSOM model is primarily intended to represent mappings between semantic entities. However, it may also be used to represent mappings where at least one side is a literal string that does not have an identifier of its own. Any such mapping is henceforth called a literal mapping . To represent a mapping whose subject (resp. object) is a literal: the subject_type (resp. object_type ) slot MUST be set to rdfs literal ; the subject_label (resp. object_label ) slot MUST be set to the literal itself; the subject_id (resp. object_id ) slot MAY be left empty. The last point is an exception to the normal rules about required slots, which state that a mapping must always have a subject_id and an object_id . Implementations MUST accept a mapping without a subject_id (resp. object_id ) if and only if the subject_type (resp. object_type ) slot is set to rdfs literal . All other slots in the Mapping class may be used normally in a literal mapping, with the same meaning as for a non-literal mapping. When computing the cardinality of mappings in a set (e.g. to set the value of the mapping_cardinality slot), if the mapping has a literal subject (resp. object), then the subject_label (resp. object_label ) slot must be used for determining the number of occurrences of the subject (resp. object) in the set.","title":"Literal mappings"},{"location":"spec-model/#representing-unmapped-entities","text":"The special value sssom:NoTermFound MAY be used as the object_id of a mapping to explicitly state that the subject of said mapping cannot be mapped to any entity in the domain represented by the object_source slot. Likewise, the sssom:NoTermFound value MAY be used as the subject_id of a mapping to state that the object of said mapping cannot be mapped to any entity in the domain represented by the subject_source slot. When that special value is used as the subject_id (respectively object_id ), the subject_source (respectively object_source ) slot SHOULD be defined. The sssom:NoTermFound value MUST NOT be used in any other slot than subject_id or object_id . The meaning of the NOT predicate modifier in a mapping that refers to sssom:NoTermFound is unspecified. When computing cardinality values (to fill the mapping_cardinality slot), mappings that refer to sssom:NoTermFound MUST be ignored.","title":"Representing unmapped entities"},{"location":"spec-model/#non-standard-slots","text":"Implementations are only REQUIRED to support the standard metadata slots defined in the SSSOM LinkML schema. However, implementations MAY support the use of supplementary, non-standard slots (hereafter called extension slots or simply extensions ). There are two types of extension slots: defined extension slots and undefined extension slots.","title":"Non-standard slots"},{"location":"spec-model/#defined-extensions","text":"Defined extensions are non-standard slots that are explicitly declared (or, defined ) before being used. Implementations SHOULD support the use of defined extensions. Extensions are defined in the extension_definition slot of the MappingSet object. Each definition is comprised of three elements: the name of the slot, as it will appear when used in a mapping set ( slot_name ); a property intended to specify the meaning of the slot ( property ); the type of values expected by the slot ( type_hint ). A definition MUST have at least a slot_name . The name MUST be a XML \u201cnon-colonized name\u201d (\u201cNCName\u201d, see Namespaces in XML, \u00a72 ). The name MUST NOT match the name of an existing standard slot. To avoid any conflicy with a future version of the SSSOM specification (which could introduce new standard slot names), implementations are strongly encouraged to craft extension slot names that start with the ext_ prefix. No new standard slot with a name starting with ext_ will ever be introduced in any future version of the standard. (This is an advice for SSSOM producers only; SSSOM consumers MUST NOT reject an extension slot solely on the basis that its name does not start with ext .) A definition SHOULD have a property . If it does not, implementations MUST automatically construct a default property by concatenating the prefix http://sssom.invalid/ with the name of the extension. The slot name and the property MUST be unique to each definition. No two definitions can share the same name and/or the same property. A definition MAY have a type_hint . If it does not, a default type of http://www.w3.org/2001/XMLSchema#string is assumed. Once defined, an extension slot may be used as a supplementary slot in either the Mapping class or the MappingSet class (or both), as if it was a normal, standard slot. How those slots are represented internally and provided to client code is left at the discretion of the implementations.","title":"Defined extensions"},{"location":"spec-model/#undefined-extensions","text":"Undefined extensions are non-standard slots that are not explicitly defined as described in the previous section. Implementations MAY support undefined extensions. Upon encountering a non-standard slot that is not a defined extension, an implementation that supports undefined extensions MUST behave as if the slot had been defined with: a property constructed by catenating the prefix http://sssom.invalid/ to the name of the slot; a type_hint of http://www.w3.org/2001/XMLSchema#string .","title":"Undefined extensions"},{"location":"spec-model/#restrictions-on-the-values-of-extension-slots","text":"","title":"Restrictions on the values of extension slots"},{"location":"spec-model/#general-restrictions","text":"The following restrictions apply to all extension slots, regardless of whether they are defined or undefined. Each mapping set and each mapping can have at most one value for each extension slot. The expected behaviour upon encountering a repeated extension slot is unspecified. An extension value MUST be either a string or an instance of a simple data type such as a numerical value (integer or floating point), a boolean value, or a date or datetime value. In particular, composite data structures (e.g. lists or dictionaries) MUST NOT be used as extension values. It is always possible to use arbitrarily complex values by encoding them as literal strings. However, how complex values would be encoded is out of scope of this specification; implementations MUST treat such values as opaque strings.","title":"General restrictions"},{"location":"spec-model/#further-restrictions-for-typed-defined-extensions","text":"If a defined extension slot has a type_hint other than http://www.w3.org/2001/XMLSchema#string , implementations MAY enforce further constraints on extension values based on the type hint, according to the following table: Type hint Constraints http://www.w3.org/2001/XMLSchema#integer Implementations MAY check that the value is an integer http://www.w3.org/2001/XMLSchema#double Implementations MAY check that the value is a floating number http://www.w3.org/2001/XMLSchema#boolean Implementations MAY check that the value is either true or false http://www.w3.org/2001/XMLSchema#date Implementations MAY check that the value is a date in the ISO 8601 format ( yyyy-mm-dd ) http://www.w3.org/2001/XMLSchema#datetime Implementations MAY check that the value is a date and time value in the ISO 8601 format ( yyyy-mm-ddThh:mm:ssTZ ) Implementations MAY decide to recognise more types and to enforce type-specific constraints. For example, an implementation could recognise the type http://www.w3.org/2001/XMLSchema#negativeInteger and check that the value starts with a minus sign.","title":"Further restrictions for typed defined extensions"},{"location":"sssom/","text":"sssom Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) URI: https://w3id.org/sssom/schema/","title":"sssom"},{"location":"sssom/#sssom","text":"Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) URI: https://w3id.org/sssom/schema/","title":"sssom"},{"location":"subject_category/","text":"subject_category URI : sssom:subject_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256 Schema developer documentation LinkML source name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category domain_of: - mapping range: string","title":"subject_category"},{"location":"subject_category/#subject_category","text":"URI : sssom:subject_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases.","title":"subject_category"},{"location":"subject_category/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_category/#examples","text":"Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.)","title":"Examples"},{"location":"subject_category/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256","title":"See Also"},{"location":"subject_category/#schema-developer-documentation","text":"LinkML source name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"subject_id/","text":"subject_id URI : owl:annotatedSource Applicable to : Mapping Description The ID of the subject of the mapping. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' Schema developer documentation LinkML source name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id domain_of: - mapping range: EntityReference","title":"subject_id"},{"location":"subject_id/#subject_id","text":"URI : owl:annotatedSource Applicable to : Mapping Description The ID of the subject of the mapping.","title":"subject_id"},{"location":"subject_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_id/#examples","text":"Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears'","title":"Examples"},{"location":"subject_id/#schema-developer-documentation","text":"LinkML source name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_label/","text":"subject_label URI : sssom:subject_label Applicable to : Mapping Description The label of subject of the mapping Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Examples Example: Thickened ears Example value : Thickened ears Schema developer documentation LinkML source name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label domain_of: - mapping range: string recommended: true","title":"subject_label"},{"location":"subject_label/#subject_label","text":"URI : sssom:subject_label Applicable to : Mapping Description The label of subject of the mapping","title":"subject_label"},{"location":"subject_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"subject_label/#examples","text":"Example: Thickened ears Example value : Thickened ears","title":"Examples"},{"location":"subject_label/#schema-developer-documentation","text":"LinkML source name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label domain_of: - mapping range: string recommended: true","title":"Schema developer documentation"},{"location":"subject_match_field/","text":"subject_match_field URI : sssom:subject_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the subject) that was used for the match. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field domain_of: - mapping set - mapping range: EntityReference","title":"subject_match_field"},{"location":"subject_match_field/#subject_match_field","text":"URI : sssom:subject_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the subject) that was used for the match.","title":"subject_match_field"},{"location":"subject_match_field/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_match_field/#schema-developer-documentation","text":"LinkML source name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_preprocessing/","text":"subject_preprocessing URI : sssom:subject_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval Schema developer documentation LinkML source name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"subject_preprocessing"},{"location":"subject_preprocessing/#subject_preprocessing","text":"URI : sssom:subject_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.","title":"subject_preprocessing"},{"location":"subject_preprocessing/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_preprocessing/#examples","text":"Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval","title":"Examples"},{"location":"subject_preprocessing/#schema-developer-documentation","text":"LinkML source name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_source/","text":"subject_source URI : sssom:subject_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the subject. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource. Schema developer documentation LinkML source name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source domain_of: - mapping set - mapping range: EntityReference","title":"subject_source"},{"location":"subject_source/#subject_source","text":"URI : sssom:subject_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the subject.","title":"subject_source"},{"location":"subject_source/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_source/#examples","text":"Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource.","title":"Examples"},{"location":"subject_source/#schema-developer-documentation","text":"LinkML source name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_source_version/","text":"subject_source_version URI : sssom:subject_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the subject term. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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') Schema developer documentation LinkML source name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version domain_of: - mapping set - mapping range: string","title":"subject_source_version"},{"location":"subject_source_version/#subject_source_version","text":"URI : sssom:subject_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the subject term.","title":"subject_source_version"},{"location":"subject_source_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_source_version/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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')","title":"Examples"},{"location":"subject_source_version/#schema-developer-documentation","text":"LinkML source name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"subject_type/","text":"subject_type URI : sssom:subject_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped. Properties Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: owl:Class Example value : owl:Class Schema developer documentation LinkML source name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type domain_of: - mapping set - mapping range: entity_type_enum","title":"subject_type"},{"location":"subject_type/#subject_type","text":"URI : sssom:subject_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped.","title":"subject_type"},{"location":"subject_type/#properties","text":"Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_type/#examples","text":"Example: owl:Class Example value : owl:Class","title":"Examples"},{"location":"subject_type/#schema-developer-documentation","text":"LinkML source name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type domain_of: - mapping set - mapping range: entity_type_enum","title":"Schema developer documentation"},{"location":"toolkit/","text":"The SSSOM Toolkit In the following we will give a brief introduction into the SSSOM toolkit. For more detailed documentation please refer to https://mapping-commons.github.io/sssom-py. Pre-requisites Complete the basic SSSOM tutorial Install SSSOM toolkit . Alternatively, you can install the Ontology Development Kit (ODK) and follow the tutorial using its docker image . We are assuming a Unix shell for this tutorial, but most of the principles should apply to the Windows CMD as well. Windows users may prefer to install the ODK (see above). Overview SSSOM toolkit (STK), previously known as sssom-py , is a set of utility methods for processing SSSOM files, packaged as a Command Line Client (CLI) and a python package . In the following, we will extract mappings from an ontology an process them with the CLI. The goal is to give a sense of the functionality of the toolkit. Additional and more up-to-date information on usage can be found here . Table of Contents parse : Extracting mappings from an external source merge : Combining mappings from several sources convert : Converting an SSSOM mapping table into different formats Extracting mappings from an external source One key issue developers are faced with is to convert various different mapping formats into a common representation (e.g. SSSOM). The SSSOM toolkit (STK) already implements a number of commonly use mapping formats: OWL Ontologies Alignment API Format (format used by the Ontology Alignment Evaluation Initiative, OAEI) Parsers for SNOMED mapping format and FHIR Concept Map are in the making , June 2022. Here we use Uberon, an anatomy ontology in the biomedical domain. wget http://purl.obolibrary.org/obo/uberon/uberon-base.json -O uberon-base.json Feel free to download the file manually if you do not have wget installed. Now use sssom parse to extract all the mappings provided by the ontology. As there are multiple json based formats that can be parsed, you have to tell sssom which format you are using: --input-format obographs-json . sssom parse uberon-base.json --input-format obographs-json --output uberon.sssom.tsv From a CLI design perspective we already notice a few things: uberon-base.json is passed to the STK as an argument (without an option like -i ). This is the case for most primary inputs (mapping tables, source files) througout the SSSOM client. The output generated by the above command is large. There seem to be a lot of messages where some URL does not follow any known prefixes : WARNING:root:http://dbpedia.org/ontology/AnatomicalStructure does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nlx_subcell_100205 does not follow any known prefixes WARNING:root:http://neurolex.org/wiki/Category:Embryonic_organism does not follow any known prefixes WARNING:root:http://www.informatics.jax.org/cookbook/figures/figure20.shtml does not follow any known prefixes WARNING:root:http://mbe.oxfordjournals.org/content/26/3/613/F1.large.jpg does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/glossary/images/450x218xEctocuneiform.gif.pagespeed.ic.kaiuLYQELL.png does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/bones/dermal/images/289x311xPalatine1.gif.pagespeed.ic.tglmNBrF4D.png does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nifext_14 does not follow any known prefixes .... Understanding this is important to understand a lot about how SSSOM treats entities in general. Why are there so many does not follow any known prefixes warnings? CURIEs are a key concept for the representation of SSSOM documents, in particular its table. All fields that constitute a reference to some entity, such as ids ( subject_id , object_id , predicate_id ), and other fields such as mapping_justification are represented in CURIE syntax. The Semantic Web uses URIs (which look more like URLs rather than CURIEs) to refer to entities - there is, however, no standard protocol to translate a URI into a Compact URI (or CURIE). Efforts such as https://bioregistry.io/, https://github.com/prefixcommons or https://identifiers.org/ try to bring a bit of an organisation to prefixes. In particular the former two curate maps between prefixes and URIs. URI: http://purl.obolibrary.org/obo/MONDO_0000001 CURIE: MONDO:0000001 PREFIX: MONDO URI expansion: http://purl.obolibrary.org/obo/MONDO_ Now the problem is that over the years, many very ideosyncratic URIs where used to denote entities in ontologies. While the STK tries to figure out the correct prefixes using https://bioregistry.io/, many times it fails - in these cases, the user must provide its own prefix map . Lets create a simple one, and save it as metadata.yml (we call it \"metadata\", because we will add more metadata to it in this tutorial): curie_map: dbpedia: http://dbpedia.org/ontology/ We can now use this in addition to the default prefix maps : sssom parse uberon-base.json --input-format obographs-json --metadata metadata.yml --prefix-map-mode merged --output uberon.sssom.tsv Combining mappings from several sources Converting an SSSOM mapping table into different formats Other methods: cliquesummary correlations crosstab dedupe diff dosql partition ptable reconcile-prefixes rewire sort sparql split validate Under construction .","title":"A basic guide for the SSSOM toolkit"},{"location":"toolkit/#the-sssom-toolkit","text":"In the following we will give a brief introduction into the SSSOM toolkit. For more detailed documentation please refer to https://mapping-commons.github.io/sssom-py.","title":"The SSSOM Toolkit"},{"location":"toolkit/#pre-requisites","text":"Complete the basic SSSOM tutorial Install SSSOM toolkit . Alternatively, you can install the Ontology Development Kit (ODK) and follow the tutorial using its docker image . We are assuming a Unix shell for this tutorial, but most of the principles should apply to the Windows CMD as well. Windows users may prefer to install the ODK (see above).","title":"Pre-requisites"},{"location":"toolkit/#overview","text":"SSSOM toolkit (STK), previously known as sssom-py , is a set of utility methods for processing SSSOM files, packaged as a Command Line Client (CLI) and a python package . In the following, we will extract mappings from an ontology an process them with the CLI. The goal is to give a sense of the functionality of the toolkit. Additional and more up-to-date information on usage can be found here .","title":"Overview"},{"location":"toolkit/#table-of-contents","text":"parse : Extracting mappings from an external source merge : Combining mappings from several sources convert : Converting an SSSOM mapping table into different formats","title":"Table of Contents"},{"location":"toolkit/#extracting-mappings-from-an-external-source","text":"One key issue developers are faced with is to convert various different mapping formats into a common representation (e.g. SSSOM). The SSSOM toolkit (STK) already implements a number of commonly use mapping formats: OWL Ontologies Alignment API Format (format used by the Ontology Alignment Evaluation Initiative, OAEI) Parsers for SNOMED mapping format and FHIR Concept Map are in the making , June 2022. Here we use Uberon, an anatomy ontology in the biomedical domain. wget http://purl.obolibrary.org/obo/uberon/uberon-base.json -O uberon-base.json Feel free to download the file manually if you do not have wget installed. Now use sssom parse to extract all the mappings provided by the ontology. As there are multiple json based formats that can be parsed, you have to tell sssom which format you are using: --input-format obographs-json . sssom parse uberon-base.json --input-format obographs-json --output uberon.sssom.tsv From a CLI design perspective we already notice a few things: uberon-base.json is passed to the STK as an argument (without an option like -i ). This is the case for most primary inputs (mapping tables, source files) througout the SSSOM client. The output generated by the above command is large. There seem to be a lot of messages where some URL does not follow any known prefixes : WARNING:root:http://dbpedia.org/ontology/AnatomicalStructure does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nlx_subcell_100205 does not follow any known prefixes WARNING:root:http://neurolex.org/wiki/Category:Embryonic_organism does not follow any known prefixes WARNING:root:http://www.informatics.jax.org/cookbook/figures/figure20.shtml does not follow any known prefixes WARNING:root:http://mbe.oxfordjournals.org/content/26/3/613/F1.large.jpg does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/glossary/images/450x218xEctocuneiform.gif.pagespeed.ic.kaiuLYQELL.png does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/bones/dermal/images/289x311xPalatine1.gif.pagespeed.ic.tglmNBrF4D.png does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nifext_14 does not follow any known prefixes .... Understanding this is important to understand a lot about how SSSOM treats entities in general.","title":"Extracting mappings from an external source"},{"location":"toolkit/#why-are-there-so-many-does-not-follow-any-known-prefixes-warnings","text":"CURIEs are a key concept for the representation of SSSOM documents, in particular its table. All fields that constitute a reference to some entity, such as ids ( subject_id , object_id , predicate_id ), and other fields such as mapping_justification are represented in CURIE syntax. The Semantic Web uses URIs (which look more like URLs rather than CURIEs) to refer to entities - there is, however, no standard protocol to translate a URI into a Compact URI (or CURIE). Efforts such as https://bioregistry.io/, https://github.com/prefixcommons or https://identifiers.org/ try to bring a bit of an organisation to prefixes. In particular the former two curate maps between prefixes and URIs. URI: http://purl.obolibrary.org/obo/MONDO_0000001 CURIE: MONDO:0000001 PREFIX: MONDO URI expansion: http://purl.obolibrary.org/obo/MONDO_ Now the problem is that over the years, many very ideosyncratic URIs where used to denote entities in ontologies. While the STK tries to figure out the correct prefixes using https://bioregistry.io/, many times it fails - in these cases, the user must provide its own prefix map . Lets create a simple one, and save it as metadata.yml (we call it \"metadata\", because we will add more metadata to it in this tutorial): curie_map: dbpedia: http://dbpedia.org/ontology/ We can now use this in addition to the default prefix maps : sssom parse uberon-base.json --input-format obographs-json --metadata metadata.yml --prefix-map-mode merged --output uberon.sssom.tsv","title":"Why are there so many does not follow any known prefixes warnings?"},{"location":"toolkit/#combining-mappings-from-several-sources","text":"","title":"Combining mappings from several sources"},{"location":"toolkit/#converting-an-sssom-mapping-table-into-different-formats","text":"","title":"Converting an SSSOM mapping table into different formats"},{"location":"toolkit/#other-methods","text":"cliquesummary correlations crosstab dedupe diff dosql partition ptable reconcile-prefixes rewire sort sparql split validate Under construction .","title":"Other methods:"},{"location":"training/","text":"SSSOM Training materials Elevator pitch Tutorials and Guides Related tutorials Elevator pitch Tutorials and Guides Mapping curation with SSSOM Are these two entities the same? A guide. . An important tutorial that explains that it is not directly possible to determine if two things are the same across ontologies, but its still worth doing when explicitly recording the rationale. Linking across vocabularies: Semantic Entity Matching : Entity matching is the process of establishing a link between an identifier in one semantic space to an identifier in another. There are many cultures of thought around entity matching, including Ontology Matching, Entity Resolution and Entity Linking. Related tutorials Introduction to processing mappings with SSSOM and sssom-py CLI Introduction to matching with OAK lexmatch Curating Semantic Mappings with Biomappings","title":"Overview"},{"location":"training/#sssom-training-materials","text":"Elevator pitch Tutorials and Guides Related tutorials","title":"SSSOM Training materials"},{"location":"training/#elevator-pitch","text":"","title":"Elevator pitch"},{"location":"training/#tutorials-and-guides","text":"Mapping curation with SSSOM Are these two entities the same? A guide. . An important tutorial that explains that it is not directly possible to determine if two things are the same across ontologies, but its still worth doing when explicitly recording the rationale. Linking across vocabularies: Semantic Entity Matching : Entity matching is the process of establishing a link between an identifier in one semantic space to an identifier in another. There are many cultures of thought around entity matching, including Ontology Matching, Entity Resolution and Entity Linking.","title":"Tutorials and Guides"},{"location":"training/#related-tutorials","text":"Introduction to processing mappings with SSSOM and sssom-py CLI Introduction to matching with OAK lexmatch Curating Semantic Mappings with Biomappings","title":"Related tutorials"},{"location":"tutorial/","text":"Introduction to mapping curation with SSSOM Mappings between entities from ontologies, terminologies and databases are created for many reasons (data integration, knowledge graphs) and maintained in many different ways (automated matching, manual curation). In the following tutorial, we will learn how to curate semantic mappings manually using SSSOM. Knowledge about manual mapping curation is important even in scenarios where most, if not all, of the mapping curation is performed automatically - the basic principles are still the same. Pre-requisites We expect the reader of this tutorial to have a basic understanding of the following: What are ontology classes? What is a database? What is an (ontology) mapping? Why do we need to map across ontologies and between databases and ontologies? We do provide a few materials in the Background section below that touch on the above concepts, but a detailed discussion is out of scope. Table of contents Background Ontology alignment What are we mapping? CURIEs, URIs and databases How to create an SSSOM mapping set from scratch Manually curating mapping sets Automated processing 1: Creating an embedded SSSOM file Background As a reminder, a SSSOM mapping comprises three major components: The mapping itself, that is, a triple that reflects a correspondence of a subject entity, for example a class in an ontology, to an object entity, for example an identifier in some database, via a semantic mapping predicate , such as skos:exactMatch . A mapping justification , the process or activity that led us to consider the mapping to be correct or reasonable (typical examples: labels match exactly; two classes are logically equivalent; a domain expert determined that two terms reflect the same real world concept). Provenance metadata , including information about author and mapping_tool . In the following, we will give pointers to some useful background materials before we describe how SSSOM mappings are created. Ontology alignment/matching Ontology alignment is the process of determining correspondences between ontological concepts. The usage of \"alignment\", \"matching\" and \"mapping\" is fuzzy in practice. From the perspective of SSSOM, alignment usually involves determining all (or a more or less complete set of) correspondences between ontological concepts of two or more source ontologies. The most important resource on the subject is \"Ontology Matching\" by J\u00e9r\u00f4me Euzenat and Pavel Shvaiko. If you are interested in really diving into the subject, there is no avoiding this book! This 25 minute course unit by the OpenHPI gives a nice overview over the area, which is relevant to all mapping activities: Another useful overview is this one by the Knowledge and Data VU Amsterdam. Especially after minute 12, we learn a bit about the differences of OWL and SKOS. A 10 minute deep-dive into Jerome Euzenat classification of ontology matching techniques can be seen here: What are we mapping? In SSSOM we are concerned with mapping information entities , i.e. representations of a real world entities. Examples of such entities are: Classes, Individuals and Properties in an ontology. Entities in Databases, such as a specific person in a \"Person\" table of a relational database. A specific value in the slot of a data model, for example the \"UNIVERSITY\" constant in the highest-degree enumeration for a demographics survey data model. A specific code from a code system or terminology such as ICD10CM. Information entities represent real world objects such as diseases (e.g. Alzheimer's, Diabetes), kinds of vegetables (Asparagus, Broccoli), concrete instances of vegetables (a specific broccoli that was sold in your local supermarket yesterday). What kind of entities can we not map with SSSOM? Some of the limitations of SSSOM are discussed in our paper . A selection of the most important things that cannot be mapped at the moment: Compound/complex entities, i.e. entities that are defined by more than one term. For example, we cannot currently map \"Raw apple\" (subject) to \"Apple\" and \"Raw\" (two objects). Anything that is not an entity, e.g. unit conversion rules (1000mg maps to 1g * 1000) or functions. Highly contextual entities like \"PERSON:1\" as they enter the hospital. As a rule of thumb, we can map any entity for which (1) we can provide a single identifier and (2) whose identifier establishes its context (i.e. no further information is needed to understand the meaning of the identifier). Note that literal values are a special case - SSSOM is not designed for mapping literals to entity identifiers, but there are some discussions on how to do this anyways here . CURIEs, URIs and databases A mapping involves three entities: A subject (the entity which is mapped to some other entity) An object (the entity the subject is mapped to) A semantic mapping predicate , such as \"skos:exactMatch\" which defines how the subject entity is mapped to the object entity. All three must be referred to by an identifier in CURIE syntax ( Compact URI ) when using the SSSOM table format or JSON, or an IRI (Internationalized Resource Identifier) when you are using the RDF representation of SSSOM. This is necessary to ensure that entities are globally unique and mapping sets are fully interoperable across an organisation and beyond. While these concepts are common practice in the Semantic Web world, they may be less well understood in the database world. In fact, they can be quite awkward: - Your database my use p9787869 to identify a specific person in a \"Person\" table of a relational database. - Your data model for a demographics survey uses, among others, the UNIVERSITY constant in the highest-degree enumeration. To be compliant with SSSOM, such values must be \"curified\". While this process sounds daunting at first, it is essential: Both the p9787869 identifier and the UNIVERSITY constant may be used in different contexts (different databases or data models) to refer to entirely different entities! While there is no 100% reliable guide for \"curification\", we usually recommend the following steps: Choose a globally unique URI prefix which can unambiguously define the context of your entity. For example (1) http://embl.org/ebi/person/p9787869 to refer to the person in your Person table and (2) http://embl.org/demographics-survey-datamodel/demographics.highest_education#UNIVERSITY . In an ideal world, these can be de-referenced (i.e. you can look them up in a web-browser), but the important thing is that they are globally unique (and persistent), so that they cannot be confused with, for example, the UNIVERSITY code in another data model. We select a reasonable prefix for the code, for example (1) embl.ebi.person and (2) demographics-survey-datamodel.demographics.highest_education . Note these do not need to be globally unique anymore. Indeed, you could, if you wanted to, use (much) shorter prefixes. (NOTE: some people disagree with this and strive for globally unique prefixes. In the biomedical domain, for example, we try to coordinate prefixes at http://bioregistry.io/. This is not however, necessary when using SSSOM). We record the prefixes and their URI prefixes (sometimes called URI expansions) in the curie_map of our SSSOM file: curie_map: embl.ebi.person: \"http://embl.org/ebi/person/\" demographics-survey-datamodel.demographics.highest_education: \"http://embl.org/demographics-survey-datamodel/demographics.highest_education#\" Now we can refer to our entities in the SSSOM mapping table like this: (1) embl.ebi.person:p9787869 and (2) demographics-survey-datamodel.demographics.highest_education:UNIVERSITY . This may strike some users as verbose - but the concept of unique identifiers for all information entities is at the heart of SSSOM . There is an initial cost to carefully defining namespaces for the various vocabularies and contexts (data model enums, value sets), but the ability to unambiguously refer to an entity will pay of as the organisation grows and data needs to be integrated from a wide variety of sources. Tangent: See here for an example how FHIR , a standard for health care data exchange, published by HL7, deals with this: Rather than using a lot of prefixes, FHIR chooses to have one small namespace for fhir , and then having the path to the data model element all the way to its value as the local identifier. How to create an SSSOM mapping set from scratch SSSOM mapping sets can be created as part of automated processes, like ontology matchers, or manually by ontology curators. While there is overlap, it makes sense to look at both cases separately. To remind yourself why you should build SSSOM mapping sets in the first place, please refer to the FAQ . Manually curating mapping sets To gradually improve terminological mapping practices we are proposing a 5-star system for mappings . For the sake of this tutorial, we will focus on producing a solid 3-Star mapping set with the following metadata: Core mapping metadata : subject_id : The ID of the subject of the mapping predicate_id : The ID of the predicate of the mapping object_id : The ID of the object of the mapping Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. Basic provenance metadata : mapping_date : The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. author_id : Identifies the persons or groups responsible for asserting the mappings. Recommended to be a (pipe-separated) list of ORCIDs or otherwise identifying URLs, but any identifying string (such as name and affiliation) is permissible. mapping_set_description : A description of the mapping set, providing context and motivation. license : An identifier for a license description. mapping_set_id : A unique identifier of the mapping set. mapping_set_version : The version of a mapping set. subject_source : URI of source the subject. subject_source_version : The version of the source of the subject. object_source : URI of source the subject. object_source_version : The version of the source of the object. confidence : the level of certainty you have for the mapping to be true (based on the process used to confirm or generate it). Some convenience metadata subject_label : The human readable label of the subject. object_label : The human readable label of the object. The tutorial scenario You are charged with aligning your organisations (KEWL FOODIE INC) internal database about food and nutrition with Food Ontology (FOODON) . In your database, you have a table with food items: ID LABEL F001 apple F002 gala F003 pink F004 braeburn As a first pass, you are tasked to map the food items (kinds of apples) in your database to classes in the FOODON ontology. Getting the tools together To complete this tutorial, we need the following tools: A table editor. In this tutorial we will use Google Sheets . Manually curating mappings is often done in a collaborative fashion. We like Google Sheets because it allows multiple people to edit the same mapping set at once. OPTIONAL: The SSSOM toolkit installed (requires python 3.9+). Creating a first draft of the mappings First create a google sheet with the following columns: subject_id subject_label predicate_id object_id object_label mapping_justification mapping_date author_id subject_source subject_source_version object_source object_source_version confidence As we are mapping database identifiers, our first step is curiefy our database identifiers . Read up in detail on why this is done here . We chose to use the following URI prefix for our food database: http://kewl-foodie.com/foods/, with the KF_FOODS: prefix (for now, we just document this information in the side, but later, we will add this to our mapping table). Next, we will add all the entities we hope to align to the mapping table above (we removed some columns here for readability, we will get back to these later): subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala KF_FOOD:F003 pink KF_FOOD:F004 braeburn While not necessary from a computational perspective, we recommend to document the labels of both the subject and the object to make the mapping table easier to process for human curators. The next step is now to try and identify suitable terms from FOODON to map to. In the biomedical domain, most curators will search OLS or Ontobee , but some more technically advanced users may choose to use SPARQL over ontobee or another endpoint: PREFIX rdf: PREFIX rdfs: SELECT * WHERE { ?sub rdfs:label ?obj . FILTER(regex(str(?obj), \"apple\")) FILTER(STRSTARTS(str(?sub),\"http://purl.obolibrary.org/obo/FOODON_\")) } A detailed discussion on mapping predicates can be found here . Mapping \"apple\", attempt 1 Our first attempt is to try and map KF_FOOD:F001 (apple). At the time of writing, a search for the string \"apple\" just across the labels in FOODON reveals more than 300 results. There are no exact matches for the search string \"apple\", i.e. there is no entity in FOODON that has the label \"apple\" exactly. Rather than sifting through the large set of results, we move on to try to map a more specific element first. As FOODON is an ontology, having a mapping to a more specific element (e.g. gala ) may help us to find an appropriate mapping for the more general concept (e.g. apple ), which should be hierarchically related to the more specific term. Mapping \"gala\" Indeed, a search for \"gala\" reveals one single result: Gala apple (whole) . How do we know if this is a good mapping for our own database entity gala ? This is a very difficult question, and there is no perfect answer. It is important to remember that mappings should not be judged in terms of \"correct\" or \"wrong\", but in terms of \"fit for purpose\", or, in the case of SSSOM, \"fit for most purposes\". The following thoughts should cross the curators mind: There does not seem to be another FOODON class concerned with \"Gala\". From the description, \"A pome fruit of a Gala apple tree cultivar.\" it seems like we are indeed talking about a kind of apple. ( The picture in the OLS Term information box also helps. ) A quick email to our product team at KEWL FOODIE INC confirms that indeed, our gala database entity and FOODON's Gala apple (whole) class seem to refer to the same entity. As apples in our database are usually considered \"whole\", we do not concern ourselves further with the that slightly ambiguous part of the label. (Can I map my apple snack pack which has the \"whole\" apple cut in slices to FOODON:00003348 ?) We add the new mapping to our mapping table. Due to our domain expertise and consultation with the product team of our company, we are very confident (1.0 or 100%) that the mapping between KF_FOOD:F002 and FOODON:00003348 is exact (for exact matches, we use skos:exactMatch as per SSSOM convention ). subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn Mapping \"apple\", attempt 2 Given our mapping of Gala apple (whole) we take a better look at the class hierarchy around. We notice three things: There is indeed a class called \"apple (whole)\" which seems to fit our purpose. This also seems to be consistent with our choice of \"Gala apple (whole)\". What is, however, annoying is that there is also a \"apple (whole or parts)\" class. KEWL FOODS INC definitely has plans to introduce products involving sliced Gala apples! FOODON does not have a concept of a sliced Gala apple. Again, our judgement as curators is asked here. There is no \"correct\" or \"wrong\". To keep things consistent, we decide to map to the \"whole\" apple, but we take a mental note that this might change in the future. We also take a physical note to document this design decision as a comment. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn Mapping \"pink\" In the same hierarchy as apple (whole) , we find Pink apple (whole) . This is seems like an excellent match, consistent with our previous design decisions. However two observations leave us uncertain: The Pink apple (whole) class has no definition (at the time of writing this tutorial at least) and no pictures, so we cannot be 100% certain that our notion of \"pink\" is the same as Foodon. A search on Wikipedia reveals different names, like \"Pink Pearl\" and \"Pink Lady\", which makes us a bit uncertain. In contrast to \"Gala apple (whole)\", \"Pink apple (whole)\" has a further subclass, \"Pink apple (whole, raw)\". What does that mean? All data in our KEWL FOODS INC database pertains to raw apple, so is this now a better match? Raw as opposed to what? Cooked? Again, there is no great recipe to solve this dilemma. We chose our default recipe: prefer consistent mapping rules over occasionally increased precision (not always a good idea) document design decision subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn Mapping \"braeburn\" We now turn our attention to the last database entity: KF_FOOD:F004 (braeburn). Unfortunately, our search for braeburn , brae-burn yields no results in Foodon. We search Wikipedia and Google for potential synonyms of Braeburn that might have been missed by the FOODON developers, but are unsuccessful. In the end, we give up and decide that there is no matching concept for KF_FOOD:F004 (braeburn) in FOODON. Now we have to make a choice and how to reflect that in our mapping set: We can document directly the fact that there is no skos:exactMatch in our SSSOM table. We can map KF_FOOD:F004 (braeburn) to a more general concept, i.e. apple (whole) . We can do both. For our data integration efforts, it is generally useful to know if no exact match could be found. Here, again, we have two options: we can convey this information by omission. By not including a mapping in the dataset, it does not exist. The downside is that we do not know further down the line if (a) we have looked and there really was no suitable code and (b) we have not looked. we can convey this information by using a special code sssom:NoMapping . (NOTE as of 2 May 2022, the final decision on how this is represented has not been made. Follow this discussion ). In our case, we have plans to extend our manual mapping efforts with automated ones. We want to use manual non-mapping assertions to filter out false positive mappings with our automated approaches, so we decide to go with the second option and make the non-mapping explicit. The second question is whether to include a less precise mapping. This depends heavily on the target use case. As a rule of thumb, if the target use case requires precise 1:1 mappings (for example, data transformation use cases often do), we do not include any broad mappings. If our use case is data aggregation, broad matches can still be very useful: At least, we will be able to use the hierarchical structure of FOODON to retrieve all kinds of apples in our FOOD database! We are interested in data aggregation, so we decide to include the mapping. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1 Adding rich metadata We are done curating the basic mappings. Next, we will add some richer metadata for the mapping set. For this tutorial we will add the metadata introduce here . Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. This is the most important piece of metadata and a pivotal concept for SSSOM curation in general. Let us think about all the various ways that can lead us to believe a mapping to be correct. The most crude thing would be to document is: \"a Human determined this mapping\". We do that by documenting the mapping justification semapv:HumanCuration . This justification is a vague placeholder, but it instills some confidence in the mapping consumer (the user) that someone with at least some domain expertise determined the mapping to be ok. We will discuss mapping_justification s in more detailed in a later tutorial on automated matching, where we have many more fine-grained distinctions, like \"the justification for asserting this mapping is that the label of the subject matches to an exact synonym of the object after applying 'stemming' during preprocessing\". Nevertheless, modelling human curation better is one of the future goals of SSSOM. The key is to document \"curation rules\", which contain the conditions and assumptions made by the (human) mapping author when asserting the mapping. In the absence of a formal element (at least at the time of this writing, May 2022), you should try and document such curation rules in the comment field. Basic provenance metadata : mapping_date : The date the mapping was asserted. Why is this important? Time of an assertion is essential provenance. It allows us to prefer assertions (mapping decisions) that were done later, but it also gives us a hint how old a mapping is, in particular if the source versions are not, or cannot, be documented. It is a very easy element to document, and we should try to do that at all times. author_id : Identifies the persons or groups responsible for asserting the mappings. The author is a crucial bit of metadata, in particular in conjunction with the mapping justification human curation . A mapping consumer can look up the author of a mapping through their unique identifier (e.g. an ORCiD , which we use in the biomedical domain, but might be anything, including a unique database identifier). Again, we prefer PURLs here, that resolve to some useful information when you look them up. mapping_set_id : A unique identifier of the mapping set. This is a pivotal concept in FAIR data and data management in general: every unit of data that is shared around within an organisation (or the whole world) should have a unique identifier . As per Semantic Web conventions, we recommend using persistent URLs, or PURLs, to identify your mappings set. For example: http://purl.obolibrary.org/obo/mondo.owl is a unique identifier to an ontology and http://purl.obolibrary.org/obo/mondo/mapping/mondo.sssom.tsv refers to the \"Mondo disease mappings\". mapping_set_version : The version of a mapping set. Versioning is absolutely crucial for mapping sets, much the same way as it is for ontologies. We recommend to use semantic versioning or simple ISO Date versioning, like \"2022-05-01\". The latter is recommended by some organisations like the OBO foundry (it is easier to see how new a mapping set is, and it is easier to sort as a string), but semantic versioning is much more widely used. We use date based versioning in the tutorial. mapping_set_description : A description of the mapping set, providing context and motivation. This is another underrated piece of metadata that allows humans to understand and build trust towards a mapping set. A good description of a mapping set describes the scope and content of a mapping set describes the purpose for the creation of the mapping set is reasonably short, but not too short (3-4 sentences) license : An identifier for a license description. One of the most serious impediments to re-use on the web is the absence of clear and standardised licenses. We recommend the creative commons licenses for open data, either CC-0 (public domain, no license) or CC-BY 4.0. (Some people prefer CC-BY 4.0, because it ensures that attribution is taken more seriously.) Even when using a proprietary license, it is good to be transparent here, so that an \"accidentally leaked\" data file is not mistakenly assumed to be \"open\". subject_source : URI of source the subject. This is one of the most important pieces of metadata: an unambiguous reference to a source. It is notoriously hard to standardise source references ( see past debate ). We recommend to use the standard URIs used in your own domain, for example OBO ( obo:mondo ) or Wikidata ( wikidata:Q7876491 ). subject_source_version : The version of the source of the subject. In order to interpret a mapping, it is not enough to know the source. Sources changes all the time, whether they are database and/or ontology: classes are obsoleted, database records are deleted. What counts for an exact mapping may change through the evolution of a source. Always document the source version, if you can. This can be very difficult for database systems that do not have a real notion of versioning. object_source : URI of source the object. See subject_source . object_source_version : The version of the source of the object. See subject_source_version . Mapping vs Mapping set metadata - where should it go? SSSOM distinguishes between mapping and mapping_set metadata, i.e. metadata that pertains to each individual mapping and metadata that pertains to the whole mapping set. To understand which is which, you can browse the specification . Mapping metadata is usually captured in the rows of the SSSOM mapping table. We have done this a lot so far during this tutorial: documenting our confidence in our mapping decision, and specifying the source of our subject id. However, in SSSOM we have the option to document some mapping metadata on the level of the mapping_set , which means that the metadata item applies to all mappings in the mapping set . We will capture subject and object_source this way, see a bit further below. We capture mapping level metadata in the usual way using our table: subject_id subject_label predicate_id object_id object_label confidence comment mapping_justification mapping_date author_id subject_source_version object_source_version KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl Mapping set metadata . In this tutorial, only mapping_set_id , mapping_set_version , license and mapping_set_description are purely mapping_set metadata. Everything else is considered mapping metadata. Mapping set metadata is captured in YAML format. For this tutorial, we will capture the following: mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv license: https://creativecommons.org/licenses/by/4.0/ mapping_set_version: \"2022-06-01\" mapping_set_description: \"Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data.\" object_source: wikidata:Q55118395 subject_source: KF_FOOD:DB curie_map: KF_FOOD: https://kewl-foodie.inc/food/ wikidata: http://www.wikidata.org/entity/ FOODON: http://purl.obolibrary.org/obo/FOODON_ semapv: https://w3id.org/semapv/vocab/ skos: \"http://www.w3.org/2004/02/skos/core#\" sssom: https://w3id.org/sssom/ Despite object_source and subject_source being mapping metadata, we decided to capture them at mapping set level, as they are not likely to change throughout versions of the mapping set. Note that while the object_source resolves to an actual page on the web ( FOODON ), KF_FOOD:DB does not. SSSOM requires a source to correspond to an IRI (see ongoing debate ). This helps to ensure that it is unambiguously clear what the source was. Imagine someone documenting the string INTERNAL_DB or just DB - even in large organisations, but certainly on the web, this can cause clashes. The curie_map (better known as \"prefix map\") is another key concept in SSSOM (and most Semantic Web standards). It maps prefixes to URI expansions. This serves three main purposes. Unambiguously identify the namespace of a prefix. The prefix FOODON: , all by itself, can be used by many different sources. http://purl.obolibrary.org/obo/FOODON_ uniquely identifies the namespace of FOODON . This is important when merging different mapping sets together. Expanding and resolving identifiers. Some identifier schemes like the one in the OBO Foundry, Wikidata and many others, resolve identifiers to a page on the web. This allows people (and sometimes machines) to look up additional information about an entity on the web. For example, when we expand FOODON:00002473 to http://purl.obolibrary.org/obo/FOODON_00002473, we can look this URI up in a browser. Providing a recipe for creating RDF resources from CURIEs. RDF requires an entity to be represented by a full URI, e.g. http://purl.obolibrary.org/obo/FOODON_00002473 . In this case, you can think of the curie_map in essence as a set of RDF prefix declarations . This is only important if your use case requires serialisation into RDF. This concludes the manual curation tutorial. Next, we will process the two mapping sets using \"SSSOM python toolkit\" (aka sssom-py). Automated processing 1: Creating an embedded SSSOM file Important note May 8 2022 *: The SSSOM toolkit have not yet been updated to the most recent changes of the SSSOM data model. If you get an error ValueError: match_type must be supplied , you have to update your local installation. Embedded vs external mode for SSSOM metadata One problem with table formats like TSV or CSV, in contrast to more flexible tree shaped formats like JSON or XML, is that it is notoriously hard to include metadata about the whole table (for example, mapping set metadata) in them. There are essentially three options: All metadata is stored as values in columns. While this is definitely possible, it is not ideal for a few reasons: It is highly redundant. If we have to store the mapping_set_id , for example, as a value in a mapping table with 1000 mappings, it is repeated 1000 times. It is less immediately clear whether a piece of metadata pertains to the mapping_set or a mapping (you have to study the specification to understand that author_id pertains to an individual mapping rather than the whole mapping set). Metadata about the mapping set is stored within the TSV file header. Basically, we introduce a number of rows at the top of the TSV file that we reserve for metadata. The disadvantage is that many parsers for such flat files do not know how to deal with a header like this. We keep metadata about tables and mapping sets separate, i.e. we keep one TSV file that contains the data and one YAML file that contains the mapping set metadata. This is often a good option, but keeping the two separate may cause a problem: in environments where the data is shared around (emailed, copied) the connection can get lost. In SSSOM, we opted for option 2 as the default, which we call \"embedded mode\" (the metadata is embedded). Most commands in the SSSOM toolkit expect SSSOM files to be in embedded mode. However, we support option 3 (external mode) indirectly by providing operations to simply merge the two before other processing steps. Converting an SSSOM file from from external to embedded mode If you do not have the SSSOM toolkit installed, do so now . Download the food mappings created before. If you feel confident with your own mappings, feel free to use these instead. Mappings Metadata Now you let's use SSSOM toolkit to merge these two: sssom parse example1.sssom.tsv -m example1.sssom.yml -o foodieinc-food.sssom.tsv If you open foodieinc-food.sssom.tsv , you will see: # comment: We could map to FOODON:00004187 instead which more specifically refers to # \"raw\" Pink apples. Decided against to be consistent with other mapping choices. # curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # skos: http://www.w3.org/2004/02/skos/core# # sssom: https://w3id.org/sssom/ # license: https://creativecommons.org/licenses/by/4.0/ # mapping_date: '2022-05-02' # mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food # and nutrition database with Food Ontology (FOODON). Intended to be used for ontological # analysis and grouping of KEWL FOODIE INC related data. # mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv # mapping_set_version: '2022-06-01' # object_source: wikidata:Q55118395 # object_source_version: http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl # subject_source: KF_FOOD:DB subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 Converting an SSSOM file to JSON We will now convert the embedded SSSOM file we created before into JSON: sssom convert foodieinc-food.sssom.tsv --output-format json -o foodieinc-food.sssom.json While the JSON format is not yet stable , it is close to completion. Diff between two versions The last part of this tutorial concerns one of the main motivations of using a controlled metadata model for mappings: versioning. One key concern for data management, and mapping management in particular, is to be able under understand the evolution of mappings over time. While this command is not stable yet, we can use it to understand the difference between two mappings sets: sssom diff . Let us try to look at the difference between an old version of our foodie-inc mapping set and our new one: sssom diff foodieinc-food.sssom.tsv ../embedded/foodie-inc-2022-05-01.sssom.tsv -o diff.sssom.tsv The outcome gives us the following information: subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004187 Pink apple (whole, raw) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_2 KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH This can be used to understand that the first mapping is only present in the new mapping set, while the second mapping was present in the old mapping set - all the other ones are in common between the two.","title":"Basic Tutorial"},{"location":"tutorial/#introduction-to-mapping-curation-with-sssom","text":"Mappings between entities from ontologies, terminologies and databases are created for many reasons (data integration, knowledge graphs) and maintained in many different ways (automated matching, manual curation). In the following tutorial, we will learn how to curate semantic mappings manually using SSSOM. Knowledge about manual mapping curation is important even in scenarios where most, if not all, of the mapping curation is performed automatically - the basic principles are still the same.","title":"Introduction to mapping curation with SSSOM"},{"location":"tutorial/#pre-requisites","text":"We expect the reader of this tutorial to have a basic understanding of the following: What are ontology classes? What is a database? What is an (ontology) mapping? Why do we need to map across ontologies and between databases and ontologies? We do provide a few materials in the Background section below that touch on the above concepts, but a detailed discussion is out of scope.","title":"Pre-requisites"},{"location":"tutorial/#table-of-contents","text":"Background Ontology alignment What are we mapping? CURIEs, URIs and databases How to create an SSSOM mapping set from scratch Manually curating mapping sets Automated processing 1: Creating an embedded SSSOM file","title":"Table of contents"},{"location":"tutorial/#background","text":"As a reminder, a SSSOM mapping comprises three major components: The mapping itself, that is, a triple that reflects a correspondence of a subject entity, for example a class in an ontology, to an object entity, for example an identifier in some database, via a semantic mapping predicate , such as skos:exactMatch . A mapping justification , the process or activity that led us to consider the mapping to be correct or reasonable (typical examples: labels match exactly; two classes are logically equivalent; a domain expert determined that two terms reflect the same real world concept). Provenance metadata , including information about author and mapping_tool . In the following, we will give pointers to some useful background materials before we describe how SSSOM mappings are created.","title":"Background"},{"location":"tutorial/#ontology-alignmentmatching","text":"Ontology alignment is the process of determining correspondences between ontological concepts. The usage of \"alignment\", \"matching\" and \"mapping\" is fuzzy in practice. From the perspective of SSSOM, alignment usually involves determining all (or a more or less complete set of) correspondences between ontological concepts of two or more source ontologies. The most important resource on the subject is \"Ontology Matching\" by J\u00e9r\u00f4me Euzenat and Pavel Shvaiko. If you are interested in really diving into the subject, there is no avoiding this book! This 25 minute course unit by the OpenHPI gives a nice overview over the area, which is relevant to all mapping activities: Another useful overview is this one by the Knowledge and Data VU Amsterdam. Especially after minute 12, we learn a bit about the differences of OWL and SKOS. A 10 minute deep-dive into Jerome Euzenat classification of ontology matching techniques can be seen here:","title":"Ontology alignment/matching"},{"location":"tutorial/#what-are-we-mapping","text":"In SSSOM we are concerned with mapping information entities , i.e. representations of a real world entities. Examples of such entities are: Classes, Individuals and Properties in an ontology. Entities in Databases, such as a specific person in a \"Person\" table of a relational database. A specific value in the slot of a data model, for example the \"UNIVERSITY\" constant in the highest-degree enumeration for a demographics survey data model. A specific code from a code system or terminology such as ICD10CM. Information entities represent real world objects such as diseases (e.g. Alzheimer's, Diabetes), kinds of vegetables (Asparagus, Broccoli), concrete instances of vegetables (a specific broccoli that was sold in your local supermarket yesterday).","title":"What are we mapping?"},{"location":"tutorial/#what-kind-of-entities-can-we-not-map-with-sssom","text":"Some of the limitations of SSSOM are discussed in our paper . A selection of the most important things that cannot be mapped at the moment: Compound/complex entities, i.e. entities that are defined by more than one term. For example, we cannot currently map \"Raw apple\" (subject) to \"Apple\" and \"Raw\" (two objects). Anything that is not an entity, e.g. unit conversion rules (1000mg maps to 1g * 1000) or functions. Highly contextual entities like \"PERSON:1\" as they enter the hospital. As a rule of thumb, we can map any entity for which (1) we can provide a single identifier and (2) whose identifier establishes its context (i.e. no further information is needed to understand the meaning of the identifier). Note that literal values are a special case - SSSOM is not designed for mapping literals to entity identifiers, but there are some discussions on how to do this anyways here .","title":"What kind of entities can we not map with SSSOM?"},{"location":"tutorial/#curies-uris-and-databases","text":"A mapping involves three entities: A subject (the entity which is mapped to some other entity) An object (the entity the subject is mapped to) A semantic mapping predicate , such as \"skos:exactMatch\" which defines how the subject entity is mapped to the object entity. All three must be referred to by an identifier in CURIE syntax ( Compact URI ) when using the SSSOM table format or JSON, or an IRI (Internationalized Resource Identifier) when you are using the RDF representation of SSSOM. This is necessary to ensure that entities are globally unique and mapping sets are fully interoperable across an organisation and beyond. While these concepts are common practice in the Semantic Web world, they may be less well understood in the database world. In fact, they can be quite awkward: - Your database my use p9787869 to identify a specific person in a \"Person\" table of a relational database. - Your data model for a demographics survey uses, among others, the UNIVERSITY constant in the highest-degree enumeration. To be compliant with SSSOM, such values must be \"curified\". While this process sounds daunting at first, it is essential: Both the p9787869 identifier and the UNIVERSITY constant may be used in different contexts (different databases or data models) to refer to entirely different entities! While there is no 100% reliable guide for \"curification\", we usually recommend the following steps: Choose a globally unique URI prefix which can unambiguously define the context of your entity. For example (1) http://embl.org/ebi/person/p9787869 to refer to the person in your Person table and (2) http://embl.org/demographics-survey-datamodel/demographics.highest_education#UNIVERSITY . In an ideal world, these can be de-referenced (i.e. you can look them up in a web-browser), but the important thing is that they are globally unique (and persistent), so that they cannot be confused with, for example, the UNIVERSITY code in another data model. We select a reasonable prefix for the code, for example (1) embl.ebi.person and (2) demographics-survey-datamodel.demographics.highest_education . Note these do not need to be globally unique anymore. Indeed, you could, if you wanted to, use (much) shorter prefixes. (NOTE: some people disagree with this and strive for globally unique prefixes. In the biomedical domain, for example, we try to coordinate prefixes at http://bioregistry.io/. This is not however, necessary when using SSSOM). We record the prefixes and their URI prefixes (sometimes called URI expansions) in the curie_map of our SSSOM file: curie_map: embl.ebi.person: \"http://embl.org/ebi/person/\" demographics-survey-datamodel.demographics.highest_education: \"http://embl.org/demographics-survey-datamodel/demographics.highest_education#\" Now we can refer to our entities in the SSSOM mapping table like this: (1) embl.ebi.person:p9787869 and (2) demographics-survey-datamodel.demographics.highest_education:UNIVERSITY . This may strike some users as verbose - but the concept of unique identifiers for all information entities is at the heart of SSSOM . There is an initial cost to carefully defining namespaces for the various vocabularies and contexts (data model enums, value sets), but the ability to unambiguously refer to an entity will pay of as the organisation grows and data needs to be integrated from a wide variety of sources. Tangent: See here for an example how FHIR , a standard for health care data exchange, published by HL7, deals with this: Rather than using a lot of prefixes, FHIR chooses to have one small namespace for fhir , and then having the path to the data model element all the way to its value as the local identifier.","title":"CURIEs, URIs and databases"},{"location":"tutorial/#how-to-create-an-sssom-mapping-set-from-scratch","text":"SSSOM mapping sets can be created as part of automated processes, like ontology matchers, or manually by ontology curators. While there is overlap, it makes sense to look at both cases separately. To remind yourself why you should build SSSOM mapping sets in the first place, please refer to the FAQ .","title":"How to create an SSSOM mapping set from scratch"},{"location":"tutorial/#manually-curating-mapping-sets","text":"To gradually improve terminological mapping practices we are proposing a 5-star system for mappings . For the sake of this tutorial, we will focus on producing a solid 3-Star mapping set with the following metadata: Core mapping metadata : subject_id : The ID of the subject of the mapping predicate_id : The ID of the predicate of the mapping object_id : The ID of the object of the mapping Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. Basic provenance metadata : mapping_date : The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. author_id : Identifies the persons or groups responsible for asserting the mappings. Recommended to be a (pipe-separated) list of ORCIDs or otherwise identifying URLs, but any identifying string (such as name and affiliation) is permissible. mapping_set_description : A description of the mapping set, providing context and motivation. license : An identifier for a license description. mapping_set_id : A unique identifier of the mapping set. mapping_set_version : The version of a mapping set. subject_source : URI of source the subject. subject_source_version : The version of the source of the subject. object_source : URI of source the subject. object_source_version : The version of the source of the object. confidence : the level of certainty you have for the mapping to be true (based on the process used to confirm or generate it). Some convenience metadata subject_label : The human readable label of the subject. object_label : The human readable label of the object.","title":"Manually curating mapping sets"},{"location":"tutorial/#the-tutorial-scenario","text":"You are charged with aligning your organisations (KEWL FOODIE INC) internal database about food and nutrition with Food Ontology (FOODON) . In your database, you have a table with food items: ID LABEL F001 apple F002 gala F003 pink F004 braeburn As a first pass, you are tasked to map the food items (kinds of apples) in your database to classes in the FOODON ontology.","title":"The tutorial scenario"},{"location":"tutorial/#getting-the-tools-together","text":"To complete this tutorial, we need the following tools: A table editor. In this tutorial we will use Google Sheets . Manually curating mappings is often done in a collaborative fashion. We like Google Sheets because it allows multiple people to edit the same mapping set at once. OPTIONAL: The SSSOM toolkit installed (requires python 3.9+).","title":"Getting the tools together"},{"location":"tutorial/#creating-a-first-draft-of-the-mappings","text":"First create a google sheet with the following columns: subject_id subject_label predicate_id object_id object_label mapping_justification mapping_date author_id subject_source subject_source_version object_source object_source_version confidence As we are mapping database identifiers, our first step is curiefy our database identifiers . Read up in detail on why this is done here . We chose to use the following URI prefix for our food database: http://kewl-foodie.com/foods/, with the KF_FOODS: prefix (for now, we just document this information in the side, but later, we will add this to our mapping table). Next, we will add all the entities we hope to align to the mapping table above (we removed some columns here for readability, we will get back to these later): subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala KF_FOOD:F003 pink KF_FOOD:F004 braeburn While not necessary from a computational perspective, we recommend to document the labels of both the subject and the object to make the mapping table easier to process for human curators. The next step is now to try and identify suitable terms from FOODON to map to. In the biomedical domain, most curators will search OLS or Ontobee , but some more technically advanced users may choose to use SPARQL over ontobee or another endpoint: PREFIX rdf: PREFIX rdfs: SELECT * WHERE { ?sub rdfs:label ?obj . FILTER(regex(str(?obj), \"apple\")) FILTER(STRSTARTS(str(?sub),\"http://purl.obolibrary.org/obo/FOODON_\")) } A detailed discussion on mapping predicates can be found here .","title":"Creating a first draft of the mappings"},{"location":"tutorial/#mapping-apple-attempt-1","text":"Our first attempt is to try and map KF_FOOD:F001 (apple). At the time of writing, a search for the string \"apple\" just across the labels in FOODON reveals more than 300 results. There are no exact matches for the search string \"apple\", i.e. there is no entity in FOODON that has the label \"apple\" exactly. Rather than sifting through the large set of results, we move on to try to map a more specific element first. As FOODON is an ontology, having a mapping to a more specific element (e.g. gala ) may help us to find an appropriate mapping for the more general concept (e.g. apple ), which should be hierarchically related to the more specific term.","title":"Mapping \"apple\", attempt 1"},{"location":"tutorial/#mapping-gala","text":"Indeed, a search for \"gala\" reveals one single result: Gala apple (whole) . How do we know if this is a good mapping for our own database entity gala ? This is a very difficult question, and there is no perfect answer. It is important to remember that mappings should not be judged in terms of \"correct\" or \"wrong\", but in terms of \"fit for purpose\", or, in the case of SSSOM, \"fit for most purposes\". The following thoughts should cross the curators mind: There does not seem to be another FOODON class concerned with \"Gala\". From the description, \"A pome fruit of a Gala apple tree cultivar.\" it seems like we are indeed talking about a kind of apple. ( The picture in the OLS Term information box also helps. ) A quick email to our product team at KEWL FOODIE INC confirms that indeed, our gala database entity and FOODON's Gala apple (whole) class seem to refer to the same entity. As apples in our database are usually considered \"whole\", we do not concern ourselves further with the that slightly ambiguous part of the label. (Can I map my apple snack pack which has the \"whole\" apple cut in slices to FOODON:00003348 ?) We add the new mapping to our mapping table. Due to our domain expertise and consultation with the product team of our company, we are very confident (1.0 or 100%) that the mapping between KF_FOOD:F002 and FOODON:00003348 is exact (for exact matches, we use skos:exactMatch as per SSSOM convention ). subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn","title":"Mapping \"gala\""},{"location":"tutorial/#mapping-apple-attempt-2","text":"Given our mapping of Gala apple (whole) we take a better look at the class hierarchy around. We notice three things: There is indeed a class called \"apple (whole)\" which seems to fit our purpose. This also seems to be consistent with our choice of \"Gala apple (whole)\". What is, however, annoying is that there is also a \"apple (whole or parts)\" class. KEWL FOODS INC definitely has plans to introduce products involving sliced Gala apples! FOODON does not have a concept of a sliced Gala apple. Again, our judgement as curators is asked here. There is no \"correct\" or \"wrong\". To keep things consistent, we decide to map to the \"whole\" apple, but we take a mental note that this might change in the future. We also take a physical note to document this design decision as a comment. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn","title":"Mapping \"apple\", attempt 2"},{"location":"tutorial/#mapping-pink","text":"In the same hierarchy as apple (whole) , we find Pink apple (whole) . This is seems like an excellent match, consistent with our previous design decisions. However two observations leave us uncertain: The Pink apple (whole) class has no definition (at the time of writing this tutorial at least) and no pictures, so we cannot be 100% certain that our notion of \"pink\" is the same as Foodon. A search on Wikipedia reveals different names, like \"Pink Pearl\" and \"Pink Lady\", which makes us a bit uncertain. In contrast to \"Gala apple (whole)\", \"Pink apple (whole)\" has a further subclass, \"Pink apple (whole, raw)\". What does that mean? All data in our KEWL FOODS INC database pertains to raw apple, so is this now a better match? Raw as opposed to what? Cooked? Again, there is no great recipe to solve this dilemma. We chose our default recipe: prefer consistent mapping rules over occasionally increased precision (not always a good idea) document design decision subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn","title":"Mapping \"pink\""},{"location":"tutorial/#mapping-braeburn","text":"We now turn our attention to the last database entity: KF_FOOD:F004 (braeburn). Unfortunately, our search for braeburn , brae-burn yields no results in Foodon. We search Wikipedia and Google for potential synonyms of Braeburn that might have been missed by the FOODON developers, but are unsuccessful. In the end, we give up and decide that there is no matching concept for KF_FOOD:F004 (braeburn) in FOODON. Now we have to make a choice and how to reflect that in our mapping set: We can document directly the fact that there is no skos:exactMatch in our SSSOM table. We can map KF_FOOD:F004 (braeburn) to a more general concept, i.e. apple (whole) . We can do both. For our data integration efforts, it is generally useful to know if no exact match could be found. Here, again, we have two options: we can convey this information by omission. By not including a mapping in the dataset, it does not exist. The downside is that we do not know further down the line if (a) we have looked and there really was no suitable code and (b) we have not looked. we can convey this information by using a special code sssom:NoMapping . (NOTE as of 2 May 2022, the final decision on how this is represented has not been made. Follow this discussion ). In our case, we have plans to extend our manual mapping efforts with automated ones. We want to use manual non-mapping assertions to filter out false positive mappings with our automated approaches, so we decide to go with the second option and make the non-mapping explicit. The second question is whether to include a less precise mapping. This depends heavily on the target use case. As a rule of thumb, if the target use case requires precise 1:1 mappings (for example, data transformation use cases often do), we do not include any broad mappings. If our use case is data aggregation, broad matches can still be very useful: At least, we will be able to use the hierarchical structure of FOODON to retrieve all kinds of apples in our FOOD database! We are interested in data aggregation, so we decide to include the mapping. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1","title":"Mapping \"braeburn\""},{"location":"tutorial/#adding-rich-metadata","text":"We are done curating the basic mappings. Next, we will add some richer metadata for the mapping set. For this tutorial we will add the metadata introduce here . Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. This is the most important piece of metadata and a pivotal concept for SSSOM curation in general. Let us think about all the various ways that can lead us to believe a mapping to be correct. The most crude thing would be to document is: \"a Human determined this mapping\". We do that by documenting the mapping justification semapv:HumanCuration . This justification is a vague placeholder, but it instills some confidence in the mapping consumer (the user) that someone with at least some domain expertise determined the mapping to be ok. We will discuss mapping_justification s in more detailed in a later tutorial on automated matching, where we have many more fine-grained distinctions, like \"the justification for asserting this mapping is that the label of the subject matches to an exact synonym of the object after applying 'stemming' during preprocessing\". Nevertheless, modelling human curation better is one of the future goals of SSSOM. The key is to document \"curation rules\", which contain the conditions and assumptions made by the (human) mapping author when asserting the mapping. In the absence of a formal element (at least at the time of this writing, May 2022), you should try and document such curation rules in the comment field. Basic provenance metadata : mapping_date : The date the mapping was asserted. Why is this important? Time of an assertion is essential provenance. It allows us to prefer assertions (mapping decisions) that were done later, but it also gives us a hint how old a mapping is, in particular if the source versions are not, or cannot, be documented. It is a very easy element to document, and we should try to do that at all times. author_id : Identifies the persons or groups responsible for asserting the mappings. The author is a crucial bit of metadata, in particular in conjunction with the mapping justification human curation . A mapping consumer can look up the author of a mapping through their unique identifier (e.g. an ORCiD , which we use in the biomedical domain, but might be anything, including a unique database identifier). Again, we prefer PURLs here, that resolve to some useful information when you look them up. mapping_set_id : A unique identifier of the mapping set. This is a pivotal concept in FAIR data and data management in general: every unit of data that is shared around within an organisation (or the whole world) should have a unique identifier . As per Semantic Web conventions, we recommend using persistent URLs, or PURLs, to identify your mappings set. For example: http://purl.obolibrary.org/obo/mondo.owl is a unique identifier to an ontology and http://purl.obolibrary.org/obo/mondo/mapping/mondo.sssom.tsv refers to the \"Mondo disease mappings\". mapping_set_version : The version of a mapping set. Versioning is absolutely crucial for mapping sets, much the same way as it is for ontologies. We recommend to use semantic versioning or simple ISO Date versioning, like \"2022-05-01\". The latter is recommended by some organisations like the OBO foundry (it is easier to see how new a mapping set is, and it is easier to sort as a string), but semantic versioning is much more widely used. We use date based versioning in the tutorial. mapping_set_description : A description of the mapping set, providing context and motivation. This is another underrated piece of metadata that allows humans to understand and build trust towards a mapping set. A good description of a mapping set describes the scope and content of a mapping set describes the purpose for the creation of the mapping set is reasonably short, but not too short (3-4 sentences) license : An identifier for a license description. One of the most serious impediments to re-use on the web is the absence of clear and standardised licenses. We recommend the creative commons licenses for open data, either CC-0 (public domain, no license) or CC-BY 4.0. (Some people prefer CC-BY 4.0, because it ensures that attribution is taken more seriously.) Even when using a proprietary license, it is good to be transparent here, so that an \"accidentally leaked\" data file is not mistakenly assumed to be \"open\". subject_source : URI of source the subject. This is one of the most important pieces of metadata: an unambiguous reference to a source. It is notoriously hard to standardise source references ( see past debate ). We recommend to use the standard URIs used in your own domain, for example OBO ( obo:mondo ) or Wikidata ( wikidata:Q7876491 ). subject_source_version : The version of the source of the subject. In order to interpret a mapping, it is not enough to know the source. Sources changes all the time, whether they are database and/or ontology: classes are obsoleted, database records are deleted. What counts for an exact mapping may change through the evolution of a source. Always document the source version, if you can. This can be very difficult for database systems that do not have a real notion of versioning. object_source : URI of source the object. See subject_source . object_source_version : The version of the source of the object. See subject_source_version .","title":"Adding rich metadata"},{"location":"tutorial/#mapping-vs-mapping-set-metadata-where-should-it-go","text":"SSSOM distinguishes between mapping and mapping_set metadata, i.e. metadata that pertains to each individual mapping and metadata that pertains to the whole mapping set. To understand which is which, you can browse the specification . Mapping metadata is usually captured in the rows of the SSSOM mapping table. We have done this a lot so far during this tutorial: documenting our confidence in our mapping decision, and specifying the source of our subject id. However, in SSSOM we have the option to document some mapping metadata on the level of the mapping_set , which means that the metadata item applies to all mappings in the mapping set . We will capture subject and object_source this way, see a bit further below. We capture mapping level metadata in the usual way using our table: subject_id subject_label predicate_id object_id object_label confidence comment mapping_justification mapping_date author_id subject_source_version object_source_version KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl Mapping set metadata . In this tutorial, only mapping_set_id , mapping_set_version , license and mapping_set_description are purely mapping_set metadata. Everything else is considered mapping metadata. Mapping set metadata is captured in YAML format. For this tutorial, we will capture the following: mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv license: https://creativecommons.org/licenses/by/4.0/ mapping_set_version: \"2022-06-01\" mapping_set_description: \"Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data.\" object_source: wikidata:Q55118395 subject_source: KF_FOOD:DB curie_map: KF_FOOD: https://kewl-foodie.inc/food/ wikidata: http://www.wikidata.org/entity/ FOODON: http://purl.obolibrary.org/obo/FOODON_ semapv: https://w3id.org/semapv/vocab/ skos: \"http://www.w3.org/2004/02/skos/core#\" sssom: https://w3id.org/sssom/ Despite object_source and subject_source being mapping metadata, we decided to capture them at mapping set level, as they are not likely to change throughout versions of the mapping set. Note that while the object_source resolves to an actual page on the web ( FOODON ), KF_FOOD:DB does not. SSSOM requires a source to correspond to an IRI (see ongoing debate ). This helps to ensure that it is unambiguously clear what the source was. Imagine someone documenting the string INTERNAL_DB or just DB - even in large organisations, but certainly on the web, this can cause clashes. The curie_map (better known as \"prefix map\") is another key concept in SSSOM (and most Semantic Web standards). It maps prefixes to URI expansions. This serves three main purposes. Unambiguously identify the namespace of a prefix. The prefix FOODON: , all by itself, can be used by many different sources. http://purl.obolibrary.org/obo/FOODON_ uniquely identifies the namespace of FOODON . This is important when merging different mapping sets together. Expanding and resolving identifiers. Some identifier schemes like the one in the OBO Foundry, Wikidata and many others, resolve identifiers to a page on the web. This allows people (and sometimes machines) to look up additional information about an entity on the web. For example, when we expand FOODON:00002473 to http://purl.obolibrary.org/obo/FOODON_00002473, we can look this URI up in a browser. Providing a recipe for creating RDF resources from CURIEs. RDF requires an entity to be represented by a full URI, e.g. http://purl.obolibrary.org/obo/FOODON_00002473 . In this case, you can think of the curie_map in essence as a set of RDF prefix declarations . This is only important if your use case requires serialisation into RDF. This concludes the manual curation tutorial. Next, we will process the two mapping sets using \"SSSOM python toolkit\" (aka sssom-py).","title":"Mapping vs Mapping set metadata - where should it go?"},{"location":"tutorial/#automated-processing-1-creating-an-embedded-sssom-file","text":"Important note May 8 2022 *: The SSSOM toolkit have not yet been updated to the most recent changes of the SSSOM data model. If you get an error ValueError: match_type must be supplied , you have to update your local installation.","title":"Automated processing 1: Creating an embedded SSSOM file"},{"location":"tutorial/#embedded-vs-external-mode-for-sssom-metadata","text":"One problem with table formats like TSV or CSV, in contrast to more flexible tree shaped formats like JSON or XML, is that it is notoriously hard to include metadata about the whole table (for example, mapping set metadata) in them. There are essentially three options: All metadata is stored as values in columns. While this is definitely possible, it is not ideal for a few reasons: It is highly redundant. If we have to store the mapping_set_id , for example, as a value in a mapping table with 1000 mappings, it is repeated 1000 times. It is less immediately clear whether a piece of metadata pertains to the mapping_set or a mapping (you have to study the specification to understand that author_id pertains to an individual mapping rather than the whole mapping set). Metadata about the mapping set is stored within the TSV file header. Basically, we introduce a number of rows at the top of the TSV file that we reserve for metadata. The disadvantage is that many parsers for such flat files do not know how to deal with a header like this. We keep metadata about tables and mapping sets separate, i.e. we keep one TSV file that contains the data and one YAML file that contains the mapping set metadata. This is often a good option, but keeping the two separate may cause a problem: in environments where the data is shared around (emailed, copied) the connection can get lost. In SSSOM, we opted for option 2 as the default, which we call \"embedded mode\" (the metadata is embedded). Most commands in the SSSOM toolkit expect SSSOM files to be in embedded mode. However, we support option 3 (external mode) indirectly by providing operations to simply merge the two before other processing steps.","title":"Embedded vs external mode for SSSOM metadata"},{"location":"tutorial/#converting-an-sssom-file-from-from-external-to-embedded-mode","text":"If you do not have the SSSOM toolkit installed, do so now . Download the food mappings created before. If you feel confident with your own mappings, feel free to use these instead. Mappings Metadata Now you let's use SSSOM toolkit to merge these two: sssom parse example1.sssom.tsv -m example1.sssom.yml -o foodieinc-food.sssom.tsv If you open foodieinc-food.sssom.tsv , you will see: # comment: We could map to FOODON:00004187 instead which more specifically refers to # \"raw\" Pink apples. Decided against to be consistent with other mapping choices. # curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # skos: http://www.w3.org/2004/02/skos/core# # sssom: https://w3id.org/sssom/ # license: https://creativecommons.org/licenses/by/4.0/ # mapping_date: '2022-05-02' # mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food # and nutrition database with Food Ontology (FOODON). Intended to be used for ontological # analysis and grouping of KEWL FOODIE INC related data. # mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv # mapping_set_version: '2022-06-01' # object_source: wikidata:Q55118395 # object_source_version: http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl # subject_source: KF_FOOD:DB subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0","title":"Converting an SSSOM file from from external to embedded mode"},{"location":"tutorial/#converting-an-sssom-file-to-json","text":"We will now convert the embedded SSSOM file we created before into JSON: sssom convert foodieinc-food.sssom.tsv --output-format json -o foodieinc-food.sssom.json While the JSON format is not yet stable , it is close to completion.","title":"Converting an SSSOM file to JSON"},{"location":"tutorial/#diff-between-two-versions","text":"The last part of this tutorial concerns one of the main motivations of using a controlled metadata model for mappings: versioning. One key concern for data management, and mapping management in particular, is to be able under understand the evolution of mappings over time. While this command is not stable yet, we can use it to understand the difference between two mappings sets: sssom diff . Let us try to look at the difference between an old version of our foodie-inc mapping set and our new one: sssom diff foodieinc-food.sssom.tsv ../embedded/foodie-inc-2022-05-01.sssom.tsv -o diff.sssom.tsv The outcome gives us the following information: subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004187 Pink apple (whole, raw) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_2 KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH This can be used to understand that the first mapping is only present in the new mapping set, while the second mapping was present in the old mapping set - all the other ones are in common between the two.","title":"Diff between two versions"},{"location":"type_hint/","text":"type_hint URI : sssom:type_hint Applicable to : ExtensionDefinition Description Expected type of the values of the extension slot. Properties Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"type_hint"},{"location":"type_hint/#type_hint","text":"URI : sssom:type_hint Applicable to : ExtensionDefinition Description Expected type of the values of the extension slot.","title":"type_hint"},{"location":"type_hint/#properties","text":"Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"type_hint/#schema-developer-documentation","text":"LinkML source name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Schema developer documentation"},{"location":"usecases/","text":"Use cases and case studies Mondo disease mappings Mondo mappings The National Microbiome Data Collaborative (NMDC, https://microbiomedata.org/): Various data model mappings , e.g. MIXS, GOLD, etc CCDH (mapping clinical data models, ontologies and value sets) https://harmonization.datacommons.cancer.gov/ccdh-resources SNOMED-NCIT example Cross-species mapping efforts mouse-human mapping commons Microbial traits https://github.com/mapping-commons/microbial-trait-mappings Biomappings https://github.com/biomappings/biomappings/tree/master/docs/_data/sssom Decentralized curation of mappings, especially ones that aren't incident to ontology terms Clinical mappings Gdocs for discussion.","title":"Use Cases"},{"location":"usecases/#use-cases-and-case-studies","text":"","title":"Use cases and case studies"},{"location":"usecases/#mondo-disease-mappings","text":"Mondo mappings","title":"Mondo disease mappings"},{"location":"usecases/#the-national-microbiome-data-collaborative-nmdc-httpsmicrobiomedataorg","text":"Various data model mappings , e.g. MIXS, GOLD, etc","title":"The National Microbiome Data Collaborative (NMDC, https://microbiomedata.org/):"},{"location":"usecases/#ccdh-mapping-clinical-data-models-ontologies-and-value-sets","text":"https://harmonization.datacommons.cancer.gov/ccdh-resources SNOMED-NCIT example","title":"CCDH (mapping clinical data models, ontologies and value sets)"},{"location":"usecases/#cross-species-mapping-efforts","text":"mouse-human mapping commons","title":"Cross-species mapping efforts"},{"location":"usecases/#microbial-traits","text":"https://github.com/mapping-commons/microbial-trait-mappings","title":"Microbial traits"},{"location":"usecases/#biomappings","text":"https://github.com/biomappings/biomappings/tree/master/docs/_data/sssom Decentralized curation of mappings, especially ones that aren't incident to ontology terms","title":"Biomappings"},{"location":"usecases/#clinical-mappings","text":"Gdocs for discussion.","title":"Clinical mappings"},{"location":"workshops/","text":"Workshops Mapping Commons Workshop Series Wikidata: https://www.wikidata.org/wiki/Q108394475 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings 2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings","title":"Workshops"},{"location":"workshops/#workshops","text":"","title":"Workshops"},{"location":"workshops/#mapping-commons-workshop-series","text":"Wikidata: https://www.wikidata.org/wiki/Q108394475 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings 2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings","title":"Mapping Commons Workshop Series"},{"location":"events/ccb2022/","text":"CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings Where: Virtual event at the Center for Computational Biomedicine, Harvard Medical School, see https://computationalbiomed.hms.harvard.edu/education/ccb-seminar-series/ When: Monday 12 Dec 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: In this seminar, we will discuss the role of entity mappings in the biomedical domain, and the potential gain we might get from standardising and sharing them. We will introduce the Simple Standard of Ontological Mappings (SSSOM, https://w3id.org/sssom) and showcase some of its use cases. The central goal of this seminar is to redefine entity mappings as FAIR semantic artefacts in their own right, thus making them first-class citizens alongside, for example, controlled vocabularies and ontologies.","title":"Ccb2022"},{"location":"events/ccb2022/#ccb-seminar-series-open-sssom-unlocking-the-wealth-of-biomedical-data-using-shared-standardized-entity-mappings","text":"Where: Virtual event at the Center for Computational Biomedicine, Harvard Medical School, see https://computationalbiomed.hms.harvard.edu/education/ccb-seminar-series/ When: Monday 12 Dec 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: In this seminar, we will discuss the role of entity mappings in the biomedical domain, and the potential gain we might get from standardising and sharing them. We will introduce the Simple Standard of Ontological Mappings (SSSOM, https://w3id.org/sssom) and showcase some of its use cases. The central goal of this seminar is to redefine entity mappings as FAIR semantic artefacts in their own right, thus making them first-class citizens alongside, for example, controlled vocabularies and ontologies.","title":"CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings"},{"location":"events/mc2021/","text":"1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings When: 03.09.2021 For a list of participants see: Wikidata: https://www.wikidata.org/wiki/Q108394519 Scholia: https://scholia.toolforge.org/event/Q108394519 In 2020, we introduced the Simple Standard for Sharing Ontology Mappings (SSSOM) as a way for the mapping community to exchange and consolidate mappings using a simple TSV format. SSSOM seeks to solve, in particular, the following problems: Standardising the mapping metadata that is necessary to drive data transformation and knowledge graph merging use cases Enable effective merging and filtering of mapping sets Standardising the representation of mapping sets across formats such as RDF/XML, JSON-LD, TSV, and others. The purpose of this 3-hour workshop: Describing current use cases to the community, and ensuring all community use cases are documented and understood Establishing a user forum for getting support and providing feedback Define a simple governance strategy for organic evolution of standard Describing a number of key open issues: The representation of complex mappings The representation of curation rules The problem of predicate modification The alignment with external standards such as PROV-O and Alignment API Defining the path to a SSSOM beta release (stable) and the rallying for the paper Resources : Overview presentation Outcomes Members of the SSSOM core team are organised as as github team: https://github.com/orgs/mapping-commons/teams/sssom-core If you want to become a member, please make an issue here: https://github.com/mapping-commons/SSSOM/issues We added some of the questions asked to the new SSSOM FAQ: https://mapping-commons.github.io/sssom/faq/ Governance proposal (comments welcome): https://github.com/mapping-commons/SSSOM/issues/82 Governance will evolve over time. Standard and governance will evolve together. We will versioning (like SemVer) and should denote when backwards incompatible changes happen The 5-Star system for open FAIR mappings is now in its first official version. Discussion summary Ben Gyori: would be interesting to discuss beyond the format whether there's a central repository, or whether primary developers will make it as a primary export hosted along with their other artifact. Would there be a process to pull those? Nico: takes a long time for uptake of new publication systems, so this could take a long time -> maybe better to promote on an ontology level. Could also have the side benefit of providing a point of introspection John G: I totally would want BioPortal to be capable of managing the RDF produced from SSSOM resources, and for Bioportal to be a mapping resource and not simply an ontology resource. I suspect the RDF patterns that SSSOM is defining are the gold we'll need for that gold standard for exchanging mappings. Uploading the RDF files can trivially be done in a naive way of course, but integrating that RDF knowledge into Bioportal to make them maximally useful as a separate kind of resource is obviously 'real work' (and so schedules are unknowable). John: how dependent is the library on the software itself? Is it an exchange principle? Nico: LinkML has the advantage that it gets JSON and TTL outputs for free if we use it. Would also be advantageous if more people used this standard for metamodeling to create similar outputs for different modeling Charlie: using \"frontmatter\" format for SSSOM TSV files, like how github is using frontmatter in Jekyll (ref: https://blog.datacite.org/using-yaml-frontmatter-with-csv/) (http://csvy.org/) John G: Analogous to frontmatter format, I keep being drawn to the SKOS Play format as an alternate (but I think TTL-compatible) format for the SSSOM content. How bad would that be? (I can create a ticket) Charlie: Requirements for a default JSON-LD context (e.g., prefix -> URL prefix mapping) How should it be maintained? Should it continue to be manually curated, or is an automated export from something like the Bioregistry a good idea? If it's automatically exported from the Bioregistry, what kinds of interactions might users want to have via the Bioregistry issue tracker to propose improvements? Similarly, we can make tutorials for directly creating PRs. Charlie: How prefixes should be stylized/what is the business logic/decision tree for using OBO Library PURLs, Identifiers.org URLs, Bioregistry URLs, first-party provider URLs, etc. based on what's available and mapped between various first-party providers, third-party providers (e.g., ChemSpider InChI resolver), and meta-providers (e.g., Identifiers.org, OntoBee)? This is both a concern for \"best practices\" in SSSOM defining a custom context and also when using or extending the default context. Charlie: How to represent mappings where the curator is unsure if the relation is correct or not? This happens often when curating equivalences, e.g., in Biomappings https://github.com/biomappings/biomappings/blob/master/src/biomappings/resources/unsure.tsv Tiffany: Is it important to know why someone feels more or less confident about a mapping? If so, is there also a way to include that in the measure of \u201cconfidence\u201d? Sue: In practice I\u2019ve tended to add comments when I am uncertain and have questions. Possibly this could be formalized? Davera clinical use case discussion: Overall issue: mapping sets of things to a term is a goal for clinical mappings mapping recommendations/rational exercise staging and diagnosis information (like stage 1 or stage 2 of a given cancer) Select a set of stages - this is challenging wrt mappings Different kinds of scales describing the same thing are hard/sometimes not \"kosher\" to mix Phenotypes rely on capturing human-readable data on the decision logic of how mappings are applied by standards implementation team Proposed to look at the HL7 Implementation profiles as a way to incorporate an approach to this complex mapping challenge Melissa: rename SSSOM to Slytherin Standard. Charlie 100% supports this (Tiffany: +1; Alex +1) Kristin also likes this. John used it. John G: Ontology repositories are mappings-motivated, to both provide to users good mappings, and to provide good ways for users or managers to ingest, manage, apply, and create mapping knowledge. Ontology repositories are presumably also capable of storing mappings in their semantic (RDF-equivalent) format. With this in mind, is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories? John G: Need to consider identification and versioning of the mapping artifacts. It's one thing to say \"We have all the mapping artifacts and we are giving those out\", but (just like ontologies) citing a mapping artifact requires that you have a unique identifier for that artifact, and that the identifier incorporates the fact the artifact may have multiple versions. Ideally the SSSOM artifacts (like ontologies) would (a) be accessible in a defined format at the identifier IRI, (b) include their identifiers within the SSMOC artifact. I am thinking that an SSMOC is inherently a semantic artifact, and therefore it should follow semantic namespace declaration principles in this regard. Julie: W3id supports regex based redirects (for purls) Breakout sessions Curation rules: documenting the decision rules on how a mapping was determined Effective definition of inclusion criteria/exclusion criteria: Inclusion example: Two ontologies saying I created exact mappings that they have a string match or a string match to a synonym + an xref Exclusion example: Only matched on an acronym Match types Cover partial string matches Other documentation criteria to distinguish exact from narrow/broad - how exact is exact Line between close/narrow/broad Direction of narrow and broad DOS: I'd favor manual mapping be done on definitions + context in ontology, leaving lexical mappings to machines. What metadata could we add to the header to make clear criteria used? One thing it might be useful to record is whether ontology context (relationships & location in classification) of mapped terms was used (Some ontologies/taxonomies have poor quality graphs but high quality term definitions.) Source string match to target (lexical exact, stem, word [synonym and type]) - need for both source and target, how to synonyms fit in Needs: Generalized patterns that relate file header information to row-level information Need more expressivity in the match type Inclusion and exclusion criteria Best practices guide Algorithm/tool/similarity measure for computationally derived mappings Specificity with respect to the parent concept or portion of the hierarchy that the concept is from Mapping provenance and alignment with external provenance standards Problems: We need to distinguish original and derived mappings We need to somehow \u201cencode\u201d how a derived mapping was created (for example through a walk USeful to capture as part of the PROV activity agents (wasAssociatedWith some) mapping tool creator algorithms semantic similarity etc Why provenance: \u201ci dont trust mappings from source x..\u201d Who did it? What tools were used? - are the most important When completed, how often updated Which version of the ontology was the mapping generated from? (20-30 provenance related properties that could be relevant) list list of most-recommended terms as a template: https://github.com/sifrproject/MOD-Ontology/blob/master/mod-v1.4_properties_template.ttl Activity manual mapping -> Activity reconciliation Inputs and outputs of activities? Mapping set activities vs mapping activities Shahim: Generic tagging mechanism users add tags k:v Suggestion: we open the \u201cother\u201d field to arbitrary json, then if we see people use something a lot, we allow promoting stuff to the top level (look at fhir as an example) James counter suggestion: open the column space and allow Qnames in there? its like Shahims suggestion just on the top level; John says look at SKOS Play convert tool it implements arbitrary triples as so you add whatever properties you want in the top row top row is actually the first row after the Column Header row, which begins with \"Identifier\" cell Thomas: While it\u2019s nice to have the ability to express complex prov (and we should think about it), the important prov files are not that complex. Minimum should be something like: Creator, creation date, algorithm,... see below \u201clist of critical (minimum) prov information\u201d John: World is changing we can assume a bit more complexity All: A short list of the critical provenance information is needed, but there should also be a mechanism to add other ecosystem-specific provenance. Versioning: We need to carefully think through versioning of mapping sets. Versioning should be similar to ontology artefacts, with version IRIs and PURLs W3id supports regex based redirects We need to introduce versioning for the SSSOM standard itself. Someway to indicate whether breaking changes were introduced Representing predicate modification: negation, inverse, direct, indirect etc https://github.com/mapping-commons/sssom/issues/40 Negative mappings (e.g., not equivalent to, not related to) have a clear use case in supporting semi-automated curation of mappings to avoid zombie mappings. We agreed adding additional syntax to SSSOM would make it less simple and likely less accessible. Two candidate solutions for including negative mappings remain: curating a controlled vocabulary of negative relationships (e.g., sssom:notEquivalentTo) OR adding a predicated modifier column. We considered parallel discussions in the LinkML community and examined the use of predicate modifiers in the Gene Ontology Annotation database. Both solutions could work, but we were hesitant to commit to one during the meeting. Mapping (clinical etc) data model elements and values https://github.com/mapping-commons/sssom/issues/43 Use cases for complex mappings https://github.com/mapping-commons/sssom/issues/61 The main outcome for this discussion was that the particpant urged to keep the Simple in SSSOM, and that any decision to capture more complex mapping cases should be driven by a veruy strong use case For the first release of the SSSOM standard, we will not worry about complex mappings Next steps Declare stable first version for SSSOM spec (September 2021) Write manuscript (September/October 2021) Dockerise all mapping related tooling, for example for generation, reconciliation, transformation etc. (December 2021) Work with OAEI to publish automated mappings more systematically in SSSOM, including better mapping justifications/curation rules (Early 2022) Work with @cmungall & @balhoff to integrate mapping reconciliation as a first-class citizen into mapping pipelines (February 2022) Extend OxO to fully support SSSOM data model (prototype SSSOM browser April 2022).","title":"1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings"},{"location":"events/mc2021/#1st-mapping-commons-workshop-on-simple-standard-for-sharing-ontology-mappings","text":"When: 03.09.2021 For a list of participants see: Wikidata: https://www.wikidata.org/wiki/Q108394519 Scholia: https://scholia.toolforge.org/event/Q108394519 In 2020, we introduced the Simple Standard for Sharing Ontology Mappings (SSSOM) as a way for the mapping community to exchange and consolidate mappings using a simple TSV format. SSSOM seeks to solve, in particular, the following problems: Standardising the mapping metadata that is necessary to drive data transformation and knowledge graph merging use cases Enable effective merging and filtering of mapping sets Standardising the representation of mapping sets across formats such as RDF/XML, JSON-LD, TSV, and others. The purpose of this 3-hour workshop: Describing current use cases to the community, and ensuring all community use cases are documented and understood Establishing a user forum for getting support and providing feedback Define a simple governance strategy for organic evolution of standard Describing a number of key open issues: The representation of complex mappings The representation of curation rules The problem of predicate modification The alignment with external standards such as PROV-O and Alignment API Defining the path to a SSSOM beta release (stable) and the rallying for the paper Resources : Overview presentation","title":"1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings"},{"location":"events/mc2021/#outcomes","text":"Members of the SSSOM core team are organised as as github team: https://github.com/orgs/mapping-commons/teams/sssom-core If you want to become a member, please make an issue here: https://github.com/mapping-commons/SSSOM/issues We added some of the questions asked to the new SSSOM FAQ: https://mapping-commons.github.io/sssom/faq/ Governance proposal (comments welcome): https://github.com/mapping-commons/SSSOM/issues/82 Governance will evolve over time. Standard and governance will evolve together. We will versioning (like SemVer) and should denote when backwards incompatible changes happen The 5-Star system for open FAIR mappings is now in its first official version.","title":"Outcomes"},{"location":"events/mc2021/#discussion-summary","text":"Ben Gyori: would be interesting to discuss beyond the format whether there's a central repository, or whether primary developers will make it as a primary export hosted along with their other artifact. Would there be a process to pull those? Nico: takes a long time for uptake of new publication systems, so this could take a long time -> maybe better to promote on an ontology level. Could also have the side benefit of providing a point of introspection John G: I totally would want BioPortal to be capable of managing the RDF produced from SSSOM resources, and for Bioportal to be a mapping resource and not simply an ontology resource. I suspect the RDF patterns that SSSOM is defining are the gold we'll need for that gold standard for exchanging mappings. Uploading the RDF files can trivially be done in a naive way of course, but integrating that RDF knowledge into Bioportal to make them maximally useful as a separate kind of resource is obviously 'real work' (and so schedules are unknowable). John: how dependent is the library on the software itself? Is it an exchange principle? Nico: LinkML has the advantage that it gets JSON and TTL outputs for free if we use it. Would also be advantageous if more people used this standard for metamodeling to create similar outputs for different modeling Charlie: using \"frontmatter\" format for SSSOM TSV files, like how github is using frontmatter in Jekyll (ref: https://blog.datacite.org/using-yaml-frontmatter-with-csv/) (http://csvy.org/) John G: Analogous to frontmatter format, I keep being drawn to the SKOS Play format as an alternate (but I think TTL-compatible) format for the SSSOM content. How bad would that be? (I can create a ticket) Charlie: Requirements for a default JSON-LD context (e.g., prefix -> URL prefix mapping) How should it be maintained? Should it continue to be manually curated, or is an automated export from something like the Bioregistry a good idea? If it's automatically exported from the Bioregistry, what kinds of interactions might users want to have via the Bioregistry issue tracker to propose improvements? Similarly, we can make tutorials for directly creating PRs. Charlie: How prefixes should be stylized/what is the business logic/decision tree for using OBO Library PURLs, Identifiers.org URLs, Bioregistry URLs, first-party provider URLs, etc. based on what's available and mapped between various first-party providers, third-party providers (e.g., ChemSpider InChI resolver), and meta-providers (e.g., Identifiers.org, OntoBee)? This is both a concern for \"best practices\" in SSSOM defining a custom context and also when using or extending the default context. Charlie: How to represent mappings where the curator is unsure if the relation is correct or not? This happens often when curating equivalences, e.g., in Biomappings https://github.com/biomappings/biomappings/blob/master/src/biomappings/resources/unsure.tsv Tiffany: Is it important to know why someone feels more or less confident about a mapping? If so, is there also a way to include that in the measure of \u201cconfidence\u201d? Sue: In practice I\u2019ve tended to add comments when I am uncertain and have questions. Possibly this could be formalized? Davera clinical use case discussion: Overall issue: mapping sets of things to a term is a goal for clinical mappings mapping recommendations/rational exercise staging and diagnosis information (like stage 1 or stage 2 of a given cancer) Select a set of stages - this is challenging wrt mappings Different kinds of scales describing the same thing are hard/sometimes not \"kosher\" to mix Phenotypes rely on capturing human-readable data on the decision logic of how mappings are applied by standards implementation team Proposed to look at the HL7 Implementation profiles as a way to incorporate an approach to this complex mapping challenge Melissa: rename SSSOM to Slytherin Standard. Charlie 100% supports this (Tiffany: +1; Alex +1) Kristin also likes this. John used it. John G: Ontology repositories are mappings-motivated, to both provide to users good mappings, and to provide good ways for users or managers to ingest, manage, apply, and create mapping knowledge. Ontology repositories are presumably also capable of storing mappings in their semantic (RDF-equivalent) format. With this in mind, is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories? John G: Need to consider identification and versioning of the mapping artifacts. It's one thing to say \"We have all the mapping artifacts and we are giving those out\", but (just like ontologies) citing a mapping artifact requires that you have a unique identifier for that artifact, and that the identifier incorporates the fact the artifact may have multiple versions. Ideally the SSSOM artifacts (like ontologies) would (a) be accessible in a defined format at the identifier IRI, (b) include their identifiers within the SSMOC artifact. I am thinking that an SSMOC is inherently a semantic artifact, and therefore it should follow semantic namespace declaration principles in this regard. Julie: W3id supports regex based redirects (for purls)","title":"Discussion summary"},{"location":"events/mc2021/#breakout-sessions","text":"","title":"Breakout sessions"},{"location":"events/mc2021/#curation-rules-documenting-the-decision-rules-on-how-a-mapping-was-determined","text":"Effective definition of inclusion criteria/exclusion criteria: Inclusion example: Two ontologies saying I created exact mappings that they have a string match or a string match to a synonym + an xref Exclusion example: Only matched on an acronym Match types Cover partial string matches Other documentation criteria to distinguish exact from narrow/broad - how exact is exact Line between close/narrow/broad Direction of narrow and broad DOS: I'd favor manual mapping be done on definitions + context in ontology, leaving lexical mappings to machines. What metadata could we add to the header to make clear criteria used? One thing it might be useful to record is whether ontology context (relationships & location in classification) of mapped terms was used (Some ontologies/taxonomies have poor quality graphs but high quality term definitions.) Source string match to target (lexical exact, stem, word [synonym and type]) - need for both source and target, how to synonyms fit in Needs: Generalized patterns that relate file header information to row-level information Need more expressivity in the match type Inclusion and exclusion criteria Best practices guide Algorithm/tool/similarity measure for computationally derived mappings Specificity with respect to the parent concept or portion of the hierarchy that the concept is from","title":"Curation rules: documenting the decision rules on how a mapping was determined"},{"location":"events/mc2021/#mapping-provenance-and-alignment-with-external-provenance-standards","text":"Problems: We need to distinguish original and derived mappings We need to somehow \u201cencode\u201d how a derived mapping was created (for example through a walk USeful to capture as part of the PROV activity agents (wasAssociatedWith some) mapping tool creator algorithms semantic similarity etc Why provenance: \u201ci dont trust mappings from source x..\u201d Who did it? What tools were used? - are the most important When completed, how often updated Which version of the ontology was the mapping generated from? (20-30 provenance related properties that could be relevant) list list of most-recommended terms as a template: https://github.com/sifrproject/MOD-Ontology/blob/master/mod-v1.4_properties_template.ttl Activity manual mapping -> Activity reconciliation Inputs and outputs of activities? Mapping set activities vs mapping activities Shahim: Generic tagging mechanism users add tags k:v Suggestion: we open the \u201cother\u201d field to arbitrary json, then if we see people use something a lot, we allow promoting stuff to the top level (look at fhir as an example) James counter suggestion: open the column space and allow Qnames in there? its like Shahims suggestion just on the top level; John says look at SKOS Play convert tool it implements arbitrary triples as so you add whatever properties you want in the top row top row is actually the first row after the Column Header row, which begins with \"Identifier\" cell Thomas: While it\u2019s nice to have the ability to express complex prov (and we should think about it), the important prov files are not that complex. Minimum should be something like: Creator, creation date, algorithm,... see below \u201clist of critical (minimum) prov information\u201d John: World is changing we can assume a bit more complexity All: A short list of the critical provenance information is needed, but there should also be a mechanism to add other ecosystem-specific provenance. Versioning: We need to carefully think through versioning of mapping sets. Versioning should be similar to ontology artefacts, with version IRIs and PURLs W3id supports regex based redirects We need to introduce versioning for the SSSOM standard itself. Someway to indicate whether breaking changes were introduced","title":"Mapping provenance and alignment with external provenance standards"},{"location":"events/mc2021/#representing-predicate-modification-negation-inverse-direct-indirect-etc","text":"https://github.com/mapping-commons/sssom/issues/40 Negative mappings (e.g., not equivalent to, not related to) have a clear use case in supporting semi-automated curation of mappings to avoid zombie mappings. We agreed adding additional syntax to SSSOM would make it less simple and likely less accessible. Two candidate solutions for including negative mappings remain: curating a controlled vocabulary of negative relationships (e.g., sssom:notEquivalentTo) OR adding a predicated modifier column. We considered parallel discussions in the LinkML community and examined the use of predicate modifiers in the Gene Ontology Annotation database. Both solutions could work, but we were hesitant to commit to one during the meeting.","title":"Representing predicate modification: negation, inverse, direct, indirect etc"},{"location":"events/mc2021/#mapping-clinical-etc-data-model-elements-and-values","text":"https://github.com/mapping-commons/sssom/issues/43","title":"Mapping (clinical etc) data model elements and values"},{"location":"events/mc2021/#use-cases-for-complex-mappings","text":"https://github.com/mapping-commons/sssom/issues/61 The main outcome for this discussion was that the particpant urged to keep the Simple in SSSOM, and that any decision to capture more complex mapping cases should be driven by a veruy strong use case For the first release of the SSSOM standard, we will not worry about complex mappings","title":"Use cases for complex mappings"},{"location":"events/mc2021/#next-steps","text":"Declare stable first version for SSSOM spec (September 2021) Write manuscript (September/October 2021) Dockerise all mapping related tooling, for example for generation, reconciliation, transformation etc. (December 2021) Work with OAEI to publish automated mappings more systematically in SSSOM, including better mapping justifications/curation rules (Early 2022) Work with @cmungall & @balhoff to integrate mapping reconciliation as a first-class citizen into mapping pipelines (February 2022) Extend OxO to fully support SSSOM data model (prototype SSSOM browser April 2022).","title":"Next steps"},{"location":"events/mc2023/","text":"2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings (SSSOM) When : Sunday, 23rd April, 2:30 pm Italy (CET), 1:30 pm BST, 8:30 am EDT, 5:30 am PDT (3 hours total) Where : co-located with Biocuration 2023 . For information about the venue see https://biocuration2023.github.io/workshops. During the workshop, we will work a lot with Slido for interactive sharing of ideas, rather than relying on open discussions. We recommend having your laptop / phone with you to be able to participate. Recordings https://www.youtube.com/watch?v=juMQQ01Q540&list=PLqu_J7ADQtKyX55F7RqZtaSS7TwGd3MoR&ab_channel=BiocurationConference2023 Recommended preparation Scroll through the documentation , in particular the paper and the basic tutorial to get a basic sense of SSSOM Skim through, or even watch, the SSSOM CCB Seminar recording Scroll through the slide decks describing the problems we will be adressing (note, they are all works in progress): Complex Mappings: Examples from OMOP2OBO (Tiffany Callahan) Complex mappings - the journey towards a proposal (Nico Matentzoglu) Literal mappings with SSSOM (James McLaughlin) FAIR Impact and schema mappings (Yann Le Franc) - slides TBD Mapping Data Structures: Challenges and Approaches (Chris Mungall) Concept Set Mappings (Chris Roeder) - slides TBD Preliminary agenda Time Topic Led by 2:30pm Welcome, introduction, SSSOM overview and introduction of the problem of \"non-simple mappings\" Nico Matentzoglu 2:55pm FAIR Impact and schema mappings Yann Le Franc 3:10pm Literal mappings with SSSOM James McLaughlin 3:20pm Literal Mappings - Discussion 3:30pm Concept Set Mappings Chris Roeder 3:45pm Concept Set Mappings - discussion 3:55pm Break 4:05pm Complex Mappings: Examples from OMOP2OBO Tiffany Callahan 4:20pm Complex mappings - the journey towards a proposal Nico Matentzoglu 4:35pm Complex Mappings - discussion 4:50pm Mapping Data Structures: Challenges and Approaches Chris Mungall 5:05pm Schema Mappings - discussion 5:20pm Summary and closing remarks Nico Matentzoglu Organisers Nicolas Matentzoglu Yann Le Franc Tiffany Callahan Chris Mungall Chris Roeder James McLaughlin Nomi Harris","title":"2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings (SSSOM)"},{"location":"events/mc2023/#2nd-mapping-commons-workshop-on-simple-standard-for-sharing-ontology-mappings-sssom","text":"When : Sunday, 23rd April, 2:30 pm Italy (CET), 1:30 pm BST, 8:30 am EDT, 5:30 am PDT (3 hours total) Where : co-located with Biocuration 2023 . For information about the venue see https://biocuration2023.github.io/workshops. During the workshop, we will work a lot with Slido for interactive sharing of ideas, rather than relying on open discussions. We recommend having your laptop / phone with you to be able to participate.","title":"2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings (SSSOM)"},{"location":"events/mc2023/#recordings","text":"https://www.youtube.com/watch?v=juMQQ01Q540&list=PLqu_J7ADQtKyX55F7RqZtaSS7TwGd3MoR&ab_channel=BiocurationConference2023","title":"Recordings"},{"location":"events/mc2023/#recommended-preparation","text":"Scroll through the documentation , in particular the paper and the basic tutorial to get a basic sense of SSSOM Skim through, or even watch, the SSSOM CCB Seminar recording Scroll through the slide decks describing the problems we will be adressing (note, they are all works in progress): Complex Mappings: Examples from OMOP2OBO (Tiffany Callahan) Complex mappings - the journey towards a proposal (Nico Matentzoglu) Literal mappings with SSSOM (James McLaughlin) FAIR Impact and schema mappings (Yann Le Franc) - slides TBD Mapping Data Structures: Challenges and Approaches (Chris Mungall) Concept Set Mappings (Chris Roeder) - slides TBD","title":"Recommended preparation"},{"location":"events/mc2023/#preliminary-agenda","text":"Time Topic Led by 2:30pm Welcome, introduction, SSSOM overview and introduction of the problem of \"non-simple mappings\" Nico Matentzoglu 2:55pm FAIR Impact and schema mappings Yann Le Franc 3:10pm Literal mappings with SSSOM James McLaughlin 3:20pm Literal Mappings - Discussion 3:30pm Concept Set Mappings Chris Roeder 3:45pm Concept Set Mappings - discussion 3:55pm Break 4:05pm Complex Mappings: Examples from OMOP2OBO Tiffany Callahan 4:20pm Complex mappings - the journey towards a proposal Nico Matentzoglu 4:35pm Complex Mappings - discussion 4:50pm Mapping Data Structures: Challenges and Approaches Chris Mungall 5:05pm Schema Mappings - discussion 5:20pm Summary and closing remarks Nico Matentzoglu","title":"Preliminary agenda"},{"location":"events/mc2023/#organisers","text":"Nicolas Matentzoglu Yann Le Franc Tiffany Callahan Chris Mungall Chris Roeder James McLaughlin Nomi Harris","title":"Organisers"},{"location":"events/oboacademy2022/","text":"OBO Academy 2022: Introduction to manual mapping curation Where: Virtual, https://oboacademy.github.io/obook/courses/monarch-obo-training/ When: 17th May 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: See here .","title":"Oboacademy2022"},{"location":"events/oboacademy2022/#obo-academy-2022-introduction-to-manual-mapping-curation","text":"Where: Virtual, https://oboacademy.github.io/obook/courses/monarch-obo-training/ When: 17th May 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: See here .","title":"OBO Academy 2022: Introduction to manual mapping curation"},{"location":"events/ohdsi2022/","text":"OHDSI Symposium 2022: There are no \"good\" mappings. Where: https://www.ohdsi.org/ohdsi2022symposium/ https://www.ohdsi.org/ohdsi2022-workgroup-activities/ When: 15th October 2022 Speaker: Nicolas Matentzoglu, Melissa Haendel, Tiffany Callahan Slides: https://docs.google.com/presentation/d/1sGPh1b0keghxF4o7vMOQAlZ6QyBf97ZpaTXjmMY3UP0/edit#slide=id.p Abstract: The current state of observation data transformation management has resulted in a proliferation of approaches to data normalization and alignment that have accordingly created an explosion of maps. When publicly available, data transformation maps are of varying quality and are often configured to meet single clinical domain or project-specific objectives. Sharing maps in a community requires metadata to help map comparison and evaluation, and release management over different versions. This is typically lacking. In this workshop we will present rationale for translational research data transformation management, including implementation examples mapping Real World Data to OMOP, at-scale. We will discuss the way in which source vocabularies are managed in OMOP and how to improve that process in the future. Data transformations that accommodate divergent underlying ontologies supporting a variety of use cases will be solicited from the participants both in advance and during the workshop.","title":"Ohdsi2022"},{"location":"events/ohdsi2022/#ohdsi-symposium-2022-there-are-no-good-mappings","text":"Where: https://www.ohdsi.org/ohdsi2022symposium/ https://www.ohdsi.org/ohdsi2022-workgroup-activities/ When: 15th October 2022 Speaker: Nicolas Matentzoglu, Melissa Haendel, Tiffany Callahan Slides: https://docs.google.com/presentation/d/1sGPh1b0keghxF4o7vMOQAlZ6QyBf97ZpaTXjmMY3UP0/edit#slide=id.p Abstract: The current state of observation data transformation management has resulted in a proliferation of approaches to data normalization and alignment that have accordingly created an explosion of maps. When publicly available, data transformation maps are of varying quality and are often configured to meet single clinical domain or project-specific objectives. Sharing maps in a community requires metadata to help map comparison and evaluation, and release management over different versions. This is typically lacking. In this workshop we will present rationale for translational research data transformation management, including implementation examples mapping Real World Data to OMOP, at-scale. We will discuss the way in which source vocabularies are managed in OMOP and how to improve that process in the future. Data transformations that accommodate divergent underlying ontologies supporting a variety of use cases will be solicited from the participants both in advance and during the workshop.","title":"OHDSI Symposium 2022: There are no \"good\" mappings."},{"location":"events/ohdsi2023/","text":"Poster presentation at OHDSI 2023 Symposium, Rotterdam Title : \"Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI)\" Where : https://www.ohdsi-europe.org/index.php/symposium-2023 When : 3rd July 2023 Presenters : Polina Talapova Nicolas Matentzoglu Links : Link to poster Link to short report","title":"Ohdsi2023"},{"location":"events/ohdsi2023/#poster-presentation-at-ohdsi-2023-symposium-rotterdam","text":"Title : \"Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI)\" Where : https://www.ohdsi-europe.org/index.php/symposium-2023 When : 3rd July 2023 Presenters : Polina Talapova Nicolas Matentzoglu Links : Link to poster Link to short report","title":"Poster presentation at OHDSI 2023 Symposium, Rotterdam"},{"location":"events/om2022/","text":"OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook Where: Virtual, co-located with ISWC 2022, http://om2022.ontologymatching.org/ When: 23rd October 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: The Simple Standard for Ontological Mappings (SSSOM) was first published in December 2021 (v. 0.9). After a number of revisions prompted by community feedback, we have published version 0.10.1 in August 2022. One of the key new features is the use of a controlled vocabulary for mapping-related processes, such as preprocessing steps and matching approaches. In this paper, we give an update on the development of SSSOM since v. 0.9, introduce the Semantic Mapping Vocabulary (SEMAPV) and outline some of our thoughts on the establishment of mapping commons in the future.","title":"Om2022"},{"location":"events/om2022/#om-2022-a-simple-standard-for-ontological-mappings-2022-updates-of-data-model-and-outlook","text":"Where: Virtual, co-located with ISWC 2022, http://om2022.ontologymatching.org/ When: 23rd October 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: The Simple Standard for Ontological Mappings (SSSOM) was first published in December 2021 (v. 0.9). After a number of revisions prompted by community feedback, we have published version 0.10.1 in August 2022. One of the key new features is the use of a controlled vocabulary for mapping-related processes, such as preprocessing steps and matching approaches. In this paper, we give an update on the development of SSSOM since v. 0.9, introduce the Semantic Mapping Vocabulary (SEMAPV) and outline some of our thoughts on the establishment of mapping commons in the future.","title":"OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook"},{"location":"events/pistoia2022/","text":"Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM) Where: Virtual When: 28th April 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: Meeting introducing SSSOM to the Pistoia Alliance.","title":"Pistoia2022"},{"location":"events/pistoia2022/#pistoia-seminar-2022-a-simple-standard-for-sharing-ontological-mappings-sssom","text":"Where: Virtual When: 28th April 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: Meeting introducing SSSOM to the Pistoia Alliance.","title":"Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"events/wsbo2021/","text":"WSBO-2021: Workshop on Synergizing Biomedical Ontologies Where: https://github.com/OntoloBridge/WSBO/ Slides","title":"Wsbo2021"},{"location":"events/wsbo2021/#wsbo-2021-workshop-on-synergizing-biomedical-ontologies","text":"Where: https://github.com/OntoloBridge/WSBO/ Slides","title":"WSBO-2021: Workshop on Synergizing Biomedical Ontologies"},{"location":"explanation/mappings/","text":"What is a mapping? The word \"mapping\" is pretty overloaded in practice: for some people, it simply means \"a correspondence of one term to another equivalent or near equivalent term.\" But even here, there is little understanding to what a \"term\" is in this sentence, or what \"almost equivalent\" means - and, there are many different kinds of mappings used in practice that are not \"equivalent\" at all. In its very essence, an individual mapping maps one information entity, i.e. a representation of a real world entity , to another information entity - how, and what these strings could be, will be the subject of the following section. In the following, we consider an information entity a sequence of characters which has a well defined relationship to some thing in the real world , for example: - an ontology id like HP:0004934 corresponds to the concept of \"Vascular calcification\" in the real world. Note that HP:0004934 is annotated with the rdfs:label \"Vascular calcification\". The label itself is not necessarily a term - it could change, for example to \"Abnormal calcification of the vasculature\", and still retain the same meaning. - \"Vascular calcification\" may be a term in my controlled vocabulary which I understand to correspond to that respective disease (not all controlled vocabularies have IDs for their terms). This happens for example in clinical data models that do not use formal identifiers to refer to the values of slots in their data model, like \"MARRIED\" in /datamodel/marital_status. - Examples of terms: - IDs of classes in an ontology - elements of a clinical value set - codes of clinical terminologies such as Z63.1 - TLDR: terms correspond to things in the world and that correspondence is not subject to change. Labels can change without changing the meaning of a term. An attempt at a practical categorisation In our experience, there are roughly four kinds of mappings: string-string : Relating one string, or label, to another string, or label. Understanding such mappings is fundamental to understanding all the other kinds of mappings. string-term : Relating a specific string or \"label\" to their corresponding term in a terminology or ontology. We usually refer to these as synonyms, but there may be other words used in this case. term-term : Relating a term, for example a class in an ontology, to another term. This is what most people in the ontology domain would understand when thy hear \"ontology mappings\". complex mappings : Relating two sets of terms. These are the rarest and most complicated kinds of mappings, as they related for example two phenotypic profiles (sets of phenotypes) with each other. We will discuss some more examples in a future lesson. In some ways, these four kinds of mappings can be very different. We do believe, however, that there are enough important commonalities such as common features, widely overlapping use cases and overlapping toolkits to consider them together. In the following, we will discuss these in more detail, including important features of mappings and useful tools. Important features of mappings Mappings have historically been neglected as second-class citizens in the medical terminology and ontology worlds - the metadata is insufficient to allow for precise analyses and clinical decision support, they are frequently stale and out of date, etc. The question \"Where can I find the canonical mappings between X and Y\"? is often shrugged off and developers are pointed to aggregators such as OxO or UMLS which combine manually curated mappings with automated ones causing \"mapping hairballs\" . There are many important metadata elements to consider, but the ones that are by far the most important to consider one way or another are: Precision : Is the mapping exact, broad or merely closely related? Confidence : Do I trust the mapping? Was is done manually by an expert in my domain, or by an algorithm? Source version : Which version of the term (or its corresponding ontology) was mapped? Is there a newer mapping which has a more suitable match for my term? Whenever you handle mappings (either create, or re-use), make sure you are keenly aware of at least these three metrics, and capture them. You may even want to consider using a proper mapping model like the Simple Shared Standard for Ontology Mappings (SSSOM) which will make your mappings FAIR and reusable. String-string mappings String-string mappings are mappings that relate two strings. The task of matching two strings is ubiquitous for example in database search fields (where a user search string needs to be mapped to some strings in a database). Most, if not all effective ontology matching techniques will employ some form of string-string matching. For example, to match simple variations of labels such as \"abnormal heart\" and \"heart abnormality\", various techniques such as Stemming and bag of words can be employed effectively. Other techniques such as edit-distance or Levenshtein can be used to quantify the similarity of two strings, which can provide useful insights into mapping candidates. String-term mappings / synonyms String-term mappings relate a specific string or \"label\" to their corresponding term in a terminology or ontology. Here, we refer to these as \"synonyms\", but there may be other cases for string-term mappings beyond synonymy. There are a lot of use cases for synonyms so we will name just a few here that are relevant to typical workflows of Semantic Engineers in the life sciences. Thesauri are reference tools for finding synonyms of terms. Modern ontologies often include very rich thesauri, with some ontologies like Mondo capturing more than 70,000 exact and 35,000 related synonyms. They can provide a huge boost to traditional NLP pipelines by providing synonyms that can be used for both Named Entity Recognition and Entity Resolution. Some insight on how, for example, Uberon was used to boost text mining can be found here . Term-term mappings / ontology mappings Term-term mappings relate a term, for example a class in an ontology, to another term, usually from another ontology or database. The term-term case of mappings is what most people in the ontology domain would understand when they hear \"ontology mappings\". This is also what most people understand when they here \"Entity Resolution\" in the database world - the task of determining whether, in essence, two rows in a database correspond to the same thing (as an example of a tool doing ER see deepmatcher , or py-entitymatcher ). For a list standard entity matching toolkit outside the ontology sphere see here . Further reading A great overview can be found in \"Tackling the challenges of matching biomedical ontologies\" (Faria et al 2018) A yearly competition of ontology matching systems is held by the Ontology Alignment Evaluation Initiative (OAEI) . The challenge results are a useful guide to identifying systems for matching you may want to try. Some examples of domain-specific mapping of importance to the biomedical domain Phenotype ontology mappings Mapping phenotypes across species holds great promise for leveraging the knowledge generated by Model Organism Database communities (MODs) for understanding human disease. There is a lot of work happening at the moment (2021) to provide standard mappings between species specific phenotype ontologies to drive translational research ( example ). Tools such as Exomiser leverage such mappings to perform clinical diagnostic tasks such as variant prioritisation. Another app you can try out that leverages cross-species mappings is the Monarch Initiatives Phenotype Profile Search . Disease ontology mappings Medical terminology and ontology mapping is a huge deal in medical informatics ( example ). Mondo is a particularly rich source of well provenanced disease ontology mappings. How should you map your data to ontologies? There are no one size fits all strategies for mapping your data to ontologies. There are many research areas that have something to give in this process. Here, we outline some ideas on how to think about the problem. Case 1: Mapping internal controlled vocabularies Case 2: Mappings from free text Examples: - Monarch Text Annotator Case 3: Mappings between public controlled vocabularies and ontologies How to solve the problem of mapping hairballs String-term mappings Overview of automated approaches - Simple matches (string, string pre-pro, fuzzy string) - Graph-based matches (incl. semantic similarity) - NLP/Machine Learning Practical: - Try to get the same mappings as before using techniques - Exact - Simple preprocessing - Levenshtein - Jaccard similarity - Embedding similarity (?)","title":"What is a mapping?"},{"location":"explanation/mappings/#what-is-a-mapping","text":"The word \"mapping\" is pretty overloaded in practice: for some people, it simply means \"a correspondence of one term to another equivalent or near equivalent term.\" But even here, there is little understanding to what a \"term\" is in this sentence, or what \"almost equivalent\" means - and, there are many different kinds of mappings used in practice that are not \"equivalent\" at all. In its very essence, an individual mapping maps one information entity, i.e. a representation of a real world entity , to another information entity - how, and what these strings could be, will be the subject of the following section. In the following, we consider an information entity a sequence of characters which has a well defined relationship to some thing in the real world , for example: - an ontology id like HP:0004934 corresponds to the concept of \"Vascular calcification\" in the real world. Note that HP:0004934 is annotated with the rdfs:label \"Vascular calcification\". The label itself is not necessarily a term - it could change, for example to \"Abnormal calcification of the vasculature\", and still retain the same meaning. - \"Vascular calcification\" may be a term in my controlled vocabulary which I understand to correspond to that respective disease (not all controlled vocabularies have IDs for their terms). This happens for example in clinical data models that do not use formal identifiers to refer to the values of slots in their data model, like \"MARRIED\" in /datamodel/marital_status. - Examples of terms: - IDs of classes in an ontology - elements of a clinical value set - codes of clinical terminologies such as Z63.1 - TLDR: terms correspond to things in the world and that correspondence is not subject to change. Labels can change without changing the meaning of a term.","title":"What is a mapping?"},{"location":"explanation/mappings/#an-attempt-at-a-practical-categorisation","text":"In our experience, there are roughly four kinds of mappings: string-string : Relating one string, or label, to another string, or label. Understanding such mappings is fundamental to understanding all the other kinds of mappings. string-term : Relating a specific string or \"label\" to their corresponding term in a terminology or ontology. We usually refer to these as synonyms, but there may be other words used in this case. term-term : Relating a term, for example a class in an ontology, to another term. This is what most people in the ontology domain would understand when thy hear \"ontology mappings\". complex mappings : Relating two sets of terms. These are the rarest and most complicated kinds of mappings, as they related for example two phenotypic profiles (sets of phenotypes) with each other. We will discuss some more examples in a future lesson. In some ways, these four kinds of mappings can be very different. We do believe, however, that there are enough important commonalities such as common features, widely overlapping use cases and overlapping toolkits to consider them together. In the following, we will discuss these in more detail, including important features of mappings and useful tools.","title":"An attempt at a practical categorisation"},{"location":"explanation/mappings/#important-features-of-mappings","text":"Mappings have historically been neglected as second-class citizens in the medical terminology and ontology worlds - the metadata is insufficient to allow for precise analyses and clinical decision support, they are frequently stale and out of date, etc. The question \"Where can I find the canonical mappings between X and Y\"? is often shrugged off and developers are pointed to aggregators such as OxO or UMLS which combine manually curated mappings with automated ones causing \"mapping hairballs\" . There are many important metadata elements to consider, but the ones that are by far the most important to consider one way or another are: Precision : Is the mapping exact, broad or merely closely related? Confidence : Do I trust the mapping? Was is done manually by an expert in my domain, or by an algorithm? Source version : Which version of the term (or its corresponding ontology) was mapped? Is there a newer mapping which has a more suitable match for my term? Whenever you handle mappings (either create, or re-use), make sure you are keenly aware of at least these three metrics, and capture them. You may even want to consider using a proper mapping model like the Simple Shared Standard for Ontology Mappings (SSSOM) which will make your mappings FAIR and reusable.","title":"Important features of mappings"},{"location":"explanation/mappings/#string-string-mappings","text":"String-string mappings are mappings that relate two strings. The task of matching two strings is ubiquitous for example in database search fields (where a user search string needs to be mapped to some strings in a database). Most, if not all effective ontology matching techniques will employ some form of string-string matching. For example, to match simple variations of labels such as \"abnormal heart\" and \"heart abnormality\", various techniques such as Stemming and bag of words can be employed effectively. Other techniques such as edit-distance or Levenshtein can be used to quantify the similarity of two strings, which can provide useful insights into mapping candidates.","title":"String-string mappings"},{"location":"explanation/mappings/#string-term-mappings-synonyms","text":"String-term mappings relate a specific string or \"label\" to their corresponding term in a terminology or ontology. Here, we refer to these as \"synonyms\", but there may be other cases for string-term mappings beyond synonymy. There are a lot of use cases for synonyms so we will name just a few here that are relevant to typical workflows of Semantic Engineers in the life sciences. Thesauri are reference tools for finding synonyms of terms. Modern ontologies often include very rich thesauri, with some ontologies like Mondo capturing more than 70,000 exact and 35,000 related synonyms. They can provide a huge boost to traditional NLP pipelines by providing synonyms that can be used for both Named Entity Recognition and Entity Resolution. Some insight on how, for example, Uberon was used to boost text mining can be found here .","title":"String-term mappings / synonyms"},{"location":"explanation/mappings/#term-term-mappings-ontology-mappings","text":"Term-term mappings relate a term, for example a class in an ontology, to another term, usually from another ontology or database. The term-term case of mappings is what most people in the ontology domain would understand when they hear \"ontology mappings\". This is also what most people understand when they here \"Entity Resolution\" in the database world - the task of determining whether, in essence, two rows in a database correspond to the same thing (as an example of a tool doing ER see deepmatcher , or py-entitymatcher ). For a list standard entity matching toolkit outside the ontology sphere see here .","title":"Term-term mappings / ontology mappings"},{"location":"explanation/mappings/#further-reading","text":"A great overview can be found in \"Tackling the challenges of matching biomedical ontologies\" (Faria et al 2018) A yearly competition of ontology matching systems is held by the Ontology Alignment Evaluation Initiative (OAEI) . The challenge results are a useful guide to identifying systems for matching you may want to try.","title":"Further reading"},{"location":"explanation/mappings/#some-examples-of-domain-specific-mapping-of-importance-to-the-biomedical-domain","text":"","title":"Some examples of domain-specific mapping of importance to the biomedical domain"},{"location":"explanation/mappings/#phenotype-ontology-mappings","text":"Mapping phenotypes across species holds great promise for leveraging the knowledge generated by Model Organism Database communities (MODs) for understanding human disease. There is a lot of work happening at the moment (2021) to provide standard mappings between species specific phenotype ontologies to drive translational research ( example ). Tools such as Exomiser leverage such mappings to perform clinical diagnostic tasks such as variant prioritisation. Another app you can try out that leverages cross-species mappings is the Monarch Initiatives Phenotype Profile Search .","title":"Phenotype ontology mappings"},{"location":"explanation/mappings/#disease-ontology-mappings","text":"Medical terminology and ontology mapping is a huge deal in medical informatics ( example ). Mondo is a particularly rich source of well provenanced disease ontology mappings.","title":"Disease ontology mappings"},{"location":"explanation/mappings/#how-should-you-map-your-data-to-ontologies","text":"There are no one size fits all strategies for mapping your data to ontologies. There are many research areas that have something to give in this process. Here, we outline some ideas on how to think about the problem.","title":"How should you map your data to ontologies?"},{"location":"explanation/mappings/#case-1-mapping-internal-controlled-vocabularies","text":"","title":"Case 1: Mapping internal controlled vocabularies"},{"location":"explanation/mappings/#case-2-mappings-from-free-text","text":"Examples: - Monarch Text Annotator","title":"Case 2: Mappings from free text"},{"location":"explanation/mappings/#case-3-mappings-between-public-controlled-vocabularies-and-ontologies","text":"","title":"Case 3: Mappings between public controlled vocabularies and ontologies"},{"location":"explanation/mappings/#how-to-solve-the-problem-of-mapping-hairballs","text":"String-term mappings Overview of automated approaches - Simple matches (string, string pre-pro, fuzzy string) - Graph-based matches (incl. semantic similarity) - NLP/Machine Learning Practical: - Try to get the same mappings as before using techniques - Exact - Simple preprocessing - Levenshtein - Jaccard similarity - Embedding similarity (?)","title":"How to solve the problem of mapping hairballs"},{"location":"tutorials/omop-mappings/","text":"How to gradually enrich OMOP mappings with SSSOM This document is a guide for OMOP ETL developers to think about gradually improving the (documentation of the) strength of evidence for their vocabulary mappings. Example table from OMOP Generated manually with Athena on the 20th July 2023. The start and end dates are invented. concept_id_1 concept_id_2 relationship_id valid_start_date valid_end_date invalid_reason 44499396 4028717 Maps to 19700101 20991231 45586281 4028717 Maps to 73754 20991231 Level 1, basic mapping table, basic provenance The SSSOM metadata provided is conceptually correct, but fictious. The reader should imagine this being provided as a separate CONCEPT_MAPPINGS.CSV table that can be joined on subject_id -> concept_id_1 , object_id -> concept_id_2 for all rows with a Maps to relationship_id (this is assuming that the concept_id_1 , concept_id_2 tuple is unique for Maps to ). subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 omoprel:mapsTo OHDSI:UMLS semapv:UnspecifiedMatching What we see here: all identifiers are prefixed to make sure they are interpreted correctly when they are reused. This includes OMOP ids (e.g. OMOP:44499396 ) as well as ORCIDs (OPTIONAL) \"Maps to\" is encoded using a proper identifier rather than a string (OPTIONAL) All three mappings have a mapping_justification to distinguish for example if the mapping was determined by human manual curation ( semapv:ManualMappingCuration ) or lexical matching ( semapv:LexicalMatching ). Many other justifications exist and/or can be created. If the justification for the mapping is unknown, we can make our lack of knowledge transparent by using semapv:UnspecifiedMatching . author_id , in the case of semapv:ManualMappingCuration , tells us who the person is that determined the mapping. This is basic provenance. If the identity of the author can be connected with an public record such as ORCID, this can help mapping users to increase trust in a mapping. reviewer_id tells us that some human looked at the mapping after it was proposed by a tool, and \"signed off\" on it. This can be valueable, again, to increase trust. If the match was generated by the tool, some basic provenance is added ( mapping_tool , mapping_tool_version ). Level 2: Curate semantic mapping predicate subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching What do we see here? Rather than Maps to , the mapping predicate (e.g. skos:exactMatch ) is a semantic mapping predicate from a standardised vocabulary ( SKOS ). Here, we distinguish between skos:exactMatch and skos:broadMatch , but there are other predicates, see for example in the Semantic Mapping Vocabulary . Level 3: Document confidence widely confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717 ) is correct with 90% confidence. subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 0.8 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching 0.6 What do we see here? For matching tools, confidence can be calculated by proxies such as \"lexical similarity\", \"edit distance\", \"cosine similarity of node embedding\" and other metrics. IN the example above, Usagi has determined that the subject and objects match, but it was only 80% sure (we dont know why - this is more advance SSSOM ) For case where an external mapping is re-used using ETL, confidence describes the level of trust you as an ETL expert have in the fidelty of the mapping provided by the source. Level 4: Document curation rules subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence curation_rule OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OHDSI_CURATION_RULE:19 What do we see here? For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rules can help increasing consistency for manual curation, and transparency for downstream users. OHDSI_CURATION_RULE:19 is a rule defined by your own curation rulebook. This can be anything . For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement.","title":"How to gradually enrich OMOP mappings with SSSOM"},{"location":"tutorials/omop-mappings/#how-to-gradually-enrich-omop-mappings-with-sssom","text":"This document is a guide for OMOP ETL developers to think about gradually improving the (documentation of the) strength of evidence for their vocabulary mappings.","title":"How to gradually enrich OMOP mappings with SSSOM"},{"location":"tutorials/omop-mappings/#example-table-from-omop","text":"Generated manually with Athena on the 20th July 2023. The start and end dates are invented. concept_id_1 concept_id_2 relationship_id valid_start_date valid_end_date invalid_reason 44499396 4028717 Maps to 19700101 20991231 45586281 4028717 Maps to 73754 20991231","title":"Example table from OMOP"},{"location":"tutorials/omop-mappings/#level-1-basic-mapping-table-basic-provenance","text":"The SSSOM metadata provided is conceptually correct, but fictious. The reader should imagine this being provided as a separate CONCEPT_MAPPINGS.CSV table that can be joined on subject_id -> concept_id_1 , object_id -> concept_id_2 for all rows with a Maps to relationship_id (this is assuming that the concept_id_1 , concept_id_2 tuple is unique for Maps to ). subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 omoprel:mapsTo OHDSI:UMLS semapv:UnspecifiedMatching What we see here: all identifiers are prefixed to make sure they are interpreted correctly when they are reused. This includes OMOP ids (e.g. OMOP:44499396 ) as well as ORCIDs (OPTIONAL) \"Maps to\" is encoded using a proper identifier rather than a string (OPTIONAL) All three mappings have a mapping_justification to distinguish for example if the mapping was determined by human manual curation ( semapv:ManualMappingCuration ) or lexical matching ( semapv:LexicalMatching ). Many other justifications exist and/or can be created. If the justification for the mapping is unknown, we can make our lack of knowledge transparent by using semapv:UnspecifiedMatching . author_id , in the case of semapv:ManualMappingCuration , tells us who the person is that determined the mapping. This is basic provenance. If the identity of the author can be connected with an public record such as ORCID, this can help mapping users to increase trust in a mapping. reviewer_id tells us that some human looked at the mapping after it was proposed by a tool, and \"signed off\" on it. This can be valueable, again, to increase trust. If the match was generated by the tool, some basic provenance is added ( mapping_tool , mapping_tool_version ).","title":"Level 1, basic mapping table, basic provenance"},{"location":"tutorials/omop-mappings/#level-2-curate-semantic-mapping-predicate","text":"subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching What do we see here? Rather than Maps to , the mapping predicate (e.g. skos:exactMatch ) is a semantic mapping predicate from a standardised vocabulary ( SKOS ). Here, we distinguish between skos:exactMatch and skos:broadMatch , but there are other predicates, see for example in the Semantic Mapping Vocabulary .","title":"Level 2: Curate semantic mapping predicate"},{"location":"tutorials/omop-mappings/#level-3-document-confidence-widely","text":"confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717 ) is correct with 90% confidence. subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 0.8 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching 0.6 What do we see here? For matching tools, confidence can be calculated by proxies such as \"lexical similarity\", \"edit distance\", \"cosine similarity of node embedding\" and other metrics. IN the example above, Usagi has determined that the subject and objects match, but it was only 80% sure (we dont know why - this is more advance SSSOM ) For case where an external mapping is re-used using ETL, confidence describes the level of trust you as an ETL expert have in the fidelty of the mapping provided by the source.","title":"Level 3: Document confidence widely"},{"location":"tutorials/omop-mappings/#level-4-document-curation-rules","text":"subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence curation_rule OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OHDSI_CURATION_RULE:19 What do we see here? For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rules can help increasing consistency for manual curation, and transparency for downstream users. OHDSI_CURATION_RULE:19 is a rule defined by your own curation rulebook. This can be anything . For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement.","title":"Level 4: Document curation rules"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Simple Standard for Sharing Ontological Mappings (SSSOM) The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven standard designed to facilitate the exchange and integration of semantic entity mappings. As data interoperability becomes increasingly crucial across various domains, SSSOM provides a standardized format to share mappings, enabling researchers and developers to more easily connect and utilize diverse datasets. By establishing a common framework, SSSOM enhances the consistency, quality, and discoverability of mappings, thereby supporting more effective data integration and analysis. Standardization : SSSOM provides a unified format for representing semantic, or ontological, mappings, making it easier for different systems and organizations to exchange mapping data consistently. Interoperability : By using SSSOM, data from diverse sources can be integrated more seamlessly, allowing for improved data analysis and research across various fields, including biology, healthcare, and information technology. Beyond defining the standard itself, the SSSOM Core Team and the SSSOM community also develop reference tools and software libraries for working with the standard. SSSOM at a glance: Model and Exchange Format Basic model The data model of SSSOM is centered around two fundamental concepts: mappings and mapping sets. A SSSOM mapping is a statement that there is a correspondence between two semantic entities. It comprises two components: The core mapping (or raw mapping ), which is a triple that represents the correspondence itself between a subject entity, for example a class in an ontology, and an object entity, for example an identifier in some database, via a semantic mapping predicate, for example skos:exactMatch . Metadata that provide supplementary pieces of information about the core mapping. This notably includes information about the provenance of the statement (for example, who authored the statement), the confidence with which the mappings holds, and its justification (a reason that supports the fidelity of the mapping between the subject and the object, such as expert review , or exact lexical matching on the entities' primary names). A SSSOM mapping set is a collection of SSSOM mappings. Mapping sets can also be associated with metadata, such as license statements, or a description. The SSSOM/TSV format The main format proposed by the SSSOM standard to exchange mapping sets is the SSSOM/TSV format . Here is a basic example of a file in that format: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 Quick links General GitHub page Detailed description Formal specification Publications A Simple Standard for Sharing Ontological Mappings (SSSOM) (initial publication in Database ) A Simple Standard for Ontological Mappings 2022: Updates of data model and outlook (paper and presentation at the Ontology Matching Workshop 2022) A Simple Standard for Ontological Mappings 2023: Updates on data model, collaborations and tooling (paper and presentation at the Ontology Matching Workshop 2023) Other presentations Related software sssom-py (reference implementation of the standard, a toolkit and API for processing mappings, written in Python) SSSOM-Java (an implementation of the SSSOM standard for the Java language) The SSSOM Core Team Contact The preferred way to contact the SSSOM team is through the issue tracker (for problems with SSSOM) or the GitHub discussion forums (for general questions). You can find any of the members of the SSSOM core team on GitHub . Their GitHub profiles usually also provide email addresses. You can also reach us in the OBO Foundry Slack , in the #sssom channel. Steering committee The Steering committee is a self-appointed group of SSSOM contributors, whose aim is to drive the evolution of the standard and coordinate community contributions. Nicolas Matentzoglu (Semanticly, Independent Consultant; @matentzn ) Damien Goutte-Gattat (Flybase) Harshad Hegde (LBNL) Chris Mungall (LBNL) Melissa Haendel (UNC) Documentation/specification editors Anita Caron (EMBL-EBI) Charlie Hoyt (Harvard Medical School; @cthoyt ) David Osumi-Sutherland (EMBL-EBI) Emily Hartley (Critical Path Institute) Ernesto Jimenez-Ruiz (City, University of London) Harry Caufield (LBNL) Henriette Harmse (EMBL-EBI) James McLaughlin (EMBL-EBI) John Graybeal (Independent Consultant) Sierra Moxon (LBNL) Simon Jupp (SciBite) Thomas Liener (Independent Consultant) Tiffany Callahan ( @callahantiff ) William Duncan (University of Florida) Contributors Alasdair Gray Alex Wagner Amelia L. Hoyt Andrew Williams Anne Thessen Benjamin M. Gyori Bill Baumgartner Cassia Trojahn Clement Jonquet Christopher Chute Chris T. Evelo Damion Dooley Davera Gabriel Harold Solbrig HyeongSik Kim Ian Harrow Ian Braun James Malone James Overton James P. Balhoff James Stevenson Javier Mill\u00e1n Acosta Jiao Dahzi Joe Flack Jooho Lee Julie McMurry Kori Kuzma Kristin Kostka Lauren Chan Melissa Haendel Monica Munoz-Torres Nicole Vasilevsky Nomi Harris N\u00faria Queralt-Rosinach Sabrina Toro Sebastian Koehler Shahim Essaid Sophie Aubin Sue Bello Sujay Patil Sven Hertling Tim Putman Vinicius de Souza Acknowledgements See Funding for details on direct contributions. We thank the Link Model Language (LinkML) project and team for their great framework and the LinkML team for their support developing the schema.","title":"Home"},{"location":"#simple-standard-for-sharing-ontological-mappings-sssom","text":"The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven standard designed to facilitate the exchange and integration of semantic entity mappings. As data interoperability becomes increasingly crucial across various domains, SSSOM provides a standardized format to share mappings, enabling researchers and developers to more easily connect and utilize diverse datasets. By establishing a common framework, SSSOM enhances the consistency, quality, and discoverability of mappings, thereby supporting more effective data integration and analysis. Standardization : SSSOM provides a unified format for representing semantic, or ontological, mappings, making it easier for different systems and organizations to exchange mapping data consistently. Interoperability : By using SSSOM, data from diverse sources can be integrated more seamlessly, allowing for improved data analysis and research across various fields, including biology, healthcare, and information technology. Beyond defining the standard itself, the SSSOM Core Team and the SSSOM community also develop reference tools and software libraries for working with the standard.","title":"Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"#sssom-at-a-glance-model-and-exchange-format","text":"","title":"SSSOM at a glance: Model and Exchange Format"},{"location":"#basic-model","text":"The data model of SSSOM is centered around two fundamental concepts: mappings and mapping sets. A SSSOM mapping is a statement that there is a correspondence between two semantic entities. It comprises two components: The core mapping (or raw mapping ), which is a triple that represents the correspondence itself between a subject entity, for example a class in an ontology, and an object entity, for example an identifier in some database, via a semantic mapping predicate, for example skos:exactMatch . Metadata that provide supplementary pieces of information about the core mapping. This notably includes information about the provenance of the statement (for example, who authored the statement), the confidence with which the mappings holds, and its justification (a reason that supports the fidelity of the mapping between the subject and the object, such as expert review , or exact lexical matching on the entities' primary names). A SSSOM mapping set is a collection of SSSOM mappings. Mapping sets can also be associated with metadata, such as license statements, or a description.","title":"Basic model"},{"location":"#the-sssomtsv-format","text":"The main format proposed by the SSSOM standard to exchange mapping sets is the SSSOM/TSV format . Here is a basic example of a file in that format: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1","title":"The SSSOM/TSV format"},{"location":"#quick-links","text":"General GitHub page Detailed description Formal specification Publications A Simple Standard for Sharing Ontological Mappings (SSSOM) (initial publication in Database ) A Simple Standard for Ontological Mappings 2022: Updates of data model and outlook (paper and presentation at the Ontology Matching Workshop 2022) A Simple Standard for Ontological Mappings 2023: Updates on data model, collaborations and tooling (paper and presentation at the Ontology Matching Workshop 2023) Other presentations Related software sssom-py (reference implementation of the standard, a toolkit and API for processing mappings, written in Python) SSSOM-Java (an implementation of the SSSOM standard for the Java language)","title":"Quick links"},{"location":"#the-sssom-core-team","text":"","title":"The SSSOM Core Team"},{"location":"#contact","text":"The preferred way to contact the SSSOM team is through the issue tracker (for problems with SSSOM) or the GitHub discussion forums (for general questions). You can find any of the members of the SSSOM core team on GitHub . Their GitHub profiles usually also provide email addresses. You can also reach us in the OBO Foundry Slack , in the #sssom channel.","title":"Contact"},{"location":"#steering-committee","text":"The Steering committee is a self-appointed group of SSSOM contributors, whose aim is to drive the evolution of the standard and coordinate community contributions. Nicolas Matentzoglu (Semanticly, Independent Consultant; @matentzn ) Damien Goutte-Gattat (Flybase) Harshad Hegde (LBNL) Chris Mungall (LBNL) Melissa Haendel (UNC)","title":"Steering committee"},{"location":"#documentationspecification-editors","text":"Anita Caron (EMBL-EBI) Charlie Hoyt (Harvard Medical School; @cthoyt ) David Osumi-Sutherland (EMBL-EBI) Emily Hartley (Critical Path Institute) Ernesto Jimenez-Ruiz (City, University of London) Harry Caufield (LBNL) Henriette Harmse (EMBL-EBI) James McLaughlin (EMBL-EBI) John Graybeal (Independent Consultant) Sierra Moxon (LBNL) Simon Jupp (SciBite) Thomas Liener (Independent Consultant) Tiffany Callahan ( @callahantiff ) William Duncan (University of Florida)","title":"Documentation/specification editors"},{"location":"#contributors","text":"Alasdair Gray Alex Wagner Amelia L. Hoyt Andrew Williams Anne Thessen Benjamin M. Gyori Bill Baumgartner Cassia Trojahn Clement Jonquet Christopher Chute Chris T. Evelo Damion Dooley Davera Gabriel Harold Solbrig HyeongSik Kim Ian Harrow Ian Braun James Malone James Overton James P. Balhoff James Stevenson Javier Mill\u00e1n Acosta Jiao Dahzi Joe Flack Jooho Lee Julie McMurry Kori Kuzma Kristin Kostka Lauren Chan Melissa Haendel Monica Munoz-Torres Nicole Vasilevsky Nomi Harris N\u00faria Queralt-Rosinach Sabrina Toro Sebastian Koehler Shahim Essaid Sophie Aubin Sue Bello Sujay Patil Sven Hertling Tim Putman Vinicius de Souza","title":"Contributors"},{"location":"#acknowledgements","text":"See Funding for details on direct contributions. We thank the Link Model Language (LinkML) project and team for their great framework and the LinkML team for their support developing the schema.","title":"Acknowledgements"},{"location":"5star-mappings/","text":"5-Star Entity Mappings - Cheatsheet Download as PDF . This document is under development. Get involved by opening an issue on the issue tracker . Towards more reusable and transparent mappings for Open Science. Entity Mappings connect clinical codes, data model enums, ontology classes and terms in clinical terminologies across knowledge organization systems and databases. Entity mappings are pivotal for the integration of healthcare data, but they are expensive to produce and often use-case-dependent. Despite the cost of creating these mappings, they are rarely shared across organizations, and even if they are made available, they lack standardization and metadata. Here we outline a 5-Star mapping system (inspired by Tim Berners-Lee\u2019s 5-star system for Linked Data) to help you bring mapping production in your organization to the next level - step by step. 1-Star Mappings Goal : Export mapping in a computationally accessible format, make it publicly available and record mapping precision. Implementation : Record subject id, object id and mapping precision (exact, broad, narrow, close, related) Use globally unique and persistent identifiers for subject id and object id (e.g. OMOP:123456) Use a computable file format (JSON, XML, CSV, TSV) rather than XLSX or HTML Make mappings available in a public space without access restrictions Optional : record the subject and object labels to make it easier for humans to read the file Enables : Direct integration into ETL pipelines Dropping societal costs by enabling others to re-use mappings Moving data between semantic spaces 2-Star Mappings Goal : Make mappings available in a place with version control suitable for providing community feedback, make your own uncertainty explicit, add license and select semantic mapping predicate. Implementation Make mapping set available in a public version control system (e.g. GitHub) with an issue tracker Record the semantic predicate explicitly (e.g. owl:equivalentClass, skos:exactMatch) Record a confidence value for the mapping between 0 and 1, where appropriate Use a standard open license for the use of the mapping set (e.g. Creative Commons) Enables : The worry-free re-use of mappings even if target or source terminologies are \u201cclosed\u201d Transparently versioned access to mappings and the opportunity to provide more direct feedback Downstream users can filter for high-confidence mappings 3-Star Mappings Goal : Export mappings in a community standard format with basic versioning and provenance information. Implementation Export mappings in SSSOM ( https://w3id.org/sssom ) format (you do not have to curate using SSSOM!) Record the following additional metadata mapping_justification(s) (Lexical, Logical match, Human curated etc.) mapping_date subject_source, object_source, subject_source_version, object_source_version mapping_tool (if the mapping was automatically computed using a tool), creator_id Enables : Dropping costs of reusing mappings further by providing a standard format to exchange mappings Enabling the decentralised production of mappings by independent expert communities Basic metadata, in particular justifications, enable downstream users to assess \u201cfitness for purpose\u201d for a different context 4-Star Mappings Goal : Make it easier to discover mappings by registering them at public mapping registry Implementation Register the mapping at a mapping commons (if none exists, create one) Record the following additional metadata: mapping_set_id, mapping_set_description, mapping_set_version mapping_provider (if the mapping is not original, i.e. it is not derived from another source) Provide an executable mapping_justification (see https://w3id.org/sssom#minimum) Enables : Mappings can easily be made available by Open Terminology services which enable scalable data mapping services 5-Star Mappings Goal : Ensure currency of mappings Implementation : Mappings are up-to-date with the latest versions of the sources being mapped Have no issue on their issue tracker open for more than 3 months without an interaction Usually requires a lifecycle management system that integrates automated matching Enables : Reduced effort dealing with mappings to deprecated codes or classes Worry-free application of mappings in automated ETL processes","title":"5-Star Entity Mappings - Cheatsheet"},{"location":"5star-mappings/#5-star-entity-mappings-cheatsheet","text":"Download as PDF . This document is under development. Get involved by opening an issue on the issue tracker .","title":"5-Star Entity Mappings - Cheatsheet"},{"location":"5star-mappings/#towards-more-reusable-and-transparent-mappings-for-open-science","text":"Entity Mappings connect clinical codes, data model enums, ontology classes and terms in clinical terminologies across knowledge organization systems and databases. Entity mappings are pivotal for the integration of healthcare data, but they are expensive to produce and often use-case-dependent. Despite the cost of creating these mappings, they are rarely shared across organizations, and even if they are made available, they lack standardization and metadata. Here we outline a 5-Star mapping system (inspired by Tim Berners-Lee\u2019s 5-star system for Linked Data) to help you bring mapping production in your organization to the next level - step by step.","title":"Towards more reusable and transparent mappings for Open Science."},{"location":"5star-mappings/#1-star-mappings","text":"Goal : Export mapping in a computationally accessible format, make it publicly available and record mapping precision. Implementation : Record subject id, object id and mapping precision (exact, broad, narrow, close, related) Use globally unique and persistent identifiers for subject id and object id (e.g. OMOP:123456) Use a computable file format (JSON, XML, CSV, TSV) rather than XLSX or HTML Make mappings available in a public space without access restrictions Optional : record the subject and object labels to make it easier for humans to read the file Enables : Direct integration into ETL pipelines Dropping societal costs by enabling others to re-use mappings Moving data between semantic spaces","title":"1-Star Mappings"},{"location":"5star-mappings/#2-star-mappings","text":"Goal : Make mappings available in a place with version control suitable for providing community feedback, make your own uncertainty explicit, add license and select semantic mapping predicate. Implementation Make mapping set available in a public version control system (e.g. GitHub) with an issue tracker Record the semantic predicate explicitly (e.g. owl:equivalentClass, skos:exactMatch) Record a confidence value for the mapping between 0 and 1, where appropriate Use a standard open license for the use of the mapping set (e.g. Creative Commons) Enables : The worry-free re-use of mappings even if target or source terminologies are \u201cclosed\u201d Transparently versioned access to mappings and the opportunity to provide more direct feedback Downstream users can filter for high-confidence mappings","title":"2-Star Mappings"},{"location":"5star-mappings/#3-star-mappings","text":"Goal : Export mappings in a community standard format with basic versioning and provenance information. Implementation Export mappings in SSSOM ( https://w3id.org/sssom ) format (you do not have to curate using SSSOM!) Record the following additional metadata mapping_justification(s) (Lexical, Logical match, Human curated etc.) mapping_date subject_source, object_source, subject_source_version, object_source_version mapping_tool (if the mapping was automatically computed using a tool), creator_id Enables : Dropping costs of reusing mappings further by providing a standard format to exchange mappings Enabling the decentralised production of mappings by independent expert communities Basic metadata, in particular justifications, enable downstream users to assess \u201cfitness for purpose\u201d for a different context","title":"3-Star Mappings"},{"location":"5star-mappings/#4-star-mappings","text":"Goal : Make it easier to discover mappings by registering them at public mapping registry Implementation Register the mapping at a mapping commons (if none exists, create one) Record the following additional metadata: mapping_set_id, mapping_set_description, mapping_set_version mapping_provider (if the mapping is not original, i.e. it is not derived from another source) Provide an executable mapping_justification (see https://w3id.org/sssom#minimum) Enables : Mappings can easily be made available by Open Terminology services which enable scalable data mapping services","title":"4-Star Mappings"},{"location":"5star-mappings/#5-star-mappings","text":"Goal : Ensure currency of mappings Implementation : Mappings are up-to-date with the latest versions of the sources being mapped Have no issue on their issue tracker open for more than 3 months without an interaction Usually requires a lifecycle management system that integrates automated matching Enables : Reduced effort dealing with mappings to deprecated codes or classes Worry-free application of mappings in automated ETL processes","title":"5-Star Mappings"},{"location":"Boolean/","text":"Type: Boolean A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Boolean"},{"location":"Boolean/#type-boolean","text":"A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool","title":"Type: Boolean"},{"location":"Boolean/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Boolean/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Curie/","text":"Type: Curie a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str Comments in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Curie"},{"location":"Curie/#type-curie","text":"a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str","title":"Type: Curie"},{"location":"Curie/#comments","text":"in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation","title":"Comments"},{"location":"Curie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Curie/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Date/","text":"Type: Date a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Date"},{"location":"Date/#type-date","text":"a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str","title":"Type: Date"},{"location":"Date/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Date/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"DateOrDatetime/","text":"Type: DateOrDatetime Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#type-dateordatetime","text":"Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"DateOrDatetime/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Datetime/","text":"Type: Datetime The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Datetime"},{"location":"Datetime/#type-datetime","text":"The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str","title":"Type: Datetime"},{"location":"Datetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Datetime/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Decimal/","text":"Type: Decimal A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Decimal"},{"location":"Decimal/#type-decimal","text":"A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal","title":"Type: Decimal"},{"location":"Decimal/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Decimal/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Double/","text":"Type: Double A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Double"},{"location":"Double/#type-double","text":"A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double","title":"Type: Double"},{"location":"Double/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Double/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"EntityReference/","text":"Type: EntityReference A reference to an entity involved in the mapping. __ URI: rdfs:Resource base : str uri : rdfs:Resource repr : str typeof : uriorcurie See Also https://mapping-commons.github.io/sssom/spec/#tsv Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: EntityReference"},{"location":"EntityReference/#type-entityreference","text":"A reference to an entity involved in the mapping. __ URI: rdfs:Resource base : str uri : rdfs:Resource repr : str typeof : uriorcurie","title":"Type: EntityReference"},{"location":"EntityReference/#see-also","text":"https://mapping-commons.github.io/sssom/spec/#tsv","title":"See Also"},{"location":"EntityReference/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"EntityReference/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"EntityTypeEnum/","text":"Enum: EntityTypeEnum URI: EntityTypeEnum Permissible Values Value Meaning Description owl class owl:Class owl object property owl:ObjectProperty owl data property owl:DataProperty owl annotation property owl:AnnotationProperty owl named individual owl:NamedIndividual skos concept skos:Concept rdfs resource rdfs:Resource rdfs class rdfs:Class rdfs literal rdfs:Literal This value indicate that the entity being mapped is not a semantic entity wit... rdfs datatype rdfs:Datatype rdf property rdf:Property Slots Name Description subject_type The type of entity that is being mapped predicate_type The type of entity that is being mapped object_type The type of entity that is being mapped Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ LinkML Source name: entity_type_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: owl class: text: owl class meaning: owl:Class owl object property: text: owl object property meaning: owl:ObjectProperty owl data property: text: owl data property meaning: owl:DataProperty owl annotation property: text: owl annotation property meaning: owl:AnnotationProperty owl named individual: text: owl named individual meaning: owl:NamedIndividual skos concept: text: skos concept meaning: skos:Concept rdfs resource: text: rdfs resource meaning: rdfs:Resource rdfs class: text: rdfs class meaning: rdfs:Class rdfs literal: text: rdfs literal description: This value indicate that the entity being mapped is not a semantic entity with a distinct identifier, but is instead represented entirely by its literal label. This value MUST NOT be used in the predicate_type slot. meaning: rdfs:Literal see_also: - https://mapping-commons.github.io/sssom/spec-model/#literal-mappings - https://github.com/mapping-commons/sssom/issues/234 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/literals.sssom.tsv rdfs datatype: text: rdfs datatype meaning: rdfs:Datatype rdf property: text: rdf property meaning: rdf:Property","title":"Enum: EntityTypeEnum"},{"location":"EntityTypeEnum/#enum-entitytypeenum","text":"URI: EntityTypeEnum","title":"Enum: EntityTypeEnum"},{"location":"EntityTypeEnum/#permissible-values","text":"Value Meaning Description owl class owl:Class owl object property owl:ObjectProperty owl data property owl:DataProperty owl annotation property owl:AnnotationProperty owl named individual owl:NamedIndividual skos concept skos:Concept rdfs resource rdfs:Resource rdfs class rdfs:Class rdfs literal rdfs:Literal This value indicate that the entity being mapped is not a semantic entity wit... rdfs datatype rdfs:Datatype rdf property rdf:Property","title":"Permissible Values"},{"location":"EntityTypeEnum/#slots","text":"Name Description subject_type The type of entity that is being mapped predicate_type The type of entity that is being mapped object_type The type of entity that is being mapped","title":"Slots"},{"location":"EntityTypeEnum/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"EntityTypeEnum/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"EntityTypeEnum/#linkml-source","text":"name: entity_type_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: owl class: text: owl class meaning: owl:Class owl object property: text: owl object property meaning: owl:ObjectProperty owl data property: text: owl data property meaning: owl:DataProperty owl annotation property: text: owl annotation property meaning: owl:AnnotationProperty owl named individual: text: owl named individual meaning: owl:NamedIndividual skos concept: text: skos concept meaning: skos:Concept rdfs resource: text: rdfs resource meaning: rdfs:Resource rdfs class: text: rdfs class meaning: rdfs:Class rdfs literal: text: rdfs literal description: This value indicate that the entity being mapped is not a semantic entity with a distinct identifier, but is instead represented entirely by its literal label. This value MUST NOT be used in the predicate_type slot. meaning: rdfs:Literal see_also: - https://mapping-commons.github.io/sssom/spec-model/#literal-mappings - https://github.com/mapping-commons/sssom/issues/234 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/literals.sssom.tsv rdfs datatype: text: rdfs datatype meaning: rdfs:Datatype rdf property: text: rdf property meaning: rdf:Property","title":"LinkML Source"},{"location":"ExtensionDefinition/","text":"Class: ExtensionDefinition A definition of an extension (non-standard) slot. URI: sssom:ExtensionDefinition classDiagram class ExtensionDefinition ExtensionDefinition : property ExtensionDefinition : slot_name ExtensionDefinition : type_hint Slots Name Cardinality and Range Description Inheritance slot_name 1 Ncname The name of the extension slot direct property 0..1 Uriorcurie The property associated with the extension slot direct type_hint 0..1 Uriorcurie Expected type of the values of the extension slot direct Usages used by used in type used MappingSet extension_definitions range ExtensionDefinition Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:ExtensionDefinition native sssom:ExtensionDefinition LinkML Source Direct name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie Induced name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Class: ExtensionDefinition"},{"location":"ExtensionDefinition/#class-extensiondefinition","text":"A definition of an extension (non-standard) slot. URI: sssom:ExtensionDefinition classDiagram class ExtensionDefinition ExtensionDefinition : property ExtensionDefinition : slot_name ExtensionDefinition : type_hint","title":"Class: ExtensionDefinition"},{"location":"ExtensionDefinition/#slots","text":"Name Cardinality and Range Description Inheritance slot_name 1 Ncname The name of the extension slot direct property 0..1 Uriorcurie The property associated with the extension slot direct type_hint 0..1 Uriorcurie Expected type of the values of the extension slot direct","title":"Slots"},{"location":"ExtensionDefinition/#usages","text":"used by used in type used MappingSet extension_definitions range ExtensionDefinition","title":"Usages"},{"location":"ExtensionDefinition/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ExtensionDefinition/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"ExtensionDefinition/#mappings","text":"Mapping Type Mapped Value self sssom:ExtensionDefinition native sssom:ExtensionDefinition","title":"Mappings"},{"location":"ExtensionDefinition/#linkml-source","text":"","title":"LinkML Source"},{"location":"ExtensionDefinition/#direct","text":"name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - extension definition range: uriorcurie","title":"Direct"},{"location":"ExtensionDefinition/#induced","text":"name: extension definition description: A definition of an extension (non-standard) slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: slot_name: name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true property: name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie type_hint: name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Induced"},{"location":"Float/","text":"Type: Float A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Float"},{"location":"Float/#type-float","text":"A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float","title":"Type: Float"},{"location":"Float/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Float/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Integer/","text":"Type: Integer An integer URI: xsd:integer base : int uri : xsd:integer Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Integer"},{"location":"Integer/#type-integer","text":"An integer URI: xsd:integer base : int uri : xsd:integer","title":"Type: Integer"},{"location":"Integer/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Integer/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Jsonpath/","text":"Type: Jsonpath A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Jsonpath"},{"location":"Jsonpath/#type-jsonpath","text":"A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str","title":"Type: Jsonpath"},{"location":"Jsonpath/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Jsonpath/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Jsonpointer/","text":"Type: Jsonpointer A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Jsonpointer"},{"location":"Jsonpointer/#type-jsonpointer","text":"A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form. URI: xsd:string base : str uri : xsd:string repr : str","title":"Type: Jsonpointer"},{"location":"Jsonpointer/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Jsonpointer/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Mapping/","text":"Class: Mapping Represents an individual mapping between a pair of entities URI: owl:Axiom classDiagram class Mapping Mapping : author_id Mapping : author_label Mapping : comment Mapping : confidence Mapping : creator_id Mapping : creator_label Mapping : curation_rule Mapping : curation_rule_text Mapping : issue_tracker_item Mapping : license Mapping : mapping_cardinality Mapping --|> mapping_cardinality_enum : mapping_cardinality Mapping : mapping_date Mapping : mapping_justification Mapping : mapping_provider Mapping : mapping_source Mapping : mapping_tool Mapping : mapping_tool_version Mapping : match_string Mapping : object_category Mapping : object_id Mapping : object_label Mapping : object_match_field Mapping : object_preprocessing Mapping : object_source Mapping : object_source_version Mapping : object_type Mapping --|> entity_type_enum : object_type Mapping : other Mapping : predicate_id Mapping : predicate_label Mapping : predicate_modifier Mapping --|> predicate_modifier_enum : predicate_modifier Mapping : publication_date Mapping : reviewer_id Mapping : reviewer_label Mapping : see_also Mapping : similarity_measure Mapping : similarity_score Mapping : subject_category Mapping : subject_id Mapping : subject_label Mapping : subject_match_field Mapping : subject_preprocessing Mapping : subject_source Mapping : subject_source_version Mapping : subject_type Mapping --|> entity_type_enum : subject_type Slots Name Cardinality and Range Description Inheritance subject_id 0..1 EntityReference The ID of the subject of the mapping direct subject_label 0..1 recommended String The label of subject of the mapping direct subject_category 0..1 String The conceptual category to which the subject belongs to direct predicate_id 1 EntityReference The ID of the predicate or relation that relates the subject and object of th... direct predicate_label 0..1 String The label of the predicate/relation of the mapping direct predicate_modifier 0..1 PredicateModifierEnum A modifier for negating the predicate direct object_id 0..1 EntityReference The ID of the object of the mapping direct object_label 0..1 recommended String The label of object of the mapping direct object_category 0..1 String The conceptual category to which the subject belongs to direct mapping_justification 1 EntityReference A mapping justification is an action (or the written representation of that a... direct author_id * EntityReference Identifies the persons or groups responsible for asserting the mappings direct author_label * String A string identifying the author of this mapping direct reviewer_id * EntityReference Identifies the persons or groups that reviewed and confirmed the mapping direct reviewer_label * String A string identifying the reviewer of this mapping direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 0..1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_source 0..1 EntityReference The mapping set this mapping was originally defined in direct mapping_cardinality 0..1 MappingCardinalityEnum A string indicating whether this mapping is from a 1:1 (the subject_id maps t... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct confidence 0..1 Double A score between 0 and 1 to denote the confidence or probability that the matc... direct curation_rule * EntityReference A curation rule is a (potentially) complex condition executed by an agent tha... direct curation_rule_text * String A curation rule is a (potentially) complex condition executed by an agent tha... direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct match_string * String String that is shared by subj/obj direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct similarity_score 0..1 Double A score between 0 and 1 to denote the similarity between two entities, where ... direct similarity_measure 0..1 String The measure used for computing a similarity score direct see_also * String A URL specific for the mapping instance direct issue_tracker_item 0..1 EntityReference The issue tracker item discussing this mapping direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct Usages used by used in type used MappingSet mappings range Mapping Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self owl:Axiom native sssom:Mapping LinkML Source Direct name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - subject_id - subject_label - subject_category - predicate_id - predicate_label - predicate_modifier - object_id - object_label - object_category - mapping_justification - author_id - author_label - reviewer_id - reviewer_label - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_source - mapping_cardinality - mapping_tool - mapping_tool_version - mapping_date - publication_date - confidence - curation_rule - curation_rule_text - subject_match_field - object_match_field - match_string - subject_preprocessing - object_preprocessing - similarity_score - similarity_measure - see_also - issue_tracker_item - other - comment class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true Induced name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: subject_id: name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id owner: mapping domain_of: - mapping range: EntityReference subject_label: name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label owner: mapping domain_of: - mapping range: string recommended: true subject_category: name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category owner: mapping domain_of: - mapping range: string predicate_id: name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id owner: mapping domain_of: - mapping range: EntityReference required: true predicate_label: name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label owner: mapping domain_of: - mapping range: string predicate_modifier: name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier owner: mapping domain_of: - mapping range: predicate_modifier_enum object_id: name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id owner: mapping domain_of: - mapping range: EntityReference object_label: name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label owner: mapping domain_of: - mapping range: string recommended: true object_category: name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category owner: mapping domain_of: - mapping range: string mapping_justification: name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification owner: mapping domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration author_id: name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id owner: mapping domain_of: - mapping range: EntityReference author_label: name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label owner: mapping domain_of: - mapping range: string reviewer_id: name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id owner: mapping domain_of: - mapping range: EntityReference reviewer_label: name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label owner: mapping domain_of: - mapping range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping domain_of: - mapping set - mapping range: uri subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping domain_of: - mapping set - mapping range: uri mapping_source: name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source owner: mapping domain_of: - mapping range: EntityReference mapping_cardinality: name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality owner: mapping domain_of: - mapping range: mapping_cardinality_enum mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping domain_of: - mapping set - mapping range: date confidence: name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 curation_rule: name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule owner: mapping domain_of: - mapping range: EntityReference curation_rule_text: name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text owner: mapping domain_of: - mapping range: string subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference match_string: name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string owner: mapping domain_of: - mapping range: string subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference similarity_score: name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 similarity_measure: name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure owner: mapping domain_of: - mapping range: string see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping domain_of: - mapping set - mapping range: string issue_tracker_item: name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item owner: mapping domain_of: - mapping range: EntityReference other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping domain_of: - mapping set - mapping range: string class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true","title":"Class: Mapping"},{"location":"Mapping/#class-mapping","text":"Represents an individual mapping between a pair of entities URI: owl:Axiom classDiagram class Mapping Mapping : author_id Mapping : author_label Mapping : comment Mapping : confidence Mapping : creator_id Mapping : creator_label Mapping : curation_rule Mapping : curation_rule_text Mapping : issue_tracker_item Mapping : license Mapping : mapping_cardinality Mapping --|> mapping_cardinality_enum : mapping_cardinality Mapping : mapping_date Mapping : mapping_justification Mapping : mapping_provider Mapping : mapping_source Mapping : mapping_tool Mapping : mapping_tool_version Mapping : match_string Mapping : object_category Mapping : object_id Mapping : object_label Mapping : object_match_field Mapping : object_preprocessing Mapping : object_source Mapping : object_source_version Mapping : object_type Mapping --|> entity_type_enum : object_type Mapping : other Mapping : predicate_id Mapping : predicate_label Mapping : predicate_modifier Mapping --|> predicate_modifier_enum : predicate_modifier Mapping : publication_date Mapping : reviewer_id Mapping : reviewer_label Mapping : see_also Mapping : similarity_measure Mapping : similarity_score Mapping : subject_category Mapping : subject_id Mapping : subject_label Mapping : subject_match_field Mapping : subject_preprocessing Mapping : subject_source Mapping : subject_source_version Mapping : subject_type Mapping --|> entity_type_enum : subject_type","title":"Class: Mapping"},{"location":"Mapping/#slots","text":"Name Cardinality and Range Description Inheritance subject_id 0..1 EntityReference The ID of the subject of the mapping direct subject_label 0..1 recommended String The label of subject of the mapping direct subject_category 0..1 String The conceptual category to which the subject belongs to direct predicate_id 1 EntityReference The ID of the predicate or relation that relates the subject and object of th... direct predicate_label 0..1 String The label of the predicate/relation of the mapping direct predicate_modifier 0..1 PredicateModifierEnum A modifier for negating the predicate direct object_id 0..1 EntityReference The ID of the object of the mapping direct object_label 0..1 recommended String The label of object of the mapping direct object_category 0..1 String The conceptual category to which the subject belongs to direct mapping_justification 1 EntityReference A mapping justification is an action (or the written representation of that a... direct author_id * EntityReference Identifies the persons or groups responsible for asserting the mappings direct author_label * String A string identifying the author of this mapping direct reviewer_id * EntityReference Identifies the persons or groups that reviewed and confirmed the mapping direct reviewer_label * String A string identifying the reviewer of this mapping direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 0..1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_source 0..1 EntityReference The mapping set this mapping was originally defined in direct mapping_cardinality 0..1 MappingCardinalityEnum A string indicating whether this mapping is from a 1:1 (the subject_id maps t... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct confidence 0..1 Double A score between 0 and 1 to denote the confidence or probability that the matc... direct curation_rule * EntityReference A curation rule is a (potentially) complex condition executed by an agent tha... direct curation_rule_text * String A curation rule is a (potentially) complex condition executed by an agent tha... direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct match_string * String String that is shared by subj/obj direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct similarity_score 0..1 Double A score between 0 and 1 to denote the similarity between two entities, where ... direct similarity_measure 0..1 String The measure used for computing a similarity score direct see_also * String A URL specific for the mapping instance direct issue_tracker_item 0..1 EntityReference The issue tracker item discussing this mapping direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct","title":"Slots"},{"location":"Mapping/#usages","text":"used by used in type used MappingSet mappings range Mapping","title":"Usages"},{"location":"Mapping/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Mapping/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Mapping/#mappings","text":"Mapping Type Mapped Value self owl:Axiom native sssom:Mapping","title":"Mappings"},{"location":"Mapping/#linkml-source","text":"","title":"LinkML Source"},{"location":"Mapping/#direct","text":"name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - subject_id - subject_label - subject_category - predicate_id - predicate_label - predicate_modifier - object_id - object_label - object_category - mapping_justification - author_id - author_label - reviewer_id - reviewer_label - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_source - mapping_cardinality - mapping_tool - mapping_tool_version - mapping_date - publication_date - confidence - curation_rule - curation_rule_text - subject_match_field - object_match_field - match_string - subject_preprocessing - object_preprocessing - similarity_score - similarity_measure - see_also - issue_tracker_item - other - comment class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true","title":"Direct"},{"location":"Mapping/#induced","text":"name: mapping description: Represents an individual mapping between a pair of entities from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: subject_id: name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id owner: mapping domain_of: - mapping range: EntityReference subject_label: name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label owner: mapping domain_of: - mapping range: string recommended: true subject_category: name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category owner: mapping domain_of: - mapping range: string predicate_id: name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id owner: mapping domain_of: - mapping range: EntityReference required: true predicate_label: name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label owner: mapping domain_of: - mapping range: string predicate_modifier: name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier owner: mapping domain_of: - mapping range: predicate_modifier_enum object_id: name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id owner: mapping domain_of: - mapping range: EntityReference object_label: name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label owner: mapping domain_of: - mapping range: string recommended: true object_category: name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category owner: mapping domain_of: - mapping range: string mapping_justification: name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification owner: mapping domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration author_id: name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id owner: mapping domain_of: - mapping range: EntityReference author_label: name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label owner: mapping domain_of: - mapping range: string reviewer_id: name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id owner: mapping domain_of: - mapping range: EntityReference reviewer_label: name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label owner: mapping domain_of: - mapping range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping domain_of: - mapping set - mapping range: uri subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping domain_of: - mapping set - mapping range: uri mapping_source: name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source owner: mapping domain_of: - mapping range: EntityReference mapping_cardinality: name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality owner: mapping domain_of: - mapping range: mapping_cardinality_enum mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping domain_of: - mapping set - mapping range: date confidence: name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 curation_rule: name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule owner: mapping domain_of: - mapping range: EntityReference curation_rule_text: name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text owner: mapping domain_of: - mapping range: string subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping domain_of: - mapping set - mapping range: EntityReference match_string: name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string owner: mapping domain_of: - mapping range: string subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping domain_of: - mapping set - mapping range: EntityReference similarity_score: name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score owner: mapping domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0 similarity_measure: name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure owner: mapping domain_of: - mapping range: string see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping domain_of: - mapping set - mapping range: string issue_tracker_item: name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item owner: mapping domain_of: - mapping range: EntityReference other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping domain_of: - mapping set - mapping range: string class_uri: owl:Axiom rules: - preconditions: slot_conditions: subject_type: name: subject_type equals_string: rdfs literal postconditions: slot_conditions: subject_label: name: subject_label required: true - preconditions: slot_conditions: subject_type: name: subject_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: subject_id: name: subject_id required: true - preconditions: slot_conditions: object_type: name: object_type equals_string: rdfs literal postconditions: slot_conditions: object_label: name: object_label required: true - preconditions: slot_conditions: object_type: name: object_type none_of: - equals_string: rdfs literal postconditions: slot_conditions: object_id: name: object_id required: true","title":"Induced"},{"location":"MappingCardinalityEnum/","text":"Enum: MappingCardinalityEnum URI: MappingCardinalityEnum Permissible Values Value Meaning Description 1:1 None One-to-one mapping 1:n None One-to-many mapping n:1 None Many-to-one mapping 1:0 None One-to-none mapping 0:1 None None-to-one mapping n:n None Many-to-many mapping Slots Name Description mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t... Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ LinkML Source name: mapping_cardinality_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: '1:1': text: '1:1' description: One-to-one mapping 1:n: text: 1:n description: One-to-many mapping n:1: text: n:1 description: Many-to-one mapping '1:0': text: '1:0' description: One-to-none mapping 0:1: text: 0:1 description: None-to-one mapping n:n: text: n:n description: Many-to-many mapping","title":"Enum: MappingCardinalityEnum"},{"location":"MappingCardinalityEnum/#enum-mappingcardinalityenum","text":"URI: MappingCardinalityEnum","title":"Enum: MappingCardinalityEnum"},{"location":"MappingCardinalityEnum/#permissible-values","text":"Value Meaning Description 1:1 None One-to-one mapping 1:n None One-to-many mapping n:1 None Many-to-one mapping 1:0 None One-to-none mapping 0:1 None None-to-one mapping n:n None Many-to-many mapping","title":"Permissible Values"},{"location":"MappingCardinalityEnum/#slots","text":"Name Description mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t...","title":"Slots"},{"location":"MappingCardinalityEnum/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingCardinalityEnum/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingCardinalityEnum/#linkml-source","text":"name: mapping_cardinality_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: '1:1': text: '1:1' description: One-to-one mapping 1:n: text: 1:n description: One-to-many mapping n:1: text: n:1 description: Many-to-one mapping '1:0': text: '1:0' description: One-to-none mapping 0:1: text: 0:1 description: None-to-one mapping n:n: text: n:n description: Many-to-many mapping","title":"LinkML Source"},{"location":"MappingRegistry/","text":"Class: MappingRegistry A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. URI: sssom:MappingRegistry classDiagram class MappingRegistry MappingRegistry : documentation MappingRegistry : homepage MappingRegistry : imports MappingRegistry : issue_tracker MappingRegistry : mapping_registry_description MappingRegistry : mapping_registry_id MappingRegistry : mapping_registry_title MappingRegistry : mapping_set_references MappingRegistry --|> mapping set reference : mapping_set_references Slots Name Cardinality and Range Description Inheritance mapping_registry_id 1 EntityReference The unique identifier of a mapping registry direct mapping_registry_title 0..1 String The title of a mapping registry direct mapping_registry_description 0..1 String The description of a mapping registry direct imports * Uri A list of registries that should be imported into this one direct mapping_set_references * recommended MappingSetReference A list of mapping set references direct documentation 0..1 Uri A URL to the documentation of this mapping commons direct homepage 0..1 Uri A URL to a homepage of this mapping commons direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:MappingRegistry native sssom:MappingRegistry LinkML Source Direct name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - mapping_registry_id - mapping_registry_title - mapping_registry_description - imports - mapping_set_references - documentation - homepage - issue_tracker Induced name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: mapping_registry_id: name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id owner: mapping registry domain_of: - mapping registry range: EntityReference required: true mapping_registry_title: name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title owner: mapping registry domain_of: - mapping registry range: string mapping_registry_description: name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description owner: mapping registry domain_of: - mapping registry range: string imports: name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports owner: mapping registry domain_of: - mapping registry range: uri mapping_set_references: name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references owner: mapping registry domain_of: - mapping registry range: mapping set reference recommended: true documentation: name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation owner: mapping registry domain_of: - mapping registry range: uri homepage: name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage owner: mapping registry domain_of: - mapping registry range: uri issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping registry domain_of: - mapping set - mapping registry range: uri","title":"Class: MappingRegistry"},{"location":"MappingRegistry/#class-mappingregistry","text":"A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. URI: sssom:MappingRegistry classDiagram class MappingRegistry MappingRegistry : documentation MappingRegistry : homepage MappingRegistry : imports MappingRegistry : issue_tracker MappingRegistry : mapping_registry_description MappingRegistry : mapping_registry_id MappingRegistry : mapping_registry_title MappingRegistry : mapping_set_references MappingRegistry --|> mapping set reference : mapping_set_references","title":"Class: MappingRegistry"},{"location":"MappingRegistry/#slots","text":"Name Cardinality and Range Description Inheritance mapping_registry_id 1 EntityReference The unique identifier of a mapping registry direct mapping_registry_title 0..1 String The title of a mapping registry direct mapping_registry_description 0..1 String The description of a mapping registry direct imports * Uri A list of registries that should be imported into this one direct mapping_set_references * recommended MappingSetReference A list of mapping set references direct documentation 0..1 Uri A URL to the documentation of this mapping commons direct homepage 0..1 Uri A URL to a homepage of this mapping commons direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct","title":"Slots"},{"location":"MappingRegistry/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingRegistry/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingRegistry/#mappings","text":"Mapping Type Mapped Value self sssom:MappingRegistry native sssom:MappingRegistry","title":"Mappings"},{"location":"MappingRegistry/#linkml-source","text":"","title":"LinkML Source"},{"location":"MappingRegistry/#direct","text":"name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - mapping_registry_id - mapping_registry_title - mapping_registry_description - imports - mapping_set_references - documentation - homepage - issue_tracker","title":"Direct"},{"location":"MappingRegistry/#induced","text":"name: mapping registry description: A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: mapping_registry_id: name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id owner: mapping registry domain_of: - mapping registry range: EntityReference required: true mapping_registry_title: name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title owner: mapping registry domain_of: - mapping registry range: string mapping_registry_description: name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description owner: mapping registry domain_of: - mapping registry range: string imports: name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports owner: mapping registry domain_of: - mapping registry range: uri mapping_set_references: name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references owner: mapping registry domain_of: - mapping registry range: mapping set reference recommended: true documentation: name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation owner: mapping registry domain_of: - mapping registry range: uri homepage: name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage owner: mapping registry domain_of: - mapping registry range: uri issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping registry domain_of: - mapping set - mapping registry range: uri","title":"Induced"},{"location":"MappingSet/","text":"Class: MappingSet Represents a set of mappings URI: sssom:MappingSet classDiagram class MappingSet MappingSet : comment MappingSet : creator_id MappingSet : creator_label MappingSet : curie_map MappingSet --|> prefix : curie_map MappingSet : extension_definitions MappingSet --|> extension definition : extension_definitions MappingSet : issue_tracker MappingSet : license MappingSet : mapping_date MappingSet : mapping_provider MappingSet : mapping_set_description MappingSet : mapping_set_id MappingSet : mapping_set_source MappingSet : mapping_set_title MappingSet : mapping_set_version MappingSet : mapping_tool MappingSet : mapping_tool_version MappingSet : mappings MappingSet --|> mapping : mappings MappingSet : object_match_field MappingSet : object_preprocessing MappingSet : object_source MappingSet : object_source_version MappingSet : object_type MappingSet --|> entity_type_enum : object_type MappingSet : other MappingSet : publication_date MappingSet : see_also MappingSet : subject_match_field MappingSet : subject_preprocessing MappingSet : subject_source MappingSet : subject_source_version MappingSet : subject_type MappingSet --|> entity_type_enum : subject_type Slots Name Cardinality and Range Description Inheritance curie_map * Prefix A dictionary that contains prefixes as keys and their URI expansions as value... direct mappings * recommended Mapping Contains a list of mapping objects direct mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mapping_set_version 0..1 String A version string for the mapping direct mapping_set_source * Uri A mapping set or set of mapping set that was used to derive the mapping set direct mapping_set_title 0..1 String The display name of a mapping set direct mapping_set_description 0..1 String A description of the mapping set direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct see_also * String A URL specific for the mapping instance direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct extension_definitions * ExtensionDefinition A list that defines the extension slots used in the mapping set direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:MappingSet native sssom:MappingSet LinkML Source Direct name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - curie_map - mappings - mapping_set_id - mapping_set_version - mapping_set_source - mapping_set_title - mapping_set_description - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_tool - mapping_tool_version - mapping_date - publication_date - subject_match_field - object_match_field - subject_preprocessing - object_preprocessing - see_also - issue_tracker - other - comment - extension_definitions slot_usage: license: name: license domain_of: - mapping set - mapping required: true Induced name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_usage: license: name: license domain_of: - mapping set - mapping required: true attributes: curie_map: name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map owner: mapping set domain_of: - mapping set range: prefix inlined: true mappings: name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings owner: mapping set domain_of: - mapping set range: mapping recommended: true inlined_as_list: true mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set domain_of: - mapping set - mapping set reference range: uri required: true mapping_set_version: name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version owner: mapping set domain_of: - mapping set range: string mapping_set_source: name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source owner: mapping set domain_of: - mapping set range: uri mapping_set_title: name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title owner: mapping set domain_of: - mapping set range: string mapping_set_description: name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description owner: mapping set domain_of: - mapping set range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping set domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping set domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping set domain_of: - mapping set - mapping range: uri required: true subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping set domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping set domain_of: - mapping set - mapping range: uri mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping set domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping set domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping set domain_of: - mapping set - mapping range: date subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping set domain_of: - mapping set - mapping range: string issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping set domain_of: - mapping set - mapping registry range: uri other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping set domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping set domain_of: - mapping set - mapping range: string extension_definitions: name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions owner: mapping set domain_of: - mapping set range: extension definition","title":"Class: MappingSet"},{"location":"MappingSet/#class-mappingset","text":"Represents a set of mappings URI: sssom:MappingSet classDiagram class MappingSet MappingSet : comment MappingSet : creator_id MappingSet : creator_label MappingSet : curie_map MappingSet --|> prefix : curie_map MappingSet : extension_definitions MappingSet --|> extension definition : extension_definitions MappingSet : issue_tracker MappingSet : license MappingSet : mapping_date MappingSet : mapping_provider MappingSet : mapping_set_description MappingSet : mapping_set_id MappingSet : mapping_set_source MappingSet : mapping_set_title MappingSet : mapping_set_version MappingSet : mapping_tool MappingSet : mapping_tool_version MappingSet : mappings MappingSet --|> mapping : mappings MappingSet : object_match_field MappingSet : object_preprocessing MappingSet : object_source MappingSet : object_source_version MappingSet : object_type MappingSet --|> entity_type_enum : object_type MappingSet : other MappingSet : publication_date MappingSet : see_also MappingSet : subject_match_field MappingSet : subject_preprocessing MappingSet : subject_source MappingSet : subject_source_version MappingSet : subject_type MappingSet --|> entity_type_enum : subject_type","title":"Class: MappingSet"},{"location":"MappingSet/#slots","text":"Name Cardinality and Range Description Inheritance curie_map * Prefix A dictionary that contains prefixes as keys and their URI expansions as value... direct mappings * recommended Mapping Contains a list of mapping objects direct mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mapping_set_version 0..1 String A version string for the mapping direct mapping_set_source * Uri A mapping set or set of mapping set that was used to derive the mapping set direct mapping_set_title 0..1 String The display name of a mapping set direct mapping_set_description 0..1 String A description of the mapping set direct creator_id * EntityReference Identifies the persons or groups responsible for the creation of the mapping direct creator_label * String A string identifying the creator of this mapping direct license 1 Uri A url to the license of the mapping direct subject_type 0..1 EntityTypeEnum The type of entity that is being mapped direct subject_source 0..1 EntityReference URI of vocabulary or identifier source for the subject direct subject_source_version 0..1 String Version IRI or version string of the source of the subject term direct object_type 0..1 EntityTypeEnum The type of entity that is being mapped direct object_source 0..1 EntityReference URI of vocabulary or identifier source for the object direct object_source_version 0..1 String Version IRI or version string of the source of the object term direct mapping_provider 0..1 Uri URL pointing to the source that provided the mapping, for example an ontology... direct mapping_tool 0..1 String A reference to the tool or algorithm that was used to generate the mapping direct mapping_tool_version 0..1 String Version string that denotes the version of the mapping tool used direct mapping_date 0..1 Date The date the mapping was asserted direct publication_date 0..1 Date The date the mapping was published direct subject_match_field * EntityReference A list of properties (term annotations on the subject) that was used for the ... direct object_match_field * EntityReference A list of properties (term annotations on the object) that was used for the m... direct subject_preprocessing * EntityReference Method of preprocessing applied to the fields of the subject direct object_preprocessing * EntityReference Method of preprocessing applied to the fields of the object direct see_also * String A URL specific for the mapping instance direct issue_tracker 0..1 Uri A URL location of the issue tracker for this entity direct other 0..1 String Pipe separated list of key value pairs for properties not part of the SSSOM s... direct comment 0..1 String Free text field containing either curator notes or text generated by tool pro... direct extension_definitions * ExtensionDefinition A list that defines the extension slots used in the mapping set direct","title":"Slots"},{"location":"MappingSet/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingSet/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingSet/#mappings","text":"Mapping Type Mapped Value self sssom:MappingSet native sssom:MappingSet","title":"Mappings"},{"location":"MappingSet/#linkml-source","text":"","title":"LinkML Source"},{"location":"MappingSet/#direct","text":"name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - curie_map - mappings - mapping_set_id - mapping_set_version - mapping_set_source - mapping_set_title - mapping_set_description - creator_id - creator_label - license - subject_type - subject_source - subject_source_version - object_type - object_source - object_source_version - mapping_provider - mapping_tool - mapping_tool_version - mapping_date - publication_date - subject_match_field - object_match_field - subject_preprocessing - object_preprocessing - see_also - issue_tracker - other - comment - extension_definitions slot_usage: license: name: license domain_of: - mapping set - mapping required: true","title":"Direct"},{"location":"MappingSet/#induced","text":"name: mapping set description: Represents a set of mappings from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_usage: license: name: license domain_of: - mapping set - mapping required: true attributes: curie_map: name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map owner: mapping set domain_of: - mapping set range: prefix inlined: true mappings: name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings owner: mapping set domain_of: - mapping set range: mapping recommended: true inlined_as_list: true mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set domain_of: - mapping set - mapping set reference range: uri required: true mapping_set_version: name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version owner: mapping set domain_of: - mapping set range: string mapping_set_source: name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source owner: mapping set domain_of: - mapping set range: uri mapping_set_title: name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title owner: mapping set domain_of: - mapping set range: string mapping_set_description: name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description owner: mapping set domain_of: - mapping set range: string creator_id: name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id owner: mapping set domain_of: - mapping set - mapping range: EntityReference creator_label: name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label owner: mapping set domain_of: - mapping set - mapping range: string license: name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license owner: mapping set domain_of: - mapping set - mapping range: uri required: true subject_type: name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum subject_source: name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_source_version: name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version owner: mapping set domain_of: - mapping set - mapping range: string object_type: name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type owner: mapping set domain_of: - mapping set - mapping range: entity_type_enum object_source: name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_source_version: name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_provider: name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider owner: mapping set domain_of: - mapping set - mapping range: uri mapping_tool: name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool owner: mapping set domain_of: - mapping set - mapping range: string mapping_tool_version: name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version owner: mapping set domain_of: - mapping set - mapping range: string mapping_date: name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date owner: mapping set domain_of: - mapping set - mapping range: date publication_date: name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date owner: mapping set domain_of: - mapping set - mapping range: date subject_match_field: name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_match_field: name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field owner: mapping set domain_of: - mapping set - mapping range: EntityReference subject_preprocessing: name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference object_preprocessing: name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing owner: mapping set domain_of: - mapping set - mapping range: EntityReference see_also: name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also owner: mapping set domain_of: - mapping set - mapping range: string issue_tracker: name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker owner: mapping set domain_of: - mapping set - mapping registry range: uri other: name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other owner: mapping set domain_of: - mapping set - mapping range: string comment: name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment owner: mapping set domain_of: - mapping set - mapping range: string extension_definitions: name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions owner: mapping set domain_of: - mapping set range: extension definition","title":"Induced"},{"location":"MappingSetReference/","text":"Class: MappingSetReference A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. URI: sssom:MappingSetReference classDiagram class MappingSetReference MappingSetReference : last_updated MappingSetReference : local_name MappingSetReference : mapping_set_group MappingSetReference : mapping_set_id MappingSetReference : mirror_from MappingSetReference : registry_confidence Slots Name Cardinality and Range Description Inheritance mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mirror_from 0..1 Uri A URL location from which to obtain a resource, such as a mapping set direct registry_confidence 0..1 Double This value is set by the registry that indexes the mapping set direct mapping_set_group 0..1 String Set by the owners of the mapping registry direct last_updated 0..1 Date The date this reference was last updated direct local_name 0..1 String The local name assigned to file that corresponds to the downloaded mapping se... direct Usages used by used in type used MappingRegistry mapping_set_references range MappingSetReference Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:MappingSetReference native sssom:MappingSetReference LinkML Source Direct name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - mapping_set_id - mirror_from - registry_confidence - mapping_set_group - last_updated - local_name Induced name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set reference domain_of: - mapping set - mapping set reference range: uri required: true mirror_from: name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from owner: mapping set reference domain_of: - mapping set reference range: uri registry_confidence: name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence owner: mapping set reference domain_of: - mapping set reference range: double mapping_set_group: name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group owner: mapping set reference domain_of: - mapping set reference range: string last_updated: name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated owner: mapping set reference domain_of: - mapping set reference range: date local_name: name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name owner: mapping set reference domain_of: - mapping set reference range: string","title":"Class: MappingSetReference"},{"location":"MappingSetReference/#class-mappingsetreference","text":"A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. URI: sssom:MappingSetReference classDiagram class MappingSetReference MappingSetReference : last_updated MappingSetReference : local_name MappingSetReference : mapping_set_group MappingSetReference : mapping_set_id MappingSetReference : mirror_from MappingSetReference : registry_confidence","title":"Class: MappingSetReference"},{"location":"MappingSetReference/#slots","text":"Name Cardinality and Range Description Inheritance mapping_set_id 1 Uri A globally unique identifier for the mapping set (not each individual mapping... direct mirror_from 0..1 Uri A URL location from which to obtain a resource, such as a mapping set direct registry_confidence 0..1 Double This value is set by the registry that indexes the mapping set direct mapping_set_group 0..1 String Set by the owners of the mapping registry direct last_updated 0..1 Date The date this reference was last updated direct local_name 0..1 String The local name assigned to file that corresponds to the downloaded mapping se... direct","title":"Slots"},{"location":"MappingSetReference/#usages","text":"used by used in type used MappingRegistry mapping_set_references range MappingSetReference","title":"Usages"},{"location":"MappingSetReference/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"MappingSetReference/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"MappingSetReference/#mappings","text":"Mapping Type Mapped Value self sssom:MappingSetReference native sssom:MappingSetReference","title":"Mappings"},{"location":"MappingSetReference/#linkml-source","text":"","title":"LinkML Source"},{"location":"MappingSetReference/#direct","text":"name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - mapping_set_id - mirror_from - registry_confidence - mapping_set_group - last_updated - local_name","title":"Direct"},{"location":"MappingSetReference/#induced","text":"name: mapping set reference description: A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: mapping_set_id: name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id owner: mapping set reference domain_of: - mapping set - mapping set reference range: uri required: true mirror_from: name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from owner: mapping set reference domain_of: - mapping set reference range: uri registry_confidence: name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence owner: mapping set reference domain_of: - mapping set reference range: double mapping_set_group: name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group owner: mapping set reference domain_of: - mapping set reference range: string last_updated: name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated owner: mapping set reference domain_of: - mapping set reference range: date local_name: name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name owner: mapping set reference domain_of: - mapping set reference range: string","title":"Induced"},{"location":"Ncname/","text":"Type: Ncname Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Ncname"},{"location":"Ncname/#type-ncname","text":"Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str","title":"Type: Ncname"},{"location":"Ncname/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Ncname/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"NoTermFound/","text":"Class: NoTermFound sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. URI: sssom:NoTermFound classDiagram class NoTermFound Slots Name Cardinality and Range Description Inheritance See Also https://github.com/mapping-commons/sssom/issues/28 https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:NoTermFound native sssom:NoTermFound LinkML Source Direct name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv rank: 1000 class_uri: sssom:NoTermFound Induced name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv rank: 1000 class_uri: sssom:NoTermFound","title":"Class: NoTermFound"},{"location":"NoTermFound/#class-notermfound","text":"sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. URI: sssom:NoTermFound classDiagram class NoTermFound","title":"Class: NoTermFound"},{"location":"NoTermFound/#slots","text":"Name Cardinality and Range Description Inheritance","title":"Slots"},{"location":"NoTermFound/#see-also","text":"https://github.com/mapping-commons/sssom/issues/28 https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv","title":"See Also"},{"location":"NoTermFound/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"NoTermFound/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"NoTermFound/#mappings","text":"Mapping Type Mapped Value self sssom:NoTermFound native sssom:NoTermFound","title":"Mappings"},{"location":"NoTermFound/#linkml-source","text":"","title":"LinkML Source"},{"location":"NoTermFound/#direct","text":"name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv rank: 1000 class_uri: sssom:NoTermFound","title":"Direct"},{"location":"NoTermFound/#induced","text":"name: NoTermFound description: sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/28 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/no_term_found.sssom.tsv rank: 1000 class_uri: sssom:NoTermFound","title":"Induced"},{"location":"Nodeidentifier/","text":"Type: Nodeidentifier A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#type-nodeidentifier","text":"A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Nodeidentifier/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Objectidentifier/","text":"Type: Objectidentifier A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str Comments Used for inheritance and type checking Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#type-objectidentifier","text":"A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#comments","text":"Used for inheritance and type checking","title":"Comments"},{"location":"Objectidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Objectidentifier/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"PredicateModifierEnum/","text":"Enum: PredicateModifierEnum URI: PredicateModifierEnum Permissible Values Value Meaning Description Not None Negating the mapping predicate Slots Name Description predicate_modifier A modifier for negating the predicate Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ LinkML Source name: predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: Not: text: Not description: Negating the mapping predicate. The meaning of the triple becomes subject_id is not a predicate_id match to object_id.","title":"Enum: PredicateModifierEnum"},{"location":"PredicateModifierEnum/#enum-predicatemodifierenum","text":"URI: PredicateModifierEnum","title":"Enum: PredicateModifierEnum"},{"location":"PredicateModifierEnum/#permissible-values","text":"Value Meaning Description Not None Negating the mapping predicate","title":"Permissible Values"},{"location":"PredicateModifierEnum/#slots","text":"Name Description predicate_modifier A modifier for negating the predicate","title":"Slots"},{"location":"PredicateModifierEnum/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"PredicateModifierEnum/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"PredicateModifierEnum/#linkml-source","text":"name: predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ rank: 1000 permissible_values: Not: text: Not description: Negating the mapping predicate. The meaning of the triple becomes subject_id is not a predicate_id match to object_id.","title":"LinkML Source"},{"location":"Prefix/","text":"Class: Prefix URI: sssom:Prefix classDiagram class Prefix Prefix : prefix_name Prefix : prefix_url Slots Name Cardinality and Range Description Inheritance prefix_name 0..1 Ncname direct prefix_url 0..1 Uri direct Usages used by used in type used MappingSet curie_map range Prefix Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:Prefix native sssom:Prefix LinkML Source Direct name: prefix from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - prefix_name - prefix_url Induced name: prefix from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: prefix_name: name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name owner: prefix domain_of: - prefix range: ncname required: true prefix_url: name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url owner: prefix domain_of: - prefix range: uri","title":"Class: Prefix"},{"location":"Prefix/#class-prefix","text":"URI: sssom:Prefix classDiagram class Prefix Prefix : prefix_name Prefix : prefix_url","title":"Class: Prefix"},{"location":"Prefix/#slots","text":"Name Cardinality and Range Description Inheritance prefix_name 0..1 Ncname direct prefix_url 0..1 Uri direct","title":"Slots"},{"location":"Prefix/#usages","text":"used by used in type used MappingSet curie_map range Prefix","title":"Usages"},{"location":"Prefix/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Prefix/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Prefix/#mappings","text":"Mapping Type Mapped Value self sssom:Prefix native sssom:Prefix","title":"Mappings"},{"location":"Prefix/#linkml-source","text":"","title":"LinkML Source"},{"location":"Prefix/#direct","text":"name: prefix from_schema: https://w3id.org/sssom/schema/ rank: 1000 slots: - prefix_name - prefix_url","title":"Direct"},{"location":"Prefix/#induced","text":"name: prefix from_schema: https://w3id.org/sssom/schema/ rank: 1000 attributes: prefix_name: name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name owner: prefix domain_of: - prefix range: ncname required: true prefix_url: name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url owner: prefix domain_of: - prefix range: uri","title":"Induced"},{"location":"Propagatable/","text":"Class: Propagatable Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. URI: sssom:Propagatable classDiagram class Propagatable Propagatable : propagated Slots Name Cardinality and Range Description Inheritance propagated 0..1 Boolean Indicates whether a slot can be propagated from a mapping down to individual ... direct See Also https://github.com/mapping-commons/sssom/issues/305 Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/ Mappings Mapping Type Mapped Value self sssom:Propagatable native sssom:Propagatable LinkML Source Direct name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 rank: 1000 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable Induced name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 rank: 1000 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable","title":"Class: Propagatable"},{"location":"Propagatable/#class-propagatable","text":"Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. URI: sssom:Propagatable classDiagram class Propagatable Propagatable : propagated","title":"Class: Propagatable"},{"location":"Propagatable/#slots","text":"Name Cardinality and Range Description Inheritance propagated 0..1 Boolean Indicates whether a slot can be propagated from a mapping down to individual ... direct","title":"Slots"},{"location":"Propagatable/#see-also","text":"https://github.com/mapping-commons/sssom/issues/305","title":"See Also"},{"location":"Propagatable/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Propagatable/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Propagatable/#mappings","text":"Mapping Type Mapped Value self sssom:Propagatable native sssom:Propagatable","title":"Mappings"},{"location":"Propagatable/#linkml-source","text":"","title":"LinkML Source"},{"location":"Propagatable/#direct","text":"name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 rank: 1000 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable","title":"Direct"},{"location":"Propagatable/#induced","text":"name: Propagatable description: Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/305 rank: 1000 attributes: propagated: name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean class_uri: sssom:Propagatable","title":"Induced"},{"location":"Sparqlpath/","text":"Type: Sparqlpath A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF. URI: xsd:string base : str uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Sparqlpath"},{"location":"Sparqlpath/#type-sparqlpath","text":"A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF. URI: xsd:string base : str uri : xsd:string repr : str","title":"Type: Sparqlpath"},{"location":"Sparqlpath/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Sparqlpath/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"String/","text":"Type: String A character string URI: xsd:string base : str uri : xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: String"},{"location":"String/#type-string","text":"A character string URI: xsd:string base : str uri : xsd:string","title":"Type: String"},{"location":"String/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"String/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Time/","text":"Type: Time A time object represents a (local) time of day, independent of any particular day URI: xsd:time base : XSDTime uri : xsd:time repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Time"},{"location":"Time/#type-time","text":"A time object represents a (local) time of day, independent of any particular day URI: xsd:time base : XSDTime uri : xsd:time repr : str","title":"Type: Time"},{"location":"Time/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Time/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Uri/","text":"Type: Uri a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str Comments in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Uri"},{"location":"Uri/#type-uri","text":"a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str","title":"Type: Uri"},{"location":"Uri/#comments","text":"in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node","title":"Comments"},{"location":"Uri/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uri/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"Uriorcurie/","text":"Type: Uriorcurie a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/sssom/schema/","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#type-uriorcurie","text":"a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uriorcurie/#schema-source","text":"from schema: https://w3id.org/sssom/schema/","title":"Schema Source"},{"location":"author_id/","text":"author_id URI : pav:authoredBy Applicable to : Mapping Description Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id domain_of: - mapping range: EntityReference","title":"author_id"},{"location":"author_id/#author_id","text":"URI : pav:authoredBy Applicable to : Mapping Description Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs.","title":"author_id"},{"location":"author_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"author_id/#schema-developer-documentation","text":"LinkML source name: author_id description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredBy multivalued: true alias: author_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"author_label/","text":"author_label URI : sssom:author_label Applicable to : Mapping Description A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label domain_of: - mapping range: string","title":"author_label"},{"location":"author_label/#author_label","text":"URI : sssom:author_label Applicable to : Mapping Description A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead.","title":"author_label"},{"location":"author_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"author_label/#schema-developer-documentation","text":"LinkML source name: author_label description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: author_label domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"chaining-rules/","text":"SSSOM Mapping Chains The goal of this document is to capture all obvious mapping chaining rules that could be applied to SSSOM, and later delivered as part of sssom toolkit . This is all structural, and should not be confused with proper reasoning or mapping reconciliation ala boomer . The idea is to provide the functionality to apply these chaining rules over a given mapping set, and record the appropriate metadata for that rule. Rules: Transitivity Rule Role chains over exact/equivalent matches Inverse Rule Generalisation Rule Transitivity Rule Transitivity of a relation R implies that if an entity A is R -related to an entity B which in turn is R -related to an entity C , A is also R -related to C . Predicates applicable in transitivity rules We consider the following predicates transitive: skos:exactMatch skos:narrowMatch skos:broadMatch owl:equivalentClass / owl:equivalentProperty rdfs:subClassOf / rdfs:subPropertyOf owl:sameAs Note that technically speaking skos:narrowMatch and skos:broadMatch are not considered transitive ( skos:broaderTransitive would be), but we are not defining a new semantics here, just a reasonable default for a mapping tool, which will nearly always hold true. Predicates we do not consider transitive include: skos:relatedMatch (for practical reasons), oboInOwl:hasDbXref , skos:closeMatch , rdfs:seeAlso (weakest form of a mapping link), rdf:type . Rules T1: (:A)-[predicate_id]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C) Examples T1-EX: (:A)-[skos:broadMatch]->(:B)-[skos:broadMatch]->(:C) -> (:A)-[skos:broadMatch]->(:C) Role chains over exact/equivalent matches Role chains are rules that allow us to bridge across mappings across multiple different properties. Role chains over exact are simple to define, so we start with these Predicates applicable in transitity rules skos:narrowMatch skos:broadMatch skos:closeMatch skos:relatedMatch Rules for SKOS RCE1: (:A)-[skos:exactMatch|owl:equivalentClass]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C) RCE2: (:A)-[predicate_id]->(:B)-[skos:exactMatch]->(:C) -> (:A)-[predicate_id]->(:C) Rules that should probably not be inferred (OWL) The following rules hold true, but will be left to a reasoner to be inferred: RCE-N1: (:A)-[owl:equivalentClass]->(:B)-[rdfs:subClassOf]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N2: (:A)-[rdfs:subClassOf]->(:B)-[owl:equivalentClass]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N3: (:A)-[owl:equivalentProperty]->(:B)-[rdfs:subPropertyOf]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C) RCE-N4: (:A)-[rdfs:subPropertyOf]->(:B)-[owl:equivalentProperty]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C) Inverse Rules R inverse of S implies that if an entity A is R -related to an entity B then B is also S -related to A . We like to call the output of an inverse rule a walk-back . A command that applies an inverse rule could be called flip . Predicates applicable in inverse rules This excludes the exact predicates for which inverse rules are redundant. Rules for SKOS RI1: (:A)-[skos:narrowMatch]->(:B) -> (:B)-[skos:broadMatch]->(:A) RI2: (:A)-[skos:broadMatch]->(:B) -> (:B)-[skos:narrowMatch]->(:A) Rules for SEMAPV RI3: (:A)-[semapv:crossSpeciesExactMatch]->(:B) -> (:B)-[semapv:crossSpeciesExactMatch]->(:A) RI4: (:A)-[semapv:crossSpeciesNarrowMatch]->(:B) -> (:B)-[semapv:crossSpeciesBroadMatch]->(:A) RI5: (:A)-[semapv:crossSpeciesBroadMatch]->(:B) -> (:B)-[semapv:crossSpeciesNarrowMatch]->(:A) Generalisation Rules Generalisation rules are rules that can be applied to weaken a mapping deliberately. This is sometimes useful, for example when combining strong OWL-Semantics mappings with weaker SKOS-based ones. Rules RG1: (:A)-[owl:equivalentTo]->(:B) -> (:A)-[skos:exactMatch]->(:B) RG2: (:A)-[owl:subClassOf]->(:B) -> (:A)-[skos:broadMatch]->(:B)","title":"Applying Chaining Rules"},{"location":"chaining-rules/#sssom-mapping-chains","text":"The goal of this document is to capture all obvious mapping chaining rules that could be applied to SSSOM, and later delivered as part of sssom toolkit . This is all structural, and should not be confused with proper reasoning or mapping reconciliation ala boomer . The idea is to provide the functionality to apply these chaining rules over a given mapping set, and record the appropriate metadata for that rule. Rules: Transitivity Rule Role chains over exact/equivalent matches Inverse Rule Generalisation Rule","title":"SSSOM Mapping Chains"},{"location":"chaining-rules/#transitivity-rule","text":"Transitivity of a relation R implies that if an entity A is R -related to an entity B which in turn is R -related to an entity C , A is also R -related to C .","title":"Transitivity Rule"},{"location":"chaining-rules/#predicates-applicable-in-transitivity-rules","text":"We consider the following predicates transitive: skos:exactMatch skos:narrowMatch skos:broadMatch owl:equivalentClass / owl:equivalentProperty rdfs:subClassOf / rdfs:subPropertyOf owl:sameAs Note that technically speaking skos:narrowMatch and skos:broadMatch are not considered transitive ( skos:broaderTransitive would be), but we are not defining a new semantics here, just a reasonable default for a mapping tool, which will nearly always hold true. Predicates we do not consider transitive include: skos:relatedMatch (for practical reasons), oboInOwl:hasDbXref , skos:closeMatch , rdfs:seeAlso (weakest form of a mapping link), rdf:type .","title":"Predicates applicable in transitivity rules"},{"location":"chaining-rules/#rules","text":"T1: (:A)-[predicate_id]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C)","title":"Rules"},{"location":"chaining-rules/#examples","text":"T1-EX: (:A)-[skos:broadMatch]->(:B)-[skos:broadMatch]->(:C) -> (:A)-[skos:broadMatch]->(:C)","title":"Examples"},{"location":"chaining-rules/#role-chains-over-exactequivalent-matches","text":"Role chains are rules that allow us to bridge across mappings across multiple different properties. Role chains over exact are simple to define, so we start with these","title":"Role chains over exact/equivalent matches"},{"location":"chaining-rules/#predicates-applicable-in-transitity-rules","text":"skos:narrowMatch skos:broadMatch skos:closeMatch skos:relatedMatch","title":"Predicates applicable in transitity rules"},{"location":"chaining-rules/#rules-for-skos","text":"RCE1: (:A)-[skos:exactMatch|owl:equivalentClass]->(:B)-[predicate_id]->(:C) -> (:A)-[predicate_id]->(:C) RCE2: (:A)-[predicate_id]->(:B)-[skos:exactMatch]->(:C) -> (:A)-[predicate_id]->(:C)","title":"Rules for SKOS"},{"location":"chaining-rules/#rules-that-should-probably-not-be-inferred-owl","text":"The following rules hold true, but will be left to a reasoner to be inferred: RCE-N1: (:A)-[owl:equivalentClass]->(:B)-[rdfs:subClassOf]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N2: (:A)-[rdfs:subClassOf]->(:B)-[owl:equivalentClass]->(:C) -> (:A)-[rdfs:subClassOf]->(:C) RCE-N3: (:A)-[owl:equivalentProperty]->(:B)-[rdfs:subPropertyOf]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C) RCE-N4: (:A)-[rdfs:subPropertyOf]->(:B)-[owl:equivalentProperty]->(:C) -> (:A)-[rdfs:subPropertyOf]->(:C)","title":"Rules that should probably not be inferred (OWL)"},{"location":"chaining-rules/#inverse-rules","text":"R inverse of S implies that if an entity A is R -related to an entity B then B is also S -related to A . We like to call the output of an inverse rule a walk-back . A command that applies an inverse rule could be called flip .","title":"Inverse Rules"},{"location":"chaining-rules/#predicates-applicable-in-inverse-rules","text":"This excludes the exact predicates for which inverse rules are redundant.","title":"Predicates applicable in inverse rules"},{"location":"chaining-rules/#rules-for-skos_1","text":"RI1: (:A)-[skos:narrowMatch]->(:B) -> (:B)-[skos:broadMatch]->(:A) RI2: (:A)-[skos:broadMatch]->(:B) -> (:B)-[skos:narrowMatch]->(:A)","title":"Rules for SKOS"},{"location":"chaining-rules/#rules-for-semapv","text":"RI3: (:A)-[semapv:crossSpeciesExactMatch]->(:B) -> (:B)-[semapv:crossSpeciesExactMatch]->(:A) RI4: (:A)-[semapv:crossSpeciesNarrowMatch]->(:B) -> (:B)-[semapv:crossSpeciesBroadMatch]->(:A) RI5: (:A)-[semapv:crossSpeciesBroadMatch]->(:B) -> (:B)-[semapv:crossSpeciesNarrowMatch]->(:A)","title":"Rules for SEMAPV"},{"location":"chaining-rules/#generalisation-rules","text":"Generalisation rules are rules that can be applied to weaken a mapping deliberately. This is sometimes useful, for example when combining strong OWL-Semantics mappings with weaker SKOS-based ones.","title":"Generalisation Rules"},{"location":"chaining-rules/#rules_1","text":"RG1: (:A)-[owl:equivalentTo]->(:B) -> (:A)-[skos:exactMatch]->(:B) RG2: (:A)-[owl:subClassOf]->(:B) -> (:A)-[skos:broadMatch]->(:B)","title":"Rules"},{"location":"comment/","text":"comment URI : rdfs:comment Applicable to : MappingSet , Mapping Description Free text field containing either curator notes or text generated by tool providing additional informative information. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment domain_of: - mapping set - mapping range: string","title":"comment"},{"location":"comment/#comment","text":"URI : rdfs:comment Applicable to : MappingSet , Mapping Description Free text field containing either curator notes or text generated by tool providing additional informative information.","title":"comment"},{"location":"comment/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"comment/#schema-developer-documentation","text":"LinkML source name: comment description: Free text field containing either curator notes or text generated by tool providing additional informative information. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:comment alias: comment domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"confidence/","text":"confidence URI : sssom:confidence Applicable to : Mapping Description A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. Properties Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1 Schema developer documentation LinkML source name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"confidence"},{"location":"confidence/#confidence","text":"URI : sssom:confidence Applicable to : Mapping Description A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence.","title":"confidence"},{"location":"confidence/#properties","text":"Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1","title":"Properties"},{"location":"confidence/#schema-developer-documentation","text":"LinkML source name: confidence description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: confidence domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"Schema developer documentation"},{"location":"contributing/","text":"Contributing to SSSOM Contribution guidelines Code of Conduct","title":"Resources for contributors"},{"location":"contributing/#contributing-to-sssom","text":"Contribution guidelines Code of Conduct","title":"Contributing to SSSOM"},{"location":"create-mapping-commons/","text":"Getting started First, create a virtual environment of your choice (anaconda, venv, pyenv, poetry etc.). If you need assistance with virtual environments, here's a guide to help you setup pyenv and use poetry with it. Install the cruft package. Cruft enables keeping projects up-to-date with future updates made to this original template. pip install cruft Create a project using the mapping-commons-cookiecutter template. cruft create https://github.com/mapping-commons/mapping-commons-cookiecutter This kickstarts an interactive session where you declare the following: project_name : Name of the project. [defaults to: my-commons-name] github_org : Name of the github org the project belongs to. [defaults to: my-org] project_description : Description of the project [defaults to: 'This is the project description.'] full_name : Name of the author [defaults to: 'My Name'] email : Author's email [defaults to: 'my-name@my-org.org'] yo : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ] license : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ] What does this do? The following files and directories are autogenerated in the project: TODO Version control GitHub Go to [https://github.com/new] and follow the instructions, being sure to NOT add a README or .gitignore file (this cookiecutter template will take care of this for you) Add the remote to your local git repository bash git remote add origin https://github.com/my-user-or-organization/my-commons-name.git git branch -M main git push -u origin main GitLab TODO Future updates to the project's boilerplate code In order to be up-to-date with the template, first check if there is a mismatch between the project's boilerplate code and the template by running: cruft check This indicates if there is a difference between the current project's boilerplate code and the latest version of the project template. If the project is up-to-date with the template: SUCCESS: Good work! Project's cruft is up to date and as clean as possible :). Otherwise, it will indicate that the project's boilerplate code is not up-to-date by the following: FAILURE: Project's cruft is out of date! Run `cruft update` to clean this mess up. For viewing the difference, run cruft diff . This shows the difference between the project's boilerplate code and the template's latest version. After running cruft update , the project's boilerplate code will be updated to the latest version of the template.","title":"Create mapping commons"},{"location":"create-mapping-commons/#getting-started","text":"First, create a virtual environment of your choice (anaconda, venv, pyenv, poetry etc.). If you need assistance with virtual environments, here's a guide to help you setup pyenv and use poetry with it. Install the cruft package. Cruft enables keeping projects up-to-date with future updates made to this original template. pip install cruft Create a project using the mapping-commons-cookiecutter template. cruft create https://github.com/mapping-commons/mapping-commons-cookiecutter This kickstarts an interactive session where you declare the following: project_name : Name of the project. [defaults to: my-commons-name] github_org : Name of the github org the project belongs to. [defaults to: my-org] project_description : Description of the project [defaults to: 'This is the project description.'] full_name : Name of the author [defaults to: 'My Name'] email : Author's email [defaults to: 'my-name@my-org.org'] yo : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ] license : Choose from [1]: Yes, [2]: No [ TEST OPTION FOR NOW ]","title":"Getting started"},{"location":"create-mapping-commons/#what-does-this-do","text":"The following files and directories are autogenerated in the project:","title":"What does this do?"},{"location":"create-mapping-commons/#todo","text":"","title":"TODO"},{"location":"create-mapping-commons/#version-control","text":"","title":"Version control"},{"location":"create-mapping-commons/#github","text":"Go to [https://github.com/new] and follow the instructions, being sure to NOT add a README or .gitignore file (this cookiecutter template will take care of this for you) Add the remote to your local git repository bash git remote add origin https://github.com/my-user-or-organization/my-commons-name.git git branch -M main git push -u origin main","title":"GitHub"},{"location":"create-mapping-commons/#gitlab","text":"","title":"GitLab"},{"location":"create-mapping-commons/#todo_1","text":"","title":"TODO"},{"location":"create-mapping-commons/#future-updates-to-the-projects-boilerplate-code","text":"In order to be up-to-date with the template, first check if there is a mismatch between the project's boilerplate code and the template by running: cruft check This indicates if there is a difference between the current project's boilerplate code and the latest version of the project template. If the project is up-to-date with the template: SUCCESS: Good work! Project's cruft is up to date and as clean as possible :). Otherwise, it will indicate that the project's boilerplate code is not up-to-date by the following: FAILURE: Project's cruft is out of date! Run `cruft update` to clean this mess up. For viewing the difference, run cruft diff . This shows the difference between the project's boilerplate code and the template's latest version. After running cruft update , the project's boilerplate code will be updated to the latest version of the template.","title":"Future updates to the project's boilerplate code"},{"location":"creator_id/","text":"creator_id URI : dcterms:creator Applicable to : MappingSet , Mapping Description Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id domain_of: - mapping set - mapping range: EntityReference","title":"creator_id"},{"location":"creator_id/#creator_id","text":"URI : dcterms:creator Applicable to : MappingSet , Mapping Description Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.","title":"creator_id"},{"location":"creator_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"creator_id/#schema-developer-documentation","text":"LinkML source name: creator_id description: Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:creator multivalued: true alias: creator_id domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"creator_label/","text":"creator_label URI : sssom:creator_label Applicable to : MappingSet , Mapping Description A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label domain_of: - mapping set - mapping range: string","title":"creator_label"},{"location":"creator_label/#creator_label","text":"URI : sssom:creator_label Applicable to : MappingSet , Mapping Description A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead.","title":"creator_label"},{"location":"creator_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"creator_label/#schema-developer-documentation","text":"LinkML source name: creator_label description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: creator_label domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"curation_rule/","text":"curation_rule URI : sssom:curation_rule Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv Schema developer documentation LinkML source name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule domain_of: - mapping range: EntityReference","title":"curation_rule"},{"location":"curation_rule/#curation_rule","text":"URI : sssom:curation_rule Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule.","title":"curation_rule"},{"location":"curation_rule/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"curation_rule/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv","title":"See Also"},{"location":"curation_rule/#schema-developer-documentation","text":"LinkML source name: curation_rule description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule.sssom.tsv rank: 1000 multivalued: true alias: curation_rule domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"curation_rule_text/","text":"curation_rule_text URI : sssom:curation_rule_text Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv Schema developer documentation LinkML source name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text domain_of: - mapping range: string","title":"curation_rule_text"},{"location":"curation_rule_text/#curation_rule_text","text":"URI : sssom:curation_rule_text Applicable to : Mapping Description A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text.","title":"curation_rule_text"},{"location":"curation_rule_text/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"curation_rule_text/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/166 https://github.com/mapping-commons/sssom/pull/258 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv","title":"See Also"},{"location":"curation_rule_text/#schema-developer-documentation","text":"LinkML source name: curation_rule_text description: A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/166 - https://github.com/mapping-commons/sssom/pull/258 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curation_rule_text.sssom.tsv rank: 1000 multivalued: true alias: curation_rule_text domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"curie_map/","text":"curie_map URI : sssom:curie_map Applicable to : MappingSet Description A dictionary that contains prefixes as keys and their URI expansions as values. Properties Range : Prefix . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/225 https://github.com/mapping-commons/sssom/pull/349 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv Schema developer documentation LinkML source name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map domain_of: - mapping set range: prefix inlined: true","title":"curie_map"},{"location":"curie_map/#curie_map","text":"URI : sssom:curie_map Applicable to : MappingSet Description A dictionary that contains prefixes as keys and their URI expansions as values.","title":"curie_map"},{"location":"curie_map/#properties","text":"Range : Prefix . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"curie_map/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/225 https://github.com/mapping-commons/sssom/pull/349 https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv","title":"See Also"},{"location":"curie_map/#schema-developer-documentation","text":"LinkML source name: curie_map description: A dictionary that contains prefixes as keys and their URI expansions as values. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/225 - https://github.com/mapping-commons/sssom/pull/349 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/curie_map.sssom.tsv rank: 1000 multivalued: true alias: curie_map domain_of: - mapping set range: prefix inlined: true","title":"Schema developer documentation"},{"location":"documentation/","text":"documentation URI : sssom:documentation Applicable to : MappingRegistry Description A URL to the documentation of this mapping commons. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation domain_of: - mapping registry range: uri","title":"documentation"},{"location":"documentation/#documentation","text":"URI : sssom:documentation Applicable to : MappingRegistry Description A URL to the documentation of this mapping commons.","title":"documentation"},{"location":"documentation/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"documentation/#schema-developer-documentation","text":"LinkML source name: documentation description: A URL to the documentation of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: documentation domain_of: - mapping registry range: uri","title":"Schema developer documentation"},{"location":"editors/","text":"Simple Standard for Sharing Ontological Mappings (SSSOM) How to make a new release Automated: On the main code page, click on Releases (right hand column) Click on the Draft a new release button Click the Choose a tag button, create a new tag: X.X.X Click on the Generate a new release button Make sure only the Select as the latest release checkbox is checked. Click Publish release button Manual: make build make pypi This triggers a GitHub Action workflow that releases the new version of SSSOM to PyPi. Documentation deployment This can be done in two ways: * Automated: Every time a pull request is merged into the main branch, a github action is triggered to deploy documentation automatically. * Manually: The make command to deploy documentation is make deploy .","title":"Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"editors/#simple-standard-for-sharing-ontological-mappings-sssom","text":"","title":"Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"editors/#how-to-make-a-new-release","text":"Automated: On the main code page, click on Releases (right hand column) Click on the Draft a new release button Click the Choose a tag button, create a new tag: X.X.X Click on the Generate a new release button Make sure only the Select as the latest release checkbox is checked. Click Publish release button Manual: make build make pypi This triggers a GitHub Action workflow that releases the new version of SSSOM to PyPi.","title":"How to make a new release"},{"location":"editors/#documentation-deployment","text":"This can be done in two ways: * Automated: Every time a pull request is merged into the main branch, a github action is triggered to deploy documentation automatically. * Manually: The make command to deploy documentation is make deploy .","title":"Documentation deployment"},{"location":"extension_definitions/","text":"extension_definitions URI : sssom:extension_definitions Applicable to : MappingSet Description A list that defines the extension slots used in the mapping set. Properties Range : ExtensionDefinition . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/328 https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv Schema developer documentation LinkML source name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions domain_of: - mapping set range: extension definition","title":"extension_definitions"},{"location":"extension_definitions/#extension_definitions","text":"URI : sssom:extension_definitions Applicable to : MappingSet Description A list that defines the extension slots used in the mapping set.","title":"extension_definitions"},{"location":"extension_definitions/#properties","text":"Range : ExtensionDefinition . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"extension_definitions/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/328 https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv","title":"See Also"},{"location":"extension_definitions/#schema-developer-documentation","text":"LinkML source name: extension_definitions description: A list that defines the extension slots used in the mapping set. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/328 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv rank: 1000 multivalued: true alias: extension_definitions domain_of: - mapping set range: extension definition","title":"Schema developer documentation"},{"location":"faq/","text":"Frequently Asked Questions (FAQ) Why should our mappings be FAIR and carefully standardised? Mappings are frequently created on an ad-hoc basis, using simple two-column spreadsheets where the first column corresponds to the subject of the mapping, and the second column to the object of the mapping. This is insufficient for a variety of reasons: non-transparent precision: While the assumption is that the subject \"sort of mostly exactly\" maps to the object, in practice this is rarely the case. Matches can exact , where the subject corresponds 100% to the object, broad , where the object is broader than the subject, and others. Qualifiers like exact , broad , narrow , related and close qualify the precision of the mapping (not to be mistaken for fuzziness of confidence). Without knowing the precision, we cannot accurately transform our data, nor can we use the mappings to \"walk\", i.e. move from one mapping to another, see SSSOM 5-Star recommendation for mappings non-transparent incompleteness: We don't know when the mapping was created, on the basis of what version of the terminological source of the subject or object. As time passes, we also lose confidence whether there would now be more suitable mappings, or wether there are new terms that are now fully covered by the mappings. non-transparent confidence: whether a tool or a human propose the mapping, there is always a bit of a risk the mapping call may be wrong. As consumers of the mappings we need to know how confident the mapping authors were (confidence score), and why they confident (curation rules, mapping justification). Currently, mappings are created by a variety of systems, manually curated and automatic, and we need a way to efficiently collect and combine them. Mapping sets and mappings with quality provenance metadata allow us to trace faulty mappings to the source and correct them in a way that all users of the mapping set will profit from it. Is there a central repository of SSSOM files? The idea of a mapping commons is to provide mappings in a decentralised fashion akin to OBO ontologies. A mapping commons collects mappings relevant to a particular community, either by reference (i.e. pulling in mapping sets already published elsewhere), or directly maintained at the mapping commons ( example ). Their integration as part of a repository (mapping server) would look like EBI's Ontology X-ref Browser or BioPortal , but the exact scope of these repositories is use case dependent - EBI may chose to show cross references from and to ontologies loaded into OLS, while BioPortal chooses to show a different set of mappings. The plan is to update EBI's OxO to support the full SSSOM data model, drawing curated mappings from a variety of mapping commons, by Summer 2022 - but its unlikely that one central place will index all available mappings. Who is responsible for the conversion into SSSOM - the primary developers of an artefact, or a mapping commons? Like with everything on the web, the closer to the source the SSSOM mappings are curated, the better. Ideally, mappings are maintained as part of ontology release pipelines or by primary mapping creators, rather than derived from a secondary source such as a database, further downstream. The reason for this is that ideally, we would want mappings to be reviewable and editable in much the same way as open ontologies, offering issue trackers and an active community incorporating changes. That said, it is unlikely that all existing mappings will be maintained by the source directly. For example, we expect to maintain the SSSOM mappings derived from the vast majority of OBO ontology xrefs as a downstream task ( example ). How dependent are we on the sssom-py toolkit? SSSOM follows the core design principle that mapping tables should be (a) self-contained, i.e. including its prefix maps similar to a turtle file, and (b) readable by normal data science toolkits. An SSSOM table can be read with pandas using the comment='#' parameter (with one caveat, which is that # must be used as a character solely to denote comments), or a very simply combination of a yaml reader and pandas. The SSSOM toolkit however offers some extra functionality, like export to JSON-LD, or RDF or import from other frequently used format. Is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories? A (SSSOM) mapping server is a repository for mappings that enables the browsing of existing mappings, exposing all (or some relevant subset of) SSSOM metadata as search facets. In that sense, it should be considered complementary, as it enables the search for accurate mappings from a specific term or set of terms, something that goes beyond what most ontologies would offer. However, the concept of ontology mappings can be perceived as antagonistic to Open Ontology principles, as its goal is not the logical integration of knowledge, but the association or linking of terms across controlled semantic spaces . The OBO vision involves the building of a coherent, non-redundant semantic space of logically interconnected ontologies, which in particular wants to avoid the introduction of overlapping concepts. The mapping world specifically embraces heterogenous semantic spaces and overlapping concepts, and seeks to bridge the semantic gaps using well-defined mapping relations such as \"skos:broadMatch\" or \"owl:equivalentClass\".","title":"FAQ"},{"location":"faq/#frequently-asked-questions-faq","text":"","title":"Frequently Asked Questions (FAQ)"},{"location":"faq/#why-should-our-mappings-be-fair-and-carefully-standardised","text":"Mappings are frequently created on an ad-hoc basis, using simple two-column spreadsheets where the first column corresponds to the subject of the mapping, and the second column to the object of the mapping. This is insufficient for a variety of reasons: non-transparent precision: While the assumption is that the subject \"sort of mostly exactly\" maps to the object, in practice this is rarely the case. Matches can exact , where the subject corresponds 100% to the object, broad , where the object is broader than the subject, and others. Qualifiers like exact , broad , narrow , related and close qualify the precision of the mapping (not to be mistaken for fuzziness of confidence). Without knowing the precision, we cannot accurately transform our data, nor can we use the mappings to \"walk\", i.e. move from one mapping to another, see SSSOM 5-Star recommendation for mappings non-transparent incompleteness: We don't know when the mapping was created, on the basis of what version of the terminological source of the subject or object. As time passes, we also lose confidence whether there would now be more suitable mappings, or wether there are new terms that are now fully covered by the mappings. non-transparent confidence: whether a tool or a human propose the mapping, there is always a bit of a risk the mapping call may be wrong. As consumers of the mappings we need to know how confident the mapping authors were (confidence score), and why they confident (curation rules, mapping justification). Currently, mappings are created by a variety of systems, manually curated and automatic, and we need a way to efficiently collect and combine them. Mapping sets and mappings with quality provenance metadata allow us to trace faulty mappings to the source and correct them in a way that all users of the mapping set will profit from it.","title":"Why should our mappings be FAIR and carefully standardised?"},{"location":"faq/#is-there-a-central-repository-of-sssom-files","text":"The idea of a mapping commons is to provide mappings in a decentralised fashion akin to OBO ontologies. A mapping commons collects mappings relevant to a particular community, either by reference (i.e. pulling in mapping sets already published elsewhere), or directly maintained at the mapping commons ( example ). Their integration as part of a repository (mapping server) would look like EBI's Ontology X-ref Browser or BioPortal , but the exact scope of these repositories is use case dependent - EBI may chose to show cross references from and to ontologies loaded into OLS, while BioPortal chooses to show a different set of mappings. The plan is to update EBI's OxO to support the full SSSOM data model, drawing curated mappings from a variety of mapping commons, by Summer 2022 - but its unlikely that one central place will index all available mappings.","title":"Is there a central repository of SSSOM files?"},{"location":"faq/#who-is-responsible-for-the-conversion-into-sssom-the-primary-developers-of-an-artefact-or-a-mapping-commons","text":"Like with everything on the web, the closer to the source the SSSOM mappings are curated, the better. Ideally, mappings are maintained as part of ontology release pipelines or by primary mapping creators, rather than derived from a secondary source such as a database, further downstream. The reason for this is that ideally, we would want mappings to be reviewable and editable in much the same way as open ontologies, offering issue trackers and an active community incorporating changes. That said, it is unlikely that all existing mappings will be maintained by the source directly. For example, we expect to maintain the SSSOM mappings derived from the vast majority of OBO ontology xrefs as a downstream task ( example ).","title":"Who is responsible for the conversion into SSSOM - the primary developers of an artefact, or a mapping commons?"},{"location":"faq/#how-dependent-are-we-on-the-sssom-py-toolkit","text":"SSSOM follows the core design principle that mapping tables should be (a) self-contained, i.e. including its prefix maps similar to a turtle file, and (b) readable by normal data science toolkits. An SSSOM table can be read with pandas using the comment='#' parameter (with one caveat, which is that # must be used as a character solely to denote comments), or a very simply combination of a yaml reader and pandas. The SSSOM toolkit however offers some extra functionality, like export to JSON-LD, or RDF or import from other frequently used format.","title":"How dependent are we on the sssom-py toolkit?"},{"location":"faq/#is-the-concept-of-a-mapping-server-equivalent-complementary-or-antagonistic-to-the-existing-ontology-repositories","text":"A (SSSOM) mapping server is a repository for mappings that enables the browsing of existing mappings, exposing all (or some relevant subset of) SSSOM metadata as search facets. In that sense, it should be considered complementary, as it enables the search for accurate mappings from a specific term or set of terms, something that goes beyond what most ontologies would offer. However, the concept of ontology mappings can be perceived as antagonistic to Open Ontology principles, as its goal is not the logical integration of knowledge, but the association or linking of terms across controlled semantic spaces . The OBO vision involves the building of a coherent, non-redundant semantic space of logically interconnected ontologies, which in particular wants to avoid the introduction of overlapping concepts. The mapping world specifically embraces heterogenous semantic spaces and overlapping concepts, and seeks to bridge the semantic gaps using well-defined mapping relations such as \"skos:broadMatch\" or \"owl:equivalentClass\".","title":"Is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories?"},{"location":"funding/","text":"Funding The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven project which has received support from many different sources. We list the most important ones in the following. Volunteering efforts A huge fraction of the work on SSSOM has been done by volunteers without dedicated grant support. We hereby acknowledge their contributions as being absolutely essential. A selection of amazing contributions (by no means exhaustive): The development of SSSOM Java Hundreds of careful contributions to discussions on the SSSOM issue tracker The first draft of the Mapping Registry Cookiecutter We try to keep track of other Community efforts here Phenomics First (NIH / NHGRI #1RM1HG010860-01) A lot of the groundwork of SSSOM was done to support a disease mapping project as part of the Mondo Disease Ontology , which included, but was not limited to: Creation of a basic metadata model Implementation of validation and parsing methods in sssom-py Generating training materials Organising workshops Outreach activties to clinical communities such as OHDSI The grant was awared to members of the Monarch Initiative. Monarch (NIH / OD #5R24OD011883) To support development of cross-species mappings and knowledge graph integration for the Monarch Knowledge Graph , a few new features had to be supported: Groundwork for the Semantic Mapping Vocabulary which contains, for example, cross-species mapping properties. The advancement of the concepts and tools behind the \"Mapping Commons\", including supporting the development of the Mapping Registry Cookiecutter Various improvements to the SSSOM metadata model, including the introduction of curation rules. The OxO2 SSSOM mapping browser The grant was awared to members of the Monarch Initiative. Bosch Gift to LBNL A lot of the work on tooling was supported by a Bosch Gift to the Lawrence Berkely National Laboratory (Chris Mungall group). We thank Bosch for their generous support which helped us with the following: Implementation of conversion and testing methods in sssom-py The development of training materials The development of specialised matching tools such as OAK lexmatch which provided the first implementation of the SSSOM standard in a matching tool. DARPA: Young Faculty Award W911NF2010255 A huge amount of refactoring of sssom-py and development best practices, as well as training materials, was provided through this grant (awared to Benjamin M. Gyori). Other contributions include work on the Semantic mapping reasoner and assembler","title":"Funding"},{"location":"funding/#funding","text":"The Simple Standard for Sharing Ontological Mappings (SSSOM) is a community-driven project which has received support from many different sources. We list the most important ones in the following.","title":"Funding"},{"location":"funding/#volunteering-efforts","text":"A huge fraction of the work on SSSOM has been done by volunteers without dedicated grant support. We hereby acknowledge their contributions as being absolutely essential. A selection of amazing contributions (by no means exhaustive): The development of SSSOM Java Hundreds of careful contributions to discussions on the SSSOM issue tracker The first draft of the Mapping Registry Cookiecutter We try to keep track of other Community efforts here","title":"Volunteering efforts"},{"location":"funding/#phenomics-first-nih-nhgri-1rm1hg010860-01","text":"A lot of the groundwork of SSSOM was done to support a disease mapping project as part of the Mondo Disease Ontology , which included, but was not limited to: Creation of a basic metadata model Implementation of validation and parsing methods in sssom-py Generating training materials Organising workshops Outreach activties to clinical communities such as OHDSI The grant was awared to members of the Monarch Initiative.","title":"Phenomics First (NIH / NHGRI #1RM1HG010860-01)"},{"location":"funding/#monarch-nih-od-5r24od011883","text":"To support development of cross-species mappings and knowledge graph integration for the Monarch Knowledge Graph , a few new features had to be supported: Groundwork for the Semantic Mapping Vocabulary which contains, for example, cross-species mapping properties. The advancement of the concepts and tools behind the \"Mapping Commons\", including supporting the development of the Mapping Registry Cookiecutter Various improvements to the SSSOM metadata model, including the introduction of curation rules. The OxO2 SSSOM mapping browser The grant was awared to members of the Monarch Initiative.","title":"Monarch (NIH / OD #5R24OD011883)"},{"location":"funding/#bosch-gift-to-lbnl","text":"A lot of the work on tooling was supported by a Bosch Gift to the Lawrence Berkely National Laboratory (Chris Mungall group). We thank Bosch for their generous support which helped us with the following: Implementation of conversion and testing methods in sssom-py The development of training materials The development of specialised matching tools such as OAK lexmatch which provided the first implementation of the SSSOM standard in a matching tool.","title":"Bosch Gift to LBNL"},{"location":"funding/#darpa-young-faculty-award-w911nf2010255","text":"A huge amount of refactoring of sssom-py and development best practices, as well as training materials, was provided through this grant (awared to Benjamin M. Gyori). Other contributions include work on the Semantic mapping reasoner and assembler","title":"DARPA: Young Faculty Award W911NF2010255"},{"location":"glossary/","text":"Glossary The glossary is currently being developed here .","title":"Glossary"},{"location":"glossary/#glossary","text":"The glossary is currently being developed here .","title":"Glossary"},{"location":"homepage/","text":"homepage URI : sssom:homepage Applicable to : MappingRegistry Description A URL to a homepage of this mapping commons. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage domain_of: - mapping registry range: uri","title":"homepage"},{"location":"homepage/#homepage","text":"URI : sssom:homepage Applicable to : MappingRegistry Description A URL to a homepage of this mapping commons.","title":"homepage"},{"location":"homepage/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"homepage/#schema-developer-documentation","text":"LinkML source name: homepage description: A URL to a homepage of this mapping commons. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: homepage domain_of: - mapping registry range: uri","title":"Schema developer documentation"},{"location":"imports/","text":"imports URI : sssom:imports Applicable to : MappingRegistry Description A list of registries that should be imported into this one. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports domain_of: - mapping registry range: uri","title":"imports"},{"location":"imports/#imports","text":"URI : sssom:imports Applicable to : MappingRegistry Description A list of registries that should be imported into this one.","title":"imports"},{"location":"imports/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"imports/#schema-developer-documentation","text":"LinkML source name: imports description: A list of registries that should be imported into this one. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: imports domain_of: - mapping registry range: uri","title":"Schema developer documentation"},{"location":"introduction/","text":"Introduction Abstract Mappings, or cross-references, are used to link terms across different ontologies. However, there is currently little to no standardisation in how such mappings are represented. While properties such as hasDbXref property are widely used in ontologies such as GO and MONDO, the meaning of such mappings is unclear, and cannot be further described with additional metadata or provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) is an initiative to provide a minimal and standard set of elements for the dissemination of mappings between ontology terms, to ensure a reliable interpretation of generated mappings and to enable sharing and data integration between people and applications. This document introduces the SSSOM catalog of metadata elements, which can be used to attach meta- and provenance data to both mappings and sets of mappings; a controlled vocabulary for the description of match types (SSSOM CV); a definition of both RDF and TSV serialisations of ontology mappings; and a (non-exhaustive) selection of recommended mapping predicates. Introduction Currently, there are three methods typically used to express mappings in OWL: direct logical axioms using owl:equivalentClass; the oboInOwl hasDbXref property; and the SKOS vocabulary for mapping properties. The first, owl:equivalentClass, is a strong logical equivalence assertion which is not appropriate for more nuanced mappings such as close matches. The second, hasDbXref, does not assert formal logical equivalence but also has no clearly defined meaning. Finally, the SKOS vocabulary provides a hierarchy of mapping properties which allow the unambigous specification of exact, close, broad, and narrow matches, but does not provide the means for mappings to be annotated with additional metadata such as confidence scores and provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) addresses these problems by defining a catalog of metadata terms to describe mappings. Both individual mappings and sets of mappings can be described, enabling provenance and metadata to be captured on multiple levels. SSSOM interoperates with existing methods for the specification of mappings, allowing any predicate to be used to describe the nature of each mapping including those from OWL and SKOS. The provenance of mappings - such as whether the mapping was created as the result of a human-curated equivalence match, or a semantic similarity match - is specified using a controlled vocabulary (CV), SSSOM CV. Combined with the metadata properties provided by SSSOM such as confidence and semantic_similarity_score, this provenance information can be used to capture mapping descriptions in a manner that is explicit and amenable to curation. Two serialisations for SSSOM mappings are provided in this document, aimed at different communities: an RDF/OWL serialisation using IRIs that is aimed at the Knowledge Graph/Semantic Web community, and a TSV serialisation using CURIE syntax which is aimed at the wider bioinformatics community. An unambiguous translation between these serialisations is provided. Challenges for exchange and use of mappings Despite their importance for data integration, term mappings are typically neglected as data artefacts (57). A mapping in this context is a correspondence between two terms, referred to here as \"subject\" and \"object\" terms. A \"predicate\" defines the type of relationship between the subject and the object, such as skos:exactMatch, or owl:equivalentClass. A mapping, or \"match\", does not have to be exact: it can be broad, e.g. between a conceptually narrow term such as \"Red Delicious\" and a conceptually broader term such as \"Apple\". To our knowledge, no formal review has been published that analyzes the representation and formats used for collections of term mappings (mapping sets, or alignments), but in our experience, most mapping sets are represented as tables using an ad-hoc \"schema\", often merely a simple two-column format that lists matching terms in two naming schemes. An example of such a table can be seen in the following Table. Subject Object UBERON:0002101 FMA:24875 UBERON:0000019 FMA:54448 Table 1: An example of a typical mapping table one might find on the web. This type of table lacks clear semantics and is therefore very difficult to use and re-use either by humans or by machines. We will discuss a few of the most critical problems in the sections that follow. Non-transparent imprecision . Mapping precision describes, usually qualitatively, whether a mapping between a subject and an object is exact, broad, narrow, close or related. An exact mapping means that the subject term can be replaced with the object term and vice versa, i.e. they refer to the exact same real-world entity. A broad mapping links a subject term to a more general term, for example, the term \"leg\" to the term \"hindlimb\" (if the ontology defines leg as the parts of the hindlimb that exclude the foot). A narrow mapping links a subject term to a more specific term. For example, \"long QT syndrome\" in the Mondo Disease Ontology is a narrow match to \"Romano-Ward long QT syndrome\" in Orphanet. A close mapping relates two terms that are neither exact, broad or narrow, but belong to the same category of things and are semantically similar, such as \"apple\" to \"pear\", or \"paw\" to \"hand\". Due to its subjective nature (\"what is close?\"), this is a problematic category of mapping, but it is widely used, for example for relating similar anatomical terms across species. Related mappings are mappings across categories of things, such as the mapping between a phenotype \"enlarged liver\" and the anatomical entity \"liver\". In practice, it is rare that mapping tables such as the one presented in Table 1 constitute a set of purely \"exact\" matches. Different use cases may require different levels of mapping precision. For example, for entity merging (defined as the process of merging two entities from different sources into one) or data translation (defined as the process of moving annotations from using one ontology to another), exact mappings may be required, while for data grouping broad matches are often sufficient (ensuring that the subject is classified under the object term). For many machine learning use cases, close and related matches will be extremely useful regardless of their lack of semantic precision (though semantic precision is likely to improve predictive power). In practice, many mappings are to varying degrees imprecise but do not specify the mapping precision. This makes it impossible to reliably apply them to use cases such as entity merging or data translation. Non-transparent accuracy, confidence, and provenance . To scale to real-world use cases, automated tools are critical for matching terms across databases, terminologies and ontologies. Such tools typically implement mapping rules that determine whether a given pair of terms constitutes a match. For example, label matching rules might include \"match if subject and object labels match\", \"match if subject label matches with an exact synonym of the object\" and \"match if subject and object exhibit a very high degree of semantic similarity\". Depending on the rules, tools will have more or less confidence that a match constitutes a mapping. Even human curators often have different levels of confidence about the accuracy of any given mapping, especially if the process of determining whether a mapping is accurate involves the review of (often complex) descriptions and term definitions. Different use cases will profit from different degrees of accuracy. For example, if we seek to integrate data from various medical terminologies to inform medical diagnosis, we may require not only a very high degree of confidence about the mapping but also ensure that the mapping is \"explainable\" to users. To ensure that diagnostic decisions that require bridging of data silos through mappings are explainable, we furthermore need provenance (documentation of where a piece of data comes from and how it was produced), such as an explicit statement of the mapping rules by which the match was originally determined (for example, the labels of both terms could have been the same). Thanks to efforts by initiatives such as the Ontology Alignment Evaluation Initiative (OAEI), many mapping tables on the web include at least a confidence score. However, in our experience, mapping rules are rarely stated explicitly as part of the mappings or mapping set metadata. Many mappings in the wild are to varying degrees inaccurate, but without a confidence score and explicit mapping rules, this inaccuracy will not be transparent. Non-transparent incompleteness . Mapping sets can be incomplete for (at least) three major reasons: (1) they are out of date, i.e. a term in one ontology was removed (deprecated) in a later version of the ontology or a term with a more precise mapping was introduced; (2) they are deliberately partial, i.e. covering only a subset of terms, which were mapped for a specific purpose (for example a manual effort to map all COVID-19-relevant phenotypes from the Human Phenotype Ontology to the Mammalian Phenotype Ontology); or (3) they accidentally omit certain correct mappings, as the automated approaches that were used did not detect them (false negatives). We cannot determine whether a mapping set such as the one given in Table X1 is up-to-date, deliberately partial or accidentally incomplete without sufficient metadata about the purpose of the mappings, the tools used and the version of the source data used for the matching process. UnFAIRness . The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reusable. Unlike many of the widely used controlled vocabularies, ontologies and data schemas, mappings are rarely published using standard formats and metadata vocabularies and can therefore be considered second class citizens in the world of FAIR semantics. While some tools exist to browse mappings (the F and A in FAIR, findable and accessible), such as OxO and BioPortal, they lack access to at least some of the metadata required to determine their applicability for a use case: Are mappings likely to be correct? Are they precise enough? Have they been updated recently? Can I trust the authority that generated the mappings? While some minimum level of interoperability (the I in FAIR) is achieved simply by publishing the mappings as RDF triples (which rarely happens in practice), most mappings are best captured in the form of simple tables (in our experience the preferred format for both mapping curators and data engineers). Furthermore, the predicates or relations used in the mappings are far from standardized. Different relations have different semantics, ranging from strong logical relations such as owl:sameAs or owl:equivalentClass to predicates with no formally specified semantics such as oboInOwl:hasDbXref. In our experience, reusability (the R in FAIR) is a significant obstacle to FAIRness. It is infeasible to simply reuse existing mappings without the metadata required to make imprecision, inaccuracy and incompleteness explicit. Repositories such as OxO and BioPortal cannot make mappings more accessible, because the metadata required to do so simply does not exist. In order to gradually improve our mappings and make them FAIRer, we need to be able to share, review, fix and maintain our mappings in much the same way as our ontologies themselves - using standard formats and rich metadata. FAIRifying data is an effort that aims to supply practical solutions for the use of the FAIR guiding principles throughout the research data life cycle. It recommends technologies that support semantic interoperability in a sustainable way, and practices that support FAIRness. The FAIRSemantics effort is currently discussing how to incorporate semantic mappings, and we reached out to them to consider SSSOM for this purpose. Background about mappings A mapping can be defined as a triple s, p, o , where s is the subject of the mapping, p is the mapping predicate (or relation) and o is the object. There are many different mapping predicates used in practice, but they are not always standardized. The Semantic Web community uses a number of standard mapping predicates, such as owl:sameAs or owl:equivalentClass (logical mapping predicates) and skos:exactMatch or skos:broadMatch (terminological mapping predicates). We refer to mapping subjects and objects as \"terms\", which we will loosely define here as a set of symbols that define some entity in the real world. Usually, a term can be referred to by an identifier that uniquely identifies some entity in a certain context. For example, UBERON:0002101 is the identifier for a term that refers to the anatomical entity \"limb\". Putting it all together, the mapping describes a correspondence in which the term with the id UBERON:0002101 constitutes a terminological exact match to the term with the identifier FMA:24875. Mappings between data model elements, databases and other representations can be described similarly. Note that we generally use the terms \"matching\" and \"mapping\" interchangeably. Occasionally we refer to \"matching\" as the process to determine a mapping candidate (lexical matching, logical matching etc), a \"match\" as the result of the matching process, and a \"mapping\" the process and result of the process that deduces a true correspondence from a (set of) matches. For SSSOM, this distinction is a bit academic, but useful to keep in mind when talking about the interplay of automated approaches (which result in \"matches\") and manual approaches (which typically result in the final mappings). Ontology alignment is the task of determining corresponding terms shared between two or more ontologies, i.e. mappings. Sometimes \"ontology alignment\" refers to the output of the alignment process. Mapping sets can be \"partial\", i.e. covering only a subset of terms in the subject or object source (ontology, database, etc), \"derived\", i.e. one mapping set can be obtained from one or more others (for example, a XAO to MeSH mapping can be obtained by combining a XAO-Uberon mapping with a Uberon-MeSH mapping), or \"complete\". We refer to a \"complete\" mapping, i.e. the set of all correspondences between two resources (ontologies, databases), as an \"alignment\". The identifier of a term has three parts: a namespace that describes in which database or ontology the identifier is defined, a local identifier that unambiguously identifies an entity within that namespace, and optionally a separator that can be used to separate the namespace from the local identifier to make them easier to process. UBERON:0002101, for example, comprises the namespace \"UBERON\", the separator \":\" and the local identifier \"0002101\". There are various syntaxes for denoting identifiers; the UBERON:0002101 notation is called compact URI (CURIE) syntax, which is used widely across the database and ontology worlds. The problem with this syntax is that UBERON may not be a globally unique prefix, so files making use of such CURIEs must come with a prefix map that ensures that UBERON (in the CURIE syntax referred to as \"prefix\") is globally unique by mapping it to the persistent International Resource Identifier (IRI) prefix http://purl.obolibrary.org/obo/UBERON_. This may not be a major problem for a fairly unique prefix such as \"UBERON\", but it is for prefixes such as \"ICD\", which can refer to many different name spaces, such as ICD9, ICD10, ICD11 and more, all of which correspond to entirely different terminologies. Approaches to mapping . There are many different techniques that can be employed to generate term mappings. Automated matching techniques include ontology matching, entity resolution (the task of determining whether two database records correspond to the same entity), semantic similarity or automated reasoning. Recent approaches based on machine learning and graph embeddings show promise for working with messier inputs. No single tool will perform equally well on all inputs: some of the semantics-aware tools like LogMap and Agreement Maker Light (AML) can exploit the ontology structure to determine high-quality matches but will have problems with the large-scale data linking tasks required by modern big-data applications. Purely automated approaches to mapping are often insufficient for real world use cases that require a high degree of accuracy, such as medical diagnostics. They often need to be refined by hand or using sophisticated mapping reconciliation approaches independent of the actual matching. Determining a mapping is often complex, due to the high degree of terminological variability: different communities may use very different names for the same real world entities . For example, for example, the condition referred to in the Human Phenotype Ontology (HPO) as \"Hyperchloriduria\" is called \"increased urine chloride ion level\" in the Mammalian Phenotype Ontology (MP), which is used by the model organism community. Mapping rules - capturing the conditions under which a match is established . Mapping rules define the conditions under which we determine a match between two terms. For example, the condition for a mapping rule could be \"if the subject label and object label match exactly\". In practice, mapping rules can be very simple (e.g., \"exact match of term labels\"), more complex (\"exact match between label of subject and exact synonym of object after they are pre-processed using stemming\"), or even more exacting (\"complex match determined by a human curator that carefully reviewed the descriptions and definitions of both terms and concluded they mean the same thing\"). One problem for both manually curated mappings and automated approaches is that these mapping rules are often hidden deeply in the code or are not documented at all. Exposing mapping rules along with confidence scores would be very valuable for reviewing mappings and explaining them to users. Our reference implementation for SSSOM is rdf-matcher, which makes these mapping rules explicit, but other approaches such as OMOP2OBO also capture mapping rules as part of the mapping metadata.","title":"Introduction"},{"location":"introduction/#introduction","text":"","title":"Introduction"},{"location":"introduction/#abstract","text":"Mappings, or cross-references, are used to link terms across different ontologies. However, there is currently little to no standardisation in how such mappings are represented. While properties such as hasDbXref property are widely used in ontologies such as GO and MONDO, the meaning of such mappings is unclear, and cannot be further described with additional metadata or provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) is an initiative to provide a minimal and standard set of elements for the dissemination of mappings between ontology terms, to ensure a reliable interpretation of generated mappings and to enable sharing and data integration between people and applications. This document introduces the SSSOM catalog of metadata elements, which can be used to attach meta- and provenance data to both mappings and sets of mappings; a controlled vocabulary for the description of match types (SSSOM CV); a definition of both RDF and TSV serialisations of ontology mappings; and a (non-exhaustive) selection of recommended mapping predicates.","title":"Abstract"},{"location":"introduction/#introduction_1","text":"Currently, there are three methods typically used to express mappings in OWL: direct logical axioms using owl:equivalentClass; the oboInOwl hasDbXref property; and the SKOS vocabulary for mapping properties. The first, owl:equivalentClass, is a strong logical equivalence assertion which is not appropriate for more nuanced mappings such as close matches. The second, hasDbXref, does not assert formal logical equivalence but also has no clearly defined meaning. Finally, the SKOS vocabulary provides a hierarchy of mapping properties which allow the unambigous specification of exact, close, broad, and narrow matches, but does not provide the means for mappings to be annotated with additional metadata such as confidence scores and provenance. The Simple Standard for Sharing Ontology Mappings (SSSOM) addresses these problems by defining a catalog of metadata terms to describe mappings. Both individual mappings and sets of mappings can be described, enabling provenance and metadata to be captured on multiple levels. SSSOM interoperates with existing methods for the specification of mappings, allowing any predicate to be used to describe the nature of each mapping including those from OWL and SKOS. The provenance of mappings - such as whether the mapping was created as the result of a human-curated equivalence match, or a semantic similarity match - is specified using a controlled vocabulary (CV), SSSOM CV. Combined with the metadata properties provided by SSSOM such as confidence and semantic_similarity_score, this provenance information can be used to capture mapping descriptions in a manner that is explicit and amenable to curation. Two serialisations for SSSOM mappings are provided in this document, aimed at different communities: an RDF/OWL serialisation using IRIs that is aimed at the Knowledge Graph/Semantic Web community, and a TSV serialisation using CURIE syntax which is aimed at the wider bioinformatics community. An unambiguous translation between these serialisations is provided.","title":"Introduction"},{"location":"introduction/#challenges-for-exchange-and-use-of-mappings","text":"Despite their importance for data integration, term mappings are typically neglected as data artefacts (57). A mapping in this context is a correspondence between two terms, referred to here as \"subject\" and \"object\" terms. A \"predicate\" defines the type of relationship between the subject and the object, such as skos:exactMatch, or owl:equivalentClass. A mapping, or \"match\", does not have to be exact: it can be broad, e.g. between a conceptually narrow term such as \"Red Delicious\" and a conceptually broader term such as \"Apple\". To our knowledge, no formal review has been published that analyzes the representation and formats used for collections of term mappings (mapping sets, or alignments), but in our experience, most mapping sets are represented as tables using an ad-hoc \"schema\", often merely a simple two-column format that lists matching terms in two naming schemes. An example of such a table can be seen in the following Table. Subject Object UBERON:0002101 FMA:24875 UBERON:0000019 FMA:54448 Table 1: An example of a typical mapping table one might find on the web. This type of table lacks clear semantics and is therefore very difficult to use and re-use either by humans or by machines. We will discuss a few of the most critical problems in the sections that follow. Non-transparent imprecision . Mapping precision describes, usually qualitatively, whether a mapping between a subject and an object is exact, broad, narrow, close or related. An exact mapping means that the subject term can be replaced with the object term and vice versa, i.e. they refer to the exact same real-world entity. A broad mapping links a subject term to a more general term, for example, the term \"leg\" to the term \"hindlimb\" (if the ontology defines leg as the parts of the hindlimb that exclude the foot). A narrow mapping links a subject term to a more specific term. For example, \"long QT syndrome\" in the Mondo Disease Ontology is a narrow match to \"Romano-Ward long QT syndrome\" in Orphanet. A close mapping relates two terms that are neither exact, broad or narrow, but belong to the same category of things and are semantically similar, such as \"apple\" to \"pear\", or \"paw\" to \"hand\". Due to its subjective nature (\"what is close?\"), this is a problematic category of mapping, but it is widely used, for example for relating similar anatomical terms across species. Related mappings are mappings across categories of things, such as the mapping between a phenotype \"enlarged liver\" and the anatomical entity \"liver\". In practice, it is rare that mapping tables such as the one presented in Table 1 constitute a set of purely \"exact\" matches. Different use cases may require different levels of mapping precision. For example, for entity merging (defined as the process of merging two entities from different sources into one) or data translation (defined as the process of moving annotations from using one ontology to another), exact mappings may be required, while for data grouping broad matches are often sufficient (ensuring that the subject is classified under the object term). For many machine learning use cases, close and related matches will be extremely useful regardless of their lack of semantic precision (though semantic precision is likely to improve predictive power). In practice, many mappings are to varying degrees imprecise but do not specify the mapping precision. This makes it impossible to reliably apply them to use cases such as entity merging or data translation. Non-transparent accuracy, confidence, and provenance . To scale to real-world use cases, automated tools are critical for matching terms across databases, terminologies and ontologies. Such tools typically implement mapping rules that determine whether a given pair of terms constitutes a match. For example, label matching rules might include \"match if subject and object labels match\", \"match if subject label matches with an exact synonym of the object\" and \"match if subject and object exhibit a very high degree of semantic similarity\". Depending on the rules, tools will have more or less confidence that a match constitutes a mapping. Even human curators often have different levels of confidence about the accuracy of any given mapping, especially if the process of determining whether a mapping is accurate involves the review of (often complex) descriptions and term definitions. Different use cases will profit from different degrees of accuracy. For example, if we seek to integrate data from various medical terminologies to inform medical diagnosis, we may require not only a very high degree of confidence about the mapping but also ensure that the mapping is \"explainable\" to users. To ensure that diagnostic decisions that require bridging of data silos through mappings are explainable, we furthermore need provenance (documentation of where a piece of data comes from and how it was produced), such as an explicit statement of the mapping rules by which the match was originally determined (for example, the labels of both terms could have been the same). Thanks to efforts by initiatives such as the Ontology Alignment Evaluation Initiative (OAEI), many mapping tables on the web include at least a confidence score. However, in our experience, mapping rules are rarely stated explicitly as part of the mappings or mapping set metadata. Many mappings in the wild are to varying degrees inaccurate, but without a confidence score and explicit mapping rules, this inaccuracy will not be transparent. Non-transparent incompleteness . Mapping sets can be incomplete for (at least) three major reasons: (1) they are out of date, i.e. a term in one ontology was removed (deprecated) in a later version of the ontology or a term with a more precise mapping was introduced; (2) they are deliberately partial, i.e. covering only a subset of terms, which were mapped for a specific purpose (for example a manual effort to map all COVID-19-relevant phenotypes from the Human Phenotype Ontology to the Mammalian Phenotype Ontology); or (3) they accidentally omit certain correct mappings, as the automated approaches that were used did not detect them (false negatives). We cannot determine whether a mapping set such as the one given in Table X1 is up-to-date, deliberately partial or accidentally incomplete without sufficient metadata about the purpose of the mappings, the tools used and the version of the source data used for the matching process. UnFAIRness . The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reusable. Unlike many of the widely used controlled vocabularies, ontologies and data schemas, mappings are rarely published using standard formats and metadata vocabularies and can therefore be considered second class citizens in the world of FAIR semantics. While some tools exist to browse mappings (the F and A in FAIR, findable and accessible), such as OxO and BioPortal, they lack access to at least some of the metadata required to determine their applicability for a use case: Are mappings likely to be correct? Are they precise enough? Have they been updated recently? Can I trust the authority that generated the mappings? While some minimum level of interoperability (the I in FAIR) is achieved simply by publishing the mappings as RDF triples (which rarely happens in practice), most mappings are best captured in the form of simple tables (in our experience the preferred format for both mapping curators and data engineers). Furthermore, the predicates or relations used in the mappings are far from standardized. Different relations have different semantics, ranging from strong logical relations such as owl:sameAs or owl:equivalentClass to predicates with no formally specified semantics such as oboInOwl:hasDbXref. In our experience, reusability (the R in FAIR) is a significant obstacle to FAIRness. It is infeasible to simply reuse existing mappings without the metadata required to make imprecision, inaccuracy and incompleteness explicit. Repositories such as OxO and BioPortal cannot make mappings more accessible, because the metadata required to do so simply does not exist. In order to gradually improve our mappings and make them FAIRer, we need to be able to share, review, fix and maintain our mappings in much the same way as our ontologies themselves - using standard formats and rich metadata. FAIRifying data is an effort that aims to supply practical solutions for the use of the FAIR guiding principles throughout the research data life cycle. It recommends technologies that support semantic interoperability in a sustainable way, and practices that support FAIRness. The FAIRSemantics effort is currently discussing how to incorporate semantic mappings, and we reached out to them to consider SSSOM for this purpose.","title":"Challenges for exchange and use of mappings"},{"location":"introduction/#background-about-mappings","text":"A mapping can be defined as a triple s, p, o , where s is the subject of the mapping, p is the mapping predicate (or relation) and o is the object. There are many different mapping predicates used in practice, but they are not always standardized. The Semantic Web community uses a number of standard mapping predicates, such as owl:sameAs or owl:equivalentClass (logical mapping predicates) and skos:exactMatch or skos:broadMatch (terminological mapping predicates). We refer to mapping subjects and objects as \"terms\", which we will loosely define here as a set of symbols that define some entity in the real world. Usually, a term can be referred to by an identifier that uniquely identifies some entity in a certain context. For example, UBERON:0002101 is the identifier for a term that refers to the anatomical entity \"limb\". Putting it all together, the mapping describes a correspondence in which the term with the id UBERON:0002101 constitutes a terminological exact match to the term with the identifier FMA:24875. Mappings between data model elements, databases and other representations can be described similarly. Note that we generally use the terms \"matching\" and \"mapping\" interchangeably. Occasionally we refer to \"matching\" as the process to determine a mapping candidate (lexical matching, logical matching etc), a \"match\" as the result of the matching process, and a \"mapping\" the process and result of the process that deduces a true correspondence from a (set of) matches. For SSSOM, this distinction is a bit academic, but useful to keep in mind when talking about the interplay of automated approaches (which result in \"matches\") and manual approaches (which typically result in the final mappings). Ontology alignment is the task of determining corresponding terms shared between two or more ontologies, i.e. mappings. Sometimes \"ontology alignment\" refers to the output of the alignment process. Mapping sets can be \"partial\", i.e. covering only a subset of terms in the subject or object source (ontology, database, etc), \"derived\", i.e. one mapping set can be obtained from one or more others (for example, a XAO to MeSH mapping can be obtained by combining a XAO-Uberon mapping with a Uberon-MeSH mapping), or \"complete\". We refer to a \"complete\" mapping, i.e. the set of all correspondences between two resources (ontologies, databases), as an \"alignment\". The identifier of a term has three parts: a namespace that describes in which database or ontology the identifier is defined, a local identifier that unambiguously identifies an entity within that namespace, and optionally a separator that can be used to separate the namespace from the local identifier to make them easier to process. UBERON:0002101, for example, comprises the namespace \"UBERON\", the separator \":\" and the local identifier \"0002101\". There are various syntaxes for denoting identifiers; the UBERON:0002101 notation is called compact URI (CURIE) syntax, which is used widely across the database and ontology worlds. The problem with this syntax is that UBERON may not be a globally unique prefix, so files making use of such CURIEs must come with a prefix map that ensures that UBERON (in the CURIE syntax referred to as \"prefix\") is globally unique by mapping it to the persistent International Resource Identifier (IRI) prefix http://purl.obolibrary.org/obo/UBERON_. This may not be a major problem for a fairly unique prefix such as \"UBERON\", but it is for prefixes such as \"ICD\", which can refer to many different name spaces, such as ICD9, ICD10, ICD11 and more, all of which correspond to entirely different terminologies. Approaches to mapping . There are many different techniques that can be employed to generate term mappings. Automated matching techniques include ontology matching, entity resolution (the task of determining whether two database records correspond to the same entity), semantic similarity or automated reasoning. Recent approaches based on machine learning and graph embeddings show promise for working with messier inputs. No single tool will perform equally well on all inputs: some of the semantics-aware tools like LogMap and Agreement Maker Light (AML) can exploit the ontology structure to determine high-quality matches but will have problems with the large-scale data linking tasks required by modern big-data applications. Purely automated approaches to mapping are often insufficient for real world use cases that require a high degree of accuracy, such as medical diagnostics. They often need to be refined by hand or using sophisticated mapping reconciliation approaches independent of the actual matching. Determining a mapping is often complex, due to the high degree of terminological variability: different communities may use very different names for the same real world entities . For example, for example, the condition referred to in the Human Phenotype Ontology (HPO) as \"Hyperchloriduria\" is called \"increased urine chloride ion level\" in the Mammalian Phenotype Ontology (MP), which is used by the model organism community. Mapping rules - capturing the conditions under which a match is established . Mapping rules define the conditions under which we determine a match between two terms. For example, the condition for a mapping rule could be \"if the subject label and object label match exactly\". In practice, mapping rules can be very simple (e.g., \"exact match of term labels\"), more complex (\"exact match between label of subject and exact synonym of object after they are pre-processed using stemming\"), or even more exacting (\"complex match determined by a human curator that carefully reviewed the descriptions and definitions of both terms and concluded they mean the same thing\"). One problem for both manually curated mappings and automated approaches is that these mapping rules are often hidden deeply in the code or are not documented at all. Exposing mapping rules along with confidence scores would be very valuable for reviewing mappings and explaining them to users. Our reference implementation for SSSOM is rdf-matcher, which makes these mapping rules explicit, but other approaches such as OMOP2OBO also capture mapping rules as part of the mapping metadata.","title":"Background about mappings"},{"location":"issue_tracker/","text":"issue_tracker URI : sssom:issue_tracker Applicable to : MappingSet , MappingRegistry Description A URL location of the issue tracker for this entity. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: https://github.com/mapping-commons/mh_mapping_initiative/issues Example value : https://github.com/mapping-commons/mh_mapping_initiative/issues Description : (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv Schema developer documentation LinkML source name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker domain_of: - mapping set - mapping registry range: uri","title":"issue_tracker"},{"location":"issue_tracker/#issue_tracker","text":"URI : sssom:issue_tracker Applicable to : MappingSet , MappingRegistry Description A URL location of the issue tracker for this entity.","title":"issue_tracker"},{"location":"issue_tracker/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"issue_tracker/#examples","text":"Example: https://github.com/mapping-commons/mh_mapping_initiative/issues Example value : https://github.com/mapping-commons/mh_mapping_initiative/issues Description : (A URL resolving to the issue tracker of the Mouse-Human mapping initiative)","title":"Examples"},{"location":"issue_tracker/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv","title":"See Also"},{"location":"issue_tracker/#schema-developer-documentation","text":"LinkML source name: issue_tracker description: A URL location of the issue tracker for this entity. examples: - value: https://github.com/mapping-commons/mh_mapping_initiative/issues description: (A URL resolving to the issue tracker of the Mouse-Human mapping initiative) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker.sssom.tsv rank: 1000 alias: issue_tracker domain_of: - mapping set - mapping registry range: uri","title":"Schema developer documentation"},{"location":"issue_tracker_item/","text":"issue_tracker_item URI : sssom:issue_tracker_item Applicable to : Mapping Description The issue tracker item discussing this mapping. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: SSSOM_GITHUB_ISSUE:166 Example value : SSSOM_GITHUB_ISSUE:166 Description : (A URL resolving to an issue discussing a new SSSOM element request) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv Schema developer documentation LinkML source name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item domain_of: - mapping range: EntityReference","title":"issue_tracker_item"},{"location":"issue_tracker_item/#issue_tracker_item","text":"URI : sssom:issue_tracker_item Applicable to : Mapping Description The issue tracker item discussing this mapping.","title":"issue_tracker_item"},{"location":"issue_tracker_item/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"issue_tracker_item/#examples","text":"Example: SSSOM_GITHUB_ISSUE:166 Example value : SSSOM_GITHUB_ISSUE:166 Description : (A URL resolving to an issue discussing a new SSSOM element request)","title":"Examples"},{"location":"issue_tracker_item/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/78 https://github.com/mapping-commons/sssom/pull/259 https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv","title":"See Also"},{"location":"issue_tracker_item/#schema-developer-documentation","text":"LinkML source name: issue_tracker_item description: The issue tracker item discussing this mapping. examples: - value: SSSOM_GITHUB_ISSUE:166 description: (A URL resolving to an issue discussing a new SSSOM element request) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/78 - https://github.com/mapping-commons/sssom/pull/259 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/issue_tracker_item.sssom.tsv rank: 1000 alias: issue_tracker_item domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"last_updated/","text":"last_updated URI : sssom:last_updated Applicable to : MappingSetReference Description The date this reference was last updated. Properties Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated domain_of: - mapping set reference range: date","title":"last_updated"},{"location":"last_updated/#last_updated","text":"URI : sssom:last_updated Applicable to : MappingSetReference Description The date this reference was last updated.","title":"last_updated"},{"location":"last_updated/#properties","text":"Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"last_updated/#schema-developer-documentation","text":"LinkML source name: last_updated description: The date this reference was last updated. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: last_updated domain_of: - mapping set reference range: date","title":"Schema developer documentation"},{"location":"license/","text":"license URI : dcterms:license Applicable to : MappingSet , Mapping Description A url to the license of the mapping. In absence of a license we assume no license. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license domain_of: - mapping set - mapping range: uri","title":"license"},{"location":"license/#license","text":"URI : dcterms:license Applicable to : MappingSet , Mapping Description A url to the license of the mapping. In absence of a license we assume no license.","title":"license"},{"location":"license/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"license/#schema-developer-documentation","text":"LinkML source name: license description: A url to the license of the mapping. In absence of a license we assume no license. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:license alias: license domain_of: - mapping set - mapping range: uri","title":"Schema developer documentation"},{"location":"linkml-index/","text":"SSSOM Official Data Model Documentation Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) Schema PURL : https://w3id.org/sssom/schema/ Introduction While the SSSOM model is quite general and mappings can be shared in different formats, the most common format is the SSSOM/TSV format . Here is a tabular representation of some example mappings for illustration purposes: subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only 'whole' apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1.0 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to 'raw' Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1.0 In the TSV format, mapping set metadata is included at the top of the file, before the mappings themselves, in yaml-like key-value pairs: Example header (YAML format) curie_map: FOODON: http://purl.obolibrary.org/obo/FOODON_ KF_FOOD: https://kewl-foodie.inc/food/ orcid: https://orcid.org/ mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv mapping_set_description: > Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. license: https://creativecommons.org/licenses/by/4.0/ mapping_date: 2022-05-02 See here for concrete examples. Mapping metadata elements Mapping : Represents an individual mapping between a pair of entities Column/Field Description Required subject_id The ID of the subject of the mapping. Optional subject_label The label of subject of the mapping Recommended subject_category The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Optional predicate_id The ID of the predicate or relation that relates the subject and object of this match. Required predicate_label The label of the predicate/relation of the mapping Optional predicate_modifier A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion Optional object_id The ID of the object of the mapping. Optional object_label The label of object of the mapping Recommended object_category The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Optional mapping_justification A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. Required author_id Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional author_label A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. Optional reviewer_id Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional reviewer_label A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. Optional creator_id Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional creator_label A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. Optional license A url to the license of the mapping. In absence of a license we assume no license. Optional subject_type The type of entity that is being mapped. Optional subject_source URI of vocabulary or identifier source for the subject. Optional subject_source_version Version IRI or version string of the source of the subject term. Optional object_type The type of entity that is being mapped. Optional object_source URI of vocabulary or identifier source for the object. Optional object_source_version Version IRI or version string of the source of the object term. Optional mapping_provider 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. Optional mapping_source The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. Optional mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. Optional mapping_tool 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. Optional mapping_tool_version Version string that denotes the version of the mapping tool used. Optional mapping_date The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. Optional publication_date The date the mapping was published. This is different from the date the mapping was asserted. Optional confidence A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. Optional curation_rule A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. Optional curation_rule_text A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. Optional subject_match_field A list of properties (term annotations on the subject) that was used for the match. Optional object_match_field A list of properties (term annotations on the object) that was used for the match. Optional match_string 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. Optional subject_preprocessing Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional object_preprocessing Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional similarity_score A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. Optional similarity_measure The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. Optional see_also A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment Optional issue_tracker_item The issue tracker item discussing this mapping. Optional other Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. Optional comment Free text field containing either curator notes or text generated by tool providing additional informative information. Optional Mappings set metadata elements MappingSet : Represents a set of mappings Column/Field Description Required curie_map A dictionary that contains prefixes as keys and their URI expansions as values. Optional mappings Contains a list of mapping objects Recommended mapping_set_id A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. Required mapping_set_version A version string for the mapping. Optional mapping_set_source A mapping set or set of mapping set that was used to derive the mapping set. Optional mapping_set_title The display name of a mapping set. Optional mapping_set_description A description of the mapping set. Optional creator_id Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional creator_label A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. Optional license A url to the license of the mapping. In absence of a license we assume no license. Optional subject_type The type of entity that is being mapped. Optional subject_source URI of vocabulary or identifier source for the subject. Optional subject_source_version Version IRI or version string of the source of the subject term. Optional object_type The type of entity that is being mapped. Optional object_source URI of vocabulary or identifier source for the object. Optional object_source_version Version IRI or version string of the source of the object term. Optional mapping_provider 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. Optional mapping_tool 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. Optional mapping_tool_version Version string that denotes the version of the mapping tool used. Optional mapping_date The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. Optional publication_date The date the mapping was published. This is different from the date the mapping was asserted. Optional subject_match_field A list of properties (term annotations on the subject) that was used for the match. Optional object_match_field A list of properties (term annotations on the object) that was used for the match. Optional subject_preprocessing Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional object_preprocessing Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional see_also A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment Optional issue_tracker A URL location of the issue tracker for this entity. Optional other Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. Optional comment Free text field containing either curator notes or text generated by tool providing additional informative information. Optional extension_definitions A list that defines the extension slots used in the mapping set. Optional Index (all classes, enums and elements) Columns/Slots/Fields Slot Description author_id Identifies the persons or groups responsible for asserting the mappings author_label A string identifying the author of this mapping comment Free text field containing either curator notes or text generated by tool pro... confidence A score between 0 and 1 to denote the confidence or probability that the matc... creator_id Identifies the persons or groups responsible for the creation of the mapping creator_label A string identifying the creator of this mapping curation_rule A curation rule is a (potentially) complex condition executed by an agent tha... curation_rule_text A curation rule is a (potentially) complex condition executed by an agent tha... curie_map A dictionary that contains prefixes as keys and their URI expansions as value... documentation A URL to the documentation of this mapping commons extension_definitions A list that defines the extension slots used in the mapping set homepage A URL to a homepage of this mapping commons imports A list of registries that should be imported into this one issue_tracker A URL location of the issue tracker for this entity issue_tracker_item The issue tracker item discussing this mapping last_updated The date this reference was last updated license A url to the license of the mapping local_name The local name assigned to file that corresponds to the downloaded mapping se... mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t... mapping_date The date the mapping was asserted mapping_justification A mapping justification is an action (or the written representation of that a... mapping_provider URL pointing to the source that provided the mapping, for example an ontology... mapping_registry_description The description of a mapping registry mapping_registry_id The unique identifier of a mapping registry mapping_registry_title The title of a mapping registry mapping_set_description A description of the mapping set mapping_set_group Set by the owners of the mapping registry mapping_set_id A globally unique identifier for the mapping set (not each individual mapping... mapping_set_references A list of mapping set references mapping_set_source A mapping set or set of mapping set that was used to derive the mapping set mapping_set_title The display name of a mapping set mapping_set_version A version string for the mapping mapping_source The mapping set this mapping was originally defined in mapping_tool A reference to the tool or algorithm that was used to generate the mapping mapping_tool_version Version string that denotes the version of the mapping tool used mappings Contains a list of mapping objects match_string String that is shared by subj/obj mirror_from A URL location from which to obtain a resource, such as a mapping set object_category The conceptual category to which the subject belongs to object_id The ID of the object of the mapping object_label The label of object of the mapping object_match_field A list of properties (term annotations on the object) that was used for the m... object_preprocessing Method of preprocessing applied to the fields of the object object_source URI of vocabulary or identifier source for the object object_source_version Version IRI or version string of the source of the object term object_type The type of entity that is being mapped other Pipe separated list of key value pairs for properties not part of the SSSOM s... predicate_id The ID of the predicate or relation that relates the subject and object of th... predicate_label The label of the predicate/relation of the mapping predicate_modifier A modifier for negating the predicate predicate_type The type of entity that is being mapped prefix_name prefix_url propagated Indicates whether a slot can be propagated from a mapping down to individual ... property The property associated with the extension slot publication_date The date the mapping was published registry_confidence This value is set by the registry that indexes the mapping set reviewer_id Identifies the persons or groups that reviewed and confirmed the mapping reviewer_label A string identifying the reviewer of this mapping see_also A URL specific for the mapping instance similarity_measure The measure used for computing a similarity score similarity_score A score between 0 and 1 to denote the similarity between two entities, where ... slot_name The name of the extension slot subject_category The conceptual category to which the subject belongs to subject_id The ID of the subject of the mapping subject_label The label of subject of the mapping subject_match_field A list of properties (term annotations on the subject) that was used for the ... subject_preprocessing Method of preprocessing applied to the fields of the subject subject_source URI of vocabulary or identifier source for the subject subject_source_version Version IRI or version string of the source of the subject term subject_type The type of entity that is being mapped type_hint Expected type of the values of the extension slot Classes Class Description ExtensionDefinition A definition of an extension (non-standard) slot. Mapping Represents an individual mapping between a pair of entities MappingRegistry A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. MappingSet Represents a set of mappings MappingSetReference A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. NoTermFound sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. Prefix None Propagatable Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class. Enumerations Enumeration Description EntityTypeEnum MappingCardinalityEnum PredicateModifierEnum Types Type Description Boolean A binary (true or false) value Curie a compact URI Date a date (year, month and day) in an idealized calendar DateOrDatetime Either a date or a datetime Datetime The combination of a date and time Decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... Double A real number that conforms to the xsd:double specification EntityReference A reference to an entity involved in the mapping Float A real number that conforms to the xsd:float specification Integer An integer Jsonpath A string encoding a JSON Path Jsonpointer A string encoding a JSON Pointer Ncname Prefix part of CURIE Nodeidentifier A URI, CURIE or BNODE that represents a node in a model Objectidentifier A URI or CURIE that represents an object in the model Sparqlpath A string encoding a SPARQL Property Path String A character string Time A time object represents a (local) time of day, independent of any particular... Uri a complete URI Uriorcurie a URI or a CURIE","title":"LinkML documentation"},{"location":"linkml-index/#sssom-official-data-model-documentation","text":"Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) Schema PURL : https://w3id.org/sssom/schema/","title":"SSSOM Official Data Model Documentation"},{"location":"linkml-index/#introduction","text":"While the SSSOM model is quite general and mappings can be shared in different formats, the most common format is the SSSOM/TSV format . Here is a tabular representation of some example mappings for illustration purposes: subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only 'whole' apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1.0 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to 'raw' Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1.0 In the TSV format, mapping set metadata is included at the top of the file, before the mappings themselves, in yaml-like key-value pairs: Example header (YAML format) curie_map: FOODON: http://purl.obolibrary.org/obo/FOODON_ KF_FOOD: https://kewl-foodie.inc/food/ orcid: https://orcid.org/ mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv mapping_set_description: > Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. license: https://creativecommons.org/licenses/by/4.0/ mapping_date: 2022-05-02 See here for concrete examples.","title":"Introduction"},{"location":"linkml-index/#mapping-metadata-elements","text":"Mapping : Represents an individual mapping between a pair of entities Column/Field Description Required subject_id The ID of the subject of the mapping. Optional subject_label The label of subject of the mapping Recommended subject_category The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Optional predicate_id The ID of the predicate or relation that relates the subject and object of this match. Required predicate_label The label of the predicate/relation of the mapping Optional predicate_modifier A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion Optional object_id The ID of the object of the mapping. Optional object_label The label of object of the mapping Recommended object_category The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Optional mapping_justification A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. Required author_id Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional author_label A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. Optional reviewer_id Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional reviewer_label A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. Optional creator_id Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional creator_label A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. Optional license A url to the license of the mapping. In absence of a license we assume no license. Optional subject_type The type of entity that is being mapped. Optional subject_source URI of vocabulary or identifier source for the subject. Optional subject_source_version Version IRI or version string of the source of the subject term. Optional object_type The type of entity that is being mapped. Optional object_source URI of vocabulary or identifier source for the object. Optional object_source_version Version IRI or version string of the source of the object term. Optional mapping_provider 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. Optional mapping_source The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. Optional mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. Optional mapping_tool 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. Optional mapping_tool_version Version string that denotes the version of the mapping tool used. Optional mapping_date The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. Optional publication_date The date the mapping was published. This is different from the date the mapping was asserted. Optional confidence A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. Optional curation_rule A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule is captured as a resource rather than a string, which enables higher levels of transparency and sharing across mapping sets. The URI representation of the curation rule is expected to be a resolvable identifier which provides details about the nature of the curation rule. Optional curation_rule_text A curation rule is a (potentially) complex condition executed by an agent that led to the establishment of a mapping. Curation rules often involve complex domain-specific considerations, which are hard to capture in an automated fashion. The curation rule should be captured as a resource (entity reference) rather than a string (see curation_rule element), which enables higher levels of transparency and sharing across mapping sets. The textual representation of curation rule is intended to be used in cases where (1) the creation of a resource is not practical from the perspective of the mapping_provider and (2) as an additional piece of metadata to augment the curation_rule element with a human readable text. Optional subject_match_field A list of properties (term annotations on the subject) that was used for the match. Optional object_match_field A list of properties (term annotations on the object) that was used for the match. Optional match_string 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. Optional subject_preprocessing Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional object_preprocessing Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional similarity_score A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. Optional similarity_measure The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. Optional see_also A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment Optional issue_tracker_item The issue tracker item discussing this mapping. Optional other Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. Optional comment Free text field containing either curator notes or text generated by tool providing additional informative information. Optional","title":"Mapping metadata elements"},{"location":"linkml-index/#mappings-set-metadata-elements","text":"MappingSet : Represents a set of mappings Column/Field Description Required curie_map A dictionary that contains prefixes as keys and their URI expansions as values. Optional mappings Contains a list of mapping objects Recommended mapping_set_id A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. Required mapping_set_version A version string for the mapping. Optional mapping_set_source A mapping set or set of mapping set that was used to derive the mapping set. Optional mapping_set_title The display name of a mapping set. Optional mapping_set_description A description of the mapping set. Optional creator_id Identifies the persons or groups responsible for the creation of the mapping. The creator is the agent that put the mapping in its published form, which may be different from the author, which is a person that was actively involved in the assertion of the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Optional creator_label A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. Optional license A url to the license of the mapping. In absence of a license we assume no license. Optional subject_type The type of entity that is being mapped. Optional subject_source URI of vocabulary or identifier source for the subject. Optional subject_source_version Version IRI or version string of the source of the subject term. Optional object_type The type of entity that is being mapped. Optional object_source URI of vocabulary or identifier source for the object. Optional object_source_version Version IRI or version string of the source of the object term. Optional mapping_provider 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. Optional mapping_tool 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. Optional mapping_tool_version Version string that denotes the version of the mapping tool used. Optional mapping_date The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. Optional publication_date The date the mapping was published. This is different from the date the mapping was asserted. Optional subject_match_field A list of properties (term annotations on the subject) that was used for the match. Optional object_match_field A list of properties (term annotations on the object) that was used for the match. Optional subject_preprocessing Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional object_preprocessing Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Optional see_also A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment Optional issue_tracker A URL location of the issue tracker for this entity. Optional other Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. Optional comment Free text field containing either curator notes or text generated by tool providing additional informative information. Optional extension_definitions A list that defines the extension slots used in the mapping set. Optional","title":"Mappings set metadata elements"},{"location":"linkml-index/#index-all-classes-enums-and-elements","text":"","title":"Index (all classes, enums and elements)"},{"location":"linkml-index/#columnsslotsfields","text":"Slot Description author_id Identifies the persons or groups responsible for asserting the mappings author_label A string identifying the author of this mapping comment Free text field containing either curator notes or text generated by tool pro... confidence A score between 0 and 1 to denote the confidence or probability that the matc... creator_id Identifies the persons or groups responsible for the creation of the mapping creator_label A string identifying the creator of this mapping curation_rule A curation rule is a (potentially) complex condition executed by an agent tha... curation_rule_text A curation rule is a (potentially) complex condition executed by an agent tha... curie_map A dictionary that contains prefixes as keys and their URI expansions as value... documentation A URL to the documentation of this mapping commons extension_definitions A list that defines the extension slots used in the mapping set homepage A URL to a homepage of this mapping commons imports A list of registries that should be imported into this one issue_tracker A URL location of the issue tracker for this entity issue_tracker_item The issue tracker item discussing this mapping last_updated The date this reference was last updated license A url to the license of the mapping local_name The local name assigned to file that corresponds to the downloaded mapping se... mapping_cardinality A string indicating whether this mapping is from a 1:1 (the subject_id maps t... mapping_date The date the mapping was asserted mapping_justification A mapping justification is an action (or the written representation of that a... mapping_provider URL pointing to the source that provided the mapping, for example an ontology... mapping_registry_description The description of a mapping registry mapping_registry_id The unique identifier of a mapping registry mapping_registry_title The title of a mapping registry mapping_set_description A description of the mapping set mapping_set_group Set by the owners of the mapping registry mapping_set_id A globally unique identifier for the mapping set (not each individual mapping... mapping_set_references A list of mapping set references mapping_set_source A mapping set or set of mapping set that was used to derive the mapping set mapping_set_title The display name of a mapping set mapping_set_version A version string for the mapping mapping_source The mapping set this mapping was originally defined in mapping_tool A reference to the tool or algorithm that was used to generate the mapping mapping_tool_version Version string that denotes the version of the mapping tool used mappings Contains a list of mapping objects match_string String that is shared by subj/obj mirror_from A URL location from which to obtain a resource, such as a mapping set object_category The conceptual category to which the subject belongs to object_id The ID of the object of the mapping object_label The label of object of the mapping object_match_field A list of properties (term annotations on the object) that was used for the m... object_preprocessing Method of preprocessing applied to the fields of the object object_source URI of vocabulary or identifier source for the object object_source_version Version IRI or version string of the source of the object term object_type The type of entity that is being mapped other Pipe separated list of key value pairs for properties not part of the SSSOM s... predicate_id The ID of the predicate or relation that relates the subject and object of th... predicate_label The label of the predicate/relation of the mapping predicate_modifier A modifier for negating the predicate predicate_type The type of entity that is being mapped prefix_name prefix_url propagated Indicates whether a slot can be propagated from a mapping down to individual ... property The property associated with the extension slot publication_date The date the mapping was published registry_confidence This value is set by the registry that indexes the mapping set reviewer_id Identifies the persons or groups that reviewed and confirmed the mapping reviewer_label A string identifying the reviewer of this mapping see_also A URL specific for the mapping instance similarity_measure The measure used for computing a similarity score similarity_score A score between 0 and 1 to denote the similarity between two entities, where ... slot_name The name of the extension slot subject_category The conceptual category to which the subject belongs to subject_id The ID of the subject of the mapping subject_label The label of subject of the mapping subject_match_field A list of properties (term annotations on the subject) that was used for the ... subject_preprocessing Method of preprocessing applied to the fields of the subject subject_source URI of vocabulary or identifier source for the subject subject_source_version Version IRI or version string of the source of the subject term subject_type The type of entity that is being mapped type_hint Expected type of the values of the extension slot","title":"Columns/Slots/Fields"},{"location":"linkml-index/#classes","text":"Class Description ExtensionDefinition A definition of an extension (non-standard) slot. Mapping Represents an individual mapping between a pair of entities MappingRegistry A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries. MappingSet Represents a set of mappings MappingSetReference A reference to a mapping set. It allows to augment mapping set metadata from the perspective of the registry, for example, providing confidence, or a local filename or a grouping. NoTermFound sssom:NoTermFound can be used in place of a subject_id or object_id when the corresponding entity could not be found. It SHOULD be used in conjuction with a corresponding subject_source or object_source to signify where the term was not found. Prefix None Propagatable Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class.","title":"Classes"},{"location":"linkml-index/#enumerations","text":"Enumeration Description EntityTypeEnum MappingCardinalityEnum PredicateModifierEnum","title":"Enumerations"},{"location":"linkml-index/#types","text":"Type Description Boolean A binary (true or false) value Curie a compact URI Date a date (year, month and day) in an idealized calendar DateOrDatetime Either a date or a datetime Datetime The combination of a date and time Decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... Double A real number that conforms to the xsd:double specification EntityReference A reference to an entity involved in the mapping Float A real number that conforms to the xsd:float specification Integer An integer Jsonpath A string encoding a JSON Path Jsonpointer A string encoding a JSON Pointer Ncname Prefix part of CURIE Nodeidentifier A URI, CURIE or BNODE that represents a node in a model Objectidentifier A URI or CURIE that represents an object in the model Sparqlpath A string encoding a SPARQL Property Path String A character string Time A time object represents a (local) time of day, independent of any particular... Uri a complete URI Uriorcurie a URI or a CURIE","title":"Types"},{"location":"local_name/","text":"local_name URI : sssom:local_name Applicable to : MappingSetReference Description The local name assigned to file that corresponds to the downloaded mapping set. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name domain_of: - mapping set reference range: string","title":"local_name"},{"location":"local_name/#local_name","text":"URI : sssom:local_name Applicable to : MappingSetReference Description The local name assigned to file that corresponds to the downloaded mapping set.","title":"local_name"},{"location":"local_name/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"local_name/#schema-developer-documentation","text":"LinkML source name: local_name description: The local name assigned to file that corresponds to the downloaded mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: local_name domain_of: - mapping set reference range: string","title":"Schema developer documentation"},{"location":"mapping-commons/","text":"How to set up a Mapping Commons A mapping commons is an open, collaborative space for managing and reconciling mappings. The goal is to collect mappings from a variety of sources into a mapping set registry , standardise them into a common representation, curate some basic metrics such as \"confidence\" (how much does the community managing the commons trust a specific mapping source?) and provenance (where exactly did this mapping come from before it was integrated). There is no agreed upon standard for mapping registries yet. SSSOM itself provides a lighweight metadata model for mapping registries which is, as of August 2023, under active development. Typical setup of a mapping commons We recommend to base your mapping commons on a combination of GitHub (or GitLab) collaborative workflows (issues and discussions for the community, access management etc) and a git repository based on the Mapping Commons Cookiecutter Template for version control of the mappings. Using the template system above allows you to: make use of basic CI and quality control for your mappings, provides a standard way to document metadata about your mapping sets provides a basic ETL system based on gnu make (which you dont have to use, its just convenient) Provides a standardised registry format that can be re-used/imported by others. Examples of Mapping Commons are: https://github.com/mapping-commons/mh_mapping_initiative https://gitlab.c-path.org/c-pathontology/mapping-commons","title":"Set up a mapping registry/commons"},{"location":"mapping-commons/#how-to-set-up-a-mapping-commons","text":"A mapping commons is an open, collaborative space for managing and reconciling mappings. The goal is to collect mappings from a variety of sources into a mapping set registry , standardise them into a common representation, curate some basic metrics such as \"confidence\" (how much does the community managing the commons trust a specific mapping source?) and provenance (where exactly did this mapping come from before it was integrated). There is no agreed upon standard for mapping registries yet. SSSOM itself provides a lighweight metadata model for mapping registries which is, as of August 2023, under active development.","title":"How to set up a Mapping Commons"},{"location":"mapping-commons/#typical-setup-of-a-mapping-commons","text":"We recommend to base your mapping commons on a combination of GitHub (or GitLab) collaborative workflows (issues and discussions for the community, access management etc) and a git repository based on the Mapping Commons Cookiecutter Template for version control of the mappings. Using the template system above allows you to: make use of basic CI and quality control for your mappings, provides a standard way to document metadata about your mapping sets provides a basic ETL system based on gnu make (which you dont have to use, its just convenient) Provides a standardised registry format that can be re-used/imported by others. Examples of Mapping Commons are: https://github.com/mapping-commons/mh_mapping_initiative https://gitlab.c-path.org/c-pathontology/mapping-commons","title":"Typical setup of a mapping commons"},{"location":"mapping-justifications/","text":"Guide to using Mapping Justifications The goal of this document is to provide the user with a few pointers into the art of mapping justification construction. As of Summer 2023, the SSSOM justification system is still evolving, and will likely benefit from yoru input. Where informative metadata properties or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively. Table of contents lexical matching semantic similarity threshold-based matching manual mapping curation mapping review Other justifications background knowledge-based matching composite matching instance-based matching lexical similarity threshold-based matching logical reasoning mapping chaining-based matching mapping inversion-based matching semantic similarity threshold-based matching structural matching unspecified matching Lexical matching There are two kinds of lexical matching justifications we try to distinguish: semapv:LexicalMatching : The match is exact (potentially after pre-processing) semapv:LexicalSimilarityThresholdMatching : The match is fuzzy (for example, Levenshtein distance). Note: embedding similarity, even if constructed purely of a word embedding, is considered a form of semantic similarity. Level 1: Track the fact that the match was based on a lexical process Whenever a mapping was established by a lexical matching process, track at least that fact: mapping_justification : semapv:LexicalMatching . This indicates that the mapping was determined through some form of exact lexical matching. Level 2: Track the specific datamodel fields involved in the matching process Regardless of which specific lexical matching justification you are working on, it is often useful to document the source field of the values used to aquire the match. For example: subject_match_field : rdfs:label indicates that the value of the rdfs:label property on the subject entity was used to establish the match. object_match_field : skos:prefLabel indicates that the value of the skos:prefLabel property on the object entity was used to establish the match. match_string : somestring the exact string that was used to establish the match. This is especially useful if preprocessing methods are applied, see below (Level 3). Level 3: Pre-processing There are many pre-processing techniques for text in the NLP literature, such as lower-casing or lemmatisation. To judge the fidelity of a match, it is often useful to document the exact techniques used. subject_preprocessing : semapv:BlankNormalisation indicates that before determining the match, blank characters (spaces etc) where standardised in some way. There are plenty of preprocessing techniques already recorded in SEMAPV , including semapv:BlankNormalisation, semapv:CaseNormalization, semapv:DiacriticsSuppression, semapv:DigitSuppression, semapv:Lemmatization, semapv:LinkStripping, semapv:PunctuationElemination, semapv:RegexRemoval, semapv:RegexReplacement, semapv:Stemming, semapv:StopWordRemoval, semapv:TermExtraction, semapv:Tokenization, but feel free to add more. However, there is one aspect that makes this process quite difficult to implement: Most matchers will blindly apply a set of normalisation techniques prior to processing, but not document which exact technique had an effect . It is obviously less useful to say: we applied all these 20 techniques, if only one of them was actually effectual (i.e. caused the string to change). If there is no (easy) way to keep track of which technique was effectual for any given match, we believe that it is still better to document all techniques, but doing so on mapping set level rather than for each individual mappings (to keep the mapping sets smaller). Semantic similarity threshold-based matching The basic idea behind \"Semantic similarity threshold-based matching\" is that a process that is \"semantics aware\" (in the loose sense, either by being cognisant about the graph structure, the logical structure, or a contextual textual knowledge such as an embedded Wikipedia article) enabled computing a score between the subject and object entity that to some degree reflects the \"similarity\" between the two entities. There are many examples of this: The (graph-)structure around the subject and object entities are projected into a common embedding space, and the similarity between the subject and object entities are expressed as cosine similarity between the two embeddings. The jaccard similarity between a set of properties of the subject and object entities is calculated. The Resnik score is calculated between the subject and object entities. Important note on applicability of SSSOM for semantic similarity profiles : SSSOM is not used for documenting semantic similarity profiles, i.e. cross-tables where some set of terms are compared with another set of terms and the semantic similarity is recorded as a score. SSSOM is used to document mappings, and only if a mapping decision is influenced by a semantic similarity based approach, especially in conjunction with as specific thresshold, SSSOM is applicable. For pure semantic similarity tables use OAK Semantic Similarity . Semantic vs lexical similarity? : Semantic similarity is different from lexical similarity intuitively because the context (the graph structure, the background information) is taken into account and provides an (often crude) model of the actual entity, rather than of the word describing it. However, the distinctions can become a bit hazy. Imagine learning a graph embedding on a graph without edges, or a word embedding purely on a single label - there is definitely a grey zone where lexical similarity finishes and semantic similarity begins. In practice though, it should be mostly clear. Level 1: Documenting semantic similarity matches The suggested metadata for semantic similarity threshold-based matching approach is: semantic_similarity_measure semantic_similarity_score ((authors note: Maybe we need a value for similarity threshold ?)) Manual mapping curation semapv:ManualMappingCuration is a process conducted by a (usually human) agent to determine a mapping by virtue of domain expertise. The task usually involves the agent determining, for a given subject_id , a suitable obect_id in the object_source . Level 1: Documenting manual mapping curation The suggested minimal metadata for manual mapping curation is: author_id : Documenting, using a unique identifier such as an ORCID, the identity of the author performing the expert curation. comment : When no formal curation_rule is provided (see below), it is recommended to provide a short comment with the mapping justification, especially if there is some uncertainty or ambiguity about the mapping decision. Level 2: Documenting the confidence of expert curation confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717) is correct with 90% confidence. In manual curation, confidence expresses the domain expertise degree of conviction that the asserted mapping holds true. While manual mapping curation is still considered a gold standard, in practice human agents have (a) varying levels of expertise on the subject domain, (b) varying levels of understanding of the intuitions behind \"semantic spaces\" and associated concepts and (c) varying levels of metadata associated with a concept to be able to determine a match (definitions, labels, papers, synonyms, etc). Documenting confidence can be very useful both to increase the transparency of data science pipelines that involve entity mappings, and as a means to increase curation speed: rather than trying to achieve 100% confidence for a mapping, which can be extremely time-consuming, it is often better to first \"wave through\" a mapping with lower confidence to reach coverage, and later revisit low confidence mappings iteratively. Level 3: Documenting curation rules For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rule s can help increase consistency for manual curation, and transparency for downstream users. For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement. Curation rules are often very use case-specific and difficult to standardise. As of August 2023, SSSOM does not provide any standardised curation rules, but encourages the community to define them locally. Mapping review semapv:MappingReview is a process conducted by a (usually human) agent to determine the validity of a specific given mapping. It differs from semapv:ManualMappingCuration in that it does not involve looking for alternative mappings or indeed, necessarily determining if a mapping is the best possible mapping. It should be considered cheaper, less trustworthy evidence compared to semapv:ManualMappingCuration . There are two kinds of mapping reviews in SSSOM: Review as an independent justification: semapv:MappingReview is an independent process that determines the validity of a mapping. Review of an existing justification: Instead of evaluating an entire mapping, you can record the fact that someone has looked at a specific justification and deemed it acceptable. In this case, simply record the reviewers identify using the reviewer_id or reviewer_label fields.","title":"Mapping Justifications"},{"location":"mapping-justifications/#guide-to-using-mapping-justifications","text":"The goal of this document is to provide the user with a few pointers into the art of mapping justification construction. As of Summer 2023, the SSSOM justification system is still evolving, and will likely benefit from yoru input. Where informative metadata properties or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively.","title":"Guide to using Mapping Justifications"},{"location":"mapping-justifications/#table-of-contents","text":"lexical matching semantic similarity threshold-based matching manual mapping curation mapping review Other justifications background knowledge-based matching composite matching instance-based matching lexical similarity threshold-based matching logical reasoning mapping chaining-based matching mapping inversion-based matching semantic similarity threshold-based matching structural matching unspecified matching","title":"Table of contents"},{"location":"mapping-justifications/#lexical-matching","text":"There are two kinds of lexical matching justifications we try to distinguish: semapv:LexicalMatching : The match is exact (potentially after pre-processing) semapv:LexicalSimilarityThresholdMatching : The match is fuzzy (for example, Levenshtein distance). Note: embedding similarity, even if constructed purely of a word embedding, is considered a form of semantic similarity.","title":"Lexical matching"},{"location":"mapping-justifications/#level-1-track-the-fact-that-the-match-was-based-on-a-lexical-process","text":"Whenever a mapping was established by a lexical matching process, track at least that fact: mapping_justification : semapv:LexicalMatching . This indicates that the mapping was determined through some form of exact lexical matching.","title":"Level 1: Track the fact that the match was based on a lexical process"},{"location":"mapping-justifications/#level-2-track-the-specific-datamodel-fields-involved-in-the-matching-process","text":"Regardless of which specific lexical matching justification you are working on, it is often useful to document the source field of the values used to aquire the match. For example: subject_match_field : rdfs:label indicates that the value of the rdfs:label property on the subject entity was used to establish the match. object_match_field : skos:prefLabel indicates that the value of the skos:prefLabel property on the object entity was used to establish the match. match_string : somestring the exact string that was used to establish the match. This is especially useful if preprocessing methods are applied, see below (Level 3).","title":"Level 2: Track the specific datamodel fields involved in the matching process"},{"location":"mapping-justifications/#level-3-pre-processing","text":"There are many pre-processing techniques for text in the NLP literature, such as lower-casing or lemmatisation. To judge the fidelity of a match, it is often useful to document the exact techniques used. subject_preprocessing : semapv:BlankNormalisation indicates that before determining the match, blank characters (spaces etc) where standardised in some way. There are plenty of preprocessing techniques already recorded in SEMAPV , including semapv:BlankNormalisation, semapv:CaseNormalization, semapv:DiacriticsSuppression, semapv:DigitSuppression, semapv:Lemmatization, semapv:LinkStripping, semapv:PunctuationElemination, semapv:RegexRemoval, semapv:RegexReplacement, semapv:Stemming, semapv:StopWordRemoval, semapv:TermExtraction, semapv:Tokenization, but feel free to add more. However, there is one aspect that makes this process quite difficult to implement: Most matchers will blindly apply a set of normalisation techniques prior to processing, but not document which exact technique had an effect . It is obviously less useful to say: we applied all these 20 techniques, if only one of them was actually effectual (i.e. caused the string to change). If there is no (easy) way to keep track of which technique was effectual for any given match, we believe that it is still better to document all techniques, but doing so on mapping set level rather than for each individual mappings (to keep the mapping sets smaller).","title":"Level 3: Pre-processing"},{"location":"mapping-justifications/#semantic-similarity-threshold-based-matching","text":"The basic idea behind \"Semantic similarity threshold-based matching\" is that a process that is \"semantics aware\" (in the loose sense, either by being cognisant about the graph structure, the logical structure, or a contextual textual knowledge such as an embedded Wikipedia article) enabled computing a score between the subject and object entity that to some degree reflects the \"similarity\" between the two entities. There are many examples of this: The (graph-)structure around the subject and object entities are projected into a common embedding space, and the similarity between the subject and object entities are expressed as cosine similarity between the two embeddings. The jaccard similarity between a set of properties of the subject and object entities is calculated. The Resnik score is calculated between the subject and object entities. Important note on applicability of SSSOM for semantic similarity profiles : SSSOM is not used for documenting semantic similarity profiles, i.e. cross-tables where some set of terms are compared with another set of terms and the semantic similarity is recorded as a score. SSSOM is used to document mappings, and only if a mapping decision is influenced by a semantic similarity based approach, especially in conjunction with as specific thresshold, SSSOM is applicable. For pure semantic similarity tables use OAK Semantic Similarity . Semantic vs lexical similarity? : Semantic similarity is different from lexical similarity intuitively because the context (the graph structure, the background information) is taken into account and provides an (often crude) model of the actual entity, rather than of the word describing it. However, the distinctions can become a bit hazy. Imagine learning a graph embedding on a graph without edges, or a word embedding purely on a single label - there is definitely a grey zone where lexical similarity finishes and semantic similarity begins. In practice though, it should be mostly clear.","title":"Semantic similarity threshold-based matching"},{"location":"mapping-justifications/#level-1-documenting-semantic-similarity-matches","text":"The suggested metadata for semantic similarity threshold-based matching approach is: semantic_similarity_measure semantic_similarity_score ((authors note: Maybe we need a value for similarity threshold ?))","title":"Level 1: Documenting semantic similarity matches"},{"location":"mapping-justifications/#manual-mapping-curation","text":"semapv:ManualMappingCuration is a process conducted by a (usually human) agent to determine a mapping by virtue of domain expertise. The task usually involves the agent determining, for a given subject_id , a suitable obect_id in the object_source .","title":"Manual mapping curation"},{"location":"mapping-justifications/#level-1-documenting-manual-mapping-curation","text":"The suggested minimal metadata for manual mapping curation is: author_id : Documenting, using a unique identifier such as an ORCID, the identity of the author performing the expert curation. comment : When no formal curation_rule is provided (see below), it is recommended to provide a short comment with the mapping justification, especially if there is some uncertainty or ambiguity about the mapping decision.","title":"Level 1: Documenting manual mapping curation"},{"location":"mapping-justifications/#level-2-documenting-the-confidence-of-expert-curation","text":"confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717) is correct with 90% confidence. In manual curation, confidence expresses the domain expertise degree of conviction that the asserted mapping holds true. While manual mapping curation is still considered a gold standard, in practice human agents have (a) varying levels of expertise on the subject domain, (b) varying levels of understanding of the intuitions behind \"semantic spaces\" and associated concepts and (c) varying levels of metadata associated with a concept to be able to determine a match (definitions, labels, papers, synonyms, etc). Documenting confidence can be very useful both to increase the transparency of data science pipelines that involve entity mappings, and as a means to increase curation speed: rather than trying to achieve 100% confidence for a mapping, which can be extremely time-consuming, it is often better to first \"wave through\" a mapping with lower confidence to reach coverage, and later revisit low confidence mappings iteratively.","title":"Level 2: Documenting the confidence of expert curation"},{"location":"mapping-justifications/#level-3-documenting-curation-rules","text":"For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rule s can help increase consistency for manual curation, and transparency for downstream users. For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement. Curation rules are often very use case-specific and difficult to standardise. As of August 2023, SSSOM does not provide any standardised curation rules, but encourages the community to define them locally.","title":"Level 3: Documenting curation rules"},{"location":"mapping-justifications/#mapping-review","text":"semapv:MappingReview is a process conducted by a (usually human) agent to determine the validity of a specific given mapping. It differs from semapv:ManualMappingCuration in that it does not involve looking for alternative mappings or indeed, necessarily determining if a mapping is the best possible mapping. It should be considered cheaper, less trustworthy evidence compared to semapv:ManualMappingCuration . There are two kinds of mapping reviews in SSSOM: Review as an independent justification: semapv:MappingReview is an independent process that determines the validity of a mapping. Review of an existing justification: Instead of evaluating an entire mapping, you can record the fact that someone has looked at a specific justification and deemed it acceptable. In this case, simply record the reviewers identify using the reviewer_id or reviewer_label fields.","title":"Mapping review"},{"location":"mapping-predicates/","text":"How to pick the right mapping predicates A mapping predicate such as skos:exactMatch specifies the semantics of the mapping relation - in other words, it defines how a computer (and human!) should interpret the mapping when it is being used. For example, a computer program may be allowed to merge nodes in a knowledge graph only when they are skos:exactMatch , but not when they are, say, skos:closeMatch . Picking the right predicate to specify the meaning of your mapping is often a difficult process. The following guide should help you to understand the most widely used mapping predicates and when they are appropriate. Table of content The three primary concerns for selecting a mapping predicate The 3 step process for selecting an appropriate mapping predicate Frequently asked questions about mapping predicates Glossary subject : the entity that is being mapped object : the entity that the subject is mapped to predicate : the semantic mapping relationship used The three primary concerns for selecting a mapping predicate There are at least three things you need to decide before selecting an appropriate mapping predicate: Precision Acceptable degree of noise Intended use case What is the precision of the mapping? As a curator, you should try to investigate the intended meaning of both the subject and the object. This task usually involves trying to find out as much as possible about the mapped identifiers: What is their human readable definition? Are there any logical axioms that could help with understanding the intended meaning? Sometimes, this even involves asking the respective stewards of the database or ontology for clarification. Important: The key here is \"intended meaning\". For example, when you see FOODON:Apple (FOODON is an ontology), you do not try to figure out what an apple is , but what thing in the world (in your conceptual model of the world) the FOODON developers intended the FOODON:Apple identifier to refer to . This might be an apple that you can eat, or a cultivar ! The precision is simply: is the mapping exact , close , broad , narrow or related ? Here is a basic guide about how to think of each: exact : The two terms are intended to refer to the same thing. For example, both the subject and the object identifiers refer to the concept of Gala cultivar . close : The two terms are intended to refer to roughly the same thing, but not quite. This is a hazy category and should be avoided in practice, because when taken too literally, most mappings could be interpreted as close mappings. This is not the point of creating mappings, if their intention is to be useful (see \"use case\" considerations later in this document). An example of a close mapping is one between the \"heart\" concept in a database of anatomical entities for biological research on chimpanzees and the \"human heart\" in an electronic health record for humans. broad : The object is conceptually broader than the subject. For example, \"human heart\" in an electronic health record refers to \"heart\" in a general anatomy ontology that covers all species, such as Uberon. Another example is \"Gala (cultivar)\" in one ontology or database to \"Apple (cultivar)\" in another: the Apple (cultivar) has a broader meaning then \"Gala (cultivar)\". For a good mapping, it is advisable that \"broad\" and \"narrow\" are applied a bit more strictly than is technically permitted by the SKOS specification: both the subject and the object should belong to the same category . For example, you should use broad (or narrow) only if both the subject and the object are \"cultivars\" (in the above example). narrow : The object is conceptually narrower than the subject. For example \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\". Think of it as the opposite of \"broad\". broad and narrow are so-called inverse categories: If \"Gala (cultivar)\" is a broad match to \"Apple (cultivar)\", then \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\"! One note of caution : narrow matches generally have less useful applications then broad ones. For example, if we want to group subject entities in a database under an ontology to make them queryable in a knowledge graph, only broad matches to the ontology can be retrieved. For example, if we map \"Gala (cultivar)\" in a database to \"Apple (cultivar)\" in an ontology, and we wish to write a semantic query to obtain all records that are about \"Apple (cultivar)\" according to the ontology, we obtain \"Gala (cultivar)\". This is not true the other way around: if the ontology term is more specific then the database term, it can't be used to group the database data. related : The subject refers to an analogous concept of a different category. For example \"Apple\" and \"Apple tree\" are considered related matches, but not exact matches, as \"Apple\" is of the \"fruit\" category, and \"Apple tree\" of the \"tree\" category. Other examples include: \"disease\" and \"phenotype\", \"chemical\" and \"chemical exposure\", \"car\" and \"car manufacturing process\". In general, related mappings should be reserved for \"direct analogues\". For example, we should not try to map to related and broad categories at the same time, like, for example, \"Gala (cultivar)\" to \"Apple tree\". This causes a huge amount of proliferation of very \"low value\" mappings (see use case section later). What is the acceptable degree of noise of the mapping? \"Noise\" is the permissible margin of error for some target use case. Depending on what you want to do with your mappings, different quality levels are acceptable. This section is not exhaustive . While reading through this section, you should keep one thing in mind: it is never a good idea to think about mappings as \"correct\" or \"wrong\". Even the the exact same identifier (for example in Wikidata, or even the biomedical data domain) can mean something very different depending on which database it is using it or in which part of which datamodel (or value set) they are used. Mapping should therefore be perceived as an inexact art where the goal is not \"correctness\" but \"fitness for purpose\": can the mappings deliver the use case I am interested in? In the following, we will take a closer look at the varying levels of noise you may need to weigh against each other. \"zero-noise\". Some mappings directly inform decision processes of downstream consumers, such as clinical decision support or manufacturing. For example, in an electronic health record (EHR) system we may want to know what the latest recommended drugs (or contra-indications) for a conditions are, and the disease-drugs relationships may be curated using one terminology such as OMOP , and the EHR may be represented using ICD10-CM (a clinical terminology used widely by hospitals). In these cases, noise should be zero or close to zero, as patient lives depend on the correctness of these mappings. \"low-noise\". Most mappings are used to augment/inform processes that are a bit upstream of the final consumer. For example, mappings are used to group data for analysis or make it easier to find related data during search (enhancing search indexing semantically). The final consumer does not immediately \"see\" the mappings, but just the consequences of applying the mappings. In these cases, a bit of noise may be acceptable, i.e. some mappings that are \"not quite right\". Practically, this is very often the case where data sources are aligned automatically to enable searches across, so a few bad mappings are better than having none. \"high-noise\": Some use cases employ data processing approaches that are themselves highly resilient to noise, like Machine Learning. Here, even a larger number of mappings (in a knowledge graph for example) which are \"not quite right\", or noisy, may be acceptable (if the signal to noise ratio is still ok, i.e. there are \"more good than bad\" mappings). There is no easy formula by which you can decide what level of noise is acceptable. Your use case will determine this. What you, as the steward of your organisation's mapping data, should consider is that there is (roughly) an order of magnitude in cost involved between the three levels: \"high-noise\": Very cheap to generate. Automated matching tools can be used to generate the mappings, with no human review required. Your system may implement a way for your consumers to flag up bad results which can be traced back to a bad mapping, and simply exclude them moving forward. \"low-noise\": Moderately expensive. Most mappings are generated using automated matchers, but then confirmed by a human curator. The confirmation process can often be \"hand-wavy\" to weed out obviously bad mappings, but do not involve the same rigour as \"zero-noise\" mappings would require to maintain scalability to large volumes of mappings. Such a \"hand-wavy\" confirmative review can take 10 seconds to 100 seconds (if a quick lookup is required). \"zero-noise\": Very expensive. Every mapping must be carefully reviewed by a human curator, sometimes by a group of curators. In our experience, reviewing or establishing a mapping like this (manually) can take anything between 10 and 30 minutes - occasionally more. You can use these estimated costs for mapping review to determine how much it would cost to apply the same level of rigour to your own mappings. What is the intended use case? This section is informative, not exhaustive, and will give you a sense of how use cases affect your choice of mapping predicate. We have covered some implications of use cases in the sections above: Some use cases require lower levels of noise , others can live with higher levels of noise. Mappings are rarely 100% exact when mapping across semantic spaces (different database, ontologies, terminologies). What matters is not \"correctness\" - what matters is that the mappings are \" fit for purpose \" (i.e. useful for your use case). Some mappings may be of more value for your use case than others (for example, exact mappings may be more valuable than broad mappings). You can find the right level of cost benefit by selecting optimising value and cost of generating/maintaining such mappings. close mappings may often have a very low value, but if your acceptable level of noise is high, just generate them, since they don't cost you anything! Other key considerations in the sections are: Semantic frameworks for analysis and querying Instance vs concept-level mapping Typical use cases Semantic frameworks for analysis and querying There are four semantic frameworks/formalisms that default SSSOM supports: (1) SPARQL/RDF(S) (querying an integrated knowledge with basic SPARQL); (2) Simple Knowledge organisation systems (SKOS) ; (3) Web Ontology Language (OWL) ; (4) no formalism (property graphs, non-semantic use cases). We will briefly discuss the implications of each for your use cases. SPARQL/RDF(S) is a very general semantic framework that allows query across property paths . Many SPARQL engines provide at least RDFS entailment regime, which allows for some (basic) semantic reasoning (subClassOf, property domains). This is the most likely semantic framework of choice if your use case involves semantic queries such as those involving sub-class groupings. SKOS is a semantic framework that layers on top of RDF and specifies semantics for a handful of properties that are useful for building taxonomies that do not seek to follow the rigorous semantics of the class-level modelling constructs such as subClassOf. We have no experience with SKOS reasoners, and do not know if there are any out there. This means, in effect, that this \"case\" (semantic framework) has the same exact considerations as the SPARQL/RDF(S) one above. OWL is a very powerful semantic framework that is based on formal logic. Ontologies represented in OWL offer support for complex expressions of knowledge, way beyond what RDFS and SKOS can do. OWL is the semantic framework of choice if the goal is to build and reason over an integrated (merged) ontology. An example use case where OWL is the appropriate framework is integration of species-specific anatomy ontologies under species-neutral ones, see for example Uberon . A basic rule of thumb is: unless you know positively that you have to reason over the merged graph, i.e. set of all ontologies you have mapped across, OWL is probably overkill and should be avoided. Using no semantic framework does not mean semantic mappings are useless! Many extremely useful applications exist for mappings which do not involve a semantic framework, such as those related to Labelled Property Graphs (for example neo4j ). Even if you just want to translate your data into a graph, it is useful to know the semantics of your mappings as they can inform your graph queries. Other semantic frameworks exist such as rule-based systems (e.g. Datalog, SWRL), but they are not used as widely as the above in our domain. Instance vs Property vs Concept-level mapping To pick the correct mapping predicate, it is important to understand whether you are mapping concepts or instances: Concept-level: the entity being mapped constitutes a class or a concept. A concept can be thought of a collection or set of individuals. For example, \"Apple\" could refer to the class of all apples. Instance-level: the entity being mapped constitutes an individual or an instance. An instance is a single real-world entity, such as Barack Obama. Instances are members of classes/concepts. For example, Barack Obama belongs to the class of \"Person\", or \"Former Presidents\". Another example is an individual apple on a shelf in a supermarket (\"Gala Apple 199999\"), which is an instance of the \"Apple\" class. Note that notions like broad or narrow make no sense when mapping instances. We typically try to avoid the SKOS vocabulary for mapping instances, and make use of owl:sameAs instead. Note that owl:sameAs does have implications for reasoning, but it is also the preferred property when within the \"RDF/SPARQL\" semantic framework. If the mapping involves an instance and a class, you have hit a corner case of the SSSOM use case. This case can still be represented, but instance-concept relationships are not widely thought of as \"mappings\". In much the same way as concepts and instances, you can also map properties or \"relationships\": Property-level: the entities being mapped are both properties, like, for example, rdfs:label, skos:prefLabel, RO:0000050 (part of). Note that it does not make sense to try to map instances of concepts, or concepts, directly to properties. There are no relationships that would support such a mapping. Typical use cases Typical use cases for mappings include: Semantic data integration . This often involves linking data to ontologies or semantic layers in knowledge graphs. Data from one source (such as an EHR) is translated to another (such as OMOP, see above). To analyse the data semantically, the most valuable links are exact and broad as these allow you to directly query the ontology to retrieve instance data. close and narrow matches are less useful for such a use case, but maybe be consulted as the \"next best thing\" to an exact mapping. Often, a low level of noise is acceptable. Data translation . Similar to data integration, but we want to map as precisely as possible. Only exact matches really matter if we want to make sure that data annotated with one ontology means the exact same thing as data annotated with another. Noise in the mappings is often not acceptable. An example for this is if one source has annotated all its genes using the HUGO Gene Nomenclature Committee (HGNC) while another is using NCBI Gene Database identifiers. broad , narrow and even close matches are mostly meaningless - we need a 1:1 translation table with next to zero noise. Ontology and knowledge graph merging . Here, the key issue is that exact matches matches have as little noise as possible. Some merging approaches use probabilistic algorithms to weed out out potentially bad mappings (low levels of noise may be acceptable, see for example boomer ), but any naive merging approach, which is still prevalent in the knowledge graph world, will usually do the following: (1) Merge all exact matches into one \"node\" in the knowledge graph and (2) redirect all data against all these exact matches to that newly created node. The 3-step process for selecting an appropriate mapping predicate The following 3-step process condenses the sections above into a simple to follow algorithm. Given two terms A and B: Target: semantic framework: Does your use case require OWL reasoning over the merged subject and object sources? If yes, use OWL vocabulary for properties If no, use RDF/SPARQL/SKOS vocabulary for properties Are A and B instances, properties or concepts? If A and B are instances, use only vocabulary suitable for instances If A and B are concepts, use only vocabulary suitable for concepts If A and B are properties, use only vocabulary suitable for properties If either one of A or B is an instance and the other is a concept, use only vocabulary suitable for describing instance-class relationships Is A roughly the same as B? If yes, does the difference between \"truly exact\" and your understanding of A and B constitute \"acceptable noise level\"? If yes: the mapping is exact . If no: the mapping is close . If no, determine if the precision as described above. You can now select the mapping predicate based on the table below: Mapping Predicate Precision Suitable for semantic framework Suitable entity types? Acceptable noise skos:exactMatch exact SKOS/RDF(S)/SPARQL/NO Concept low skos:relatedMatch related SKOS/RDF(S)/SPARQL/NO Concept low skos:broadMatch broad SKOS/RDF(S)/SPARQL/NO Concept low skos:narrowMatch narrow SKOS/RDF(S)/SPARQL/NO Concept low skos:closeMatch close SKOS/RDF(S)/SPARQL/NO Concept low owl:sameAs exact SKOS/RDF(S)/SPARQL/OWL/NO Instance low owl:equivalentClass exact OWL Concept no rdfs:subClassOf broad RDF(S)/SPARQL/OWL Concept no owl:equivalentProperty exact OWL Property no rdfs:subPropertyOf broad OWL Property no oboInOwl:hasDbXref exact SKOS/RDF(S)/SPARQL Any high rdfs:seeAlso close SKOS/RDF(S)/SPARQL Any high rdf:type exact/broad RDF(S)/SPARQL/OWL Instance-Concept no Note that \"acceptable noise\" refers to \"what is acceptable for the target semantic framework\". When using OWL, even a bit of noise can have huge consequences for reasoning, so it is not advisable to use the OWL vocabulary in cases where there is a lot of noise. Frequently asked questions None of the mapping predicates listed here seem to fit for my use case. Can I define my own? The SSSOM specification is currently open to specifying new mapping predicates. However, it is always advisable to open an issue to discuss such cases with the wider community - there may be some benefit in standardising predicates from the start!","title":"How to use mapping predicates"},{"location":"mapping-predicates/#how-to-pick-the-right-mapping-predicates","text":"A mapping predicate such as skos:exactMatch specifies the semantics of the mapping relation - in other words, it defines how a computer (and human!) should interpret the mapping when it is being used. For example, a computer program may be allowed to merge nodes in a knowledge graph only when they are skos:exactMatch , but not when they are, say, skos:closeMatch . Picking the right predicate to specify the meaning of your mapping is often a difficult process. The following guide should help you to understand the most widely used mapping predicates and when they are appropriate.","title":"How to pick the right mapping predicates"},{"location":"mapping-predicates/#table-of-content","text":"The three primary concerns for selecting a mapping predicate The 3 step process for selecting an appropriate mapping predicate Frequently asked questions about mapping predicates","title":"Table of content"},{"location":"mapping-predicates/#glossary","text":"subject : the entity that is being mapped object : the entity that the subject is mapped to predicate : the semantic mapping relationship used","title":"Glossary"},{"location":"mapping-predicates/#the-three-primary-concerns-for-selecting-a-mapping-predicate","text":"There are at least three things you need to decide before selecting an appropriate mapping predicate: Precision Acceptable degree of noise Intended use case","title":"The three primary concerns for selecting a mapping predicate"},{"location":"mapping-predicates/#what-is-the-precision-of-the-mapping","text":"As a curator, you should try to investigate the intended meaning of both the subject and the object. This task usually involves trying to find out as much as possible about the mapped identifiers: What is their human readable definition? Are there any logical axioms that could help with understanding the intended meaning? Sometimes, this even involves asking the respective stewards of the database or ontology for clarification. Important: The key here is \"intended meaning\". For example, when you see FOODON:Apple (FOODON is an ontology), you do not try to figure out what an apple is , but what thing in the world (in your conceptual model of the world) the FOODON developers intended the FOODON:Apple identifier to refer to . This might be an apple that you can eat, or a cultivar ! The precision is simply: is the mapping exact , close , broad , narrow or related ? Here is a basic guide about how to think of each: exact : The two terms are intended to refer to the same thing. For example, both the subject and the object identifiers refer to the concept of Gala cultivar . close : The two terms are intended to refer to roughly the same thing, but not quite. This is a hazy category and should be avoided in practice, because when taken too literally, most mappings could be interpreted as close mappings. This is not the point of creating mappings, if their intention is to be useful (see \"use case\" considerations later in this document). An example of a close mapping is one between the \"heart\" concept in a database of anatomical entities for biological research on chimpanzees and the \"human heart\" in an electronic health record for humans. broad : The object is conceptually broader than the subject. For example, \"human heart\" in an electronic health record refers to \"heart\" in a general anatomy ontology that covers all species, such as Uberon. Another example is \"Gala (cultivar)\" in one ontology or database to \"Apple (cultivar)\" in another: the Apple (cultivar) has a broader meaning then \"Gala (cultivar)\". For a good mapping, it is advisable that \"broad\" and \"narrow\" are applied a bit more strictly than is technically permitted by the SKOS specification: both the subject and the object should belong to the same category . For example, you should use broad (or narrow) only if both the subject and the object are \"cultivars\" (in the above example). narrow : The object is conceptually narrower than the subject. For example \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\". Think of it as the opposite of \"broad\". broad and narrow are so-called inverse categories: If \"Gala (cultivar)\" is a broad match to \"Apple (cultivar)\", then \"Apple (cultivar)\" is a narrow match to \"Gala (cultivar)\"! One note of caution : narrow matches generally have less useful applications then broad ones. For example, if we want to group subject entities in a database under an ontology to make them queryable in a knowledge graph, only broad matches to the ontology can be retrieved. For example, if we map \"Gala (cultivar)\" in a database to \"Apple (cultivar)\" in an ontology, and we wish to write a semantic query to obtain all records that are about \"Apple (cultivar)\" according to the ontology, we obtain \"Gala (cultivar)\". This is not true the other way around: if the ontology term is more specific then the database term, it can't be used to group the database data. related : The subject refers to an analogous concept of a different category. For example \"Apple\" and \"Apple tree\" are considered related matches, but not exact matches, as \"Apple\" is of the \"fruit\" category, and \"Apple tree\" of the \"tree\" category. Other examples include: \"disease\" and \"phenotype\", \"chemical\" and \"chemical exposure\", \"car\" and \"car manufacturing process\". In general, related mappings should be reserved for \"direct analogues\". For example, we should not try to map to related and broad categories at the same time, like, for example, \"Gala (cultivar)\" to \"Apple tree\". This causes a huge amount of proliferation of very \"low value\" mappings (see use case section later).","title":"What is the precision of the mapping?"},{"location":"mapping-predicates/#what-is-the-acceptable-degree-of-noise-of-the-mapping","text":"\"Noise\" is the permissible margin of error for some target use case. Depending on what you want to do with your mappings, different quality levels are acceptable. This section is not exhaustive . While reading through this section, you should keep one thing in mind: it is never a good idea to think about mappings as \"correct\" or \"wrong\". Even the the exact same identifier (for example in Wikidata, or even the biomedical data domain) can mean something very different depending on which database it is using it or in which part of which datamodel (or value set) they are used. Mapping should therefore be perceived as an inexact art where the goal is not \"correctness\" but \"fitness for purpose\": can the mappings deliver the use case I am interested in? In the following, we will take a closer look at the varying levels of noise you may need to weigh against each other. \"zero-noise\". Some mappings directly inform decision processes of downstream consumers, such as clinical decision support or manufacturing. For example, in an electronic health record (EHR) system we may want to know what the latest recommended drugs (or contra-indications) for a conditions are, and the disease-drugs relationships may be curated using one terminology such as OMOP , and the EHR may be represented using ICD10-CM (a clinical terminology used widely by hospitals). In these cases, noise should be zero or close to zero, as patient lives depend on the correctness of these mappings. \"low-noise\". Most mappings are used to augment/inform processes that are a bit upstream of the final consumer. For example, mappings are used to group data for analysis or make it easier to find related data during search (enhancing search indexing semantically). The final consumer does not immediately \"see\" the mappings, but just the consequences of applying the mappings. In these cases, a bit of noise may be acceptable, i.e. some mappings that are \"not quite right\". Practically, this is very often the case where data sources are aligned automatically to enable searches across, so a few bad mappings are better than having none. \"high-noise\": Some use cases employ data processing approaches that are themselves highly resilient to noise, like Machine Learning. Here, even a larger number of mappings (in a knowledge graph for example) which are \"not quite right\", or noisy, may be acceptable (if the signal to noise ratio is still ok, i.e. there are \"more good than bad\" mappings). There is no easy formula by which you can decide what level of noise is acceptable. Your use case will determine this. What you, as the steward of your organisation's mapping data, should consider is that there is (roughly) an order of magnitude in cost involved between the three levels: \"high-noise\": Very cheap to generate. Automated matching tools can be used to generate the mappings, with no human review required. Your system may implement a way for your consumers to flag up bad results which can be traced back to a bad mapping, and simply exclude them moving forward. \"low-noise\": Moderately expensive. Most mappings are generated using automated matchers, but then confirmed by a human curator. The confirmation process can often be \"hand-wavy\" to weed out obviously bad mappings, but do not involve the same rigour as \"zero-noise\" mappings would require to maintain scalability to large volumes of mappings. Such a \"hand-wavy\" confirmative review can take 10 seconds to 100 seconds (if a quick lookup is required). \"zero-noise\": Very expensive. Every mapping must be carefully reviewed by a human curator, sometimes by a group of curators. In our experience, reviewing or establishing a mapping like this (manually) can take anything between 10 and 30 minutes - occasionally more. You can use these estimated costs for mapping review to determine how much it would cost to apply the same level of rigour to your own mappings.","title":"What is the acceptable degree of noise of the mapping?"},{"location":"mapping-predicates/#what-is-the-intended-use-case","text":"This section is informative, not exhaustive, and will give you a sense of how use cases affect your choice of mapping predicate. We have covered some implications of use cases in the sections above: Some use cases require lower levels of noise , others can live with higher levels of noise. Mappings are rarely 100% exact when mapping across semantic spaces (different database, ontologies, terminologies). What matters is not \"correctness\" - what matters is that the mappings are \" fit for purpose \" (i.e. useful for your use case). Some mappings may be of more value for your use case than others (for example, exact mappings may be more valuable than broad mappings). You can find the right level of cost benefit by selecting optimising value and cost of generating/maintaining such mappings. close mappings may often have a very low value, but if your acceptable level of noise is high, just generate them, since they don't cost you anything! Other key considerations in the sections are: Semantic frameworks for analysis and querying Instance vs concept-level mapping Typical use cases","title":"What is the intended use case?"},{"location":"mapping-predicates/#semantic-frameworks-for-analysis-and-querying","text":"There are four semantic frameworks/formalisms that default SSSOM supports: (1) SPARQL/RDF(S) (querying an integrated knowledge with basic SPARQL); (2) Simple Knowledge organisation systems (SKOS) ; (3) Web Ontology Language (OWL) ; (4) no formalism (property graphs, non-semantic use cases). We will briefly discuss the implications of each for your use cases. SPARQL/RDF(S) is a very general semantic framework that allows query across property paths . Many SPARQL engines provide at least RDFS entailment regime, which allows for some (basic) semantic reasoning (subClassOf, property domains). This is the most likely semantic framework of choice if your use case involves semantic queries such as those involving sub-class groupings. SKOS is a semantic framework that layers on top of RDF and specifies semantics for a handful of properties that are useful for building taxonomies that do not seek to follow the rigorous semantics of the class-level modelling constructs such as subClassOf. We have no experience with SKOS reasoners, and do not know if there are any out there. This means, in effect, that this \"case\" (semantic framework) has the same exact considerations as the SPARQL/RDF(S) one above. OWL is a very powerful semantic framework that is based on formal logic. Ontologies represented in OWL offer support for complex expressions of knowledge, way beyond what RDFS and SKOS can do. OWL is the semantic framework of choice if the goal is to build and reason over an integrated (merged) ontology. An example use case where OWL is the appropriate framework is integration of species-specific anatomy ontologies under species-neutral ones, see for example Uberon . A basic rule of thumb is: unless you know positively that you have to reason over the merged graph, i.e. set of all ontologies you have mapped across, OWL is probably overkill and should be avoided. Using no semantic framework does not mean semantic mappings are useless! Many extremely useful applications exist for mappings which do not involve a semantic framework, such as those related to Labelled Property Graphs (for example neo4j ). Even if you just want to translate your data into a graph, it is useful to know the semantics of your mappings as they can inform your graph queries. Other semantic frameworks exist such as rule-based systems (e.g. Datalog, SWRL), but they are not used as widely as the above in our domain.","title":"Semantic frameworks for analysis and querying"},{"location":"mapping-predicates/#instance-vs-property-vs-concept-level-mapping","text":"To pick the correct mapping predicate, it is important to understand whether you are mapping concepts or instances: Concept-level: the entity being mapped constitutes a class or a concept. A concept can be thought of a collection or set of individuals. For example, \"Apple\" could refer to the class of all apples. Instance-level: the entity being mapped constitutes an individual or an instance. An instance is a single real-world entity, such as Barack Obama. Instances are members of classes/concepts. For example, Barack Obama belongs to the class of \"Person\", or \"Former Presidents\". Another example is an individual apple on a shelf in a supermarket (\"Gala Apple 199999\"), which is an instance of the \"Apple\" class. Note that notions like broad or narrow make no sense when mapping instances. We typically try to avoid the SKOS vocabulary for mapping instances, and make use of owl:sameAs instead. Note that owl:sameAs does have implications for reasoning, but it is also the preferred property when within the \"RDF/SPARQL\" semantic framework. If the mapping involves an instance and a class, you have hit a corner case of the SSSOM use case. This case can still be represented, but instance-concept relationships are not widely thought of as \"mappings\". In much the same way as concepts and instances, you can also map properties or \"relationships\": Property-level: the entities being mapped are both properties, like, for example, rdfs:label, skos:prefLabel, RO:0000050 (part of). Note that it does not make sense to try to map instances of concepts, or concepts, directly to properties. There are no relationships that would support such a mapping.","title":"Instance vs Property vs Concept-level mapping"},{"location":"mapping-predicates/#typical-use-cases","text":"Typical use cases for mappings include: Semantic data integration . This often involves linking data to ontologies or semantic layers in knowledge graphs. Data from one source (such as an EHR) is translated to another (such as OMOP, see above). To analyse the data semantically, the most valuable links are exact and broad as these allow you to directly query the ontology to retrieve instance data. close and narrow matches are less useful for such a use case, but maybe be consulted as the \"next best thing\" to an exact mapping. Often, a low level of noise is acceptable. Data translation . Similar to data integration, but we want to map as precisely as possible. Only exact matches really matter if we want to make sure that data annotated with one ontology means the exact same thing as data annotated with another. Noise in the mappings is often not acceptable. An example for this is if one source has annotated all its genes using the HUGO Gene Nomenclature Committee (HGNC) while another is using NCBI Gene Database identifiers. broad , narrow and even close matches are mostly meaningless - we need a 1:1 translation table with next to zero noise. Ontology and knowledge graph merging . Here, the key issue is that exact matches matches have as little noise as possible. Some merging approaches use probabilistic algorithms to weed out out potentially bad mappings (low levels of noise may be acceptable, see for example boomer ), but any naive merging approach, which is still prevalent in the knowledge graph world, will usually do the following: (1) Merge all exact matches into one \"node\" in the knowledge graph and (2) redirect all data against all these exact matches to that newly created node.","title":"Typical use cases"},{"location":"mapping-predicates/#the-3-step-process-for-selecting-an-appropriate-mapping-predicate","text":"The following 3-step process condenses the sections above into a simple to follow algorithm. Given two terms A and B: Target: semantic framework: Does your use case require OWL reasoning over the merged subject and object sources? If yes, use OWL vocabulary for properties If no, use RDF/SPARQL/SKOS vocabulary for properties Are A and B instances, properties or concepts? If A and B are instances, use only vocabulary suitable for instances If A and B are concepts, use only vocabulary suitable for concepts If A and B are properties, use only vocabulary suitable for properties If either one of A or B is an instance and the other is a concept, use only vocabulary suitable for describing instance-class relationships Is A roughly the same as B? If yes, does the difference between \"truly exact\" and your understanding of A and B constitute \"acceptable noise level\"? If yes: the mapping is exact . If no: the mapping is close . If no, determine if the precision as described above. You can now select the mapping predicate based on the table below: Mapping Predicate Precision Suitable for semantic framework Suitable entity types? Acceptable noise skos:exactMatch exact SKOS/RDF(S)/SPARQL/NO Concept low skos:relatedMatch related SKOS/RDF(S)/SPARQL/NO Concept low skos:broadMatch broad SKOS/RDF(S)/SPARQL/NO Concept low skos:narrowMatch narrow SKOS/RDF(S)/SPARQL/NO Concept low skos:closeMatch close SKOS/RDF(S)/SPARQL/NO Concept low owl:sameAs exact SKOS/RDF(S)/SPARQL/OWL/NO Instance low owl:equivalentClass exact OWL Concept no rdfs:subClassOf broad RDF(S)/SPARQL/OWL Concept no owl:equivalentProperty exact OWL Property no rdfs:subPropertyOf broad OWL Property no oboInOwl:hasDbXref exact SKOS/RDF(S)/SPARQL Any high rdfs:seeAlso close SKOS/RDF(S)/SPARQL Any high rdf:type exact/broad RDF(S)/SPARQL/OWL Instance-Concept no Note that \"acceptable noise\" refers to \"what is acceptable for the target semantic framework\". When using OWL, even a bit of noise can have huge consequences for reasoning, so it is not advisable to use the OWL vocabulary in cases where there is a lot of noise.","title":"The 3-step process for selecting an appropriate mapping predicate"},{"location":"mapping-predicates/#frequently-asked-questions","text":"None of the mapping predicates listed here seem to fit for my use case. Can I define my own? The SSSOM specification is currently open to specifying new mapping predicates. However, it is always advisable to open an issue to discuss such cases with the wider community - there may be some benefit in standardising predicates from the start!","title":"Frequently asked questions"},{"location":"mapping_cardinality/","text":"mapping_cardinality URI : sssom:mapping_cardinality Applicable to : Mapping Description A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. Properties Range : MappingCardinalityEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality domain_of: - mapping range: mapping_cardinality_enum","title":"mapping_cardinality"},{"location":"mapping_cardinality/#mapping_cardinality","text":"URI : sssom:mapping_cardinality Applicable to : Mapping Description A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set.","title":"mapping_cardinality"},{"location":"mapping_cardinality/#properties","text":"Range : MappingCardinalityEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_cardinality/#schema-developer-documentation","text":"LinkML source name: mapping_cardinality description: A string indicating whether this mapping is from a 1:1 (the subject_id maps to a single object_id), 1:n (the subject maps to more than one object_id), n:1, 1:0, 0:1 or n:n group. Note that this is a convenience field that should be derivable from the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_cardinality domain_of: - mapping range: mapping_cardinality_enum","title":"Schema developer documentation"},{"location":"mapping_date/","text":"mapping_date URI : pav:authoredOn Applicable to : MappingSet , Mapping Description The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. Properties Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date domain_of: - mapping set - mapping range: date","title":"mapping_date"},{"location":"mapping_date/#mapping_date","text":"URI : pav:authoredOn Applicable to : MappingSet , Mapping Description The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file.","title":"mapping_date"},{"location":"mapping_date/#properties","text":"Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_date/#schema-developer-documentation","text":"LinkML source name: mapping_date instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: pav:authoredOn alias: mapping_date domain_of: - mapping set - mapping range: date","title":"Schema developer documentation"},{"location":"mapping_justification/","text":"mapping_justification URI : sssom:mapping_justification Applicable to : Mapping Description A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Regex pattern : ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ Examples Example: semapv:LexicalMatching Example value : semapv:LexicalMatching Example: semapv:ManualMappingCuration Example value : semapv:ManualMappingCuration Schema developer documentation LinkML source name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration","title":"mapping_justification"},{"location":"mapping_justification/#mapping_justification","text":"URI : sssom:mapping_justification Applicable to : Mapping Description A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable.","title":"mapping_justification"},{"location":"mapping_justification/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Regex pattern : ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$","title":"Properties"},{"location":"mapping_justification/#examples","text":"Example: semapv:LexicalMatching Example value : semapv:LexicalMatching Example: semapv:ManualMappingCuration Example value : semapv:ManualMappingCuration","title":"Examples"},{"location":"mapping_justification/#schema-developer-documentation","text":"LinkML source name: mapping_justification description: A mapping justification is an action (or the written representation of that action) of showing a mapping to be right or reasonable. examples: - value: semapv:LexicalMatching - value: semapv:ManualMappingCuration from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_justification domain_of: - mapping range: EntityReference required: true pattern: ^semapv:(MappingReview|ManualMappingCuration|LogicalReasoning|LexicalMatching|CompositeMatching|UnspecifiedMatching|SemanticSimilarityThresholdMatching|LexicalSimilarityThresholdMatching|MappingChaining)$ any_of: - equals_string: semapv:LexicalMatching - equals_string: semapv:LogicalReasoning - equals_string: semapv:CompositeMatching - equals_string: semapv:UnspecifiedMatching - equals_string: semapv:SemanticSimilarityThresholdMatching - equals_string: semapv:LexicalSimilarityThresholdMatching - equals_string: semapv:MappingChaining - equals_string: semapv:MappingReview - equals_string: semapv:ManualMappingCuration","title":"Schema developer documentation"},{"location":"mapping_provider/","text":"mapping_provider URI : sssom:mapping_provider Applicable to : MappingSet , Mapping 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. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider domain_of: - mapping set - mapping range: uri","title":"mapping_provider"},{"location":"mapping_provider/#mapping_provider","text":"URI : sssom:mapping_provider Applicable to : MappingSet , Mapping 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.","title":"mapping_provider"},{"location":"mapping_provider/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_provider/#schema-developer-documentation","text":"LinkML source name: mapping_provider instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_provider domain_of: - mapping set - mapping range: uri","title":"Schema developer documentation"},{"location":"mapping_registry_description/","text":"mapping_registry_description URI : sssom:mapping_registry_description Applicable to : MappingRegistry Description The description of a mapping registry. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description domain_of: - mapping registry range: string","title":"mapping_registry_description"},{"location":"mapping_registry_description/#mapping_registry_description","text":"URI : sssom:mapping_registry_description Applicable to : MappingRegistry Description The description of a mapping registry.","title":"mapping_registry_description"},{"location":"mapping_registry_description/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_registry_description/#schema-developer-documentation","text":"LinkML source name: mapping_registry_description description: The description of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_description domain_of: - mapping registry range: string","title":"Schema developer documentation"},{"location":"mapping_registry_id/","text":"mapping_registry_id URI : sssom:mapping_registry_id Applicable to : MappingRegistry Description The unique identifier of a mapping registry. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Schema developer documentation LinkML source name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id domain_of: - mapping registry range: EntityReference required: true","title":"mapping_registry_id"},{"location":"mapping_registry_id/#mapping_registry_id","text":"URI : sssom:mapping_registry_id Applicable to : MappingRegistry Description The unique identifier of a mapping registry.","title":"mapping_registry_id"},{"location":"mapping_registry_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"mapping_registry_id/#schema-developer-documentation","text":"LinkML source name: mapping_registry_id description: The unique identifier of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_id domain_of: - mapping registry range: EntityReference required: true","title":"Schema developer documentation"},{"location":"mapping_registry_title/","text":"mapping_registry_title URI : sssom:mapping_registry_title Applicable to : MappingRegistry Description The title of a mapping registry. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title domain_of: - mapping registry range: string","title":"mapping_registry_title"},{"location":"mapping_registry_title/#mapping_registry_title","text":"URI : sssom:mapping_registry_title Applicable to : MappingRegistry Description The title of a mapping registry.","title":"mapping_registry_title"},{"location":"mapping_registry_title/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_registry_title/#schema-developer-documentation","text":"LinkML source name: mapping_registry_title description: The title of a mapping registry. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_registry_title domain_of: - mapping registry range: string","title":"Schema developer documentation"},{"location":"mapping_set_description/","text":"mapping_set_description URI : dcterms:description Applicable to : MappingSet Description A description of the mapping set. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. Example value : This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. Schema developer documentation LinkML source name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description domain_of: - mapping set range: string","title":"mapping_set_description"},{"location":"mapping_set_description/#mapping_set_description","text":"URI : dcterms:description Applicable to : MappingSet Description A description of the mapping set.","title":"mapping_set_description"},{"location":"mapping_set_description/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_description/#examples","text":"Example: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. Example value : This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/.","title":"Examples"},{"location":"mapping_set_description/#schema-developer-documentation","text":"LinkML source name: mapping_set_description description: A description of the mapping set. examples: - value: This mapping set was produced to integrate human and mouse phenotype data at the IMPC. It is primarily used for making mouse phenotypes searchable by human synonyms at https://mousephenotype.org/. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:description alias: mapping_set_description domain_of: - mapping set range: string","title":"Schema developer documentation"},{"location":"mapping_set_group/","text":"mapping_set_group URI : sssom:mapping_set_group Applicable to : MappingSetReference Description Set by the owners of the mapping registry. A way to group . Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group domain_of: - mapping set reference range: string","title":"mapping_set_group"},{"location":"mapping_set_group/#mapping_set_group","text":"URI : sssom:mapping_set_group Applicable to : MappingSetReference Description Set by the owners of the mapping registry. A way to group .","title":"mapping_set_group"},{"location":"mapping_set_group/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_group/#schema-developer-documentation","text":"LinkML source name: mapping_set_group description: Set by the owners of the mapping registry. A way to group . from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_group domain_of: - mapping set reference range: string","title":"Schema developer documentation"},{"location":"mapping_set_id/","text":"mapping_set_id URI : sssom:mapping_set_id Applicable to : MappingSet , MappingSetReference Description A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Examples Example: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Description : (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) Schema developer documentation LinkML source name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id domain_of: - mapping set - mapping set reference range: uri required: true","title":"mapping_set_id"},{"location":"mapping_set_id/#mapping_set_id","text":"URI : sssom:mapping_set_id Applicable to : MappingSet , MappingSetReference Description A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable.","title":"mapping_set_id"},{"location":"mapping_set_id/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"mapping_set_id/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv Description : (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.)","title":"Examples"},{"location":"mapping_set_id/#schema-developer-documentation","text":"LinkML source name: mapping_set_id description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/mondo_exactmatch_ncit.sssom.tsv description: (A persistent URI pointing to the latest version of the Mondo - NCIT mapping in the Mondo namespace.) from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_set_id domain_of: - mapping set - mapping set reference range: uri required: true","title":"Schema developer documentation"},{"location":"mapping_set_references/","text":"mapping_set_references URI : sssom:mapping_set_references Applicable to : MappingRegistry Description A list of mapping set references. Properties Range : MappingSetReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Schema developer documentation LinkML source name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references domain_of: - mapping registry range: mapping set reference recommended: true","title":"mapping_set_references"},{"location":"mapping_set_references/#mapping_set_references","text":"URI : sssom:mapping_set_references Applicable to : MappingRegistry Description A list of mapping set references.","title":"mapping_set_references"},{"location":"mapping_set_references/#properties","text":"Range : MappingSetReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"mapping_set_references/#schema-developer-documentation","text":"LinkML source name: mapping_set_references description: A list of mapping set references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mapping_set_references domain_of: - mapping registry range: mapping set reference recommended: true","title":"Schema developer documentation"},{"location":"mapping_set_source/","text":"mapping_set_source URI : prov:wasDerivedFrom Applicable to : MappingSet Description A mapping set or set of mapping set that was used to derive the mapping set. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Description : A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. Schema developer documentation LinkML source name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source domain_of: - mapping set range: uri","title":"mapping_set_source"},{"location":"mapping_set_source/#mapping_set_source","text":"URI : prov:wasDerivedFrom Applicable to : MappingSet Description A mapping set or set of mapping set that was used to derive the mapping set.","title":"mapping_set_source"},{"location":"mapping_set_source/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_source/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Example value : http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv Description : A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived.","title":"Examples"},{"location":"mapping_set_source/#schema-developer-documentation","text":"LinkML source name: mapping_set_source description: A mapping set or set of mapping set that was used to derive the mapping set. examples: - value: http://purl.obolibrary.org/obo/mondo/mappings/2022-05-20/mondo_exactmatch_ncit.sssom.tsv description: A persistent, ideally versioned, link to the mapping set from which the current mapping set is derived. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: prov:wasDerivedFrom multivalued: true alias: mapping_set_source domain_of: - mapping set range: uri","title":"Schema developer documentation"},{"location":"mapping_set_title/","text":"mapping_set_title URI : dcterms:title Applicable to : MappingSet Description The display name of a mapping set. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: The Mondo-OMIM mappings by Monarch Initiative. Example value : The Mondo-OMIM mappings by Monarch Initiative. Schema developer documentation LinkML source name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title domain_of: - mapping set range: string","title":"mapping_set_title"},{"location":"mapping_set_title/#mapping_set_title","text":"URI : dcterms:title Applicable to : MappingSet Description The display name of a mapping set.","title":"mapping_set_title"},{"location":"mapping_set_title/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_title/#examples","text":"Example: The Mondo-OMIM mappings by Monarch Initiative. Example value : The Mondo-OMIM mappings by Monarch Initiative.","title":"Examples"},{"location":"mapping_set_title/#schema-developer-documentation","text":"LinkML source name: mapping_set_title description: The display name of a mapping set. examples: - value: The Mondo-OMIM mappings by Monarch Initiative. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:title alias: mapping_set_title domain_of: - mapping set range: string","title":"Schema developer documentation"},{"location":"mapping_set_version/","text":"mapping_set_version URI : owl:versionInfo Applicable to : MappingSet Description A version string for the mapping. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: 2020-01-01 Example value : 2020-01-01 Description : (A date-based version that indicates that the mapping was published on the 1st January in 2021.) Example: 1.2.1 Example value : 1.2.1 Description : (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) Schema developer documentation LinkML source name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version domain_of: - mapping set range: string","title":"mapping_set_version"},{"location":"mapping_set_version/#mapping_set_version","text":"URI : owl:versionInfo Applicable to : MappingSet Description A version string for the mapping.","title":"mapping_set_version"},{"location":"mapping_set_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_set_version/#examples","text":"Example: 2020-01-01 Example value : 2020-01-01 Description : (A date-based version that indicates that the mapping was published on the 1st January in 2021.) Example: 1.2.1 Example value : 1.2.1 Description : (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).)","title":"Examples"},{"location":"mapping_set_version/#schema-developer-documentation","text":"LinkML source name: mapping_set_version description: A version string for the mapping. examples: - value: '2020-01-01' description: (A date-based version that indicates that the mapping was published on the 1st January in 2021.) - value: 1.2.1 description: (A semantic version tag that indicates that this is the 1st major, 2nd minor version, patch 1 (https://semver.org/).) from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: owl:versionInfo alias: mapping_set_version domain_of: - mapping set range: string","title":"Schema developer documentation"},{"location":"mapping_source/","text":"mapping_source URI : sssom:mapping_source Applicable to : Mapping Description The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv Example value : MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv Schema developer documentation LinkML source name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source domain_of: - mapping range: EntityReference","title":"mapping_source"},{"location":"mapping_source/#mapping_source","text":"URI : sssom:mapping_source Applicable to : Mapping Description The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another.","title":"mapping_source"},{"location":"mapping_source/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_source/#examples","text":"Example: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv Example value : MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv","title":"Examples"},{"location":"mapping_source/#schema-developer-documentation","text":"LinkML source name: mapping_source description: The mapping set this mapping was originally defined in. mapping_source is used for example when merging multiple mapping sets or deriving one mapping set from another. examples: - value: MONDO_MAPPINGS:mondo_exactmatch_ncit.sssom.tsv from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_source domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"mapping_tool/","text":"mapping_tool URI : sssom:mapping_tool Applicable to : MappingSet , Mapping 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. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: https://github.com/AgreementMakerLight/AML-Project Example value : https://github.com/AgreementMakerLight/AML-Project Schema developer documentation LinkML source name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool domain_of: - mapping set - mapping range: string","title":"mapping_tool"},{"location":"mapping_tool/#mapping_tool","text":"URI : sssom:mapping_tool Applicable to : MappingSet , Mapping 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.","title":"mapping_tool"},{"location":"mapping_tool/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_tool/#examples","text":"Example: https://github.com/AgreementMakerLight/AML-Project Example value : https://github.com/AgreementMakerLight/AML-Project","title":"Examples"},{"location":"mapping_tool/#schema-developer-documentation","text":"LinkML source name: mapping_tool instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true 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. examples: - value: https://github.com/AgreementMakerLight/AML-Project from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"mapping_tool_version/","text":"mapping_tool_version URI : sssom:mapping_tool_version Applicable to : MappingSet , Mapping Description Version string that denotes the version of the mapping tool used. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: v3.2 Example value : v3.2 Schema developer documentation LinkML source name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version domain_of: - mapping set - mapping range: string","title":"mapping_tool_version"},{"location":"mapping_tool_version/#mapping_tool_version","text":"URI : sssom:mapping_tool_version Applicable to : MappingSet , Mapping Description Version string that denotes the version of the mapping tool used.","title":"mapping_tool_version"},{"location":"mapping_tool_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mapping_tool_version/#examples","text":"Example: v3.2 Example value : v3.2","title":"Examples"},{"location":"mapping_tool_version/#schema-developer-documentation","text":"LinkML source name: mapping_tool_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version string that denotes the version of the mapping tool used. examples: - value: v3.2 from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mapping_tool_version domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"mappings/","text":"mappings URI : sssom:mappings Applicable to : MappingSet Description Contains a list of mapping objects Properties Range : Mapping . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Schema developer documentation LinkML source name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings domain_of: - mapping set range: mapping recommended: true inlined: true inlined_as_list: true","title":"mappings"},{"location":"mappings/#mappings","text":"URI : sssom:mappings Applicable to : MappingSet Description Contains a list of mapping objects","title":"mappings"},{"location":"mappings/#properties","text":"Range : Mapping . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"mappings/#schema-developer-documentation","text":"LinkML source name: mappings description: Contains a list of mapping objects from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: mappings domain_of: - mapping set range: mapping recommended: true inlined: true inlined_as_list: true","title":"Schema developer documentation"},{"location":"match_string/","text":"match_string URI : sssom:match_string Applicable to : Mapping 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. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string domain_of: - mapping range: string","title":"match_string"},{"location":"match_string/#match_string","text":"URI : sssom:match_string Applicable to : Mapping 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.","title":"match_string"},{"location":"match_string/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"match_string/#schema-developer-documentation","text":"LinkML source name: 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. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: match_string domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"matching-tool-implementation-guide/","text":"Matching Tools: Implementation Guide for SSSOM Summary *: The goal of this document is to advice matching tool developers how to implement SSSOM-style matching justifications as part of their output. For example, if a mapping was determined (or is supported by) a lexical matching process, we can document that, alongside metadata that further describes the details about that process. As of 17.07.2023, this guide is a work in progress . If you are a tool developer interested to implement these recommendations, feel free to reach out on https://github.com/mapping-commons/sssom/issues for support and feel empowered to help us improve this guide! Basics A (semantic) mapping in the sense of this guide is a tuple that describes the correspondence of a subject s to an object o via a mapping predicate p . |j| is a non-empty set of mapping justifications that provide evidence towards the validity of the correspondence. As stated above, but re-stated for clarity: every mapping can be associated with 1 or more justifications . Carefully consider if a piece of metadata should be applied on mapping or mapping set level. As a rule of thumb, if a piece of metadata applies to absolutely all mappings in the target set, then consider adding it as metadata to the mapping set, to safe space. Justifications in the sense of this guide comprise a category (documented in the mapping_justification field), which is represented as a specific matching activity such as \"lexical matching\", \"logical matching\", \"manual mapping curation\", etc, a confidence value that represents the amount of confidence the justification contributes to the perceived truthfulness of a mapping, and additional metadata that provide additional provenance. The basic vocabulary for the justification category is the Semantic Mapping Vocabulary . Feel free to use the issue tracker to request new categories to be added. There is a fast turnaround. The goal of providing mapping justifications is to enable cross-purpose re-use of mappings, sharing of mappings and mapping reconciliation . Mapping justifications make individual mapping decisions transparent. Adding justifications is always valueable, even if not all detailed metadata is provided . Many justifications are combinations of other justifications. For example, we may decide that a match is justified if (a) there is a lexical match and (b) the surrounding graph-structure is isomorphic or (c) the entities involved share the same properties. In this case, we should add individual justifications for each individual justification. The confidence value expresses how confident the specific justification makes you feel about the truthfulness of the mapping . If a joint probability is calculated from multiple justifications, add a separate justification for that, e.g. semapv:CompositeMatching . In the SSSOM TSV formats, every row corresponds to a justification, not a mapping. So the same mapping with three justifications will result in three rows in the SSSOM TSV file. Background Before reading on, please skim through the technical documentation of SSSOM to get a sense of what kind of properties exist, and read our primer on mapping justifications first, which explains how to design a number of frequently used mapping justifications. As the collection of justifications can impact the performance of he matching process (at least for huge matching tasks), it is adviseable that the process can be switched off by the CLI. For most matching processes, we first construct a candidate mapping set from a combination of sources, for example: Mappings provided by user as input to the matching process Lexical exact matching Lexical fuzzy matching (traditional and word embeddings) As a second step, we use often complex combinations of techniques to refine and expand the candidate mapping set: Structural matching (graph-based approaches etc) Semantic matching Logical matching (for example by deconstructing complex terms into composites and then using logical reasoning). Similarity based matching, including graph-embedding similarity (machine learning), old-school semantic similarity measures like Resnik or even Jaccard (over some part of the ontology/schema structure) As a rule of thumb, the more complex the rules by which a match is determined, the harder it is to provide a useful justification. To put it slighly differently: the more complex a justification, the less useful it is if the goal is to make matching decisions transparent for human users . A good example of this are decisions based on embedding (e.g. graph, node) similarity: while it is often useful to understand that a match has been determined by a threshold (e.g. >=0.9) of cosine similarity of a node embedding, it is less important to communicate exactly how the embedding space was constructed. This insight guides our implementation in two ways: We start by focusing on the \"easy\" cases with clear mapping justifications (like the lexical ones used to construct the candidate mapping set ), and incrementally work our way up towards harder ones. We have a default justification for \"complex\" cases which we have not covered yet. This is necessary not only because it may be hard to construct complex justifications from within a matching tool, but also because SSSOM simply does not have a way to express the justification yet (in this case, request clarification on the SSSOM issue tracker ). Basic thoughts about architecture The MELT framework offers a well designed architecture for matchers. While the interested readers is referred to the MELT documentation for details, we want to use it here as an example on how a tool implementor, from a higher level perspective, could think about collecting SSSOM metadata as part of the matchig process. Conceptually, a matching process (from the perspective of the MELT developers) has four inputs: Source ontology: O_s Target ontology: O_t (potentially empty) input alignment: Map_in Configuration (for the matching tool): Cong and return one outut: Output alignment: Map_out Note that any given implementation can take other inputs and produce other outputs, but for the sake of this guide we assume this basic architecture. Conceptually, four elements are important to matching process: The alignment The individual correspondence part of the alignment Evidence gathered for towards the truthfullness of the alignment A matcher that implements the \"matching process\" described above in terms of intput/output In the MELT reference implementation, for example, there is an Alignment class. During the matching process, the alignment is passed through a series of matchers to be augmented. For example, a bounded path matcher . In essence, the matching process is a series of matchings strung together, passing where the alignment produced by the last process is passed through to the next, then augmented, then passed on (potentially for other processes such as filtering, which we consider matching processes as well). During an individual matching process like bounded path matcher , correspondences are added and removed from the alignment. The key for a meaningful SSSOM integration is this: when a new correspondence (mapping) is added to the alignment (or \"mapping set\" in SSSOM speach) you add a piece of evidence alongside the correspondence . This is usually done by extending the correspondence data model with a new field: justification, evidence, or similar. A piece of evidence includes three major things: A justification. Usually, any matcher type will correspond to exactly one justification in the SEMAPV vocabulary . A confidence level. This reflects how much confidence the process has induced in the mapping all by itself. Any other metadata important for that specific justifications, such as subject_match_field for a lexical matching process. Your matching process should collect this metadata, and, by the end of the process, the whole alignment, including correspondences and justifications for each correspondence should be exported. Important note : In the final TSV file, every justification will have its own row! So a correspondence (mapping) will appear on multiple rows! Step-by-step guide for implementation This step by step guide is roughly according to our own thinking of what should be done first, second, and so on. Add an option to your matching tool to output legal SSSOM TSV (recommended format now), for example --export-sssom or similar. OPTIONAL: Add an option to your matching tool to accept legal SSSOM TSV as user input as an alternative to Alignment API (recommended format now). Always provide basic provenance in the SSSOM output: mapping_tool : The canonical reference to your tool, ideally a persistent identifier. mapping_tool_version : The version of the tool used to compute the mapping set. mapping_set_id : A (often randomly generated) mapping set identifier. mapping_date : The date the mapping was generated. OPTIONAL: if available, add subject_source , object_source and subject_source_version , object_source_version . Document some basic entity metadata, this can help reading the mapping set: subject_label , object_label : If available, add the label of the subject, and object id. Add basic justification support Track lexical matching-based mapping decisions. A good chunk of candidate mappings will be computed by some form of lexical matching. See here for details. If something more complex than a simple lexical matching has happened, try to find an appropriate one in SEMAPV . If none exists, or its too much work to create one, use as a fall-through: semapv:CompositeMatching in the case that the match was established through a combination of approaches, but you don't want to provide justifications for each individual one. semapv:UnspecifiedMatching in the case you dont know why the match happened. All justifications should come with a confidence value that expresses how confident the specific justification makes you feel about the truthfulness of the mapping . Track if a mapping was provided (as input) by a user. Ideally, if the input to the matching process is SSSOM, simply adopt all of the mapping justifications provided by the user. If the provided mapping has no metadata, add a suitable mapping_provider value (e.g. MYTOOL:USER , to indicate that the mapping was provided by the user). Add advanced justification support. Add all metadata explained in mapping justifications . Where suitable fields or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively. There is likely a lot of interesting details to be added, so dont be shy to request/suggest! If you reject a user provided mapping, it makes sense to include that in a negative mapping set in SSSOM. You could provide predicate_modifier = NOT to ensure the file is not interpreted wrongly. HIGHLY OPTIONAL: In some few cases, it may be interesting to inform the user that not all mappings are 1:1. In this case, it could be advisable to use the mapping_cardinality field. OPTIONAL: If relevant you can add the subject_type and object_type fields to your output, if known. This can be interesting in some cases with mixed content (being able to separate owl:Class related mappings from those about owl:ObjectProperty ). You can always use the comment or other * fields to deposit additional useful metadata that can later be turned into structured content. Examples MGI Mouse-Human mappings SSSOM examples","title":"Matching tool implementation guide"},{"location":"matching-tool-implementation-guide/#matching-tools-implementation-guide-for-sssom","text":"Summary *: The goal of this document is to advice matching tool developers how to implement SSSOM-style matching justifications as part of their output. For example, if a mapping was determined (or is supported by) a lexical matching process, we can document that, alongside metadata that further describes the details about that process. As of 17.07.2023, this guide is a work in progress . If you are a tool developer interested to implement these recommendations, feel free to reach out on https://github.com/mapping-commons/sssom/issues for support and feel empowered to help us improve this guide!","title":"Matching Tools: Implementation Guide for SSSOM"},{"location":"matching-tool-implementation-guide/#basics","text":"A (semantic) mapping in the sense of this guide is a tuple that describes the correspondence of a subject s to an object o via a mapping predicate p . |j| is a non-empty set of mapping justifications that provide evidence towards the validity of the correspondence. As stated above, but re-stated for clarity: every mapping can be associated with 1 or more justifications . Carefully consider if a piece of metadata should be applied on mapping or mapping set level. As a rule of thumb, if a piece of metadata applies to absolutely all mappings in the target set, then consider adding it as metadata to the mapping set, to safe space. Justifications in the sense of this guide comprise a category (documented in the mapping_justification field), which is represented as a specific matching activity such as \"lexical matching\", \"logical matching\", \"manual mapping curation\", etc, a confidence value that represents the amount of confidence the justification contributes to the perceived truthfulness of a mapping, and additional metadata that provide additional provenance. The basic vocabulary for the justification category is the Semantic Mapping Vocabulary . Feel free to use the issue tracker to request new categories to be added. There is a fast turnaround. The goal of providing mapping justifications is to enable cross-purpose re-use of mappings, sharing of mappings and mapping reconciliation . Mapping justifications make individual mapping decisions transparent. Adding justifications is always valueable, even if not all detailed metadata is provided . Many justifications are combinations of other justifications. For example, we may decide that a match is justified if (a) there is a lexical match and (b) the surrounding graph-structure is isomorphic or (c) the entities involved share the same properties. In this case, we should add individual justifications for each individual justification. The confidence value expresses how confident the specific justification makes you feel about the truthfulness of the mapping . If a joint probability is calculated from multiple justifications, add a separate justification for that, e.g. semapv:CompositeMatching . In the SSSOM TSV formats, every row corresponds to a justification, not a mapping. So the same mapping with three justifications will result in three rows in the SSSOM TSV file.","title":"Basics"},{"location":"matching-tool-implementation-guide/#background","text":"Before reading on, please skim through the technical documentation of SSSOM to get a sense of what kind of properties exist, and read our primer on mapping justifications first, which explains how to design a number of frequently used mapping justifications. As the collection of justifications can impact the performance of he matching process (at least for huge matching tasks), it is adviseable that the process can be switched off by the CLI. For most matching processes, we first construct a candidate mapping set from a combination of sources, for example: Mappings provided by user as input to the matching process Lexical exact matching Lexical fuzzy matching (traditional and word embeddings) As a second step, we use often complex combinations of techniques to refine and expand the candidate mapping set: Structural matching (graph-based approaches etc) Semantic matching Logical matching (for example by deconstructing complex terms into composites and then using logical reasoning). Similarity based matching, including graph-embedding similarity (machine learning), old-school semantic similarity measures like Resnik or even Jaccard (over some part of the ontology/schema structure) As a rule of thumb, the more complex the rules by which a match is determined, the harder it is to provide a useful justification. To put it slighly differently: the more complex a justification, the less useful it is if the goal is to make matching decisions transparent for human users . A good example of this are decisions based on embedding (e.g. graph, node) similarity: while it is often useful to understand that a match has been determined by a threshold (e.g. >=0.9) of cosine similarity of a node embedding, it is less important to communicate exactly how the embedding space was constructed. This insight guides our implementation in two ways: We start by focusing on the \"easy\" cases with clear mapping justifications (like the lexical ones used to construct the candidate mapping set ), and incrementally work our way up towards harder ones. We have a default justification for \"complex\" cases which we have not covered yet. This is necessary not only because it may be hard to construct complex justifications from within a matching tool, but also because SSSOM simply does not have a way to express the justification yet (in this case, request clarification on the SSSOM issue tracker ).","title":"Background"},{"location":"matching-tool-implementation-guide/#basic-thoughts-about-architecture","text":"The MELT framework offers a well designed architecture for matchers. While the interested readers is referred to the MELT documentation for details, we want to use it here as an example on how a tool implementor, from a higher level perspective, could think about collecting SSSOM metadata as part of the matchig process. Conceptually, a matching process (from the perspective of the MELT developers) has four inputs: Source ontology: O_s Target ontology: O_t (potentially empty) input alignment: Map_in Configuration (for the matching tool): Cong and return one outut: Output alignment: Map_out Note that any given implementation can take other inputs and produce other outputs, but for the sake of this guide we assume this basic architecture. Conceptually, four elements are important to matching process: The alignment The individual correspondence part of the alignment Evidence gathered for towards the truthfullness of the alignment A matcher that implements the \"matching process\" described above in terms of intput/output In the MELT reference implementation, for example, there is an Alignment class. During the matching process, the alignment is passed through a series of matchers to be augmented. For example, a bounded path matcher . In essence, the matching process is a series of matchings strung together, passing where the alignment produced by the last process is passed through to the next, then augmented, then passed on (potentially for other processes such as filtering, which we consider matching processes as well). During an individual matching process like bounded path matcher , correspondences are added and removed from the alignment. The key for a meaningful SSSOM integration is this: when a new correspondence (mapping) is added to the alignment (or \"mapping set\" in SSSOM speach) you add a piece of evidence alongside the correspondence . This is usually done by extending the correspondence data model with a new field: justification, evidence, or similar. A piece of evidence includes three major things: A justification. Usually, any matcher type will correspond to exactly one justification in the SEMAPV vocabulary . A confidence level. This reflects how much confidence the process has induced in the mapping all by itself. Any other metadata important for that specific justifications, such as subject_match_field for a lexical matching process. Your matching process should collect this metadata, and, by the end of the process, the whole alignment, including correspondences and justifications for each correspondence should be exported. Important note : In the final TSV file, every justification will have its own row! So a correspondence (mapping) will appear on multiple rows!","title":"Basic thoughts about architecture"},{"location":"matching-tool-implementation-guide/#step-by-step-guide-for-implementation","text":"This step by step guide is roughly according to our own thinking of what should be done first, second, and so on. Add an option to your matching tool to output legal SSSOM TSV (recommended format now), for example --export-sssom or similar. OPTIONAL: Add an option to your matching tool to accept legal SSSOM TSV as user input as an alternative to Alignment API (recommended format now). Always provide basic provenance in the SSSOM output: mapping_tool : The canonical reference to your tool, ideally a persistent identifier. mapping_tool_version : The version of the tool used to compute the mapping set. mapping_set_id : A (often randomly generated) mapping set identifier. mapping_date : The date the mapping was generated. OPTIONAL: if available, add subject_source , object_source and subject_source_version , object_source_version . Document some basic entity metadata, this can help reading the mapping set: subject_label , object_label : If available, add the label of the subject, and object id. Add basic justification support Track lexical matching-based mapping decisions. A good chunk of candidate mappings will be computed by some form of lexical matching. See here for details. If something more complex than a simple lexical matching has happened, try to find an appropriate one in SEMAPV . If none exists, or its too much work to create one, use as a fall-through: semapv:CompositeMatching in the case that the match was established through a combination of approaches, but you don't want to provide justifications for each individual one. semapv:UnspecifiedMatching in the case you dont know why the match happened. All justifications should come with a confidence value that expresses how confident the specific justification makes you feel about the truthfulness of the mapping . Track if a mapping was provided (as input) by a user. Ideally, if the input to the matching process is SSSOM, simply adopt all of the mapping justifications provided by the user. If the provided mapping has no metadata, add a suitable mapping_provider value (e.g. MYTOOL:USER , to indicate that the mapping was provided by the user). Add advanced justification support. Add all metadata explained in mapping justifications . Where suitable fields or values are missing from the SSSOM datamodel or SEMAPV , request them on the SSSOM or SEMAPV issue tracker respectively. There is likely a lot of interesting details to be added, so dont be shy to request/suggest! If you reject a user provided mapping, it makes sense to include that in a negative mapping set in SSSOM. You could provide predicate_modifier = NOT to ensure the file is not interpreted wrongly. HIGHLY OPTIONAL: In some few cases, it may be interesting to inform the user that not all mappings are 1:1. In this case, it could be advisable to use the mapping_cardinality field. OPTIONAL: If relevant you can add the subject_type and object_type fields to your output, if known. This can be interesting in some cases with mixed content (being able to separate owl:Class related mappings from those about owl:ObjectProperty ). You can always use the comment or other * fields to deposit additional useful metadata that can later be turned into structured content.","title":"Step-by-step guide for implementation"},{"location":"matching-tool-implementation-guide/#examples","text":"MGI Mouse-Human mappings SSSOM examples","title":"Examples"},{"location":"mirror_from/","text":"mirror_from URI : sssom:mirror_from Applicable to : MappingSetReference Description A URL location from which to obtain a resource, such as a mapping set. Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from domain_of: - mapping set reference range: uri","title":"mirror_from"},{"location":"mirror_from/#mirror_from","text":"URI : sssom:mirror_from Applicable to : MappingSetReference Description A URL location from which to obtain a resource, such as a mapping set.","title":"mirror_from"},{"location":"mirror_from/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"mirror_from/#schema-developer-documentation","text":"LinkML source name: mirror_from description: A URL location from which to obtain a resource, such as a mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: mirror_from domain_of: - mapping set reference range: uri","title":"Schema developer documentation"},{"location":"object_category/","text":"object_category URI : sssom:object_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256 Schema developer documentation LinkML source name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category domain_of: - mapping range: string","title":"object_category"},{"location":"object_category/#object_category","text":"URI : sssom:object_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases.","title":"object_category"},{"location":"object_category/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_category/#examples","text":"Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.)","title":"Examples"},{"location":"object_category/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256","title":"See Also"},{"location":"object_category/#schema-developer-documentation","text":"LinkML source name: object_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: object_category domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"object_id/","text":"object_id URI : owl:annotatedTarget Applicable to : Mapping Description The ID of the object of the mapping. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' Schema developer documentation LinkML source name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id domain_of: - mapping range: EntityReference","title":"object_id"},{"location":"object_id/#object_id","text":"URI : owl:annotatedTarget Applicable to : Mapping Description The ID of the object of the mapping.","title":"object_id"},{"location":"object_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_id/#examples","text":"Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears'","title":"Examples"},{"location":"object_id/#schema-developer-documentation","text":"LinkML source name: object_id description: The ID of the object of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedTarget rank: 1000 slot_uri: owl:annotatedTarget alias: object_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_label/","text":"object_label URI : sssom:object_label Applicable to : Mapping Description The label of object of the mapping Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Examples Example: Thickened ears Example value : Thickened ears Schema developer documentation LinkML source name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label domain_of: - mapping range: string recommended: true","title":"object_label"},{"location":"object_label/#object_label","text":"URI : sssom:object_label Applicable to : Mapping Description The label of object of the mapping","title":"object_label"},{"location":"object_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"object_label/#examples","text":"Example: Thickened ears Example value : Thickened ears","title":"Examples"},{"location":"object_label/#schema-developer-documentation","text":"LinkML source name: object_label description: The label of object of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_label domain_of: - mapping range: string recommended: true","title":"Schema developer documentation"},{"location":"object_match_field/","text":"object_match_field URI : sssom:object_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the object) that was used for the match. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field domain_of: - mapping set - mapping range: EntityReference","title":"object_match_field"},{"location":"object_match_field/#object_match_field","text":"URI : sssom:object_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the object) that was used for the match.","title":"object_match_field"},{"location":"object_match_field/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_match_field/#schema-developer-documentation","text":"LinkML source name: object_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the object) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_match_field domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_preprocessing/","text":"object_preprocessing URI : sssom:object_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval Schema developer documentation LinkML source name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"object_preprocessing"},{"location":"object_preprocessing/#object_preprocessing","text":"URI : sssom:object_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.","title":"object_preprocessing"},{"location":"object_preprocessing/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_preprocessing/#examples","text":"Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval","title":"Examples"},{"location":"object_preprocessing/#schema-developer-documentation","text":"LinkML source name: object_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the object. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: object_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_source/","text":"object_source URI : sssom:object_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the object. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource. Schema developer documentation LinkML source name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source domain_of: - mapping set - mapping range: EntityReference","title":"object_source"},{"location":"object_source/#object_source","text":"URI : sssom:object_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the object.","title":"object_source"},{"location":"object_source/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_source/#examples","text":"Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource.","title":"Examples"},{"location":"object_source/#schema-developer-documentation","text":"LinkML source name: object_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the object. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"object_source_version/","text":"object_source_version URI : sssom:object_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the object term. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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') Schema developer documentation LinkML source name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version domain_of: - mapping set - mapping range: string","title":"object_source_version"},{"location":"object_source_version/#object_source_version","text":"URI : sssom:object_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the object term.","title":"object_source_version"},{"location":"object_source_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_source_version/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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')","title":"Examples"},{"location":"object_source_version/#schema-developer-documentation","text":"LinkML source name: object_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the object term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_source_version domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"object_type/","text":"object_type URI : sssom:object_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped. Properties Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: owl:Class Example value : owl:Class Schema developer documentation LinkML source name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type domain_of: - mapping set - mapping range: entity_type_enum","title":"object_type"},{"location":"object_type/#object_type","text":"URI : sssom:object_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped.","title":"object_type"},{"location":"object_type/#properties","text":"Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"object_type/#examples","text":"Example: owl:Class Example value : owl:Class","title":"Examples"},{"location":"object_type/#schema-developer-documentation","text":"LinkML source name: object_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: object_type domain_of: - mapping set - mapping range: entity_type_enum","title":"Schema developer documentation"},{"location":"other/","text":"other URI : sssom:other Applicable to : MappingSet , Mapping Description Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other domain_of: - mapping set - mapping range: string","title":"other"},{"location":"other/#other","text":"URI : sssom:other Applicable to : MappingSet , Mapping Description Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data.","title":"other"},{"location":"other/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"other/#schema-developer-documentation","text":"LinkML source name: other description: Pipe separated list of key value pairs for properties not part of the SSSOM spec. Can be used to encode additional provenance data. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: other domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"predicate_id/","text":"predicate_id URI : owl:annotatedProperty Applicable to : Mapping Description The ID of the predicate or relation that relates the subject and object of this match. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Examples Example: owl:sameAs Example value : owl:sameAs Description : The subject and the object are instances (owl individuals), and the two instances are the same. Example: owl:equivalentClass Example value : owl:equivalentClass Description : The subject and the object are classes (owl class), and the two classes are the same. Example: owl:equivalentProperty Example value : owl:equivalentProperty Description : The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. Example: rdfs:subClassOf Example value : rdfs:subClassOf Description : The subject and the object are classes (owl class), and the subject is a subclass of the object. Example: rdfs:subPropertyOf Example value : rdfs:subPropertyOf Description : The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. Example: skos:relatedMatch Example value : skos:relatedMatch Description : The subject and the object are associated in some unspecified way. Example: skos:closeMatch Example value : skos:closeMatch Description : The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. Example: skos:exactMatch Example value : skos:exactMatch Description : The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. Example: skos:narrowMatch Example value : skos:narrowMatch Description : From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple. Example: skos:broadMatch Example value : skos:broadMatch Description : From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple. Example: oboInOwl:hasDbXref Example value : oboInOwl:hasDbXref Description : Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) Example: rdfs:seeAlso Example value : rdfs:seeAlso Description : The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. Schema developer documentation LinkML source name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id domain_of: - mapping range: EntityReference required: true","title":"predicate_id"},{"location":"predicate_id/#predicate_id","text":"URI : owl:annotatedProperty Applicable to : Mapping Description The ID of the predicate or relation that relates the subject and object of this match.","title":"predicate_id"},{"location":"predicate_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"predicate_id/#examples","text":"Example: owl:sameAs Example value : owl:sameAs Description : The subject and the object are instances (owl individuals), and the two instances are the same. Example: owl:equivalentClass Example value : owl:equivalentClass Description : The subject and the object are classes (owl class), and the two classes are the same. Example: owl:equivalentProperty Example value : owl:equivalentProperty Description : The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. Example: rdfs:subClassOf Example value : rdfs:subClassOf Description : The subject and the object are classes (owl class), and the subject is a subclass of the object. Example: rdfs:subPropertyOf Example value : rdfs:subPropertyOf Description : The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. Example: skos:relatedMatch Example value : skos:relatedMatch Description : The subject and the object are associated in some unspecified way. Example: skos:closeMatch Example value : skos:closeMatch Description : The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. Example: skos:exactMatch Example value : skos:exactMatch Description : The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. Example: skos:narrowMatch Example value : skos:narrowMatch Description : From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple. Example: skos:broadMatch Example value : skos:broadMatch Description : From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple. Example: oboInOwl:hasDbXref Example value : oboInOwl:hasDbXref Description : Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) Example: rdfs:seeAlso Example value : rdfs:seeAlso Description : The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information.","title":"Examples"},{"location":"predicate_id/#schema-developer-documentation","text":"LinkML source name: predicate_id description: The ID of the predicate or relation that relates the subject and object of this match. examples: - value: owl:sameAs description: The subject and the object are instances (owl individuals), and the two instances are the same. - value: owl:equivalentClass description: The subject and the object are classes (owl class), and the two classes are the same. - value: owl:equivalentProperty description: The subject and the object are properties (owl object, data, annotation properties), and the two properties are the same. - value: rdfs:subClassOf description: The subject and the object are classes (owl class), and the subject is a subclass of the object. - value: rdfs:subPropertyOf description: The subject and the object are properties (owl object, data, annotation properties), and the subject is a subproperty of the object. - value: skos:relatedMatch description: The subject and the object are associated in some unspecified way. - value: skos:closeMatch description: The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. - value: skos:exactMatch description: The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. - value: skos:narrowMatch description: 'From the SKOS primer: A triple skos:narrower (and skos:narrowMatch) asserts that , the object of the triple, is a narrower concept than , the subject of the triple.' - value: skos:broadMatch description: 'From the SKOS primer: A triple skos:broader (and skos:broadMatch) asserts that , the object of the triple, is a broader concept than , the subject of the triple.' - value: oboInOwl:hasDbXref description: Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go) - value: rdfs:seeAlso description: The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedProperty rank: 1000 slot_uri: owl:annotatedProperty alias: predicate_id domain_of: - mapping range: EntityReference required: true","title":"Schema developer documentation"},{"location":"predicate_label/","text":"predicate_label URI : sssom:predicate_label Applicable to : Mapping Description The label of the predicate/relation of the mapping Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: has cross-reference Example value : has cross-reference Description : The label of the oboInOwl:hasDbXref property to represent cross-references. Schema developer documentation LinkML source name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label domain_of: - mapping range: string","title":"predicate_label"},{"location":"predicate_label/#predicate_label","text":"URI : sssom:predicate_label Applicable to : Mapping Description The label of the predicate/relation of the mapping","title":"predicate_label"},{"location":"predicate_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"predicate_label/#examples","text":"Example: has cross-reference Example value : has cross-reference Description : The label of the oboInOwl:hasDbXref property to represent cross-references.","title":"Examples"},{"location":"predicate_label/#schema-developer-documentation","text":"LinkML source name: predicate_label description: The label of the predicate/relation of the mapping examples: - value: has cross-reference description: The label of the oboInOwl:hasDbXref property to represent cross-references. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_label domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"predicate_modifier/","text":"predicate_modifier URI : sssom:predicate_modifier Applicable to : Mapping Description A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion Properties Range : PredicateModifierEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: Not Example value : Not Description : Negates the predicate, see documentation of predicate_modifier_enum See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/107 Schema developer documentation LinkML source name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier domain_of: - mapping range: predicate_modifier_enum","title":"predicate_modifier"},{"location":"predicate_modifier/#predicate_modifier","text":"URI : sssom:predicate_modifier Applicable to : Mapping Description A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion","title":"predicate_modifier"},{"location":"predicate_modifier/#properties","text":"Range : PredicateModifierEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"predicate_modifier/#examples","text":"Example: Not Example value : Not Description : Negates the predicate, see documentation of predicate_modifier_enum","title":"Examples"},{"location":"predicate_modifier/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/107","title":"See Also"},{"location":"predicate_modifier/#schema-developer-documentation","text":"LinkML source name: predicate_modifier description: A modifier for negating the predicate. See https://github.com/mapping-commons/sssom/issues/40 for discussion examples: - value: Not description: Negates the predicate, see documentation of predicate_modifier_enum from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/107 rank: 1000 alias: predicate_modifier domain_of: - mapping range: predicate_modifier_enum","title":"Schema developer documentation"},{"location":"predicate_type/","text":"predicate_type URI : sssom:predicate_type Applicable to : Description The type of entity that is being mapped. Properties Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: owl:AnnotationProperty Example value : owl:AnnotationProperty Example: owl:ObjectProperty Example value : owl:ObjectProperty Schema developer documentation LinkML source name: predicate_type description: The type of entity that is being mapped. examples: - value: owl:AnnotationProperty - value: owl:ObjectProperty from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_type range: entity_type_enum","title":"predicate_type"},{"location":"predicate_type/#predicate_type","text":"URI : sssom:predicate_type Applicable to : Description The type of entity that is being mapped.","title":"predicate_type"},{"location":"predicate_type/#properties","text":"Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"predicate_type/#examples","text":"Example: owl:AnnotationProperty Example value : owl:AnnotationProperty Example: owl:ObjectProperty Example value : owl:ObjectProperty","title":"Examples"},{"location":"predicate_type/#schema-developer-documentation","text":"LinkML source name: predicate_type description: The type of entity that is being mapped. examples: - value: owl:AnnotationProperty - value: owl:ObjectProperty from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: predicate_type range: entity_type_enum","title":"Schema developer documentation"},{"location":"prefix_name/","text":"prefix_name URI : sssom:prefix_name Applicable to : Prefix Properties Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Schema developer documentation LinkML source name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name domain_of: - prefix range: ncname required: true","title":"prefix_name"},{"location":"prefix_name/#prefix_name","text":"URI : sssom:prefix_name Applicable to : Prefix","title":"prefix_name"},{"location":"prefix_name/#properties","text":"Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"prefix_name/#schema-developer-documentation","text":"LinkML source name: prefix_name from_schema: https://w3id.org/sssom/schema/ rank: 1000 key: true alias: prefix_name domain_of: - prefix range: ncname required: true","title":"Schema developer documentation"},{"location":"prefix_url/","text":"prefix_url URI : sssom:prefix_url Applicable to : Prefix Properties Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url domain_of: - prefix range: uri","title":"prefix_url"},{"location":"prefix_url/#prefix_url","text":"URI : sssom:prefix_url Applicable to : Prefix","title":"prefix_url"},{"location":"prefix_url/#properties","text":"Range : Uri . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"prefix_url/#schema-developer-documentation","text":"LinkML source name: prefix_url from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: prefix_url domain_of: - prefix range: uri","title":"Schema developer documentation"},{"location":"presentations/","text":"Presentations A Simple Standard for Ontological Mappings 2024: The case for prioritising 5-Star mappings (Every Cure, internal seminar) August 1 st , 2024, virtual Talk to Every Cure technical team (Knowledge Sharing Series) to make the case for prioritising the collection of mapping provenance. Slides (Re-)bridging the anatomy ontologies with SSSOM July 19 th , 2024 15 th International Conference on Biomedical Ontologies (ICBO) Slides , paper , sources Workshop on Prefixes, CURIEs, and IRIs 2023 November 27 th , 2023, virtual Lightning talk on the deeper integration of the Bioregistry and curies toolkit with the SSSOM Python package Workshop info OM2023: A Simple Standard for Sharing Ontological Mappings 2023: Updates on data model, collaborations and tooling 7th November 2023 http://om2023.ontologymatching.org/ Slides SSSOM Updates 2023 (FAIR Impact and FAIRCORE4EOSC Life Working Session) 6th October 2023 Slides OHDSI 2023 Symposium: Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI) 3rd July 2023, https://www.ohdsi-europe.org/index.php/symposium-2023 Seminar info Elixir Data Interoperability Meeting: Introduction to SSSOM 6th March 2023 This talk is a variant of the CCB Seminar Series talk below Slides Ontology Summit 2023: Open, FAIR and standardised mappings for ontologies, controlled vocabularies and database entities 22 February 2023, virtual This talk is a variant of the CCB Seminar Series talk below Seminar info Video recording (scroll to minute 46) Slides CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings December 2022 talk, virtual Seminar info Video recording Slides OHDSI Symposium 2022: There are no \"good\" mappings. October 2022, hybrid symposium (https://www.ohdsi.org/ohdsi2022-workgroup-activities/) Seminar info Slides OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook 23rd October 2022, Workshop for Ontology Matching, ISWC 2022, virtual Seminar info Slides OBO Academy 2022: Introduction to manual mapping curation 17th May 2022, Seminar, Monarch Seminar Series Video recording Seminar info Slides Workshop on Prefixes, CURIEs, and IRIs 2021 Fall 2021, Use Case Talk on the need for prefix maps for SSSOM Video Workshop info Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM) 28th April 2022, Team Meeting Seminar info Slides WSBO-2021: Workshop on Synergizing Biomedical Ontologies 14th July 2021, Workshop Workshop info Slides MC-2021: 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings Workshop info Video recording Slides: Introduction Slides: OMOP2OBO .","title":"Presentations"},{"location":"presentations/#presentations","text":"","title":"Presentations"},{"location":"presentations/#a-simple-standard-for-ontological-mappings-2024-the-case-for-prioritising-5-star-mappings-every-cure-internal-seminar","text":"August 1 st , 2024, virtual Talk to Every Cure technical team (Knowledge Sharing Series) to make the case for prioritising the collection of mapping provenance. Slides","title":"A Simple Standard for Ontological Mappings 2024: The case for prioritising 5-Star mappings (Every Cure, internal seminar)"},{"location":"presentations/#re-bridging-the-anatomy-ontologies-with-sssom","text":"July 19 th , 2024 15 th International Conference on Biomedical Ontologies (ICBO) Slides , paper , sources","title":"(Re-)bridging the anatomy ontologies with SSSOM"},{"location":"presentations/#workshop-on-prefixes-curies-and-iris-2023","text":"November 27 th , 2023, virtual Lightning talk on the deeper integration of the Bioregistry and curies toolkit with the SSSOM Python package Workshop info","title":"Workshop on Prefixes, CURIEs, and IRIs 2023"},{"location":"presentations/#om2023-a-simple-standard-for-sharing-ontological-mappings-2023-updates-on-data-model-collaborations-and-tooling","text":"7th November 2023 http://om2023.ontologymatching.org/ Slides","title":"OM2023: A Simple Standard for Sharing Ontological Mappings 2023: Updates on data model, collaborations and tooling"},{"location":"presentations/#sssom-updates-2023-fair-impact-and-faircore4eosc-life-working-session","text":"6th October 2023 Slides","title":"SSSOM Updates 2023 (FAIR Impact and FAIRCORE4EOSC Life Working Session)"},{"location":"presentations/#ohdsi-2023-symposium-synergizing-simple-standard-for-sharing-ontology-mappings-sssom-and-the-observational-health-data-sciences-and-informatics-ohdsi","text":"3rd July 2023, https://www.ohdsi-europe.org/index.php/symposium-2023 Seminar info","title":"OHDSI 2023 Symposium: Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI)"},{"location":"presentations/#elixir-data-interoperability-meeting-introduction-to-sssom","text":"6th March 2023 This talk is a variant of the CCB Seminar Series talk below Slides","title":"Elixir Data Interoperability Meeting: Introduction to SSSOM"},{"location":"presentations/#ontology-summit-2023-open-fair-and-standardised-mappings-for-ontologies-controlled-vocabularies-and-database-entities","text":"22 February 2023, virtual This talk is a variant of the CCB Seminar Series talk below Seminar info Video recording (scroll to minute 46) Slides","title":"Ontology Summit 2023: Open, FAIR and standardised mappings for ontologies, controlled vocabularies and database entities"},{"location":"presentations/#ccb-seminar-series-open-sssom-unlocking-the-wealth-of-biomedical-data-using-shared-standardized-entity-mappings","text":"December 2022 talk, virtual Seminar info Video recording Slides","title":"CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings"},{"location":"presentations/#ohdsi-symposium-2022-there-are-no-good-mappings","text":"October 2022, hybrid symposium (https://www.ohdsi.org/ohdsi2022-workgroup-activities/) Seminar info Slides","title":"OHDSI Symposium 2022: There are no \"good\" mappings."},{"location":"presentations/#om-2022-a-simple-standard-for-ontological-mappings-2022-updates-of-data-model-and-outlook","text":"23rd October 2022, Workshop for Ontology Matching, ISWC 2022, virtual Seminar info Slides","title":"OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook"},{"location":"presentations/#obo-academy-2022-introduction-to-manual-mapping-curation","text":"17th May 2022, Seminar, Monarch Seminar Series Video recording Seminar info Slides","title":"OBO Academy 2022: Introduction to manual mapping curation"},{"location":"presentations/#workshop-on-prefixes-curies-and-iris-2021","text":"Fall 2021, Use Case Talk on the need for prefix maps for SSSOM Video Workshop info","title":"Workshop on Prefixes, CURIEs, and IRIs 2021"},{"location":"presentations/#pistoia-seminar-2022-a-simple-standard-for-sharing-ontological-mappings-sssom","text":"28th April 2022, Team Meeting Seminar info Slides","title":"Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"presentations/#wsbo-2021-workshop-on-synergizing-biomedical-ontologies","text":"14th July 2021, Workshop Workshop info Slides","title":"WSBO-2021: Workshop on Synergizing Biomedical Ontologies"},{"location":"presentations/#mc-2021-1st-mapping-commons-workshop-on-simple-standard-for-sharing-ontology-mappings","text":"Workshop info Video recording Slides: Introduction Slides: OMOP2OBO .","title":"MC-2021: 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings"},{"location":"propagated/","text":"propagated URI : sssom:propagated Applicable to : Propagatable Description Indicates whether a slot can be propagated from a mapping down to individual mappings. Properties Range : Boolean . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean","title":"propagated"},{"location":"propagated/#propagated","text":"URI : sssom:propagated Applicable to : Propagatable Description Indicates whether a slot can be propagated from a mapping down to individual mappings.","title":"propagated"},{"location":"propagated/#properties","text":"Range : Boolean . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"propagated/#schema-developer-documentation","text":"LinkML source name: propagated description: Indicates whether a slot can be propagated from a mapping down to individual mappings. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: propagated owner: Propagatable domain_of: - Propagatable range: boolean","title":"Schema developer documentation"},{"location":"property/","text":"property URI : sssom:property Applicable to : ExtensionDefinition Description The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). Properties Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie","title":"property"},{"location":"property/#property","text":"URI : sssom:property Applicable to : ExtensionDefinition Description The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous).","title":"property"},{"location":"property/#properties","text":"Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"property/#schema-developer-documentation","text":"LinkML source name: property description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary to the slot_name, which for brevity reasons may be ambiguous). from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: property owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Schema developer documentation"},{"location":"publication_date/","text":"publication_date URI : dcterms:created Applicable to : MappingSet , Mapping Description The date the mapping was published. This is different from the date the mapping was asserted. Properties Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date domain_of: - mapping set - mapping range: date","title":"publication_date"},{"location":"publication_date/#publication_date","text":"URI : dcterms:created Applicable to : MappingSet , Mapping Description The date the mapping was published. This is different from the date the mapping was asserted.","title":"publication_date"},{"location":"publication_date/#properties","text":"Range : Date . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"publication_date/#schema-developer-documentation","text":"LinkML source name: publication_date description: The date the mapping was published. This is different from the date the mapping was asserted. from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: dcterms:created alias: publication_date domain_of: - mapping set - mapping range: date","title":"Schema developer documentation"},{"location":"registry_confidence/","text":"registry_confidence URI : sssom:registry_confidence Applicable to : MappingSetReference Description This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. Properties Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence domain_of: - mapping set reference range: double","title":"registry_confidence"},{"location":"registry_confidence/#registry_confidence","text":"URI : sssom:registry_confidence Applicable to : MappingSetReference Description This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set.","title":"registry_confidence"},{"location":"registry_confidence/#properties","text":"Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"registry_confidence/#schema-developer-documentation","text":"LinkML source name: registry_confidence description: This value is set by the registry that indexes the mapping set. It reflects the confidence the registry has in the correctness of the mappings in the mapping set. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: registry_confidence domain_of: - mapping set reference range: double","title":"Schema developer documentation"},{"location":"related-documentation/","text":"Related documentation SSSOM Toolkit : A toolkit and library for processing SSSOM files in Python SSSOM Java : A toolkit and library for processing SSSOM files in Java Semantic Mapping Vocabulary (SEMAPV) : The mapping vocabulary used for mapping justifications and specialised mapping predicates LinkML : The modelling framework used by SSSOM OBO Academy : Ontology and mapping related training materials Monarch Initiative : Knowledge Graph related products supported by the Monarch Initiatives, including many tools using and producing SSSOM","title":"Related documentation"},{"location":"related-documentation/#related-documentation","text":"SSSOM Toolkit : A toolkit and library for processing SSSOM files in Python SSSOM Java : A toolkit and library for processing SSSOM files in Java Semantic Mapping Vocabulary (SEMAPV) : The mapping vocabulary used for mapping justifications and specialised mapping predicates LinkML : The modelling framework used by SSSOM OBO Academy : Ontology and mapping related training materials Monarch Initiative : Knowledge Graph related products supported by the Monarch Initiatives, including many tools using and producing SSSOM","title":"Related documentation"},{"location":"reviewer_id/","text":"reviewer_id URI : sssom:reviewer_id Applicable to : Mapping Description Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id domain_of: - mapping range: EntityReference","title":"reviewer_id"},{"location":"reviewer_id/#reviewer_id","text":"URI : sssom:reviewer_id Applicable to : Mapping Description Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs.","title":"reviewer_id"},{"location":"reviewer_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"reviewer_id/#schema-developer-documentation","text":"LinkML source name: reviewer_id description: Identifies the persons or groups that reviewed and confirmed the mapping. Recommended to be a list of ORCIDs or otherwise identifying URIs. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"reviewer_label/","text":"reviewer_label URI : sssom:reviewer_label Applicable to : Mapping Description A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label domain_of: - mapping range: string","title":"reviewer_label"},{"location":"reviewer_label/#reviewer_label","text":"URI : sssom:reviewer_label Applicable to : Mapping Description A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead.","title":"reviewer_label"},{"location":"reviewer_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"reviewer_label/#schema-developer-documentation","text":"LinkML source name: reviewer_label description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: reviewer_label domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"see_also/","text":"see_also URI : rdfs:seeAlso Applicable to : MappingSet , Mapping Description A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment Properties Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also domain_of: - mapping set - mapping range: string","title":"see_also"},{"location":"see_also/#see_also","text":"URI : rdfs:seeAlso Applicable to : MappingSet , Mapping Description A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment","title":"see_also"},{"location":"see_also/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"see_also/#schema-developer-documentation","text":"LinkML source name: see_also description: A URL specific for the mapping instance. E.g. for kboom we have a per-mapping image that shows surrounding axioms that drive probability. Could also be a github issue URL that discussed a complicated alignment from_schema: https://w3id.org/sssom/schema/ rank: 1000 slot_uri: rdfs:seeAlso multivalued: true alias: see_also domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"similarity_measure/","text":"similarity_measure URI : sssom:similarity_measure Applicable to : Mapping Description The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: https://www.wikidata.org/entity/Q865360 Example value : https://www.wikidata.org/entity/Q865360 Description : (the Wikidata IRI for the Jaccard index measure). Example: wikidata:Q865360 Example value : wikidata:Q865360 Description : (the Wikidata CURIE for the Jaccard index measure). Example: Levenshtein distance Example value : Levenshtein distance Description : (a score to measure the distance between two character sequences). See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv Schema developer documentation LinkML source name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure domain_of: - mapping range: string","title":"similarity_measure"},{"location":"similarity_measure/#similarity_measure","text":"URI : sssom:similarity_measure Applicable to : Mapping Description The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified.","title":"similarity_measure"},{"location":"similarity_measure/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"similarity_measure/#examples","text":"Example: https://www.wikidata.org/entity/Q865360 Example value : https://www.wikidata.org/entity/Q865360 Description : (the Wikidata IRI for the Jaccard index measure). Example: wikidata:Q865360 Example value : wikidata:Q865360 Description : (the Wikidata CURIE for the Jaccard index measure). Example: Levenshtein distance Example value : Levenshtein distance Description : (a score to measure the distance between two character sequences).","title":"Examples"},{"location":"similarity_measure/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv","title":"See Also"},{"location":"similarity_measure/#schema-developer-documentation","text":"LinkML source name: similarity_measure description: The measure used for computing a similarity score. This field is meant to be used in conjunction with the similarity_score field, to document, for example, the lexical or semantic match of a matching algorithm. To make processing this field as unambiguous as possible, we recommend using wikidata CURIEs, but the type of this field is deliberately unspecified. examples: - value: https://www.wikidata.org/entity/Q865360 description: (the Wikidata IRI for the Jaccard index measure). - value: wikidata:Q865360 description: (the Wikidata CURIE for the Jaccard index measure). - value: Levenshtein distance description: (a score to measure the distance between two character sequences). from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_measure domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"similarity_score/","text":"similarity_score URI : sssom:similarity_score Applicable to : Mapping Description A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. Properties Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1 See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv Schema developer documentation LinkML source name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"similarity_score"},{"location":"similarity_score/#similarity_score","text":"URI : sssom:similarity_score Applicable to : Mapping Description A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm.","title":"similarity_score"},{"location":"similarity_score/#properties","text":"Range : Double . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Minimum Value : 0 Maximum Value : 1","title":"Properties"},{"location":"similarity_score/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/385 https://github.com/mapping-commons/sssom/pull/386 https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv","title":"See Also"},{"location":"similarity_score/#schema-developer-documentation","text":"LinkML source name: similarity_score description: A score between 0 and 1 to denote the similarity between two entities, where 1 denotes equivalence, and 0 denotes disjointness. The score is meant to be used in conjunction with the similarity_measure field, to document, for example, the lexical or semantic match of a matching algorithm. from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/385 - https://github.com/mapping-commons/sssom/pull/386 - https://github.com/mapping-commons/sssom/blob/master/examples/schema/similarity_score.sssom.tsv rank: 1000 alias: similarity_score domain_of: - mapping range: double minimum_value: 0.0 maximum_value: 1.0","title":"Schema developer documentation"},{"location":"slot_name/","text":"slot_name URI : sssom:slot_name Applicable to : ExtensionDefinition Description The name of the extension slot. Properties Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.) Schema developer documentation LinkML source name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true","title":"slot_name"},{"location":"slot_name/#slot_name","text":"URI : sssom:slot_name Applicable to : ExtensionDefinition Description The name of the extension slot.","title":"slot_name"},{"location":"slot_name/#properties","text":"Range : Ncname . The range of the element is the type of the value that can be assigned to it. Required? : Required (element has to be added to the mapping or mapping set.)","title":"Properties"},{"location":"slot_name/#schema-developer-documentation","text":"LinkML source name: slot_name description: The name of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: slot_name owner: extension definition domain_of: - extension definition range: ncname required: true","title":"Schema developer documentation"},{"location":"spec-formats-json/","text":"The JSON serialisation format The JSON serialisation format is currently unspecified. It is intended as a more-or-less direct serialisation of the MappingSet class into the JSON format as specified by RFC 8259 , but many details of the serialisation are left unspecified for now.","title":"JSON serialisation"},{"location":"spec-formats-json/#the-json-serialisation-format","text":"The JSON serialisation format is currently unspecified. It is intended as a more-or-less direct serialisation of the MappingSet class into the JSON format as specified by RFC 8259 , but many details of the serialisation are left unspecified for now.","title":"The JSON serialisation format"},{"location":"spec-formats-owl/","text":"The OWL/RDF serialisation format This section defines a way to serialise SSSOM mappings as reified OWL axioms . This has the advantage that any mapping set can be simply merged with an ontology in the usual way, for example using ROBOT merge . The OWL/RDF serialisation rules deal with three types of reified OWL axioms, and a few sub-types: Predicate is an annotation property Predicate is an object property and Object/Subject are classes Object/Subject are individuals Predicate is language relational construct of RDFS or OWL ( rdfs:subClassOf , owl:equivalentClass ) Predicate is an annotation property: If the predicate corresponds to an annotation property, the mapping gets converted to an OWLAnnotationAssertion axiom: OWLAnnotationAssertion(P,S,O) . All mapping level metadata ( meta ) gets converted into OWLAnnotation objects which are materialised as axiom annotations on the mapping annotation assertion, see OWL 2 Structural Specification : AnnotationAssertion(meta P, S, O) Where meta is a sequence of OWL Annotations objects like: Annotation(Q1,V1) Annotation(Q2,V2) ... Annotation(Qn,Vn) where Qi is a SSSOM metadata slot and Vi is an annotation value. Note that if a SSSOM metadata element value is a list L (i.e. can have multiple elements, such as creator and others), individual annotations are created for each of them: Annotation(Q,V) for all V in L. Example: AnnotationAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) skos:exactMatch ) Mapping set level annotations are manifested as Ontology annotation in the usual way, according to the OWL 2 Structural Specification . Predicate is an object property Case 1: Object and Subject are classes. The mapping gets translated into an existential restriction: SubclassOf(S, P some O) All metadata slots are added as OWLAnnotation objects and added to SubclassOf axiom as axiom annotations: SubclassOf(meta, S, P some O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) ObjectSomeValuesFrom( )) Case 2: Object and Subject are individuals The mapping gets translated into an object property assertion: ObjectPropertyAssertion(P, S, O) All metadata slots are added as OWLAnnotation objects and added to ObjectPropertyAssertion axiom as axiom annotations: ObjectPropertyAssertion(meta, P, S, O) Example: ObjectPropertyAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) ) Predicate is language relational construct of RDFS or OWL The mapping gets translated into an annotated axiom using the following table: Mapping predicate Generated axiom owl:equivalentClass EauivalentClass(meta, S, O) rdfs:subClassOf SubClassOf(meta, S, O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) )","title":"OWL/RDF serialisation"},{"location":"spec-formats-owl/#the-owlrdf-serialisation-format","text":"This section defines a way to serialise SSSOM mappings as reified OWL axioms . This has the advantage that any mapping set can be simply merged with an ontology in the usual way, for example using ROBOT merge . The OWL/RDF serialisation rules deal with three types of reified OWL axioms, and a few sub-types: Predicate is an annotation property Predicate is an object property and Object/Subject are classes Object/Subject are individuals Predicate is language relational construct of RDFS or OWL ( rdfs:subClassOf , owl:equivalentClass )","title":"The OWL/RDF serialisation format"},{"location":"spec-formats-owl/#predicate-is-an-annotation-property","text":"If the predicate corresponds to an annotation property, the mapping gets converted to an OWLAnnotationAssertion axiom: OWLAnnotationAssertion(P,S,O) . All mapping level metadata ( meta ) gets converted into OWLAnnotation objects which are materialised as axiom annotations on the mapping annotation assertion, see OWL 2 Structural Specification : AnnotationAssertion(meta P, S, O) Where meta is a sequence of OWL Annotations objects like: Annotation(Q1,V1) Annotation(Q2,V2) ... Annotation(Qn,Vn) where Qi is a SSSOM metadata slot and Vi is an annotation value. Note that if a SSSOM metadata element value is a list L (i.e. can have multiple elements, such as creator and others), individual annotations are created for each of them: Annotation(Q,V) for all V in L. Example: AnnotationAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) skos:exactMatch ) Mapping set level annotations are manifested as Ontology annotation in the usual way, according to the OWL 2 Structural Specification .","title":"Predicate is an annotation property:"},{"location":"spec-formats-owl/#predicate-is-an-object-property","text":"","title":"Predicate is an object property"},{"location":"spec-formats-owl/#case-1-object-and-subject-are-classes","text":"The mapping gets translated into an existential restriction: SubclassOf(S, P some O) All metadata slots are added as OWLAnnotation objects and added to SubclassOf axiom as axiom annotations: SubclassOf(meta, S, P some O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) ObjectSomeValuesFrom( ))","title":"Case 1: Object and Subject are classes."},{"location":"spec-formats-owl/#case-2-object-and-subject-are-individuals","text":"The mapping gets translated into an object property assertion: ObjectPropertyAssertion(P, S, O) All metadata slots are added as OWLAnnotation objects and added to ObjectPropertyAssertion axiom as axiom annotations: ObjectPropertyAssertion(meta, P, S, O) Example: ObjectPropertyAssertion(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) )","title":"Case 2: Object and Subject are individuals"},{"location":"spec-formats-owl/#predicate-is-language-relational-construct-of-rdfs-or-owl","text":"The mapping gets translated into an annotated axiom using the following table: Mapping predicate Generated axiom owl:equivalentClass EauivalentClass(meta, S, O) rdfs:subClassOf SubClassOf(meta, S, O) Example: SubClassOf(Annotation(sssom:creator_id ) Annotation(sssom:mapping_justification semapv:LexicalMatching) )","title":"Predicate is language relational construct of RDFS or OWL"},{"location":"spec-formats-tsv/","text":"The SSSOM/TSV serialisation format The SSSOM/TSV format is intended as the main format for exchanging SSSOM mapping set objects. The RECOMMENDED filename extension for a SSSOM/TSV file is .sssom.tsv , but SSSOM/TSV parsers MUST accept SSSOM/TSV files regardless of their extension. Structure A SSSOM/TSV file contains one, and only one, mapping set object. It is made of two different parts: the metadata block , which contains essentially all the slots of the MappingSet class except the mappings slot; the mappings block (also called the TSV section ), which contains the individual mappings. A SSSOM/TSV file MUST NOT contain anything other than those two blocks. Metadata block The metadata block is written as the YAML 1.2 serialisation of the MappingSet object, except that the mappings slot is not included (since it contains the mappings, that are serialised in the mappings block instead). The metadata block MUST appear at the beginning of the file. Every line of the block MUST be preceded by a # character; the # character MAY be followed by one or several space characters (U+0020) before the YAML content \u2013 if so, every line MUST have the same number of space characters. The metadata block ends with the first line that does not begin with a # character, which marks the beginning of the mappings block. The metadata block SHOULD only contain the slots that do have a value. SSSOM/TSV writers SHOULD skip slots with no value when serialising the mapping set object. Multi-valued slots with a single value As an exception to the standard YAML rules regarding the serialisation of sequences, a multi-valued slot that happens to contain a single value MAY be serialised as a scalar value rather than as sequence containing only one item. For example, a creator_id slot with the single value ORCID:1111-2222-3333-4444 MAY be serialised as creator_id: \"ORCID:1111-2222-3333-4444\" This is, strictly speaking, invalid according the YAML specification; the correct serialisation would be either creator_id: [ \"ORCID:1111-2222-3333-4444\" ] or creator_id: - \"ORCID:1111-2222-3333-4444\" but the scalar form is frequently found in existing SSSOM/TSV files, so SSSOM/TSV parsers SHOULD accept it. SSSOM/TSV writers SHOULD favour one of the correct YAML serialisations, however. Forbidden YAML features The following features of the YAML 1.2 specification MUST NOT be used within the metadata block: YAML directives ( YAML 1.2 \u00a76.8.1 ); TAG directives ( YAML 1.2 \u00a76.8.2 ); Node tags ( YAML 1.2 \u00a76.9.1 ); Node anchors ( YAML 1.2 \u00a76.9.2 ); Alias nodes ( YAML 1.2 \u00a77.1 ). SSSOM/TSV writers MUST NOT generate any of those when writing the metadata block. The expected behaviour of SSSOM/TSV parsers upon encountering them is unspecified. Mappings block The mappings block contains the mappings, serialised as a matrix where each line represents an individual mapping and each column (separated by tab characters, U+0009) represents one of the slots of the Mapping class . The mappings block MUST follow immediately the metadata block within a SSSOM/TSV file. It starts with a header line containing the column names, which are the names of the slots in the Mapping class. There SHOULD be no empty columns. If none of the mappings in a set has a value for a given slot, that slot SHOULD be skipped when writing the header line and the individual mappings. Multi-valued slots MUST be serialised as a list of values separated by | characters. Quoting Within the mappings block, the following quoting rules, adapted from RFC 4180 , apply: Any value MAY be enclosed in double quotes ( \" ). Values containing line breaks, double quotes, or tabs (U+0009) MUST be enclosed in double quotes. When a value is enclosed in double quotes, a double quote appearing within the value MUST be escaped by preceding it with another double quote. SSSOM/TSV parsers MUST strip any enclosing double quotes and escaping double quotes before passing the parsed objects to the application code. External metadata mode The metadata block MAY be stored in a separate file from the TSV section, instead of preceding it in the same file as described above. This is called the external metadata mode (by contrast, when the two blocks are in the same file, this is called the embedded metadata mode ). In external mode, the metadata block follows the same rules as described in the Metadata block section above, except that lines MUST NOT start with a # character. It is RECOMMENDED that the file containing the metadata block has the same basename as the file containing the TSV section, with a .sssom.yml extension. When an external metadata file is used, the file containing the TSV section MUST NOT contain anything else than the TSV section. That is, the first line of that file MUST be the header line containing the column names. Implementations SHOULD support reading SSSOM/TSV files in external metadata mode; they MAY support writing SSSOM/TSV files in that mode. Encoding SSSOM/TSV files MUST be encoded in UTF-8 ( RFC 3629 ). They MUST NOT start with a byte order mark (U+FEFF). This applies to external metadata files as well, when the external metadata mode is used. Identifiers All identifiers in a SSSOM/TSV file, that is, all the values of slots typed as EntityReference , MUST be serialised in CURIE syntax . SSSOM/TSV parsers SHOULD reject files containing identifiers serialised as IRIs. As stated in the description of the model ( Identifiers section ), all prefix names used in CURIEs MUST be declared in the curie_map slot of the mapping set object, unless the prefix is a \u201cbuilt-in\u201d prefix (in which case it MAY be omitted). SSSOM/TSV parsers MUST reject a file with undeclared, non-built-in prefix names. A SSSOM/TSV writer SHOULD refuse to serialise a mapping set that contains IRIs that cannot be contracted into CURIEs because there is no suitable prefix declaration in its CURIE map. The use of a custom, ad-hoc logic to infer a possible prefix name where none has been provided (e.g., \u201cif the IRI ends with a ZZZ_NNNNNNN pattern, turn it into a ZZZ:NNNNNNN CURIE\u201d) is strongly discouraged. Propagatable slots As explained in another section , some slots in the MappingSet class are intended, not to describe the mapping set itself, but to store values that are shared by all mappings in the set. These slots are called the \u201cpropagatable slots\u201d, because their values should be \u201cpropagated\u201d from the mapping set down to the individual mappings. Propagation \u201cPropagation\u201d is the operation of assigning to individual mappings in a set the values from the propagatable slots of the set. That operation SHOULD be performed by a SSSOM/TSV parser before passing the parsed objects to the application code. For any given propagatable slot, propagation is only allowed if none of the individual mappings already have their own value in that slot. If any mapping (even only one mapping) has a value in that slot, then the slot MUST be considered as non-propagatable. Otherwise, a propagating SSSOM/TSV parser MUST (1) copy over the value of the propagatable slot on the MappingSet object to the corresponding slot of every individual Mapping objects, and (2) remove the propagated value from the MappingSet object. Implementations that support propagation MUST also support condensation. Condensation \u201cCondensation\u201d is the opposite of \u201cpropagation\u201d. It is the operation of assigning common values to the propagatable slots of the set, based on the values of these slots on individual mappings. That operation SHOULD be performed by a SSSOM/TSV writer prior to writing a set into a SSSOM/TSV file, but that behaviour, if available, MUST be deactivatable. For any given propagatable slot, condensation is only allowed if (1) all mappings in the set have the same value, and (2) the mapping set does not already have a value in the slot, unless that value happens to be the same as the value in all mappings. If those two conditions are met, then a condensating SSSOM/TSV writer MUST (1) set the value of the slot on the MappingSet object to the common value of the slot in all mappings, and (2) remove the condensed value from the individual Mapping object. Implementations that support condensation MUST also support propagation. Non-standard slots If an implementation does not support non-standard slots , then: a SSSOM/TSV reader MUST discard any unknown top-level YAML key in the metadata block, and any unknown TSV column in the TSV section; a SSSOM/TSV writer MUST NOT write any unknown top-level YAML key in the metadata block, or any unknown TSV column in the TSV section. Support for defined extensions This section applies to implementations that supports defined extensions. A SSSOM/TSV reader MUST check the validity of the extension definitions listed in the extension_definitions slot in the YAML metadata block: definitions with no slot_name , or with a slot_name that is not a XML non-colonized name, MUST be ignored; definitions with any unexpected content (e.g. other keys than just slot_name , property , and type_hint ) MUST be ignored; the property and type_hint values for a given definition, if present, MUST be CURIEs and MUST be resolvable using the mapping set\u2019s curie_map , otherwise the definition MUST be ignored. A SSSOM/TSV reader MUST, upon encountering a non-standard YAML key in the metadata block or an unknown TSV column, check that the name of the key or of the column matches the slot_name of one of the extension definitions listed in the mapping set\u2019s extension_definitions slot. If there is no match, the non-standard slot MUST be discarded. Upon encountering a non-standard slot whose corresponding definition has a type_hint of https://w3id.org/linkml/Uriorcurie , the reader SHOULD check that the value is a CURIE and is resolvable using the mapping set\u2019s curie_map . Compatibility with previous versions of the specification Implementations MUST support the current version of the specification. However, SSSOM/TSV parsers MAY additionally accept to parse files that were compliant to a previous version. This section provides advice for implementations willing to support older versions. Compatibility with pre-1.0 versions match_type slot Initial versions of this specification defined a match_type slot on the Mapping class. The slot was intended to describe the kind of match that led to the mapping, and accepted values from a specific enumeration. In SSSOM 0.9.1, this slot was replaced by the mapping_justification slot, and the enumeration was replaced by terms from the SEMAPV vocabulary . Upon encountering a match_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a mapping_justification slot and convert the enumeration values using the following table: match_type value mapping_justification value Lexical semapv:LexicalMatching Logical semapv:LogicalMatching HumanCurated semapv:ManualMappingCuration Complex semapv:CompositeMatching Unspecified semapv:UnspecifiedMatching SemanticSimilarity semapv:SemanticSimilarityThresholdMatching Any other value in the match_type slot MUST be treated as an error. If the set contains both match_type and mapping_justification slots, it is advised to simply ignore the former. match_term_type slot Initial versions of this specification defined a match_term_type slot on the Mapping class. The slot was intended to describe what was being matched. In SSSOM 0.9.1, this slot was replaced by two distinct slots called subject_type and object_type (this notably allowed for the case where the subject and the object are of a different type, something the match_term_type slot did not support). Upon encountering a match_term_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a pair of subject_type and object_type slots, both slots having the same value derived from the original value using the following table: match_term_type value subject_type and object_type value ConceptMatch skos concept ClassMatch owl class ObjectPropertyMatch owl object property IndividualMatch owl named individual DataPropertyMatch owl data property TermMatch rdfs literal Any other value in the match_term_type slot MUST be treated as an error. If the set already contains subject_type and object_type slots, any match_term_type slot can be silently ignored. semantic_similarity_score and semantic_similarity_measure Initial versions of this specification defined a semantic_similarity_score slot to store the semantic similarity, and a semantic_similarity_measure slot to describe how the the semantic similarity is assessed. In SSSOM 1.0, those slots were replaced by more generic similarity_score and similarity_measure slots. Upon encountering a semantic_similarity_score (respectively semantic_similarity_measure ) slot, implementations supporting pre-1.0 versions MUST silently transform it into a similarity_score (respectively similarity_measure ) slot. No changes on the value of the slot are required. Canonical SSSOM/TSV format This section defines a \u201ccanonical\u201d variant of the SSSOM/TSV format, which has stricter serialisation rules. The purpose of the canonical SSSOM/TSV format is to minimise differences across SSSOM/TSV files that would be induced by small diverging behaviours between different SSSOM/TSV implementations. The rules in this section apply to SSSOM/TSV writers only. SSSOM/TSV writers SHOULD write files in the canonical format, but SSSOM/TSV readers MUST NOT reject a file solely because it does not follow the canonical rules. General rules A canonical SSSOM/TSV writer: MUST use line breaks made of only the U+000A character (no U+000D, and no U+000D + U+000A sequences); MUST condense the slots whenever possible, as described in the Condensation section. Rules for the metadata block When writing the metadata block, a canonical SSSOM/TSV writer: MUST embed the metadata block in the same file as the TSV section (no external metadata); MUST NOT insert additional space characters between the initial # character and the YAML content; MUST serialise multi-valued slots as YAML \u201cblock sequences\u201d ( YAML Specification \u00a78.2.1 ) \u2013 even when the list of values contains only one item; MUST serialise scalar values in YAML \u201cplain style\u201d ( YAML Specification \u00a77.3.3 ) whenever possible, otherwise in \u201cdouble-quoted style\u201d ( YAML Specification \u00a77.3.1 ); MUST serialise the slots in the order they appear in the \u201cSlots\u201d table , in the documentation for the MappingSet class; MUST NOT include in the CURIE map the prefix names that are considered \u201cbuilt-in\u201d; MUST NOT include in the CURIE map any prefix name that is not used anywhere in the set; MUST sort the prefix names in the CURIE map in lexicographical order. In addition, if extension slots are supported, the writer: MUST write any extension slot in the mapping set after the standard slots; MUST sort the extension slots lexicographically on the property of their corresponding extension definitions; MUST sort extension definitions on their property value; MUST not include an extension definition if the corresponding extension is not used anywhere in the set. Rules for the mappings block When writing the mappings block, a canonical SSSOM/TSV writer: MUST quote values only when needed, as per the rules in the Quoting section; MUST serialise floating point values with up to three digits as needed after the decimal point, rounding the last digit to the nearest neighbour (rounding up if both neighbours are equidistant); MUST write the columns in the order the slots appear in the \u201cSlots\u201d table , in the documentation for the Mapping class; MUST sort the mappings in lexicographical order on all their slots, in the order the slots appear in the \u201cSlots\u201d table . In addition, if extension slots are supported, the writer: MUST write any non-standard column after the standard columns; MUST sort the non-standard column lexicographically on the property of their corresponding extension definitions. Examples This section is non-normative . A SSSOM/TSV file in embedded metadata mode: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 The same set in external metadata mode: first the file containing the metadata block: curie_map: FOODON: http://purl.obolibrary.org/obo/FOODON_ KF_FOOD: https://kewl-foodie.inc/food/ orcid: https://orcid.org/ mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. license: https://creativecommons.org/licenses/by/4.0/ mapping_date: 2022-05-02 then the file containing the mappings block: subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 Invalid examples Illegal case 1: the metadata block cannot contains comments that are not part of the metadata. # This is a comment that does not belong here. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" # This is another comment that also does not belong here. #creator_id: # - \"orcid:0000-0002-7356-1779\" Illegal case 2: there should be no empty lines. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" #creator_id: # - \"orcid:0000-0002-7356-1779\"","title":"SSSOM/TSV serialisation"},{"location":"spec-formats-tsv/#the-sssomtsv-serialisation-format","text":"The SSSOM/TSV format is intended as the main format for exchanging SSSOM mapping set objects. The RECOMMENDED filename extension for a SSSOM/TSV file is .sssom.tsv , but SSSOM/TSV parsers MUST accept SSSOM/TSV files regardless of their extension.","title":"The SSSOM/TSV serialisation format"},{"location":"spec-formats-tsv/#structure","text":"A SSSOM/TSV file contains one, and only one, mapping set object. It is made of two different parts: the metadata block , which contains essentially all the slots of the MappingSet class except the mappings slot; the mappings block (also called the TSV section ), which contains the individual mappings. A SSSOM/TSV file MUST NOT contain anything other than those two blocks.","title":"Structure"},{"location":"spec-formats-tsv/#metadata-block","text":"The metadata block is written as the YAML 1.2 serialisation of the MappingSet object, except that the mappings slot is not included (since it contains the mappings, that are serialised in the mappings block instead). The metadata block MUST appear at the beginning of the file. Every line of the block MUST be preceded by a # character; the # character MAY be followed by one or several space characters (U+0020) before the YAML content \u2013 if so, every line MUST have the same number of space characters. The metadata block ends with the first line that does not begin with a # character, which marks the beginning of the mappings block. The metadata block SHOULD only contain the slots that do have a value. SSSOM/TSV writers SHOULD skip slots with no value when serialising the mapping set object.","title":"Metadata block"},{"location":"spec-formats-tsv/#multi-valued-slots-with-a-single-value","text":"As an exception to the standard YAML rules regarding the serialisation of sequences, a multi-valued slot that happens to contain a single value MAY be serialised as a scalar value rather than as sequence containing only one item. For example, a creator_id slot with the single value ORCID:1111-2222-3333-4444 MAY be serialised as creator_id: \"ORCID:1111-2222-3333-4444\" This is, strictly speaking, invalid according the YAML specification; the correct serialisation would be either creator_id: [ \"ORCID:1111-2222-3333-4444\" ] or creator_id: - \"ORCID:1111-2222-3333-4444\" but the scalar form is frequently found in existing SSSOM/TSV files, so SSSOM/TSV parsers SHOULD accept it. SSSOM/TSV writers SHOULD favour one of the correct YAML serialisations, however.","title":"Multi-valued slots with a single value"},{"location":"spec-formats-tsv/#forbidden-yaml-features","text":"The following features of the YAML 1.2 specification MUST NOT be used within the metadata block: YAML directives ( YAML 1.2 \u00a76.8.1 ); TAG directives ( YAML 1.2 \u00a76.8.2 ); Node tags ( YAML 1.2 \u00a76.9.1 ); Node anchors ( YAML 1.2 \u00a76.9.2 ); Alias nodes ( YAML 1.2 \u00a77.1 ). SSSOM/TSV writers MUST NOT generate any of those when writing the metadata block. The expected behaviour of SSSOM/TSV parsers upon encountering them is unspecified.","title":"Forbidden YAML features"},{"location":"spec-formats-tsv/#mappings-block","text":"The mappings block contains the mappings, serialised as a matrix where each line represents an individual mapping and each column (separated by tab characters, U+0009) represents one of the slots of the Mapping class . The mappings block MUST follow immediately the metadata block within a SSSOM/TSV file. It starts with a header line containing the column names, which are the names of the slots in the Mapping class. There SHOULD be no empty columns. If none of the mappings in a set has a value for a given slot, that slot SHOULD be skipped when writing the header line and the individual mappings. Multi-valued slots MUST be serialised as a list of values separated by | characters.","title":"Mappings block"},{"location":"spec-formats-tsv/#quoting","text":"Within the mappings block, the following quoting rules, adapted from RFC 4180 , apply: Any value MAY be enclosed in double quotes ( \" ). Values containing line breaks, double quotes, or tabs (U+0009) MUST be enclosed in double quotes. When a value is enclosed in double quotes, a double quote appearing within the value MUST be escaped by preceding it with another double quote. SSSOM/TSV parsers MUST strip any enclosing double quotes and escaping double quotes before passing the parsed objects to the application code.","title":"Quoting"},{"location":"spec-formats-tsv/#external-metadata-mode","text":"The metadata block MAY be stored in a separate file from the TSV section, instead of preceding it in the same file as described above. This is called the external metadata mode (by contrast, when the two blocks are in the same file, this is called the embedded metadata mode ). In external mode, the metadata block follows the same rules as described in the Metadata block section above, except that lines MUST NOT start with a # character. It is RECOMMENDED that the file containing the metadata block has the same basename as the file containing the TSV section, with a .sssom.yml extension. When an external metadata file is used, the file containing the TSV section MUST NOT contain anything else than the TSV section. That is, the first line of that file MUST be the header line containing the column names. Implementations SHOULD support reading SSSOM/TSV files in external metadata mode; they MAY support writing SSSOM/TSV files in that mode.","title":"External metadata mode"},{"location":"spec-formats-tsv/#encoding","text":"SSSOM/TSV files MUST be encoded in UTF-8 ( RFC 3629 ). They MUST NOT start with a byte order mark (U+FEFF). This applies to external metadata files as well, when the external metadata mode is used.","title":"Encoding"},{"location":"spec-formats-tsv/#identifiers","text":"All identifiers in a SSSOM/TSV file, that is, all the values of slots typed as EntityReference , MUST be serialised in CURIE syntax . SSSOM/TSV parsers SHOULD reject files containing identifiers serialised as IRIs. As stated in the description of the model ( Identifiers section ), all prefix names used in CURIEs MUST be declared in the curie_map slot of the mapping set object, unless the prefix is a \u201cbuilt-in\u201d prefix (in which case it MAY be omitted). SSSOM/TSV parsers MUST reject a file with undeclared, non-built-in prefix names. A SSSOM/TSV writer SHOULD refuse to serialise a mapping set that contains IRIs that cannot be contracted into CURIEs because there is no suitable prefix declaration in its CURIE map. The use of a custom, ad-hoc logic to infer a possible prefix name where none has been provided (e.g., \u201cif the IRI ends with a ZZZ_NNNNNNN pattern, turn it into a ZZZ:NNNNNNN CURIE\u201d) is strongly discouraged.","title":"Identifiers"},{"location":"spec-formats-tsv/#propagatable-slots","text":"As explained in another section , some slots in the MappingSet class are intended, not to describe the mapping set itself, but to store values that are shared by all mappings in the set. These slots are called the \u201cpropagatable slots\u201d, because their values should be \u201cpropagated\u201d from the mapping set down to the individual mappings.","title":"Propagatable slots"},{"location":"spec-formats-tsv/#propagation","text":"\u201cPropagation\u201d is the operation of assigning to individual mappings in a set the values from the propagatable slots of the set. That operation SHOULD be performed by a SSSOM/TSV parser before passing the parsed objects to the application code. For any given propagatable slot, propagation is only allowed if none of the individual mappings already have their own value in that slot. If any mapping (even only one mapping) has a value in that slot, then the slot MUST be considered as non-propagatable. Otherwise, a propagating SSSOM/TSV parser MUST (1) copy over the value of the propagatable slot on the MappingSet object to the corresponding slot of every individual Mapping objects, and (2) remove the propagated value from the MappingSet object. Implementations that support propagation MUST also support condensation.","title":"Propagation"},{"location":"spec-formats-tsv/#condensation","text":"\u201cCondensation\u201d is the opposite of \u201cpropagation\u201d. It is the operation of assigning common values to the propagatable slots of the set, based on the values of these slots on individual mappings. That operation SHOULD be performed by a SSSOM/TSV writer prior to writing a set into a SSSOM/TSV file, but that behaviour, if available, MUST be deactivatable. For any given propagatable slot, condensation is only allowed if (1) all mappings in the set have the same value, and (2) the mapping set does not already have a value in the slot, unless that value happens to be the same as the value in all mappings. If those two conditions are met, then a condensating SSSOM/TSV writer MUST (1) set the value of the slot on the MappingSet object to the common value of the slot in all mappings, and (2) remove the condensed value from the individual Mapping object. Implementations that support condensation MUST also support propagation.","title":"Condensation"},{"location":"spec-formats-tsv/#non-standard-slots","text":"If an implementation does not support non-standard slots , then: a SSSOM/TSV reader MUST discard any unknown top-level YAML key in the metadata block, and any unknown TSV column in the TSV section; a SSSOM/TSV writer MUST NOT write any unknown top-level YAML key in the metadata block, or any unknown TSV column in the TSV section.","title":"Non-standard slots"},{"location":"spec-formats-tsv/#support-for-defined-extensions","text":"This section applies to implementations that supports defined extensions. A SSSOM/TSV reader MUST check the validity of the extension definitions listed in the extension_definitions slot in the YAML metadata block: definitions with no slot_name , or with a slot_name that is not a XML non-colonized name, MUST be ignored; definitions with any unexpected content (e.g. other keys than just slot_name , property , and type_hint ) MUST be ignored; the property and type_hint values for a given definition, if present, MUST be CURIEs and MUST be resolvable using the mapping set\u2019s curie_map , otherwise the definition MUST be ignored. A SSSOM/TSV reader MUST, upon encountering a non-standard YAML key in the metadata block or an unknown TSV column, check that the name of the key or of the column matches the slot_name of one of the extension definitions listed in the mapping set\u2019s extension_definitions slot. If there is no match, the non-standard slot MUST be discarded. Upon encountering a non-standard slot whose corresponding definition has a type_hint of https://w3id.org/linkml/Uriorcurie , the reader SHOULD check that the value is a CURIE and is resolvable using the mapping set\u2019s curie_map .","title":"Support for defined extensions"},{"location":"spec-formats-tsv/#compatibility-with-previous-versions-of-the-specification","text":"Implementations MUST support the current version of the specification. However, SSSOM/TSV parsers MAY additionally accept to parse files that were compliant to a previous version. This section provides advice for implementations willing to support older versions.","title":"Compatibility with previous versions of the specification"},{"location":"spec-formats-tsv/#compatibility-with-pre-10-versions","text":"","title":"Compatibility with pre-1.0 versions"},{"location":"spec-formats-tsv/#match_type-slot","text":"Initial versions of this specification defined a match_type slot on the Mapping class. The slot was intended to describe the kind of match that led to the mapping, and accepted values from a specific enumeration. In SSSOM 0.9.1, this slot was replaced by the mapping_justification slot, and the enumeration was replaced by terms from the SEMAPV vocabulary . Upon encountering a match_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a mapping_justification slot and convert the enumeration values using the following table: match_type value mapping_justification value Lexical semapv:LexicalMatching Logical semapv:LogicalMatching HumanCurated semapv:ManualMappingCuration Complex semapv:CompositeMatching Unspecified semapv:UnspecifiedMatching SemanticSimilarity semapv:SemanticSimilarityThresholdMatching Any other value in the match_type slot MUST be treated as an error. If the set contains both match_type and mapping_justification slots, it is advised to simply ignore the former.","title":"match_type slot"},{"location":"spec-formats-tsv/#match_term_type-slot","text":"Initial versions of this specification defined a match_term_type slot on the Mapping class. The slot was intended to describe what was being matched. In SSSOM 0.9.1, this slot was replaced by two distinct slots called subject_type and object_type (this notably allowed for the case where the subject and the object are of a different type, something the match_term_type slot did not support). Upon encountering a match_term_type slot, implementations supporting pre-1.0 versions MUST silently transform it into a pair of subject_type and object_type slots, both slots having the same value derived from the original value using the following table: match_term_type value subject_type and object_type value ConceptMatch skos concept ClassMatch owl class ObjectPropertyMatch owl object property IndividualMatch owl named individual DataPropertyMatch owl data property TermMatch rdfs literal Any other value in the match_term_type slot MUST be treated as an error. If the set already contains subject_type and object_type slots, any match_term_type slot can be silently ignored.","title":"match_term_type slot"},{"location":"spec-formats-tsv/#semantic_similarity_score-and-semantic_similarity_measure","text":"Initial versions of this specification defined a semantic_similarity_score slot to store the semantic similarity, and a semantic_similarity_measure slot to describe how the the semantic similarity is assessed. In SSSOM 1.0, those slots were replaced by more generic similarity_score and similarity_measure slots. Upon encountering a semantic_similarity_score (respectively semantic_similarity_measure ) slot, implementations supporting pre-1.0 versions MUST silently transform it into a similarity_score (respectively similarity_measure ) slot. No changes on the value of the slot are required.","title":"semantic_similarity_score and semantic_similarity_measure"},{"location":"spec-formats-tsv/#canonical-sssomtsv-format","text":"This section defines a \u201ccanonical\u201d variant of the SSSOM/TSV format, which has stricter serialisation rules. The purpose of the canonical SSSOM/TSV format is to minimise differences across SSSOM/TSV files that would be induced by small diverging behaviours between different SSSOM/TSV implementations. The rules in this section apply to SSSOM/TSV writers only. SSSOM/TSV writers SHOULD write files in the canonical format, but SSSOM/TSV readers MUST NOT reject a file solely because it does not follow the canonical rules.","title":"Canonical SSSOM/TSV format"},{"location":"spec-formats-tsv/#general-rules","text":"A canonical SSSOM/TSV writer: MUST use line breaks made of only the U+000A character (no U+000D, and no U+000D + U+000A sequences); MUST condense the slots whenever possible, as described in the Condensation section.","title":"General rules"},{"location":"spec-formats-tsv/#rules-for-the-metadata-block","text":"When writing the metadata block, a canonical SSSOM/TSV writer: MUST embed the metadata block in the same file as the TSV section (no external metadata); MUST NOT insert additional space characters between the initial # character and the YAML content; MUST serialise multi-valued slots as YAML \u201cblock sequences\u201d ( YAML Specification \u00a78.2.1 ) \u2013 even when the list of values contains only one item; MUST serialise scalar values in YAML \u201cplain style\u201d ( YAML Specification \u00a77.3.3 ) whenever possible, otherwise in \u201cdouble-quoted style\u201d ( YAML Specification \u00a77.3.1 ); MUST serialise the slots in the order they appear in the \u201cSlots\u201d table , in the documentation for the MappingSet class; MUST NOT include in the CURIE map the prefix names that are considered \u201cbuilt-in\u201d; MUST NOT include in the CURIE map any prefix name that is not used anywhere in the set; MUST sort the prefix names in the CURIE map in lexicographical order. In addition, if extension slots are supported, the writer: MUST write any extension slot in the mapping set after the standard slots; MUST sort the extension slots lexicographically on the property of their corresponding extension definitions; MUST sort extension definitions on their property value; MUST not include an extension definition if the corresponding extension is not used anywhere in the set.","title":"Rules for the metadata block"},{"location":"spec-formats-tsv/#rules-for-the-mappings-block","text":"When writing the mappings block, a canonical SSSOM/TSV writer: MUST quote values only when needed, as per the rules in the Quoting section; MUST serialise floating point values with up to three digits as needed after the decimal point, rounding the last digit to the nearest neighbour (rounding up if both neighbours are equidistant); MUST write the columns in the order the slots appear in the \u201cSlots\u201d table , in the documentation for the Mapping class; MUST sort the mappings in lexicographical order on all their slots, in the order the slots appear in the \u201cSlots\u201d table . In addition, if extension slots are supported, the writer: MUST write any non-standard column after the standard columns; MUST sort the non-standard column lexicographically on the property of their corresponding extension definitions.","title":"Rules for the mappings block"},{"location":"spec-formats-tsv/#examples","text":"This section is non-normative . A SSSOM/TSV file in embedded metadata mode: #curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # orcid: https://orcid.org/ #mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv #mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. #license: https://creativecommons.org/licenses/by/4.0/ #mapping_date: 2022-05-02 subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 The same set in external metadata mode: first the file containing the metadata block: curie_map: FOODON: http://purl.obolibrary.org/obo/FOODON_ KF_FOOD: https://kewl-foodie.inc/food/ orcid: https://orcid.org/ mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data. license: https://creativecommons.org/licenses/by/4.0/ mapping_date: 2022-05-02 then the file containing the mappings block: subject_id subject_label predicate_id object_id object_label mapping_justification author_id confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 1","title":"Examples"},{"location":"spec-formats-tsv/#invalid-examples","text":"Illegal case 1: the metadata block cannot contains comments that are not part of the metadata. # This is a comment that does not belong here. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" # This is another comment that also does not belong here. #creator_id: # - \"orcid:0000-0002-7356-1779\" Illegal case 2: there should be no empty lines. #curie_map: # HP: \"http://purl.obolibrary.org/obo/HP_\" # MP: \"http://purl.obolibrary.org/obo/MP_\" # orcid: \"https://orcid.org/\" #creator_id: # - \"orcid:0000-0002-7356-1779\"","title":"Invalid examples"},{"location":"spec-formats/","text":"SSSOM serialisation formats The SSSOM standard defines the following serialisation formats for storing and exchanging mapping sets: the SSSOM/TSV format; the SSSOM JSON format; and the OWL/RDF format. Implementations MUST support the SSSOM/TSV format. They MAY support the other formats.","title":"Introduction"},{"location":"spec-formats/#sssom-serialisation-formats","text":"The SSSOM standard defines the following serialisation formats for storing and exchanging mapping sets: the SSSOM/TSV format; the SSSOM JSON format; and the OWL/RDF format. Implementations MUST support the SSSOM/TSV format. They MAY support the other formats.","title":"SSSOM serialisation formats"},{"location":"spec-intro/","text":"Specification of the SSSOM standard This document is the official specification for the SSSOM standard. It is divided in two sections covering the two different components of the standard: the specification for the data model , to manipulate SSSOM mappings and mapping sets in your programs; the specification for the serialisation formats , to read, write, and exchange SSSOM mapping sets. Both sections are normative . Conventions used in this document Key words Throughout the specification, the key words \u201cMUST\u201d, \u201cMUST NOT\u201d, \u201cREQUIRED\u201d, \u201cSHALL\u201d, \u201cSHALL NOT\u201d, \u201cSHOULD\u201d, \u201cSHOULD NOT\u201d, \u201cRECOMMENDED\u201d, \u201cNOT RECOMMENDED\u201d, \u201cMAY\u201d, and \u201cOPTIONAL\u201d are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals, as shown here. IRI prefixes Throughout the specification, the following IRI prefix names are used: Prefix name IRI prefix owl http://www.w3.org/2002/07/owl# rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs http://www.w3.org/2000/01/rdf-schema# semapv https://w3id.org/semapv/vocab/ skos http://www.w3.org/2004/02/skos/core# sssom https://w3id.org/sssom/ xsd http://www.w3.org/2001/XMLSchema# linkml https://w3id.org/linkml/","title":"Introduction"},{"location":"spec-intro/#specification-of-the-sssom-standard","text":"This document is the official specification for the SSSOM standard. It is divided in two sections covering the two different components of the standard: the specification for the data model , to manipulate SSSOM mappings and mapping sets in your programs; the specification for the serialisation formats , to read, write, and exchange SSSOM mapping sets. Both sections are normative .","title":"Specification of the SSSOM standard"},{"location":"spec-intro/#conventions-used-in-this-document","text":"","title":"Conventions used in this document"},{"location":"spec-intro/#key-words","text":"Throughout the specification, the key words \u201cMUST\u201d, \u201cMUST NOT\u201d, \u201cREQUIRED\u201d, \u201cSHALL\u201d, \u201cSHALL NOT\u201d, \u201cSHOULD\u201d, \u201cSHOULD NOT\u201d, \u201cRECOMMENDED\u201d, \u201cNOT RECOMMENDED\u201d, \u201cMAY\u201d, and \u201cOPTIONAL\u201d are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals, as shown here.","title":"Key words"},{"location":"spec-intro/#iri-prefixes","text":"Throughout the specification, the following IRI prefix names are used: Prefix name IRI prefix owl http://www.w3.org/2002/07/owl# rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs http://www.w3.org/2000/01/rdf-schema# semapv https://w3id.org/semapv/vocab/ skos http://www.w3.org/2004/02/skos/core# sssom https://w3id.org/sssom/ xsd http://www.w3.org/2001/XMLSchema# linkml https://w3id.org/linkml/","title":"IRI prefixes"},{"location":"spec-model/","text":"The SSSOM data model The SSSOM data model (hereafter \u201cthe model\u201d) defines the data structure to represent and manipulate SSSOM concepts. The model is formally described as a LinkML schema, from which the documentation is derived. This section provides an overview of the model and supplementary informations that may not be found in the schema (and its derived documentation) itself. Of note, the schema, not this section, is always the authoritative source of truth for all questions pertaining to the model. Overview The model consists in a handful of classes, the most important of them being the Mapping class and the MappingSet class . Any SSSOM implementation MUST support those two classes and all their slots; support for the other classes is OPTIONAL. The Mapping class represents an individual mapping. Fundamental slots in that class are: subject_id and object_id , referring to the entities being mapped to each other; predicate_id , referring to the relationship between the mapped entities; mapping_justification , which should provide the justification for the mapping. Those slots are mandatory (including the mapping_justification slot: the SSSOM standard posits that there can be no mapping without some form of justification) and an implementation MUST NOT allow the creation of a mapping object that does not have a value for any one of them. Other slots are intended to provide further details about a mapping. Those \u201cfurther details\u201d are sometimes referred to as \u201cmapping metadata\u201d, though the SSSOM standard makes no formal distinction between \u201cdata\u201d and \u201cmetadata\u201d \u2013 there are only \u201cdata about a mapping\u201d. The MappingSet class represents, well, a set of individual mappings, which are contained in the mappings slot (a list of Mapping instances). Other slots in that class are intended either to provide further details about the set itself (sometimes referred to as \u201cmapping set metadata\u201d, with the same caveat as above regarding the data/metadata distinction), or to provide common details for all the mappings in the set (see the Propagation of mapping set slots section further below for details). Of note, within a set, a mapping may not necessarily be uniquely identified by the combination of its four mandatory slots ( subject_id , predicate_id , object_id , and mapping_justification ). A set may very well contain several mappings with the same subject, predicate, object, and justification, but that differ on some of the other, complementary slots. Identifiers Throughout the model, identifiers to external resources are represented using the custom type EntityReference (based on the LinkML type uriorcurie ), which accepts both full-length IRIs and CURIEs as possible identifier formats. (Note however that serialisation formats may mandate the use of one identifier format over the other; for example, the SSSOM/TSV format requires the systematic use of CURIEs, whereas the OWL/RDF format conversely requires the systematic use of IRIs). Whenever the CURIE syntax is used in a mapping set (whether this is by choice of the SSSOM producer, or because it is mandated by the serialisation format), all CURIEs MUST be unambiguously resolvable into corresponding full-length IRIs without requiring any external resources. This means that any prefix name used MUST be properly declared in the set\u2019s curie_map slot, which is a dictionary associating a prefix name to an IRI prefix. By exception, prefix names listed in the table found in the IRI prefixes section are considered \u201cbuilt-in\u201d. As such, they MAY be omitted from the curie_map . If they are not omitted, they MUST point to the same IRI prefixes as in the aforementioned table. Propagation of mapping set slots As mentioned briefly above, there are two different types of slots in the MappingSet class: slots that provide informations about the set itself; slots that provide informations about all the mappings in the set. The latter are called \u201cpropagatable slots\u201d. 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 , mapping_tool , mapping_tool_version , object_match_field , object_preprocessing , object_source , object_source_version , object_type , subject_match_field , subject_preprocessing , subject_source , subject_source_version , subject_type . 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. Slots that are not in the above list (\u201cnon-propagatable slots\u201d) describe the mapping set itself, not the mappings it contains, even if the slot also exists on the Mapping class. For example, the creator_id slot, when used in the MappingSet class, is intended to refer to the creators of the set, not the creators of the individual mappings (which may be different, and which are listed in the creator_id slot of every mapping). Allowed and common mapping predicates Implementations MUST accept any arbitrary predicate in the predicate_id slot. The following mapping predicates are considered common, and implementations MAY encourage users to use them: Predicate Description owl:sameAs The subject and the object are instances (OWL individuals), and the two instances are the same. owl:equivalentClass The subject and the object are OWL classes, and the two classes are the same. owl:equivalentProperty The subject and the object are OWL object, data, or annotation properties, and the two properties are the same. rdfs:subClassOf The subject and the object are OWL classes, and the subject is a subclass of the object. rdfs:subPropertyOf The subject and the object are OWL object, data, or annotation properties, and the subject is a subproperty of the object. skos:relatedMatch The subject and the object are associated in some unspecified way. skos:closeMatch The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. skos:exactMatch The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. skos:narrowMatch The object is a narrower concept than the subject. skos:broadMatch The object is a broader concept than the subject. oboInOwl:hasDbXref Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go). rdfs:seeAlso The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. In addition, predicates from the following sources MAY also be encouraged: any relation from the Relation Ontology (RO) ; any relation under skos:mappingRelation in the Semantic Mapping Vocabulary . Literal mappings The SSSOM model is primarily intended to represent mappings between semantic entities. However, it may also be used to represent mappings where at least one side is a literal string that does not have an identifier of its own. Any such mapping is henceforth called a literal mapping . To represent a mapping whose subject (resp. object) is a literal: the subject_type (resp. object_type ) slot MUST be set to rdfs literal ; the subject_label (resp. object_label ) slot MUST be set to the literal itself; the subject_id (resp. object_id ) slot MAY be left empty. The last point is an exception to the normal rules about required slots, which state that a mapping must always have a subject_id and an object_id . Implementations MUST accept a mapping without a subject_id (resp. object_id ) if and only if the subject_type (resp. object_type ) slot is set to rdfs literal . All other slots in the Mapping class may be used normally in a literal mapping, with the same meaning as for a non-literal mapping. When computing the cardinality of mappings in a set (e.g. to set the value of the mapping_cardinality slot), if the mapping has a literal subject (resp. object), then the subject_label (resp. object_label ) slot must be used for determining the number of occurrences of the subject (resp. object) in the set. Representing unmapped entities The special value sssom:NoTermFound MAY be used as the object_id of a mapping to explicitly state that the subject of said mapping cannot be mapped to any entity in the domain represented by the object_source slot. Likewise, the sssom:NoTermFound value MAY be used as the subject_id of a mapping to state that the object of said mapping cannot be mapped to any entity in the domain represented by the subject_source slot. When that special value is used as the subject_id (respectively object_id ), the subject_source (respectively object_source ) slot SHOULD be defined. The sssom:NoTermFound value MUST NOT be used in any other slot than subject_id or object_id . The meaning of the NOT predicate modifier in a mapping that refers to sssom:NoTermFound is unspecified. When computing cardinality values (to fill the mapping_cardinality slot), mappings that refer to sssom:NoTermFound MUST be ignored. Non-standard slots Implementations are only REQUIRED to support the standard metadata slots defined in the SSSOM LinkML schema. However, implementations MAY support the use of supplementary, non-standard slots (hereafter called extension slots or simply extensions ). There are two types of extension slots: defined extension slots and undefined extension slots. Defined extensions Defined extensions are non-standard slots that are explicitly declared (or, defined ) before being used. Implementations SHOULD support the use of defined extensions. Extensions are defined in the extension_definition slot of the MappingSet object. Each definition is comprised of three elements: the name of the slot, as it will appear when used in a mapping set ( slot_name ); a property intended to specify the meaning of the slot ( property ); the type of values expected by the slot ( type_hint ). A definition MUST have at least a slot_name . The name MUST be a XML \u201cnon-colonized name\u201d (\u201cNCName\u201d, see Namespaces in XML, \u00a72 ). The name MUST NOT match the name of an existing standard slot. To avoid any conflicy with a future version of the SSSOM specification (which could introduce new standard slot names), implementations are strongly encouraged to craft extension slot names that start with the ext_ prefix. No new standard slot with a name starting with ext_ will ever be introduced in any future version of the standard. (This is an advice for SSSOM producers only; SSSOM consumers MUST NOT reject an extension slot solely on the basis that its name does not start with ext .) A definition SHOULD have a property . If it does not, implementations MUST automatically construct a default property by concatenating the prefix http://sssom.invalid/ with the name of the extension. The slot name and the property MUST be unique to each definition. No two definitions can share the same name and/or the same property. A definition MAY have a type_hint . If it does not, a default type of http://www.w3.org/2001/XMLSchema#string is assumed. Once defined, an extension slot may be used as a supplementary slot in either the Mapping class or the MappingSet class (or both), as if it was a normal, standard slot. How those slots are represented internally and provided to client code is left at the discretion of the implementations. Undefined extensions Undefined extensions are non-standard slots that are not explicitly defined as described in the previous section. Implementations MAY support undefined extensions. Upon encountering a non-standard slot that is not a defined extension, an implementation that supports undefined extensions MUST behave as if the slot had been defined with: a property constructed by catenating the prefix http://sssom.invalid/ to the name of the slot; a type_hint of http://www.w3.org/2001/XMLSchema#string . Restrictions on the values of extension slots General restrictions The following restrictions apply to all extension slots, regardless of whether they are defined or undefined. Each mapping set and each mapping can have at most one value for each extension slot. The expected behaviour upon encountering a repeated extension slot is unspecified. An extension value MUST be either a string or an instance of a simple data type such as a numerical value (integer or floating point), a boolean value, or a date or datetime value. In particular, composite data structures (e.g. lists or dictionaries) MUST NOT be used as extension values. It is always possible to use arbitrarily complex values by encoding them as literal strings. However, how complex values would be encoded is out of scope of this specification; implementations MUST treat such values as opaque strings. Further restrictions for typed defined extensions If a defined extension slot has a type_hint other than http://www.w3.org/2001/XMLSchema#string , implementations MAY enforce further constraints on extension values based on the type hint, according to the following table: Type hint Constraints http://www.w3.org/2001/XMLSchema#integer Implementations MAY check that the value is an integer http://www.w3.org/2001/XMLSchema#double Implementations MAY check that the value is a floating number http://www.w3.org/2001/XMLSchema#boolean Implementations MAY check that the value is either true or false http://www.w3.org/2001/XMLSchema#date Implementations MAY check that the value is a date in the ISO 8601 format ( yyyy-mm-dd ) http://www.w3.org/2001/XMLSchema#datetime Implementations MAY check that the value is a date and time value in the ISO 8601 format ( yyyy-mm-ddThh:mm:ssTZ ) Implementations MAY decide to recognise more types and to enforce type-specific constraints. For example, an implementation could recognise the type http://www.w3.org/2001/XMLSchema#negativeInteger and check that the value starts with a minus sign.","title":"Introduction"},{"location":"spec-model/#the-sssom-data-model","text":"The SSSOM data model (hereafter \u201cthe model\u201d) defines the data structure to represent and manipulate SSSOM concepts. The model is formally described as a LinkML schema, from which the documentation is derived. This section provides an overview of the model and supplementary informations that may not be found in the schema (and its derived documentation) itself. Of note, the schema, not this section, is always the authoritative source of truth for all questions pertaining to the model.","title":"The SSSOM data model"},{"location":"spec-model/#overview","text":"The model consists in a handful of classes, the most important of them being the Mapping class and the MappingSet class . Any SSSOM implementation MUST support those two classes and all their slots; support for the other classes is OPTIONAL. The Mapping class represents an individual mapping. Fundamental slots in that class are: subject_id and object_id , referring to the entities being mapped to each other; predicate_id , referring to the relationship between the mapped entities; mapping_justification , which should provide the justification for the mapping. Those slots are mandatory (including the mapping_justification slot: the SSSOM standard posits that there can be no mapping without some form of justification) and an implementation MUST NOT allow the creation of a mapping object that does not have a value for any one of them. Other slots are intended to provide further details about a mapping. Those \u201cfurther details\u201d are sometimes referred to as \u201cmapping metadata\u201d, though the SSSOM standard makes no formal distinction between \u201cdata\u201d and \u201cmetadata\u201d \u2013 there are only \u201cdata about a mapping\u201d. The MappingSet class represents, well, a set of individual mappings, which are contained in the mappings slot (a list of Mapping instances). Other slots in that class are intended either to provide further details about the set itself (sometimes referred to as \u201cmapping set metadata\u201d, with the same caveat as above regarding the data/metadata distinction), or to provide common details for all the mappings in the set (see the Propagation of mapping set slots section further below for details). Of note, within a set, a mapping may not necessarily be uniquely identified by the combination of its four mandatory slots ( subject_id , predicate_id , object_id , and mapping_justification ). A set may very well contain several mappings with the same subject, predicate, object, and justification, but that differ on some of the other, complementary slots.","title":"Overview"},{"location":"spec-model/#identifiers","text":"Throughout the model, identifiers to external resources are represented using the custom type EntityReference (based on the LinkML type uriorcurie ), which accepts both full-length IRIs and CURIEs as possible identifier formats. (Note however that serialisation formats may mandate the use of one identifier format over the other; for example, the SSSOM/TSV format requires the systematic use of CURIEs, whereas the OWL/RDF format conversely requires the systematic use of IRIs). Whenever the CURIE syntax is used in a mapping set (whether this is by choice of the SSSOM producer, or because it is mandated by the serialisation format), all CURIEs MUST be unambiguously resolvable into corresponding full-length IRIs without requiring any external resources. This means that any prefix name used MUST be properly declared in the set\u2019s curie_map slot, which is a dictionary associating a prefix name to an IRI prefix. By exception, prefix names listed in the table found in the IRI prefixes section are considered \u201cbuilt-in\u201d. As such, they MAY be omitted from the curie_map . If they are not omitted, they MUST point to the same IRI prefixes as in the aforementioned table.","title":"Identifiers"},{"location":"spec-model/#propagation-of-mapping-set-slots","text":"As mentioned briefly above, there are two different types of slots in the MappingSet class: slots that provide informations about the set itself; slots that provide informations about all the mappings in the set. The latter are called \u201cpropagatable slots\u201d. 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 , mapping_tool , mapping_tool_version , object_match_field , object_preprocessing , object_source , object_source_version , object_type , subject_match_field , subject_preprocessing , subject_source , subject_source_version , subject_type . 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. Slots that are not in the above list (\u201cnon-propagatable slots\u201d) describe the mapping set itself, not the mappings it contains, even if the slot also exists on the Mapping class. For example, the creator_id slot, when used in the MappingSet class, is intended to refer to the creators of the set, not the creators of the individual mappings (which may be different, and which are listed in the creator_id slot of every mapping).","title":"Propagation of mapping set slots"},{"location":"spec-model/#allowed-and-common-mapping-predicates","text":"Implementations MUST accept any arbitrary predicate in the predicate_id slot. The following mapping predicates are considered common, and implementations MAY encourage users to use them: Predicate Description owl:sameAs The subject and the object are instances (OWL individuals), and the two instances are the same. owl:equivalentClass The subject and the object are OWL classes, and the two classes are the same. owl:equivalentProperty The subject and the object are OWL object, data, or annotation properties, and the two properties are the same. rdfs:subClassOf The subject and the object are OWL classes, and the subject is a subclass of the object. rdfs:subPropertyOf The subject and the object are OWL object, data, or annotation properties, and the subject is a subproperty of the object. skos:relatedMatch The subject and the object are associated in some unspecified way. skos:closeMatch The subject and the object are sufficiently similar that they can be used interchangeably in some information retrieval applications. skos:exactMatch The subject and the object can, with a high degree of confidence, be used interchangeably across a wide range of information retrieval applications. skos:narrowMatch The object is a narrower concept than the subject. skos:broadMatch The object is a broader concept than the subject. oboInOwl:hasDbXref Two terms are related in some way. The meaning is frequently consistent across a single set of mappings. Note this property is often overloaded even where the terms are of a different nature (e.g. interpro2go). rdfs:seeAlso The subject and the object are associated in some unspecified way. The object IRI often resolves to a resource on the web that provides additional information. In addition, predicates from the following sources MAY also be encouraged: any relation from the Relation Ontology (RO) ; any relation under skos:mappingRelation in the Semantic Mapping Vocabulary .","title":"Allowed and common mapping predicates"},{"location":"spec-model/#literal-mappings","text":"The SSSOM model is primarily intended to represent mappings between semantic entities. However, it may also be used to represent mappings where at least one side is a literal string that does not have an identifier of its own. Any such mapping is henceforth called a literal mapping . To represent a mapping whose subject (resp. object) is a literal: the subject_type (resp. object_type ) slot MUST be set to rdfs literal ; the subject_label (resp. object_label ) slot MUST be set to the literal itself; the subject_id (resp. object_id ) slot MAY be left empty. The last point is an exception to the normal rules about required slots, which state that a mapping must always have a subject_id and an object_id . Implementations MUST accept a mapping without a subject_id (resp. object_id ) if and only if the subject_type (resp. object_type ) slot is set to rdfs literal . All other slots in the Mapping class may be used normally in a literal mapping, with the same meaning as for a non-literal mapping. When computing the cardinality of mappings in a set (e.g. to set the value of the mapping_cardinality slot), if the mapping has a literal subject (resp. object), then the subject_label (resp. object_label ) slot must be used for determining the number of occurrences of the subject (resp. object) in the set.","title":"Literal mappings"},{"location":"spec-model/#representing-unmapped-entities","text":"The special value sssom:NoTermFound MAY be used as the object_id of a mapping to explicitly state that the subject of said mapping cannot be mapped to any entity in the domain represented by the object_source slot. Likewise, the sssom:NoTermFound value MAY be used as the subject_id of a mapping to state that the object of said mapping cannot be mapped to any entity in the domain represented by the subject_source slot. When that special value is used as the subject_id (respectively object_id ), the subject_source (respectively object_source ) slot SHOULD be defined. The sssom:NoTermFound value MUST NOT be used in any other slot than subject_id or object_id . The meaning of the NOT predicate modifier in a mapping that refers to sssom:NoTermFound is unspecified. When computing cardinality values (to fill the mapping_cardinality slot), mappings that refer to sssom:NoTermFound MUST be ignored.","title":"Representing unmapped entities"},{"location":"spec-model/#non-standard-slots","text":"Implementations are only REQUIRED to support the standard metadata slots defined in the SSSOM LinkML schema. However, implementations MAY support the use of supplementary, non-standard slots (hereafter called extension slots or simply extensions ). There are two types of extension slots: defined extension slots and undefined extension slots.","title":"Non-standard slots"},{"location":"spec-model/#defined-extensions","text":"Defined extensions are non-standard slots that are explicitly declared (or, defined ) before being used. Implementations SHOULD support the use of defined extensions. Extensions are defined in the extension_definition slot of the MappingSet object. Each definition is comprised of three elements: the name of the slot, as it will appear when used in a mapping set ( slot_name ); a property intended to specify the meaning of the slot ( property ); the type of values expected by the slot ( type_hint ). A definition MUST have at least a slot_name . The name MUST be a XML \u201cnon-colonized name\u201d (\u201cNCName\u201d, see Namespaces in XML, \u00a72 ). The name MUST NOT match the name of an existing standard slot. To avoid any conflicy with a future version of the SSSOM specification (which could introduce new standard slot names), implementations are strongly encouraged to craft extension slot names that start with the ext_ prefix. No new standard slot with a name starting with ext_ will ever be introduced in any future version of the standard. (This is an advice for SSSOM producers only; SSSOM consumers MUST NOT reject an extension slot solely on the basis that its name does not start with ext .) A definition SHOULD have a property . If it does not, implementations MUST automatically construct a default property by concatenating the prefix http://sssom.invalid/ with the name of the extension. The slot name and the property MUST be unique to each definition. No two definitions can share the same name and/or the same property. A definition MAY have a type_hint . If it does not, a default type of http://www.w3.org/2001/XMLSchema#string is assumed. Once defined, an extension slot may be used as a supplementary slot in either the Mapping class or the MappingSet class (or both), as if it was a normal, standard slot. How those slots are represented internally and provided to client code is left at the discretion of the implementations.","title":"Defined extensions"},{"location":"spec-model/#undefined-extensions","text":"Undefined extensions are non-standard slots that are not explicitly defined as described in the previous section. Implementations MAY support undefined extensions. Upon encountering a non-standard slot that is not a defined extension, an implementation that supports undefined extensions MUST behave as if the slot had been defined with: a property constructed by catenating the prefix http://sssom.invalid/ to the name of the slot; a type_hint of http://www.w3.org/2001/XMLSchema#string .","title":"Undefined extensions"},{"location":"spec-model/#restrictions-on-the-values-of-extension-slots","text":"","title":"Restrictions on the values of extension slots"},{"location":"spec-model/#general-restrictions","text":"The following restrictions apply to all extension slots, regardless of whether they are defined or undefined. Each mapping set and each mapping can have at most one value for each extension slot. The expected behaviour upon encountering a repeated extension slot is unspecified. An extension value MUST be either a string or an instance of a simple data type such as a numerical value (integer or floating point), a boolean value, or a date or datetime value. In particular, composite data structures (e.g. lists or dictionaries) MUST NOT be used as extension values. It is always possible to use arbitrarily complex values by encoding them as literal strings. However, how complex values would be encoded is out of scope of this specification; implementations MUST treat such values as opaque strings.","title":"General restrictions"},{"location":"spec-model/#further-restrictions-for-typed-defined-extensions","text":"If a defined extension slot has a type_hint other than http://www.w3.org/2001/XMLSchema#string , implementations MAY enforce further constraints on extension values based on the type hint, according to the following table: Type hint Constraints http://www.w3.org/2001/XMLSchema#integer Implementations MAY check that the value is an integer http://www.w3.org/2001/XMLSchema#double Implementations MAY check that the value is a floating number http://www.w3.org/2001/XMLSchema#boolean Implementations MAY check that the value is either true or false http://www.w3.org/2001/XMLSchema#date Implementations MAY check that the value is a date in the ISO 8601 format ( yyyy-mm-dd ) http://www.w3.org/2001/XMLSchema#datetime Implementations MAY check that the value is a date and time value in the ISO 8601 format ( yyyy-mm-ddThh:mm:ssTZ ) Implementations MAY decide to recognise more types and to enforce type-specific constraints. For example, an implementation could recognise the type http://www.w3.org/2001/XMLSchema#negativeInteger and check that the value starts with a minus sign.","title":"Further restrictions for typed defined extensions"},{"location":"sssom/","text":"sssom Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) URI: https://w3id.org/sssom/schema/","title":"sssom"},{"location":"sssom/#sssom","text":"Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM) URI: https://w3id.org/sssom/schema/","title":"sssom"},{"location":"subject_category/","text":"subject_category URI : sssom:subject_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.) See Also These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256 Schema developer documentation LinkML source name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category domain_of: - mapping range: string","title":"subject_category"},{"location":"subject_category/#subject_category","text":"URI : sssom:subject_category Applicable to : Mapping Description The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases.","title":"subject_category"},{"location":"subject_category/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_category/#examples","text":"Example: UBERON:0001062 Example value : UBERON:0001062 Description : (The CURIE of the Uberon term for \"anatomical entity\".) Example: anatomical entity Example value : anatomical entity Description : (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) Example: biolink:Gene Example value : biolink:Gene Description : (The CURIE of the biolink class for genes.)","title":"Examples"},{"location":"subject_category/#see-also","text":"These are some relevant resources you might find useful to get additional information about the element, such as example implementations, issues and pull requests. https://github.com/mapping-commons/sssom/issues/13 https://github.com/mapping-commons/sssom/issues/256","title":"See Also"},{"location":"subject_category/#schema-developer-documentation","text":"LinkML source name: subject_category description: The conceptual category to which the subject belongs to. This can be a string denoting the category or a term from a controlled vocabulary. This slot is deliberately underspecified. Conceptual categories can range from those that are found in general upper ontologies such as BFO (e.g. process, temporal region, etc) to those that serve as upper ontologies in specific domains, such as COB or BioLink (e.g. gene, disease, chemical entity). The purpose of this optional field is documentation for human reviewers - when a category is known and documented clearly, the cost of interpreting and evaluating the mapping decreases. examples: - value: UBERON:0001062 description: (The CURIE of the Uberon term for \"anatomical entity\".) - value: anatomical entity description: (A string, rather than ID, describing the \"anatomical entity\" category. This is possible, but less preferred than using an ID.) - value: biolink:Gene description: (The CURIE of the biolink class for genes.) from_schema: https://w3id.org/sssom/schema/ see_also: - https://github.com/mapping-commons/sssom/issues/13 - https://github.com/mapping-commons/sssom/issues/256 rank: 1000 alias: subject_category domain_of: - mapping range: string","title":"Schema developer documentation"},{"location":"subject_id/","text":"subject_id URI : owl:annotatedSource Applicable to : Mapping Description The ID of the subject of the mapping. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' Schema developer documentation LinkML source name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id domain_of: - mapping range: EntityReference","title":"subject_id"},{"location":"subject_id/#subject_id","text":"URI : owl:annotatedSource Applicable to : Mapping Description The ID of the subject of the mapping.","title":"subject_id"},{"location":"subject_id/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_id/#examples","text":"Example: HP:0009894 Example value : HP:0009894 Description : The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears'","title":"Examples"},{"location":"subject_id/#schema-developer-documentation","text":"LinkML source name: subject_id description: The ID of the subject of the mapping. examples: - value: HP:0009894 description: The CURIE denoting the Human Phenotype Ontology concept of 'Thickened ears' from_schema: https://w3id.org/sssom/schema/ mappings: - owl:annotatedSource rank: 1000 slot_uri: owl:annotatedSource alias: subject_id domain_of: - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_label/","text":"subject_label URI : sssom:subject_label Applicable to : Mapping Description The label of subject of the mapping Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required. Examples Example: Thickened ears Example value : Thickened ears Schema developer documentation LinkML source name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label domain_of: - mapping range: string recommended: true","title":"subject_label"},{"location":"subject_label/#subject_label","text":"URI : sssom:subject_label Applicable to : Mapping Description The label of subject of the mapping","title":"subject_label"},{"location":"subject_label/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Recommended (We suggest adding this element to the mapping or mapping set, but it is not required.","title":"Properties"},{"location":"subject_label/#examples","text":"Example: Thickened ears Example value : Thickened ears","title":"Examples"},{"location":"subject_label/#schema-developer-documentation","text":"LinkML source name: subject_label description: The label of subject of the mapping examples: - value: Thickened ears from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_label domain_of: - mapping range: string recommended: true","title":"Schema developer documentation"},{"location":"subject_match_field/","text":"subject_match_field URI : sssom:subject_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the subject) that was used for the match. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field domain_of: - mapping set - mapping range: EntityReference","title":"subject_match_field"},{"location":"subject_match_field/#subject_match_field","text":"URI : sssom:subject_match_field Applicable to : MappingSet , Mapping Description A list of properties (term annotations on the subject) that was used for the match.","title":"subject_match_field"},{"location":"subject_match_field/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_match_field/#schema-developer-documentation","text":"LinkML source name: subject_match_field instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: A list of properties (term annotations on the subject) that was used for the match. from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_match_field domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_preprocessing/","text":"subject_preprocessing URI : sssom:subject_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval Schema developer documentation LinkML source name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"subject_preprocessing"},{"location":"subject_preprocessing/#subject_preprocessing","text":"URI : sssom:subject_preprocessing Applicable to : MappingSet , Mapping Description Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows.","title":"subject_preprocessing"},{"location":"subject_preprocessing/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Multivalued : True. If the element is multivalued, more than one value can be attached to the same field. In the TSV format, these are | separated. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_preprocessing/#examples","text":"Example: semapv:Stemming Example value : semapv:Stemming Example: semapv:StopWordRemoval Example value : semapv:StopWordRemoval","title":"Examples"},{"location":"subject_preprocessing/#schema-developer-documentation","text":"LinkML source name: subject_preprocessing instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Method of preprocessing applied to the fields of the subject. If different preprocessing steps were performed on different fields, it is recommended to store the match in separate rows. examples: - value: semapv:Stemming - value: semapv:StopWordRemoval from_schema: https://w3id.org/sssom/schema/ rank: 1000 multivalued: true alias: subject_preprocessing domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_source/","text":"subject_source URI : sssom:subject_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the subject. Properties Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource. Schema developer documentation LinkML source name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source domain_of: - mapping set - mapping range: EntityReference","title":"subject_source"},{"location":"subject_source/#subject_source","text":"URI : sssom:subject_source Applicable to : MappingSet , Mapping Description URI of vocabulary or identifier source for the subject.","title":"subject_source"},{"location":"subject_source/#properties","text":"Range : EntityReference . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_source/#examples","text":"Example: obo:mondo.owl Example value : obo:mondo.owl Description : A persistent OBO CURIE pointing to the latest version of the Mondo ontology. Example: wikidata:Q7876491 Example value : wikidata:Q7876491 Description : A Wikidata identifier for the Uberon ontology resource.","title":"Examples"},{"location":"subject_source/#schema-developer-documentation","text":"LinkML source name: subject_source instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: URI of vocabulary or identifier source for the subject. examples: - value: obo:mondo.owl description: A persistent OBO CURIE pointing to the latest version of the Mondo ontology. - value: wikidata:Q7876491 description: A Wikidata identifier for the Uberon ontology resource. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source domain_of: - mapping set - mapping range: EntityReference","title":"Schema developer documentation"},{"location":"subject_source_version/","text":"subject_source_version URI : sssom:subject_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the subject term. Properties Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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') Schema developer documentation LinkML source name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version domain_of: - mapping set - mapping range: string","title":"subject_source_version"},{"location":"subject_source_version/#subject_source_version","text":"URI : sssom:subject_source_version Applicable to : MappingSet , Mapping Description Version IRI or version string of the source of the subject term.","title":"subject_source_version"},{"location":"subject_source_version/#properties","text":"Range : String . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_source_version/#examples","text":"Example: http://purl.obolibrary.org/obo/mondo/releases/2021-01-30/mondo.owl Example 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')","title":"Examples"},{"location":"subject_source_version/#schema-developer-documentation","text":"LinkML source name: subject_source_version instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: Version IRI or version string of the source of the subject term. 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') from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_source_version domain_of: - mapping set - mapping range: string","title":"Schema developer documentation"},{"location":"subject_type/","text":"subject_type URI : sssom:subject_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped. Properties Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Examples Example: owl:Class Example value : owl:Class Schema developer documentation LinkML source name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type domain_of: - mapping set - mapping range: entity_type_enum","title":"subject_type"},{"location":"subject_type/#subject_type","text":"URI : sssom:subject_type Applicable to : MappingSet , Mapping Description The type of entity that is being mapped.","title":"subject_type"},{"location":"subject_type/#properties","text":"Range : EntityTypeEnum . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"subject_type/#examples","text":"Example: owl:Class Example value : owl:Class","title":"Examples"},{"location":"subject_type/#schema-developer-documentation","text":"LinkML source name: subject_type instantiates: - sssom:Propagatable annotations: propagated: tag: propagated value: true description: The type of entity that is being mapped. examples: - value: owl:Class from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: subject_type domain_of: - mapping set - mapping range: entity_type_enum","title":"Schema developer documentation"},{"location":"toolkit/","text":"The SSSOM Toolkit In the following we will give a brief introduction into the SSSOM toolkit. For more detailed documentation please refer to https://mapping-commons.github.io/sssom-py. Pre-requisites Complete the basic SSSOM tutorial Install SSSOM toolkit . Alternatively, you can install the Ontology Development Kit (ODK) and follow the tutorial using its docker image . We are assuming a Unix shell for this tutorial, but most of the principles should apply to the Windows CMD as well. Windows users may prefer to install the ODK (see above). Overview SSSOM toolkit (STK), previously known as sssom-py , is a set of utility methods for processing SSSOM files, packaged as a Command Line Client (CLI) and a python package . In the following, we will extract mappings from an ontology an process them with the CLI. The goal is to give a sense of the functionality of the toolkit. Additional and more up-to-date information on usage can be found here . Table of Contents parse : Extracting mappings from an external source merge : Combining mappings from several sources convert : Converting an SSSOM mapping table into different formats Extracting mappings from an external source One key issue developers are faced with is to convert various different mapping formats into a common representation (e.g. SSSOM). The SSSOM toolkit (STK) already implements a number of commonly use mapping formats: OWL Ontologies Alignment API Format (format used by the Ontology Alignment Evaluation Initiative, OAEI) Parsers for SNOMED mapping format and FHIR Concept Map are in the making , June 2022. Here we use Uberon, an anatomy ontology in the biomedical domain. wget http://purl.obolibrary.org/obo/uberon/uberon-base.json -O uberon-base.json Feel free to download the file manually if you do not have wget installed. Now use sssom parse to extract all the mappings provided by the ontology. As there are multiple json based formats that can be parsed, you have to tell sssom which format you are using: --input-format obographs-json . sssom parse uberon-base.json --input-format obographs-json --output uberon.sssom.tsv From a CLI design perspective we already notice a few things: uberon-base.json is passed to the STK as an argument (without an option like -i ). This is the case for most primary inputs (mapping tables, source files) througout the SSSOM client. The output generated by the above command is large. There seem to be a lot of messages where some URL does not follow any known prefixes : WARNING:root:http://dbpedia.org/ontology/AnatomicalStructure does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nlx_subcell_100205 does not follow any known prefixes WARNING:root:http://neurolex.org/wiki/Category:Embryonic_organism does not follow any known prefixes WARNING:root:http://www.informatics.jax.org/cookbook/figures/figure20.shtml does not follow any known prefixes WARNING:root:http://mbe.oxfordjournals.org/content/26/3/613/F1.large.jpg does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/glossary/images/450x218xEctocuneiform.gif.pagespeed.ic.kaiuLYQELL.png does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/bones/dermal/images/289x311xPalatine1.gif.pagespeed.ic.tglmNBrF4D.png does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nifext_14 does not follow any known prefixes .... Understanding this is important to understand a lot about how SSSOM treats entities in general. Why are there so many does not follow any known prefixes warnings? CURIEs are a key concept for the representation of SSSOM documents, in particular its table. All fields that constitute a reference to some entity, such as ids ( subject_id , object_id , predicate_id ), and other fields such as mapping_justification are represented in CURIE syntax. The Semantic Web uses URIs (which look more like URLs rather than CURIEs) to refer to entities - there is, however, no standard protocol to translate a URI into a Compact URI (or CURIE). Efforts such as https://bioregistry.io/, https://github.com/prefixcommons or https://identifiers.org/ try to bring a bit of an organisation to prefixes. In particular the former two curate maps between prefixes and URIs. URI: http://purl.obolibrary.org/obo/MONDO_0000001 CURIE: MONDO:0000001 PREFIX: MONDO URI expansion: http://purl.obolibrary.org/obo/MONDO_ Now the problem is that over the years, many very ideosyncratic URIs where used to denote entities in ontologies. While the STK tries to figure out the correct prefixes using https://bioregistry.io/, many times it fails - in these cases, the user must provide its own prefix map . Lets create a simple one, and save it as metadata.yml (we call it \"metadata\", because we will add more metadata to it in this tutorial): curie_map: dbpedia: http://dbpedia.org/ontology/ We can now use this in addition to the default prefix maps : sssom parse uberon-base.json --input-format obographs-json --metadata metadata.yml --prefix-map-mode merged --output uberon.sssom.tsv Combining mappings from several sources Converting an SSSOM mapping table into different formats Other methods: cliquesummary correlations crosstab dedupe diff dosql partition ptable reconcile-prefixes rewire sort sparql split validate Under construction .","title":"A basic guide for the SSSOM toolkit"},{"location":"toolkit/#the-sssom-toolkit","text":"In the following we will give a brief introduction into the SSSOM toolkit. For more detailed documentation please refer to https://mapping-commons.github.io/sssom-py.","title":"The SSSOM Toolkit"},{"location":"toolkit/#pre-requisites","text":"Complete the basic SSSOM tutorial Install SSSOM toolkit . Alternatively, you can install the Ontology Development Kit (ODK) and follow the tutorial using its docker image . We are assuming a Unix shell for this tutorial, but most of the principles should apply to the Windows CMD as well. Windows users may prefer to install the ODK (see above).","title":"Pre-requisites"},{"location":"toolkit/#overview","text":"SSSOM toolkit (STK), previously known as sssom-py , is a set of utility methods for processing SSSOM files, packaged as a Command Line Client (CLI) and a python package . In the following, we will extract mappings from an ontology an process them with the CLI. The goal is to give a sense of the functionality of the toolkit. Additional and more up-to-date information on usage can be found here .","title":"Overview"},{"location":"toolkit/#table-of-contents","text":"parse : Extracting mappings from an external source merge : Combining mappings from several sources convert : Converting an SSSOM mapping table into different formats","title":"Table of Contents"},{"location":"toolkit/#extracting-mappings-from-an-external-source","text":"One key issue developers are faced with is to convert various different mapping formats into a common representation (e.g. SSSOM). The SSSOM toolkit (STK) already implements a number of commonly use mapping formats: OWL Ontologies Alignment API Format (format used by the Ontology Alignment Evaluation Initiative, OAEI) Parsers for SNOMED mapping format and FHIR Concept Map are in the making , June 2022. Here we use Uberon, an anatomy ontology in the biomedical domain. wget http://purl.obolibrary.org/obo/uberon/uberon-base.json -O uberon-base.json Feel free to download the file manually if you do not have wget installed. Now use sssom parse to extract all the mappings provided by the ontology. As there are multiple json based formats that can be parsed, you have to tell sssom which format you are using: --input-format obographs-json . sssom parse uberon-base.json --input-format obographs-json --output uberon.sssom.tsv From a CLI design perspective we already notice a few things: uberon-base.json is passed to the STK as an argument (without an option like -i ). This is the case for most primary inputs (mapping tables, source files) througout the SSSOM client. The output generated by the above command is large. There seem to be a lot of messages where some URL does not follow any known prefixes : WARNING:root:http://dbpedia.org/ontology/AnatomicalStructure does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nlx_subcell_100205 does not follow any known prefixes WARNING:root:http://neurolex.org/wiki/Category:Embryonic_organism does not follow any known prefixes WARNING:root:http://www.informatics.jax.org/cookbook/figures/figure20.shtml does not follow any known prefixes WARNING:root:http://mbe.oxfordjournals.org/content/26/3/613/F1.large.jpg does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/glossary/images/450x218xEctocuneiform.gif.pagespeed.ic.kaiuLYQELL.png does not follow any known prefixes WARNING:root:http://palaeos.com/vertebrates/bones/dermal/images/289x311xPalatine1.gif.pagespeed.ic.tglmNBrF4D.png does not follow any known prefixes WARNING:root:http://uri.neuinfo.org/nif/nifstd/nifext_14 does not follow any known prefixes .... Understanding this is important to understand a lot about how SSSOM treats entities in general.","title":"Extracting mappings from an external source"},{"location":"toolkit/#why-are-there-so-many-does-not-follow-any-known-prefixes-warnings","text":"CURIEs are a key concept for the representation of SSSOM documents, in particular its table. All fields that constitute a reference to some entity, such as ids ( subject_id , object_id , predicate_id ), and other fields such as mapping_justification are represented in CURIE syntax. The Semantic Web uses URIs (which look more like URLs rather than CURIEs) to refer to entities - there is, however, no standard protocol to translate a URI into a Compact URI (or CURIE). Efforts such as https://bioregistry.io/, https://github.com/prefixcommons or https://identifiers.org/ try to bring a bit of an organisation to prefixes. In particular the former two curate maps between prefixes and URIs. URI: http://purl.obolibrary.org/obo/MONDO_0000001 CURIE: MONDO:0000001 PREFIX: MONDO URI expansion: http://purl.obolibrary.org/obo/MONDO_ Now the problem is that over the years, many very ideosyncratic URIs where used to denote entities in ontologies. While the STK tries to figure out the correct prefixes using https://bioregistry.io/, many times it fails - in these cases, the user must provide its own prefix map . Lets create a simple one, and save it as metadata.yml (we call it \"metadata\", because we will add more metadata to it in this tutorial): curie_map: dbpedia: http://dbpedia.org/ontology/ We can now use this in addition to the default prefix maps : sssom parse uberon-base.json --input-format obographs-json --metadata metadata.yml --prefix-map-mode merged --output uberon.sssom.tsv","title":"Why are there so many does not follow any known prefixes warnings?"},{"location":"toolkit/#combining-mappings-from-several-sources","text":"","title":"Combining mappings from several sources"},{"location":"toolkit/#converting-an-sssom-mapping-table-into-different-formats","text":"","title":"Converting an SSSOM mapping table into different formats"},{"location":"toolkit/#other-methods","text":"cliquesummary correlations crosstab dedupe diff dosql partition ptable reconcile-prefixes rewire sort sparql split validate Under construction .","title":"Other methods:"},{"location":"training/","text":"SSSOM Training materials Elevator pitch Tutorials and Guides Related tutorials Elevator pitch Tutorials and Guides Mapping curation with SSSOM Are these two entities the same? A guide. . An important tutorial that explains that it is not directly possible to determine if two things are the same across ontologies, but its still worth doing when explicitly recording the rationale. Linking across vocabularies: Semantic Entity Matching : Entity matching is the process of establishing a link between an identifier in one semantic space to an identifier in another. There are many cultures of thought around entity matching, including Ontology Matching, Entity Resolution and Entity Linking. Related tutorials Introduction to processing mappings with SSSOM and sssom-py CLI Introduction to matching with OAK lexmatch Curating Semantic Mappings with Biomappings","title":"Overview"},{"location":"training/#sssom-training-materials","text":"Elevator pitch Tutorials and Guides Related tutorials","title":"SSSOM Training materials"},{"location":"training/#elevator-pitch","text":"","title":"Elevator pitch"},{"location":"training/#tutorials-and-guides","text":"Mapping curation with SSSOM Are these two entities the same? A guide. . An important tutorial that explains that it is not directly possible to determine if two things are the same across ontologies, but its still worth doing when explicitly recording the rationale. Linking across vocabularies: Semantic Entity Matching : Entity matching is the process of establishing a link between an identifier in one semantic space to an identifier in another. There are many cultures of thought around entity matching, including Ontology Matching, Entity Resolution and Entity Linking.","title":"Tutorials and Guides"},{"location":"training/#related-tutorials","text":"Introduction to processing mappings with SSSOM and sssom-py CLI Introduction to matching with OAK lexmatch Curating Semantic Mappings with Biomappings","title":"Related tutorials"},{"location":"tutorial/","text":"Introduction to mapping curation with SSSOM Mappings between entities from ontologies, terminologies and databases are created for many reasons (data integration, knowledge graphs) and maintained in many different ways (automated matching, manual curation). In the following tutorial, we will learn how to curate semantic mappings manually using SSSOM. Knowledge about manual mapping curation is important even in scenarios where most, if not all, of the mapping curation is performed automatically - the basic principles are still the same. Pre-requisites We expect the reader of this tutorial to have a basic understanding of the following: What are ontology classes? What is a database? What is an (ontology) mapping? Why do we need to map across ontologies and between databases and ontologies? We do provide a few materials in the Background section below that touch on the above concepts, but a detailed discussion is out of scope. Table of contents Background Ontology alignment What are we mapping? CURIEs, URIs and databases How to create an SSSOM mapping set from scratch Manually curating mapping sets Automated processing 1: Creating an embedded SSSOM file Background As a reminder, a SSSOM mapping comprises three major components: The mapping itself, that is, a triple that reflects a correspondence of a subject entity, for example a class in an ontology, to an object entity, for example an identifier in some database, via a semantic mapping predicate , such as skos:exactMatch . A mapping justification , the process or activity that led us to consider the mapping to be correct or reasonable (typical examples: labels match exactly; two classes are logically equivalent; a domain expert determined that two terms reflect the same real world concept). Provenance metadata , including information about author and mapping_tool . In the following, we will give pointers to some useful background materials before we describe how SSSOM mappings are created. Ontology alignment/matching Ontology alignment is the process of determining correspondences between ontological concepts. The usage of \"alignment\", \"matching\" and \"mapping\" is fuzzy in practice. From the perspective of SSSOM, alignment usually involves determining all (or a more or less complete set of) correspondences between ontological concepts of two or more source ontologies. The most important resource on the subject is \"Ontology Matching\" by J\u00e9r\u00f4me Euzenat and Pavel Shvaiko. If you are interested in really diving into the subject, there is no avoiding this book! This 25 minute course unit by the OpenHPI gives a nice overview over the area, which is relevant to all mapping activities: Another useful overview is this one by the Knowledge and Data VU Amsterdam. Especially after minute 12, we learn a bit about the differences of OWL and SKOS. A 10 minute deep-dive into Jerome Euzenat classification of ontology matching techniques can be seen here: What are we mapping? In SSSOM we are concerned with mapping information entities , i.e. representations of a real world entities. Examples of such entities are: Classes, Individuals and Properties in an ontology. Entities in Databases, such as a specific person in a \"Person\" table of a relational database. A specific value in the slot of a data model, for example the \"UNIVERSITY\" constant in the highest-degree enumeration for a demographics survey data model. A specific code from a code system or terminology such as ICD10CM. Information entities represent real world objects such as diseases (e.g. Alzheimer's, Diabetes), kinds of vegetables (Asparagus, Broccoli), concrete instances of vegetables (a specific broccoli that was sold in your local supermarket yesterday). What kind of entities can we not map with SSSOM? Some of the limitations of SSSOM are discussed in our paper . A selection of the most important things that cannot be mapped at the moment: Compound/complex entities, i.e. entities that are defined by more than one term. For example, we cannot currently map \"Raw apple\" (subject) to \"Apple\" and \"Raw\" (two objects). Anything that is not an entity, e.g. unit conversion rules (1000mg maps to 1g * 1000) or functions. Highly contextual entities like \"PERSON:1\" as they enter the hospital. As a rule of thumb, we can map any entity for which (1) we can provide a single identifier and (2) whose identifier establishes its context (i.e. no further information is needed to understand the meaning of the identifier). Note that literal values are a special case - SSSOM is not designed for mapping literals to entity identifiers, but there are some discussions on how to do this anyways here . CURIEs, URIs and databases A mapping involves three entities: A subject (the entity which is mapped to some other entity) An object (the entity the subject is mapped to) A semantic mapping predicate , such as \"skos:exactMatch\" which defines how the subject entity is mapped to the object entity. All three must be referred to by an identifier in CURIE syntax ( Compact URI ) when using the SSSOM table format or JSON, or an IRI (Internationalized Resource Identifier) when you are using the RDF representation of SSSOM. This is necessary to ensure that entities are globally unique and mapping sets are fully interoperable across an organisation and beyond. While these concepts are common practice in the Semantic Web world, they may be less well understood in the database world. In fact, they can be quite awkward: - Your database my use p9787869 to identify a specific person in a \"Person\" table of a relational database. - Your data model for a demographics survey uses, among others, the UNIVERSITY constant in the highest-degree enumeration. To be compliant with SSSOM, such values must be \"curified\". While this process sounds daunting at first, it is essential: Both the p9787869 identifier and the UNIVERSITY constant may be used in different contexts (different databases or data models) to refer to entirely different entities! While there is no 100% reliable guide for \"curification\", we usually recommend the following steps: Choose a globally unique URI prefix which can unambiguously define the context of your entity. For example (1) http://embl.org/ebi/person/p9787869 to refer to the person in your Person table and (2) http://embl.org/demographics-survey-datamodel/demographics.highest_education#UNIVERSITY . In an ideal world, these can be de-referenced (i.e. you can look them up in a web-browser), but the important thing is that they are globally unique (and persistent), so that they cannot be confused with, for example, the UNIVERSITY code in another data model. We select a reasonable prefix for the code, for example (1) embl.ebi.person and (2) demographics-survey-datamodel.demographics.highest_education . Note these do not need to be globally unique anymore. Indeed, you could, if you wanted to, use (much) shorter prefixes. (NOTE: some people disagree with this and strive for globally unique prefixes. In the biomedical domain, for example, we try to coordinate prefixes at http://bioregistry.io/. This is not however, necessary when using SSSOM). We record the prefixes and their URI prefixes (sometimes called URI expansions) in the curie_map of our SSSOM file: curie_map: embl.ebi.person: \"http://embl.org/ebi/person/\" demographics-survey-datamodel.demographics.highest_education: \"http://embl.org/demographics-survey-datamodel/demographics.highest_education#\" Now we can refer to our entities in the SSSOM mapping table like this: (1) embl.ebi.person:p9787869 and (2) demographics-survey-datamodel.demographics.highest_education:UNIVERSITY . This may strike some users as verbose - but the concept of unique identifiers for all information entities is at the heart of SSSOM . There is an initial cost to carefully defining namespaces for the various vocabularies and contexts (data model enums, value sets), but the ability to unambiguously refer to an entity will pay of as the organisation grows and data needs to be integrated from a wide variety of sources. Tangent: See here for an example how FHIR , a standard for health care data exchange, published by HL7, deals with this: Rather than using a lot of prefixes, FHIR chooses to have one small namespace for fhir , and then having the path to the data model element all the way to its value as the local identifier. How to create an SSSOM mapping set from scratch SSSOM mapping sets can be created as part of automated processes, like ontology matchers, or manually by ontology curators. While there is overlap, it makes sense to look at both cases separately. To remind yourself why you should build SSSOM mapping sets in the first place, please refer to the FAQ . Manually curating mapping sets To gradually improve terminological mapping practices we are proposing a 5-star system for mappings . For the sake of this tutorial, we will focus on producing a solid 3-Star mapping set with the following metadata: Core mapping metadata : subject_id : The ID of the subject of the mapping predicate_id : The ID of the predicate of the mapping object_id : The ID of the object of the mapping Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. Basic provenance metadata : mapping_date : The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. author_id : Identifies the persons or groups responsible for asserting the mappings. Recommended to be a (pipe-separated) list of ORCIDs or otherwise identifying URLs, but any identifying string (such as name and affiliation) is permissible. mapping_set_description : A description of the mapping set, providing context and motivation. license : An identifier for a license description. mapping_set_id : A unique identifier of the mapping set. mapping_set_version : The version of a mapping set. subject_source : URI of source the subject. subject_source_version : The version of the source of the subject. object_source : URI of source the subject. object_source_version : The version of the source of the object. confidence : the level of certainty you have for the mapping to be true (based on the process used to confirm or generate it). Some convenience metadata subject_label : The human readable label of the subject. object_label : The human readable label of the object. The tutorial scenario You are charged with aligning your organisations (KEWL FOODIE INC) internal database about food and nutrition with Food Ontology (FOODON) . In your database, you have a table with food items: ID LABEL F001 apple F002 gala F003 pink F004 braeburn As a first pass, you are tasked to map the food items (kinds of apples) in your database to classes in the FOODON ontology. Getting the tools together To complete this tutorial, we need the following tools: A table editor. In this tutorial we will use Google Sheets . Manually curating mappings is often done in a collaborative fashion. We like Google Sheets because it allows multiple people to edit the same mapping set at once. OPTIONAL: The SSSOM toolkit installed (requires python 3.9+). Creating a first draft of the mappings First create a google sheet with the following columns: subject_id subject_label predicate_id object_id object_label mapping_justification mapping_date author_id subject_source subject_source_version object_source object_source_version confidence As we are mapping database identifiers, our first step is curiefy our database identifiers . Read up in detail on why this is done here . We chose to use the following URI prefix for our food database: http://kewl-foodie.com/foods/, with the KF_FOODS: prefix (for now, we just document this information in the side, but later, we will add this to our mapping table). Next, we will add all the entities we hope to align to the mapping table above (we removed some columns here for readability, we will get back to these later): subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala KF_FOOD:F003 pink KF_FOOD:F004 braeburn While not necessary from a computational perspective, we recommend to document the labels of both the subject and the object to make the mapping table easier to process for human curators. The next step is now to try and identify suitable terms from FOODON to map to. In the biomedical domain, most curators will search OLS or Ontobee , but some more technically advanced users may choose to use SPARQL over ontobee or another endpoint: PREFIX rdf: PREFIX rdfs: SELECT * WHERE { ?sub rdfs:label ?obj . FILTER(regex(str(?obj), \"apple\")) FILTER(STRSTARTS(str(?sub),\"http://purl.obolibrary.org/obo/FOODON_\")) } A detailed discussion on mapping predicates can be found here . Mapping \"apple\", attempt 1 Our first attempt is to try and map KF_FOOD:F001 (apple). At the time of writing, a search for the string \"apple\" just across the labels in FOODON reveals more than 300 results. There are no exact matches for the search string \"apple\", i.e. there is no entity in FOODON that has the label \"apple\" exactly. Rather than sifting through the large set of results, we move on to try to map a more specific element first. As FOODON is an ontology, having a mapping to a more specific element (e.g. gala ) may help us to find an appropriate mapping for the more general concept (e.g. apple ), which should be hierarchically related to the more specific term. Mapping \"gala\" Indeed, a search for \"gala\" reveals one single result: Gala apple (whole) . How do we know if this is a good mapping for our own database entity gala ? This is a very difficult question, and there is no perfect answer. It is important to remember that mappings should not be judged in terms of \"correct\" or \"wrong\", but in terms of \"fit for purpose\", or, in the case of SSSOM, \"fit for most purposes\". The following thoughts should cross the curators mind: There does not seem to be another FOODON class concerned with \"Gala\". From the description, \"A pome fruit of a Gala apple tree cultivar.\" it seems like we are indeed talking about a kind of apple. ( The picture in the OLS Term information box also helps. ) A quick email to our product team at KEWL FOODIE INC confirms that indeed, our gala database entity and FOODON's Gala apple (whole) class seem to refer to the same entity. As apples in our database are usually considered \"whole\", we do not concern ourselves further with the that slightly ambiguous part of the label. (Can I map my apple snack pack which has the \"whole\" apple cut in slices to FOODON:00003348 ?) We add the new mapping to our mapping table. Due to our domain expertise and consultation with the product team of our company, we are very confident (1.0 or 100%) that the mapping between KF_FOOD:F002 and FOODON:00003348 is exact (for exact matches, we use skos:exactMatch as per SSSOM convention ). subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn Mapping \"apple\", attempt 2 Given our mapping of Gala apple (whole) we take a better look at the class hierarchy around. We notice three things: There is indeed a class called \"apple (whole)\" which seems to fit our purpose. This also seems to be consistent with our choice of \"Gala apple (whole)\". What is, however, annoying is that there is also a \"apple (whole or parts)\" class. KEWL FOODS INC definitely has plans to introduce products involving sliced Gala apples! FOODON does not have a concept of a sliced Gala apple. Again, our judgement as curators is asked here. There is no \"correct\" or \"wrong\". To keep things consistent, we decide to map to the \"whole\" apple, but we take a mental note that this might change in the future. We also take a physical note to document this design decision as a comment. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn Mapping \"pink\" In the same hierarchy as apple (whole) , we find Pink apple (whole) . This is seems like an excellent match, consistent with our previous design decisions. However two observations leave us uncertain: The Pink apple (whole) class has no definition (at the time of writing this tutorial at least) and no pictures, so we cannot be 100% certain that our notion of \"pink\" is the same as Foodon. A search on Wikipedia reveals different names, like \"Pink Pearl\" and \"Pink Lady\", which makes us a bit uncertain. In contrast to \"Gala apple (whole)\", \"Pink apple (whole)\" has a further subclass, \"Pink apple (whole, raw)\". What does that mean? All data in our KEWL FOODS INC database pertains to raw apple, so is this now a better match? Raw as opposed to what? Cooked? Again, there is no great recipe to solve this dilemma. We chose our default recipe: prefer consistent mapping rules over occasionally increased precision (not always a good idea) document design decision subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn Mapping \"braeburn\" We now turn our attention to the last database entity: KF_FOOD:F004 (braeburn). Unfortunately, our search for braeburn , brae-burn yields no results in Foodon. We search Wikipedia and Google for potential synonyms of Braeburn that might have been missed by the FOODON developers, but are unsuccessful. In the end, we give up and decide that there is no matching concept for KF_FOOD:F004 (braeburn) in FOODON. Now we have to make a choice and how to reflect that in our mapping set: We can document directly the fact that there is no skos:exactMatch in our SSSOM table. We can map KF_FOOD:F004 (braeburn) to a more general concept, i.e. apple (whole) . We can do both. For our data integration efforts, it is generally useful to know if no exact match could be found. Here, again, we have two options: we can convey this information by omission. By not including a mapping in the dataset, it does not exist. The downside is that we do not know further down the line if (a) we have looked and there really was no suitable code and (b) we have not looked. we can convey this information by using a special code sssom:NoMapping . (NOTE as of 2 May 2022, the final decision on how this is represented has not been made. Follow this discussion ). In our case, we have plans to extend our manual mapping efforts with automated ones. We want to use manual non-mapping assertions to filter out false positive mappings with our automated approaches, so we decide to go with the second option and make the non-mapping explicit. The second question is whether to include a less precise mapping. This depends heavily on the target use case. As a rule of thumb, if the target use case requires precise 1:1 mappings (for example, data transformation use cases often do), we do not include any broad mappings. If our use case is data aggregation, broad matches can still be very useful: At least, we will be able to use the hierarchical structure of FOODON to retrieve all kinds of apples in our FOOD database! We are interested in data aggregation, so we decide to include the mapping. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1 Adding rich metadata We are done curating the basic mappings. Next, we will add some richer metadata for the mapping set. For this tutorial we will add the metadata introduce here . Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. This is the most important piece of metadata and a pivotal concept for SSSOM curation in general. Let us think about all the various ways that can lead us to believe a mapping to be correct. The most crude thing would be to document is: \"a Human determined this mapping\". We do that by documenting the mapping justification semapv:HumanCuration . This justification is a vague placeholder, but it instills some confidence in the mapping consumer (the user) that someone with at least some domain expertise determined the mapping to be ok. We will discuss mapping_justification s in more detailed in a later tutorial on automated matching, where we have many more fine-grained distinctions, like \"the justification for asserting this mapping is that the label of the subject matches to an exact synonym of the object after applying 'stemming' during preprocessing\". Nevertheless, modelling human curation better is one of the future goals of SSSOM. The key is to document \"curation rules\", which contain the conditions and assumptions made by the (human) mapping author when asserting the mapping. In the absence of a formal element (at least at the time of this writing, May 2022), you should try and document such curation rules in the comment field. Basic provenance metadata : mapping_date : The date the mapping was asserted. Why is this important? Time of an assertion is essential provenance. It allows us to prefer assertions (mapping decisions) that were done later, but it also gives us a hint how old a mapping is, in particular if the source versions are not, or cannot, be documented. It is a very easy element to document, and we should try to do that at all times. author_id : Identifies the persons or groups responsible for asserting the mappings. The author is a crucial bit of metadata, in particular in conjunction with the mapping justification human curation . A mapping consumer can look up the author of a mapping through their unique identifier (e.g. an ORCiD , which we use in the biomedical domain, but might be anything, including a unique database identifier). Again, we prefer PURLs here, that resolve to some useful information when you look them up. mapping_set_id : A unique identifier of the mapping set. This is a pivotal concept in FAIR data and data management in general: every unit of data that is shared around within an organisation (or the whole world) should have a unique identifier . As per Semantic Web conventions, we recommend using persistent URLs, or PURLs, to identify your mappings set. For example: http://purl.obolibrary.org/obo/mondo.owl is a unique identifier to an ontology and http://purl.obolibrary.org/obo/mondo/mapping/mondo.sssom.tsv refers to the \"Mondo disease mappings\". mapping_set_version : The version of a mapping set. Versioning is absolutely crucial for mapping sets, much the same way as it is for ontologies. We recommend to use semantic versioning or simple ISO Date versioning, like \"2022-05-01\". The latter is recommended by some organisations like the OBO foundry (it is easier to see how new a mapping set is, and it is easier to sort as a string), but semantic versioning is much more widely used. We use date based versioning in the tutorial. mapping_set_description : A description of the mapping set, providing context and motivation. This is another underrated piece of metadata that allows humans to understand and build trust towards a mapping set. A good description of a mapping set describes the scope and content of a mapping set describes the purpose for the creation of the mapping set is reasonably short, but not too short (3-4 sentences) license : An identifier for a license description. One of the most serious impediments to re-use on the web is the absence of clear and standardised licenses. We recommend the creative commons licenses for open data, either CC-0 (public domain, no license) or CC-BY 4.0. (Some people prefer CC-BY 4.0, because it ensures that attribution is taken more seriously.) Even when using a proprietary license, it is good to be transparent here, so that an \"accidentally leaked\" data file is not mistakenly assumed to be \"open\". subject_source : URI of source the subject. This is one of the most important pieces of metadata: an unambiguous reference to a source. It is notoriously hard to standardise source references ( see past debate ). We recommend to use the standard URIs used in your own domain, for example OBO ( obo:mondo ) or Wikidata ( wikidata:Q7876491 ). subject_source_version : The version of the source of the subject. In order to interpret a mapping, it is not enough to know the source. Sources changes all the time, whether they are database and/or ontology: classes are obsoleted, database records are deleted. What counts for an exact mapping may change through the evolution of a source. Always document the source version, if you can. This can be very difficult for database systems that do not have a real notion of versioning. object_source : URI of source the object. See subject_source . object_source_version : The version of the source of the object. See subject_source_version . Mapping vs Mapping set metadata - where should it go? SSSOM distinguishes between mapping and mapping_set metadata, i.e. metadata that pertains to each individual mapping and metadata that pertains to the whole mapping set. To understand which is which, you can browse the specification . Mapping metadata is usually captured in the rows of the SSSOM mapping table. We have done this a lot so far during this tutorial: documenting our confidence in our mapping decision, and specifying the source of our subject id. However, in SSSOM we have the option to document some mapping metadata on the level of the mapping_set , which means that the metadata item applies to all mappings in the mapping set . We will capture subject and object_source this way, see a bit further below. We capture mapping level metadata in the usual way using our table: subject_id subject_label predicate_id object_id object_label confidence comment mapping_justification mapping_date author_id subject_source_version object_source_version KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl Mapping set metadata . In this tutorial, only mapping_set_id , mapping_set_version , license and mapping_set_description are purely mapping_set metadata. Everything else is considered mapping metadata. Mapping set metadata is captured in YAML format. For this tutorial, we will capture the following: mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv license: https://creativecommons.org/licenses/by/4.0/ mapping_set_version: \"2022-06-01\" mapping_set_description: \"Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data.\" object_source: wikidata:Q55118395 subject_source: KF_FOOD:DB curie_map: KF_FOOD: https://kewl-foodie.inc/food/ wikidata: http://www.wikidata.org/entity/ FOODON: http://purl.obolibrary.org/obo/FOODON_ semapv: https://w3id.org/semapv/vocab/ skos: \"http://www.w3.org/2004/02/skos/core#\" sssom: https://w3id.org/sssom/ Despite object_source and subject_source being mapping metadata, we decided to capture them at mapping set level, as they are not likely to change throughout versions of the mapping set. Note that while the object_source resolves to an actual page on the web ( FOODON ), KF_FOOD:DB does not. SSSOM requires a source to correspond to an IRI (see ongoing debate ). This helps to ensure that it is unambiguously clear what the source was. Imagine someone documenting the string INTERNAL_DB or just DB - even in large organisations, but certainly on the web, this can cause clashes. The curie_map (better known as \"prefix map\") is another key concept in SSSOM (and most Semantic Web standards). It maps prefixes to URI expansions. This serves three main purposes. Unambiguously identify the namespace of a prefix. The prefix FOODON: , all by itself, can be used by many different sources. http://purl.obolibrary.org/obo/FOODON_ uniquely identifies the namespace of FOODON . This is important when merging different mapping sets together. Expanding and resolving identifiers. Some identifier schemes like the one in the OBO Foundry, Wikidata and many others, resolve identifiers to a page on the web. This allows people (and sometimes machines) to look up additional information about an entity on the web. For example, when we expand FOODON:00002473 to http://purl.obolibrary.org/obo/FOODON_00002473, we can look this URI up in a browser. Providing a recipe for creating RDF resources from CURIEs. RDF requires an entity to be represented by a full URI, e.g. http://purl.obolibrary.org/obo/FOODON_00002473 . In this case, you can think of the curie_map in essence as a set of RDF prefix declarations . This is only important if your use case requires serialisation into RDF. This concludes the manual curation tutorial. Next, we will process the two mapping sets using \"SSSOM python toolkit\" (aka sssom-py). Automated processing 1: Creating an embedded SSSOM file Important note May 8 2022 *: The SSSOM toolkit have not yet been updated to the most recent changes of the SSSOM data model. If you get an error ValueError: match_type must be supplied , you have to update your local installation. Embedded vs external mode for SSSOM metadata One problem with table formats like TSV or CSV, in contrast to more flexible tree shaped formats like JSON or XML, is that it is notoriously hard to include metadata about the whole table (for example, mapping set metadata) in them. There are essentially three options: All metadata is stored as values in columns. While this is definitely possible, it is not ideal for a few reasons: It is highly redundant. If we have to store the mapping_set_id , for example, as a value in a mapping table with 1000 mappings, it is repeated 1000 times. It is less immediately clear whether a piece of metadata pertains to the mapping_set or a mapping (you have to study the specification to understand that author_id pertains to an individual mapping rather than the whole mapping set). Metadata about the mapping set is stored within the TSV file header. Basically, we introduce a number of rows at the top of the TSV file that we reserve for metadata. The disadvantage is that many parsers for such flat files do not know how to deal with a header like this. We keep metadata about tables and mapping sets separate, i.e. we keep one TSV file that contains the data and one YAML file that contains the mapping set metadata. This is often a good option, but keeping the two separate may cause a problem: in environments where the data is shared around (emailed, copied) the connection can get lost. In SSSOM, we opted for option 2 as the default, which we call \"embedded mode\" (the metadata is embedded). Most commands in the SSSOM toolkit expect SSSOM files to be in embedded mode. However, we support option 3 (external mode) indirectly by providing operations to simply merge the two before other processing steps. Converting an SSSOM file from from external to embedded mode If you do not have the SSSOM toolkit installed, do so now . Download the food mappings created before. If you feel confident with your own mappings, feel free to use these instead. Mappings Metadata Now you let's use SSSOM toolkit to merge these two: sssom parse example1.sssom.tsv -m example1.sssom.yml -o foodieinc-food.sssom.tsv If you open foodieinc-food.sssom.tsv , you will see: # comment: We could map to FOODON:00004187 instead which more specifically refers to # \"raw\" Pink apples. Decided against to be consistent with other mapping choices. # curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # skos: http://www.w3.org/2004/02/skos/core# # sssom: https://w3id.org/sssom/ # license: https://creativecommons.org/licenses/by/4.0/ # mapping_date: '2022-05-02' # mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food # and nutrition database with Food Ontology (FOODON). Intended to be used for ontological # analysis and grouping of KEWL FOODIE INC related data. # mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv # mapping_set_version: '2022-06-01' # object_source: wikidata:Q55118395 # object_source_version: http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl # subject_source: KF_FOOD:DB subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 Converting an SSSOM file to JSON We will now convert the embedded SSSOM file we created before into JSON: sssom convert foodieinc-food.sssom.tsv --output-format json -o foodieinc-food.sssom.json While the JSON format is not yet stable , it is close to completion. Diff between two versions The last part of this tutorial concerns one of the main motivations of using a controlled metadata model for mappings: versioning. One key concern for data management, and mapping management in particular, is to be able under understand the evolution of mappings over time. While this command is not stable yet, we can use it to understand the difference between two mappings sets: sssom diff . Let us try to look at the difference between an old version of our foodie-inc mapping set and our new one: sssom diff foodieinc-food.sssom.tsv ../embedded/foodie-inc-2022-05-01.sssom.tsv -o diff.sssom.tsv The outcome gives us the following information: subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004187 Pink apple (whole, raw) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_2 KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH This can be used to understand that the first mapping is only present in the new mapping set, while the second mapping was present in the old mapping set - all the other ones are in common between the two.","title":"Basic Tutorial"},{"location":"tutorial/#introduction-to-mapping-curation-with-sssom","text":"Mappings between entities from ontologies, terminologies and databases are created for many reasons (data integration, knowledge graphs) and maintained in many different ways (automated matching, manual curation). In the following tutorial, we will learn how to curate semantic mappings manually using SSSOM. Knowledge about manual mapping curation is important even in scenarios where most, if not all, of the mapping curation is performed automatically - the basic principles are still the same.","title":"Introduction to mapping curation with SSSOM"},{"location":"tutorial/#pre-requisites","text":"We expect the reader of this tutorial to have a basic understanding of the following: What are ontology classes? What is a database? What is an (ontology) mapping? Why do we need to map across ontologies and between databases and ontologies? We do provide a few materials in the Background section below that touch on the above concepts, but a detailed discussion is out of scope.","title":"Pre-requisites"},{"location":"tutorial/#table-of-contents","text":"Background Ontology alignment What are we mapping? CURIEs, URIs and databases How to create an SSSOM mapping set from scratch Manually curating mapping sets Automated processing 1: Creating an embedded SSSOM file","title":"Table of contents"},{"location":"tutorial/#background","text":"As a reminder, a SSSOM mapping comprises three major components: The mapping itself, that is, a triple that reflects a correspondence of a subject entity, for example a class in an ontology, to an object entity, for example an identifier in some database, via a semantic mapping predicate , such as skos:exactMatch . A mapping justification , the process or activity that led us to consider the mapping to be correct or reasonable (typical examples: labels match exactly; two classes are logically equivalent; a domain expert determined that two terms reflect the same real world concept). Provenance metadata , including information about author and mapping_tool . In the following, we will give pointers to some useful background materials before we describe how SSSOM mappings are created.","title":"Background"},{"location":"tutorial/#ontology-alignmentmatching","text":"Ontology alignment is the process of determining correspondences between ontological concepts. The usage of \"alignment\", \"matching\" and \"mapping\" is fuzzy in practice. From the perspective of SSSOM, alignment usually involves determining all (or a more or less complete set of) correspondences between ontological concepts of two or more source ontologies. The most important resource on the subject is \"Ontology Matching\" by J\u00e9r\u00f4me Euzenat and Pavel Shvaiko. If you are interested in really diving into the subject, there is no avoiding this book! This 25 minute course unit by the OpenHPI gives a nice overview over the area, which is relevant to all mapping activities: Another useful overview is this one by the Knowledge and Data VU Amsterdam. Especially after minute 12, we learn a bit about the differences of OWL and SKOS. A 10 minute deep-dive into Jerome Euzenat classification of ontology matching techniques can be seen here:","title":"Ontology alignment/matching"},{"location":"tutorial/#what-are-we-mapping","text":"In SSSOM we are concerned with mapping information entities , i.e. representations of a real world entities. Examples of such entities are: Classes, Individuals and Properties in an ontology. Entities in Databases, such as a specific person in a \"Person\" table of a relational database. A specific value in the slot of a data model, for example the \"UNIVERSITY\" constant in the highest-degree enumeration for a demographics survey data model. A specific code from a code system or terminology such as ICD10CM. Information entities represent real world objects such as diseases (e.g. Alzheimer's, Diabetes), kinds of vegetables (Asparagus, Broccoli), concrete instances of vegetables (a specific broccoli that was sold in your local supermarket yesterday).","title":"What are we mapping?"},{"location":"tutorial/#what-kind-of-entities-can-we-not-map-with-sssom","text":"Some of the limitations of SSSOM are discussed in our paper . A selection of the most important things that cannot be mapped at the moment: Compound/complex entities, i.e. entities that are defined by more than one term. For example, we cannot currently map \"Raw apple\" (subject) to \"Apple\" and \"Raw\" (two objects). Anything that is not an entity, e.g. unit conversion rules (1000mg maps to 1g * 1000) or functions. Highly contextual entities like \"PERSON:1\" as they enter the hospital. As a rule of thumb, we can map any entity for which (1) we can provide a single identifier and (2) whose identifier establishes its context (i.e. no further information is needed to understand the meaning of the identifier). Note that literal values are a special case - SSSOM is not designed for mapping literals to entity identifiers, but there are some discussions on how to do this anyways here .","title":"What kind of entities can we not map with SSSOM?"},{"location":"tutorial/#curies-uris-and-databases","text":"A mapping involves three entities: A subject (the entity which is mapped to some other entity) An object (the entity the subject is mapped to) A semantic mapping predicate , such as \"skos:exactMatch\" which defines how the subject entity is mapped to the object entity. All three must be referred to by an identifier in CURIE syntax ( Compact URI ) when using the SSSOM table format or JSON, or an IRI (Internationalized Resource Identifier) when you are using the RDF representation of SSSOM. This is necessary to ensure that entities are globally unique and mapping sets are fully interoperable across an organisation and beyond. While these concepts are common practice in the Semantic Web world, they may be less well understood in the database world. In fact, they can be quite awkward: - Your database my use p9787869 to identify a specific person in a \"Person\" table of a relational database. - Your data model for a demographics survey uses, among others, the UNIVERSITY constant in the highest-degree enumeration. To be compliant with SSSOM, such values must be \"curified\". While this process sounds daunting at first, it is essential: Both the p9787869 identifier and the UNIVERSITY constant may be used in different contexts (different databases or data models) to refer to entirely different entities! While there is no 100% reliable guide for \"curification\", we usually recommend the following steps: Choose a globally unique URI prefix which can unambiguously define the context of your entity. For example (1) http://embl.org/ebi/person/p9787869 to refer to the person in your Person table and (2) http://embl.org/demographics-survey-datamodel/demographics.highest_education#UNIVERSITY . In an ideal world, these can be de-referenced (i.e. you can look them up in a web-browser), but the important thing is that they are globally unique (and persistent), so that they cannot be confused with, for example, the UNIVERSITY code in another data model. We select a reasonable prefix for the code, for example (1) embl.ebi.person and (2) demographics-survey-datamodel.demographics.highest_education . Note these do not need to be globally unique anymore. Indeed, you could, if you wanted to, use (much) shorter prefixes. (NOTE: some people disagree with this and strive for globally unique prefixes. In the biomedical domain, for example, we try to coordinate prefixes at http://bioregistry.io/. This is not however, necessary when using SSSOM). We record the prefixes and their URI prefixes (sometimes called URI expansions) in the curie_map of our SSSOM file: curie_map: embl.ebi.person: \"http://embl.org/ebi/person/\" demographics-survey-datamodel.demographics.highest_education: \"http://embl.org/demographics-survey-datamodel/demographics.highest_education#\" Now we can refer to our entities in the SSSOM mapping table like this: (1) embl.ebi.person:p9787869 and (2) demographics-survey-datamodel.demographics.highest_education:UNIVERSITY . This may strike some users as verbose - but the concept of unique identifiers for all information entities is at the heart of SSSOM . There is an initial cost to carefully defining namespaces for the various vocabularies and contexts (data model enums, value sets), but the ability to unambiguously refer to an entity will pay of as the organisation grows and data needs to be integrated from a wide variety of sources. Tangent: See here for an example how FHIR , a standard for health care data exchange, published by HL7, deals with this: Rather than using a lot of prefixes, FHIR chooses to have one small namespace for fhir , and then having the path to the data model element all the way to its value as the local identifier.","title":"CURIEs, URIs and databases"},{"location":"tutorial/#how-to-create-an-sssom-mapping-set-from-scratch","text":"SSSOM mapping sets can be created as part of automated processes, like ontology matchers, or manually by ontology curators. While there is overlap, it makes sense to look at both cases separately. To remind yourself why you should build SSSOM mapping sets in the first place, please refer to the FAQ .","title":"How to create an SSSOM mapping set from scratch"},{"location":"tutorial/#manually-curating-mapping-sets","text":"To gradually improve terminological mapping practices we are proposing a 5-star system for mappings . For the sake of this tutorial, we will focus on producing a solid 3-Star mapping set with the following metadata: Core mapping metadata : subject_id : The ID of the subject of the mapping predicate_id : The ID of the predicate of the mapping object_id : The ID of the object of the mapping Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. Basic provenance metadata : mapping_date : The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. author_id : Identifies the persons or groups responsible for asserting the mappings. Recommended to be a (pipe-separated) list of ORCIDs or otherwise identifying URLs, but any identifying string (such as name and affiliation) is permissible. mapping_set_description : A description of the mapping set, providing context and motivation. license : An identifier for a license description. mapping_set_id : A unique identifier of the mapping set. mapping_set_version : The version of a mapping set. subject_source : URI of source the subject. subject_source_version : The version of the source of the subject. object_source : URI of source the subject. object_source_version : The version of the source of the object. confidence : the level of certainty you have for the mapping to be true (based on the process used to confirm or generate it). Some convenience metadata subject_label : The human readable label of the subject. object_label : The human readable label of the object.","title":"Manually curating mapping sets"},{"location":"tutorial/#the-tutorial-scenario","text":"You are charged with aligning your organisations (KEWL FOODIE INC) internal database about food and nutrition with Food Ontology (FOODON) . In your database, you have a table with food items: ID LABEL F001 apple F002 gala F003 pink F004 braeburn As a first pass, you are tasked to map the food items (kinds of apples) in your database to classes in the FOODON ontology.","title":"The tutorial scenario"},{"location":"tutorial/#getting-the-tools-together","text":"To complete this tutorial, we need the following tools: A table editor. In this tutorial we will use Google Sheets . Manually curating mappings is often done in a collaborative fashion. We like Google Sheets because it allows multiple people to edit the same mapping set at once. OPTIONAL: The SSSOM toolkit installed (requires python 3.9+).","title":"Getting the tools together"},{"location":"tutorial/#creating-a-first-draft-of-the-mappings","text":"First create a google sheet with the following columns: subject_id subject_label predicate_id object_id object_label mapping_justification mapping_date author_id subject_source subject_source_version object_source object_source_version confidence As we are mapping database identifiers, our first step is curiefy our database identifiers . Read up in detail on why this is done here . We chose to use the following URI prefix for our food database: http://kewl-foodie.com/foods/, with the KF_FOODS: prefix (for now, we just document this information in the side, but later, we will add this to our mapping table). Next, we will add all the entities we hope to align to the mapping table above (we removed some columns here for readability, we will get back to these later): subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala KF_FOOD:F003 pink KF_FOOD:F004 braeburn While not necessary from a computational perspective, we recommend to document the labels of both the subject and the object to make the mapping table easier to process for human curators. The next step is now to try and identify suitable terms from FOODON to map to. In the biomedical domain, most curators will search OLS or Ontobee , but some more technically advanced users may choose to use SPARQL over ontobee or another endpoint: PREFIX rdf: PREFIX rdfs: SELECT * WHERE { ?sub rdfs:label ?obj . FILTER(regex(str(?obj), \"apple\")) FILTER(STRSTARTS(str(?sub),\"http://purl.obolibrary.org/obo/FOODON_\")) } A detailed discussion on mapping predicates can be found here .","title":"Creating a first draft of the mappings"},{"location":"tutorial/#mapping-apple-attempt-1","text":"Our first attempt is to try and map KF_FOOD:F001 (apple). At the time of writing, a search for the string \"apple\" just across the labels in FOODON reveals more than 300 results. There are no exact matches for the search string \"apple\", i.e. there is no entity in FOODON that has the label \"apple\" exactly. Rather than sifting through the large set of results, we move on to try to map a more specific element first. As FOODON is an ontology, having a mapping to a more specific element (e.g. gala ) may help us to find an appropriate mapping for the more general concept (e.g. apple ), which should be hierarchically related to the more specific term.","title":"Mapping \"apple\", attempt 1"},{"location":"tutorial/#mapping-gala","text":"Indeed, a search for \"gala\" reveals one single result: Gala apple (whole) . How do we know if this is a good mapping for our own database entity gala ? This is a very difficult question, and there is no perfect answer. It is important to remember that mappings should not be judged in terms of \"correct\" or \"wrong\", but in terms of \"fit for purpose\", or, in the case of SSSOM, \"fit for most purposes\". The following thoughts should cross the curators mind: There does not seem to be another FOODON class concerned with \"Gala\". From the description, \"A pome fruit of a Gala apple tree cultivar.\" it seems like we are indeed talking about a kind of apple. ( The picture in the OLS Term information box also helps. ) A quick email to our product team at KEWL FOODIE INC confirms that indeed, our gala database entity and FOODON's Gala apple (whole) class seem to refer to the same entity. As apples in our database are usually considered \"whole\", we do not concern ourselves further with the that slightly ambiguous part of the label. (Can I map my apple snack pack which has the \"whole\" apple cut in slices to FOODON:00003348 ?) We add the new mapping to our mapping table. Due to our domain expertise and consultation with the product team of our company, we are very confident (1.0 or 100%) that the mapping between KF_FOOD:F002 and FOODON:00003348 is exact (for exact matches, we use skos:exactMatch as per SSSOM convention ). subject_id subject_label predicate_id object_id object_label confidence KF_FOOD:F001 apple KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn","title":"Mapping \"gala\""},{"location":"tutorial/#mapping-apple-attempt-2","text":"Given our mapping of Gala apple (whole) we take a better look at the class hierarchy around. We notice three things: There is indeed a class called \"apple (whole)\" which seems to fit our purpose. This also seems to be consistent with our choice of \"Gala apple (whole)\". What is, however, annoying is that there is also a \"apple (whole or parts)\" class. KEWL FOODS INC definitely has plans to introduce products involving sliced Gala apples! FOODON does not have a concept of a sliced Gala apple. Again, our judgement as curators is asked here. There is no \"correct\" or \"wrong\". To keep things consistent, we decide to map to the \"whole\" apple, but we take a mental note that this might change in the future. We also take a physical note to document this design decision as a comment. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink KF_FOOD:F004 braeburn","title":"Mapping \"apple\", attempt 2"},{"location":"tutorial/#mapping-pink","text":"In the same hierarchy as apple (whole) , we find Pink apple (whole) . This is seems like an excellent match, consistent with our previous design decisions. However two observations leave us uncertain: The Pink apple (whole) class has no definition (at the time of writing this tutorial at least) and no pictures, so we cannot be 100% certain that our notion of \"pink\" is the same as Foodon. A search on Wikipedia reveals different names, like \"Pink Pearl\" and \"Pink Lady\", which makes us a bit uncertain. In contrast to \"Gala apple (whole)\", \"Pink apple (whole)\" has a further subclass, \"Pink apple (whole, raw)\". What does that mean? All data in our KEWL FOODS INC database pertains to raw apple, so is this now a better match? Raw as opposed to what? Cooked? Again, there is no great recipe to solve this dilemma. We chose our default recipe: prefer consistent mapping rules over occasionally increased precision (not always a good idea) document design decision subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn","title":"Mapping \"pink\""},{"location":"tutorial/#mapping-braeburn","text":"We now turn our attention to the last database entity: KF_FOOD:F004 (braeburn). Unfortunately, our search for braeburn , brae-burn yields no results in Foodon. We search Wikipedia and Google for potential synonyms of Braeburn that might have been missed by the FOODON developers, but are unsuccessful. In the end, we give up and decide that there is no matching concept for KF_FOOD:F004 (braeburn) in FOODON. Now we have to make a choice and how to reflect that in our mapping set: We can document directly the fact that there is no skos:exactMatch in our SSSOM table. We can map KF_FOOD:F004 (braeburn) to a more general concept, i.e. apple (whole) . We can do both. For our data integration efforts, it is generally useful to know if no exact match could be found. Here, again, we have two options: we can convey this information by omission. By not including a mapping in the dataset, it does not exist. The downside is that we do not know further down the line if (a) we have looked and there really was no suitable code and (b) we have not looked. we can convey this information by using a special code sssom:NoMapping . (NOTE as of 2 May 2022, the final decision on how this is represented has not been made. Follow this discussion ). In our case, we have plans to extend our manual mapping efforts with automated ones. We want to use manual non-mapping assertions to filter out false positive mappings with our automated approaches, so we decide to go with the second option and make the non-mapping explicit. The second question is whether to include a less precise mapping. This depends heavily on the target use case. As a rule of thumb, if the target use case requires precise 1:1 mappings (for example, data transformation use cases often do), we do not include any broad mappings. If our use case is data aggregation, broad matches can still be very useful: At least, we will be able to use the hierarchical structure of FOODON to retrieve all kinds of apples in our FOOD database! We are interested in data aggregation, so we decide to include the mapping. subject_id subject_label predicate_id object_id object_label confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1","title":"Mapping \"braeburn\""},{"location":"tutorial/#adding-rich-metadata","text":"We are done curating the basic mappings. Next, we will add some richer metadata for the mapping set. For this tutorial we will add the metadata introduce here . Mapping justification metadata : mapping_justification : the process or activity that led us to believe the mapping to be correct or reasonable. This is the most important piece of metadata and a pivotal concept for SSSOM curation in general. Let us think about all the various ways that can lead us to believe a mapping to be correct. The most crude thing would be to document is: \"a Human determined this mapping\". We do that by documenting the mapping justification semapv:HumanCuration . This justification is a vague placeholder, but it instills some confidence in the mapping consumer (the user) that someone with at least some domain expertise determined the mapping to be ok. We will discuss mapping_justification s in more detailed in a later tutorial on automated matching, where we have many more fine-grained distinctions, like \"the justification for asserting this mapping is that the label of the subject matches to an exact synonym of the object after applying 'stemming' during preprocessing\". Nevertheless, modelling human curation better is one of the future goals of SSSOM. The key is to document \"curation rules\", which contain the conditions and assumptions made by the (human) mapping author when asserting the mapping. In the absence of a formal element (at least at the time of this writing, May 2022), you should try and document such curation rules in the comment field. Basic provenance metadata : mapping_date : The date the mapping was asserted. Why is this important? Time of an assertion is essential provenance. It allows us to prefer assertions (mapping decisions) that were done later, but it also gives us a hint how old a mapping is, in particular if the source versions are not, or cannot, be documented. It is a very easy element to document, and we should try to do that at all times. author_id : Identifies the persons or groups responsible for asserting the mappings. The author is a crucial bit of metadata, in particular in conjunction with the mapping justification human curation . A mapping consumer can look up the author of a mapping through their unique identifier (e.g. an ORCiD , which we use in the biomedical domain, but might be anything, including a unique database identifier). Again, we prefer PURLs here, that resolve to some useful information when you look them up. mapping_set_id : A unique identifier of the mapping set. This is a pivotal concept in FAIR data and data management in general: every unit of data that is shared around within an organisation (or the whole world) should have a unique identifier . As per Semantic Web conventions, we recommend using persistent URLs, or PURLs, to identify your mappings set. For example: http://purl.obolibrary.org/obo/mondo.owl is a unique identifier to an ontology and http://purl.obolibrary.org/obo/mondo/mapping/mondo.sssom.tsv refers to the \"Mondo disease mappings\". mapping_set_version : The version of a mapping set. Versioning is absolutely crucial for mapping sets, much the same way as it is for ontologies. We recommend to use semantic versioning or simple ISO Date versioning, like \"2022-05-01\". The latter is recommended by some organisations like the OBO foundry (it is easier to see how new a mapping set is, and it is easier to sort as a string), but semantic versioning is much more widely used. We use date based versioning in the tutorial. mapping_set_description : A description of the mapping set, providing context and motivation. This is another underrated piece of metadata that allows humans to understand and build trust towards a mapping set. A good description of a mapping set describes the scope and content of a mapping set describes the purpose for the creation of the mapping set is reasonably short, but not too short (3-4 sentences) license : An identifier for a license description. One of the most serious impediments to re-use on the web is the absence of clear and standardised licenses. We recommend the creative commons licenses for open data, either CC-0 (public domain, no license) or CC-BY 4.0. (Some people prefer CC-BY 4.0, because it ensures that attribution is taken more seriously.) Even when using a proprietary license, it is good to be transparent here, so that an \"accidentally leaked\" data file is not mistakenly assumed to be \"open\". subject_source : URI of source the subject. This is one of the most important pieces of metadata: an unambiguous reference to a source. It is notoriously hard to standardise source references ( see past debate ). We recommend to use the standard URIs used in your own domain, for example OBO ( obo:mondo ) or Wikidata ( wikidata:Q7876491 ). subject_source_version : The version of the source of the subject. In order to interpret a mapping, it is not enough to know the source. Sources changes all the time, whether they are database and/or ontology: classes are obsoleted, database records are deleted. What counts for an exact mapping may change through the evolution of a source. Always document the source version, if you can. This can be very difficult for database systems that do not have a real notion of versioning. object_source : URI of source the object. See subject_source . object_source_version : The version of the source of the object. See subject_source_version .","title":"Adding rich metadata"},{"location":"tutorial/#mapping-vs-mapping-set-metadata-where-should-it-go","text":"SSSOM distinguishes between mapping and mapping_set metadata, i.e. metadata that pertains to each individual mapping and metadata that pertains to the whole mapping set. To understand which is which, you can browse the specification . Mapping metadata is usually captured in the rows of the SSSOM mapping table. We have done this a lot so far during this tutorial: documenting our confidence in our mapping decision, and specifying the source of our subject id. However, in SSSOM we have the option to document some mapping metadata on the level of the mapping_set , which means that the metadata item applies to all mappings in the mapping set . We will capture subject and object_source this way, see a bit further below. We capture mapping level metadata in the usual way using our table: subject_id subject_label predicate_id object_id object_label confidence comment mapping_justification mapping_date author_id subject_source_version object_source_version KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) 0.95 We could map to FOODON:03310788 instead to cover sliced apples, but only \"whole\" apple types exist. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) 0.9 We could map to FOODON:00004187 instead which more specifically refers to \"raw\" Pink apples. Decided against to be consistent with other mapping choices. semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) 1 semapv:HumanCuration 2022-05-02 orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl Mapping set metadata . In this tutorial, only mapping_set_id , mapping_set_version , license and mapping_set_description are purely mapping_set metadata. Everything else is considered mapping metadata. Mapping set metadata is captured in YAML format. For this tutorial, we will capture the following: mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv license: https://creativecommons.org/licenses/by/4.0/ mapping_set_version: \"2022-06-01\" mapping_set_description: \"Manually curated alignment of KEWL FOODIE INC internal food and nutrition database with Food Ontology (FOODON). Intended to be used for ontological analysis and grouping of KEWL FOODIE INC related data.\" object_source: wikidata:Q55118395 subject_source: KF_FOOD:DB curie_map: KF_FOOD: https://kewl-foodie.inc/food/ wikidata: http://www.wikidata.org/entity/ FOODON: http://purl.obolibrary.org/obo/FOODON_ semapv: https://w3id.org/semapv/vocab/ skos: \"http://www.w3.org/2004/02/skos/core#\" sssom: https://w3id.org/sssom/ Despite object_source and subject_source being mapping metadata, we decided to capture them at mapping set level, as they are not likely to change throughout versions of the mapping set. Note that while the object_source resolves to an actual page on the web ( FOODON ), KF_FOOD:DB does not. SSSOM requires a source to correspond to an IRI (see ongoing debate ). This helps to ensure that it is unambiguously clear what the source was. Imagine someone documenting the string INTERNAL_DB or just DB - even in large organisations, but certainly on the web, this can cause clashes. The curie_map (better known as \"prefix map\") is another key concept in SSSOM (and most Semantic Web standards). It maps prefixes to URI expansions. This serves three main purposes. Unambiguously identify the namespace of a prefix. The prefix FOODON: , all by itself, can be used by many different sources. http://purl.obolibrary.org/obo/FOODON_ uniquely identifies the namespace of FOODON . This is important when merging different mapping sets together. Expanding and resolving identifiers. Some identifier schemes like the one in the OBO Foundry, Wikidata and many others, resolve identifiers to a page on the web. This allows people (and sometimes machines) to look up additional information about an entity on the web. For example, when we expand FOODON:00002473 to http://purl.obolibrary.org/obo/FOODON_00002473, we can look this URI up in a browser. Providing a recipe for creating RDF resources from CURIEs. RDF requires an entity to be represented by a full URI, e.g. http://purl.obolibrary.org/obo/FOODON_00002473 . In this case, you can think of the curie_map in essence as a set of RDF prefix declarations . This is only important if your use case requires serialisation into RDF. This concludes the manual curation tutorial. Next, we will process the two mapping sets using \"SSSOM python toolkit\" (aka sssom-py).","title":"Mapping vs Mapping set metadata - where should it go?"},{"location":"tutorial/#automated-processing-1-creating-an-embedded-sssom-file","text":"Important note May 8 2022 *: The SSSOM toolkit have not yet been updated to the most recent changes of the SSSOM data model. If you get an error ValueError: match_type must be supplied , you have to update your local installation.","title":"Automated processing 1: Creating an embedded SSSOM file"},{"location":"tutorial/#embedded-vs-external-mode-for-sssom-metadata","text":"One problem with table formats like TSV or CSV, in contrast to more flexible tree shaped formats like JSON or XML, is that it is notoriously hard to include metadata about the whole table (for example, mapping set metadata) in them. There are essentially three options: All metadata is stored as values in columns. While this is definitely possible, it is not ideal for a few reasons: It is highly redundant. If we have to store the mapping_set_id , for example, as a value in a mapping table with 1000 mappings, it is repeated 1000 times. It is less immediately clear whether a piece of metadata pertains to the mapping_set or a mapping (you have to study the specification to understand that author_id pertains to an individual mapping rather than the whole mapping set). Metadata about the mapping set is stored within the TSV file header. Basically, we introduce a number of rows at the top of the TSV file that we reserve for metadata. The disadvantage is that many parsers for such flat files do not know how to deal with a header like this. We keep metadata about tables and mapping sets separate, i.e. we keep one TSV file that contains the data and one YAML file that contains the mapping set metadata. This is often a good option, but keeping the two separate may cause a problem: in environments where the data is shared around (emailed, copied) the connection can get lost. In SSSOM, we opted for option 2 as the default, which we call \"embedded mode\" (the metadata is embedded). Most commands in the SSSOM toolkit expect SSSOM files to be in embedded mode. However, we support option 3 (external mode) indirectly by providing operations to simply merge the two before other processing steps.","title":"Embedded vs external mode for SSSOM metadata"},{"location":"tutorial/#converting-an-sssom-file-from-from-external-to-embedded-mode","text":"If you do not have the SSSOM toolkit installed, do so now . Download the food mappings created before. If you feel confident with your own mappings, feel free to use these instead. Mappings Metadata Now you let's use SSSOM toolkit to merge these two: sssom parse example1.sssom.tsv -m example1.sssom.yml -o foodieinc-food.sssom.tsv If you open foodieinc-food.sssom.tsv , you will see: # comment: We could map to FOODON:00004187 instead which more specifically refers to # \"raw\" Pink apples. Decided against to be consistent with other mapping choices. # curie_map: # FOODON: http://purl.obolibrary.org/obo/FOODON_ # KF_FOOD: https://kewl-foodie.inc/food/ # skos: http://www.w3.org/2004/02/skos/core# # sssom: https://w3id.org/sssom/ # license: https://creativecommons.org/licenses/by/4.0/ # mapping_date: '2022-05-02' # mapping_set_description: Manually curated alignment of KEWL FOODIE INC internal food # and nutrition database with Food Ontology (FOODON). Intended to be used for ontological # analysis and grouping of KEWL FOODIE INC related data. # mapping_set_id: https://w3id.org/sssom/tutorial/example1.sssom.tsv # mapping_set_version: '2022-06-01' # object_source: wikidata:Q55118395 # object_source_version: http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl # subject_source: KF_FOOD:DB subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 \"We could map to FOODON:03310788 instead to cover sliced apples, but only \"\"whole\"\" apple types exist.\" KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 \"We could map to FOODON:00004187 instead which more specifically refers to \"\"raw\"\" Pink apples. Decided against to be consistent with other mapping choices.\" KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0","title":"Converting an SSSOM file from from external to embedded mode"},{"location":"tutorial/#converting-an-sssom-file-to-json","text":"We will now convert the embedded SSSOM file we created before into JSON: sssom convert foodieinc-food.sssom.tsv --output-format json -o foodieinc-food.sssom.json While the JSON format is not yet stable , it is close to completion.","title":"Converting an SSSOM file to JSON"},{"location":"tutorial/#diff-between-two-versions","text":"The last part of this tutorial concerns one of the main motivations of using a controlled metadata model for mappings: versioning. One key concern for data management, and mapping management in particular, is to be able under understand the evolution of mappings over time. While this command is not stable yet, we can use it to understand the difference between two mappings sets: sssom diff . Let us try to look at the difference between an old version of our foodie-inc mapping set and our new one: sssom diff foodieinc-food.sssom.tsv ../embedded/foodie-inc-2022-05-01.sssom.tsv -o diff.sssom.tsv The outcome gives us the following information: subject_id subject_label predicate_id object_id object_label mapping_justification author_id object_source_version mapping_date confidence comment KF_FOOD:F003 pink skos:exactMatch FOODON:00004186 Pink apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_1 KF_FOOD:F003 pink skos:exactMatch FOODON:00004187 Pink apple (whole, raw) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.9 UNIQUE_2 KF_FOOD:F002 gala skos:exactMatch FOODON:00003348 Gala apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:broadMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH KF_FOOD:F001 apple skos:exactMatch FOODON:00002473 apple (whole) semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 0.95 COMMON_TO_BOTH KF_FOOD:F004 braeburn skos:exactMatch sssom:NoMapping semapv:ManualMappingCuration orcid:0000-0002-7356-1779 http://purl.obolibrary.org/obo/foodon/releases/2022-02-01/foodon.owl 2022-05-02 1.0 COMMON_TO_BOTH This can be used to understand that the first mapping is only present in the new mapping set, while the second mapping was present in the old mapping set - all the other ones are in common between the two.","title":"Diff between two versions"},{"location":"type_hint/","text":"type_hint URI : sssom:type_hint Applicable to : ExtensionDefinition Description Expected type of the values of the extension slot. Properties Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.) Schema developer documentation LinkML source name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"type_hint"},{"location":"type_hint/#type_hint","text":"URI : sssom:type_hint Applicable to : ExtensionDefinition Description Expected type of the values of the extension slot.","title":"type_hint"},{"location":"type_hint/#properties","text":"Range : Uriorcurie . The range of the element is the type of the value that can be assigned to it. Required? : Optional (You can add this element to the mapping or mapping set, but it is not required.)","title":"Properties"},{"location":"type_hint/#schema-developer-documentation","text":"LinkML source name: type_hint description: Expected type of the values of the extension slot. from_schema: https://w3id.org/sssom/schema/ rank: 1000 alias: type_hint owner: extension definition domain_of: - extension definition range: uriorcurie","title":"Schema developer documentation"},{"location":"usecases/","text":"Use cases and case studies Mondo disease mappings Mondo mappings The National Microbiome Data Collaborative (NMDC, https://microbiomedata.org/): Various data model mappings , e.g. MIXS, GOLD, etc CCDH (mapping clinical data models, ontologies and value sets) https://harmonization.datacommons.cancer.gov/ccdh-resources SNOMED-NCIT example Cross-species mapping efforts mouse-human mapping commons Microbial traits https://github.com/mapping-commons/microbial-trait-mappings Biomappings https://github.com/biomappings/biomappings/tree/master/docs/_data/sssom Decentralized curation of mappings, especially ones that aren't incident to ontology terms Clinical mappings Gdocs for discussion.","title":"Use Cases"},{"location":"usecases/#use-cases-and-case-studies","text":"","title":"Use cases and case studies"},{"location":"usecases/#mondo-disease-mappings","text":"Mondo mappings","title":"Mondo disease mappings"},{"location":"usecases/#the-national-microbiome-data-collaborative-nmdc-httpsmicrobiomedataorg","text":"Various data model mappings , e.g. MIXS, GOLD, etc","title":"The National Microbiome Data Collaborative (NMDC, https://microbiomedata.org/):"},{"location":"usecases/#ccdh-mapping-clinical-data-models-ontologies-and-value-sets","text":"https://harmonization.datacommons.cancer.gov/ccdh-resources SNOMED-NCIT example","title":"CCDH (mapping clinical data models, ontologies and value sets)"},{"location":"usecases/#cross-species-mapping-efforts","text":"mouse-human mapping commons","title":"Cross-species mapping efforts"},{"location":"usecases/#microbial-traits","text":"https://github.com/mapping-commons/microbial-trait-mappings","title":"Microbial traits"},{"location":"usecases/#biomappings","text":"https://github.com/biomappings/biomappings/tree/master/docs/_data/sssom Decentralized curation of mappings, especially ones that aren't incident to ontology terms","title":"Biomappings"},{"location":"usecases/#clinical-mappings","text":"Gdocs for discussion.","title":"Clinical mappings"},{"location":"workshops/","text":"Workshops Mapping Commons Workshop Series Wikidata: https://www.wikidata.org/wiki/Q108394475 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings 2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings","title":"Workshops"},{"location":"workshops/#workshops","text":"","title":"Workshops"},{"location":"workshops/#mapping-commons-workshop-series","text":"Wikidata: https://www.wikidata.org/wiki/Q108394475 1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings 2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings","title":"Mapping Commons Workshop Series"},{"location":"events/ccb2022/","text":"CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings Where: Virtual event at the Center for Computational Biomedicine, Harvard Medical School, see https://computationalbiomed.hms.harvard.edu/education/ccb-seminar-series/ When: Monday 12 Dec 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: In this seminar, we will discuss the role of entity mappings in the biomedical domain, and the potential gain we might get from standardising and sharing them. We will introduce the Simple Standard of Ontological Mappings (SSSOM, https://w3id.org/sssom) and showcase some of its use cases. The central goal of this seminar is to redefine entity mappings as FAIR semantic artefacts in their own right, thus making them first-class citizens alongside, for example, controlled vocabularies and ontologies.","title":"Ccb2022"},{"location":"events/ccb2022/#ccb-seminar-series-open-sssom-unlocking-the-wealth-of-biomedical-data-using-shared-standardized-entity-mappings","text":"Where: Virtual event at the Center for Computational Biomedicine, Harvard Medical School, see https://computationalbiomed.hms.harvard.edu/education/ccb-seminar-series/ When: Monday 12 Dec 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: In this seminar, we will discuss the role of entity mappings in the biomedical domain, and the potential gain we might get from standardising and sharing them. We will introduce the Simple Standard of Ontological Mappings (SSSOM, https://w3id.org/sssom) and showcase some of its use cases. The central goal of this seminar is to redefine entity mappings as FAIR semantic artefacts in their own right, thus making them first-class citizens alongside, for example, controlled vocabularies and ontologies.","title":"CCB Seminar Series: Open SSSOM - Unlocking the wealth of biomedical data using shared standardized entity mappings"},{"location":"events/mc2021/","text":"1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings When: 03.09.2021 For a list of participants see: Wikidata: https://www.wikidata.org/wiki/Q108394519 Scholia: https://scholia.toolforge.org/event/Q108394519 In 2020, we introduced the Simple Standard for Sharing Ontology Mappings (SSSOM) as a way for the mapping community to exchange and consolidate mappings using a simple TSV format. SSSOM seeks to solve, in particular, the following problems: Standardising the mapping metadata that is necessary to drive data transformation and knowledge graph merging use cases Enable effective merging and filtering of mapping sets Standardising the representation of mapping sets across formats such as RDF/XML, JSON-LD, TSV, and others. The purpose of this 3-hour workshop: Describing current use cases to the community, and ensuring all community use cases are documented and understood Establishing a user forum for getting support and providing feedback Define a simple governance strategy for organic evolution of standard Describing a number of key open issues: The representation of complex mappings The representation of curation rules The problem of predicate modification The alignment with external standards such as PROV-O and Alignment API Defining the path to a SSSOM beta release (stable) and the rallying for the paper Resources : Overview presentation Outcomes Members of the SSSOM core team are organised as as github team: https://github.com/orgs/mapping-commons/teams/sssom-core If you want to become a member, please make an issue here: https://github.com/mapping-commons/SSSOM/issues We added some of the questions asked to the new SSSOM FAQ: https://mapping-commons.github.io/sssom/faq/ Governance proposal (comments welcome): https://github.com/mapping-commons/SSSOM/issues/82 Governance will evolve over time. Standard and governance will evolve together. We will versioning (like SemVer) and should denote when backwards incompatible changes happen The 5-Star system for open FAIR mappings is now in its first official version. Discussion summary Ben Gyori: would be interesting to discuss beyond the format whether there's a central repository, or whether primary developers will make it as a primary export hosted along with their other artifact. Would there be a process to pull those? Nico: takes a long time for uptake of new publication systems, so this could take a long time -> maybe better to promote on an ontology level. Could also have the side benefit of providing a point of introspection John G: I totally would want BioPortal to be capable of managing the RDF produced from SSSOM resources, and for Bioportal to be a mapping resource and not simply an ontology resource. I suspect the RDF patterns that SSSOM is defining are the gold we'll need for that gold standard for exchanging mappings. Uploading the RDF files can trivially be done in a naive way of course, but integrating that RDF knowledge into Bioportal to make them maximally useful as a separate kind of resource is obviously 'real work' (and so schedules are unknowable). John: how dependent is the library on the software itself? Is it an exchange principle? Nico: LinkML has the advantage that it gets JSON and TTL outputs for free if we use it. Would also be advantageous if more people used this standard for metamodeling to create similar outputs for different modeling Charlie: using \"frontmatter\" format for SSSOM TSV files, like how github is using frontmatter in Jekyll (ref: https://blog.datacite.org/using-yaml-frontmatter-with-csv/) (http://csvy.org/) John G: Analogous to frontmatter format, I keep being drawn to the SKOS Play format as an alternate (but I think TTL-compatible) format for the SSSOM content. How bad would that be? (I can create a ticket) Charlie: Requirements for a default JSON-LD context (e.g., prefix -> URL prefix mapping) How should it be maintained? Should it continue to be manually curated, or is an automated export from something like the Bioregistry a good idea? If it's automatically exported from the Bioregistry, what kinds of interactions might users want to have via the Bioregistry issue tracker to propose improvements? Similarly, we can make tutorials for directly creating PRs. Charlie: How prefixes should be stylized/what is the business logic/decision tree for using OBO Library PURLs, Identifiers.org URLs, Bioregistry URLs, first-party provider URLs, etc. based on what's available and mapped between various first-party providers, third-party providers (e.g., ChemSpider InChI resolver), and meta-providers (e.g., Identifiers.org, OntoBee)? This is both a concern for \"best practices\" in SSSOM defining a custom context and also when using or extending the default context. Charlie: How to represent mappings where the curator is unsure if the relation is correct or not? This happens often when curating equivalences, e.g., in Biomappings https://github.com/biomappings/biomappings/blob/master/src/biomappings/resources/unsure.tsv Tiffany: Is it important to know why someone feels more or less confident about a mapping? If so, is there also a way to include that in the measure of \u201cconfidence\u201d? Sue: In practice I\u2019ve tended to add comments when I am uncertain and have questions. Possibly this could be formalized? Davera clinical use case discussion: Overall issue: mapping sets of things to a term is a goal for clinical mappings mapping recommendations/rational exercise staging and diagnosis information (like stage 1 or stage 2 of a given cancer) Select a set of stages - this is challenging wrt mappings Different kinds of scales describing the same thing are hard/sometimes not \"kosher\" to mix Phenotypes rely on capturing human-readable data on the decision logic of how mappings are applied by standards implementation team Proposed to look at the HL7 Implementation profiles as a way to incorporate an approach to this complex mapping challenge Melissa: rename SSSOM to Slytherin Standard. Charlie 100% supports this (Tiffany: +1; Alex +1) Kristin also likes this. John used it. John G: Ontology repositories are mappings-motivated, to both provide to users good mappings, and to provide good ways for users or managers to ingest, manage, apply, and create mapping knowledge. Ontology repositories are presumably also capable of storing mappings in their semantic (RDF-equivalent) format. With this in mind, is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories? John G: Need to consider identification and versioning of the mapping artifacts. It's one thing to say \"We have all the mapping artifacts and we are giving those out\", but (just like ontologies) citing a mapping artifact requires that you have a unique identifier for that artifact, and that the identifier incorporates the fact the artifact may have multiple versions. Ideally the SSSOM artifacts (like ontologies) would (a) be accessible in a defined format at the identifier IRI, (b) include their identifiers within the SSMOC artifact. I am thinking that an SSMOC is inherently a semantic artifact, and therefore it should follow semantic namespace declaration principles in this regard. Julie: W3id supports regex based redirects (for purls) Breakout sessions Curation rules: documenting the decision rules on how a mapping was determined Effective definition of inclusion criteria/exclusion criteria: Inclusion example: Two ontologies saying I created exact mappings that they have a string match or a string match to a synonym + an xref Exclusion example: Only matched on an acronym Match types Cover partial string matches Other documentation criteria to distinguish exact from narrow/broad - how exact is exact Line between close/narrow/broad Direction of narrow and broad DOS: I'd favor manual mapping be done on definitions + context in ontology, leaving lexical mappings to machines. What metadata could we add to the header to make clear criteria used? One thing it might be useful to record is whether ontology context (relationships & location in classification) of mapped terms was used (Some ontologies/taxonomies have poor quality graphs but high quality term definitions.) Source string match to target (lexical exact, stem, word [synonym and type]) - need for both source and target, how to synonyms fit in Needs: Generalized patterns that relate file header information to row-level information Need more expressivity in the match type Inclusion and exclusion criteria Best practices guide Algorithm/tool/similarity measure for computationally derived mappings Specificity with respect to the parent concept or portion of the hierarchy that the concept is from Mapping provenance and alignment with external provenance standards Problems: We need to distinguish original and derived mappings We need to somehow \u201cencode\u201d how a derived mapping was created (for example through a walk USeful to capture as part of the PROV activity agents (wasAssociatedWith some) mapping tool creator algorithms semantic similarity etc Why provenance: \u201ci dont trust mappings from source x..\u201d Who did it? What tools were used? - are the most important When completed, how often updated Which version of the ontology was the mapping generated from? (20-30 provenance related properties that could be relevant) list list of most-recommended terms as a template: https://github.com/sifrproject/MOD-Ontology/blob/master/mod-v1.4_properties_template.ttl Activity manual mapping -> Activity reconciliation Inputs and outputs of activities? Mapping set activities vs mapping activities Shahim: Generic tagging mechanism users add tags k:v Suggestion: we open the \u201cother\u201d field to arbitrary json, then if we see people use something a lot, we allow promoting stuff to the top level (look at fhir as an example) James counter suggestion: open the column space and allow Qnames in there? its like Shahims suggestion just on the top level; John says look at SKOS Play convert tool it implements arbitrary triples as so you add whatever properties you want in the top row top row is actually the first row after the Column Header row, which begins with \"Identifier\" cell Thomas: While it\u2019s nice to have the ability to express complex prov (and we should think about it), the important prov files are not that complex. Minimum should be something like: Creator, creation date, algorithm,... see below \u201clist of critical (minimum) prov information\u201d John: World is changing we can assume a bit more complexity All: A short list of the critical provenance information is needed, but there should also be a mechanism to add other ecosystem-specific provenance. Versioning: We need to carefully think through versioning of mapping sets. Versioning should be similar to ontology artefacts, with version IRIs and PURLs W3id supports regex based redirects We need to introduce versioning for the SSSOM standard itself. Someway to indicate whether breaking changes were introduced Representing predicate modification: negation, inverse, direct, indirect etc https://github.com/mapping-commons/sssom/issues/40 Negative mappings (e.g., not equivalent to, not related to) have a clear use case in supporting semi-automated curation of mappings to avoid zombie mappings. We agreed adding additional syntax to SSSOM would make it less simple and likely less accessible. Two candidate solutions for including negative mappings remain: curating a controlled vocabulary of negative relationships (e.g., sssom:notEquivalentTo) OR adding a predicated modifier column. We considered parallel discussions in the LinkML community and examined the use of predicate modifiers in the Gene Ontology Annotation database. Both solutions could work, but we were hesitant to commit to one during the meeting. Mapping (clinical etc) data model elements and values https://github.com/mapping-commons/sssom/issues/43 Use cases for complex mappings https://github.com/mapping-commons/sssom/issues/61 The main outcome for this discussion was that the particpant urged to keep the Simple in SSSOM, and that any decision to capture more complex mapping cases should be driven by a veruy strong use case For the first release of the SSSOM standard, we will not worry about complex mappings Next steps Declare stable first version for SSSOM spec (September 2021) Write manuscript (September/October 2021) Dockerise all mapping related tooling, for example for generation, reconciliation, transformation etc. (December 2021) Work with OAEI to publish automated mappings more systematically in SSSOM, including better mapping justifications/curation rules (Early 2022) Work with @cmungall & @balhoff to integrate mapping reconciliation as a first-class citizen into mapping pipelines (February 2022) Extend OxO to fully support SSSOM data model (prototype SSSOM browser April 2022).","title":"1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings"},{"location":"events/mc2021/#1st-mapping-commons-workshop-on-simple-standard-for-sharing-ontology-mappings","text":"When: 03.09.2021 For a list of participants see: Wikidata: https://www.wikidata.org/wiki/Q108394519 Scholia: https://scholia.toolforge.org/event/Q108394519 In 2020, we introduced the Simple Standard for Sharing Ontology Mappings (SSSOM) as a way for the mapping community to exchange and consolidate mappings using a simple TSV format. SSSOM seeks to solve, in particular, the following problems: Standardising the mapping metadata that is necessary to drive data transformation and knowledge graph merging use cases Enable effective merging and filtering of mapping sets Standardising the representation of mapping sets across formats such as RDF/XML, JSON-LD, TSV, and others. The purpose of this 3-hour workshop: Describing current use cases to the community, and ensuring all community use cases are documented and understood Establishing a user forum for getting support and providing feedback Define a simple governance strategy for organic evolution of standard Describing a number of key open issues: The representation of complex mappings The representation of curation rules The problem of predicate modification The alignment with external standards such as PROV-O and Alignment API Defining the path to a SSSOM beta release (stable) and the rallying for the paper Resources : Overview presentation","title":"1st Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings"},{"location":"events/mc2021/#outcomes","text":"Members of the SSSOM core team are organised as as github team: https://github.com/orgs/mapping-commons/teams/sssom-core If you want to become a member, please make an issue here: https://github.com/mapping-commons/SSSOM/issues We added some of the questions asked to the new SSSOM FAQ: https://mapping-commons.github.io/sssom/faq/ Governance proposal (comments welcome): https://github.com/mapping-commons/SSSOM/issues/82 Governance will evolve over time. Standard and governance will evolve together. We will versioning (like SemVer) and should denote when backwards incompatible changes happen The 5-Star system for open FAIR mappings is now in its first official version.","title":"Outcomes"},{"location":"events/mc2021/#discussion-summary","text":"Ben Gyori: would be interesting to discuss beyond the format whether there's a central repository, or whether primary developers will make it as a primary export hosted along with their other artifact. Would there be a process to pull those? Nico: takes a long time for uptake of new publication systems, so this could take a long time -> maybe better to promote on an ontology level. Could also have the side benefit of providing a point of introspection John G: I totally would want BioPortal to be capable of managing the RDF produced from SSSOM resources, and for Bioportal to be a mapping resource and not simply an ontology resource. I suspect the RDF patterns that SSSOM is defining are the gold we'll need for that gold standard for exchanging mappings. Uploading the RDF files can trivially be done in a naive way of course, but integrating that RDF knowledge into Bioportal to make them maximally useful as a separate kind of resource is obviously 'real work' (and so schedules are unknowable). John: how dependent is the library on the software itself? Is it an exchange principle? Nico: LinkML has the advantage that it gets JSON and TTL outputs for free if we use it. Would also be advantageous if more people used this standard for metamodeling to create similar outputs for different modeling Charlie: using \"frontmatter\" format for SSSOM TSV files, like how github is using frontmatter in Jekyll (ref: https://blog.datacite.org/using-yaml-frontmatter-with-csv/) (http://csvy.org/) John G: Analogous to frontmatter format, I keep being drawn to the SKOS Play format as an alternate (but I think TTL-compatible) format for the SSSOM content. How bad would that be? (I can create a ticket) Charlie: Requirements for a default JSON-LD context (e.g., prefix -> URL prefix mapping) How should it be maintained? Should it continue to be manually curated, or is an automated export from something like the Bioregistry a good idea? If it's automatically exported from the Bioregistry, what kinds of interactions might users want to have via the Bioregistry issue tracker to propose improvements? Similarly, we can make tutorials for directly creating PRs. Charlie: How prefixes should be stylized/what is the business logic/decision tree for using OBO Library PURLs, Identifiers.org URLs, Bioregistry URLs, first-party provider URLs, etc. based on what's available and mapped between various first-party providers, third-party providers (e.g., ChemSpider InChI resolver), and meta-providers (e.g., Identifiers.org, OntoBee)? This is both a concern for \"best practices\" in SSSOM defining a custom context and also when using or extending the default context. Charlie: How to represent mappings where the curator is unsure if the relation is correct or not? This happens often when curating equivalences, e.g., in Biomappings https://github.com/biomappings/biomappings/blob/master/src/biomappings/resources/unsure.tsv Tiffany: Is it important to know why someone feels more or less confident about a mapping? If so, is there also a way to include that in the measure of \u201cconfidence\u201d? Sue: In practice I\u2019ve tended to add comments when I am uncertain and have questions. Possibly this could be formalized? Davera clinical use case discussion: Overall issue: mapping sets of things to a term is a goal for clinical mappings mapping recommendations/rational exercise staging and diagnosis information (like stage 1 or stage 2 of a given cancer) Select a set of stages - this is challenging wrt mappings Different kinds of scales describing the same thing are hard/sometimes not \"kosher\" to mix Phenotypes rely on capturing human-readable data on the decision logic of how mappings are applied by standards implementation team Proposed to look at the HL7 Implementation profiles as a way to incorporate an approach to this complex mapping challenge Melissa: rename SSSOM to Slytherin Standard. Charlie 100% supports this (Tiffany: +1; Alex +1) Kristin also likes this. John used it. John G: Ontology repositories are mappings-motivated, to both provide to users good mappings, and to provide good ways for users or managers to ingest, manage, apply, and create mapping knowledge. Ontology repositories are presumably also capable of storing mappings in their semantic (RDF-equivalent) format. With this in mind, is the concept of a \"mapping server\" equivalent, complementary, or antagonistic to the existing ontology repositories? John G: Need to consider identification and versioning of the mapping artifacts. It's one thing to say \"We have all the mapping artifacts and we are giving those out\", but (just like ontologies) citing a mapping artifact requires that you have a unique identifier for that artifact, and that the identifier incorporates the fact the artifact may have multiple versions. Ideally the SSSOM artifacts (like ontologies) would (a) be accessible in a defined format at the identifier IRI, (b) include their identifiers within the SSMOC artifact. I am thinking that an SSMOC is inherently a semantic artifact, and therefore it should follow semantic namespace declaration principles in this regard. Julie: W3id supports regex based redirects (for purls)","title":"Discussion summary"},{"location":"events/mc2021/#breakout-sessions","text":"","title":"Breakout sessions"},{"location":"events/mc2021/#curation-rules-documenting-the-decision-rules-on-how-a-mapping-was-determined","text":"Effective definition of inclusion criteria/exclusion criteria: Inclusion example: Two ontologies saying I created exact mappings that they have a string match or a string match to a synonym + an xref Exclusion example: Only matched on an acronym Match types Cover partial string matches Other documentation criteria to distinguish exact from narrow/broad - how exact is exact Line between close/narrow/broad Direction of narrow and broad DOS: I'd favor manual mapping be done on definitions + context in ontology, leaving lexical mappings to machines. What metadata could we add to the header to make clear criteria used? One thing it might be useful to record is whether ontology context (relationships & location in classification) of mapped terms was used (Some ontologies/taxonomies have poor quality graphs but high quality term definitions.) Source string match to target (lexical exact, stem, word [synonym and type]) - need for both source and target, how to synonyms fit in Needs: Generalized patterns that relate file header information to row-level information Need more expressivity in the match type Inclusion and exclusion criteria Best practices guide Algorithm/tool/similarity measure for computationally derived mappings Specificity with respect to the parent concept or portion of the hierarchy that the concept is from","title":"Curation rules: documenting the decision rules on how a mapping was determined"},{"location":"events/mc2021/#mapping-provenance-and-alignment-with-external-provenance-standards","text":"Problems: We need to distinguish original and derived mappings We need to somehow \u201cencode\u201d how a derived mapping was created (for example through a walk USeful to capture as part of the PROV activity agents (wasAssociatedWith some) mapping tool creator algorithms semantic similarity etc Why provenance: \u201ci dont trust mappings from source x..\u201d Who did it? What tools were used? - are the most important When completed, how often updated Which version of the ontology was the mapping generated from? (20-30 provenance related properties that could be relevant) list list of most-recommended terms as a template: https://github.com/sifrproject/MOD-Ontology/blob/master/mod-v1.4_properties_template.ttl Activity manual mapping -> Activity reconciliation Inputs and outputs of activities? Mapping set activities vs mapping activities Shahim: Generic tagging mechanism users add tags k:v Suggestion: we open the \u201cother\u201d field to arbitrary json, then if we see people use something a lot, we allow promoting stuff to the top level (look at fhir as an example) James counter suggestion: open the column space and allow Qnames in there? its like Shahims suggestion just on the top level; John says look at SKOS Play convert tool it implements arbitrary triples as so you add whatever properties you want in the top row top row is actually the first row after the Column Header row, which begins with \"Identifier\" cell Thomas: While it\u2019s nice to have the ability to express complex prov (and we should think about it), the important prov files are not that complex. Minimum should be something like: Creator, creation date, algorithm,... see below \u201clist of critical (minimum) prov information\u201d John: World is changing we can assume a bit more complexity All: A short list of the critical provenance information is needed, but there should also be a mechanism to add other ecosystem-specific provenance. Versioning: We need to carefully think through versioning of mapping sets. Versioning should be similar to ontology artefacts, with version IRIs and PURLs W3id supports regex based redirects We need to introduce versioning for the SSSOM standard itself. Someway to indicate whether breaking changes were introduced","title":"Mapping provenance and alignment with external provenance standards"},{"location":"events/mc2021/#representing-predicate-modification-negation-inverse-direct-indirect-etc","text":"https://github.com/mapping-commons/sssom/issues/40 Negative mappings (e.g., not equivalent to, not related to) have a clear use case in supporting semi-automated curation of mappings to avoid zombie mappings. We agreed adding additional syntax to SSSOM would make it less simple and likely less accessible. Two candidate solutions for including negative mappings remain: curating a controlled vocabulary of negative relationships (e.g., sssom:notEquivalentTo) OR adding a predicated modifier column. We considered parallel discussions in the LinkML community and examined the use of predicate modifiers in the Gene Ontology Annotation database. Both solutions could work, but we were hesitant to commit to one during the meeting.","title":"Representing predicate modification: negation, inverse, direct, indirect etc"},{"location":"events/mc2021/#mapping-clinical-etc-data-model-elements-and-values","text":"https://github.com/mapping-commons/sssom/issues/43","title":"Mapping (clinical etc) data model elements and values"},{"location":"events/mc2021/#use-cases-for-complex-mappings","text":"https://github.com/mapping-commons/sssom/issues/61 The main outcome for this discussion was that the particpant urged to keep the Simple in SSSOM, and that any decision to capture more complex mapping cases should be driven by a veruy strong use case For the first release of the SSSOM standard, we will not worry about complex mappings","title":"Use cases for complex mappings"},{"location":"events/mc2021/#next-steps","text":"Declare stable first version for SSSOM spec (September 2021) Write manuscript (September/October 2021) Dockerise all mapping related tooling, for example for generation, reconciliation, transformation etc. (December 2021) Work with OAEI to publish automated mappings more systematically in SSSOM, including better mapping justifications/curation rules (Early 2022) Work with @cmungall & @balhoff to integrate mapping reconciliation as a first-class citizen into mapping pipelines (February 2022) Extend OxO to fully support SSSOM data model (prototype SSSOM browser April 2022).","title":"Next steps"},{"location":"events/mc2023/","text":"2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings (SSSOM) When : Sunday, 23rd April, 2:30 pm Italy (CET), 1:30 pm BST, 8:30 am EDT, 5:30 am PDT (3 hours total) Where : co-located with Biocuration 2023 . For information about the venue see https://biocuration2023.github.io/workshops. During the workshop, we will work a lot with Slido for interactive sharing of ideas, rather than relying on open discussions. We recommend having your laptop / phone with you to be able to participate. Recordings https://www.youtube.com/watch?v=juMQQ01Q540&list=PLqu_J7ADQtKyX55F7RqZtaSS7TwGd3MoR&ab_channel=BiocurationConference2023 Recommended preparation Scroll through the documentation , in particular the paper and the basic tutorial to get a basic sense of SSSOM Skim through, or even watch, the SSSOM CCB Seminar recording Scroll through the slide decks describing the problems we will be adressing (note, they are all works in progress): Complex Mappings: Examples from OMOP2OBO (Tiffany Callahan) Complex mappings - the journey towards a proposal (Nico Matentzoglu) Literal mappings with SSSOM (James McLaughlin) FAIR Impact and schema mappings (Yann Le Franc) - slides TBD Mapping Data Structures: Challenges and Approaches (Chris Mungall) Concept Set Mappings (Chris Roeder) - slides TBD Preliminary agenda Time Topic Led by 2:30pm Welcome, introduction, SSSOM overview and introduction of the problem of \"non-simple mappings\" Nico Matentzoglu 2:55pm FAIR Impact and schema mappings Yann Le Franc 3:10pm Literal mappings with SSSOM James McLaughlin 3:20pm Literal Mappings - Discussion 3:30pm Concept Set Mappings Chris Roeder 3:45pm Concept Set Mappings - discussion 3:55pm Break 4:05pm Complex Mappings: Examples from OMOP2OBO Tiffany Callahan 4:20pm Complex mappings - the journey towards a proposal Nico Matentzoglu 4:35pm Complex Mappings - discussion 4:50pm Mapping Data Structures: Challenges and Approaches Chris Mungall 5:05pm Schema Mappings - discussion 5:20pm Summary and closing remarks Nico Matentzoglu Organisers Nicolas Matentzoglu Yann Le Franc Tiffany Callahan Chris Mungall Chris Roeder James McLaughlin Nomi Harris","title":"2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings (SSSOM)"},{"location":"events/mc2023/#2nd-mapping-commons-workshop-on-simple-standard-for-sharing-ontology-mappings-sssom","text":"When : Sunday, 23rd April, 2:30 pm Italy (CET), 1:30 pm BST, 8:30 am EDT, 5:30 am PDT (3 hours total) Where : co-located with Biocuration 2023 . For information about the venue see https://biocuration2023.github.io/workshops. During the workshop, we will work a lot with Slido for interactive sharing of ideas, rather than relying on open discussions. We recommend having your laptop / phone with you to be able to participate.","title":"2nd Mapping Commons Workshop on Simple Standard for Sharing Ontology Mappings (SSSOM)"},{"location":"events/mc2023/#recordings","text":"https://www.youtube.com/watch?v=juMQQ01Q540&list=PLqu_J7ADQtKyX55F7RqZtaSS7TwGd3MoR&ab_channel=BiocurationConference2023","title":"Recordings"},{"location":"events/mc2023/#recommended-preparation","text":"Scroll through the documentation , in particular the paper and the basic tutorial to get a basic sense of SSSOM Skim through, or even watch, the SSSOM CCB Seminar recording Scroll through the slide decks describing the problems we will be adressing (note, they are all works in progress): Complex Mappings: Examples from OMOP2OBO (Tiffany Callahan) Complex mappings - the journey towards a proposal (Nico Matentzoglu) Literal mappings with SSSOM (James McLaughlin) FAIR Impact and schema mappings (Yann Le Franc) - slides TBD Mapping Data Structures: Challenges and Approaches (Chris Mungall) Concept Set Mappings (Chris Roeder) - slides TBD","title":"Recommended preparation"},{"location":"events/mc2023/#preliminary-agenda","text":"Time Topic Led by 2:30pm Welcome, introduction, SSSOM overview and introduction of the problem of \"non-simple mappings\" Nico Matentzoglu 2:55pm FAIR Impact and schema mappings Yann Le Franc 3:10pm Literal mappings with SSSOM James McLaughlin 3:20pm Literal Mappings - Discussion 3:30pm Concept Set Mappings Chris Roeder 3:45pm Concept Set Mappings - discussion 3:55pm Break 4:05pm Complex Mappings: Examples from OMOP2OBO Tiffany Callahan 4:20pm Complex mappings - the journey towards a proposal Nico Matentzoglu 4:35pm Complex Mappings - discussion 4:50pm Mapping Data Structures: Challenges and Approaches Chris Mungall 5:05pm Schema Mappings - discussion 5:20pm Summary and closing remarks Nico Matentzoglu","title":"Preliminary agenda"},{"location":"events/mc2023/#organisers","text":"Nicolas Matentzoglu Yann Le Franc Tiffany Callahan Chris Mungall Chris Roeder James McLaughlin Nomi Harris","title":"Organisers"},{"location":"events/oboacademy2022/","text":"OBO Academy 2022: Introduction to manual mapping curation Where: Virtual, https://oboacademy.github.io/obook/courses/monarch-obo-training/ When: 17th May 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: See here .","title":"Oboacademy2022"},{"location":"events/oboacademy2022/#obo-academy-2022-introduction-to-manual-mapping-curation","text":"Where: Virtual, https://oboacademy.github.io/obook/courses/monarch-obo-training/ When: 17th May 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: See here .","title":"OBO Academy 2022: Introduction to manual mapping curation"},{"location":"events/ohdsi2022/","text":"OHDSI Symposium 2022: There are no \"good\" mappings. Where: https://www.ohdsi.org/ohdsi2022symposium/ https://www.ohdsi.org/ohdsi2022-workgroup-activities/ When: 15th October 2022 Speaker: Nicolas Matentzoglu, Melissa Haendel, Tiffany Callahan Slides: https://docs.google.com/presentation/d/1sGPh1b0keghxF4o7vMOQAlZ6QyBf97ZpaTXjmMY3UP0/edit#slide=id.p Abstract: The current state of observation data transformation management has resulted in a proliferation of approaches to data normalization and alignment that have accordingly created an explosion of maps. When publicly available, data transformation maps are of varying quality and are often configured to meet single clinical domain or project-specific objectives. Sharing maps in a community requires metadata to help map comparison and evaluation, and release management over different versions. This is typically lacking. In this workshop we will present rationale for translational research data transformation management, including implementation examples mapping Real World Data to OMOP, at-scale. We will discuss the way in which source vocabularies are managed in OMOP and how to improve that process in the future. Data transformations that accommodate divergent underlying ontologies supporting a variety of use cases will be solicited from the participants both in advance and during the workshop.","title":"Ohdsi2022"},{"location":"events/ohdsi2022/#ohdsi-symposium-2022-there-are-no-good-mappings","text":"Where: https://www.ohdsi.org/ohdsi2022symposium/ https://www.ohdsi.org/ohdsi2022-workgroup-activities/ When: 15th October 2022 Speaker: Nicolas Matentzoglu, Melissa Haendel, Tiffany Callahan Slides: https://docs.google.com/presentation/d/1sGPh1b0keghxF4o7vMOQAlZ6QyBf97ZpaTXjmMY3UP0/edit#slide=id.p Abstract: The current state of observation data transformation management has resulted in a proliferation of approaches to data normalization and alignment that have accordingly created an explosion of maps. When publicly available, data transformation maps are of varying quality and are often configured to meet single clinical domain or project-specific objectives. Sharing maps in a community requires metadata to help map comparison and evaluation, and release management over different versions. This is typically lacking. In this workshop we will present rationale for translational research data transformation management, including implementation examples mapping Real World Data to OMOP, at-scale. We will discuss the way in which source vocabularies are managed in OMOP and how to improve that process in the future. Data transformations that accommodate divergent underlying ontologies supporting a variety of use cases will be solicited from the participants both in advance and during the workshop.","title":"OHDSI Symposium 2022: There are no \"good\" mappings."},{"location":"events/ohdsi2023/","text":"Poster presentation at OHDSI 2023 Symposium, Rotterdam Title : \"Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI)\" Where : https://www.ohdsi-europe.org/index.php/symposium-2023 When : 3rd July 2023 Presenters : Polina Talapova Nicolas Matentzoglu Links : Link to poster Link to short report","title":"Ohdsi2023"},{"location":"events/ohdsi2023/#poster-presentation-at-ohdsi-2023-symposium-rotterdam","text":"Title : \"Synergizing Simple Standard for Sharing Ontology Mappings (SSSOM) and the Observational Health Data Sciences and Informatics (OHDSI)\" Where : https://www.ohdsi-europe.org/index.php/symposium-2023 When : 3rd July 2023 Presenters : Polina Talapova Nicolas Matentzoglu Links : Link to poster Link to short report","title":"Poster presentation at OHDSI 2023 Symposium, Rotterdam"},{"location":"events/om2022/","text":"OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook Where: Virtual, co-located with ISWC 2022, http://om2022.ontologymatching.org/ When: 23rd October 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: The Simple Standard for Ontological Mappings (SSSOM) was first published in December 2021 (v. 0.9). After a number of revisions prompted by community feedback, we have published version 0.10.1 in August 2022. One of the key new features is the use of a controlled vocabulary for mapping-related processes, such as preprocessing steps and matching approaches. In this paper, we give an update on the development of SSSOM since v. 0.9, introduce the Semantic Mapping Vocabulary (SEMAPV) and outline some of our thoughts on the establishment of mapping commons in the future.","title":"Om2022"},{"location":"events/om2022/#om-2022-a-simple-standard-for-ontological-mappings-2022-updates-of-data-model-and-outlook","text":"Where: Virtual, co-located with ISWC 2022, http://om2022.ontologymatching.org/ When: 23rd October 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: The Simple Standard for Ontological Mappings (SSSOM) was first published in December 2021 (v. 0.9). After a number of revisions prompted by community feedback, we have published version 0.10.1 in August 2022. One of the key new features is the use of a controlled vocabulary for mapping-related processes, such as preprocessing steps and matching approaches. In this paper, we give an update on the development of SSSOM since v. 0.9, introduce the Semantic Mapping Vocabulary (SEMAPV) and outline some of our thoughts on the establishment of mapping commons in the future.","title":"OM 2022: A Simple Standard for Ontological Mappings 2022 - Updates of data model and outlook"},{"location":"events/pistoia2022/","text":"Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM) Where: Virtual When: 28th April 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: Meeting introducing SSSOM to the Pistoia Alliance.","title":"Pistoia2022"},{"location":"events/pistoia2022/#pistoia-seminar-2022-a-simple-standard-for-sharing-ontological-mappings-sssom","text":"Where: Virtual When: 28th April 2022 Speaker: Nicolas Matentzoglu, PhD, Independent Contractor, Semantic Web and Knowledge Graphs expert Abstract: Meeting introducing SSSOM to the Pistoia Alliance.","title":"Pistoia Seminar 2022: A Simple Standard for Sharing Ontological Mappings (SSSOM)"},{"location":"events/wsbo2021/","text":"WSBO-2021: Workshop on Synergizing Biomedical Ontologies Where: https://github.com/OntoloBridge/WSBO/ Slides","title":"Wsbo2021"},{"location":"events/wsbo2021/#wsbo-2021-workshop-on-synergizing-biomedical-ontologies","text":"Where: https://github.com/OntoloBridge/WSBO/ Slides","title":"WSBO-2021: Workshop on Synergizing Biomedical Ontologies"},{"location":"explanation/mappings/","text":"What is a mapping? The word \"mapping\" is pretty overloaded in practice: for some people, it simply means \"a correspondence of one term to another equivalent or near equivalent term.\" But even here, there is little understanding to what a \"term\" is in this sentence, or what \"almost equivalent\" means - and, there are many different kinds of mappings used in practice that are not \"equivalent\" at all. In its very essence, an individual mapping maps one information entity, i.e. a representation of a real world entity , to another information entity - how, and what these strings could be, will be the subject of the following section. In the following, we consider an information entity a sequence of characters which has a well defined relationship to some thing in the real world , for example: - an ontology id like HP:0004934 corresponds to the concept of \"Vascular calcification\" in the real world. Note that HP:0004934 is annotated with the rdfs:label \"Vascular calcification\". The label itself is not necessarily a term - it could change, for example to \"Abnormal calcification of the vasculature\", and still retain the same meaning. - \"Vascular calcification\" may be a term in my controlled vocabulary which I understand to correspond to that respective disease (not all controlled vocabularies have IDs for their terms). This happens for example in clinical data models that do not use formal identifiers to refer to the values of slots in their data model, like \"MARRIED\" in /datamodel/marital_status. - Examples of terms: - IDs of classes in an ontology - elements of a clinical value set - codes of clinical terminologies such as Z63.1 - TLDR: terms correspond to things in the world and that correspondence is not subject to change. Labels can change without changing the meaning of a term. An attempt at a practical categorisation In our experience, there are roughly four kinds of mappings: string-string : Relating one string, or label, to another string, or label. Understanding such mappings is fundamental to understanding all the other kinds of mappings. string-term : Relating a specific string or \"label\" to their corresponding term in a terminology or ontology. We usually refer to these as synonyms, but there may be other words used in this case. term-term : Relating a term, for example a class in an ontology, to another term. This is what most people in the ontology domain would understand when thy hear \"ontology mappings\". complex mappings : Relating two sets of terms. These are the rarest and most complicated kinds of mappings, as they related for example two phenotypic profiles (sets of phenotypes) with each other. We will discuss some more examples in a future lesson. In some ways, these four kinds of mappings can be very different. We do believe, however, that there are enough important commonalities such as common features, widely overlapping use cases and overlapping toolkits to consider them together. In the following, we will discuss these in more detail, including important features of mappings and useful tools. Important features of mappings Mappings have historically been neglected as second-class citizens in the medical terminology and ontology worlds - the metadata is insufficient to allow for precise analyses and clinical decision support, they are frequently stale and out of date, etc. The question \"Where can I find the canonical mappings between X and Y\"? is often shrugged off and developers are pointed to aggregators such as OxO or UMLS which combine manually curated mappings with automated ones causing \"mapping hairballs\" . There are many important metadata elements to consider, but the ones that are by far the most important to consider one way or another are: Precision : Is the mapping exact, broad or merely closely related? Confidence : Do I trust the mapping? Was is done manually by an expert in my domain, or by an algorithm? Source version : Which version of the term (or its corresponding ontology) was mapped? Is there a newer mapping which has a more suitable match for my term? Whenever you handle mappings (either create, or re-use), make sure you are keenly aware of at least these three metrics, and capture them. You may even want to consider using a proper mapping model like the Simple Shared Standard for Ontology Mappings (SSSOM) which will make your mappings FAIR and reusable. String-string mappings String-string mappings are mappings that relate two strings. The task of matching two strings is ubiquitous for example in database search fields (where a user search string needs to be mapped to some strings in a database). Most, if not all effective ontology matching techniques will employ some form of string-string matching. For example, to match simple variations of labels such as \"abnormal heart\" and \"heart abnormality\", various techniques such as Stemming and bag of words can be employed effectively. Other techniques such as edit-distance or Levenshtein can be used to quantify the similarity of two strings, which can provide useful insights into mapping candidates. String-term mappings / synonyms String-term mappings relate a specific string or \"label\" to their corresponding term in a terminology or ontology. Here, we refer to these as \"synonyms\", but there may be other cases for string-term mappings beyond synonymy. There are a lot of use cases for synonyms so we will name just a few here that are relevant to typical workflows of Semantic Engineers in the life sciences. Thesauri are reference tools for finding synonyms of terms. Modern ontologies often include very rich thesauri, with some ontologies like Mondo capturing more than 70,000 exact and 35,000 related synonyms. They can provide a huge boost to traditional NLP pipelines by providing synonyms that can be used for both Named Entity Recognition and Entity Resolution. Some insight on how, for example, Uberon was used to boost text mining can be found here . Term-term mappings / ontology mappings Term-term mappings relate a term, for example a class in an ontology, to another term, usually from another ontology or database. The term-term case of mappings is what most people in the ontology domain would understand when they hear \"ontology mappings\". This is also what most people understand when they here \"Entity Resolution\" in the database world - the task of determining whether, in essence, two rows in a database correspond to the same thing (as an example of a tool doing ER see deepmatcher , or py-entitymatcher ). For a list standard entity matching toolkit outside the ontology sphere see here . Further reading A great overview can be found in \"Tackling the challenges of matching biomedical ontologies\" (Faria et al 2018) A yearly competition of ontology matching systems is held by the Ontology Alignment Evaluation Initiative (OAEI) . The challenge results are a useful guide to identifying systems for matching you may want to try. Some examples of domain-specific mapping of importance to the biomedical domain Phenotype ontology mappings Mapping phenotypes across species holds great promise for leveraging the knowledge generated by Model Organism Database communities (MODs) for understanding human disease. There is a lot of work happening at the moment (2021) to provide standard mappings between species specific phenotype ontologies to drive translational research ( example ). Tools such as Exomiser leverage such mappings to perform clinical diagnostic tasks such as variant prioritisation. Another app you can try out that leverages cross-species mappings is the Monarch Initiatives Phenotype Profile Search . Disease ontology mappings Medical terminology and ontology mapping is a huge deal in medical informatics ( example ). Mondo is a particularly rich source of well provenanced disease ontology mappings. How should you map your data to ontologies? There are no one size fits all strategies for mapping your data to ontologies. There are many research areas that have something to give in this process. Here, we outline some ideas on how to think about the problem. Case 1: Mapping internal controlled vocabularies Case 2: Mappings from free text Examples: - Monarch Text Annotator Case 3: Mappings between public controlled vocabularies and ontologies How to solve the problem of mapping hairballs String-term mappings Overview of automated approaches - Simple matches (string, string pre-pro, fuzzy string) - Graph-based matches (incl. semantic similarity) - NLP/Machine Learning Practical: - Try to get the same mappings as before using techniques - Exact - Simple preprocessing - Levenshtein - Jaccard similarity - Embedding similarity (?)","title":"What is a mapping?"},{"location":"explanation/mappings/#what-is-a-mapping","text":"The word \"mapping\" is pretty overloaded in practice: for some people, it simply means \"a correspondence of one term to another equivalent or near equivalent term.\" But even here, there is little understanding to what a \"term\" is in this sentence, or what \"almost equivalent\" means - and, there are many different kinds of mappings used in practice that are not \"equivalent\" at all. In its very essence, an individual mapping maps one information entity, i.e. a representation of a real world entity , to another information entity - how, and what these strings could be, will be the subject of the following section. In the following, we consider an information entity a sequence of characters which has a well defined relationship to some thing in the real world , for example: - an ontology id like HP:0004934 corresponds to the concept of \"Vascular calcification\" in the real world. Note that HP:0004934 is annotated with the rdfs:label \"Vascular calcification\". The label itself is not necessarily a term - it could change, for example to \"Abnormal calcification of the vasculature\", and still retain the same meaning. - \"Vascular calcification\" may be a term in my controlled vocabulary which I understand to correspond to that respective disease (not all controlled vocabularies have IDs for their terms). This happens for example in clinical data models that do not use formal identifiers to refer to the values of slots in their data model, like \"MARRIED\" in /datamodel/marital_status. - Examples of terms: - IDs of classes in an ontology - elements of a clinical value set - codes of clinical terminologies such as Z63.1 - TLDR: terms correspond to things in the world and that correspondence is not subject to change. Labels can change without changing the meaning of a term.","title":"What is a mapping?"},{"location":"explanation/mappings/#an-attempt-at-a-practical-categorisation","text":"In our experience, there are roughly four kinds of mappings: string-string : Relating one string, or label, to another string, or label. Understanding such mappings is fundamental to understanding all the other kinds of mappings. string-term : Relating a specific string or \"label\" to their corresponding term in a terminology or ontology. We usually refer to these as synonyms, but there may be other words used in this case. term-term : Relating a term, for example a class in an ontology, to another term. This is what most people in the ontology domain would understand when thy hear \"ontology mappings\". complex mappings : Relating two sets of terms. These are the rarest and most complicated kinds of mappings, as they related for example two phenotypic profiles (sets of phenotypes) with each other. We will discuss some more examples in a future lesson. In some ways, these four kinds of mappings can be very different. We do believe, however, that there are enough important commonalities such as common features, widely overlapping use cases and overlapping toolkits to consider them together. In the following, we will discuss these in more detail, including important features of mappings and useful tools.","title":"An attempt at a practical categorisation"},{"location":"explanation/mappings/#important-features-of-mappings","text":"Mappings have historically been neglected as second-class citizens in the medical terminology and ontology worlds - the metadata is insufficient to allow for precise analyses and clinical decision support, they are frequently stale and out of date, etc. The question \"Where can I find the canonical mappings between X and Y\"? is often shrugged off and developers are pointed to aggregators such as OxO or UMLS which combine manually curated mappings with automated ones causing \"mapping hairballs\" . There are many important metadata elements to consider, but the ones that are by far the most important to consider one way or another are: Precision : Is the mapping exact, broad or merely closely related? Confidence : Do I trust the mapping? Was is done manually by an expert in my domain, or by an algorithm? Source version : Which version of the term (or its corresponding ontology) was mapped? Is there a newer mapping which has a more suitable match for my term? Whenever you handle mappings (either create, or re-use), make sure you are keenly aware of at least these three metrics, and capture them. You may even want to consider using a proper mapping model like the Simple Shared Standard for Ontology Mappings (SSSOM) which will make your mappings FAIR and reusable.","title":"Important features of mappings"},{"location":"explanation/mappings/#string-string-mappings","text":"String-string mappings are mappings that relate two strings. The task of matching two strings is ubiquitous for example in database search fields (where a user search string needs to be mapped to some strings in a database). Most, if not all effective ontology matching techniques will employ some form of string-string matching. For example, to match simple variations of labels such as \"abnormal heart\" and \"heart abnormality\", various techniques such as Stemming and bag of words can be employed effectively. Other techniques such as edit-distance or Levenshtein can be used to quantify the similarity of two strings, which can provide useful insights into mapping candidates.","title":"String-string mappings"},{"location":"explanation/mappings/#string-term-mappings-synonyms","text":"String-term mappings relate a specific string or \"label\" to their corresponding term in a terminology or ontology. Here, we refer to these as \"synonyms\", but there may be other cases for string-term mappings beyond synonymy. There are a lot of use cases for synonyms so we will name just a few here that are relevant to typical workflows of Semantic Engineers in the life sciences. Thesauri are reference tools for finding synonyms of terms. Modern ontologies often include very rich thesauri, with some ontologies like Mondo capturing more than 70,000 exact and 35,000 related synonyms. They can provide a huge boost to traditional NLP pipelines by providing synonyms that can be used for both Named Entity Recognition and Entity Resolution. Some insight on how, for example, Uberon was used to boost text mining can be found here .","title":"String-term mappings / synonyms"},{"location":"explanation/mappings/#term-term-mappings-ontology-mappings","text":"Term-term mappings relate a term, for example a class in an ontology, to another term, usually from another ontology or database. The term-term case of mappings is what most people in the ontology domain would understand when they hear \"ontology mappings\". This is also what most people understand when they here \"Entity Resolution\" in the database world - the task of determining whether, in essence, two rows in a database correspond to the same thing (as an example of a tool doing ER see deepmatcher , or py-entitymatcher ). For a list standard entity matching toolkit outside the ontology sphere see here .","title":"Term-term mappings / ontology mappings"},{"location":"explanation/mappings/#further-reading","text":"A great overview can be found in \"Tackling the challenges of matching biomedical ontologies\" (Faria et al 2018) A yearly competition of ontology matching systems is held by the Ontology Alignment Evaluation Initiative (OAEI) . The challenge results are a useful guide to identifying systems for matching you may want to try.","title":"Further reading"},{"location":"explanation/mappings/#some-examples-of-domain-specific-mapping-of-importance-to-the-biomedical-domain","text":"","title":"Some examples of domain-specific mapping of importance to the biomedical domain"},{"location":"explanation/mappings/#phenotype-ontology-mappings","text":"Mapping phenotypes across species holds great promise for leveraging the knowledge generated by Model Organism Database communities (MODs) for understanding human disease. There is a lot of work happening at the moment (2021) to provide standard mappings between species specific phenotype ontologies to drive translational research ( example ). Tools such as Exomiser leverage such mappings to perform clinical diagnostic tasks such as variant prioritisation. Another app you can try out that leverages cross-species mappings is the Monarch Initiatives Phenotype Profile Search .","title":"Phenotype ontology mappings"},{"location":"explanation/mappings/#disease-ontology-mappings","text":"Medical terminology and ontology mapping is a huge deal in medical informatics ( example ). Mondo is a particularly rich source of well provenanced disease ontology mappings.","title":"Disease ontology mappings"},{"location":"explanation/mappings/#how-should-you-map-your-data-to-ontologies","text":"There are no one size fits all strategies for mapping your data to ontologies. There are many research areas that have something to give in this process. Here, we outline some ideas on how to think about the problem.","title":"How should you map your data to ontologies?"},{"location":"explanation/mappings/#case-1-mapping-internal-controlled-vocabularies","text":"","title":"Case 1: Mapping internal controlled vocabularies"},{"location":"explanation/mappings/#case-2-mappings-from-free-text","text":"Examples: - Monarch Text Annotator","title":"Case 2: Mappings from free text"},{"location":"explanation/mappings/#case-3-mappings-between-public-controlled-vocabularies-and-ontologies","text":"","title":"Case 3: Mappings between public controlled vocabularies and ontologies"},{"location":"explanation/mappings/#how-to-solve-the-problem-of-mapping-hairballs","text":"String-term mappings Overview of automated approaches - Simple matches (string, string pre-pro, fuzzy string) - Graph-based matches (incl. semantic similarity) - NLP/Machine Learning Practical: - Try to get the same mappings as before using techniques - Exact - Simple preprocessing - Levenshtein - Jaccard similarity - Embedding similarity (?)","title":"How to solve the problem of mapping hairballs"},{"location":"tutorials/omop-mappings/","text":"How to gradually enrich OMOP mappings with SSSOM This document is a guide for OMOP ETL developers to think about gradually improving the (documentation of the) strength of evidence for their vocabulary mappings. Example table from OMOP Generated manually with Athena on the 20th July 2023. The start and end dates are invented. concept_id_1 concept_id_2 relationship_id valid_start_date valid_end_date invalid_reason 44499396 4028717 Maps to 19700101 20991231 45586281 4028717 Maps to 73754 20991231 Level 1, basic mapping table, basic provenance The SSSOM metadata provided is conceptually correct, but fictious. The reader should imagine this being provided as a separate CONCEPT_MAPPINGS.CSV table that can be joined on subject_id -> concept_id_1 , object_id -> concept_id_2 for all rows with a Maps to relationship_id (this is assuming that the concept_id_1 , concept_id_2 tuple is unique for Maps to ). subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 omoprel:mapsTo OHDSI:UMLS semapv:UnspecifiedMatching What we see here: all identifiers are prefixed to make sure they are interpreted correctly when they are reused. This includes OMOP ids (e.g. OMOP:44499396 ) as well as ORCIDs (OPTIONAL) \"Maps to\" is encoded using a proper identifier rather than a string (OPTIONAL) All three mappings have a mapping_justification to distinguish for example if the mapping was determined by human manual curation ( semapv:ManualMappingCuration ) or lexical matching ( semapv:LexicalMatching ). Many other justifications exist and/or can be created. If the justification for the mapping is unknown, we can make our lack of knowledge transparent by using semapv:UnspecifiedMatching . author_id , in the case of semapv:ManualMappingCuration , tells us who the person is that determined the mapping. This is basic provenance. If the identity of the author can be connected with an public record such as ORCID, this can help mapping users to increase trust in a mapping. reviewer_id tells us that some human looked at the mapping after it was proposed by a tool, and \"signed off\" on it. This can be valueable, again, to increase trust. If the match was generated by the tool, some basic provenance is added ( mapping_tool , mapping_tool_version ). Level 2: Curate semantic mapping predicate subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching What do we see here? Rather than Maps to , the mapping predicate (e.g. skos:exactMatch ) is a semantic mapping predicate from a standardised vocabulary ( SKOS ). Here, we distinguish between skos:exactMatch and skos:broadMatch , but there are other predicates, see for example in the Semantic Mapping Vocabulary . Level 3: Document confidence widely confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717 ) is correct with 90% confidence. subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 0.8 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching 0.6 What do we see here? For matching tools, confidence can be calculated by proxies such as \"lexical similarity\", \"edit distance\", \"cosine similarity of node embedding\" and other metrics. IN the example above, Usagi has determined that the subject and objects match, but it was only 80% sure (we dont know why - this is more advance SSSOM ) For case where an external mapping is re-used using ETL, confidence describes the level of trust you as an ETL expert have in the fidelty of the mapping provided by the source. Level 4: Document curation rules subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence curation_rule OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OHDSI_CURATION_RULE:19 What do we see here? For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rules can help increasing consistency for manual curation, and transparency for downstream users. OHDSI_CURATION_RULE:19 is a rule defined by your own curation rulebook. This can be anything . For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement.","title":"How to gradually enrich OMOP mappings with SSSOM"},{"location":"tutorials/omop-mappings/#how-to-gradually-enrich-omop-mappings-with-sssom","text":"This document is a guide for OMOP ETL developers to think about gradually improving the (documentation of the) strength of evidence for their vocabulary mappings.","title":"How to gradually enrich OMOP mappings with SSSOM"},{"location":"tutorials/omop-mappings/#example-table-from-omop","text":"Generated manually with Athena on the 20th July 2023. The start and end dates are invented. concept_id_1 concept_id_2 relationship_id valid_start_date valid_end_date invalid_reason 44499396 4028717 Maps to 19700101 20991231 45586281 4028717 Maps to 73754 20991231","title":"Example table from OMOP"},{"location":"tutorials/omop-mappings/#level-1-basic-mapping-table-basic-provenance","text":"The SSSOM metadata provided is conceptually correct, but fictious. The reader should imagine this being provided as a separate CONCEPT_MAPPINGS.CSV table that can be joined on subject_id -> concept_id_1 , object_id -> concept_id_2 for all rows with a Maps to relationship_id (this is assuming that the concept_id_1 , concept_id_2 tuple is unique for Maps to ). subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 omoprel:mapsTo OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 omoprel:mapsTo OHDSI:UMLS semapv:UnspecifiedMatching What we see here: all identifiers are prefixed to make sure they are interpreted correctly when they are reused. This includes OMOP ids (e.g. OMOP:44499396 ) as well as ORCIDs (OPTIONAL) \"Maps to\" is encoded using a proper identifier rather than a string (OPTIONAL) All three mappings have a mapping_justification to distinguish for example if the mapping was determined by human manual curation ( semapv:ManualMappingCuration ) or lexical matching ( semapv:LexicalMatching ). Many other justifications exist and/or can be created. If the justification for the mapping is unknown, we can make our lack of knowledge transparent by using semapv:UnspecifiedMatching . author_id , in the case of semapv:ManualMappingCuration , tells us who the person is that determined the mapping. This is basic provenance. If the identity of the author can be connected with an public record such as ORCID, this can help mapping users to increase trust in a mapping. reviewer_id tells us that some human looked at the mapping after it was proposed by a tool, and \"signed off\" on it. This can be valueable, again, to increase trust. If the match was generated by the tool, some basic provenance is added ( mapping_tool , mapping_tool_version ).","title":"Level 1, basic mapping table, basic provenance"},{"location":"tutorials/omop-mappings/#level-2-curate-semantic-mapping-predicate","text":"subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching What do we see here? Rather than Maps to , the mapping predicate (e.g. skos:exactMatch ) is a semantic mapping predicate from a standardised vocabulary ( SKOS ). Here, we distinguish between skos:exactMatch and skos:broadMatch , but there are other predicates, see for example in the Semantic Mapping Vocabulary .","title":"Level 2: Curate semantic mapping predicate"},{"location":"tutorials/omop-mappings/#level-3-document-confidence-widely","text":"confidence is an incredibly useful metric for downstream users, including ETL engineers and data analysts. In an ideal world, all mappings have some kind of confidence associated with them. confidence scores should be read as \"the strength of evidence provided in this record/table row (i.e mapping justification) leads us to believe the mapping (e.g. OMOP:44499396 --[skos:broadMatch]--> OMOP:4028717 ) is correct with 90% confidence. subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OMOP:45586281 OMOP:4028717 skos:exactMatch OHDSI:Odysseus OHDSI_TOOLS:Usagi 1.4.3 semapv:LexicalMatching ORCID:0000-0003-4147-1485 0.8 OMOP:45610575 OMOP:441554 skos:exactMatch OHDSI:UMLS semapv:UnspecifiedMatching 0.6 What do we see here? For matching tools, confidence can be calculated by proxies such as \"lexical similarity\", \"edit distance\", \"cosine similarity of node embedding\" and other metrics. IN the example above, Usagi has determined that the subject and objects match, but it was only 80% sure (we dont know why - this is more advance SSSOM ) For case where an external mapping is re-used using ETL, confidence describes the level of trust you as an ETL expert have in the fidelty of the mapping provided by the source.","title":"Level 3: Document confidence widely"},{"location":"tutorials/omop-mappings/#level-4-document-curation-rules","text":"subject_id object_id predicate_id mapping_provider mapping_tool mapping_tool_version mapping_justification reviewer_id author_id confidence curation_rule OMOP:44499396 OMOP:4028717 skos:broadMatch OHDSI:Odysseus semapv:ManualMappingCuration ORCID:0000-0003-4147-1485 0.9 OHDSI_CURATION_RULE:19 What do we see here? For manual matches, it is often unclear by what criteria a match was established. Documenting the curation rules can help increasing consistency for manual curation, and transparency for downstream users. OHDSI_CURATION_RULE:19 is a rule defined by your own curation rulebook. This can be anything . For example OHDSI_CURATION_RULE:19 could correspond to the following rule: OHDSI_CURATION_RULE:19 = If the subject concept does not have an exact match in the object source vocabulary, we select the nearest broad (\"up-hill\") concept applicable. Conceptually, if both terms would exist in the same terminology, the subject concept can be defined as a subconcept of the object concept. The determination for both criteria (nearest broad, conceptally subconcept) is performed through medical expert judgement.","title":"Level 4: Document curation rules"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index fa4deb69..bf5d788d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,717 +2,717 @@ https://mapping-commons.github.io/sssom/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/5star-mappings/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Boolean/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Curie/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Date/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/DateOrDatetime/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Datetime/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Decimal/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Double/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/EntityReference/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/EntityTypeEnum/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/ExtensionDefinition/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Float/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Integer/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Jsonpath/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Jsonpointer/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Mapping/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/MappingCardinalityEnum/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/MappingRegistry/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/MappingSet/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/MappingSetReference/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Ncname/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/NoTermFound/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Nodeidentifier/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Objectidentifier/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/PredicateModifierEnum/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Prefix/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Propagatable/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Sparqlpath/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/String/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Time/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Uri/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/Uriorcurie/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/author_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/author_label/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/chaining-rules/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/comment/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/confidence/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/contributing/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/create-mapping-commons/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/creator_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/creator_label/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/curation_rule/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/curation_rule_text/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/curie_map/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/documentation/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/editors/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/extension_definitions/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/faq/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/funding/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/glossary/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/homepage/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/imports/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/introduction/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/issue_tracker/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/issue_tracker_item/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/last_updated/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/license/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/linkml-index/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/local_name/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping-commons/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping-justifications/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping-predicates/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_cardinality/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_date/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_justification/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_provider/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_registry_description/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_registry_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_registry_title/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_description/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_group/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_references/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_source/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_title/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_set_version/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_source/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_tool/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mapping_tool_version/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mappings/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/match_string/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/matching-tool-implementation-guide/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/mirror_from/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_category/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_label/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_match_field/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_preprocessing/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_source/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_source_version/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/object_type/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/other/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/predicate_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/predicate_label/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/predicate_modifier/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/predicate_type/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/prefix_name/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/prefix_url/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/presentations/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/propagated/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/property/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/publication_date/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/registry_confidence/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/related-documentation/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/reviewer_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/reviewer_label/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/see_also/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/similarity_measure/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/similarity_score/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/slot_name/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/spec-formats-json/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/spec-formats-owl/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/spec-formats-tsv/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/spec-formats/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/spec-intro/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/spec-model/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/sssom/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_category/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_id/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_label/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_match_field/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_preprocessing/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_source/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_source_version/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/subject_type/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/toolkit/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/training/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/tutorial/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/type_hint/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/usecases/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/workshops/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/ccb2022/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/mc2021/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/mc2023/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/oboacademy2022/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/ohdsi2022/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/ohdsi2023/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/om2022/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/pistoia2022/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/events/wsbo2021/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/explanation/mappings/ - 2024-11-02 + 2024-11-03 daily https://mapping-commons.github.io/sssom/tutorials/omop-mappings/ - 2024-11-02 + 2024-11-03 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index d7887ea3..b9130ea5 100644 Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ