Agent skill
ontology-access-kit
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
Install this agent skill to your Project
npx add-skill https://github.com/ai4curation/curation-skills/tree/main/ontology-access-kit
SKILL.md
OAK Guide
Overview
OAK is a powerful command line library for accessing ontologies. It can be installed via:
uv add oaklibpip 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.plmay 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:128351009runoak -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~NovaSeqrunoak -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(returnsCL: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
- By exact label:
- 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
- OBO format:
- 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)
- subclasses:
- 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
- list subsets:
- Other
runoak lexmatch --helpfor aligning ontologiesrunoak statistics --helpfor 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.
runoak -i sqlite:obo:ro info 'capable of'
RO:0002215 ! capable of
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
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
configure-w3id
A skill that will register a new w3id for a new github project.
ai4curation-configuration
Skill to assist with how a GitHub repository is configured with GitHub integrations, including instructions for agents in markdown (AGENTS and CLAUDE), github actions for invoking agents, and specific localization procedures such as defining claude/codex skills, or claude subagents. The skill helps with both technical aspects, and with best practice for guiding agents.
editing-obo-ontologies
Skills and tools for editing OBO format ontologies, including querying terms, checking out/checking in individual terms, and following OBO format conventions. Do not use this if the source for the ontology you are editing is not in obo format (e.g. ofn)
robot-obo-tool
Skills for using ROBOT, the OBO ontology command-line toolkit for reasoning, template-based term creation, quality control, format conversion, and ontology manipulation. Use this when working with OWL/OBO ontologies that need automated processing.
dosdp-design-patterns
Skills for understanding and applying DOSDP (Dead Simple Ontology Design Patterns) to ensure consistent ontology term creation and maintenance. This skill is about recognizing patterns and ensuring consistency, not using dosdp-tools directly.
migrate-to-skills
Didn't find tool you were looking for?