Abstract Wiki Architect is a multilingual natural-language generation (NLG) toolkit for structured knowledge—designed with Abstract Wikipedia and Wikifunctions in mind, but usable independently.
Instead of building “one renderer per language,” it treats language generation as reusable infrastructure:
The goal: professional-grade, testable rule-based NLG at scale—structured, auditable, and maintainable.
Projects like Abstract Wikipedia and Wikifunctions aim to represent knowledge in a language-independent form, then render it into many languages. That only works at scale if the system is:
Abstract Wiki Architect is a concrete architecture for doing exactly that.
Note: This is not an official Wikimedia component. It’s a compatible, experimental architecture designed to learn from that ecosystem.
Think of it as a pipeline:
Meaning (frames) → Sentence plan (templates) → Language rules (family engine) → Surface text
Inputs are normalized into small, typed “frames” that represent meaning in a language-neutral way (e.g., a biography frame, a membership/role frame, an event frame).
Reusable sentence patterns decide what to say (roles like subject/predicate/location) and call the language engine to realize it correctly in each language.
Family engines handle shared grammar logic; language cards specify language-specific details (articles, agreement options, morphology parameters).
Lexicon entries supply the linguistic features required by morphology (gender, animacy, noun class, irregular forms, etc.), optionally linked to Wikidata / lexeme IDs.
Native-speaker editable test cases (CSV-style) + automated test runners make quality measurable and prevent regressions.
Konnaxion focuses on governance, roles, processes, and coordination. Abstract Wiki Architect fits as a language layer:
In short: Konnaxion governs and coordinates; Abstract Wiki Architect renders structured knowledge into multilingual narrative.
engines/ — family enginesmorphology/ — inflection and agreement modulesconstructions/ — sentence templatessemantics/ — frame types + normalization/bridgeslexicon/ — lexeme types, loaders, indicesdiscourse/ — topic/salience/referring expressionsqa/, qa_tools/ — test suites and runnersrouter.py — internal routing / entry points# Pseudocode-level illustration (API details may vary by repo version)
bio = BioFrame(name="Douglas Adams", profession="writer", nationality="british")
result = generate(lang="en", frame=bio)
# "Douglas Adams was a British writer."