Open tools · OWL DL · BFO · reasoner-gated
Two open tools and three bodies of work, all built on one commitment: an assertion does not enter a knowledge base until a reasoner has accepted it. BFO-Agent populates an ontology from source text and commits only what passes. The FOL / OWL Tester finds the faults that raise nothing in Protégé and corrupt every inference downstream. The rest is what those tools were built to study: a 6,900-class formalization of legal structure, an account of why models of statuses and credentials fail in ways ordinary practice does not anticipate, and a public library of validated ontologies. All of it free to run against your own model.
§ 01 — BFO-Agent
The usual LLM extraction pipeline produces triples and leaves you to audit them. That audit is the reason most teams abandon LLM-assisted population: verifying the output costs more than writing it by hand did.
BFO-Agent separates proposal from commitment. A language model, LoRA fine-tuned for extraction, reads a source text and proposes candidate axioms. Each candidate is evaluated against the BFO upper ontology and tested for logical consistency and entailment by an OWL DL reasoner. Axioms that pass are committed with a provenance link back to the source span that produced them. Axioms that fail are logged and never enter the ontology.
The refusal is a property of the pipeline, not of the prompt, which is the whole point. You are not asking a model to be careful. You are making the commit step conditional on something that cannot be talked out of its answer.
Measured: 93.3% refusal of unfounded assertions under the gate against 10% at the ungated baseline, on identical inputs, across SOoL, Spinoza's Ethics, and the Leibniz corpus. Reported in “Confabulation is Architectural” (under review, Minds and Machines).
What it is for
Point it at a corpus and receive a BFO-aligned ontology in which every class and relation is reasoner-consistent and traceable to the text that justified it. If you are grounding a language model in a graph, this is the part of the stack where the grounding either holds or quietly does not.
§ 02 — FOL / OWL Tester
An OWL ontology can look correct in an editor, load without error, satisfy every SHACL shape you wrote, and still reason wrong. Those three checks answer different questions from the one you care about, and none of them answers it.
The Tester loads an OWL or RDF ontology and runs three checks that do. Consistency: whether the axioms admit any model at all. Coherence: whether any class is entailed into a category it cannot occupy, including the case where a class ends up both a continuant and an occurrent. Entailment: what the axioms actually imply, as opposed to what the author intended.
Nothing warns you. Protégé is silent, the file parses, the shapes validate. But bfo:Process and bfo:Disposition sit on opposite sides of the top-level partition, and once a class is under both, every inference that touches it is unsound. A query asking what occurred during an interval will match it. A query asking what a system bears will also match it. Both answers are returned with equal confidence and one of them is wrong.
The Tester flagged Force, Weight, Drag, and Lift in exactly this state in a published aerospace ontology. The defect had been in the file for years.
What it is for
It catches structural defects before they reach a reasoner in production, and it lets students watch an ontology fail under a reasoner, which teaches description-logic semantics faster than any lecture on them. The same checks, run against your model and reported with consequences attached, are what an engagement delivers.
§ 03 — The Recognition Layer
Manuscript series · in preparationStart with a triple almost everyone writes:
The board revokes the license, backdated six months. You retract the triple. Every sign-off Alice made in those six months was validly made under an authority that has since been withdrawn, and your model has nowhere to put that. Rewriting history and keeping a false assertion are the only two moves available, and neither survives an audit.
The bug is not the property name and not a missing class. It is that a license is not a property of a person. It is the standing residue of an act by a body competent to perform it, and the moment you model it as an attribute you have thrown away the act, the authority, the date, and the ability to say that something was true then and is not now.
A diagnosis, a corporate charter, a security clearance, an accreditation, a tariff classification, a title to land. Each is real, consequential, and enforceable. None exists independently of the act that recognized it. These are recognition-constituted entities, and they are most of what enterprise systems actually model, which is awkward, because formal ontology was developed on physical and biological reality where nothing works this way.
The claim of the Recognition Layer is that the ways these domains break are typed, enumerable, and predictable from structure rather than idiosyncratic. Three of them recur everywhere.
Why this is a layer and not a warning
Contradiction in these domains is a normal condition rather than an error state. Two authorities really can recognize incompatible statuses and both be correct. The engineering consequence is that your model has to represent the conflict without going inconsistent, which naive modeling makes impossible: you are forced to choose between a reasoner that refuses to load and a graph that has silently discarded a fact. Putting the recognizing acts in the model is what buys you the third option.
§ 04 — A Structural Ontology of the Law
Forthcoming · Palgrave Macmillan · 2026Law is the hardest case for everything in the section above, because it is nothing but recognition-constituted entities all the way down and it has been arguing about their structure for two thousand years. If the account holds anywhere, it holds there.
The book formalizes law not as a body of language but as a structured region of social reality: roles, authorities, recognitions, obligations, powers, and the specific ways each can fail. The released ontology runs to nearly 6,900 classes, BFO-aligned and validated for consistency with HermiT.
It supplies the constructs the rest of the work builds on: an eight-node chain a legal scenario can be walked through to test for closure, a thirteen-type typology of the ways such a chain fails, and a test for when an agent can genuinely bear responsibility rather than merely absorb blame.
What it is for
A queryable, reasoner-checked model of legal structure that drives the MLC Chain Auditor, supports jurisprudence and AI-and-law teaching, and gives downstream legal-reasoning tools a formal backbone rather than an informal taxonomy. It is also the corpus BFO-Agent was evaluated against.
§ 05 — The Ontology Library
Each renders a body of thought into BFO and is validated for consistency with HermiT. All are browsable, citable, and free, and each was built with BFO-Agent, which makes them the working evidence for what the tool does. Each also doubles as a reusable BFO module and as a worked reference for how a given source maps onto a formal upper ontology.
Legal ontology · ~6,900 classes
Law as a structured region of social reality: norms, powers, roles, obligations, persons, institutions. Derived from the forthcoming Palgrave book.
Use: a formal backbone for legal-reasoning tools, audits, and jurisprudence teaching.
Spinoza · full provenance
A formal ontology of Spinoza's Ethics from the Elwes translation, with per-class provenance linking every concept to the proposition that produced it.
Use: a citable, inspectable reference for Spinoza scholarship and provenance method.
Leibniz · 36 selections, 1679–1716
Drawn from Duncan's 1890 anthology: the Monadology, the correspondence with Clarke, the New System of Nature, and more.
Use: a formal map of Leibniz's metaphysics for research and comparison.
Koepsell · relational ethics
The structural skeleton of the 2025 book, made inspectable: directedness, recognition, fidelity, rupture.
Use: the formal core behind the SimEthica and GoG+IAT tools.
§ 06 — Custom Ontologies
The same method that produced the library applies to any domain, and the process is reasoner-checked at every stage. Analysis: identify what the domain actually contains, and in particular which of it exists independently and which exists because someone recognized it. Alignment: map that onto BFO so the model inherits a principled backbone rather than an ad hoc hierarchy. Formalization: express the result in OWL DL. Validation: run consistency and coherence checks until the reasoner accepts it. Provenance and documentation: deliver it modular, traceable, and queryable.
The result is not a diagram or a glossary. It is a logical model a reasoner has accepted, which is what makes the following available rather than aspirational.
Continue on the engagements page
Custom development starts from nothing. If you already have a model and need to know what is wrong with it, that is a different engagement: a three-week structural coherence audit, or a three-day triage if you are not yet sure there is anything to find. Scope, deliverables, and price are published rather than quoted.