embl-ebi-ols

Query the EMBL-EBI Ontology Lookup Service API for biomedical ontology terms and hierarchies.

Updated Sep 9, 2026
One-click install
npx skills add https://github.com/xlinh2301/EditCTC --skill embl-ebi-ols-xlinh2301
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: embl-ebi-ols
Source: https://github.com/xlinh2301/EditCTC/tree/main/.agents/skills/embl-ebi-ols
Command: npx skills add https://github.com/xlinh2301/EditCTC --skill embl-ebi-ols-xlinh2301

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires polite-http, and includes scripts (resource) and references (resource) components.

What problem does it solve? Looking up biomedical ontology terms, definitions, and hierarchical relationships across hundreds of ontologies (GO, DOID, HP, ChEBI, and more) normally requires manual API calls and knowledge of the OLS4 REST endpoints. This Skill provides ready-to-run scripts that search, resolve, and navigate ontology data with built-in rate limiting compliant with EBI's Terms of Use. ## Core Features & Use Cases - Term Search & Resolution: Search 250+ ontologies by keyword, filter by ontology, use exact-match entity resolution, and autocomplete partial term names. - Hierarchy Navigation: Retrieve parents, children, ancestors, descendants, and hierarchical (transitive) relations like "part of" for any term by OBO ID or IRI. - Ontology Metadata & Stats: Fetch ontology details, root terms, properties, individuals, and OLS index statistics. - Use Case: A researcher asks "What is the parent of myocardial infarction?" — the Skill searches the Disease Ontology for the exact term, resolves its OBO ID (DOID:5844), and returns its parent terms in two scripted steps. ## Quick Start Ask the assistant to find the definition and parent terms of a disease or phenotype, for example: "Look up the term 'apoptosis' in the Gene Ontology and show its parents."

Frequently Asked Questions about embl-ebi-ols

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I search for a biomedical ontology term by keyword?▼

Run search_ols.py with --query and optionally --ontology to filter results, for example --query "diabetes" --ontology doid. Results are written as JSON to the file given by --output, including labels, OBO IDs, descriptions, and synonyms.

How do I find the parent or children of an ontology term?▼

Use get_term.py with --obo_id and --relations parents,children to fetch direct is-a relations. For transitive relations like part-of or develops-from, use hierarchicalParents or hierarchicalChildren instead.

Which ontology should I use for diseases, phenotypes, or chemicals?▼

Use doid for common human diseases, hp for phenotypes, go for gene functions, chebi for chemicals, uberon for anatomy, and cl for cell types. Use mondo only when cross-species disease context is explicitly needed.

Does the OLS API have rate limits?▼

Yes, EBI's Terms of Use allow a maximum of 5 requests per second. The provided scripts enforce this automatically through a shared HTTP client configured at 5 queries per second, so no manual throttling is needed.

How do I map a term name to its OBO ID?▼

Use search_ols.py with --exact and --ontology to perform exact label matching against a single ontology, then read the obo_id field from the JSON output. This two-step pattern resolves a name before fetching its relations.

What are the limitations of the OLS search API?▼

Search defaults to 10 results per page with a maximum of 500 rows, so large result sets require pagination via --start and --rows. Obsolete terms are excluded unless --obsolete is passed, and cross-ontology searches can return noisy duplicates without --defining.