In Semantic MediaWiki, certain declarative properties (see
$smwgChangePropagationWatchlistSets the properties that are relevant for property change propagation) will trigger a propagation event when a change to its value occurs.
Dispatching a change
After a propagation event has been triggered, a change propagation property will be added temporarily to store required information before the actual change takes place and the
smw.changePropagationDispatch job can dispatch necessary updates related to subjects of a property or category.
The change propagation is set to an "in waiting" state for as long as the dispatch job is only queued (i.e. the dispatch job hasn't been executed) with corresponding property or category pages being locked (see
$smwgChangePropagationProtectionSets whether property pages are protected from editing while a property change propagation is being processed1) to avoid having competing declarations to create inconsistencies about the characteristics of a property or category declaration while the dispatch process is on-going.
Types of changes
MediaWiki and Semantic MediaWiki work with different kinds of change propagations and includes things like:
- Template and page transcluded content
- Changes to properties
- Changes to categories
- Updates to queries
The job queue is essential because of the potential size of required updates caused by a change to a property or category where recomputing and reassigning of annotation values becomes necessary. The past showed that attempting to update those entities online (i.e. within the same transaction request) may render a system unresponsive hereby making the propagation process infeasible2 therefore relying on the job queue has been seen as the only scalable method to postpone updates while avoiding hogging system resources.