Difference between revisions of "SemanticMediaWiki"

From Wiki4Intranet
Jump to: navigation, search
 
Line 23: Line 23:
 
== Our improvements ==
 
== Our improvements ==
  
* Query optimizer: identical subqueries are executed only once (for example, in <tt><nowiki><q>a OR b</q> <q>c OR d <q>a OR b</q></q></nowiki></tt> 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)
+
* Query optimizer: identical subqueries are executed only once (for example, in <tt><nowiki><q>a OR b</q> <q>c OR d <q>a OR b</q></q></nowiki></tt> 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: <tt><nowiki>{{#ask: <q>[[A::B]] OR [[C::D]]</q> <q>[[E::F]] OR [[G::H]]</q> | format=debug }}</nowiki></tt>). Patch sent to github: https://github.com/SemanticMediaWiki/SemanticMediaWiki/pull/19
+
* Negation operator support: syntax is <tt><nowiki>{{#ask: [[prop::val]] !<q>...subquery...</q> }}</nowiki></tt> or just <tt><nowiki>{{#ask: [[prop::val]] ![[prop2::val2]] }}</nowiki></tt>.
* Negation operator support: syntax is <tt><nowiki>{{#ask: [[prop::val]] !<q>...subquery...</q> }}</nowiki></tt> or just <tt><nowiki>{{#ask: [[prop::val]] ![[prop2::val2]] }}</nowiki></tt>. Patch sent to github: https://github.com/SemanticMediaWiki/SemanticMediaWiki/pull/20
+
* Permission hook support (allows to use SMW, for example, with [[IntraACL]]).
* 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
+
* Fixed PostgreSQL support (may be merged into the next original release, 2.4).
* 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.
+
* Fixed localised boolean value names (yes/no).
 
+
* Support for selection of property chains (<nowiki>{{#ask: ... | ?Prop1.Prop2}}</nowiki>) and sorting on them (<nowiki>{{#ask: ... | sort=Prop1.Prop2}}</nowiki>).
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.
+
* LEFT JOINs on sort fields — pages without sort property do not disappear from query results anymore.
 +
* Fixed fatal error when handling empty <nowiki><info /></nowiki> tag on wiki pages.
 +
* Support long titles (up to 767 bytes), like in our [[Mediawiki4Intranet]] core patch.
 +
* Bugfix for rebuildData.php: it didn’t accept --conf option.
 +
* Internal bugfix for ParserData which allows other extensions to retrieve page SemanticData before saving it.
 +
* Bugfix for count API requests.
 +
* Add predefined properties for major modification date (i.e. the timestamp of latest non-minor revision), major revision comment, last revision comment. All are optional and must be enabled in $smwgPageSpecialProperties to work.

Latest revision as of 17:45, 29 June 2016

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

Usage note

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», create Semantic Forms, use #ask queries as something like «sql» for objects and turn MediaWiki into a CMS.

But SMW is far from ideal for this purpose — it’s not that fast, properties are global (i.e. not specific to an object class), and the #ask query language is not so convenient… Usually it ends up with a massive amount of very ugly «Wiki-programming» efforts.

So, avoid massive usage of SMW if you can. If you still have to use it, check 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»).
  • Negation operator support: syntax is {{#ask: [[prop::val]] !<q>...subquery...</q> }} or just {{#ask: [[prop::val]] ![[prop2::val2]] }}.
  • Permission hook support (allows to use SMW, for example, with IntraACL).
  • Fixed PostgreSQL support (may be merged into the next original release, 2.4).
  • Fixed localised boolean value names (yes/no).
  • Support for selection of property chains ({{#ask: ... | ?Prop1.Prop2}}) and sorting on them ({{#ask: ... | sort=Prop1.Prop2}}).
  • LEFT JOINs on sort fields — pages without sort property do not disappear from query results anymore.
  • Fixed fatal error when handling empty <info /> tag on wiki pages.
  • Support long titles (up to 767 bytes), like in our Mediawiki4Intranet core patch.
  • Bugfix for rebuildData.php: it didn’t accept --conf option.
  • Internal bugfix for ParserData which allows other extensions to retrieve page SemanticData before saving it.
  • Bugfix for count API requests.
  • Add predefined properties for major modification date (i.e. the timestamp of latest non-minor revision), major revision comment, last revision comment. All are optional and must be enabled in $smwgPageSpecialProperties to work.