Skip to content

Restore the edit file to its state before the 2025-08-19 release - #1676

Merged
matentzn merged 1 commit into
masterfrom
restore-envo-edit-1675
Oct 23, 2026
Merged

matentzn merged 1 commit into
masterfrom
restore-envo-edit-1675

Conversation

@turbomam

Copy link
Copy Markdown
Contributor

This pull request sets src/envo/envo-edit.owl back to its content at commit f945fa9, the last commit before the 2025-08-19 release, and keeps the fix from #1657. In that release my commit 1d0dd48 replaced the edit file with its 2024-01-23 version minus 112 foreign declarations. That removed 145 classes, 17 annotation properties, 6 individuals, and every other change that 24 pull requests had made to the file between 2024-02-16 and 2025-04-02.

Part of #1675

The diff against master is the mirror image of that commit, 3,308 insertions and 1,546 deletions, and nobody needs to read it. To review, compare this branch with the file it restores:

git diff f945fa9 restore-envo-edit-1675 -- src/envo/envo-edit.owl

That shows the 17 lines of the fix from pull request 1657 and nothing else.

  • The three creation_date values that Fix dateTime values to be valid xsd:dateTime #1644 corrected on the broken file are already valid in the restored file, because fix invalid creation_dates #1494 had corrected them in 2024, so that later fix is superseded.
  • The 116 foreign declarations and the 8 empty declarations ENVO:03620010 to ENVO:03620017 come back with this pull request on purpose, so that this change is a plain restore. A separate small pull request will remove the ones nothing references, and a release will follow.
  • The commit carries Co-authored-by trailers for the authors of the restored work. The 24 pull requests, with their authors, reviewers and mergers, are listed below.
The 24 pull requests whose changes this restores

The file is set to its content at f945fa9, the last commit before #1631, and keeps the fix from #1657. The fix from #1644 is superseded by #1494, which corrected the same three creation_date values in 2024.

Part of #1675

Co-authored-by: Chris Mungall <cjm@berkeleybop.org>
Co-authored-by: Tim Alamenciak <tim.alamenciak@gmail.com>
Co-authored-by: Pier Luigi Buttigieg <p.buttigieg@gmail.com>
Co-authored-by: Nico Matentzoglu <nicolas.matentzoglu@gmail.com>
Co-authored-by: diatomsRcool <annethessen@gmail.com>
@turbomam
turbomam requested review from matentzn and a balanced review from Copilot October 22, 2026 14:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request. Check if the Files changed in this pull request are included in default exclusions.

@pbuttigieg

Copy link
Copy Markdown
Member

@turbomam thanks for the PR - this is quite a profound change set - could we schedule a call to walk through it ?

@pbuttigieg

Copy link
Copy Markdown
Member

@matentzn would be good to have you in the call too, more via email

@turbomam

Copy link
Copy Markdown
Contributor Author

Hi @pbuttigieg. @matentzn and I have already chatted this morning and I would be very happy to have a chat with both of you. I am not 100% convinced that this PR is the right first step myself.

@turbomam

turbomam commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor Author

I'm satisfied that this PR restores the lost classes now. The only consequences I know of are that

  • git blame will credit me for the restored lines
  • the foreign declarations my original commit was meant to remove come back temporarily

An alternative that preserves git blame is to re-apply the 24 original commits one by one with their original authors and dates; it needs three hand-resolved conflicts and makes a 24-commit PR. I chose the single commit for simplicity, but I would support the other approach if reviewers prefer it.

I think these review instructions from Claude are much more useful than the git diff f945fa9 suggestion in the PR description, which only shows that nothing else changed. I will eventually want to propose a change to the term-replaced-by syntax that diff shows (string values rather than IRIs), but not in this PR.

  • Mark

GitHub holds no diff for src/envo/envo-edit.owl in this pull request, so here is how to see what it changes from your own clone. Every number below is what Claude got on my computer.

