Concept gap review
The ODM2 alignments of September 2026 added 184 concepts. Variables reference seven of them. That prompted a review of the 1,622 live variables beneath the Variable root to find the concepts they name but the ontology lacks, and the concepts it has that they cannot reach. This page records the method, what the first pass added, and what remains.
Method
Every variable label was tokenised and its words, bigrams, and trigrams counted, and each was checked against every concept label and synonym. The same was done for definitions, weighted lower. A word that recurs across many labels and matches nothing on the concept side is a gap. A word that matches a concept which the variable's relationship columns do not name is a linking gap. Counts below are labels naming the thing unless they say otherwise.
Added in the first pass
| BERVO term | Parent | Cross-reference | Variables asking for it |
|---|---|---|---|
Demand (BERVO:8000770) |
Concept | 29 labels; all carried attributes=Uptake |
|
Microbial functional group (BERVO:8000771) |
Microbes | "microbial" in 100 labels, "functional group" in 9 | |
Heterotrophic microbes (BERVO:8000772) |
Microbial functional group | "heterotrophic microbial" in 18 labels | |
Autotrophic microbes (BERVO:8000773) |
Microbial functional group | "autotrophic microbial" in 19 | |
Aerobic heterotrophs (BERVO:8000774) |
Heterotrophic microbes | "aerobic bacteria" in 3 | |
Fermenters (BERVO:8000775) |
Heterotrophic microbes | 4 | |
Denitrifiers (BERVO:8000776) |
Heterotrophic microbes | 10 | |
Nitrifiers (BERVO:8000777) |
Autotrophic microbes | 14 | |
Methanogens (BERVO:8000778) |
Microbial functional group | 6 | |
Acetotrophic methanogens (BERVO:8000779) |
Methanogens | 2 | |
Hydrogenotrophic methanogens (BERVO:8000780) |
Methanogens | 3 | |
Methanotrophs (BERVO:8000781) |
Microbial functional group | 1 | |
Diazotrophs (BERVO:8000782) |
Microbial functional group | "diazotroph" 3, "nitrogen fixer" 1 | |
Fungi (BERVO:8000783) |
Microbes | NCBITaxon:4751 |
4 |
Mycorrhizal fungi (BERVO:8000784) |
Fungi | "myco" and "mycorrhizal" in 6 | |
Plant functional type (BERVO:8000785) |
Concept | pft in 8 labels and 266 EcoSIM names, 15 definitions |
|
Chemical transformation (BERVO:8000786) |
Process | "transformation" in 24 labels | |
Time step (BERVO:8000787) |
Time | 19 labels | |
Iteration (BERVO:8000788) |
Concept | 5 labels | |
Water potential (BERVO:8000789) |
Physical property | 22 labels | |
Turgor potential (BERVO:8000790) |
Water potential | 4 | |
Osmotic potential (BERVO:8000791) |
Water potential | 4 | |
Latent heat (BERVO:8000792) |
Heat | 7 | |
Sensible heat (BERVO:8000793) |
Heat | 4 | |
Convective heat (BERVO:8000794) |
Heat | 6 | |
Field capacity (BERVO:8000795) |
Water content | ENVO:06105302 |
8 |
Wilting point (BERVO:8000796) |
Water content | ENVO:06105303 |
6 |
Population (BERVO:8000797) |
Concept | 12 labels | |
Primary axes (BERVO:8000798) |
Concept | 8; Secondary axes existed | |
Groundwater (BERVO:8000799) |
Water | ENVO:01001004 |
68 definitions |
Dissolved organic matter (BERVO:8000800) |
Chemical pool | 7 labels | |
Particulate organic matter (BERVO:8000801) |
Chemical pool | ENVO:04000012 |
1 label; the parallel of DOM |
Particulate organic carbon (BERVO:8000802) |
Organic carbon | ENVO:04000013 |
1 label; the parallel of DOC |
The 29 variables whose label says "demand" carried attributes=Uptake. They
now carry Demand. No other variable was changed.
Placement notes
- The microbial groups sit under Microbes in two ways. Fungi is a taxon-like
group beside Bacteria, with Mycorrhizal fungi beneath it. The rest are
metabolic roles under Microbial functional group, and Aerobic heterotrophs,
Fermenters, and Denitrifiers sit under Heterotrophic microbes, Nitrifiers
under Autotrophic microbes, and the two kinds of methanogen under
Methanogens. The set is the set EcoSIM parameterizes. Two of them are
modes rather than pools in the model, and their
Commentsays so: fermentation is an anaerobic mode of the heterotrophic carbon pool, and the acetotrophic and hydrogenotrophic methanogens are two pathways of one methanogen pool. The terms exist for the parameters that name them. This is as far into microbial metabolism as BERVO means to go. - Methanogens are archaea. BERVO has no Archaea term, so the group sits as a
metabolic role; if Archaea is added (
NCBITaxon:2157) it is a second parent. EcoSIM's parameters call the aerobic heterotrophs aerobic bacteria, and the term'sCommentrecords that. - Latent, Sensible, and Convective heat sit under Heat as kinds of heat, not
under Heat flux. The variables that name them are fluxes, and those carry
Heat flux in
attributesalready; the new terms went inmeasurement_ofs, saying which heat the flux is of. Done, and the three no longer sit flat.
They were added as three siblings, which read as alternatives. They are not. Latent and Sensible divide heat by thermodynamic form, by what a transfer does to a body. Convective divides it by transfer mechanism, by how the energy moves. Heat carried convectively is also sensible heat. Two grouping classes now hold the two axes apart:
Heat (BERVO:8000092)
Heat by thermodynamic form (BERVO:9000036)
Latent heat, Sensible heat
Heat by transfer mechanism (BERVO:9000037)
Convective heat, Conductive heat, Radiative heat
Conductive heat (BERVO:8000803) and Radiative heat (BERVO:8000804) were
added with the groupings, because an axis with one member is not an axis and
the variables name all three mechanisms. A variable may carry one term from
each axis, and six now do, such as Ecosystem sensible heat flux, whose
definition says "through conduction and convection".
Counts: Latent 11, Sensible 5, Convective 11, Conductive 5, Radiative 1. The
generic Heat went from 62 rows to 49. Five rows are fluxes by their units
that had no Heat flux attribute and now do.
Heat capacity, Heat flux and Heat content remain flat under Heat. They are
quantities of heat rather than kinds of it, and sorting that out is a
separate question.
- Dissolved organic matter and Particulate organic matter have Chemical pool
as Category and Organic matter as a second parent, as Soil organic
matter does. Particulate organic matter also takes Particulate matter,
mirroring ENVO.
- Plant functional type sits under Concept beside Taxon. It is a way of
classing plants, not a plant and not vegetation.
- Iteration sits under Concept rather than under Time. A solver pass is not
an interval of time.
- Field capacity and Wilting point sit under Water content, which is what
ENVO says they are. ENVO:06105303 is labelled "permanent wilting point"
there; that is an exact synonym here.
- Chemical transformation carries transformation as a related synonym,
since that is the word the 24 variable labels use. It is not exact: the
bare word is wider, and Plant transformant uses it in the genetic sense.
Remaining gaps
These were found in the same pass and not acted on.
Processes. Process has 24 descendants (#51 folded in Biological process, Fixation and Community assembly process, which sat beside it under Concept). The variables name many more processes than that, mostly in definitions: Photosynthesis (61 definitions; only C4 photosynthesis exists and it sits under Concept), Decomposition (101), Transpiration (32), Evapotranspiration (24), Nitrification (31), Denitrification (29), Deposition (35), Interception (32), Infiltration (26), Leaching (21), Dissolution (21), Immobilization (13), Volatilization (12), Freeze-thaw (12), Exudation (8), Ebullition, Adsorption, Disturbance (18), and Growth respiration and Maintenance respiration under Respiration.
Phenology. Leafout (12 labels), Senescence (7), Leafoff (5), Hardening (5), Dehardening (5). Phenological progress and Growth stage exist and are referenced once between them.
Management. Land management and Amendment have no children. Fertilizer, Harvest, and Irrigation sit directly under Concept. The variables name Planting (7), Side-dressing (5), Tillage, Manure, Lime, Crop residue. Crop is in 67 definitions with no concept.
Spatial. Column (8 labels, 361 _col EcoSIM names) and Profile (49
definitions, 304 _vr names) are the two dimensions the EcoSIM set is
resolved over and neither has a concept. Watershed (22 definitions) and
Permafrost (10) have ENVO classes.
Existing concepts that should change
- Non-structural carbohydrate and Non-structural organic compounds live under Chemical pool; 38 labels say "nonstructural" and no synonym bridges the hyphen. Non-structural C3 content sits under Content.
- Reserve is what the variables call storage (13 labels, 106 definitions).
- Aqueous is what the variables call dissolved (39 labels).
- Altitude is what CHESS calls elevation.
- Surface carries
boundaryas an exact synonym; in 23 labels "boundary" means the model domain edge. - Surface, Ground surface, Soil surface, and Land surface sit apart, and Soil
surface lists
ground surfaceas its own synonym. - Canopy could sit under Vegetation; Snowpack under Environmental feature; Rainfall under Precipitation with Snowfall added; Harvest, Fertilizer, and Irrigation under Land management; Water table under Subsurface. Ecosystem, Biome, Landscape, Region, Zone, Grid cell, Habitat, and Community are all loose under Concept.
- Dead standing tree should carry
standing dead(4 labels). - Chemical transformation sits under Process beside concepts its definition
covers: Hydrolysis and Release are chemical transformations, and so, in the
chemical sense, is Fixation. A query for variables whose quantity is a
chemical transformation finds the transformation rows and misses the 13
Fixation variables. Erosion and Uptake, which the variables use as
processes in
attributes, sit under Concept rather than Process.
Variables that should point at the new concepts
Tracked as issue #83, and done in slices. The five bullets below were the first slice; all five are settled.
Rock fraction and the two "Soil volume including macropores and rock" rows name Rock and reference nothing.Done. All three name Rock inmeasurement_ofs, and the two volume rows name Macropore beside it.Eleven of the 27 Sediment variables haveDone, with a split. Seven of the eleven are erosion of a substance carried as sediment (carbon, urea, ammonium, aluminum) and takemeasured_ins=NA.measured_ins=Sediment. Four measure the sediment itself and takemeasurement_ofs=Sedimentinstead: Erosion rate, Hourly sinking rate, Sediment transport, and Sediment erosion. Hourly sinking rate takesmeasured_ins=Water, since the particles settle through the water column. Three Sediment variables leavemeasured_insempty because no material is the medium (they heldNAuntil issue #127).Unsaturated water flux should sit in Unsaturated zone.Done.The 17 Land surface variables reference Land surface 7 times.Done, ten of the seventeen, up from six. Four of the seventeen gained it: Altitude of landscape, Altitude of grid cell, Measurement of altitude, and Measurement of slope, each with Altitude or Slope beside it inmeasurement_ofs. Three rows outside the seventeen gained it too, theMeasurement of slopechildren Azimuth, Sine, and Cosine of slope. Land surface is now named by 14 rows in all. The seven of the seventeen left are roughness heights, the wind speed measurement height, and the two boundary layer terms; none of those six is about the land surface. Zero plane displacement height is the seventh. It is a height above the ground surface, but what it measures is canopy drag, so it takescontexts=Canopy|Vegetationinstead.Nothing references Vegetation except Fractional vegetation cover.Done, fourteen rows. Zero plane displacement height takescontexts=Canopy|Vegetation. EveryPlant management variablerow that is about vegetation takescontexts=Vegetation: the eight planting and harvest date rows, the stand-replacing disturbance flag, the species death flag, Type of harvest, and Thinning of plant population. A date does not measure vegetation, so the column iscontextsand notmeasurement_ofs;Date of firesets the same precedent.
Harvest (BERVO:8000003) is now named in one column only. The five harvest
rows take it in contexts, and the two rows that already named it were moved
there: Harvest efficiency had it in measurement_ofs, Harvest cutting height
in measured_ins. Harvest is an event, not a material, so neither of those
columns can hold it. Harvest efficiency was left with nothing in any relation
column by that move, so it took what it actually measures: it is
FracBiomHarvsted, the fraction of biomass harvested, and it now reads
attributes=Fraction, measurement_ofs=Biomass, contexts=Harvest.
Plant or Vegetation. Both are now in use in the Plant management
variable block and the two concepts say which is which. Plant
(BERVO:8000021) sits under Organism and is "a multicellular organism that
typically produces its own food through photosynthesis". Vegetation
(BERVO:8000716) is "plant cover of an area taken as a whole, without
regard to the taxa that compose it". So a row about organisms or taxa takes
Plant, as Number of plant species does, and a row about the stand on a piece
of ground takes Vegetation, as the planting and harvest dates do. The later
slices of #83 should follow that split rather than re-deriving it.
One row in the block was left with no relation at all: Match plant functional
type from different scenarios (BERVO:0001059). Its label and its definition
did not agree with each other, which wanted settling before anything was
linked to it. Issue #160 settled it from the EcoSIM source. LSG_pft is the
landscape grazing section number, which groups the same plant functional
type across grid cells so they are grazed alike, not scenario bookkeeping.
The row is now Landscape grazing section number of a plant functional type,
with Landscape in contexts, Plant functional type in measurement_ofs and
Category in value_types. The _pft slice later added Plant functional
type to its contexts as well, as on every _pft row, so the per-type
resolution holds without a gap across all of them; it is the one row that
names the concept in two columns.
The heat kinds were the second slice of #83, the water potential terms the
third, field capacity and wilting point the fourth, the microbial guilds the
fifth, chemical transformation the sixth, the _pft variables the
seventh, population the eighth, and time step the ninth. What remains is
the other per-type suffixes named at the end of the _pft paragraphs below,
and the older backlog, labels that name a concept their row does not
reference.
The _pft slice put Plant functional type in contexts on 264 of the 266
rows whose EcoSIM name ends _pft, beside what the column already held on
143 of them. contexts is where a condition of the value goes, and a value
given for one plant functional type is such a condition, as Landscape is on
the landscape grazing section row. In the EcoSIM source, 194 of the 266 are
allocated over JP or JP1, and one more, QdewCanopy_CumYr_pft, is
allocated over JZ but indexed by NZ, the plant functional type,
everywhere it is used. A few are physical quantities that could look like
they are only stored per type, but are not: AirConc_pft is computed from
each type's own canopy temperature, Km4RubiscoCarboxy_pft from each
type's leaf oxygen, and XKCO2_pft, XKO2_pft and Km4PEPCarboxy_pft are
read from the per-type trait file. The other 71 are names no longer in the source (see
below). For them the reading rests on the _pft suffix and on comparing
names, not on reading the code: their closest current names are _pft
arrays or per-type trait tables such as CanopyPARalbedo_tab, allocated
over npfts and copied into RadPARLeafAlbedo_pft.
The two left out are Canopy leaf area index and Canopy stem area index
(BERVO:0001879, BERVO:0001880). They came in with the ATS alignment as
the general quantities, and their EcoSIM names record only where the
coupling writes ATS's column value, split evenly among the plant functional
types. A per-type context would narrow them below what they are. The leaf
area index row also carries the AmeriFlux and ODM2 leaf area index
mappings; the stem area index row has no mapping beyond ATS.
Two things turned up on the way and were not changed. 69 of the 266
EcoSIM Variable Name values are no longer in the EcoSIM source, and two
more survive only as a history field name (Root1stDepz_pft) or in a
commented-out line (NodulStrutElms_pft). Most have
a close match under a new name (LeafSWabsorpty_pft against
LeafSWabsorptivity_pft); some do not map one to one (CanopyHeight_pft is
gone, and the source has CanopyHeightLive_pft and CanopyHeightDead_pft).
just find on a current name misses all 71. And
the _brch (70), _pvr (41) and _node (13) variables are also resolved
per plant functional type, per branch, per root layer or per node within
it; whether they take the context too is a question for the slice that
settles them. Two rows read as per type but are not: the minimum N:C and P:C
in leaves and in grain "relative to max values from PFT file"
(BERVO:0000179, BERVO:0000180) are ZPLFM and ZPGRM, single
constants (0.33 and 0.75) applied to each type's maximum.
Checking the contexts cells for this slice turned up an older error: 19
rows had Precipitation in contexts because their labels contain "rain"
inside another word, "grain" or "strain". They were the fifteen grain and
seed variables (BERVO:0000153, 0000180, 0000626, 0000646,
0000661, 0000722, 0000723, 0000724, 0000734, 0000768,
0000817, 0000818, 0000819, 0000821, 0000823) and the concepts
Grain growth, Grain number, Strain change effect and Strain change type.
Precipitation is removed from all 19, and nothing replaces it. Four of the
variables (0000153, 0000180, 0000821, 0000823) now name no grain
or seed concept in any column, which is left for the slice that settles the
grain rows. The same kind of match put the qualifier Current on Number of
concurrently growing nodes (BERVO:0000812) and Initial on Branch
phenological flag for leafout initialization (BERVO:0000795); both are
removed.
The population slice named Population in measurement_ofs on four rows,
beside Plant on the three that had it, following the wastewater rows that
already measure a Population: Plant population (BERVO:0000725), Initial
plant population (BERVO:0000752), Plant population at seeding
(BERVO:0000757), and Thinning of plant population (BERVO:0001037), whose
column was empty. Each is about the plants of one plant functional type, a
population in the concept's sense, "organisms of one kind". The two density
rows also took Number density in attributes and Quantitative value in
value_types, which they lacked, as Stem count per unit area has.
Total plant population (BERVO:0000756) is left out, because it sums every
plant functional type in the grid cell, more than one kind. So are the
microbial cell density rows, since Microbes spans guilds, and the generic
Stem count and Organism count per unit area. The seven rows whose labels
speak of demand "by all microbial, root, myco populations", "by each root
population" or "by any microbial population" use the word for the organisms
themselves; they measure a demand, and already name Root or Microbes in
measured_ins.
EcoSIM declares the initial and seeding populations in plants per grid cell
([plants d-2]), but the code multiplies them by the grid cell's area to get
a count of plants, so they are densities, and their m-2 stands. Their
Comments say so. The field they are multiplied into, PlantPopuLive_pft, is Plant
population; its EcoSIM Variable Name was the stale PlantPopulation_pft,
one of the 71 above, and now gives the current name. Thinning of plant population also took Fraction in
attributes: EcoSIM's THIN_pft is the "fraction of population removed"
(PlantDisturbByGrazingMod.F90), as Harvest efficiency is a fraction with
Fraction there.
The time step slice put Time step in contexts on 28 rows and Iteration on
4. Both concepts say where in the model's clock a value holds, which is a
condition of the value, as Plant functional type is; which step it is
(Previous, Current) stays in qualifiers. The 28 are the 19 rows whose
labels say "time step", the "Current" partners of two of them (the
inorganic phosphate demand rows BERVO:0000020 and BERVO:0000022), the
current and previous step root water uptake profiles (BERVO:0000392,
BERVO:0000393), and five rows whose EcoSIM names mark a step boundary
though their labels do not: the canopy water and litter water values
before and at the mass balance check (BERVO:0000594, BERVO:0000595,
BERVO:0001158, BERVO:0001159), which BalancesMod.F90 carries from one
step's end to the next step's beginning beside the snow and soil water
ones, and Longwave radiation emitted by canopy in previous time step
(BERVO:0000577, relabelled in this slice), which is
LWRadCanGPrev_col, last hour's emission, and also took Previous.
Iteration went on the four rows that hold a value within a solver pass:
Canopy temperature during canopy energy iteration (BERVO:0000611), the
snow redistribution flag, the soil air volume change between iterations,
and Surface runoff in iteration M. Canopy temperature after energy
iteration (BERVO:0000608) does not take it. In UptakesMod.F90 the
during-iteration temperature TKCanopy_pft is the one the loop updates,
and TKC_pft takes its value once the loop has converged, so it is the
canopy temperature of the time step.
The Initial rows (t0 in EcoSIM) are values at the start of the
simulation, not of a time step, and are left alone.
The chemical transformation slice put Chemical transformation in attributes
on 22 of the 24 rows whose label says "transformation", all of which had NA
there (as these columns did until issue #127), and on the two iron adsorption rows below.
That is the column the other processes named as the quantity of a variable
already use: Fixation on 13 variables, Mineralization on 6, Erosion on 23.
(Counting every row gives 14, 7, and 24, because each of the three concept
rows names itself in its own attributes.) Each of
the 24 is the net rate of change of a pool by reaction, sorption,
precipitation, or dissolution, which is what the concept's definition says,
and the substance stays in measurement_ofs on all but one. Three rows in
the set, and the two microbial gas rows, had none there and now do: Nutrient
on the band nutrient row, Ion on the boundary ion row, Iron dihydroxide on
Total iron hydroxide adsorption, since FeO2H2 is the dihydroxide, and Gas on
the two microbial gas rows. (The iron and aluminum
hydroxide concepts want a look of their own: Iron hydroxide carries the
synonym Fe(OH)3, which is the trihydroxide's formula, Aluminum dihydroxide
carries Al(OH)3, and the AlO2H2 row names Aluminum hydroxide.)
Total iron adsorption and Total iron hydroxide adsorption (BERVO:0001730,
BERVO:0001731) take it too, though their labels say adsorption. They are
TRChem_Fe_sorbed_soil_vr and TRChem_FeO2H2_sorbed_soil_vr, in the same
run as the ten adsorbed transformation rows, and the EcoSIM source treats them
as rates: they are set beside TRChem_AlO2H2_sorbed_soil_vr, which is declared
[mol d-2 h-1], reset each hour with it, and the FeO2H2 one is subtracted
from the dissolved pool as the AlO2H2 one is. Their unit was mol.m-2 and
their definitions spoke of a total amount; both now say a rate, in
mol.h-1/{grid} like their siblings.
The other two transformation rows, Microbial gases transformation and Total
microbial gases transformation (BERVO:0000919, BERVO:0000920), take Uptake
instead. Their labels follow EcoSIM's own comment on trcs_RMicbUptake_vr,
"microbial gases transformation", but the code fills it with net microbial
uptake of each gas (RCO2NetUptkMicb, RCH4UptkAutor, RH2NetUptkMicb in
MicBGCAPI.F90), and the transport code takes a positive value as a sink.
The labels may want to say uptake too; that is left to a change of its own.
The one left without a substance is Total adsorbed hydroxide transformation
non-band (BERVO:0001732), because its label is not what its EcoSIM variable
holds. trcx_TRSoilChem_vr is the whole array of adsorbed-species rates the
geochemical solver returns (GeochemAPI.F90): ammonium, the surface hydroxyl
and protonated hydroxyl groups, hydrogen phosphate, and dihydrogen phosphate,
each in both the non-band and the fertilizer band soil. Hydroxide is one
member and "non-band" is half of it. The definition is further off: it calls
the variable a cumulative amount, though the unit is a rate, and it reads
"band" as an oceanic region rather than a fertilizer band. The row wants a
new label and definition together, settled with someone who knows the
solver, and until then naming Hydroxide would only make the mistake firmer.
The microbial guild slice named a guild in measured_ins on 115 rows, the
column where 102 rows already named Microbes, 90 of them variables. 66 still
do. Where a row named Microbes, the
guild replaced it (36 rows), since every guild sits beneath Microbes. Where a
row named another medium, such as Soil, the guild went beside it (37 rows), as
Soil|Microbes already did for heterotrophic respiration. The other 42 rows had
NA, which issue #127 later emptied. The rows came from labels and definitions that name the guild or its
process: heterotrophic 32, autotrophic 20, nitrifiers 15 (the ammonia and
nitrite oxidation rows among them), denitrifiers 12, methanogens 9 (six of
them on the hydrogenotrophic and acetotrophic terms), diazotrophs 12 (the
nodule nitrogen fixers among them, since Diazotrophs covers symbionts),
fermenters 4, methanotrophs 5, fungi 3, aerobic heterotrophs 3 (EcoSIM's
"aerobic bacteria"), and mycorrhizal fungi 1, which takes
Root|Mycorrhizal fungi because it is an exchange between the two. 21 of the
115 are the NitroPars.txt oxidation rates, half-saturation constants, and
growth efficiencies, which name their guild in the label, or, on the carbon
dioxide and methane half-saturation constants, in the definition. The five
heterotrophic nitrate, nitrite and nitrous oxide uptake rows
(BERVO:0001005-BERVO:0001009) had Microbes alone, where their band and
non-band neighbours had Soil beside it; all ten now read
Soil|Heterotrophic microbes. The plant nitrogen fixation rows follow the same
rule, medium and guild together: Root nitrogen fixation, its vertical profile,
Total root nitrogen fixation, Total plant nitrogen fixation, and Nitrogen
fixation yield from carbon oxidation keep Root or Plant and take Diazotrophs
beside it, since the bacteria in the nodules do the fixing.
Left out on purpose: the plant autotrophic respiration rows, which are plant
metabolism and not autotrophic microbes; the Gibbs free energy yields of the
redox reactions, which are properties of the reactions; Surface litter organic matter in the autotrophic complex
(BERVO:0001157), whose definition is about photosynthetic organisms; and
Minimum ratio of branch or mycorrhizae to root (BERVO:0000157), whose label
names a branch and whose definition does not. Issue #160 settled both from the EcoSIM
source: BERVO:0001157 is the carbon of the autotrophic microbes in surface litter
and is now Surface litter autotrophic microbial biomass carbon, and the label of
BERVO:0000157 was right, so its definition was widened to cover branches.
Heterotrophic respiration as methane (BERVO:0000011) names two guilds,
Soil|Methanogens|Methanotrophs. Its label says heterotrophic, but in EcoSIM
ECO_HR_CH4_vr is set from RCH4UptkAutor (RedistMod.F90), which
MicBGCFGMod.F90 computes as microbial methane production netted against
methanotroph oxidation: "complete net microbial CH4-C uptake; negative values
represent production". Neither guild sits under Heterotrophic microbes, and
the variable is not production alone. It is the one row counted under both guilds
above.
Naming an organism group in measured_ins follows the precedent the rows
already set, but the ontology is not uniform on it. Microbial cell density
and Colony-forming unit density (BERVO:0001987, BERVO:0001990) put
Microbes in measurement_ofs and point at BERVO:involves_taxa, an object
property with no template column. If that property gets a column, the guild
rows here and the rows still naming Microbes are the set to move.
The water potential slice put the terms in attributes rather than
measurement_ofs, because Water potential sits under Physical property and
that is overwhelmingly where the Physical property tree is used. Of its 45
descendants, 25 are referenced at all, and between them they account for 491
uses in attributes against 4 everywhere else: 117 rows for Concentration, 75
for Content, 53 for Diffusivity. Three descendants are the exceptions, and all
four stray uses are in measurement_ofs: pH (2 uses, and none in
attributes), Non-structural C3 content (1, likewise none), and Mass (1,
against 62). The heat kinds went in measurement_ofs because they sit under
Heat, which is a form of energy and not a property. The column follows the
concept's own parent.
Water potential had two components and the variables name four. Matric
potential (BERVO:8000805) and Gravitational potential (BERVO:8000806) were
added beside Turgor and Osmotic, which completes the classical decomposition.
Root total water potential says so itself: "the sum of osmotic, turgor, and
matric potentials".
Field capacity and Wilting point went in contexts, on twelve rows. That is
an exception to the rule above, and it follows an older one. Both are named
states of soil water, and a variable is measured at them: a water potential
at field capacity is a water potential. The rows that say "at standard ambient
temperature" and "dewpoint" already put the reference state in contexts and
the quantity in attributes, and Daily dewpoint temperature does so even
though the variable is the dewpoint itself. The water content rows follow
Dewpoint. So each term is named in one column only, as Harvest is.
Three field capacity rows carried attributes=Capacity|Water potential.
Capacity was standing in for field capacity, and a water potential is not a
capacity. Those three now carry Water potential alone.
The two automatic irrigation thresholds are fractions of the water held
between the two points, so they name both. Excess water (BERVO:0001769) was
left out. Its definition says "beyond field capacity" once, and its own
quantity is mobile water, not a state of the soil.
A sweep for concepts that a variable's label names but its own columns do not reference filled 62 cells beside the earlier slices. The concepts were mostly added for the ODM2 alignment and the concept gap review, and few rows used them:
attributes: Hydraulic conductivity on five rows. On the root water uptake one it replaced Uptake, which moved tocontexts, since the label names the uptake the conductivity serves. Electrical conductivity on Measured electrical conductivity; Bulk density in place of Density on the three bulk density rows.measurement_ofs: Dissolved organic matter on seven rows, in place of the generic Organic matter on four of them; Dissolved organic carbon in place of Organic carbon on Dissolved organic carbon concentration, the same move one level down.measured_ins: Petiole on the two petiole growth parameters, and on Petiole length:mass during growth, which had it the wrong way round: Growth inmeasured_insand Petiole inmeasurement_ofs. It now reads as its sibling Internode length:mass during growth does,measured_ins=Petioleandcontexts=Growth, so Petiole sits in one column on all three rows.qualifiers: Cumulative on 14 of the 15 rows whose label begins "Cumulative", the 14 that accumulate over time, beside the Total or Net they had, and on Pft cumulative nodule infection and Pft cumulative phosphorus uptake, the two siblings of Pft cumulative nitrogen uptake, which already carried it; Gross on the three gross primary productivity and gross carbon dioxide fixation rows; Daily on seven, Yearly on the two mean annual rows, Current on three, Hourly on one, Gaseous on two, Aqueous on two; Total on the five "Total … solids" rows.
Left out: Cumulative depth to bottom of snowpack layer (BERVO:0001570), a
sum down through layers rather than over time. Gross alpha activity and Gross
beta activity (BERVO:0002116, BERVO:0002117), where gross means the
nuclides are not told apart, which is not what Gross means here. The row
then labelled Soil electrical conductivity (BERVO:0000916), whose unit
mol/{grid} is not a conductivity. Here the label is what is wrong: EcoSIM
declares UION_col as "total soil ion content, [mol d-2]", which agrees
with the row's unit, its attributes=Content, and its measurement_ofs=Ion.
The fix is a relabel to a soil ion content, with the conductivity label
dropped, and that belongs to a change of its own. Issue #109 made it: the
row is now Soil column ion content. The two thermal conductivity
rows (BERVO:0001486, BERVO:0001487), which are the numerator and the
denominator of a formula rather than conductivities. The two parameters to
calculate an hourly air temperature and vapor pressure from the daily value
(BERVO:0001321, BERVO:0001327), which keep Hourly alone: the daily value is
their input, and the quantity they set is hourly. The nine root primary
axes rows: Secondary axes is named in contexts on one row and in
measurement_ofs on another, so the column for Primary axes is not settled.
Behind this is an older backlog: 128 labels name Carbon and do not reference it, 69 Water, 62 Irrigation, 45 Soil.
A sweep keyed on the EcoSIM name would reach rows the label sweeps cannot.
44 variables have _CumYr in their EcoSIM name, a total accumulated from the
start of the year. 34 of them lack Cumulative and none carries Yearly. Their
labels mostly say "Total" (24 of the 44), such as Total canopy ammonia flux
(NH3Emis_CumYr_pft), and the twelve fire emission rows (*byFire_CumYr_*)
carry no time qualifier at all.