Early developmentNot everything described here has shipped yet.

Skip to content

Architecture ​

NeoWiki is a MediaWiki extension. It adds structured data to ordinary wiki pages, keeps that data on the page it describes, and projects it into graph stores so it can be queried.

A page's Subjects projected into Neo4j and a SPARQL store, the native projection in both, an EDM projection defined by a Mapping page, and Cypher and SPARQL queries from parser functions, Lua and the REST API

Data lives on the page ​

A page's structured data sits in a dedicated content slot on the page itself, stored as JSON and versioned with the page exactly like its wikitext (ADR 2, ADR 4). That slot content is the source of truth.

The slot holds Subjects, each carrying Statements and shaped by a Schema. The Glossary defines this vocabulary, which the UI and the code share.

Graph stores hold projections ​

A wiki can connect to one or more graph stores: Neo4j, and any SPARQL 1.1 store. Each holds a Projection, a derived, query-optimized copy of the wiki's data, written on every save and rebuildable from page content at any time (ADR 19). A Projection is either the built-in native one or an ontology projection defined by a Mapping, which expresses Subjects in a vocabulary such as EDM or CIDOC-CRM.

Queries are written in each backend's own language, Cypher for Neo4j and SPARQL for SPARQL stores, and run from parser functions, Lua, and the REST API. NeoWiki deliberately has no query language of its own (ADR 19).

Only those queries need a graph store; everything else reads Subject data from MediaWiki's own tables, so a wiki can also run with no graph store at all (ADR 32, ADR 37).

Frontend and extension points ​

The editing and display interfaces are a TypeScript and Vue application built on Wikimedia Codex and embedded into wiki pages (ADR 15, ADR 16, ADR 20). The PHP behind them follows a domain-centric architecture (ADR 1).

Other MediaWiki extensions can add Property Types, View Types, Page Properties, Subject Sources, graph backends, and frontend components (Extending NeoWiki).

Architecture Decision Records ​

Every architectural decision on record, in the order it was made.