Skip to content

Absorb metals cohort into v1 as v1.2 Path B extension#78

Merged
realmarcin merged 2 commits into
mainfrom
claude/metpo-absorb-metals-into-v1
May 20, 2026
Merged

Absorb metals cohort into v1 as v1.2 Path B extension#78
realmarcin merged 2 commits into
mainfrom
claude/metpo-absorb-metals-into-v1

Conversation

@realmarcin
Copy link
Copy Markdown
Contributor

Summary

Consolidate the separate `metpo_communitymech_metals_v1` cohort (merged in PR #77) into v1 as a v1.2 Path B extension. Per the post-merge discussion, the metals cohort being separate was a judgment call rather than an enforced skill rule — the CHEBI-reuse policy difference can be documented as a section in v1's proposal.md without partitioning into a separate subset tag.

What changed

  • Appended the 8 class rows and 3 property rows from `metpo_communitymech_metals_v1/` to v1's TSVs.
  • Subset tag retagged from `metpo_communitymech_metals_2026_05` → `metpo_communitymech_2026_05` (single subset across the whole proposal).
  • `METPO:1008000` parent corrected from `METPO:1007100` (microbial community) to `METPO:1000000` (peer top-level domain class). Same fix pattern as METPO:1007300 in PR Extend METPO v1: AtmosphereEnum + MediaRelationshipEnum (Path B) #76's Copilot review — community-relevant metal context is not a kind of microbial community, it's a peer concept.
  • v1's `proposal.md` updated end-to-end:
    • Scope table — 3 new rows (MetalElementEnum CHEBI-reuse, RareEarthElementEnum CHEBI-reuse, MetalRelevanceEnum)
    • Top-level domain classes — now 5 rows (added METPO:1008000 for v1.2)
    • Hierarchy decisions — new subsection "MetalElementEnum and RareEarthElementEnum — CHEBI-reuse, no per-element leaves (v1.2)"
    • Predicate proposals — table now 19 rows with a Cohort column flagging v1 / v1.1 / v1.2
    • ID space — v1.2 block documented at 1008000-1008013 / 2008000-2008002 (deliberately at 1008000 rather than 1007320+ to visually separate the CHEBI-reuse classes from the all-leaves-minted v1/v1.1 classes)
    • Files — row counts updated (98 / 21 lines)
    • Change logv1.2, 2026-05 entry covering the absorption and CHEBI-reuse policy
  • `proposals/metpo_communitymech_metals_v1/` directory removed (its content lives in v1 now).

Final state on `main`

  • One cohort: proposals/metpo_communitymech_v1/
  • 96 class rows (was 88 in v1.1; +8 absorbed)
  • 19 property rows (was 16 in v1.1; +3 absorbed)
  • Same subset tag (metpo_communitymech_2026_05) on every row
  • Coverage 67/67 enum permissible values across 12 enums
  • Parent integrity 96/96 SC % references resolve

Test plan

  • awk -F'\t' 'NF != 11' classes_robot.tsv returns nothing
  • awk -F'\t' 'NF != 12' properties_robot.tsv returns nothing
  • Per-enum coverage check: 67/67 across 12 enums
  • Parent integrity check: 96/96
  • (follow-up) robot template parses both TSVs cleanly

🤖 Generated with Claude Code

Per discussion, the separate metals cohort was a judgment call rather
than an enforced rule. The CHEBI-reuse policy difference (per-element
leaves remain CHEBI IRIs) is real but can be documented as a section
within v1's proposal rather than partitioned into its own subset tag.
Consolidating into v1 reduces upstream-side bookkeeping (one subset
tag, one proposal directory to maintain) at the cost of one extra
proposal.md section explaining the CHEBI-reuse policy.

Changes:
- Append the 8 class rows and 3 property rows from the metals cohort
  to v1's TSVs. Subset tag updated from
  metpo_communitymech_metals_2026_05 -> metpo_communitymech_2026_05.
  METPO:1008000 parent changed from METPO:1007100 (microbial
  community) to METPO:1000000 (peer top-level domain class, same fix
  pattern as METPO:1007300 in PR #76 review).
- v1's proposal.md updated:
  - Scope table: 3 new rows for MetalElementEnum (CHEBI-reuse),
    RareEarthElementEnum (CHEBI-reuse), MetalRelevanceEnum
  - Top-level domain classes table: 5 rows now (added
    METPO:1008000 community-relevant metal context for v1.2)
  - New "MetalElementEnum and RareEarthElementEnum - CHEBI-reuse"
    subsection under Hierarchy decisions
  - Predicate-proposals table: 19 rows now (added cohort column,
    v1.2 entries for has_metal_element_present /
    has_rare_earth_element_present / has_metal_relevance)
  - ID space section: v1.2 block documented (1008000-1008013 /
    2008000-2008002, deliberately starting at 1008000 to visually
    separate CHEBI-reuse from all-leaves-minted classes)
  - Files row counts: 98 / 21 lines now
  - Change log: v1.2 entry covering the absorbed cohort and CHEBI-
    reuse policy
- proposals/metpo_communitymech_metals_v1/ directory removed.

Final state on main:
- proposals/metpo_communitymech_v1/ only (single cohort)
- 96 class rows + 19 property rows (was 88+16 in v1.1, plus 8+3
  absorbed from the standalone metals cohort)
- Same subset tag (metpo_communitymech_2026_05) on every row
- Coverage: 67/67 enum permissible values across 12 enums covered
  by leaf or grouping-parent class rows
- Parent integrity: 96/96 SC % references resolve

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 20, 2026 05:58
@realmarcin
Copy link
Copy Markdown
Contributor Author

ROBOT validation — passes

Replicated the kg-microbe validate_with_robot pipeline (from scripts/extract_metpo_proposals.py:1643) against this branch's TSVs using local ROBOT 1.9.6:

robot template \
  --template proposals/metpo_communitymech_v1/metpo_proposal_classes_robot.tsv \
  --prefix "METPO: http://purl.obolibrary.org/obo/METPO_" \
  --prefix "biolink: https://w3id.org/biolink/vocab/" \
  --output /tmp/cm_classes.owl

robot template \
  --template proposals/metpo_communitymech_v1/metpo_proposal_properties_robot.tsv \
  --prefix "METPO: http://purl.obolibrary.org/obo/METPO_" \
  --prefix "biolink: https://w3id.org/biolink/vocab/" \
  --output /tmp/cm_props.owl

robot merge \
  --input /tmp/cm_classes.owl \
  --input /tmp/cm_props.owl \
  --output /tmp/cm_merged.owl

robot reason --reasoner ELK \
  --input /tmp/cm_merged.owl \
  --axiom-generators "SubClass EquivalentClass" \
  --output /tmp/cm_reasoned.owl

All four steps exit 0. The reasoned OWL contains:

  • 97 METPO IRIs in classes.owl (96 minted classes + 1 external METPO:1000000)
  • 36 METPO IRIs in props.owl (19 properties + 17 referenced domain/range classes)
  • 117 METPO IRIs in reasoned.owl after ELK enrichment
  • 0 owl:Nothing equivalences (no unsatisfiable classes)
  • 0 inconsistency markers

robot report flags 4 ontology-metadata findings (3 ERROR missing title/license/description on the merged OWL itself, 1 WARN about the metpo_communitymech_2026_05 subset value not being formally declared as a NamedIndividual). All four belong to the merged-with-METPO output and disappear when the proposal lands in the real METPO ontology, which carries title/license/description and declares the subset; none reflect a problem with the proposed class or property content.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR consolidates the previously separate metals cohort (metpo_communitymech_metals_v1) into the main metpo_communitymech_v1 proposal as a v1.2 Path B extension, unifying everything under a single subset tag and removing the redundant proposal directory.

Changes:

  • Appends the metals cohort’s 8 class rows and 3 property rows into v1’s TSV templates, using the unified subset tag (metpo_communitymech_2026_05).
  • Updates v1 proposal.md to document the v1.2 extension (scope, hierarchy rationale for CHEBI reuse, predicates table, ID space, row counts, changelog).
  • Removes the now-obsolete proposals/metpo_communitymech_metals_v1/ proposal files.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
proposals/metpo_communitymech_v1/proposal.md Documents the absorbed metals extension (v1.2) and updates scope/predicate/ID-space narrative.
proposals/metpo_communitymech_v1/metpo_proposal_properties_robot.tsv Adds 3 new metals-related object properties (METPO:2008000–2008002) under the unified subset tag.
proposals/metpo_communitymech_v1/metpo_proposal_classes_robot.tsv Adds 8 metals-related classes (METPO:1008000–1008013), including the corrected top-level parent and CHEBI-reuse grouping parents.
proposals/metpo_communitymech_metals_v1/proposal.md Deleted (content absorbed into v1 proposal.md).
proposals/metpo_communitymech_metals_v1/metpo_proposal_properties_robot.tsv Deleted (properties absorbed into v1 properties TSV).
proposals/metpo_communitymech_metals_v1/metpo_proposal_classes_robot.tsv Deleted (classes absorbed into v1 classes TSV).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread proposals/metpo_communitymech_v1/proposal.md
Comment thread proposals/metpo_communitymech_v1/metpo_proposal_classes_robot.tsv Outdated
- proposal.md Context paragraph: update stale "9 community-shaped
  enums" / "14 object properties" tallies to the v1+v1.1+v1.2
  accumulated scope. Explicit enumeration of the 12 in-scope
  enums plus the 2 CHEBI-anchor enums (MetalElementEnum,
  RareEarthElementEnum) plus the 4 out-of-scope machine-identifier
  enums (DatasetTypeEnum, DatasetRepositoryEnum,
  ExternalResourceRepositoryEnum, CultureCollectionEnum) so the
  total accounting matches the Scope table and Files row counts.
- METPO:1008001 definition (community-relevant metal element):
  fix grammatical flip ("metals that community members are present
  in, oxidize, reduce, ...") which read as organisms being present
  IN metals. Reworded to: "metals (atoms or cations) ... that are
  present in the community and/or oxidized, reduced, sequestered,
  leached, or otherwise metabolized by community members" so the
  metals-are-the-passive-objects relation matches the schema slot
  MicrobialCommunity.metals_present.

Re-ran the kg-microbe ROBOT pipeline locally (robot template ->
merge -> reason --reasoner ELK with SubClass + EquivalentClass
axiom generators) - all four steps exit 0; 0 owl:Nothing
references in the reasoned output.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@realmarcin realmarcin merged commit 07443cb into main May 20, 2026
@realmarcin realmarcin deleted the claude/metpo-absorb-metals-into-v1 branch May 20, 2026 06:10
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.

2 participants