Switching to ODK for the maintanance of RXNO & MOP - NFDI4Chem/rxno Wiki


In the context of the NFDI4CHem project we have identified several issues for improvement in RXNO, like importing MOP properly, resolving version IRIs having a well documented rational for the intended axiomatization etc.

One main aspect when trying to fix/work on these issues is the need to have a proper working environment. When RXNO was first developed there where few tools for the managment of an ontology repository. Luckily the OBO Foundry has improved their tooling so that we now have the Ontology dDevelopment Kit, which should be used to maintain an OBO ontology in order to be compliant with the OBO foundary principles.

So RXNO and MOP have to be updated accordingly. THis Wiki page exists to document this update process.

Setting up VM with ODK, Protege, GitHub Desktop and ROBOT

First of all we need a working environment setup with ODK. As, at the moment, ODK depends on Docker, we need an operating system that has Docker installed. Unfortunately, not all contributors might have the prerequisites for such a setup (e.g. corporate Windows PC/Laptop with no permission to install Docker). Thus it is best to have a Virtual Machine that contains also other software which is needed for the ontology maintanance/edit work. Basically just using this VM to run some ODK commands when producing a new release might be sufficient. However as one might want to debug or edit the ontology, it seems a good idea to also have tools for this installed. So I installed Java & ROBOT, to be able to do ROBOT stuff in the ODK migration process (like get TSVs with only the RXNO classes nd properties). GitHub Desktop to be able to pull and push from within the VM. And Protege to be able to look at owl files.

  1. Choise of VM environtment - Virtual Box vs. Hyper-V
    • on Windows maschines that have Hyper-V you probably want to use this instead of Oracle's Virtual Box
  2. Choice of VM --> Lubuntu, because it is Ubuntu based but small and fast thus perfect for running in VM
    • for Hyper-V based Ubuntu VMs you probably want to edit the screen resolution, like this:
      1. sudo vim /etc/default/grub
      2. add video=hyperv_fb:[your resolution] after GRUB_CMDLINE_LINUX_DEFAULT="quiet splash
        • e.g. GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1920x1080"
      3. enable with sudo update-grub and then reboot VM
  3. after having a Lubuntu VM set up the follwoing apps need to be intalled in it
    • installing Docker
    • installing ODK
    • installing GitHub Desktop for GUI based working with GIT like this - go for the .deb
    • installing Protegé for the manual edits in RXNO, like this
      • if you want to make a desktop shortcut with proper icon for it,
        • create a new text file called Protege.desktop in your Desktop folder
        • add the below, adjust the path to the icon and run script and save
             Exec=bash [/your/path/to/]Protege-5.5.0/run.sh
        • make it executable with chmod a+x Protege.desktop
    • installing ROBOT for automatic ontology work
      • have JAVA installed (e.g. running sudo apt install openjdk-17-jre-headless)
      • install ROBOT like this

Migrating RXNO to ODK

  1. make an emtpy ODK style repo using the seed script, see here
    • create a rxno-odk.yaml based on an PATOs config
    • run the seed script and copy from ODK created target/rxno/ all but the .git dir into a manually created dir called rxno_odk
    • when trying to pushing these first changes to the issue branch using GitHub Desktop, I ran into the problem of it not recognizing my login credential for this repo, although it works fine with other NFDI4Chem repos or mine in the VM and also with the NFDI4Chem/rxno fork from the Windows Host OS. But I got it resolved by creating a Personal access token (PTA), logging out of Github Desktop in the VM and using the PTA as password when asked for my credentials upon pushing again from within the VM. If this isn't working you need to change the url value set in the cloned repo .git/config file to be using the token following this structure: https://<GH_USER>:<TOKEN>@github.com/<ORGANIZATION>/<REPONAME>.git
⚠️ **GitHub.com Fallback** ⚠️