This section describes how changes are propagated (as the name indicates) especially those changes that affects large entity pools, for example when property declarations or category hierarchies are modified.
For Semantic MediaWiki, certain declarative properties are listed as to be watched for changes and will trigger a propagation event on a modification of its value, the change propagation property will be added temporarily to store required information before the actual change can take place and the
smw.changePropagationDispatch is executed to schedule all necessary updates related to that change.
As long as the change propagation is "in waiting" (meaning the dispatch job hasn't been executed), the property or category page is locked (see
$smwgChangePropagationProtection1 for details) to avoid competing declarations to create inconsistencies about the characteristics of a property or category declaration.
Types of changes
The system (MediaWiki and Semantic MediaWiki) works with different types of change propagations which require attention and include (not an exhaustive list):
- Template and page transcluded content
- Changes to properties
- Changes to categories
- Updates to queries
A working job queue is essential because of the potential size of connected subjects to a property or category when a change occurs and recomputing of values becomes necessary. Attempting to update those entities online (i.e. within the same transaction request) may render the system unresponsive and make the propagation process infeasible2 therefore relying on the job queue is the only scalable method to postpone updates while avoiding hogging system resources.