SemanticMediaWiki

From Wiki4Intranet
Revision as of 17:48, 28 June 2016 by VitaliyFilippov (Talk | contribs)

This is a page snapshot, showing old (but not deleted) versions of images and templates.
Jump to: navigation, search

SemanticMediaWiki is a MediaWiki extension.

Status for Mediawiki4Intranet distribution:

  • Inclusion date: 2012-12-12
  • Included version: 2.3.x
  • Improvement status: Forked in MediaWiki4Intranet with major improvements

Quality note

  • SemanticMediaWiki is definitely a piece of bloated software, and it seems it becomes more bloated in new versions — 1.9 will contain a lot of refactoring, adding composer support and multiple library dependencies, DI framework, unit tests (a religion which leads to refucking all the code)… and almost no new features.
  • It seems almost nobody uses SMW for its original ideas (semantic web, rdf, ontologies and etc) — everyone just uses it to be able to add properties to pages, create something like «object model» using Wiki-programming and get something like «sql» using ask queries, which are ugly and inconvenient to use. Or even just to be able to use Forms. And the properties are global, so you’ll also end up modeling «object classes» from scratch if you begin creating an object model.
  • Summary: avoid massive usage of SMW if you can. Usually it leads to very ugly efforts of «wiki-programming». If you still have to use SMW, check out our improvements to it (see below).

Our improvements

  • Query optimizer: identical subqueries are executed only once (for example, in <q>a OR b</q> <q>c OR d <q>a OR b</q></q> the «a OR b» part will be executed only once), identical terms are removed from conjunctions/disjunctions («a AND a», «a OR a» == just a)
  • Conjunction-of-disjunctions execution bug fixed: in the original SMW, «(a OR b) AND (c OR d)» query was not executed at all! (test case: {{#ask: <q>[[A::B]] OR [[C::D]]</q> <q>[[E::F]] OR [[G::H]]</q> | format=debug }}). Patch sent to github: https://github.com/SemanticMediaWiki/SemanticMediaWiki/pull/19
  • Negation operator support: syntax is {{#ask: [[prop::val]] !<q>...subquery...</q> }} or just {{#ask: [[prop::val]] ![[prop2::val2]] }}. Patch sent to github: https://github.com/SemanticMediaWiki/SemanticMediaWiki/pull/20
  • Disable forced type-named properties: in the original SMW, data type aliases also have an unpleasant side-effect: if a property name matches the alias of some data type (for example «Telephone number») — the property will have that data type forced and you cannot override it. Patch sent to github: https://github.com/SemanticMediaWiki/SemanticMediaWiki/pull/21
  • Automatic refresh of all pages with semantic queries on any property update — in the original SMW you have to manually refresh it every time. Of course this can lead to frequent cache flushes — even the queries that don’t use the updated property are flushed — but at least the user always gets correct query results.

Rough estimate for getting all this in trunk: never, or not any time soon. You have to push authors very hard to be able to submit something in SMW. I don’t feel that I want to spend my time on it.