---
name: ontology-guru
description: >-
  Look up whether a published ontology already models a given domain, and whether
  its licence permits reuse. Use when the user is designing a data model, schema,
  knowledge graph, or RDF vocabulary; when they ask "is there a standard for X?";
  when they name an ontology (FOAF, PROV-O, SNOMED CT, FHIR, schema.org, QUDT, …)
  and want its class structure or licence; or before writing a bespoke schema for
  a domain that likely already has one.
---

# ontology.guru

A catalogue of 120 published ontologies at `https://ontology.guru`, served as static JSON.
No key, no rate limit, CORS open.

Its distinguishing feature is that it separates what was checked from what was
not. **Preserve that distinction in anything you tell the user** — flattening it
is the one way to misuse this source.

## Workflow

1. **Find candidates.** Fetch `https://ontology.guru/api/catalog.json` once (it is the whole
   catalogue, no pagination) and filter locally on `category`, `tags`,
   `description`, and `useCases`. Do not fetch 120 individual entries.
2. **Check the hierarchy is real.** Only entries with `hierarchy.status ==
   "verified"` have a `classHierarchy`. 50 of 120 qualify.
3. **Read the detail.** `https://ontology.guru/api/ontology/<id>.json` adds
   `classHierarchy`, a worked SPARQL `workedExample`, and `sampleData`.
4. **Check the licence before recommending reuse.** See below.
5. **Report with provenance.** When you show a tree, carry `hierarchy.source`
   and `hierarchy.retrievedAt` with it.

## The two fields that decide trust

`hierarchy.status`
: `verified` — parsed from the ontology's own published file; `hierarchy.source`,
  `retrievedAt`, `classesInSource`, `classesShown` and `extractionCommand` all
  present. `withheld` — **no hierarchy is served, deliberately.** Report the
  `reason`, never "0 classes". Reasons in use: `licence`, `unverified`, `unverified-licence`, `wrong-artifact`, `wrong-shape`.

`licence.verified`
: `true` for 26 of 120. Those carry `licence.id`, `redistribution`,
  `attribution`, `shareAlike`, and `notice` (the exact attribution text to
  reproduce). `false` for the other 94 — the label was never checked
  against the licence text, and you must say so when you pass it on.

`licence.redistribution` values:
- `attribution_required` — you may republish it if you carry the notice in `licence.notice`
- `no` — do not republish it
- `redistribution` — you may republish the ontology
- `reference_only` — link to it, do not copy it
- `unverified` — the terms were never established — treat as "do not republish"

1 entry is share-alike; the obligation propagates to anything derived
from it. Licence summaries here are made in good faith from primary sources and are not legal advice. Check the licence yourself before you redistribute anything.

## Endpoints

| Endpoint | Returns |
| --- | --- |
| `GET /api/catalog.json` | Every entry: metadata, licensing, hierarchy status |
| `GET /api/ontology/<id>.json` | One entry + class hierarchy, worked query, sample data |
| `GET /api/verified.json` | `{count, ids}` — the source-verified ids only |
| `POST /api/recommend` | `{"prompt": "..."}` → prose recommendations. Best-effort model call; do not build a pipeline on it |

```bash
curl -s https://ontology.guru/api/verified.json | jq -r '.ids[]'
curl -s https://ontology.guru/api/ontology/prov-o.json \
  | jq '{licence: .licence.id, status: .hierarchy.status, classes: (.classHierarchy | length)}'
```

## Rules

- A `withheld` entry has an **unpublished** hierarchy, not an empty one.
- `classHierarchy` is a **pruned, readable subset**. Compare `classesShown` with
  `classesInSource` and say which you are showing. Never call it the full ontology.
- The root node is synthetic in 40 of the 50 verified trees: a node literally
  named `Root`, inserted because the source has several top classes. It is not a
  class in the ontology — do not report or count it.
- Never state an unverified licence label as fact.
- Never invent an id — enumerate them from `catalog.json`.
- The upstream file at `homepage` is the authority; this catalogue is an index.

## MCP server

If MCP is available to you, `https://ontology.guru/mcp` exposes the same catalogue as
5 read-only tools (`search_ontologies`, `get_ontology`, `check_licence`, `list_verified`, `recommend_ontologies`) over stateless
Streamable HTTP — no key, no session. `claude mcp add --transport http ontology-guru https://ontology.guru/mcp`.
Prefer it over raw HTTP when you have it; the tools carry the same warnings inline.

## Deeper reference

`https://ontology.guru/llms-full.txt` has the field-by-field reference, more recipes, and the
complete 120-entry index in one fetch.
