open-ontologies
Plan, apply and roll back changes to a production ontology, with a blast radius report and a proof an auditor can re-check.
Install / Use
claude mcp add fabio-rovai -- npx -y github:fabio-rovai/open-ontologiesIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
OperationsSupported Platforms
Our assessment of open-ontologies
open-ontologies scores 94/100 on our quality scale, 112th of 758 Operations skills we index (top 15%).
Its MCP Server is 31 KB long, well organised into 25 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
With 1,488 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated today, so open-ontologies is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
open-ontologies compared with similar skills
All 4 of these similar skills score higher than open-ontologies; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| open-ontologies (this skill)by fabio-rovai | 94 | 1.5k | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 103.3k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.9k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.6k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 89.9k | today | MCP Server |
Frequently asked questions
- How do I install open-ontologies?
- Run
claude mcp add fabio-rovai -- npx -y github:fabio-rovai/open-ontologies. The install tabs above show the steps for each supported agent. - Which AI agents does open-ontologies work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is open-ontologies safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is open-ontologies still maintained?
- The repository was last updated today, so open-ontologies is actively maintained.
Skill content
View source on GitHub<p align="center"> <a href="docs/assets/knowledge-graph.svg"><img src="https://raw.githubusercontent.com/fabio-rovai/open-ontologies/main/docs/assets/knowledge-graph.webp" alt="A hand-drawn animation of ies-core.ttl. A person asserts the grey edges. The engine derives the green edges, and Lean 4 checks the one certificate that holds them. Four provers read the clauses and give opinions. A forged red line is refused, and a question the file cannot be asked comes back unasked." width="100%"></a> </p> <p align="center"> <sub><b>426 asserted, 259 certified, 1 rejected.</b> The engine derived the green edges. A Lean 4 checker then <i>proved</i> them. One certificate holds all 259, and one run of the checker accepts it. The red edge is a forged line. The same checker refused that line, gave exit 1, and named the rule. The run supplies each count. Nobody writes a count into the caption.</sub> </p> <p align="center"> <img src="https://raw.githubusercontent.com/fabio-rovai/open-ontologies/main/docs/assets/hqdm-audit.svg" alt="HQDM as two shipped files side by side. Left, the RDFS rendering: 23 terms used as a class but never declared drawn as hollow red rings and 12 rdfs:range declarations naming a relation drawn as red edges. Right, the OWL rendering: 190 named classes this engine found satisfiable and 39 it found unsatisfiable drawn red, with a red ring on the 39 that HermiT calls unsatisfiable, the same 39." width="100%"> </p> <p align="center"> <sub><b>The same machinery, on a file from a different group, two times. HQDM ships as two files.</b> <code>hqdmTop/hqdmFramework</code> publishes an RDFS file. MagmaCore keeps a copy of that file, byte for byte. <code>gchq/HQDM</code> publishes an OWL file. The two files fail different checks. The RDFS file has no <code>owl:</code> term and no disjointness axiom. Thus <i>no named class in that file can be unsatisfiable</i>. But the file has <b>23</b> terms that it uses as a class and never declares. It has <b>12</b> <code>rdfs:range</code> declarations that name a relation and not a class. It also has <b>13</b> pairs of names that differ by one final underscore. Three of those pairs have the same domain and the same range. The OWL file passes all three checks, and the OWL file is not coherent. The tableaux of this engine finds <b>190</b> of its named classes satisfiable. The tableaux finds <b>39</b> unsatisfiable. HermiT calls the same <b>39</b> unsatisfiable, and HermiT is an opinion in the vocabulary of this repository. This figure proves nothing, and the figure does not claim a proof. A test computes each count again, and the test also computes that intersection. For the source and the method, read <a href="docs/assets/hqdm/PROVENANCE.md"><code>docs/assets/hqdm/PROVENANCE.md</code></a>.</sub> </p>
One triple. Nothing added, nothing removed, blast radius zero. 901 consequences that were not there before.
$ printf 'load base.ttl\nplan proposed.ttl\n' | open-ontologies batch -
# the whole change: ex:hasParent rdfs:domain ex:Person
added_classes 0
removed_classes 0
blast_radius 0 triples affected
risk_score low
────────────────────────────────────────────
conservativity not_conservative_under_rule_table
new consequences 901 rule table owl-rl, in 0.04s
Each number from a shape diff tells you that this change is safe. But the change gave a new type to each individual that the property already had. The tool closes this gap. A text diff cannot show you the gap. The change is one correct line, and the text diff is one line long.
Then give the reviewer the proof. The run writes a certificate. A different
person re-verifies months later. That person needs no instance of this software
and no network. The command is oo-cert asserted.tsv derivations.tsv. The exit
code is 0, and the theorem OOCert.certificate_sound covers the result.
The checker also refuses a forged proof. Write a false conclusion into the derivation file. The same checker exits 1 and names the rule that does not hold. This is the red edge in the figure above. This refusal, and not the headline, is the part that survives examination.
This is not an ontology editor. Use Protégé to draw class hierarchies. You run Open Ontologies on the change, before the change goes to production.
The tool is like Terraform, and this is on purpose. But the plan is semantic, not syntactic. A text diff is
git diff, and you havegit diffalready.
You do not need a JVM. You do not need Protégé. The engine speaks MCP to Claude, to Cursor, and to other clients of that protocol.
See the engine at work
<p align="center"> <img src="https://raw.githubusercontent.com/fabio-rovai/open-ontologies/main/docs/assets/demo-certify.svg" alt="A terminal runs the Lean certificate checker while a supplier graph lights up beside it: three asserted edges in grey, three derived edges in green that the checker accepts, then one conclusion forged and the same checker refusing it in red" width="940"> </p>Three triples go in, and three triples come out. A person asserted only that
ex:Northwind is in a sanctioned jurisdiction. The engine derived the need for
enhanced due diligence. A different person can check that derivation. That person
does not have to trust you, or this engine, or the model that wrote the ontology.
Watch the last seconds. Somebody forges one conclusion, and leaves the two
premises exactly as they were. The same checker refuses the conclusion and names
the rule. oo-horn printed each line in that terminal for the fixtures in
tests/fixtures/horn/supplier/. A test runs the
checker again. The test fails if the figure and the checker do not agree.
With a proof, and without a proof
| | An ordinary reasoner | Open Ontologies |
| --- | --- | --- |
| The answer | Northwind needs enhanced due diligence | the same answer |
| Why the answer holds | "the reasoner says so" | a certificate that names each rule and each premise |
| Who can check the answer | a second implementation can agree, and some reasoners give an explanation. No verified checker accepts either one | anybody, with a checker that shares no code with the engine |
| If the engine has a defect | a second implementation can disagree. Then you know only that one of the two is wrong | the checker refuses the answer, exit 1 |
| If a person edits the output | you cannot find the edit | the checker refuses it, and names the line and the rule |
| If a rule was yours, not the standard's | the report is the same | a different verdict word, and a test holds that word |
| What an auditor receives | a screenshot | a file that the auditor can check again |
| Guarantee on an unsatisfiability answer | asserted | none, and the tool says so |
If the tool measures a property, the tool says measured. If a prover gives an opinion, that opinion never takes the vocabulary of the checker. Read what the tool proves, and what it does not prove.
What the tool does
| Capability | What you get | | --- | --- | | Reason over OWL and RDFS | Materialised inferences and a derivation certificate that a proved checker accepts | | Use your own rules | SWRL, RIF Core or a Horn table, evaluated, with a verdict word that says the rules were yours | | Validate against SHACL | A report from an evaluator with a measurement against the W3C suite, not an assertion of success | | Ask if something is satisfiable | A finite model, replayed and checked, and not only a yes | | Ask if something is inconsistent | A refutation, if one is certifiable. If not, an honest opinion from the engine | | Retrieve a slice for RAG | Entailment preservation for each claim, because 99% coverage can still lose the one triple that mattered | | Change an ontology in production | Plan, blast radius, risk score, locked IRIs, apply, monitor, drift, rollback | | Load real data | CSV, JSON, XML, YAML, XLSX, Parquet, PostgreSQL and DuckDB into RDF | | Give the problem to a prover | TPTP, CLIF, SMT-LIB and LADR from one translation. The tool names and counts what it cannot export | | Work from an assistant | An MCP server, so Claude or Cursor operates all of it in conversation |
Run the checker yourself
The repository holds the three files. The output shows only the important fields.
$ cd lean && lake build # builds the checkers, core Lean 4, no Mathlib
$ F=../tests/fixtures/horn
$ lake exe oo-horn check $F/builtin_rules.tsv $F/asserted.tsv $F/good.tsv
{"ok":true,"verdict":"entailed","theorem":"OOCert.entails_of_builtin_horn",
"means":"every conclusion is true in every model of the asserted graph"}
$ lake exe oo-horn check $F/builtin_rules.tsv $F/asserted.tsv $F/bad_conclusion.tsv
{"ok":false} # one IRI in the conclusion changed. exit 1.
$ lake exe oo-horn check $F/user_rules.tsv $F/asserted.tsv $F/good.tsv
{"ok":true,"verdict":"entaile
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
103.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
77.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.6kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
89.9k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
