by fabio-rovai
Plan, apply and roll back changes to a production ontology, with a blast radius report and a proof an auditor can re-check.
# Add to your Claude Code skills
git clone https://github.com/fabio-rovai/open-ontologiesGuides for using mcp servers skills like open-ontologies.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:23:27.539Z",
"npmAuditRan": true,
"pipAuditRan": true
}See how open-ontologies compares with popular alternatives.
open-ontologies is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by fabio-rovai. Plan, apply and roll back changes to a production ontology, with a blast radius report and a proof an auditor can re-check. It has 533 GitHub stars.
Yes. open-ontologies passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/fabio-rovai/open-ontologies" and add it to your Claude Code skills directory (see the Installation section above). open-ontologies ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
open-ontologies is primarily written in Rust. It is open-source under fabio-rovai on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh open-ontologies against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
name: open-ontologies version: "0.5.1" description: > AI-native ontology engineering using 110 MCP tools backed by an in-memory Oxigraph triple store. Build, validate, query, and govern RDF/OWL ontologies with a generate-validate-iterate loop. Use when building ontologies, knowledge graphs, RDF data, SPARQL queries, BORO/4D modeling, SHACL validation, clinical terminology mapping, ingesting from CSV/JSON/Parquet/XLSX or SQL backbones (PostgreSQL, DuckDB), or Terraform-style ontology lifecycle management. tags:
AI-native ontology engineering. Generate OWL/RDF directly, validate with MCP tools, iterate until clean, govern with a Terraform-style lifecycle.
This skill requires the Open Ontologies MCP server to provide the onto_* tools.
Install: cargo install --git https://github.com/fabio-rovai/open-ontologies --features embeddings,plugins,sql, or download from GitHub releases, which ships the default feature set without embeddings, SQL or plugins. The crate is not on crates.io yet, so plain cargo install open-ontologies does not work
MCP config (add to .mcp.json or Claude settings):
{
"mcpServers": {
"open-ontologies": {
"command": "open-ontologies",
"args": ["serve"]
}
}
}
No credentials needed. All processing runs locally in an in-memory Oxigraph triple store. Network access is only used when you explicitly call onto_pull (fetch remote ontology) or onto_push (send to SPARQL endpoint) with a URL you provide. Monitor alerts (onto_monitor) are logged to stdout only.
When building or modifying ontologies, follow this workflow. Decide which tools to call and in what order based on results -- this is not a fixed pipeline.
onto_validate on the generated Turtle -- if it fails, fix syntax errors and re-validateonto_load to load into the Oxigraph triple storeonto_stats to verify class count, property count, triple count match expectationsonto_lint to check for missing labels, comments, domains, ranges -- fix any issues foundonto_query with SPARQL to verify structure (expected classes, subclass hierarchies, competency questions)onto_diff to compareonto_save to write the final ontology to a .ttl fileonto_version to save a named snapshot for rollbackFor evolving ontologies in production:
onto_plan shows added/removed classes, blast radius, risk score. Check onto_lock for protected IRIs.onto_enforce with a rule pack (generic, boro, value_partition) checks design pattern compliance.onto_apply with mode safe (clear + reload) or migrate (add owl:equivalentClass bridges).onto_monitor runs SPARQL watchers with threshold alerts. Use onto_monitor_clear if blocked.onto_drift compares versions with rename detection and self-calibrating confidence.When applying an ontology to external data:
onto_map -- generate mapping config from data schema + loaded ontologyonto_ingest -- parse structured data (CSV, JSON, NDJSON, XML, YAML, XLSX, Parquet) into RDFonto_shacl -- validate against SHACL shapes (cardinality, datatypes, classes)onto_reason -- run RDFS or OWL-RL inference, materializing inferred triplesonto_extend to run the full pipeline: ingest, SHACL validate, reason in one callFor healthcare ontologies:
onto_crosswalk -- look up mappings between ICD-10, SNOMED CT, and MeSHonto_enrich -- add skos:exactMatch triples linking classes to clinical codesonto_validate_clinical -- check class labels against clinical crosswalk terminologyFor aligning two ontologies:
onto_align -- detect alignment candidates (equivalentClass, exactMatch, subClassOf) using 6 weighted signalsonto_align_feedback -- accept/reject candidates to self-calibrate confidence weights| Tool | When to use |
|---|---|
onto_validate |
After generating or modifying Turtle -- always validate first |
onto_load |
After validation passes -- loads into triple store |
onto_stats |
After loading -- sanity check on counts |
onto_lint |
After loading -- catches missing labels, domains, ranges |
onto_query |
Verify structure, answer competency questions |
onto_diff |
Compare against a reference or previous version |
onto_save |
Persist ontology to a file |
onto_convert |
Convert between formats (Turtle, N-Triples, RDF/XML, N-Quads, TriG) |
onto_clear |
Reset the store before loading a different ontology |
onto_pull |
Fetch ontology from a remote URL or SPARQL endpoint |
onto_push |
Push ontology to a SPARQL endpoint |
onto_import |
Resolve and load owl:imports chains |
onto_version |
Save a named snapshot before making changes |
onto_history |
List saved version snapshots |
onto_rollback |
Restore a previous version |
onto_ingest |
Parse structured data into RDF and load into store |
onto_map |
Generate mapping config from data schema + ontology |
onto_shacl |
Validate data against SHACL shapes |
onto_reason |
Run RDFS or OWL-RL inference |
onto_extend |
Full pipeline: ingest, SHACL validate, reason |
onto_plan |
Show added/removed classes, blast radius, risk score |
onto_apply |
Apply changes in safe or migrate mode |
onto_lock |
Protect production IRIs from removal |
onto_drift |
Compare versions with rename detection |
onto_enforce |
Design pattern checks: generic, boro, value_partition, or custom |
onto_monitor |
Run SPARQL watchers with threshold alerts |
onto_monitor_clear |
Clear blocked state after resolving alerts |
onto_crosswalk |
Look up clinical terminology mappings (ICD-10, SNOMED, MeSH) |
onto_enrich |
Add skos:exactMatch triples linking to clinical codes |
onto_validate_clinical |
Check class labels against clinical terminology |
onto_align |
Detect alignment candidates between two ontologies |
onto_align_feedback |
Accept/reject alignment candidates for self-calibrating weights |
onto_lineage |
View session lineage trail (plan, enforce, apply, monitor, drift) |
onto_lint_feedback |
Accept/dismiss lint issues to teach suppression |
onto_enforce_feedback |
Accept/dismiss enforce violations to teach suppression |
onto_unload |
Unload from memory. With name targets a specific cached entry; delete_cache=true also removes the on-disk file |
onto_recompile |
Re-parse the source. With name rebuilds a non-active cached entry without disturbing the active in-memory store |
onto_cache_status |
Inspect compile cache: active slot, all entries, effective [cache] config |
onto_cache_list |
List cached ontologies with metadata (is_active, in_memory, mtime, size) |
onto_cache_remove |
Remove a cached ontology by name (pass delete_file=false to keep the on-disk N-Triples) |
onto_repo_list |
List RDF/OWL files in configured [general] ontology_dirs directories |
onto_repo_load |
Load an ontology from a configured repo by bare name, relative path, or absolute path |
onto_status |
Server health / loaded triple count |
onto_marketplace |
Browse / install standard ontologies from the curated catalogue |
onto_dl_check |
Check subClass ⊑ superClass via DL tableaux |
onto_dl_explain |
Explain why a class is unsatisfiable (DL clash trace) |
onto_embed |
Generate text + Poincaré structural embeddings for all classes. Requires a build with --features embeddings; returns an error otherwise |
onto_search |
Natural-language query → most-similar classes |
onto_similarity |
Cosine + Poincaré distance between two IRIs |
onto_import_schema |
Introspect PostgreSQL or DuckDB schema → generate OWL classes/properties/cardinality. Requires a build with --features postgres or --features duckdb |
onto_sql_ingest |
Run SQL SELECT against PostgreSQL or DuckDB → RDF (DuckDB enables federation over CSV/Parquet/JSON/HTTPFS/postgres-scanner via its extensions). Requires a build with --features postgres or --features duckdb |
Build me a pizza ontology with classes for Pizza, PizzaBase (ThinAndCrispy, DeepPan),
PizzaTopping (Mozzarella, Tomato, Pepperoni, Mushroom), and properties hasBase, hasTopping.
Include rdfs:labels and rdfs:comments on everything. Validate and run competency queries
to check I can ask "what toppings does a Margherita have?"
Load the ontology from https://www.w3.org/TR/owl-guide/wine.rdf, show me stats,
lint it, and run a SPARQL query to find all subclasses of Wine.
I need to add a new class "GlutenFreePizza" as a subclass of Pizza with a restriction
that hasBase only GlutenFreeBase. Plan the change, enforce against generic rules,
and apply in safe mode.
I have a CSV of employees with columns: name, department, role, start_date.
Map it to the loaded HR ontology and ingest it. Then validate with SHACL shapes
and run inference to materialize department hierarchies.
Load schema.org and my company ontology. Run onto_align to find equivalentClass
and exactMatch candidates. I'll review and give feedback to calibrate the weights.
Dynamically decide the next tool call based on what the previous tool returned. If onto_validate fails, fix and retry. If onto_stats shows wrong counts, regenerate. If onto_lint finds missing labels, add them. The MCP tools are individual operations -- Claude is the orchestrator.
$ 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.
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.
| 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.
| 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 r |