Skip to content

Language Ontology Development, Build, and Release Processes

Mike Conlon edited this page Jan 6, 2020 · 9 revisions

Development Process

The Language Ontology development process is evolving. Here's what it might look like:

  1. Developers and the public open issues in this repository.
  2. Developers fork this repository.
  3. Developers make improvements to the hand-edited files (green in Figure 1 below) using an editor of their choice -- protégé or other.
  4. Changes can be tested by developers by running src/ontology/build.sh on their forked repository.
  5. Developers should correct any validation errors found during the build process.
  6. Developers develop pull requests based on their edits.
  7. Pull requests are discussed and merged by the maintainers.

Build Process

The figure below shows the files and processes that are used to create lang.owl. development and build process Figure 1. Build processes for lang.owl Hand-edited files (green) are merged with temporary files (grey) resulting from the processing of registry authority and non-project files (yellow). Executables (blue) use these files as inputs and outputs, resulting in lang.owl (purple)

The python elements of the build process must be run by hand for now. These elements create temporary files which are used in the build process.

A build incorporating hand edits and the temporary files as shown in Figure 1 can be created using src/ontology/build.sh which merges the elements together and creates lang.owl. Validations are run by the build process.

Hand-edit files (green)

There are four files in the build process that can be hand-edited:

  1. src/ontology/lang-edit.owl. This is the key file containing all terms no generated by templates, imports, and internationalization. This file does not contain these other elements.
  2. src/ontology/i18n/iso-639-i18n-CEFR-definitions.nt The definitions of the CEFR capabilities are translated by hand in this file.
  3. src/ontology/imports/bfo_terms_complete.txt is a simple text file of the IRIs of the terms from BFO that are to be included in lang.owl. A robot extract is run manually to prepare src/ontology/imports/bfo_import.owl which is used by src/ontology/build.sh
  4. src/ontology/templates/iso-639-header.tsv is a template header file. If this is edited, corresponding changes would be needed in src/ontology/templates/iso-639-template-generator.py so that the resulting template file can be processed by robot template.

Registry authority and non-project files (yellow)

There are three files in the build process that should not be edited:

  1. mirror/bfo.owl The BFO ontology. This is used as a source to extract the terms needed by lang.owl
  2. src/ontology/templates/iso-639-3.tab This file is downloaded from the ISO 639-3 registry authority. It contains the raw data for each Part 1, 2 and 3 language.
  3. src/ontology/i18n/vocabularyiso639-2.ttl This file is downloaded from the [ISO 639-2 registry authority] and contains translations of the labels of the Part 1 and Part 2 languages to French and German.

Temporary files (grey)

There are four temporary files in the build process. These are the outputs of utilities (python and robot) used to created files suitable for merge to lang.owl as part of the build process. The build process for the Language Ontology is under development. These files are useful to remain in the repository for now, as the make processes are not fully automated.

  1. bfo_import.owl manually created using a robot extract command
  2. iso-639-template.tsv created by the Makefile in src/ontology/templates, the result of running the python program src/ontology/templates/iso-639-template-generator.py A tsv file suitable for input to robot template
  3. src/ontology/templates/terms.owl The result of a robot template command. This file contains all the language terms and their attributes and annotations.
  4. src/ontology/i18n/iso-639-i18n.nt A set of triples resulting from the python program src/ontology/i18n/iso-639-i18n-generator.py containing assertions of the labels of the Part 1 and Part 2 languages in French and German.

Release process

Note: We haven't had a release yet

Language ontology releases are denoted by the date of their release, as per OBO standards. The Language Ontology does not use version numbers.

When the maintainers decide to create a new release, they will:

  1. Run src/ontology/prepare-release.sh to create the artifacts, including lang.owl, variants, and reports.
  2. This Github repository is updated and the release tagged with the release date.
  3. Release notes are prepared in this wiki.
  4. The release is communicated.