For agents & scripts

A small JSON API over the catalog

Everything here is a static file on a CDN. No key, no rate limit, CORS open. 50 of 120 entries serve a class hierarchy that was extracted from the published source file; the rest deliberately serve none, and say why.

Endpoints

GET /api/catalog.json

Every entry: metadata, licensing with the operative terms, and hierarchy status.

GET /api/ontology/<id>.json

One entry, plus its class hierarchy when verified, a worked SPARQL example, and sample instance data.

GET /api/verified.json

Just the ids whose hierarchy is source-verified. Use this to filter before you trust a tree.

POST /api/recommend

{"prompt": "what you are modelling"} — returns recommended ontologies with reasons. Backed by a language model on a personal key, so treat it as best-effort.

The two fields that matter

hierarchy.status

verified — extracted from hierarchy.source on hierarchy.retrievedAt. withheld — no hierarchy is served; hierarchy.reason says whether that is a licence restriction, the wrong artifact shape, or simply that it was never verified. Never treat a withheld entry as having an empty hierarchy — it has an unpublished one.

licence.redistribution

redistribution — you may republish. attribution_required — republish with the notice in licence.notice. reference_only — link to it, do not copy it. no / unverified — do not republish. Some entries carry licence.shareAlike, which propagates to whatever you generate from them.

Example

curl -s https://ontology.guru/api/verified.json | jq -r '.ids[]'

curl -s https://ontology.guru/api/ontology/prov-o.json \
  | jq '{id, licence: .licence.id, classes: (.classHierarchy | length)}'

curl -s -X POST https://ontology.guru/api/recommend \
  -H 'Content-Type: application/json' \
  -d '{"prompt": "sensor readings from building equipment"}' | jq '.recommendations[].id'

Please read

This is a personal project, not a company product. Licence summaries are made in good faith from primary sources and are not legal advice — check the licence yourself before you redistribute anything. The pruned hierarchies are subsets chosen to be readable, not complete ontologies; hierarchy.classesInSource tells you how much was left out. If you find something wrong, the extraction command is recorded on every verified entry so you can reproduce it.