Releases: INCATools/ontology-development-kit
Releases · INCATools/ontology-development-kit
ODK 1.4 (February 2023)
Update instructions
https://oboacademy.github.io/obook/howto/odk-update/
Changes from ODK 1.3.1 to 1.4
A full record of all changes can be seen here.
New and updated tooling
- New ROBOT Version 1.9.3
- A lot of updated python tools, including OAK (0.1.71), SSSOM tools (0.3.22), LinkML (1.4.4) and curies (0.4.2).
ghis now installed in ODK, which means that GitHub workflows can be run directly through ODK. For example, try out the newpublic_releaseworkflow which automatically creates a GitHub release for you.- A full list of all available python tools and there vesions is available here
New configuration options
- Making the
uribaseconfigurable. You can now set the URI base in yourmyont-odk.yamlfile to something different from http://purl.obolibrary.org/obo/, which enables developers from outside OBO to use ODK. Note that there is no guarantee that you can export your ontology to the OBO file format of you customise yourbaseurithis way! import_component_format: You can now configure the format in which your imports and components are serialised. For example, rather than owl (RDFXML), which used to be the default, you can set this option to ofn. For a complete reference see https://robot.obolibrary.org/convert.mirror_type: You can define the type of the mirror for each import. Supported: base, custom, no_mirror.release_use_reasoner: If false, no reasoning is performed for generating release files. This is only relevant for building application ontologies, where all components are already fully classified.sparql_test_on: You can define the list of input files to run the custom SPARQL queries. Supported: edit, and any release artefact, e.g myont-base.owl (example).use_edit_file_imports: If TRUE, use whatever imports you have in the edit file to create the release (default). If FALSE, components (and imports) are merged into the release independent of whether they are mentioned in the edit file or not. This can help for example in cases where import modules are so large, they cannot be checked into version control.- The
cioption now takesgitlab-cias a value, which sets your repo up with basic Continuous Integration Testing for GitLab.
Makefile workflows
- Adding new
make reason_testcommand (pull, issue) - Adding intermediate artefact
$(TMPDIR)/$(ONT)-preprocess.owlto the release workflow which enable the centralisation of preprocessing in a single make step. Basically, rather than creating release artefacts directly from the editors file (e.g. bfo-edit.owl), we add intermediate step from which all releases are derived. This intermediate can then be customised by the user (pull, issue) - Introduces an experimental new release called "base-plus", which includes the inferred and non-redundant classification of the ontology. This is highly experimental and may be removed in a future release of ODK. The new goal is much more rigorous in removing axioms from other ontologies as well. The old base file can now be exported as an "editors release" instead (pull, issue).
- Introduces the option of skipping the use of reasoner during the release process (important for application ontologies), (pull, issue)
- Introduces a new mode that enable the use of ODK entirely without owl:imports in the edit file (this is great in case we want to use the ODK workflows but not check in any files, imports or components, into version control, like huge application ontologies), (pull, issue).
- Adds a feature to directly support ROBOT templates in components (example). Templates need to be activates with the project-level
use_templates: TRUEoption, and can then be used to define components, like in the example. - Adds an option to do a
public_releaseon Github which creates a GitHub release, tags it, and uploads release artefacts. - Adds a
release_diffworkflow which creates a simple markdown report between the latest release and the current one. - Adds a feature to directly support SSSOM mapping files, both in components and as standalone (example). This allows to curate, for example, SSSOM mapping files in tables and them release them as part of the general release process. It also allows extracting mappings from inside the Ontology automatically using the SSSOM toolkit.
- Changes in the
src/ontology/run.shwrapper script:- It is now possible to execute the Docker image through Singularity.
- The
IMAGEvariable, which can used to specify an alternative ODK image, has been renamed toODK_IMAGE. - A new variable
ODK_TAGhas been introduced, allowing to specify an alternative tag (default islatest). A tag may also be specified directly as part of theODK_IMAGEvariable (as inODK_IMAGE=odkfull:v1.3.1). - A new variable
ODK_BINDShas been introduced, allowing to specify extra bindings between a directory on the host computer and a directory inside the Docker container. - Variables used by the
run.shscript can now be set in asrc/ontology/run.sh.conffile, which will be sourced by the wrapper script. - With the config file option
use_env_file_docker, if true, you can pass your local environment to the docker container. It is strongly advised to addrun.sh.envto.gitignorebefore using this feature. Committing your environment to git may reveal passcodes and other private information!
The GitHub issues dealt with as part of this release
- Fix redundant filter in sparql queries by @anitacaron in #633
- Add docker requirement to top-level README by @kltm in #635
- Update to latest relation-graph by @balhoff in #634
- Make run.sh Java Option handling a bit nicer by @matentzn in #616
- Enable use of singularity as an option by @pcm32 in #640
- Allow to only push
dev-tagged images to Docker Hub. by @gouttegd in #653 - Schema config documentation by @hkir-dev in #656
- Rename dosdp-tools directory. by @gouttegd in #652
- Rename IMAGE to ODK_IMAGE in the run.sh script. by @gouttegd in #655
- Build
odkfull:devfromodklite:dev. by @gouttegd in #661 - Update constraints from within the
odkbuildimage by @gouttegd in #663 - Add constraints.txt make goal by @matentzn in #662
- Adding a preprocessing intermediate file to the ODK build process by @matentzn in #639
- Make sure the Python package
sixis present inodklite. by @gouttegd in #666 - Make Base IRI configurable by @matentzn in #617
- Update constraints.txt by @github-actions in #664
- Update catalog-v001.xml.jinja2 to reflect base IRI changes (bugfix) by @matentzn in #668
- Fix wrong config for recreating components by @matentzn in #670
- fixed parentheses in inject queries by @ehartley in #672
- Update constraints.txt by @github-actions in #667
- Update constraints.txt by @github-actions in #673
- Allow extra volume bindings and custom wrapper config file by @gouttegd in #678
- Update constraints.txt by @github-actions in #681
- Add documentation about custom sparql checks by @anitacaron in https://github.com/INCATools/ont...
June 2022 Release
Official Changelog:
- Update to ROBOT 1.9.0, see ROBOT release notes. One major change concerning ODK: the OBOGraphs JSON serialiser has been updated significantly, which means obographs json files may look a bit different. Most important change: empty elements (xrefs) are no longer serialised.
- Added shortcut make commands for recreating components:
recreate-componentsandrecreate-%(pull). - Added new shortcut command for fast releases:
make prepare_release_fast. - New tools:
- Ontology Access Kit, a python library for interacting with ontologies, the the ODK (pull).
- gh: GitHub CLI for running releases, createing pull requests and more
- j2cli: Jinja template client
- rdftab: RDF Tables with Rust
- gizmos: Python utilities for ontology development
- Other: obographviz, node.js, graphviz, npm
- The ontology diff GitHub action, a tool that allows you to create diffs for you ontology pull requests, is now automatically synced with your ODK setup (pull).
- Added
workflowsoption to ODK config. This allows users to choose which workflows (at the moment GitHub actions-based) should be automatically synchronised. - Custom ROBOT SPARQL reports now consider the imports by default (pull)
- Base IRIs can now be configured for ROBOT report, similar to what OBO Dashboard does
- Technical
- Run internal
makeand $(MAKE) to ensure that parameters are propagated correctly (issue). - Mirror goal is only run when mirrors have been downloaded (pull)
- src/ontology/run.sh can now be configured with a ODK_JAVA_OPTS parameter at runtime, rather than just with a
robot_java_argsoption in the projects ODK config file. This allows to more easily run releases across environments with different levels of memory. Example:ODK_JAVA_OPTS=-Xmx4G ODK_DEBUG=yes ./run.sh make odkversion - src/ontology/run.sh warns the user in certain cases to update their local ODK image.
- Better linebreaks in Makefile to make lines more.
- Run internal
- Documentation
- Added improved
CONTRIBUTING.mdto ODK repo template - Removed history.md page from ODK documentation
- Some improved settings to default mkdocs documentation pages, such as better search, edit buttons and more.
- Some improved documentation on components (pull)
- All ODK-related general docs now moved to https://oboacademy.github.io/obook.
- DOSDP documentation pages are now only created when dosdp is configured.
- Added improved
- Bugs
- The automatic docs workflow now correctly
uses: mhausenblas/mkdocs-deploy-gh-pages@master. - In ODK 1.3.0
prepare_releasedepended onall, which caused some cyclicity for some customised setups. This is now changed to a separateall_odkgoal. - Simple ontology release artefacts now correctly depend on the
simple seed. - Similar to subset declarations, ODK now injects synonymtype declarations when extracting a module.
- diff.yaml no longer added by default, has to be configured.
- The automatic docs workflow now correctly
For changes on previous versions see complete CHANGELOG
Automated GitHub Changelog:
- Make sure diff.yml action is automatically copied during update by @shawntanzk in #564
- Update dosdp-tools to 0.19.2 by @balhoff in #575
- added components doc by @shawntanzk in #577
- Removed files that are repeated in obook by @shawntanzk in #578
- Add oaklib by @gouttegd in #586
- First fixes 131: components, $(MAKE) and reports by @matentzn in #570
- Build rdftab from source. by @gouttegd in #593
- Improving run.sh.jinja2 by @matentzn in #594
- Adding missing ontology annotations on imports by @matentzn in #597
- Update dosdp-tools version by @balhoff in #596
- issue 589 by @cmungall in #590
- Add ontodev-gizmos, psycopg2, pyspellchecker. by @gouttegd in #602
- Fix argument passing in the Windows run.bat script. by @gouttegd in #603
- ont.is_large only makes sense with module type slme by @matentzn in #607
- Upgrade base system by @gouttegd in #604
- Add ability to set base IRIs for report in ODK by @matentzn in #609
- [WIP] Update contribution guidelines by @cthoyt in #598
- Add Robot 1.9.0 to Dockerfile by @matentzn in #621
- Removing History page and add nice default config for mkdocs by @matentzn in #611
- New contribution guide by @matentzn in #620
- Add break lines to makefile by @anitacaron in #612
New Contributors
Full Changelog: v1.3.0...v1.3.1
Feburary 2022 Release (1.3.0)
v1.3.0 (24 February 2022)
As always, update your local ODK with docker pull obolibrary/odkfull.
Breaking change for users of DOSDP in CI (GitHub Actions)
A new tool was introduced for users of DOSDP for better validation. See this comment about updating your CI pipeline.
New features:
- New DOSDP workflow for matching patterns: This is a powerful workflow that "matches" your DOSDP YAML templates against your ontology to actually create TSVs - so the other way around of what we usually do.
- To set this up, you introduce a new "pattern_pipelines_group" called
matches, which can then be invoked withsh run.sh make dosdp-matches-%to match all configured DOSDP tempates with the ontology. - Example see here.
- To set this up, you introduce a new "pattern_pipelines_group" called
- Experimental feature-diff feature: When creating a pull request, the ODK can now automatically make a comment to the pull request informing editors of changes to the ontology (issue)
- Adding Relation Graph to ODK (pull request, pull request)
- New QC checks:
- IRIs in labels: Often when using autogenerated labels in DOSDP we do not realise we are accidentally missing labels to for generating class names. We introduced a QC check to protect against that (pull request, issue)
- Ensuring that the range of never_in_taxon:, present_in_taxon: , oboInOwl:inSubset, rdfs:seeAlso, foaf:depicted_by and dcterms:contributor is always IRI (issue, pull request)
- Switched the default Ontology documentation theme from
readthedocstomaterial(pull request) - New DOSDP tools version 0.19.1
Bugfixes:
- Many faulty dependencies in the Makefile that triggered unnecessary re-runs of make were removed (issue)
- Some major refactoring of the main
Makefile(pull request). This includes, in particular, a smarter way to deal with web-dependencies (mirrors, dosdp-templates, components). - Fixes to documentation (Managing dependencies with base files, Import seed system)
- Some fixes to DOSDP pipeline setup (issue)
- Git
mainbranch was hardcoded tomasterduring the seeding process, now uses the ODK config file (pull request, issue) - Making sure the repo seeding process preserves file privileges. This ensures, in particular, that
run.shis executable and can be run using./run.shinstead ofsh run.sh(issue, pull) - DOSDP Validation now uses python up to date library
- Auto-deployment of ODK docs fixed (ODK internal, pull request), but much of ODK's docs has moved to OBOOK (OBO Academy)
- Fixing some issues with default values when using
robot_reportin your ODK config (pull request)
New commands:
sh run.sh make help: show frequently used ODK commands and their usage (issue)sh run.sh make TSV=my.tsv validate-tsv: Experimental TSV validation feature with TSValid (issue)sh run.sh make validate-all-tsv: Validate all TSV tables configured in repo with TSValid (issue)sh run.sh make dosdp-matches-%: Run the "matches" pipeline, see above. (issue)sh run.sh make clean: Clean up some temporary files created by the build. (issue)
Recommendations for ontology maintainers:
- We have overhauled the SPARQL query management to make it more customisable (pull request). We recommend, before updating to the latest ODK, to delete old and potentially stale SPARQL queries like this:
rm ../sparql/owldef-violation.sparql ../sparql/nolabels-violation.sparql ../sparql/def-lacks-xref-violation.sparql ../sparql/obsolete-violation.sparql ../sparql/redundant-subClassOf-violation.sparql. - You should periodically review the contents of your
src/ontology/custom.Makefile- if you overwrite a lot of goals, you should review wether the overwrite is still necessary. This ODK release has a lot of revisions to the Makefile, so this should be a good opportunity to check this!
December 2021 Release 2
With ROBOT 1.8.3, which patches an issue with ROBOT report (custom queries) and also gets rid of Log4J.
No changes to ODK repo, so no need to run updates. To update your ODK container:
docker pull obolibrary/odkfull
December 2021 release
Attention: breaking changes below!
- Updated to ROBOT 1.8.2
- Updated to DOSDP tools 0.18
- Adding
use_base_mergingto config files, which enables the BASE file pipeline, a completely different way to handle imports. This feature is not ready for primetime, but if you are interested in testing this, get in touch. For more details read (pull). - Adding back ssh/scp
- Migrated to Java 11 as the base Java in ODK (pull)
- Adding
make_basefeature that allows to autogenerate base files from ontologies where they do not exist (pull) - Adding new command
sh run.sh make no-mirror-refresh-importswhich refreshes imports without refreshing mirrors. Can be used for individual ontologies as well. - Making
owltoolswhere necessary configurable with a bespoke memory parameter (pull) - Fixing the GitHub action to auto-deploy the documentation (pr).
- Fixed a bug where the DOSDP pages in ODK where generated in the wrong part of the mkdocs documentation.
- New command
sh run.sh make explain_unsatwhich generates a nicely formatted set of explanations for your unsatisfiable classes (pull) - Adding method to measure the memory consumption of your builds. For example, you can now run
IMAGE=odklite ODK_DEBUG=yes ./run.sh make prepare_releaseto run your release on the (much lighter)odklitecontainer of ODK, and get a nice benchmark summary at the end:
### DEBUG STATS ###
Elapsed time: 7:49.24
Peak memory: 6517356 kb
- Breaking changes:
- Imported modules are no longer generated in OBO format automatically (only OWL). This reflects the fact that in most ontologies, even those where the editors file is in OBO format, imported ontologies are usually in OWL format. You can use the
export_obooption to add them back (pull) - Equivalent class default setting changed from
alltoasserted only(pull). This means that from now on, if you dont change the setting deliberately, your pipeline will fail if their are equivalent classes that are not deliberately asserted. - OWL 2 DL profile checking is now
trueby default. You have to actively switch it off by settingensure_owl2dl_profiletoFALSEin your config file.
- Imported modules are no longer generated in OBO format automatically (only OWL). This reflects the fact that in most ontologies, even those where the editors file is in OBO format, imported ontologies are usually in OWL format. You can use the
To update to the latest version of ODK:
docker pull obolibrary/odkfull
To mirgate your repository to the latest version of ODK:
cd myont/src/ontology
sh run.sh make update_repo
sh run.sh make update_repo #(needs to be run twice since the update process also updates the update process.)
October 2021 release
- Important: The way we install python packages has changed significantly: we are now using fixed version dependencies (issue). If there are problems with the versions of packages we are using, please let us know immediately.
- We are now using multi-stage builds in ODK for docker. The
obolibrary/odklitecontainer is considerably lighter (smaller) than the normalodkfullcontainer you have been using so far, and it should be sufficient for most ODK pipelines. - Mirrors are now downloaded with CURL instead of ROBOT, and configurable with
mirror_retry_downloadandmirror_max_time_downloadin theimport_groupsection of the ODK config file (PR). Note that the defaultmirror_max_time_downloadis 200 sec (a bit more than 3 minutes), which may be tight for some huge ontologies. - odkfull now includes Soufflé.
- For those who are using DOSDP patterns we re-introduced the pattern schema check even if pattern generation is skipped (it is very fast).
- Created a simple way to cite ODK from within GitHub, using the CITATION.cff file. If you go to https://github.com/INCATools/ontology-development-kit, you will now see a "cite this repo" section under the About section.
- Changed the default README.md to include a better reference to ODK, the correct ontology description text and the correct edit file extension.
- Added a GitHub action to deploy the ODK-based mkdocs documentation (issue).
- Created a page for frequently used ODK commands.
- Bugfixes:
- project repo name was not read correctly during
make update_repocausing it to be named "False" (commit) - Fixed a bug where mirrors were not considered precious
- Fixed a bug where where the report directories where not created when running a sparql report command (commit)
- Fixed a bug where
reportcommand incorrectly did not include components in the check (issue) - Fixed a bug where myont-odk.yaml was not created when using command line mode during seeding (issue)
- Added some tests for external tools (issue) to ODK built process
- Konclude now works on the arm64 variant.
- project repo name was not read correctly during
June 2020 release
- Switched to a more up-to-date base image (ubuntu-20.04, pull)
- Lots of technical changes on how to manage releases on dockerhub, especially multi-arch (same image should now work on M1, i.e. arm64 and amd64 machines, pull)
- Pip install operations now using
python3 -m pip(pull) - Introduced a new option (
remove_owl_nothing) in repo config to remove mentions of owl:Nothing in releases - New python packages: linkml, kgx and funowl
- Moved a comprehensive test suite to GitHub actions (pull)
- Updated the documentation on how to create a new repo with the ODK
- Updated Repo README with more docs, a list of significant external contributors (please just let me know if anyone else needs to be added), core team etc.
- Bugfixes:
May 6 2021 release
v1.2.28 (6 May 2021)
- New DOSDP tools version 0.17
- Major: we developed an Apple M1 compatible ODK image! Thanks to @gouttegd who did all the hard work. Super excited about this! The new image can be found here: https://hub.docker.com/r/obotools/odkfull_m1/
- Some major fixes to the automatic documentation generator, see for example https://pato-ontology.github.io/pato/. Please get in touch if you want help setting up your own awesome documentation site!
- A bug fix in the OWL2DL validation pipeline for testing
- A bug fix for the subset injection during Module creation, see here
- Minor fixes to GitHub instructions (switching wordings from master to main)
2021-04-04 release
v1.2.27 (4 April 2021)
- revived odklite image with a minimum install (smaller in size than odkfull, with just robot and owltools!)
- revived robot image with just robot installed
- Added Jena 3.12.0 to odkfull image
- Added module configs (see docs)
- added a complete new documentation system for ontologies using mkdocs (see docs)
- added OWL2 DL profile checking (see here for example)
- Added sqlite3, dos2unix, and aha to odkfull image
- Added a
use_custom_import_modulefeature (see docs for example) - Added ability to add completely customised release artefacts (see Uberon repo for example)
- Revised update mechanism. Please run the
make update_repomultiple times if you encounter problems and to ensure that all changes are picked up.
v.1.2.26 release (February 2020)
- New versions:
- New features:
- new python dependencies (cogs, a tool to directly manage tsv files in your repo on Google sheets)
- stable serialisation order for JSON files using jq's walk function. -> this decreases the size of the diff for git!
- Some improvements to logging when seeding a new repo, to make it easier to find errors
- A new method to validate the id-ranges file can be invoked using
sh run.sh make validate_idranges(after update to latest ODK repo) - modules are now annotated with a dc:source annotation to their original ontology (version)
- New configuration options:
- module_type (example slme, example minimal, example mireot). Direct support for MIREOT and a new module type, minimal.
- To encourage stable versions and releases, ODK, by default, merges imports into the release files. Previously, we continued to release the imports as well - which we do not recommend anymore. If you still wish to release your imports as usual, you can set a flag
release_importsin theimport_groupsection of your makefile (see example). - the same as the above applies for reports (see example)
- The custom sparql checks, and the custom sparql exports, are now directly configurable
custom_sparql_checks: Chose which additional sparql checks you want to run. The related sparql query must be named CHECKNAME-violation.sparql, and be placed in the src/sparql directory (see example)custom_sparql_exports: Chose which additional sparql checks you want to run. The related sparql query must be named CHECKNAME-violation.sparql, and be placed in the src/sparql directory (see example)custom_sparql_exports: Chose which custom reports to generate. The related sparql query must be named CHECKNAME.sparql, and be placed in the src/sparql directory (see example)
git_main_branch: Themainbranch for your repo, defaultmain, or (now discouraged, previously)master.ci: continuous integration defaults; currently available:travis,github_actionscreate_obo_metadata: This is mainly for new OBO ontologies. If true, OBO Markdown and PURL configs are created.export_project_yaml: DefaultFalse. If set toTrue, project.yaml is created in the top level of the repo.
- Removed a few files from the standard config. This is all part of an effort to slimming down the ODK to the least number of necessary files checked into version control:
src/ontology/Dockerfile,src/ontology/patterns.sh,src/ontology/release.sh,src/ontology/test.sh, and some temporary files. Thepatternsdirectory and all its contents only appear now whenuse_dosdps=TRUE. - Technical:
- Refactored ODK Dockerfile (merged some layers)
- added jq 1.6 which is not available via apt-get (yet).
- added sssom python package, but its in so alpha-alpha state, it should be used with caution