Setup. Fetch the two commits being compared and the release tags. Nothing needs to be checked out: every command reads from git objects, and the only files written go to src/envo/tmp/, which is gitignored. One step needs a local robot on your PATH; if that step does not work for you, we can share the form that runs it inside the ODK container.

git fetch origin master restore-envo-edit-1675 --tags
mkdir -p src/envo/tmp

The commands pin master at a2455d1 and this pull request at 8870e81, so they give the same answers whatever branch you have checked out.

Scope first. This pull request restores one file, src/envo/envo-edit.owl, to its state at f945fa9. That commit is the one immediately before the release merge on master's own history (f945fa9 on 2025-04-15, then 156dd8a on 2025-08-19), so it is the pre-release state of that file, not an earlier approximation. The pull request does not touch the release products (envo.owl, envo.obo, and the rest), which the release pull request will rebuild from the restored file.

Count the class declarations the pull request adds relative to master. This prints 145:

git diff a2455d1 8870e81 -- src/envo/envo-edit.owl | grep -c '^+Declaration(Class(<http://purl.obolibrary.org/obo/ENVO_'

See one of them come back, the ARMS class. The first command prints 0 on master; the second prints the class with its definition, creator, date, synonym "ARMS", label, and parent:

git show a2455d1:src/envo/envo-edit.owl | grep -c ENVO_01001855
git show 8870e81:src/envo/envo-edit.owl | grep -A9 '^# Class: <http://purl.obolibrary.org/obo/ENVO_01001855>'

See the change as axioms rather than lines. ROBOT needs the import lines stripped because the catalog points one module at a GitHub URL that no longer resolves:

git show a2455d1:src/envo/envo-edit.owl | grep -v '^Import(' > src/envo/tmp/edit-master.owl
git show 8870e81:src/envo/envo-edit.owl | grep -v '^Import(' > src/envo/tmp/edit-branch.owl
robot diff --left src/envo/tmp/edit-master.owl --right src/envo/tmp/edit-branch.owl --output src/envo/tmp/axiom-diff.txt
grep -c '^+ ' src/envo/tmp/axiom-diff.txt; grep -c '^- ' src/envo/tmp/axiom-diff.txt

With ROBOT 1.9.10 the result is 2,806 axioms added and 1,536 removed. The additions are 2,095 annotation assertions, 284 declarations, 272 SubClassOf axioms, 127 equivalent-class axioms, 17 sub-annotation-property axioms (the NMDC subset hierarchy), 6 class assertions, 3 disjointness axioms, and 2 disjoint unions. The removals are the pre-2024 versions of things the lost pull requests changed, for example ENVO_01001243 was labelled "forest ecosystem" and is now "forest" with the old label kept as an exact synonym, and 19 old logical definitions that #1552 replaced. The removals are part of the restoration, because those 24 pull requests did not only add.

Check the branch against the last good release rather than against any commit. Every ENVO class in the v2025-02-05 release is either declared in the branch's edit file or built from the DOSDP modules; the same check against master leaves 129 classes unaccounted for, and the v2025-08-19 release lacks exactly those 129:

