Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mapping-commons/sssom
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.9.3
Choose a base ref
...
head repository: mapping-commons/sssom
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 11,656 additions and 6,098 deletions.
  1. +23 −1 .github/ISSUE_TEMPLATE/new_sssom_element.md
  2. +10 −2 .github/pull_request_template.md
  3. +4 −3 .github/workflows/deploy_documentation.yml
  4. +31 −0 .github/workflows/qc.yml
  5. +76 −4 CHANGELOG.md
  6. +102 −0 CITATION.cff
  7. +54 −0 CONTRIBUTING.md
  8. +15 −5 Makefile
  9. +17 −6 README.md
  10. +20 −14 examples/embedded/foodie-inc-2022-05-01.sssom.tsv
  11. +56 −1,492 examples/embedded/mp-hp-exact-0.0.1.sssom.tsv
  12. +6 −6 examples/external/example1.sssom.tsv
  13. +21 −11 examples/external/example1.sssom.yml
  14. +43 −1,485 examples/external/mp-hp-exact-0.0.1.sssom.tsv
  15. +12 −7 examples/external/mp-hp-exact-0.0.1.sssom.yml
  16. +12 −0 examples/schema/composite-entities.sssom.tsv
  17. +14 −0 examples/schema/curation_rule.sssom.tsv
  18. +14 −0 examples/schema/curation_rule_text.sssom.tsv
  19. +18 −0 examples/schema/curation_rule_text2.sssom.tsv
  20. +14 −0 examples/schema/curie_map.sssom.tsv
  21. +23 −0 examples/schema/extension-slots.sssom.tsv
  22. +15 −0 examples/schema/issue_tracker.sssom.tsv
  23. +14 −0 examples/schema/issue_tracker_item.sssom.tsv
  24. +9 −0 examples/schema/literals.sssom.tsv
  25. +16 −0 examples/schema/no_term_found.sssom.tsv
  26. +11 −0 examples/schema/predicate-types.sssom.tsv
  27. +15 −0 examples/schema/similarity_score.sssom.tsv
  28. +41 −18 mkdocs.yml
  29. +1,657 −1,141 poetry.lock
  30. +31 −1 project.Makefile
  31. BIN project/excel/sssom_schema.xlsx
  32. +41 −4 project/graphql/sssom_schema.graphql
  33. +191 −34 project/jsonld/sssom_schema.context.jsonld
  34. +907 −84 project/jsonld/sssom_schema.jsonld
  35. +744 −468 project/jsonschema/sssom_schema.schema.json
  36. +268 −157 project/owl/sssom_schema.owl.ttl
  37. +3 −3 project/prefixmap/sssom_schema.yaml
  38. +36 −2 project/protobuf/sssom_schema.proto
  39. +477 −207 project/shacl/sssom_schema.shacl.ttl
  40. +82 −21 project/shex/sssom_schema.shex
  41. +376 −53 project/sqlschema/sssom_schema.sql
  42. +6 −4 pyproject.toml
  43. +123 −0 src/doc-templates/class.md.jinja2
  44. +59 −0 src/doc-templates/class_diagram.md.jinja2
  45. +78 −0 src/doc-templates/common_metadata.md.jinja2
  46. +173 −0 src/doc-templates/frontpage.md.jinja2
  47. +119 −0 src/doc-templates/index.md.jinja2
  48. +103 −0 src/doc-templates/slot.md.jinja2
  49. +81 −0 src/docs/5star-mappings.md
  50. +0 −18 src/docs/about.md
  51. +111 −0 src/docs/chaining-rules.md
  52. +0 −4 src/docs/code_of_conduct.md
  53. +0 −11 src/docs/contact.md
  54. +1 −1 src/docs/contributing.md
  55. +74 −0 src/docs/create-mapping-commons.md
  56. +0 −23 src/docs/credits.md
  57. +20 −66 src/docs/editors.md
  58. +12 −0 src/docs/events/ccb2022.md
  59. 0 src/docs/{ → events}/mc2021.md
  60. +53 −0 src/docs/events/mc2023.md
  61. +10 −0 src/docs/events/oboacademy2022.md
  62. +14 −0 src/docs/events/ohdsi2022.md
  63. +17 −0 src/docs/events/ohdsi2023.md
  64. +17 −0 src/docs/events/om2022.md
  65. +9 −0 src/docs/events/pistoia2022.md
  66. +7 −0 src/docs/events/wsbo2021.md
  67. +51 −0 src/docs/funding.md
  68. +3 −0 src/docs/glossary.md
  69. +0 −17 src/docs/home.md
  70. BIN src/docs/images/sssom-banner.png
  71. +66 −0 src/docs/introduction.md
  72. +21 −0 src/docs/mapping-commons.md
  73. +118 −0 src/docs/mapping-justifications.md
  74. +172 −0 src/docs/mapping-predicates.md
  75. +119 −0 src/docs/matching-tool-implementation-guide.md
  76. +99 −6 src/docs/presentations.md
  77. +8 −0 src/docs/related-documentation.md
  78. BIN src/docs/resources/sssom_5star_mappings.pdf
  79. +5 −0 src/docs/spec-formats-json.md
  80. +99 −0 src/docs/spec-formats-owl.md
  81. +328 −0 src/docs/spec-formats-tsv.md
  82. +9 −0 src/docs/spec-formats.md
  83. +31 −0 src/docs/spec-intro.md
  84. +193 −0 src/docs/spec-model.md
  85. +0 −541 src/docs/spec.md
  86. +119 −0 src/docs/toolkit.md
  87. +27 −0 src/docs/training.md
  88. +26 −31 src/docs/tutorial.md
  89. +73 −0 src/docs/tutorials/omop-mappings.md
  90. +2 −3 src/docs/usecases.md
  91. +2 −1 src/docs/workshops.md
  92. +332 −0 src/sssom_schema/context/sssom_schema.context.jsonld
  93. +2,437 −0 src/sssom_schema/context/sssom_schema.jsonld
  94. +286 −77 src/sssom_schema/datamodel/sssom_schema.py
  95. +424 −66 src/sssom_schema/schema/sssom_schema.yaml
