Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

RFD-0002 — Argon is foundational-ontology-neutral

Committed Opened 2026-05-03 · Committed 2026-05-03

Question

Does Argon (the language) embed a specific foundational ontology — UFO, BFO, DOLCE, GFO — or does it treat all foundational ontologies as first-class peer packages?

Decision

Argon is a foundational-ontology-neutral substrate. The compiler has zero hardcoded foundational-ontology content. UFO, BFO, GFO, DOLCE, and any future foundational ontology load as ordinary packages with no compiler privilege. The language provides primitives (declaration forms, sealed Metatype, instantiates / specializes relations, reflection intrinsics, decidability tiers) that any foundational ontology can build on; none of those primitives encode opinions specific to any foundational ontology.

Rationale

The compiler must outlive the foundational ontology choice. Argon is the substrate every domain — tax, compliance, GAAP, lease, insurance, legal — gets expressed in. If UFO turns out to be the wrong upper ontology for some domain, or if a customer’s regulatory regime requires BFO, or if a research direction wants DOLCE, the compiler cannot need a rebuild to switch. Every foundational ontology has to be swappable at the package layer.

Inertness is structural, not aspirational. “Inert” means there is no place in the compiler where a UFO keyword (kind, role, phase) could acquire a special meaning, because the compiler doesn’t know those words. They lex as identifiers. They resolve against whatever metatype the loaded vocabulary declared. A UFO package becoming privileged would require new compiler code, which is the kind of change that gets noticed in review.

Foundational ontologies are not removable from the system, only from the language. Real users still need a foundational ontology to model anything; UFO is the default load. The neutrality applies to the compiler and the language semantics, not to the recommended workflow.

Consequences

  • The compiler must never hardcode keyword-style metatypes, axis names, or relation names from any foundational ontology. Anti-pattern: matching on metatype.as_str() == "kind" in compiler code.
  • All foundational ontology content ships as packages (e.g., ufo, bfo) installable through the registry.
  • Cross-foundational-ontology validation: a BFO smoke-test package compiles against the same compiler that compiles UFO, with no compiler-side configuration.
  • Bridge to OWL / OntoUML / Tonto / etc. lives outside the language entirely (RFD-0003).