Compare
NeoWiki vs Semantic MediaWiki
Both extend MediaWiki. The question is what sits underneath the page when you store a fact, and how that decision compounds.
Semantic MediaWiki has been the answer for structured knowledge in MediaWiki for twenty years. It is powerful, the editor experience is familiar, and a generation of wikis run on it. NeoWiki picks a different bottom of the stack: a real graph database with native schemas, because the things modern knowledge work reaches for at scale (federation, SPARQL, AI grounding, schema-defined constraints) want a different storage model. The two tools answer the same question with different commitments at the foundation layer.
Where the work lives
Both extend the same MediaWiki underneath. The commitment difference shows up in the three layers above it: how authors put structure in, where that structure lives, and how it comes back out.
Semantic MediaWiki
Authoring
Annotations in wikitext
Storage
SQL property store
Query
SMW Query (#ask)
NeoWiki
Authoring
JSON in revision slots
Storage
Graph database
Query
Cypher
MediaWiki
| Semantic MediaWiki | NeoWiki | |
|---|---|---|
| Storage | Property values inline in wikitext ([[Property::value]]), parsed at save time. | Structured JSON in MediaWiki revision slots. |
| Schemas | Property pages declare types one at a time. | Native schemas with types, constraints, and defaults. |
| Editing | Page Forms is a separate extension layer. | Form-based editing built in, derived from your schema. |
| Page model | One subject per page; subobjects for extras. | Multiple subjects per page as a native concept. |
| Query | SMW Query (#ask) over a SQL-backed store. | Cypher over a graph database. SPARQL via QLever, planned. |
| AI grounding | Not built in. | GraphRAG endpoint by construction. |
Same question, different mechanics
Find every person born after 1900, with their birth year and field. Both wikis can do it. The shape of the answer is what differs.
mediawiki
{{#ask:
[[Category:Person]]
[[Has birth date::>1900]]
| ?Has birth date
| ?Has field
}}cypher
MATCH (p:Person)
WHERE p.birthDate > date('1900-01-01')
RETURN p, p.birthDate, p.fieldsparql
SELECT ?person ?born ?field
WHERE {
?person a :Person ;
:birthDate ?born ;
:field ?field .
FILTER(?born > "1900-01-01"^^xsd:date)
}If you're already on SMW
NeoWiki is not a drop-in replacement. The data model differs at the storage layer, so SMW property assertions don't auto-translate to NeoWiki schemas. Migration is a scoping conversation: we look at your property structure, your query patterns, and the data you have accumulated, and shape the path. That's a consulting engagement, not a button.
If you are starting greenfield and choosing between the two, the trade is between SMW's twenty years of stability and NeoWiki's foundation for federation, schema-driven editing, and AI grounding. Different tools for different time horizons.
Twenty years of stability.
A different foundation.