24 changes: 23 additions & 1 deletion .github/ISSUE_TEMPLATE/new_sssom_element.md
Original file line number Diff line number Diff line change
@@ -22,4 +22,26 @@ xsd:string
**Description**
(Provide a human-readable description that clarifies the intended use of the metadata element.)

Example description.
Example description.

**Complete example to a SSSOM file with this element**
(This example can be given as a markdown table or a linked SSSOM file, feel free to edit the markdown table below)

```
# curie_map:
# HP: http://purl.obolibrary.org/obo/FBbt_
# MP: http://purl.obolibrary.org/obo/UBERON_
# owl: http://www.w3.org/2002/07/owl#
# rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
# rdfs: http://www.w3.org/2000/01/rdf-schema#
# semapv: https://w3id.org/semapv/vocab/
# skos: http://www.w3.org/2004/02/skos/core#
# sssom: https://w3id.org/sssom/
# license: https://w3id.org/sssom/license/unspecified
# mapping_set_id: https://w3id.org/sssom/mappings/ac9e1878-73f4-4767-8402-a6c40e1b0835
```

| subject_id | predicate_id | object_id | mapping_justification | element_id_example |
| ----------- | --------------- | ----------- | ----------------------- | ------------------- |
| HP:0009124 | skos:exactMatch | MP:0000003 | semapv:LexicalMatching | YOUR EXAMPLE VALUE |
| HP:0008551 | skos:exactMatch | MP:0000018 | semapv:LexicalMatching | YOUR EXAMPLE VALUE |
12 changes: 10 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -3,6 +3,14 @@ Resolves [#ISSUE, #ISSUE]
- [ ] `docs/` have been added/updated if necessary
- [ ] `make test` has been run locally
- [ ] tests have been added/updated (if applicable)
- [ ] [CHANGELOG.md](https://github.com/mapping-commons/sssom/blob/0.9.0/CHANGELOG.md) has been updated.
- [ ] [CHANGELOG.md](https://github.com/mapping-commons/sssom/blob/master/CHANGELOG.md) has been updated.

[Description, mentioning at least relevant #ISSUE and how it was addressed. A bulleted list of all changes performed by the PR is is helpful.]
If you are proposing a change to the SSSOM metadata model, you must

- [ ] provide a full, working and valid example in `examples/`
- [ ] provide a link to the related GitHub issue in the `see_also` field of the linkml model
- [ ] provide a link to a valid example in the `see_also` field of the linkml model
- [ ] run SSSOM-Py test suite against the updated model


[Add a description, mentioning at least relevant #ISSUE and how it was addressed. A bulleted list of all changes performed by the PR is is helpful.]
7 changes: 4 additions & 3 deletions .github/workflows/deploy_documentation.yml
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ on:
paths:
- 'src/docs/*'
- 'src/sssom_schema/schema/sssom_schema.yaml'
- 'mkdocs.yml'


# A workflow run is made up of one or more jobs that can run sequentially or in parallel
@@ -70,6 +71,6 @@ jobs:
run: |
mkdir docs
touch docs/.nojekyll
cp -r src/docs/* docs/
poetry run gen-doc -d docs src/sssom_schema/schema/sssom_schema.yaml
poetry run mkdocs gh-deploy
make gendoc
([ ! -f docs/about.md ] && cp src/docs/about.md docs/) || true
make mkd-gh-deploy
31 changes: 31 additions & 0 deletions .github/workflows/qc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Basic ODK workflow

name: CI

# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
sssom_validation:
runs-on: ubuntu-latest
container: obolibrary/odkfull:v1.4
steps:
- name: Install latest SSSOM
env:
DEFAULT_BRANCH: master
run: pip install --upgrade pip && pip install -U sssom sssom-schema
- uses: actions/checkout@v2
- name: Run Mapping QC checks
env:
DEFAULT_BRANCH: master
run: make validate_mappings

80 changes: 76 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,80 @@
# Changelog for SSSOM

## SSSOM version 1.0
- Changed `match_type` logic to `mapping_justification` ([issue](https://github.com/mapping-commons/sssom/issues/150)).
## Next

## SSSOM version 0.9
- Add `composed entity expression` as a new value in the `EntityType` enumeration ([issue](https://github.com/mapping-commons/sssom/issues/402)).
- Add `predicate_type` slot (previously defined but unused) to the `Mapping` and `MappingSet` classes ([issue](https://github.com/mapping-commons/sssom/issues/404)).
- TBD

## SSSOM version 1.0.0

- Add the concept of "propagatable slots".
- Add the `curie_map` to the model (instead of it being a specificity of the SSSOM/TSV format).
- Add the concept of "extension slots".
- Add the concept of "literal mappings".
- Add the entity reference `sssom:NoTermFound` to express the concept of an "unmapped entity" ([issue](https://github.com/mapping-commons/sssom/issues/28))
- Replace `semantic_similarity_score` with `similarity_score` and `semantic_similarity_measure` with `similarity_measure` in the data model ([issue](https://github.com/mapping-commons/sssom/issues/385))

## SSSOM version 0.15.1

- Add recommendation to sort the keys in the YAML metadata block.
- Double-typed slots explicitly constrained to the [0.0,1.0] range, as per their description.

## SSSOM version 0.15.0

- Add issue_tracker_item and issue_tracker [model elements](https://github.com/mapping-commons/sssom/pull/259).

## SSSOM version 0.13.0

- The necessity of the "canonical column ordering" was downgraded from MUST to SHOULD (https://github.com/mapping-commons/sssom/pull/285)
- Documents clearly that built-in prefixes MUST NOT be redefined (https://github.com/mapping-commons/sssom/pull/285)

## SSSOM version 0.11.0

- see https://github.com/mapping-commons/sssom/releases/tag/0.11.0

### Summary

#### New elements:
- `mapping_set_title` to capture a human readable title for a mapping set
- `registry_title` and `registry_description` to capture the human readable title and description of an SSSOM mapping set registry
- `curation_rule` to capture a (potentially) complex (set of) condition(s) executed by an agent (usually human) that led to the establishment of a mapping.

#### Updated elements:
- Adding mapping_source slot to Mapping by @matentzn in #230
- Improve documentation for `subject_category` and `object_category` elements

#### Documentation
- Compiled a list of all SSSOM talks: https://mapping-commons.github.io/sssom/presentations/
- Document chaining rules: https://mapping-commons.github.io/sssom/chaining_rules/

#### Quality control and Technical infrastructure

- Make adding a concrete SSSOM example part of the new element request
- Adding QC checks for example SSSOM files hosted in the repo

## SSSOM version 0.10.1

- see https://github.com/mapping-commons/sssom/releases/tag/0.10.1

## SSSOM version 0.9.4

- see https://github.com/mapping-commons/sssom/releases/tag/0.9.4

## SSSOM version 0.9.3

- see https://github.com/mapping-commons/sssom/releases/tag/0.9.3
- Major change: Changed `match_type` logic to `mapping_justification` ([issue](https://github.com/mapping-commons/sssom/issues/150)).


## SSSOM version 0.9.2

- see https://github.com/mapping-commons/sssom/releases/tag/0.9.2

## SSSOM version 0.9.1

- see https://github.com/mapping-commons/sssom/releases/tag/0.9.1

## SSSOM version 0.9.0
- Initial release
- see https://github.com/mapping-commons/sssom/releases/tag/0.9.0
- see https://github.com/mapping-commons/sssom/releases/tag/0.9.0
102 changes: 102 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
cff-version: '1.1.0'
message: 'Please cite the following works when using this software.'
abstract: "<jats:title>Abstract</jats:title>\n <jats:p>Despite progress in the development of standards for describing and exchanging scientific information, the lack of easy-to-use standards for mapping between different representations of the same or similar objects in different databases poses a major impediment to data integration and interoperability. Mappings often lack the metadata needed to be correctly interpreted and applied. For example, are two terms equivalent or merely related? Are they narrow or broad matches? Or are they associated in some other way? Such relationships between the mapped terms are often not documented, which leads to incorrect assumptions and makes them hard to use in scenarios that require a high degree of precision (such as diagnostics or risk prediction). Furthermore, the lack of descriptions of how mappings were done makes it hard to combine and reconcile mappings, particularly curated and automated ones. We have developed the Simple Standard for Sharing Ontological Mappings (SSSOM) which addresses these problems by: (i) Introducing a machine-readable and extensible vocabulary to describe metadata that makes imprecision, inaccuracy and incompleteness in mappings explicit. (ii) Defining an easy-to-use simple table-based format that can be integrated into existing data science pipelines without the need to parse or query ontologies, and that integrates seamlessly with Linked Data principles. (iii) Implementing open and community-driven collaborative workflows that are designed to evolve the standard continuously to address changing requirements and mapping practices. (iv) Providing reference tools and software libraries for working with the standard. In this paper, we present the SSSOM standard, describe several use cases in detail and survey some of the existing work on standardizing the exchange of mappings, with the goal of making mappings Findable, Accessible, Interoperable and Reusable (FAIR). The SSSOM specification can be found at http://w3id.org/sssom/spec.</jats:p>\n <jats:p>Database URL: http://w3id.org/sssom/spec</jats:p>"
authors:
- family-names: 'Matentzoglu'
given-names: 'Nicolas'
- family-names: 'Balhoff'
given-names: 'James P'
- family-names: 'Bello'
given-names: 'Susan M'
- family-names: 'Bizon'
given-names: 'Chris'
- family-names: 'Brush'
given-names: 'Matthew'
- family-names: 'Callahan'
given-names: 'Tiffany J'
- family-names: 'Chute'
given-names: 'Christopher G'
- family-names: 'Duncan'
given-names: 'William D'
- family-names: 'Evelo'
given-names: 'Chris T'
- family-names: 'Gabriel'
given-names: 'Davera'
- family-names: 'Graybeal'
given-names: 'John'
- family-names: 'Gray'
given-names: 'Alasdair'
- family-names: 'Gyori'
given-names: 'Benjamin M'
- family-names: 'Haendel'
given-names: 'Melissa'
- family-names: 'Harmse'
given-names: 'Henriette'
- family-names: 'Harris'
given-names: 'Nomi L'
- family-names: 'Harrow'
given-names: 'Ian'
- family-names: 'Hegde'
given-names: 'Harshad B'
- family-names: 'Hoyt'
given-names: 'Amelia L'
- family-names: 'Hoyt'
given-names: 'Charles T'
- family-names: 'Jiao'
given-names: 'Dazhi'
- family-names: 'Jiménez-Ruiz'
given-names: 'Ernesto'
- family-names: 'Jupp'
given-names: 'Simon'
- family-names: 'Kim'
given-names: 'Hyeongsik'
- family-names: 'Koehler'
given-names: 'Sebastian'
- family-names: 'Liener'
given-names: 'Thomas'
- family-names: 'Long'
given-names: 'Qinqin'
- family-names: 'Malone'
given-names: 'James'
- family-names: 'McLaughlin'
given-names: 'James A'
- family-names: 'McMurry'
given-names: 'Julie A'
- family-names: 'Moxon'
given-names: 'Sierra'
- family-names: 'Munoz-Torres'
given-names: 'Monica C'
- family-names: 'Osumi-Sutherland'
given-names: 'David'
- family-names: 'Overton'
given-names: 'James A'
- family-names: 'Peters'
given-names: 'Bjoern'
- family-names: 'Putman'
given-names: 'Tim'
- family-names: 'Queralt-Rosinach'
given-names: 'Núria'
- family-names: 'Shefchek'
given-names: 'Kent'
- family-names: 'Solbrig'
given-names: 'Harold'
- family-names: 'Thessen'
given-names: 'Anne'
- family-names: 'Tudorache'
given-names: 'Tania'
- family-names: 'Vasilevsky'
given-names: 'Nicole'
- family-names: 'Wagner'
given-names: 'Alex H'
- family-names: 'Mungall'
given-names: 'Christopher J'
doi: '10.1093/database/baac035'
identifiers:
- type: 'doi'
value: '10.1093/database/baac035'
- type: 'url'
value: 'http://dx.doi.org/10.1093/database/baac035'
- type: 'other'
value: 'urn:issn:1758-0463'
title: 'A Simple Standard for Sharing Ontological Mappings (SSSOM)'
url: 'http://dx.doi.org/10.1093/database/baac035'
54 changes: 54 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ The following is a set of guidelines for contributing to SSSOM. They are derived
* [Suggesting Enhancements](#suggesting-enhancements)
* [Your First Code Contribution](#your-first-code-contribution)
* [Pull Requests](#pull-requests)
* [Local Testing](#local-testing)

[Styleguides](#styleguides)
* [Git Commit Messages](#git-commit-messages)
@@ -100,6 +101,59 @@ Please follow these steps to have your contribution considered by the maintainer

While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted.

### Local testing

Contributors are strongly advised to run the test suite locally even before submitting a pull request. This requires a working Python environment that includes a working version of Poetry.

Prepare the testing environment by running:

```sh
$ make install
```

This only needs to be run once after cloning the repository. After that, the test suite can be run anytime with

```sh
$ make test
```

Furthermore, any change to the LinkML model should also be tested against SSSOM-Py. To do so:

1. In the current `sssom` repository, build the Python files derived from the LinkML:

```sh
$ make all
```

2. Clone the SSSOM-Py repository somewhere (outside of your current checkout of `sssom`):

```sh
$ git clone https://github.com/mapping-commons/sssom-py.git
```

3. Initialise the Poetry environment inside the newly cloned SSSOM-Py repository:

```sh
$ poetry install
```

(Beware that SSSOM-Py does not support Python 3.12, so if that is your default Python version, you may need to explicitly require that Python < 3.12 be used instead, e.g. with `poetry env use 3.11`.)

4. Forcefully install your _local_ version of `sssom-schema` in the newly initialised environment:

```sh
$ poetry run python -m pip install /path/to/your/sssom/repository
```

You may get a warning about “incompatible sssom-schema versions”; this is due to the fact that your local copy of `sssom` has a version number set to `0.0.0` (the “real” version number is set at release time, when the package is published to PyPI) and can be safely ignored.

5. Run SSSOM-Py’s test suite:

```sh
$ poetry run tox -e py
```


## Styleguides

### Git Commit Messages
Loading