From 5755fa595b8adb883665b87d1f1f89963f1e5e74 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Tue, 23 Jul 2024 19:38:09 +0100 Subject: [PATCH 1/7] Add "extension definition" to the model. We add a new slot to the MappingSet object , representing the definitions of extension slots that may be used within the set (as a list of "extension definition" objects). Each "extension definition" is made of up to three elements: * the name of the extension slot, * the identifier of an associated property, * a type hint. We also add a sample file that demonstrates the use of such extension slots. --- examples/schema/extension-slots.sssom.tsv | 23 +++++++++++++++++++++++ src/sssom_schema/schema/sssom_schema.yaml | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 examples/schema/extension-slots.sssom.tsv diff --git a/examples/schema/extension-slots.sssom.tsv b/examples/schema/extension-slots.sssom.tsv new file mode 100644 index 00000000..0c309860 --- /dev/null +++ b/examples/schema/extension-slots.sssom.tsv @@ -0,0 +1,23 @@ +#curie_map: +# COMENT: https://example.com/entities/ +# EXPROP: https://example.org/properties/ +# ORGENT: https://example.org/entities/ +#mapping_set_id: https://example.org/sets/exo2c-with-extensions +#mapping_set_title: Sample set EXO2C with extension slots +#license: https://creativecommons.org/licenses/by/4.0/ +#extension_definitions: +# - slot_name: ext_bar +# property: EXPROP:barProperty +# type_hint: xsd:integer +# - slot_name: ext_baz +# property: EXPROP:bazProperty +# type_hint: linkml:uriOrCurie +# - slot_name: ext_foo +# property: EXPROP:fooProperty +#ext_foo: Foo A +#ext_undeclared_foo: Foo B +subject_id subject_label predicate_id object_id object_label mapping_justification ext_bar ext_baz ext_undeclared_baz +ORGENT:0001 alice skos:closeMatch COMENT:0011 alpha semapv:ManualMappingCuration 111 ORGENT:BAZ_0001 BAZ A +ORGENT:0002 bob skos:closeMatch COMENT:0012 beta semapv:ManualMappingCuration 112 ORGENT:BAZ_0002 +ORGENT:0004 daphne skos:closeMatch COMENT:0014 delta semapv:ManualMappingCuration 114 Baz C +ORGENT:0005 eve skos:closeMatch COMENT:0015 epsilon semapv:ManualMappingCuration 115 ORGENT:BAZ_0005 Baz E diff --git a/src/sssom_schema/schema/sssom_schema.yaml b/src/sssom_schema/schema/sssom_schema.yaml index 877ae9e5..7d357ab1 100644 --- a/src/sssom_schema/schema/sssom_schema.yaml +++ b/src/sssom_schema/schema/sssom_schema.yaml @@ -620,6 +620,13 @@ slots: by tool providing additional informative information. slot_uri: rdfs:comment range: string + extension_definitions: + description: A list that defines the extension slots used in the mapping set. + range: extension definition + multivalued: true + see_also: + - https://github.com/mapping-commons/sssom/issues/328 + - https://github.com/mapping-commons/sssom/blob/master/examples/schema/extension-slots.sssom.tsv classes: mapping set: description: Represents a set of mappings @@ -655,6 +662,7 @@ classes: - issue_tracker - other - comment + - extension_definitions mapping: description: Represents an individual mapping between a pair of entities slots: @@ -770,6 +778,21 @@ classes: - mapping_set_group - last_updated - local_name + extension definition: + description: A definition of an extension (non-standard) slot. + attributes: + slot_name: + description: The name of the extension slot. + range: ncname + required: true + property: + description: The property associated with the extension slot. It is + intended to provide a non-ambiguous meaning to the slot (contrary + to the name, which for brevity reasons may be ambiguous). + range: uriorcurie + type_hint: + description: Expected type of the values of the extension slot. + range: uriorcurie Propagatable: class_uri: sssom:Propagatable description: Metamodel extension class to describe slots whose value can be From 184521fd499359e2d338df565574eaf68ba16c8f Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Tue, 23 Jul 2024 19:41:06 +0100 Subject: [PATCH 2/7] Specify the use of non-standard slots. We add a section in the description of the data model to explain what extension slots are and how they should be used. We add a section in the specification of the SSSOM/TSV format to explain how extension slots should be managed in that format. --- CHANGELOG.md | 1 + src/docs/spec-formats-tsv.md | 34 +++++++++++++++++++ src/docs/spec-model.md | 63 ++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ab083c2..980148f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Next - Add the concept of "propagatable slots". +- Add the concept of "extension slots". ## SSSOM version 0.15.1 diff --git a/src/docs/spec-formats-tsv.md b/src/docs/spec-formats-tsv.md index 6a12dc7f..600d16cc 100644 --- a/src/docs/spec-formats-tsv.md +++ b/src/docs/spec-formats-tsv.md @@ -134,6 +134,28 @@ For any given propagatable slot, condensation is only allowed if (1) all mapping Implementations that support condensation MUST also support propagation. +## Non-standard slots + +If an implementation does not support [non-standard slots](spec-model.md#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 reader 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’s `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’s `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’s `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. @@ -208,6 +230,13 @@ When writing the metadata block, a canonical SSSOM/TSV writer: * 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](spec-model.md#non-standard-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 @@ -218,6 +247,11 @@ When writing the mappings block, a canonical SSSOM/TSV writer: * MUST write the columns in the order the slots appear in the [“Slots” table](Mapping.md#slots), 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 [“Slots” table](Mapping.md#slots). +In addition, if [extension slots](spec-model.md#non-standard-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 diff --git a/src/docs/spec-model.md b/src/docs/spec-model.md index b99f5c3b..dd1acfd8 100644 --- a/src/docs/spec-model.md +++ b/src/docs/spec-model.md @@ -81,3 +81,66 @@ In addition, predicates from the following sources MAY also be encouraged: * any relation from the [Relation Ontology (RO)](https://obofoundry.org/ontology/ro.html); * any relation under [skos:mappingRelation](http://www.w3.org/2004/02/skos/core#mappingRelation) in the [Semantic Mapping Vocabulary](https://mapping-commons.github.io/semantic-mapping-vocabulary/). + +## Non-standard slots + + + +Implementations are only REQUIRED to support the standard metadata slots defined in the LinkML model. + +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 “non-colonized name” (“NCName”, see [Namespaces in XML, §2](https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName)). 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 catenating 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. + +All extension values MUST be representable as literal strings. Complex data structures (e.g., lists or dictionaries) MUST NOT be used. + +#### 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. From 9f4a7b8928fdff10059d048f8a95f62778ab10da Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Tue, 23 Jul 2024 19:42:25 +0100 Subject: [PATCH 3/7] Add xsd: and linkml: as built-in prefix names. We add the two following prefix names: * xsd: http://www.w3.org/2001/XMLSchema# * linkml: https://w3id.org/linkml/ to the list of built-in prefix names. They are intended to be used when defining "extension slots" (as the value of the `type_hint` slot, to define the expected type of the slot), so for convenience we make them built-in. --- src/docs/spec-intro.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/docs/spec-intro.md b/src/docs/spec-intro.md index 1dacae7a..89042e83 100644 --- a/src/docs/spec-intro.md +++ b/src/docs/spec-intro.md @@ -27,3 +27,5 @@ Throughout the specification, the following IRI prefix names are used: | 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/ | From b0754c9faffb2013f3076b26e467d2001171c842 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Tue, 23 Jul 2024 20:09:48 +0100 Subject: [PATCH 4/7] Fix casing of linkml:Uriorcurie. The IRI of the "uriorcurie" data type is `https://w3id.org/linkml/Uriorcurie`, _not_ `.../uriOrCurie`. Not sure where I got the incorrect casing from. --- examples/schema/extension-slots.sssom.tsv | 2 +- src/docs/spec-formats-tsv.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/schema/extension-slots.sssom.tsv b/examples/schema/extension-slots.sssom.tsv index 0c309860..c25414e0 100644 --- a/examples/schema/extension-slots.sssom.tsv +++ b/examples/schema/extension-slots.sssom.tsv @@ -11,7 +11,7 @@ # type_hint: xsd:integer # - slot_name: ext_baz # property: EXPROP:bazProperty -# type_hint: linkml:uriOrCurie +# type_hint: linkml:Uriorcurie # - slot_name: ext_foo # property: EXPROP:fooProperty #ext_foo: Foo A diff --git a/src/docs/spec-formats-tsv.md b/src/docs/spec-formats-tsv.md index 600d16cc..2ea290b6 100644 --- a/src/docs/spec-formats-tsv.md +++ b/src/docs/spec-formats-tsv.md @@ -153,7 +153,7 @@ A SSSOM/TSV reader MUST check the validity of the extension definitions listed i 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’s `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’s `curie_map`. +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’s `curie_map`. ## Compatibility with previous versions of the specification From 861cf8440b916a96d0a9df98d1f27e54392063eb Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Sat, 3 Aug 2024 19:29:08 +0100 Subject: [PATCH 5/7] Misc fixes. Clear out possible ambiguity when referring to the "LinkML model". Clarify the possible types of extension values. --- src/docs/spec-model.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/docs/spec-model.md b/src/docs/spec-model.md index dd1acfd8..7b83ebde 100644 --- a/src/docs/spec-model.md +++ b/src/docs/spec-model.md @@ -86,7 +86,7 @@ In addition, predicates from the following sources MAY also be encouraged: -Implementations are only REQUIRED to support the standard metadata slots defined in the LinkML model. +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. @@ -129,7 +129,9 @@ The following restrictions apply to all extension slots, regardless of whether t 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. -All extension values MUST be representable as literal strings. Complex data structures (e.g., lists or dictionaries) MUST NOT be used. +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 From 1e0654831089ad14ef2f9f08bb9ccd6dfb65b373 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Sun, 4 Aug 2024 08:34:05 +0100 Subject: [PATCH 6/7] Misc fixes. Clarify reference to `slot_name` in the description of the `property` slot. Fix incorrect reference to a SSSOM/TSV _writer_ (not _reader_) when we state that unknown slots MUST NOT be written in SSSOM/TSV files. Replace "catenate" by "concatenate". My understanding is that the two terms are actually equivalent, but "concatenate" is for some reason more widely used at least in computer science. --- src/docs/spec-formats-tsv.md | 2 +- src/docs/spec-model.md | 2 +- src/sssom_schema/schema/sssom_schema.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/docs/spec-formats-tsv.md b/src/docs/spec-formats-tsv.md index 2ea290b6..1a3f1917 100644 --- a/src/docs/spec-formats-tsv.md +++ b/src/docs/spec-formats-tsv.md @@ -139,7 +139,7 @@ Implementations that support condensation MUST also support propagation. If an implementation does not support [non-standard slots](spec-model.md#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 reader MUST NOT write any unknown top-level YAML key in the metadata block, or 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 diff --git a/src/docs/spec-model.md b/src/docs/spec-model.md index 7b83ebde..7bc7d0ee 100644 --- a/src/docs/spec-model.md +++ b/src/docs/spec-model.md @@ -104,7 +104,7 @@ A definition MUST have at least a `slot_name`. The name MUST be a XML “non-col 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 catenating the prefix `http://sssom.invalid/` with the name of the extension. +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. diff --git a/src/sssom_schema/schema/sssom_schema.yaml b/src/sssom_schema/schema/sssom_schema.yaml index 7d357ab1..dd7d2600 100644 --- a/src/sssom_schema/schema/sssom_schema.yaml +++ b/src/sssom_schema/schema/sssom_schema.yaml @@ -788,7 +788,7 @@ classes: property: description: The property associated with the extension slot. It is intended to provide a non-ambiguous meaning to the slot (contrary - to the name, which for brevity reasons may be ambiguous). + to the slot_name, which for brevity reasons may be ambiguous). range: uriorcurie type_hint: description: Expected type of the values of the extension slot. From 3a380ea76237be5889f527b40900c3b8f781ab68 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Mon, 5 Aug 2024 10:19:58 +0100 Subject: [PATCH 7/7] Commit re-generated files. --- project/excel/sssom_schema.xlsx | Bin 7038 -> 9466 bytes project/graphql/sssom_schema.graphql | 54 + project/jsonld/sssom_schema.context.jsonld | 219 ++- project/jsonld/sssom_schema.jsonld | 711 ++++++++- project/jsonschema/sssom_schema.schema.json | 1351 ++++++++++------- project/prefixmap/sssom_schema.yaml | 4 + project/protobuf/sssom_schema.proto | 54 + project/shacl/sssom_schema.shacl.ttl | 713 ++++++--- project/shex/sssom_schema.shex | 87 +- project/sqlschema/sssom_schema.sql | 561 ++++++- .../context/sssom_schema.context.jsonld | 219 ++- src/sssom_schema/context/sssom_schema.jsonld | 711 ++++++++- src/sssom_schema/datamodel/sssom_schema.py | 391 ++++- 13 files changed, 4020 insertions(+), 1055 deletions(-) diff --git a/project/excel/sssom_schema.xlsx b/project/excel/sssom_schema.xlsx index 682cb48693b9647ceb74f8fca987ebff40de9e7a..7216460e6894a41774b8a0100f504efe2ad3c44d 100644 GIT binary patch delta 5661 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 delta 3321 zcmZ8j2Q(ae7vI&(YSCBUEYW+5UZQ6OArS=8gJrcK#1gWiht(rNv>?$-#8X#E;)_U%)2oIqr2!x;y+!+=vPl_W#dFQ;tt*%qAhE%Df`s?YQKDH??--N z`}_d}0I2@IUu#!)+lz*CVqs1gVG!zEdrMwlp$(^PFUK~IjDXL1)y}z+EXo>b?F2pj z?NKHrD`zEX^k9pC?u}^f|o|eaH|OItH?l%+~jicwb_vMB$MGdrTVtJj2*4 zFp7h1B}IoRVRL`?KvXEb@&(jn(8uAP4L??1j#B3oC=>6JuVEiOW;Dt_?eYE zZJW4O)e>?Qekdsa@O{Poq2x)?PqiI|ntc1%;2g(zW zU+k)n`tF?p8~}g-gzltaL@N>DBcl@G_s4`m?G4&OY?eH=V;DF122Ny?q~rqvXFs$D zOQndkz8#-{|M7PL{Hk(C^VVnEXj_dVoh;g~rWUw8(?zA9+3Y3stJ4?FhkLlsNn{-k zJDDG6z0PxqJ?;uB7}B%e8OF?v{h^=R$(6M?TJtutyO<{aTwGt(7wkI*r#Hbq^0%3FZfVDM>ae}g7Jq3~|ur%Yo<`VaN4zABMwPdKzs zJP_?(v>ygs$qYYfiXiod4g>7i?r4Unl@5<|9d1~uKY zr&c=ZNt5DjyzTk=&!Ys7&Rf1xmiGm2zZj1;=9E*)|J2R^r6Wepz35h+i?1ickID#} zvC3B}$dWO9ouFckAzMdsq5GM856ETAups11EuC?UNW_teJ;wlHEL*GAri`9m9TmXOps}DZTLf)?KP9Eqn z8d9KWIURLA@RA|&(FlJTEJI9*E*OFoyO55k#4-1`!jveBS2Mtu{VA+m!6~Kha<#@P ziYB0NR|ZD9ERzyLli8nZwauZ~V$HK1aXr;X-j$oOlOHCNZv?(lVK&Q`Nf-FYV43kQ^E1$=;Cro^~nh7_WC?#%V1 z!OSGRye8B8;C-#SfJ7f2O(e9m4W0q7(n|X)NIp)gWAwpOt<+)8^gCLdsp>;c)EX_k zt0wVlDfyvVWO}?FgtwVg6kb-ndN!S;iU|JP)u`OSrh3SR1zSm%0&gB+{3b-8#Q_TyTKcXXB_o;pvakB7GQu+^zSW2KYT#83ZtiR!x6*N zyQDl%W8rCViDfUm>^^&J~u1a?g0{VNO%>8XbjCwpm_NrO#%?_LXpdnjJ`OR zSLhR_1+t4rm<+jOODt4@=yhg#WZanUg>6~nbl~>9OKz!HM-eBtXfe$yz$OMw$P?z^ z&iC&173dKsf6+b}JKP@oezN3{BwMYc5Lp$Vp7JsI*Q39fOvtMV>a$&^J~2 zd^(0Do{p}K?lNFdE>BQmWY-ailaR?M(zu@M&8uR-$P%3`)TA`oyUQHOqjel>t+$o? zQGJ1BW~qVHDw(;*IvRW!A7)pq3?&c%%c;hO1!?*(L{mg>uJY^D>CabmwUogAz!fQA z+vXbeN7uO0Bp%A_r-d!E19YI>Ff~k4(>zecjjN4gw7gceQ%UDL;+~5|)`VnokNW7Z zEJn3zt_R?6E$C0yzT!x#7NcJ9tkO!Qh8T$0gjQfDX~${ggT2h2bQWn^uSFUefu_W3RM`RE)&0@xAa!ZR>O(13C&1VhUCPRYMBgS47N%4ywmJmdHCCYl8i7Z-=}Rn) zTdaPF={K(hYXTDuvXwK-&Wr=jY3Jrqb+Zp*1}ac3PD>ivwistYfT6fF_jW~-TYY{7 z3r%d!cV`{TEQ8z{YuD)G&|wipoeLY6*`WBS4048{{a$KEG4 zFAiX#<`3QIwBgwnO^_6N!81Lj9%N0!+{o=2*^JAe7Oh{AN3}I@^RrC)>Tde))x|@B zqCK4x(8ORAJuxD{VV~gYNA{x|=DD#5bH@h&r~&A1C@r$n@CO!WlqU(?!@O=huW=op z1B-fa6)odn)`LR6)tsk(lH^f%yaGnNy%7R__V#VEaf`096v-9pru==VZ;C`gwz%q6 z>vG0L1A+`%{vf^?+nPi^%JSu1^Z2eC#vLE$H0gJ4eOyq#zdgP!!D}BO9@r-CyBhTF zL9F&hB`=cG?Xfd_PnGl7;9HHDRf#_9Es!R)n;s-Fz-UCO-h~6tNVzON$UOT=vO}fP z=+nj%>2_dJQIQdG0-qGh)O{Cd^NI|>`0jT$n!2w=6%|m&2xsqOHnLd~m5xa>3EbJ+ zFZG;Av4;?4>&m&mv03jG3K85QDQF1a2~jjNZdbgk*8)FDZdjDtOn0(*CZO(8-1=<- z3HJ4Nd9f^%G3IeIfd%yXU{Fv2sHX$Op~1a2DWmB*B-k#Kc@|9d5fgb3YBLwhl%@m;Ta-Ov7gi3TkKxpkTNUoX3!cmZ^o zI0`~_85nE~{1}SGgTjB!@!w=d6qkYh5URgB|9TTFe*-&TW9`$!)7RP7 -PREFIX owl: PREFIX prov: +PREFIX skos: +PREFIX owl: PREFIX rdf: PREFIX rdfs: PREFIX xsd: @@ -49,13 +50,69 @@ linkml:Jsonpath xsd:string linkml:Sparqlpath xsd:string + CLOSED { + ( $ ( @linkml:Ncname ; + @linkml:Uriorcurie ? ; + @linkml:Uriorcurie ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( owl:annotatedTarget @linkml:String ; + rdf:datatype @linkml:Uri ? ; + owl:annotatedProperty @ ; + @linkml:String ? ; + [ ] ? ; + owl:annotatedTarget @ ; + @linkml:String ? ; + @linkml:String ? ; + @ ; + pav:authoredBy @ * ; + @linkml:String * ; + @ * ; + @linkml:String * ; + dc1:creator @ * ; + @linkml:String * ; + dc1:license @linkml:Uri ? ; + @ ? ; + @linkml:String ? ; + [ owl:Class owl:ObjectProperty owl:DataProperty owl:AnnotationProperty owl:NamedIndividual skos:Concept + rdfs:Resource rdfs:Class rdfs:Literal rdfs:Datatype rdf:Property ] ? ; + @ ? ; + @linkml:String ? ; + @linkml:Uri ? ; + @ ? ; + [ + + + ] ? ; + @linkml:String ? ; + @linkml:String ? ; + pav:authoredOn @linkml:Date ? ; + @linkml:Double ? ; + @ * ; + @linkml:String * ; + @ * ; + @ * ; + @linkml:Double ? ; + @linkml:String ? ; + rdfs:seeAlso @linkml:String * ; + @linkml:String ? ; + rdfs:comment @linkml:String ? + ) ; + rdf:type [ owl:Axiom ] ? + ) +} + CLOSED { ( $ ( owl:annotatedSource @ ; @linkml:String ? ; @linkml:String ? ; owl:annotatedProperty @ ; @linkml:String ? ; - @ ? ; + [ ] ? ; owl:annotatedTarget @ ; @linkml:String ? ; @linkml:String ? ; @@ -67,15 +124,20 @@ linkml:Sparqlpath xsd:string dc1:creator @ * ; @linkml:String * ; dc1:license @linkml:Uri ? ; - @ ? ; + [ owl:Class owl:ObjectProperty owl:DataProperty owl:AnnotationProperty owl:NamedIndividual skos:Concept + rdfs:Resource rdfs:Class rdfs:Literal rdfs:Datatype rdf:Property ] ? ; @ ? ; @linkml:String ? ; - @ ? ; + [ owl:Class owl:ObjectProperty owl:DataProperty owl:AnnotationProperty owl:NamedIndividual skos:Concept + rdfs:Resource rdfs:Class rdfs:Literal rdfs:Datatype rdf:Property ] ? ; @ ? ; @linkml:String ? ; @linkml:Uri ? ; @ ? ; - @ ? ; + [ + + + ] ? ; @linkml:String ? ; @linkml:String ? ; pav:authoredOn @linkml:Date ? ; @@ -123,10 +185,12 @@ linkml:Sparqlpath xsd:string dc1:creator @ * ; @linkml:String * ; dc1:license @linkml:Uri ; - @ ? ; + [ owl:Class owl:ObjectProperty owl:DataProperty owl:AnnotationProperty owl:NamedIndividual skos:Concept + rdfs:Resource rdfs:Class rdfs:Literal rdfs:Datatype rdf:Property ] ? ; @ ? ; @linkml:String ? ; - @ ? ; + [ owl:Class owl:ObjectProperty owl:DataProperty owl:AnnotationProperty owl:NamedIndividual skos:Concept + rdfs:Resource rdfs:Class rdfs:Literal rdfs:Datatype rdf:Property ] ? ; @ ? ; @linkml:String ? ; @linkml:Uri ? ; @@ -141,7 +205,8 @@ linkml:Sparqlpath xsd:string rdfs:seeAlso @linkml:String * ; @linkml:Uri ? ; @linkml:String ? ; - rdfs:comment @linkml:String ? + rdfs:comment @linkml:String ? ; + @ * ) ; rdf:type [ ] ? ) @@ -159,4 +224,10 @@ linkml:Sparqlpath xsd:string ) } + CLOSED { + ( $ @linkml:Boolean ? ; + rdf:type [ ] ? + ) +} + diff --git a/project/sqlschema/sssom_schema.sql b/project/sqlschema/sssom_schema.sql index f05799c9..b69eaa2d 100644 --- a/project/sqlschema/sssom_schema.sql +++ b/project/sqlschema/sssom_schema.sql @@ -1,9 +1,245 @@ +-- # Class: "mapping set" Description: "Represents a set of mappings" +-- * Slot: id Description: +-- * Slot: mapping_set_id Description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. +-- * Slot: mapping_set_version Description: A version string for the mapping. +-- * Slot: mapping_set_title Description: The display name of a mapping set. +-- * Slot: mapping_set_description Description: A description of the mapping set. +-- * Slot: license Description: A url to the license of the mapping. In absence of a license we assume no license. +-- * Slot: subject_type Description: The type of entity that is being mapped. +-- * Slot: subject_source Description: URI of vocabulary or identifier source for the subject. +-- * Slot: subject_source_version Description: Version IRI or version string of the source of the subject term. +-- * Slot: object_type Description: The type of entity that is being mapped. +-- * Slot: object_source Description: URI of vocabulary or identifier source for the object. +-- * Slot: object_source_version Description: Version IRI or version string of the source of the object term. +-- * Slot: mapping_provider 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. +-- * Slot: mapping_tool 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. +-- * Slot: mapping_tool_version Description: Version string that denotes the version of the mapping tool used. +-- * Slot: mapping_date Description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. +-- * Slot: publication_date Description: The date the mapping was published. This is different from the date the mapping was asserted. +-- * Slot: issue_tracker Description: A URL location of the issue tracker for this entity. +-- * Slot: 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. +-- * Slot: comment Description: Free text field containing either curator notes or text generated by tool providing additional informative information. +-- # Class: "mapping" Description: "Represents an individual mapping between a pair of entities" +-- * Slot: id Description: +-- * Slot: subject_id Description: The ID of the subject of the mapping. +-- * Slot: subject_label Description: The label of subject of the mapping +-- * Slot: 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. +-- * Slot: predicate_id Description: The ID of the predicate or relation that relates the subject and object of this match. +-- * Slot: predicate_label Description: The label of the predicate/relation of the mapping +-- * Slot: predicate_modifier Description: A modifier for negating the prediate. See https://github.com/mapping-commons/sssom/issues/40 for discussion +-- * Slot: object_id Description: The ID of the object of the mapping. +-- * Slot: object_label Description: The label of object of the mapping +-- * Slot: 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. +-- * Slot: 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. +-- * Slot: license Description: A url to the license of the mapping. In absence of a license we assume no license. +-- * Slot: subject_type Description: The type of entity that is being mapped. +-- * Slot: subject_source Description: URI of vocabulary or identifier source for the subject. +-- * Slot: subject_source_version Description: Version IRI or version string of the source of the subject term. +-- * Slot: object_type Description: The type of entity that is being mapped. +-- * Slot: object_source Description: URI of vocabulary or identifier source for the object. +-- * Slot: object_source_version Description: Version IRI or version string of the source of the object term. +-- * Slot: mapping_provider 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. +-- * Slot: 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. +-- * Slot: 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. +-- * Slot: mapping_tool 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. +-- * Slot: mapping_tool_version Description: Version string that denotes the version of the mapping tool used. +-- * Slot: mapping_date Description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. +-- * Slot: publication_date Description: The date the mapping was published. This is different from the date the mapping was asserted. +-- * Slot: confidence Description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. +-- * Slot: semantic_similarity_score Description: A score between 0 and 1 to denote the semantic similarity, where 1 denotes equivalence. +-- * Slot: semantic_similarity_measure Description: The measure used for computing the the semantic similarity score. To make processing this field as unambiguous as possible, we recommend using wikidata identifiers, but wikipedia pages could also be acceptable. +-- * Slot: issue_tracker_item Description: The issue tracker item discussing this mapping. +-- * Slot: 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. +-- * Slot: comment Description: Free text field containing either curator notes or text generated by tool providing additional informative information. +-- * Slot: mapping set_id Description: Autocreated FK slot +-- # Class: "literal mapping" Description: "Represents an individual mapping between a literal and an entity. Note that this schema has been created on 01.08.2023 and is subject to change." +-- * Slot: id Description: +-- * Slot: literal Description: The literal being mapped +-- * Slot: literal_datatype Description: The datatype of the literal being mapped +-- * Slot: predicate_id Description: The ID of the predicate or relation that relates the subject and object of this match. +-- * Slot: predicate_label Description: The label of the predicate/relation of the mapping +-- * Slot: predicate_modifier Description: A modifier for negating the prediate. See https://github.com/mapping-commons/sssom/issues/40 for discussion +-- * Slot: object_id Description: The ID of the object of the mapping. +-- * Slot: object_label Description: The label of object of the mapping +-- * Slot: 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. +-- * Slot: 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. +-- * Slot: license Description: A url to the license of the mapping. In absence of a license we assume no license. +-- * Slot: literal_source Description: URI of ontology source for the literal. +-- * Slot: literal_source_version Description: Version IRI or version string of the source of the literal. +-- * Slot: object_type Description: The type of entity that is being mapped. +-- * Slot: object_source Description: URI of vocabulary or identifier source for the object. +-- * Slot: object_source_version Description: Version IRI or version string of the source of the object term. +-- * Slot: mapping_provider 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. +-- * Slot: 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. +-- * Slot: 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. +-- * Slot: mapping_tool 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. +-- * Slot: mapping_tool_version Description: Version string that denotes the version of the mapping tool used. +-- * Slot: mapping_date Description: The date the mapping was asserted. This is different from the date the mapping was published or compiled in a SSSOM file. +-- * Slot: confidence Description: A score between 0 and 1 to denote the confidence or probability that the match is correct, where 1 denotes total confidence. +-- * Slot: similarity_score Description: A score between 0 and 1 to denote the similarity, where 1 denotes equivalence. +-- * Slot: similarity_measure Description: The measure used for computing the the similarity score. To make processing this field as unambiguous as possible, we recommend using wikidata identifiers, but wikipedia pages could also be acceptable. +-- * Slot: 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. +-- * Slot: comment Description: Free text field containing either curator notes or text generated by tool providing additional informative information. +-- # Class: "mapping registry" Description: "A registry for managing mapping sets. It holds a set of mapping set references, and can import other registries." +-- * Slot: id Description: +-- * Slot: mapping_registry_id Description: The unique identifier of a mapping registry. +-- * Slot: mapping_registry_title Description: The title of a mapping registry. +-- * Slot: mapping_registry_description Description: The description of a mapping registry. +-- * Slot: documentation Description: A URL to the documentation of this mapping commons. +-- * Slot: homepage Description: A URL to a homepage of this mapping commons. +-- * Slot: issue_tracker Description: A URL location of the issue tracker for this entity. +-- # Class: "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." +-- * Slot: id Description: +-- * Slot: mapping_set_id Description: A globally unique identifier for the mapping set (not each individual mapping). Should be IRI, ideally resolvable. +-- * Slot: mirror_from Description: A URL location from which to obtain a resource, such as a mapping set. +-- * Slot: 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. +-- * Slot: mapping_set_group Description: Set by the owners of the mapping registry. A way to group . +-- * Slot: last_updated Description: The date this reference was last updated. +-- * Slot: local_name Description: The local name assigned to file that corresponds to the downloaded mapping set. +-- # Class: "extension definition" Description: "A definition of an extension (non-standard) slot." +-- * Slot: id Description: +-- * Slot: slot_name Description: The name of the extension slot. +-- * Slot: 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). +-- * Slot: type_hint Description: Expected type of the values of the extension slot. +-- # Class: "Propagatable" Description: "Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the Mapping class." +-- * Slot: id Description: +-- * Slot: propagated Description: Indicates whether a slot can be propagated from a mapping down to individual mappings. +-- # Class: "mapping set_mapping_set_source" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: mapping_set_source Description: A mapping set or set of mapping set that was used to derive the mapping set. +-- # Class: "mapping set_creator_id" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "mapping set_creator_label" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: creator_label Description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. +-- # Class: "mapping set_subject_match_field" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: subject_match_field Description: A list of properties (term annotations on the subject) that was used for the match. +-- # Class: "mapping set_object_match_field" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: object_match_field Description: A list of properties (term annotations on the object) that was used for the match. +-- # Class: "mapping set_subject_preprocessing" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: subject_preprocessing 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. +-- # Class: "mapping set_object_preprocessing" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: object_preprocessing 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. +-- # Class: "mapping set_see_also" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: 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 +-- # Class: "mapping set_extension_definitions" Description: "" +-- * Slot: mapping set_id Description: Autocreated FK slot +-- * Slot: extension_definitions_id Description: A list that defines the extension slots used in the mapping set. +-- # Class: "mapping_author_id" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: author_id Description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. +-- # Class: "mapping_author_label" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: author_label Description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. +-- # Class: "mapping_reviewer_id" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "mapping_reviewer_label" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: reviewer_label Description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. +-- # Class: "mapping_creator_id" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "mapping_creator_label" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: creator_label Description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. +-- # Class: "mapping_curation_rule" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "mapping_curation_rule_text" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "mapping_subject_match_field" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: subject_match_field Description: A list of properties (term annotations on the subject) that was used for the match. +-- # Class: "mapping_object_match_field" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: object_match_field Description: A list of properties (term annotations on the object) that was used for the match. +-- # Class: "mapping_match_string" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "mapping_subject_preprocessing" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: subject_preprocessing 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. +-- # Class: "mapping_object_preprocessing" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: object_preprocessing 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. +-- # Class: "mapping_see_also" Description: "" +-- * Slot: mapping_id Description: Autocreated FK slot +-- * Slot: 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 +-- # Class: "literal mapping_author_id" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: author_id Description: Identifies the persons or groups responsible for asserting the mappings. Recommended to be a list of ORCIDs or otherwise identifying URIs. +-- # Class: "literal mapping_author_label" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: author_label Description: A string identifying the author of this mapping. In the spirit of provenance, consider using author_id instead. +-- # Class: "literal mapping_reviewer_id" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "literal mapping_reviewer_label" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: reviewer_label Description: A string identifying the reviewer of this mapping. In the spirit of provenance, consider using reviewer_id instead. +-- # Class: "literal mapping_creator_id" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "literal mapping_creator_label" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: creator_label Description: A string identifying the creator of this mapping. In the spirit of provenance, consider using creator_id instead. +-- # Class: "literal mapping_object_match_field" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: object_match_field Description: A list of properties (term annotations on the object) that was used for the match. +-- # Class: "literal mapping_match_string" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: 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. +-- # Class: "literal mapping_literal_preprocessing" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: literal_preprocessing Description: Method of preprocessing applied to the literal. +-- # Class: "literal mapping_object_preprocessing" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: object_preprocessing 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. +-- # Class: "literal mapping_see_also" Description: "" +-- * Slot: literal mapping_id Description: Autocreated FK slot +-- * Slot: 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 +-- # Class: "mapping registry_imports" Description: "" +-- * Slot: mapping registry_id Description: Autocreated FK slot +-- * Slot: imports Description: A list of registries that should be imported into this one. +-- # Class: "mapping registry_mapping_set_references" Description: "" +-- * Slot: mapping registry_id Description: Autocreated FK slot +-- * Slot: mapping_set_references_id Description: A list of mapping set references. - -CREATE TABLE mapping ( - subject_id TEXT NOT NULL, - subject_label TEXT, - subject_category TEXT, +CREATE TABLE "mapping set" ( + id INTEGER NOT NULL, + mapping_set_id TEXT NOT NULL, + mapping_set_version TEXT, + mapping_set_title TEXT, + mapping_set_description TEXT, + license TEXT NOT NULL, + subject_type VARCHAR(23), + subject_source TEXT, + subject_source_version TEXT, + object_type VARCHAR(23), + object_source TEXT, + object_source_version TEXT, + mapping_provider TEXT, + mapping_tool TEXT, + mapping_tool_version TEXT, + mapping_date DATE, + publication_date DATE, + issue_tracker TEXT, + other TEXT, + comment TEXT, + PRIMARY KEY (id) +); +CREATE TABLE "literal mapping" ( + id INTEGER NOT NULL, + literal TEXT NOT NULL, + literal_datatype TEXT, predicate_id TEXT NOT NULL, predicate_label TEXT, predicate_modifier VARCHAR(3), @@ -11,16 +247,9 @@ CREATE TABLE mapping ( object_label TEXT, object_category TEXT, mapping_justification TEXT NOT NULL, - author_id TEXT, - author_label TEXT, - reviewer_id TEXT, - reviewer_label TEXT, - creator_id TEXT, - creator_label TEXT, license TEXT, - subject_type VARCHAR(23), - subject_source TEXT, - subject_source_version TEXT, + literal_source TEXT, + literal_source_version TEXT, object_type VARCHAR(23), object_source TEXT, object_source_version TEXT, @@ -30,46 +259,58 @@ CREATE TABLE mapping ( mapping_tool TEXT, mapping_tool_version TEXT, mapping_date DATE, - publication_date DATE, confidence FLOAT, - curation_rule TEXT, - curation_rule_text TEXT, - subject_match_field TEXT, - object_match_field TEXT, - match_string TEXT, - subject_preprocessing TEXT, - object_preprocessing TEXT, - semantic_similarity_score FLOAT, - semantic_similarity_measure TEXT, - see_also TEXT, - issue_tracker_item TEXT, + similarity_score FLOAT, + similarity_measure TEXT, other TEXT, comment TEXT, - PRIMARY KEY (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, semantic_similarity_score, semantic_similarity_measure, see_also, issue_tracker_item, other, comment) + PRIMARY KEY (id) ); - -CREATE TABLE mapping_registry ( +CREATE TABLE "mapping registry" ( + id INTEGER NOT NULL, mapping_registry_id TEXT NOT NULL, mapping_registry_title TEXT, mapping_registry_description TEXT, - imports TEXT, - mapping_set_references TEXT, documentation TEXT, homepage TEXT, issue_tracker TEXT, - PRIMARY KEY (mapping_registry_id, mapping_registry_title, mapping_registry_description, imports, mapping_set_references, documentation, homepage, issue_tracker) + PRIMARY KEY (id) ); - -CREATE TABLE mapping_set ( - mappings TEXT, +CREATE TABLE "mapping set reference" ( + id INTEGER NOT NULL, mapping_set_id TEXT NOT NULL, - mapping_set_version TEXT, - mapping_set_source TEXT, - mapping_set_title TEXT, - mapping_set_description TEXT, - creator_id TEXT, - creator_label TEXT, - license TEXT NOT NULL, + mirror_from TEXT, + registry_confidence FLOAT, + mapping_set_group TEXT, + last_updated DATE, + local_name TEXT, + PRIMARY KEY (id) +); +CREATE TABLE "extension definition" ( + id INTEGER NOT NULL, + slot_name TEXT NOT NULL, + property TEXT, + type_hint TEXT, + PRIMARY KEY (id) +); +CREATE TABLE "Propagatable" ( + id INTEGER NOT NULL, + propagated BOOLEAN, + PRIMARY KEY (id) +); +CREATE TABLE mapping ( + id INTEGER NOT NULL, + subject_id TEXT NOT NULL, + subject_label TEXT, + subject_category TEXT, + predicate_id TEXT NOT NULL, + predicate_label TEXT, + predicate_modifier VARCHAR(3), + object_id TEXT NOT NULL, + object_label TEXT, + object_category TEXT, + mapping_justification TEXT NOT NULL, + license TEXT, subject_type VARCHAR(23), subject_source TEXT, subject_source_version TEXT, @@ -77,27 +318,237 @@ CREATE TABLE mapping_set ( object_source TEXT, object_source_version TEXT, mapping_provider TEXT, + mapping_source TEXT, + mapping_cardinality VARCHAR(3), mapping_tool TEXT, mapping_tool_version TEXT, mapping_date DATE, publication_date DATE, + confidence FLOAT, + semantic_similarity_score FLOAT, + semantic_similarity_measure TEXT, + issue_tracker_item TEXT, + other TEXT, + comment TEXT, + "mapping set_id" INTEGER, + PRIMARY KEY (id), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_mapping_set_source" ( + "mapping set_id" INTEGER, + mapping_set_source TEXT, + PRIMARY KEY ("mapping set_id", mapping_set_source), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_creator_id" ( + "mapping set_id" INTEGER, + creator_id TEXT, + PRIMARY KEY ("mapping set_id", creator_id), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_creator_label" ( + "mapping set_id" INTEGER, + creator_label TEXT, + PRIMARY KEY ("mapping set_id", creator_label), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_subject_match_field" ( + "mapping set_id" INTEGER, subject_match_field TEXT, + PRIMARY KEY ("mapping set_id", subject_match_field), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_object_match_field" ( + "mapping set_id" INTEGER, object_match_field TEXT, + PRIMARY KEY ("mapping set_id", object_match_field), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_subject_preprocessing" ( + "mapping set_id" INTEGER, subject_preprocessing TEXT, + PRIMARY KEY ("mapping set_id", subject_preprocessing), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_object_preprocessing" ( + "mapping set_id" INTEGER, object_preprocessing TEXT, + PRIMARY KEY ("mapping set_id", object_preprocessing), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) +); +CREATE TABLE "mapping set_see_also" ( + "mapping set_id" INTEGER, see_also TEXT, - issue_tracker TEXT, - other TEXT, - comment TEXT, - PRIMARY KEY (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) + PRIMARY KEY ("mapping set_id", see_also), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id) ); - -CREATE TABLE mapping_set_reference ( - mapping_set_id TEXT NOT NULL, - mirror_from TEXT, - registry_confidence FLOAT, - mapping_set_group TEXT, - last_updated DATE, - local_name TEXT, - PRIMARY KEY (mapping_set_id, mirror_from, registry_confidence, mapping_set_group, last_updated, local_name) +CREATE TABLE "mapping set_extension_definitions" ( + "mapping set_id" INTEGER, + extension_definitions_id INTEGER, + PRIMARY KEY ("mapping set_id", extension_definitions_id), + FOREIGN KEY("mapping set_id") REFERENCES "mapping set" (id), + FOREIGN KEY(extension_definitions_id) REFERENCES "extension definition" (id) +); +CREATE TABLE "literal mapping_author_id" ( + "literal mapping_id" INTEGER, + author_id TEXT, + PRIMARY KEY ("literal mapping_id", author_id), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_author_label" ( + "literal mapping_id" INTEGER, + author_label TEXT, + PRIMARY KEY ("literal mapping_id", author_label), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_reviewer_id" ( + "literal mapping_id" INTEGER, + reviewer_id TEXT, + PRIMARY KEY ("literal mapping_id", reviewer_id), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_reviewer_label" ( + "literal mapping_id" INTEGER, + reviewer_label TEXT, + PRIMARY KEY ("literal mapping_id", reviewer_label), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_creator_id" ( + "literal mapping_id" INTEGER, + creator_id TEXT, + PRIMARY KEY ("literal mapping_id", creator_id), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_creator_label" ( + "literal mapping_id" INTEGER, + creator_label TEXT, + PRIMARY KEY ("literal mapping_id", creator_label), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) ); +CREATE TABLE "literal mapping_object_match_field" ( + "literal mapping_id" INTEGER, + object_match_field TEXT, + PRIMARY KEY ("literal mapping_id", object_match_field), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_match_string" ( + "literal mapping_id" INTEGER, + match_string TEXT, + PRIMARY KEY ("literal mapping_id", match_string), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_literal_preprocessing" ( + "literal mapping_id" INTEGER, + literal_preprocessing TEXT, + PRIMARY KEY ("literal mapping_id", literal_preprocessing), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_object_preprocessing" ( + "literal mapping_id" INTEGER, + object_preprocessing TEXT, + PRIMARY KEY ("literal mapping_id", object_preprocessing), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "literal mapping_see_also" ( + "literal mapping_id" INTEGER, + see_also TEXT, + PRIMARY KEY ("literal mapping_id", see_also), + FOREIGN KEY("literal mapping_id") REFERENCES "literal mapping" (id) +); +CREATE TABLE "mapping registry_imports" ( + "mapping registry_id" INTEGER, + imports TEXT, + PRIMARY KEY ("mapping registry_id", imports), + FOREIGN KEY("mapping registry_id") REFERENCES "mapping registry" (id) +); +CREATE TABLE "mapping registry_mapping_set_references" ( + "mapping registry_id" INTEGER, + mapping_set_references_id INTEGER, + PRIMARY KEY ("mapping registry_id", mapping_set_references_id), + FOREIGN KEY("mapping registry_id") REFERENCES "mapping registry" (id), + FOREIGN KEY(mapping_set_references_id) REFERENCES "mapping set reference" (id) +); +CREATE TABLE mapping_author_id ( + mapping_id INTEGER, + author_id TEXT, + PRIMARY KEY (mapping_id, author_id), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_author_label ( + mapping_id INTEGER, + author_label TEXT, + PRIMARY KEY (mapping_id, author_label), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_reviewer_id ( + mapping_id INTEGER, + reviewer_id TEXT, + PRIMARY KEY (mapping_id, reviewer_id), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_reviewer_label ( + mapping_id INTEGER, + reviewer_label TEXT, + PRIMARY KEY (mapping_id, reviewer_label), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_creator_id ( + mapping_id INTEGER, + creator_id TEXT, + PRIMARY KEY (mapping_id, creator_id), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_creator_label ( + mapping_id INTEGER, + creator_label TEXT, + PRIMARY KEY (mapping_id, creator_label), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_curation_rule ( + mapping_id INTEGER, + curation_rule TEXT, + PRIMARY KEY (mapping_id, curation_rule), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_curation_rule_text ( + mapping_id INTEGER, + curation_rule_text TEXT, + PRIMARY KEY (mapping_id, curation_rule_text), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_subject_match_field ( + mapping_id INTEGER, + subject_match_field TEXT, + PRIMARY KEY (mapping_id, subject_match_field), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_object_match_field ( + mapping_id INTEGER, + object_match_field TEXT, + PRIMARY KEY (mapping_id, object_match_field), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_match_string ( + mapping_id INTEGER, + match_string TEXT, + PRIMARY KEY (mapping_id, match_string), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_subject_preprocessing ( + mapping_id INTEGER, + subject_preprocessing TEXT, + PRIMARY KEY (mapping_id, subject_preprocessing), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_object_preprocessing ( + mapping_id INTEGER, + object_preprocessing TEXT, + PRIMARY KEY (mapping_id, object_preprocessing), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); +CREATE TABLE mapping_see_also ( + mapping_id INTEGER, + see_also TEXT, + PRIMARY KEY (mapping_id, see_also), + FOREIGN KEY(mapping_id) REFERENCES mapping (id) +); \ No newline at end of file diff --git a/src/sssom_schema/context/sssom_schema.context.jsonld b/src/sssom_schema/context/sssom_schema.context.jsonld index fc8fd2bf..e1851867 100644 --- a/src/sssom_schema/context/sssom_schema.context.jsonld +++ b/src/sssom_schema/context/sssom_schema.context.jsonld @@ -1,5 +1,9 @@ { - "_comments": "Auto generated from sssom_schema.yaml by jsonldcontextgen.py version: 0.1.1\n Generation date: 2023-07-31T17:42:54\n Schema: sssom\n metamodel version: 1.7.0\n model version: None\n \n id: https://w3id.org/sssom/schema/\n description: Datamodel for Simple Standard for Sharing Ontological Mappings (SSSOM)\n license: https://creativecommons.org/publicdomain/zero/1.0/\n ", + "comments": { + "description": "Auto generated by LinkML jsonld context generator", + "generation_date": "2024-08-05T10:18:22", + "source": "sssom_schema.yaml" + }, "@context": { "dcterms": "http://purl.org/dc/terms/", "linkml": "https://w3id.org/linkml/", @@ -12,75 +16,144 @@ "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#", "@vocab": "https://w3id.org/sssom/", "author_id": { "@type": "rdfs:Resource", "@id": "pav:authoredBy" }, + "author_label": { + "@id": "author_label" + }, "comment": { "@id": "rdfs:comment" }, "confidence": { - "@type": "xsd:double" + "@type": "xsd:double", + "@id": "confidence" }, "creator_id": { "@type": "rdfs:Resource", "@id": "dcterms:creator" }, + "creator_label": { + "@id": "creator_label" + }, "curation_rule": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "curation_rule" + }, + "curation_rule_text": { + "@id": "curation_rule_text" }, "documentation": { - "@type": "@id" + "@type": "@id", + "@id": "documentation" + }, + "extension_definitions": { + "@type": "@id", + "@id": "extension_definitions" + }, + "property": { + "@type": "@id", + "@id": "property" + }, + "slot_name": { + "@id": "slot_name" + }, + "type_hint": { + "@type": "@id", + "@id": "type_hint" }, "homepage": { - "@type": "@id" + "@type": "@id", + "@id": "homepage" }, "imports": { - "@type": "@id" + "@type": "@id", + "@id": "imports" }, "issue_tracker": { - "@type": "@id" + "@type": "@id", + "@id": "issue_tracker" }, "issue_tracker_item": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "issue_tracker_item" }, "last_updated": { - "@type": "xsd:date" + "@type": "xsd:date", + "@id": "last_updated" }, "license": { "@type": "@id", "@id": "dcterms:license" }, + "literal": { + "@id": "owl:annotatedTarget" + }, + "literal_datatype": { + "@type": "@id", + "@id": "rdf:datatype" + }, + "literal_preprocessing": { + "@type": "rdfs:Resource", + "@id": "literal_preprocessing" + }, + "literal_source": { + "@type": "rdfs:Resource", + "@id": "literal_source" + }, + "literal_source_version": { + "@id": "literal_source_version" + }, + "local_name": { + "@id": "local_name" + }, "mapping_cardinality": { "@context": { "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" - } + }, + "@id": "mapping_cardinality" }, "mapping_date": { "@type": "xsd:date", "@id": "pav:authoredOn" }, "mapping_justification": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "mapping_justification" }, "mapping_provider": { - "@type": "@id" + "@type": "@id", + "@id": "mapping_provider" + }, + "mapping_registry_description": { + "@id": "mapping_registry_description" }, "mapping_registry_id": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "mapping_registry_id" + }, + "mapping_registry_title": { + "@id": "mapping_registry_title" }, "mapping_set_description": { "@id": "dcterms:description" }, + "mapping_set_group": { + "@id": "mapping_set_group" + }, "mapping_set_id": { - "@type": "@id" + "@type": "@id", + "@id": "mapping_set_id" }, "mapping_set_references": { - "@type": "@id" + "@type": "@id", + "@id": "mapping_set_references" }, "mapping_set_source": { "@type": "@id", @@ -93,26 +166,50 @@ "@id": "owl:versionInfo" }, "mapping_source": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "mapping_source" + }, + "mapping_tool": { + "@id": "mapping_tool" + }, + "mapping_tool_version": { + "@id": "mapping_tool_version" }, "mappings": { - "@type": "@id" + "@type": "@id", + "@id": "mappings" + }, + "match_string": { + "@id": "match_string" }, "mirror_from": { - "@type": "@id" + "@type": "@id", + "@id": "mirror_from" + }, + "object_category": { + "@id": "object_category" }, "object_id": { "@type": "rdfs:Resource", "@id": "owl:annotatedTarget" }, + "object_label": { + "@id": "object_label" + }, "object_match_field": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "object_match_field" }, "object_preprocessing": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "object_preprocessing" }, "object_source": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "object_source" + }, + "object_source_version": { + "@id": "object_source_version" }, "object_type": { "@context": { @@ -120,19 +217,27 @@ "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" - } + }, + "@id": "object_type" + }, + "other": { + "@id": "other" }, "predicate_id": { "@type": "rdfs:Resource", "@id": "owl:annotatedProperty" }, + "predicate_label": { + "@id": "predicate_label" + }, "predicate_modifier": { "@context": { "@vocab": "@null", "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" - } + }, + "@id": "predicate_modifier" }, "predicate_type": { "@context": { @@ -140,36 +245,69 @@ "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" - } + }, + "@id": "predicate_type" + }, + "propagated": { + "@type": "xsd:boolean", + "@id": "propagated" }, "publication_date": { "@type": "xsd:date", "@id": "dcterms:created" }, "registry_confidence": { - "@type": "xsd:double" + "@type": "xsd:double", + "@id": "registry_confidence" }, "reviewer_id": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "reviewer_id" + }, + "reviewer_label": { + "@id": "reviewer_label" }, "see_also": { "@id": "rdfs:seeAlso" }, + "semantic_similarity_measure": { + "@id": "semantic_similarity_measure" + }, "semantic_similarity_score": { - "@type": "xsd:double" + "@type": "xsd:double", + "@id": "semantic_similarity_score" + }, + "similarity_measure": { + "@id": "similarity_measure" + }, + "similarity_score": { + "@type": "xsd:double", + "@id": "similarity_score" + }, + "subject_category": { + "@id": "subject_category" }, "subject_id": { "@type": "rdfs:Resource", "@id": "owl:annotatedSource" }, + "subject_label": { + "@id": "subject_label" + }, "subject_match_field": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "subject_match_field" }, "subject_preprocessing": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "subject_preprocessing" }, "subject_source": { - "@type": "rdfs:Resource" + "@type": "rdfs:Resource", + "@id": "subject_source" + }, + "subject_source_version": { + "@id": "subject_source_version" }, "subject_type": { "@context": { @@ -177,10 +315,29 @@ "text": "skos:notation", "description": "skos:prefLabel", "meaning": "@id" - } + }, + "@id": "subject_type" + }, + "ExtensionDefinition": { + "@id": "ExtensionDefinition" + }, + "LiteralMapping": { + "@id": "owl:Axiom" }, "Mapping": { "@id": "owl:Axiom" + }, + "MappingRegistry": { + "@id": "MappingRegistry" + }, + "MappingSet": { + "@id": "MappingSet" + }, + "MappingSetReference": { + "@id": "MappingSetReference" + }, + "Propagatable": { + "@id": "Propagatable" } } } diff --git a/src/sssom_schema/context/sssom_schema.jsonld b/src/sssom_schema/context/sssom_schema.jsonld index 47844e72..a0a43e18 100644 --- a/src/sssom_schema/context/sssom_schema.jsonld +++ b/src/sssom_schema/context/sssom_schema.jsonld @@ -47,6 +47,10 @@ "prefix_prefix": "skos", "prefix_reference": "http://www.w3.org/2004/02/skos/core#" }, + { + "prefix_prefix": "xsd", + "prefix_reference": "http://www.w3.org/2001/XMLSchema#" + }, { "prefix_prefix": "semapv", "prefix_reference": "https://w3id.org/semapv/vocab/" @@ -62,8 +66,11 @@ { "name": "EntityReference", "definition_uri": "https://w3id.org/sssom/EntityReference", - "description": "A reference to a mapped entity. This is represented internally as a string, and as a resource in RDF", + "description": "A reference to an entity involved in the mapping.\n", "from_schema": "https://w3id.org/sssom/schema/", + "see_also": [ + "https://mapping-commons.github.io/sssom/spec/#tsv" + ], "typeof": "uriorcurie", "base": "str", "uri": "http://www.w3.org/2000/01/rdf-schema#Resource", @@ -74,6 +81,9 @@ "name": "string", "definition_uri": "https://w3id.org/linkml/String", "description": "A character string", + "notes": [ + "In RDF serializations, a slot with range of string is treated as a literal or type xsd:string. If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"string\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "exact_mappings": [ @@ -87,6 +97,9 @@ "name": "integer", "definition_uri": "https://w3id.org/linkml/Integer", "description": "An integer", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"integer\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "exact_mappings": [ @@ -100,6 +113,9 @@ "name": "boolean", "definition_uri": "https://w3id.org/linkml/Boolean", "description": "A binary (true or false) value", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"boolean\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "exact_mappings": [ @@ -114,6 +130,9 @@ "name": "float", "definition_uri": "https://w3id.org/linkml/Float", "description": "A real number that conforms to the xsd:float specification", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"float\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "exact_mappings": [ @@ -127,6 +146,9 @@ "name": "double", "definition_uri": "https://w3id.org/linkml/Double", "description": "A real number that conforms to the xsd:double specification", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"double\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "close_mappings": [ @@ -140,6 +162,9 @@ "name": "decimal", "definition_uri": "https://w3id.org/linkml/Decimal", "description": "A real number with arbitrary precision that conforms to the xsd:decimal specification", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"decimal\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "broad_mappings": [ @@ -154,7 +179,8 @@ "definition_uri": "https://w3id.org/linkml/Time", "description": "A time object represents a (local) time of day, independent of any particular day", "notes": [ - "URI is dateTime because OWL reasoners do not work with straight date or time" + "URI is dateTime because OWL reasoners do not work with straight date or time", + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"time\"." ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", @@ -171,7 +197,8 @@ "definition_uri": "https://w3id.org/linkml/Date", "description": "a date (year, month and day) in an idealized calendar", "notes": [ - "URI is dateTime because OWL reasoners don't work with straight date or time" + "URI is dateTime because OWL reasoners don't work with straight date or time", + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"date\"." ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", @@ -187,6 +214,9 @@ "name": "datetime", "definition_uri": "https://w3id.org/linkml/Datetime", "description": "The combination of a date and time", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"datetime\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "exact_mappings": [ @@ -201,6 +231,9 @@ "name": "date_or_datetime", "definition_uri": "https://w3id.org/linkml/DateOrDatetime", "description": "Either a date or a datetime", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"date_or_datetime\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "str", @@ -212,6 +245,9 @@ "name": "uriorcurie", "definition_uri": "https://w3id.org/linkml/Uriorcurie", "description": "a URI or a CURIE", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"uriorcurie\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "URIorCURIE", @@ -224,6 +260,9 @@ "definition_uri": "https://w3id.org/linkml/Curie", "conforms_to": "https://www.w3.org/TR/curie/", "description": "a compact URI", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"curie\"." + ], "comments": [ "in RDF serializations this MUST be expanded to a URI", "in non-RDF serializations MAY be serialized as the compact representation" @@ -240,6 +279,9 @@ "definition_uri": "https://w3id.org/linkml/Uri", "conforms_to": "https://www.ietf.org/rfc/rfc3987.txt", "description": "a complete URI", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"uri\"." + ], "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" ], @@ -257,6 +299,9 @@ "name": "ncname", "definition_uri": "https://w3id.org/linkml/Ncname", "description": "Prefix part of CURIE", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"ncname\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "NCName", @@ -268,6 +313,9 @@ "name": "objectidentifier", "definition_uri": "https://w3id.org/linkml/Objectidentifier", "description": "A URI or CURIE that represents an object in the model.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"objectidentifier\"." + ], "comments": [ "Used for inheritance and type checking" ], @@ -282,6 +330,9 @@ "name": "nodeidentifier", "definition_uri": "https://w3id.org/linkml/Nodeidentifier", "description": "A URI, CURIE or BNODE that represents a node in a model.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"nodeidentifier\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "NodeIdentifier", @@ -294,6 +345,9 @@ "definition_uri": "https://w3id.org/linkml/Jsonpointer", "conforms_to": "https://datatracker.ietf.org/doc/html/rfc6901", "description": "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.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"jsonpointer\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "str", @@ -306,6 +360,9 @@ "definition_uri": "https://w3id.org/linkml/Jsonpath", "conforms_to": "https://www.ietf.org/archive/id/draft-goessner-dispatch-jsonpath-00.html", "description": "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.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"jsonpath\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "str", @@ -318,6 +375,9 @@ "definition_uri": "https://w3id.org/linkml/Sparqlpath", "conforms_to": "https://www.w3.org/TR/sparql11-query/#propertypaths", "description": "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.", + "notes": [ + "If you are authoring schemas in LinkML YAML, the type is referenced with the lower case \"sparqlpath\"." + ], "from_schema": "https://w3id.org/linkml/types", "imported_from": "linkml:types", "base": "str", @@ -612,6 +672,55 @@ "required": true, "@type": "SlotDefinition" }, + { + "name": "literal", + "definition_uri": "https://w3id.org/sssom/literal", + "description": "The literal being mapped", + "examples": [ + { + "value": "Alzheimer", + "description": "A string referring to some thing.", + "@type": "Example" + } + ], + "from_schema": "https://w3id.org/sssom/schema/", + "mappings": [ + "http://www.w3.org/2002/07/owl#annotatedTarget", + "http://www.w3.org/2002/07/owl#annotatedSource" + ], + "slot_uri": "http://www.w3.org/2002/07/owl#annotatedTarget", + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" + ], + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "literal_datatype", + "definition_uri": "https://w3id.org/sssom/literal_datatype", + "description": "The datatype of the literal being mapped", + "examples": [ + { + "value": "xsd:string", + "description": "A string referring to some thing.", + "@type": "Example" + } + ], + "from_schema": "https://w3id.org/sssom/schema/", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#datatype", + "http://www.w3.org/1999/02/22-rdf-syntax-ns#datatype" + ], + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#datatype", + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" + ], + "range": "uri", + "@type": "SlotDefinition" + }, { "name": "subject_label", "definition_uri": "https://w3id.org/sssom/subject_label", @@ -669,6 +778,16 @@ { "name": "subject_type", "definition_uri": "https://w3id.org/sssom/subject_type", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "The type of entity that is being mapped.", "examples": [ { @@ -702,9 +821,10 @@ "http://www.w3.org/2002/07/owl#annotatedProperty" ], "slot_uri": "http://www.w3.org/2002/07/owl#annotatedProperty", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "required": true, @@ -726,9 +846,10 @@ "https://github.com/mapping-commons/sssom/issues/107" ], "slot_uri": "https://w3id.org/sssom/predicate_modifier", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "predicate_modifier_enum", "@type": "SlotDefinition" @@ -801,9 +922,10 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/predicate_label", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -844,9 +966,10 @@ "http://www.w3.org/2002/07/owl#annotatedTarget" ], "slot_uri": "http://www.w3.org/2002/07/owl#annotatedTarget", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "required": true, @@ -864,9 +987,10 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/object_label", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "recommended": true, @@ -899,9 +1023,10 @@ "https://github.com/mapping-commons/sssom/issues/256" ], "slot_uri": "https://w3id.org/sssom/object_category", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -922,9 +1047,10 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/mapping_justification", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "required": true, @@ -972,6 +1098,16 @@ { "name": "object_type", "definition_uri": "https://w3id.org/sssom/object_type", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "The type of entity that is being mapped.", "examples": [ { @@ -981,10 +1117,11 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/object_type", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "entity_type_enum", "@type": "SlotDefinition" @@ -1106,10 +1243,11 @@ ], "slot_uri": "http://purl.org/dc/terms/creator", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1121,10 +1259,11 @@ "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/creator_label", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1139,9 +1278,10 @@ ], "slot_uri": "http://purl.org/pav/authoredBy", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1153,9 +1293,10 @@ "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/author_label", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1167,9 +1308,10 @@ "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/reviewer_id", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1181,9 +1323,10 @@ "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/reviewer_label", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1197,10 +1340,11 @@ "http://purl.org/dc/terms/license" ], "slot_uri": "http://purl.org/dc/terms/license", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "uri", "@type": "SlotDefinition" @@ -1208,6 +1352,16 @@ { "name": "subject_source", "definition_uri": "https://w3id.org/sssom/subject_source", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "URI of vocabulary or identifier source for the subject.", "examples": [ { @@ -1234,6 +1388,16 @@ { "name": "subject_source_version", "definition_uri": "https://w3id.org/sssom/subject_source_version", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "Version IRI or version string of the source of the subject term.", "examples": [ { @@ -1252,9 +1416,64 @@ "range": "string", "@type": "SlotDefinition" }, + { + "name": "literal_source", + "definition_uri": "https://w3id.org/sssom/literal_source", + "description": "URI of ontology source for the literal.", + "examples": [ + { + "value": "obo:mondo.owl", + "description": "A persistent OBO CURIE pointing to the latest version of the Mondo ontology.", + "@type": "Example" + }, + { + "value": "wikidata:Q7876491", + "description": "A Wikidata identifier for the Uberon ontology resource.", + "@type": "Example" + } + ], + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/literal_source", + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" + ], + "range": "EntityReference", + "@type": "SlotDefinition" + }, + { + "name": "literal_source_version", + "definition_uri": "https://w3id.org/sssom/literal_source_version", + "description": "Version IRI or version string of the source of the literal.", + "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')", + "@type": "Example" + } + ], + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/literal_source_version", + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "object_source", "definition_uri": "https://w3id.org/sssom/object_source", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "URI of vocabulary or identifier source for the object.", "examples": [ { @@ -1270,10 +1489,11 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/object_source", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1281,6 +1501,16 @@ { "name": "object_source_version", "definition_uri": "https://w3id.org/sssom/object_source_version", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "Version IRI or version string of the source of the object term.", "examples": [ { @@ -1291,10 +1521,11 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/object_source_version", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1302,13 +1533,24 @@ { "name": "mapping_provider", "definition_uri": "https://w3id.org/sssom/mapping_provider", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "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/", "slot_uri": "https://w3id.org/sssom/mapping_provider", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "uri", "@type": "SlotDefinition" @@ -1349,9 +1591,10 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/mapping_source", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1362,9 +1605,10 @@ "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/", "slot_uri": "https://w3id.org/sssom/mapping_cardinality", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "mapping_cardinality_enum", "@type": "SlotDefinition" @@ -1372,6 +1616,16 @@ { "name": "mapping_tool", "definition_uri": "https://w3id.org/sssom/mapping_tool", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "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": [ { @@ -1381,10 +1635,11 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/mapping_tool", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1392,6 +1647,16 @@ { "name": "mapping_tool_version", "definition_uri": "https://w3id.org/sssom/mapping_tool_version", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "Version string that denotes the version of the mapping tool used.", "examples": [ { @@ -1401,10 +1666,11 @@ ], "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/mapping_tool_version", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1412,16 +1678,27 @@ { "name": "mapping_date", "definition_uri": "https://w3id.org/sssom/mapping_date", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "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/", "mappings": [ "http://purl.org/pav/authoredOn" ], "slot_uri": "http://purl.org/pav/authoredOn", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "date", "@type": "SlotDefinition" @@ -1449,16 +1726,29 @@ "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/", "slot_uri": "https://w3id.org/sssom/confidence", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "double", + "minimum_value": 0.0, + "maximum_value": 1.0, "@type": "SlotDefinition" }, { "name": "subject_match_field", "definition_uri": "https://w3id.org/sssom/subject_match_field", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "A list of properties (term annotations on the subject) that was used for the match.", "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/subject_match_field", @@ -1474,14 +1764,25 @@ { "name": "object_match_field", "definition_uri": "https://w3id.org/sssom/object_match_field", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "description": "A list of properties (term annotations on the object) that was used for the match.", "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/object_match_field", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1489,13 +1790,14 @@ { "name": "match_string", "definition_uri": "https://w3id.org/sssom/match_string", - "description": "Strings that are shared by subj/obj. It is recommended to indicate the fields for the match using the object and subject_match_field slots.", + "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/", "slot_uri": "https://w3id.org/sssom/match_string", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1503,6 +1805,16 @@ { "name": "subject_preprocessing", "definition_uri": "https://w3id.org/sssom/subject_preprocessing", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "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": [ { @@ -1528,6 +1840,16 @@ { "name": "object_preprocessing", "definition_uri": "https://w3id.org/sssom/object_preprocessing", + "instantiates": [ + "sssom:Propagatable" + ], + "annotations": [ + { + "tag": "propagated", + "value": true, + "@type": "Annotation" + } + ], "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": [ { @@ -1542,10 +1864,35 @@ "from_schema": "https://w3id.org/sssom/schema/", "slot_uri": "https://w3id.org/sssom/object_preprocessing", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" + ], + "range": "EntityReference", + "@type": "SlotDefinition" + }, + { + "name": "literal_preprocessing", + "definition_uri": "https://w3id.org/sssom/literal_preprocessing", + "description": "Method of preprocessing applied to the literal.", + "examples": [ + { + "value": "semapv:Stemming", + "@type": "Example" + }, + { + "value": "semapv:StopWordRemoval", + "@type": "Example" + } + ], + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/literal_preprocessing", + "multivalued": true, + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" ], "range": "EntityReference", "@type": "SlotDefinition" @@ -1599,6 +1946,8 @@ "Mapping" ], "range": "double", + "minimum_value": 0.0, + "maximum_value": 1.0, "@type": "SlotDefinition" }, { @@ -1621,6 +1970,41 @@ "range": "string", "@type": "SlotDefinition" }, + { + "name": "similarity_score", + "definition_uri": "https://w3id.org/sssom/similarity_score", + "description": "A score between 0 and 1 to denote the similarity, where 1 denotes equivalence.", + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/similarity_score", + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" + ], + "range": "double", + "minimum_value": 0.0, + "maximum_value": 1.0, + "@type": "SlotDefinition" + }, + { + "name": "similarity_measure", + "definition_uri": "https://w3id.org/sssom/similarity_measure", + "description": "The measure used for computing the the similarity score. To make processing this field as unambiguous as possible, we recommend using wikidata identifiers, but wikipedia pages could also be acceptable.", + "examples": [ + { + "value": "https://www.wikidata.org/wiki/Q865360", + "description": "(the Wikidata identifier for the Jaccard index measure).", + "@type": "Example" + } + ], + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/similarity_measure", + "owner": "LiteralMapping", + "domain_of": [ + "LiteralMapping" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "issue_tracker_item", "definition_uri": "https://w3id.org/sssom/issue_tracker_item", @@ -1682,10 +2066,11 @@ ], "slot_uri": "http://www.w3.org/2000/01/rdf-schema#seeAlso", "multivalued": true, - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1696,10 +2081,11 @@ "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/", "slot_uri": "https://w3id.org/sssom/other", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" @@ -1713,14 +2099,87 @@ "http://www.w3.org/2000/01/rdf-schema#comment" ], "slot_uri": "http://www.w3.org/2000/01/rdf-schema#comment", - "owner": "Mapping", + "owner": "LiteralMapping", "domain_of": [ "MappingSet", - "Mapping" + "Mapping", + "LiteralMapping" ], "range": "string", "@type": "SlotDefinition" }, + { + "name": "extension_definitions", + "definition_uri": "https://w3id.org/sssom/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" + ], + "slot_uri": "https://w3id.org/sssom/extension_definitions", + "multivalued": true, + "owner": "MappingSet", + "domain_of": [ + "MappingSet" + ], + "range": "ExtensionDefinition", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "extensionDefinition__slot_name", + "description": "The name of the extension slot.", + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/slot_name", + "alias": "slot_name", + "owner": "ExtensionDefinition", + "domain_of": [ + "ExtensionDefinition" + ], + "range": "ncname", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "extensionDefinition__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/", + "slot_uri": "https://w3id.org/sssom/property", + "alias": "property", + "owner": "ExtensionDefinition", + "domain_of": [ + "ExtensionDefinition" + ], + "range": "uriorcurie", + "@type": "SlotDefinition" + }, + { + "name": "extensionDefinition__type_hint", + "description": "Expected type of the values of the extension slot.", + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/type_hint", + "alias": "type_hint", + "owner": "ExtensionDefinition", + "domain_of": [ + "ExtensionDefinition" + ], + "range": "uriorcurie", + "@type": "SlotDefinition" + }, + { + "name": "propagatable__propagated", + "description": "Indicates whether a slot can be propagated from a mapping down to individual mappings.", + "from_schema": "https://w3id.org/sssom/schema/", + "slot_uri": "https://w3id.org/sssom/propagated", + "alias": "propagated", + "owner": "Propagatable", + "domain_of": [ + "Propagatable" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, { "name": "mapping_set_license", "definition_uri": "https://w3id.org/sssom/license", @@ -1778,7 +2237,8 @@ "see_also", "issue_tracker", "other", - "comment" + "comment", + "extension_definitions" ], "slot_usage": {}, "class_uri": "https://w3id.org/sssom/MappingSet", @@ -1842,6 +2302,60 @@ "class_uri": "http://www.w3.org/2002/07/owl#Axiom", "@type": "ClassDefinition" }, + { + "name": "LiteralMapping", + "definition_uri": "https://w3id.org/sssom/LiteralMapping", + "description": "Represents an individual mapping between a literal and an entity. Note that this schema has been created on 01.08.2023 and is subject to change.", + "from_schema": "https://w3id.org/sssom/schema/", + "see_also": [ + "https://mapping-commons.github.io/sssom/sssom-profiles/" + ], + "mappings": [ + "owl:Axiom" + ], + "slots": [ + "literal", + "literal_datatype", + "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", + "literal_source", + "literal_source_version", + "object_type", + "object_source", + "object_source_version", + "mapping_provider", + "mapping_source", + "mapping_cardinality", + "mapping_tool", + "mapping_tool_version", + "mapping_date", + "confidence", + "object_match_field", + "match_string", + "literal_preprocessing", + "object_preprocessing", + "similarity_score", + "similarity_measure", + "see_also", + "other", + "comment" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/2002/07/owl#Axiom", + "@type": "ClassDefinition" + }, { "name": "MappingRegistry", "definition_uri": "https://w3id.org/sssom/MappingRegistry", @@ -1877,13 +2391,74 @@ "slot_usage": {}, "class_uri": "https://w3id.org/sssom/MappingSetReference", "@type": "ClassDefinition" + }, + { + "name": "ExtensionDefinition", + "definition_uri": "https://w3id.org/sssom/ExtensionDefinition", + "description": "A definition of an extension (non-standard) slot.", + "from_schema": "https://w3id.org/sssom/schema/", + "slots": [ + "extensionDefinition__slot_name", + "extensionDefinition__property", + "extensionDefinition__type_hint" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "slot_name", + "description": "The name of the extension slot.", + "range": "ncname", + "required": true, + "@type": "SlotDefinition" + }, + { + "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).", + "range": "uriorcurie", + "@type": "SlotDefinition" + }, + { + "name": "type_hint", + "description": "Expected type of the values of the extension slot.", + "range": "uriorcurie", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/sssom/ExtensionDefinition", + "@type": "ClassDefinition" + }, + { + "name": "Propagatable", + "definition_uri": "https://w3id.org/sssom/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" + ], + "mappings": [ + "sssom:Propagatable" + ], + "slots": [ + "propagatable__propagated" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "propagated", + "description": "Indicates whether a slot can be propagated from a mapping down to individual mappings.", + "range": "boolean", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/sssom/Propagatable", + "@type": "ClassDefinition" } ], "metamodel_version": "1.7.0", "source_file": "sssom_schema.yaml", - "source_file_date": "2023-07-31T17:42:04", - "source_file_size": 26565, - "generation_date": "2023-07-31T17:42:55", + "source_file_date": "2024-08-04T07:56:31", + "source_file_size": 32305, + "generation_date": "2024-08-05T10:18:22", "@type": "SchemaDefinition", "@context": [ "project/jsonld/sssom_schema.context.jsonld", diff --git a/src/sssom_schema/datamodel/sssom_schema.py b/src/sssom_schema/datamodel/sssom_schema.py index eb2969f5..9367487c 100644 --- a/src/sssom_schema/datamodel/sssom_schema.py +++ b/src/sssom_schema/datamodel/sssom_schema.py @@ -1,5 +1,5 @@ -# Auto generated from sssom_schema.yaml by pythongen.py version: 0.9.0 -# Generation date: 2023-07-31T17:42:59 +# Auto generated from sssom_schema.yaml by pythongen.py version: 0.0.1 +# Generation date: 2024-08-05T10:18:23 # Schema: sssom # # id: https://w3id.org/sssom/schema/ @@ -7,11 +7,11 @@ # license: https://creativecommons.org/publicdomain/zero/1.0/ import dataclasses -import sys import re from jsonasobj2 import JsonObj, as_dict from typing import Optional, List, Union, Dict, ClassVar, Any from dataclasses import dataclass +from datetime import date, datetime from linkml_runtime.linkml_model.meta import EnumDefinition, PermissibleValue, PvFormulaOptions from linkml_runtime.utils.slot import Slot @@ -22,8 +22,8 @@ from linkml_runtime.utils.enumerations import EnumDefinitionImpl from rdflib import Namespace, URIRef from linkml_runtime.utils.curienamespace import CurieNamespace -from linkml_runtime.linkml_model.types import Date, Double, String, Uri, Uriorcurie -from linkml_runtime.utils.metamodelcore import URI, URIorCURIE, XSDDate +from linkml_runtime.linkml_model.types import Boolean, Date, Double, Ncname, String, Uri, Uriorcurie +from linkml_runtime.utils.metamodelcore import Bool, NCName, URI, URIorCURIE, XSDDate metamodel_version = "1.7.0" version = None @@ -43,13 +43,15 @@ SEMAPV = CurieNamespace('semapv', 'https://w3id.org/semapv/vocab/') SKOS = CurieNamespace('skos', 'http://www.w3.org/2004/02/skos/core#') SSSOM = CurieNamespace('sssom', 'https://w3id.org/sssom/') +XSD = CurieNamespace('xsd', 'http://www.w3.org/2001/XMLSchema#') DEFAULT_ = SSSOM # Types class EntityReference(Uriorcurie): - """ A reference to a mapped entity. This is represented internally as a string, and as a resource in RDF """ - type_class_uri = RDFS.Resource + """ A reference to an entity involved in the mapping. + """ + type_class_uri = RDFS["Resource"] type_class_curie = "rdfs:Resource" type_name = "EntityReference" type_model_uri = SSSOM.EntityReference @@ -66,7 +68,7 @@ class MappingSet(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = SSSOM.MappingSet + class_class_uri: ClassVar[URIRef] = SSSOM["MappingSet"] class_class_curie: ClassVar[str] = "sssom:MappingSet" class_name: ClassVar[str] = "mapping set" class_model_uri: ClassVar[URIRef] = SSSOM.MappingSet @@ -99,6 +101,7 @@ class MappingSet(YAMLRoot): issue_tracker: Optional[Union[str, URI]] = None other: Optional[str] = None comment: Optional[str] = None + extension_definitions: Optional[Union[Union[dict, "ExtensionDefinition"], List[Union[dict, "ExtensionDefinition"]]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.mapping_set_id): @@ -198,6 +201,8 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.comment is not None and not isinstance(self.comment, str): self.comment = str(self.comment) + self._normalize_inlined_as_dict(slot_name="extension_definitions", slot_type=ExtensionDefinition, key_name="slot_name", keyed=False) + super().__post_init__(**kwargs) @@ -208,7 +213,7 @@ class Mapping(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = OWL.Axiom + class_class_uri: ClassVar[URIRef] = OWL["Axiom"] class_class_curie: ClassVar[str] = "owl:Axiom" class_name: ClassVar[str] = "mapping" class_model_uri: ClassVar[URIRef] = SSSOM.Mapping @@ -416,6 +421,191 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) +@dataclass +class LiteralMapping(YAMLRoot): + """ + Represents an individual mapping between a literal and an entity. Note that this schema has been created on + 01.08.2023 and is subject to change. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OWL["Axiom"] + class_class_curie: ClassVar[str] = "owl:Axiom" + class_name: ClassVar[str] = "literal mapping" + class_model_uri: ClassVar[URIRef] = SSSOM.LiteralMapping + + literal: str = None + predicate_id: Union[str, EntityReference] = None + object_id: Union[str, EntityReference] = None + mapping_justification: Union[str, EntityReference] = None + literal_datatype: Optional[Union[str, URI]] = None + predicate_label: Optional[str] = None + predicate_modifier: Optional[Union[str, "PredicateModifierEnum"]] = None + object_label: Optional[str] = None + object_category: Optional[str] = None + author_id: Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]] = empty_list() + author_label: Optional[Union[str, List[str]]] = empty_list() + reviewer_id: Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]] = empty_list() + reviewer_label: Optional[Union[str, List[str]]] = empty_list() + creator_id: Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]] = empty_list() + creator_label: Optional[Union[str, List[str]]] = empty_list() + license: Optional[Union[str, URI]] = None + literal_source: Optional[Union[str, EntityReference]] = None + literal_source_version: Optional[str] = None + object_type: Optional[Union[str, "EntityTypeEnum"]] = None + object_source: Optional[Union[str, EntityReference]] = None + object_source_version: Optional[str] = None + mapping_provider: Optional[Union[str, URI]] = None + mapping_source: Optional[Union[str, EntityReference]] = None + mapping_cardinality: Optional[Union[str, "MappingCardinalityEnum"]] = None + mapping_tool: Optional[str] = None + mapping_tool_version: Optional[str] = None + mapping_date: Optional[Union[str, XSDDate]] = None + confidence: Optional[float] = None + object_match_field: Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]] = empty_list() + match_string: Optional[Union[str, List[str]]] = empty_list() + literal_preprocessing: Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]] = empty_list() + object_preprocessing: Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]] = empty_list() + similarity_score: Optional[float] = None + similarity_measure: Optional[str] = None + see_also: Optional[Union[str, List[str]]] = empty_list() + other: Optional[str] = None + comment: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.literal): + self.MissingRequiredField("literal") + if not isinstance(self.literal, str): + self.literal = str(self.literal) + + if self._is_empty(self.predicate_id): + self.MissingRequiredField("predicate_id") + if not isinstance(self.predicate_id, EntityReference): + self.predicate_id = EntityReference(self.predicate_id) + + if self._is_empty(self.object_id): + self.MissingRequiredField("object_id") + if not isinstance(self.object_id, EntityReference): + self.object_id = EntityReference(self.object_id) + + if self._is_empty(self.mapping_justification): + self.MissingRequiredField("mapping_justification") + if not isinstance(self.mapping_justification, EntityReference): + self.mapping_justification = EntityReference(self.mapping_justification) + + if self.literal_datatype is not None and not isinstance(self.literal_datatype, URI): + self.literal_datatype = URI(self.literal_datatype) + + if self.predicate_label is not None and not isinstance(self.predicate_label, str): + self.predicate_label = str(self.predicate_label) + + if self.predicate_modifier is not None and not isinstance(self.predicate_modifier, PredicateModifierEnum): + self.predicate_modifier = PredicateModifierEnum(self.predicate_modifier) + + if self.object_label is not None and not isinstance(self.object_label, str): + self.object_label = str(self.object_label) + + if self.object_category is not None and not isinstance(self.object_category, str): + self.object_category = str(self.object_category) + + if not isinstance(self.author_id, list): + self.author_id = [self.author_id] if self.author_id is not None else [] + self.author_id = [v if isinstance(v, EntityReference) else EntityReference(v) for v in self.author_id] + + if not isinstance(self.author_label, list): + self.author_label = [self.author_label] if self.author_label is not None else [] + self.author_label = [v if isinstance(v, str) else str(v) for v in self.author_label] + + if not isinstance(self.reviewer_id, list): + self.reviewer_id = [self.reviewer_id] if self.reviewer_id is not None else [] + self.reviewer_id = [v if isinstance(v, EntityReference) else EntityReference(v) for v in self.reviewer_id] + + if not isinstance(self.reviewer_label, list): + self.reviewer_label = [self.reviewer_label] if self.reviewer_label is not None else [] + self.reviewer_label = [v if isinstance(v, str) else str(v) for v in self.reviewer_label] + + if not isinstance(self.creator_id, list): + self.creator_id = [self.creator_id] if self.creator_id is not None else [] + self.creator_id = [v if isinstance(v, EntityReference) else EntityReference(v) for v in self.creator_id] + + if not isinstance(self.creator_label, list): + self.creator_label = [self.creator_label] if self.creator_label is not None else [] + self.creator_label = [v if isinstance(v, str) else str(v) for v in self.creator_label] + + if self.license is not None and not isinstance(self.license, URI): + self.license = URI(self.license) + + if self.literal_source is not None and not isinstance(self.literal_source, EntityReference): + self.literal_source = EntityReference(self.literal_source) + + if self.literal_source_version is not None and not isinstance(self.literal_source_version, str): + self.literal_source_version = str(self.literal_source_version) + + if self.object_type is not None and not isinstance(self.object_type, EntityTypeEnum): + self.object_type = EntityTypeEnum(self.object_type) + + if self.object_source is not None and not isinstance(self.object_source, EntityReference): + self.object_source = EntityReference(self.object_source) + + if self.object_source_version is not None and not isinstance(self.object_source_version, str): + self.object_source_version = str(self.object_source_version) + + if self.mapping_provider is not None and not isinstance(self.mapping_provider, URI): + self.mapping_provider = URI(self.mapping_provider) + + if self.mapping_source is not None and not isinstance(self.mapping_source, EntityReference): + self.mapping_source = EntityReference(self.mapping_source) + + if self.mapping_cardinality is not None and not isinstance(self.mapping_cardinality, MappingCardinalityEnum): + self.mapping_cardinality = MappingCardinalityEnum(self.mapping_cardinality) + + if self.mapping_tool is not None and not isinstance(self.mapping_tool, str): + self.mapping_tool = str(self.mapping_tool) + + if self.mapping_tool_version is not None and not isinstance(self.mapping_tool_version, str): + self.mapping_tool_version = str(self.mapping_tool_version) + + if self.mapping_date is not None and not isinstance(self.mapping_date, XSDDate): + self.mapping_date = XSDDate(self.mapping_date) + + if self.confidence is not None and not isinstance(self.confidence, float): + self.confidence = float(self.confidence) + + if not isinstance(self.object_match_field, list): + self.object_match_field = [self.object_match_field] if self.object_match_field is not None else [] + self.object_match_field = [v if isinstance(v, EntityReference) else EntityReference(v) for v in self.object_match_field] + + if not isinstance(self.match_string, list): + self.match_string = [self.match_string] if self.match_string is not None else [] + self.match_string = [v if isinstance(v, str) else str(v) for v in self.match_string] + + if not isinstance(self.literal_preprocessing, list): + self.literal_preprocessing = [self.literal_preprocessing] if self.literal_preprocessing is not None else [] + self.literal_preprocessing = [v if isinstance(v, EntityReference) else EntityReference(v) for v in self.literal_preprocessing] + + if not isinstance(self.object_preprocessing, list): + self.object_preprocessing = [self.object_preprocessing] if self.object_preprocessing is not None else [] + self.object_preprocessing = [v if isinstance(v, EntityReference) else EntityReference(v) for v in self.object_preprocessing] + + if self.similarity_score is not None and not isinstance(self.similarity_score, float): + self.similarity_score = float(self.similarity_score) + + if self.similarity_measure is not None and not isinstance(self.similarity_measure, str): + self.similarity_measure = str(self.similarity_measure) + + if not isinstance(self.see_also, list): + self.see_also = [self.see_also] if self.see_also is not None else [] + self.see_also = [v if isinstance(v, str) else str(v) for v in self.see_also] + + if self.other is not None and not isinstance(self.other, str): + self.other = str(self.other) + + if self.comment is not None and not isinstance(self.comment, str): + self.comment = str(self.comment) + + super().__post_init__(**kwargs) + + @dataclass class MappingRegistry(YAMLRoot): """ @@ -423,7 +613,7 @@ class MappingRegistry(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = SSSOM.MappingRegistry + class_class_uri: ClassVar[URIRef] = SSSOM["MappingRegistry"] class_class_curie: ClassVar[str] = "sssom:MappingRegistry" class_name: ClassVar[str] = "mapping registry" class_model_uri: ClassVar[URIRef] = SSSOM.MappingRegistry @@ -475,7 +665,7 @@ class MappingSetReference(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = SSSOM.MappingSetReference + class_class_uri: ClassVar[URIRef] = SSSOM["MappingSetReference"] class_class_curie: ClassVar[str] = "sssom:MappingSetReference" class_name: ClassVar[str] = "mapping set reference" class_model_uri: ClassVar[URIRef] = SSSOM.MappingSetReference @@ -511,6 +701,59 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) +@dataclass +class ExtensionDefinition(YAMLRoot): + """ + A definition of an extension (non-standard) slot. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = SSSOM["ExtensionDefinition"] + class_class_curie: ClassVar[str] = "sssom:ExtensionDefinition" + class_name: ClassVar[str] = "extension definition" + class_model_uri: ClassVar[URIRef] = SSSOM.ExtensionDefinition + + slot_name: Union[str, NCName] = None + property: Optional[Union[str, URIorCURIE]] = None + type_hint: Optional[Union[str, URIorCURIE]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.slot_name): + self.MissingRequiredField("slot_name") + if not isinstance(self.slot_name, NCName): + self.slot_name = NCName(self.slot_name) + + if self.property is not None and not isinstance(self.property, URIorCURIE): + self.property = URIorCURIE(self.property) + + if self.type_hint is not None and not isinstance(self.type_hint, URIorCURIE): + self.type_hint = URIorCURIE(self.type_hint) + + super().__post_init__(**kwargs) + + +@dataclass +class Propagatable(YAMLRoot): + """ + Metamodel extension class to describe slots whose value can be propagated down from the MappingSet class to the + Mapping class. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = SSSOM["Propagatable"] + class_class_curie: ClassVar[str] = "sssom:Propagatable" + class_name: ClassVar[str] = "Propagatable" + class_model_uri: ClassVar[URIRef] = SSSOM.Propagatable + + propagated: Optional[Union[bool, Bool]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.propagated is not None and not isinstance(self.propagated, Bool): + self.propagated = Bool(self.propagated) + + super().__post_init__(**kwargs) + + # Enumerations class EntityTypeEnum(EnumDefinitionImpl): @@ -521,43 +764,55 @@ class EntityTypeEnum(EnumDefinitionImpl): @classmethod def _addvals(cls): setattr(cls, "owl class", - PermissibleValue(text="owl class", - meaning=OWL.Class) ) + PermissibleValue( + text="owl class", + meaning=OWL["Class"])) setattr(cls, "owl object property", - PermissibleValue(text="owl object property", - meaning=OWL.ObjectProperty) ) + PermissibleValue( + text="owl object property", + meaning=OWL["ObjectProperty"])) setattr(cls, "owl data property", - PermissibleValue(text="owl data property", - meaning=OWL.DataProperty) ) + PermissibleValue( + text="owl data property", + meaning=OWL["DataProperty"])) setattr(cls, "owl annotation property", - PermissibleValue(text="owl annotation property", - meaning=OWL.AnnotationProperty) ) + PermissibleValue( + text="owl annotation property", + meaning=OWL["AnnotationProperty"])) setattr(cls, "owl named individual", - PermissibleValue(text="owl named individual", - meaning=OWL.NamedIndividual) ) + PermissibleValue( + text="owl named individual", + meaning=OWL["NamedIndividual"])) setattr(cls, "skos concept", - PermissibleValue(text="skos concept", - meaning=SKOS.Concept) ) + PermissibleValue( + text="skos concept", + meaning=SKOS["Concept"])) setattr(cls, "rdfs resource", - PermissibleValue(text="rdfs resource", - meaning=RDFS.Resource) ) + PermissibleValue( + text="rdfs resource", + meaning=RDFS["Resource"])) setattr(cls, "rdfs class", - PermissibleValue(text="rdfs class", - meaning=RDFS.Class) ) + PermissibleValue( + text="rdfs class", + meaning=RDFS["Class"])) setattr(cls, "rdfs literal", - PermissibleValue(text="rdfs literal", - meaning=RDFS.Literal) ) + PermissibleValue( + text="rdfs literal", + meaning=RDFS["Literal"])) setattr(cls, "rdfs datatype", - PermissibleValue(text="rdfs datatype", - meaning=RDFS.Datatype) ) + PermissibleValue( + text="rdfs datatype", + meaning=RDFS["Datatype"])) setattr(cls, "rdf property", - PermissibleValue(text="rdf property", - meaning=RDF.Property) ) + PermissibleValue( + text="rdf property", + meaning=RDF["Property"])) class PredicateModifierEnum(EnumDefinitionImpl): - Not = PermissibleValue(text="Not", - description="Negating the mapping predicate. The meaning of the triple becomes subject_id is not a predicate_id match to object_id.") + Not = PermissibleValue( + text="Not", + description="""Negating the mapping predicate. The meaning of the triple becomes subject_id is not a predicate_id match to object_id.""") _defn = EnumDefinition( name="PredicateModifierEnum", @@ -572,23 +827,29 @@ class MappingCardinalityEnum(EnumDefinitionImpl): @classmethod def _addvals(cls): setattr(cls, "1:1", - PermissibleValue(text="1:1", - description="One-to-one mapping") ) + PermissibleValue( + text="1:1", + description="One-to-one mapping")) setattr(cls, "1:n", - PermissibleValue(text="1:n", - description="One-to-many mapping") ) + PermissibleValue( + text="1:n", + description="One-to-many mapping")) setattr(cls, "n:1", - PermissibleValue(text="n:1", - description="Many-to-one mapping") ) + PermissibleValue( + text="n:1", + description="Many-to-one mapping")) setattr(cls, "1:0", - PermissibleValue(text="1:0", - description="One-to-none mapping") ) + PermissibleValue( + text="1:0", + description="One-to-none mapping")) setattr(cls, "0:1", - PermissibleValue(text="0:1", - description="None-to-one mapping") ) + PermissibleValue( + text="0:1", + description="None-to-one mapping")) setattr(cls, "n:n", - PermissibleValue(text="n:n", - description="Many-to-many mapping") ) + PermissibleValue( + text="n:n", + description="Many-to-many mapping")) # Slots class slots: @@ -633,6 +894,12 @@ class slots: slots.subject_id = Slot(uri=OWL.annotatedSource, name="subject_id", curie=OWL.curie('annotatedSource'), model_uri=SSSOM.subject_id, domain=None, range=Union[str, EntityReference]) +slots.literal = Slot(uri=OWL.annotatedTarget, name="literal", curie=OWL.curie('annotatedTarget'), + model_uri=SSSOM.literal, domain=None, range=str, mappings = [OWL["annotatedSource"]]) + +slots.literal_datatype = Slot(uri=RDF.datatype, name="literal_datatype", curie=RDF.curie('datatype'), + model_uri=SSSOM.literal_datatype, domain=None, range=Optional[Union[str, URI]]) + slots.subject_label = Slot(uri=SSSOM.subject_label, name="subject_label", curie=SSSOM.curie('subject_label'), model_uri=SSSOM.subject_label, domain=None, range=Optional[str]) @@ -712,6 +979,12 @@ class slots: slots.subject_source_version = Slot(uri=SSSOM.subject_source_version, name="subject_source_version", curie=SSSOM.curie('subject_source_version'), model_uri=SSSOM.subject_source_version, domain=None, range=Optional[str]) +slots.literal_source = Slot(uri=SSSOM.literal_source, name="literal_source", curie=SSSOM.curie('literal_source'), + model_uri=SSSOM.literal_source, domain=None, range=Optional[Union[str, EntityReference]]) + +slots.literal_source_version = Slot(uri=SSSOM.literal_source_version, name="literal_source_version", curie=SSSOM.curie('literal_source_version'), + model_uri=SSSOM.literal_source_version, domain=None, range=Optional[str]) + slots.object_source = Slot(uri=SSSOM.object_source, name="object_source", curie=SSSOM.curie('object_source'), model_uri=SSSOM.object_source, domain=None, range=Optional[Union[str, EntityReference]]) @@ -760,6 +1033,9 @@ class slots: slots.object_preprocessing = Slot(uri=SSSOM.object_preprocessing, name="object_preprocessing", curie=SSSOM.curie('object_preprocessing'), model_uri=SSSOM.object_preprocessing, domain=None, range=Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]]) +slots.literal_preprocessing = Slot(uri=SSSOM.literal_preprocessing, name="literal_preprocessing", curie=SSSOM.curie('literal_preprocessing'), + model_uri=SSSOM.literal_preprocessing, domain=None, range=Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]]) + slots.curation_rule = Slot(uri=SSSOM.curation_rule, name="curation_rule", curie=SSSOM.curie('curation_rule'), model_uri=SSSOM.curation_rule, domain=None, range=Optional[Union[Union[str, EntityReference], List[Union[str, EntityReference]]]]) @@ -772,6 +1048,12 @@ class slots: slots.semantic_similarity_measure = Slot(uri=SSSOM.semantic_similarity_measure, name="semantic_similarity_measure", curie=SSSOM.curie('semantic_similarity_measure'), model_uri=SSSOM.semantic_similarity_measure, domain=None, range=Optional[str]) +slots.similarity_score = Slot(uri=SSSOM.similarity_score, name="similarity_score", curie=SSSOM.curie('similarity_score'), + model_uri=SSSOM.similarity_score, domain=None, range=Optional[float]) + +slots.similarity_measure = Slot(uri=SSSOM.similarity_measure, name="similarity_measure", curie=SSSOM.curie('similarity_measure'), + model_uri=SSSOM.similarity_measure, domain=None, range=Optional[str]) + slots.issue_tracker_item = Slot(uri=SSSOM.issue_tracker_item, name="issue_tracker_item", curie=SSSOM.curie('issue_tracker_item'), model_uri=SSSOM.issue_tracker_item, domain=None, range=Optional[Union[str, EntityReference]]) @@ -787,5 +1069,20 @@ class slots: slots.comment = Slot(uri=RDFS.comment, name="comment", curie=RDFS.curie('comment'), model_uri=SSSOM.comment, domain=None, range=Optional[str]) +slots.extension_definitions = Slot(uri=SSSOM.extension_definitions, name="extension_definitions", curie=SSSOM.curie('extension_definitions'), + model_uri=SSSOM.extension_definitions, domain=None, range=Optional[Union[Union[dict, ExtensionDefinition], List[Union[dict, ExtensionDefinition]]]]) + +slots.extensionDefinition__slot_name = Slot(uri=SSSOM.slot_name, name="extensionDefinition__slot_name", curie=SSSOM.curie('slot_name'), + model_uri=SSSOM.extensionDefinition__slot_name, domain=None, range=Union[str, NCName]) + +slots.extensionDefinition__property = Slot(uri=SSSOM.property, name="extensionDefinition__property", curie=SSSOM.curie('property'), + model_uri=SSSOM.extensionDefinition__property, domain=None, range=Optional[Union[str, URIorCURIE]]) + +slots.extensionDefinition__type_hint = Slot(uri=SSSOM.type_hint, name="extensionDefinition__type_hint", curie=SSSOM.curie('type_hint'), + model_uri=SSSOM.extensionDefinition__type_hint, domain=None, range=Optional[Union[str, URIorCURIE]]) + +slots.propagatable__propagated = Slot(uri=SSSOM.propagated, name="propagatable__propagated", curie=SSSOM.curie('propagated'), + model_uri=SSSOM.propagatable__propagated, domain=None, range=Optional[Union[bool, Bool]]) + slots.mapping_set_license = Slot(uri=DCTERMS.license, name="mapping set_license", curie=DCTERMS.curie('license'), model_uri=SSSOM.mapping_set_license, domain=MappingSet, range=Union[str, URI]) \ No newline at end of file