RFD-0002 — Argon is foundational-ontology-neutral
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).