Skills for querying ontologies using the Ontology Access Kit (OAK). This should only be used for complex ontology operations, for basic external ontology searching use the OLS MCP
Scanned 9/8/2026
Install to Claude Code
npx -y skills add mattnigh/skills_collection --skill collection --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Collection?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mattnigh-collection-feabc26e)More formats (shields.io, HTML) on the badges page.
---
name: ontology-access-kit
description: Skills for querying ontologies using the Ontology Access Kit (OAK). This should only be used for complex ontology operations, for basic external ontology searching use the OLS MCP
---
# OAK Guide
## Overview
OAK is a powerful command line library for accessing ontologies. It can be installed via:
- `uv add oaklib`
- `pip install oaklib`
The main command is `runoak`
## When to use
OAK is generally to be used for more complex operations.
- if you want to do basic search over external ontologies, you should favor the OLS MCP over OAK
- if you are working with local obo files, then hacky obo tools like `obo-grep.pl` may be better
## Adapters
You typically want to use the sqlite adapter. This gives you fast access to any ontology in OBO, plus a number of other commonly used ontologies, found in semantic-sql.
Example:
`runoak -i sqlite:obo:cl COMMAND COMMAND-OPTS ARGS`
Note the `-i` comes (*before*) the command-specific opts
You can also access any ontology in OLS or BioPortal:
- `runoak -i bioportal:snomedct relationships SNOMEDCT:128351009`
- `runoak -i bioportal:efo tree -p i EFO:0004200`
But some OAK commands may not be implemented.
With OLS or BioPortal you can also do searches over all ontologies:
- `runoak -i bioportal: info l~NovaSeq`
- `runoak -i ols: info l~NovaSeq`
To work with local obo files:
- `runoak -i impleobo:my_ont.obo info MY:1234 -O obo`
## Common Operations
You can find a list of all commands with `runoak --help`. oak is highly fully featured, and you are encouraged to
explore to find the functionality you need. We provide some examples below.
We use `info` for many examples, but note that many options and arguments work across different commands
* Lookup
* By exact label: `runoak -i sqlite:obo:cl info neuron` (returns `CL:0000540 ! neuron`)
* By exact label (multiple): `runoak -i sqlite:obo:uberon info finger toe`
* Search (any match): `runoak -i sqlite:obo:cl info 'l~T cell'`
* Search (starts with): `runoak -i sqlite:obo:cl info l^neuron`
* Fetching detailed info
* OBO format: `runoak -i sqlite:obo:cl info CL:0000540 -O obo`
* relationships: `runoak -i sqlite:obo:cl relationships --direction both CL:0000540`
* mappings: `runoak -i sqlite:obo:mondo mappings 'Marfan syndrome'`
* tree (is-a only): `runoak -i sqlite:obo:cl tree -p i CL:0000540`
* metadata: `runoak -i sqlite:obo:chebi term-metdata CHEBI:35235`
* Complex queries
* subclasses: `runoak -i sqlite:obo:cl info .sub CL:0000540 | head`
* disjunctions (OR): `runoak -i sqlite:obo:cl info .sub neuron .sub 'T cell' | tail`
* conjunctions: `runoak -i sqlite:obo:cl info .sub neuron .and .desc//p=i,p forebrain` (neurons and is-a/part-of the forebrain)
* minus: `runoak -i sqlite:obo:cl info .sub neuron .minus .desc//p=i,p forebrain` (neurons and NOT is-a/part-of the forebrain)
* Visualization
* `cl viz -p i,p,RO:0002215 'dopaminergic neuron' -o /tmp/dn.png` - subgraph from a CL term.
* note that graphviz requires installing og2dot
* Subsets
* list subsets: `runoak -i sqlite:obo:go subsets` - list all subsets (goslim_prokaryote etc)
* terms in subsets: `runoak -i sqlite:obo:go info .in goslim_generic` - all terms in a subset
* terms in subsets: `runoak -i sqlite:obo:go info .in goslim_generic .minus .in goslim_prokaryote` - all terms in a subset not in another
* Other
* `runoak lexmatch --help` for aligning ontologies
* `runoak statistics --help` for summary stats
## Common Options and Idioms
### Graphs
OAK is very graph oriented, following ontologies like GO, CL
Typically for graph operations you want to operate over only is-a and part-of, so use `-p i,p`
You can also specify RO/BFO ids.
E.g.
```bash
runoak -i sqlite:obo:ro info 'capable of'
RO:0002215 ! capable of
```
```bash
cl relationships -p RO:0002215 'dopaminergic neuron'
subject predicate object subject_label predicate_label object_label
CL:0000700 RO:0002215 GO:0061527 dopaminergic neuron capable of dopamine secretion, neurotransmission
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!