ontology-access-kit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ontology-access-kit (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
OAK is a powerful command line library for accessing ontologies. It can be installed via:
uv add oaklibpip install oaklibThe main command is runoak
OAK is generally to be used for more complex operations.
obo-grep.pl may be betterYou 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:0004200But 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~NovaSeqTo work with local obo files:
runoak -i impleobo:my_ont.obo info MY:1234 -O oboYou 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
runoak -i sqlite:obo:cl info neuron (returns CL:0000540 ! neuron)runoak -i sqlite:obo:uberon info finger toerunoak -i sqlite:obo:cl info 'l~T cell'runoak -i sqlite:obo:cl info l^neuronrunoak -i sqlite:obo:cl info CL:0000540 -O oborunoak -i sqlite:obo:cl relationships --direction both CL:0000540runoak -i sqlite:obo:mondo mappings 'Marfan syndrome'runoak -i sqlite:obo:cl tree -p i CL:0000540runoak -i sqlite:obo:chebi term-metdata CHEBI:35235runoak -i sqlite:obo:cl info .sub CL:0000540 | headrunoak -i sqlite:obo:cl info .sub neuron .sub 'T cell' | tailrunoak -i sqlite:obo:cl info .sub neuron .and .desc//p=i,p forebrain (neurons and is-a/part-of the forebrain)runoak -i sqlite:obo:cl info .sub neuron .minus .desc//p=i,p forebrain (neurons and NOT is-a/part-of the forebrain)cl viz -p i,p,RO:0002215 'dopaminergic neuron' -o /tmp/dn.png - subgraph from a CL term.runoak -i sqlite:obo:go subsets - list all subsets (goslim_prokaryote etc)runoak -i sqlite:obo:go info .in goslim_generic - all terms in a subsetrunoak -i sqlite:obo:go info .in goslim_generic .minus .in goslim_prokaryote - all terms in a subset not in anotherrunoak lexmatch --help for aligning ontologiesrunoak statistics --help for summary statsOAK 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 ofcl 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~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.