git show v2025-02-05:envo.owl | grep -oE '<owl:Class rdf:about="http://purl.obolibrary.org/obo/ENVO_[0-9]+"' | grep -oE 'ENVO_[0-9]+' | sort -u > src/envo/tmp/release-classes.txt
git show v2025-08-19:envo.owl | grep -oE '<owl:Class rdf:about="http://purl.obolibrary.org/obo/ENVO_[0-9]+"' | grep -oE 'ENVO_[0-9]+' | sort -u > src/envo/tmp/broken-release-classes.txt
cat src/envo/modules/*.owl | grep -oE 'ENVO_[0-9]+' | sort -u > src/envo/tmp/module-classes.txt
git show 8870e81:src/envo/envo-edit.owl | grep -oE 'Declaration\(Class\(<http://purl.obolibrary.org/obo/ENVO_[0-9]+>' | grep -oE 'ENVO_[0-9]+' | sort -u > src/envo/tmp/branch-classes.txt
git show a2455d1:src/envo/envo-edit.owl | grep -oE 'Declaration\(Class\(<http://purl.obolibrary.org/obo/ENVO_[0-9]+>' | grep -oE 'ENVO_[0-9]+' | sort -u > src/envo/tmp/master-classes.txt
comm -23 src/envo/tmp/release-classes.txt src/envo/tmp/branch-classes.txt | comm -23 - src/envo/tmp/module-classes.txt | wc -l
comm -23 src/envo/tmp/release-classes.txt src/envo/tmp/master-classes.txt | comm -23 - src/envo/tmp/module-classes.txt | wc -l
comm -23 src/envo/tmp/release-classes.txt src/envo/tmp/broken-release-classes.txt | wc -l

The three counts are 0, 129, and 129. The 145 restored declarations are those 129, plus 8 classes with content added between February and April 2025, plus the 8 empty declarations ENVO:03620010 to ENVO:03620017.

Against f945fa9 itself, the branch differs by 17 lines, all of them the fix from #1657 that master already contains:

git diff f945fa9 8870e81 -- src/envo/envo-edit.owl

EDITED

Both CI checks passed, https://github.com/EnvironmentOntology/envo/actions/runs/39792036186 (ontology_qc) and https://github.com/EnvironmentOntology/envo/actions/runs/39792036230 (sssom_validation). The same make travis_test IMP=false PAT=false target, run locally in the obolibrary/odkfull:v1.6 image on this branch and on master, exits 0 on both, and the DL profile check reports the ontology and its imports closure in profile. The ROBOT report on the source lists 12 missing_label errors on this branch against 11 on master; the extra one is PATO:0000068 "qualitative", which the restored file annotates with a definition and whose label lives in the PATO import that this report does not load. The report does not fail the build.

The 145 restored classes
  • ENVO:01001855 autonomous reef monitoring structure
  • ENVO:01001863 blended biomass derived from sessile communities colonising an autonomous reef monitoring structure
  • ENVO:01001892 sieved biomass derived from motile communities present in the retrieval tub of an autonomous reef monitoring structure
  • ENVO:01001900 biomass derived from sieving motile communities present in the retrieval tub of an autonomous reef monitoring structure through a 100 micrometre mesh
  • ENVO:01001901 biomass derived from sieving motile communities present in the retrieval tub of an autonomous reef monitoring structure through a 500 micrometre mesh
  • ENVO:01001902 temperate desert ecosystem
  • ENVO:01001903 montane desert ecosystem
  • ENVO:01001904 polar desert ecosystem
  • ENVO:01001905 subtropical desert ecosystem
  • ENVO:01001906 tropical desert ecosystem
  • ENVO:01001907 freshwater lake ecosystem
  • ENVO:01001908 large freshwater lake ecosystem
  • ENVO:01001909 small freshwater lake ecosystem
  • ENVO:01001910 freshwater river ecosystem
  • ENVO:01001911 large freshwater river ecosystem
  • ENVO:01001912 small freshwater river ecosystem
  • ENVO:01001913 large freshwater river delta ecosystem
  • ENVO:01001914 large freshwater river headwater ecosystem
  • ENVO:01001915 subtropical woodland ecosystem
  • ENVO:01001916 mediterranean woodland ecosystem
  • ENVO:01001917 temperate woodland ecosystem
  • ENVO:01001918 tropical woodland ecosystem
  • ENVO:01001919 flooded savanna
  • ENVO:01001920 wet soil
  • ENVO:01001921 mediterranean savanna
  • ENVO:01001922 subtropical savanna
  • ENVO:01001923 montane savanna
  • ENVO:01001924 temperate savanna
  • ENVO:01001925 tropical savanna
  • ENVO:01001926 polar tundra biome
  • ENVO:01001927 montane ecosystem
  • ENVO:01001928 subpolar grassland biome
  • ENVO:01001929 meadow biome
  • ENVO:01001930 rangeland ecosystem
  • ENVO:01001931 temperate ecosystem
  • ENVO:01001932 tropical ecosystem
  • ENVO:01001933 subtropical ecosystem
  • ENVO:01001934 mediterranean ecosystem
  • ENVO:01001935 polar ecosystem
  • ENVO:01001936 subpolar ecosystem
  • ENVO:01001937 distillation
  • ENVO:01001938 nival ecosystem
  • ENVO:01001939 alpine ecosystem
  • ENVO:01001940 subalpine ecosystem
  • ENVO:01001941 facilitation
  • ENVO:01001942 mobile dental clinic
  • ENVO:01001943 dry distillation
  • ENVO:01001944 classical distillation
  • ENVO:01001945 deionisation
  • ENVO:01001946 mineral-to-(proton/hydroxide ion) exchange
  • ENVO:01001947 deionised water
  • ENVO:01001948 mineral-to-(proton/hydroxide) deionised water
  • ENVO:01001949 rainforest
  • ENVO:01001950 rainforest biome
  • ENVO:01001951 tropical rainforest
  • ENVO:01001952 temperate rainforest
  • ENVO:01001953 littoral rainforest
  • ENVO:01001954 dry rainforest
  • ENVO:01001955 sclerophyllous forest biome
  • ENVO:01001956 temperate sclerophyllous dry forest biome
  • ENVO:01001957 tropical sclerophyllous dry forest biome
  • ENVO:01001958 subtropical rainforest
  • ENVO:01001959 dry rainforest biome
  • ENVO:01001960 littoral rainforest biome
  • ENVO:01001961 subtropical rainforest biome
  • ENVO:01001962 temperate rainforest biome
  • ENVO:01001963 tropical rainforest biome
  • ENVO:01001964 seawater
  • ENVO:01001966 coastal ocean water
  • ENVO:01001967 oceanogenesis
  • ENVO:01001968 microbial cell culture
  • ENVO:01001969 bacterial cell culture
  • ENVO:01001970 archaeal cell culture
  • ENVO:01001971 cell culture of eukaryotic microbes
  • ENVO:02000139 desert spring
  • ENVO:02000145 subterranean lake
  • ENVO:02000152 mangrove biome sediment
  • ENVO:02000153 marine salt marsh sediment
  • ENVO:02000154 animal construction
  • ENVO:02000155 solid waste material
  • ENVO:02000156 organic dairy farm
  • ENVO:02000157 municipal landfill
  • ENVO:02000158 biological nutrient removal during wastewater treatment
  • ENVO:02000159 bee hive
  • ENVO:02000160 hymenopteran habitation
  • ENVO:02000161 termite mound
  • ENVO:02000162 termite subterranean nest
  • ENVO:02000163 termite arboreal nest
  • ENVO:02000164 crocodilian nest
  • ENVO:02000165 nest of crocodile
  • ENVO:02000166 natural bee hive
  • ENVO:02000167 anthropogenic bee hive
  • ENVO:02000168 anthropogenic bee hive structure
  • ENVO:02000169 beeswax
  • ENVO:02000170 honeycomb
  • ENVO:02000171 hymenopteran construction
  • ENVO:02000172 nest of wasp
  • ENVO:02000173 beaver lodge
  • ENVO:02000174 ant dump
  • ENVO:02000175 spider web
  • ENVO:02000176 bioremediation
  • ENVO:02000177 pollution degradation
  • ENVO:02000178 anthropogenic modulation of pollution
  • ENVO:02000179 mine pit pond
  • ENVO:02000180 hydrocarbon bioremediation
  • ENVO:02000181 metal bioremediation
  • ENVO:02000182 persistent organic pollutant bioremediation
  • ENVO:02000183 terephthalate remediation
  • ENVO:02000184 tetrachloroethylene or tetrachloroethylene derivative remediation
  • ENVO:02000185 thiocyanate remediation
  • ENVO:02000186 mine pit
  • ENVO:02000187 biotransformation process
  • ENVO:02000188 biotransformation of coal
  • ENVO:02000189 microbial enhanced oil recovery
  • ENVO:02000190 microbial solubization of coal
  • ENVO:02000191 biotransformation of biomass into mixed alcohols
  • ENVO:02000192 adit
  • ENVO:03500016 electroplating fume
  • ENVO:03500017 soldering fumes
  • ENVO:03500018 solder
  • ENVO:03500019 lead solder
  • ENVO:03500020 non-lead solder
  • ENVO:03500021 gasoline vapor
  • ENVO:03500022 noise
  • ENVO:03500023 road traffic noise
  • ENVO:03500024 aircraft noise
  • ENVO:03500025 secondhand smoke
  • ENVO:03500028 pneumatic drill
  • ENVO:03620000 biogeographic realm
  • ENVO:03620001 landscape macroscale age
  • ENVO:03620002 landscape megascale age
  • ENVO:03620003 landscape mesoscale age
  • ENVO:03620004 landscape microscale age
  • ENVO:03620005 landscape microscale size
  • ENVO:03620006 landscape mesoscale size
  • ENVO:03620007 landscape macroscale size
  • ENVO:03620008 landscape megascale size
  • ENVO:03620010
  • ENVO:03620011
  • ENVO:03620012
  • ENVO:03620013
  • ENVO:03620014
  • ENVO:03620015
  • ENVO:03620016
  • ENVO:03620017

@matentzn matentzn left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is exactly a revert of 1d0dd48 plus the #1657 fix. I checked it line by line, and nothing else gets lost or added.

I went through this properly this time, since I'm the one who let 1d0dd48 through. What I checked:

  • 1d0dd48 is the only commit in #1631 that touched envo-edit.owl (RC2 and the ENVO_03605026 commit didn't), and f945fa9 is the squash parent of 156dd8a. So going back to f945fa9 throws away nothing else from that release.
  • git diff f945fa9 restore-envo-edit-1675 is identical to the #1657 diff on master: 9 IAO_0100001 lines and the canopy boolean comment.
  • Every line the branch drops from master (1546) is a line from the 2024-01-23 version (e628190), except the 3 #1644 dates. Every line it adds (2980) exists in f945fa9. Nothing new sneaks in.
  • @balhoff's #1644 is indeed superseded. The restored file has 2023-08-25T12:17:42.901Z for ENVO_03600094/95/96, which #1494 had already fixed. That value looks more faithful than the 17:42:00.901 guess anyway.
  • The counts match the description: 145 ENVO classes (137 real + the 8 empty 03620010–17), 17 ENVO annotation properties, 6 individuals, 116 foreign declarations. Nothing is declared on master but not on the branch, and there are no duplicate declarations.
  • All typed literals are valid (boolean, dateTime, etc.), so the restored content doesn't bring back any of the junk #1657 cleaned up.
  • The 10 foreign IRIs that are newly used in logical axioms are all already in the current import modules, so the next release doesn't need an import refresh just for this.
  • CI is green.

One thing the description doesn't mention: this also brings back Import(<http://purl.obolibrary.org/obo/envo/robot_templates/nmdc_env_context_subset_membership.owl>) (line 30), which 1d0dd48 dropped. That's the actual cause of the missing NMDC value sets in #1642. The catalog entry and the template file are still on master, so it resolves fine. I'd add "Part of #1642" (or closes it after the release) so people can follow it.

I agree with keeping this a plain restore and leaving the 8 empty declarations and unused foreign declarations for the follow-up PR. That's much easier to verify than redoing the cleanup in the same diff, even though #1675 originally said otherwise.

Process:

  • Please squash with the commit message as is (or rebase-merge) so the Co-authored-by trailers survive.
  • #1667 and #1668 both touch the edit file and were branched from the broken version. They'll need a rebase after this lands, so merge this first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants