Ontology Term Resolution (OLS4)
Resolves free-text scientific labels to real ontology IDs and validates existing CURIEs against the EBI Ontology Lookup Service.
Data & AnalyticsIntermediate★ 33,030⑂ 3,248AI score 8/10Last updated: Aug 9, 2026
What it does
Handles biomedical ontology identifiers (UBERON, CL, MONDO, HP, EFO, ChEBI, NCBITaxon, PATO, GO) by always querying EBI OLS4 live instead of recalling IDs from memory.
- Text → ID:
resolve_terms.pyescalates exact label/synonym → token → fulltext search, reporting which strategy fired and thematch_typeso partial guesses are never silently accepted. - ID → verdict:
validate_terms.pyreportsok,matched_synonym,obsolete(with replacement),label_mismatch,wrong_ontology,wrong_branch,not_found, and more. - Returns meaningful exit codes, so it doubles as a CI gate on metadata tables.
- Ships reference docs on verified OLS4 API traps, prefix↔ontology-id mappings, and curation rules.
Who it's for
- Researchers preparing submissions for GEO, ENA, BioSamples, CELLxGENE, HCA, or ISA-Tab.
- Data curators auditing ontology columns in metadata tables produced by others.
- Bioinformatics engineers automating tissue / cell-type / disease annotation in omics pipelines.
Examples
- Bulk tissue mapping:
python3 resolve_terms.py --input tissues.txt --ontology uberon --exact-only -o resolved.tsv— non-exact rows are flagged as unresolved rather than guessed. - Obsolescence check: validating
EFO:0001067returnsobsoleteplus its successorMONDO:0005135. - CI enforcement: run
validate_terms.py --input metadata.tsv --strictin GitHub Actions to block PRs containing mislabelled IDs or wrong-ontology values.
· · · Install guide · · ·
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the skills/ontology-term-resolution folder from the GitHub repo K-Dense-AI/scientific-agent-skills into my ~/.claude/skills/ontology-term-resolution/. When it's done, tell me in one line what this skill can do.
Install with a command instead
git clone https://github.com/K-Dense-AI/scientific-agent-skills.git /tmp/sas && mkdir -p ~/.claude/skills && cp -r /tmp/sas/skills/ontology-term-resolution ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Confirm Python 3.11+ is available:
python3 --version(no third-party packages needed). - Confirm network access to
https://www.ebi.ac.uk/ols4(public, no API key). - Clone the repository:
git clone https://github.com/K-Dense-AI/scientific-agent-skills.git - Create the skills directory:
mkdir -p ~/.claude/skills - Copy just this skill:
cp -r scientific-agent-skills/skills/ontology-term-resolution ~/.claude/skills/ - Restart Claude Code and try a prompt like "annotate this tissue column with UBERON IDs".
- Optional smoke test:
cd ~/.claude/skills/ontology-term-resolution/scripts && python3 resolve_terms.py "liver" --ontology uberon
View source on GitHub ↗License: MIT