Extension:SemanticDependencyUpdater

Category:Extensions without an imageCategory:Extensions without a compatibility policyCategory:MIT licensed extensions
MediaWiki extensions manual
Semantic Dependency Updater
Release status: stableCategory:Stable extensions
Implementation User interfaceCategory:User interface extensions
Description Monitors semantic data changes and updates depended pages
Author(s) Simon Heimler, Alexander Gesinn
Maintainer(s) gesinn.it
Latest version 4.0.0 (2025-03-03)
MediaWiki 1.39+Category:Extensions with manual MediaWiki version
Database changes No
License MIT License
Download Category:Extensions in GitHub version control
Releases
  • $wgSDUProperty = 'Semantic Dependency';
  • $wgSDUUseJobQueue = false;

Compatibility

  • Semantic MediaWiki 4+
Category:All extensionsCategory:Extensions not in ExtensionJson

The Semantic Dependency Updater (SDU) extension monitors pages for changes in their semantic data. If the "Semantic Dependency" property is found, this extension will update all pages that have been selected through that property. A common use case is change propagation where pages need to update (pull) their semantic data via an ask query from a changed page.

The "Semantic Dependency property" is evaluated as an ASK query. It is therefore possible to define either a list of pages directly or do more complex selections.

It is possible to build a chain of semantic dependencies that will update recursively. Be careful not to build loops!

Installation

Semantic MediaWiki 4 or later is required!
  • Download and place the file(s) in a directory called SemanticDependencyUpdater in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php file:
    wfLoadExtension( 'SemanticDependencyUpdater' );
    
  • Configure as required.
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Instead of downloading the zip archive you may also check this extension out via Git:

git clone https://github.com/gesinn-it/SemanticDependencyUpdater.git extensions/SemanticDependencyUpdater

Configuration

Mandatory

Make sure, a "Semantic Dependency" property exists, e.g. "Property:Semantic_Dependency" needs to exist and MUST be of the datatype Text:

[[Has type::Text]]

Optional

// Name of the Semantic Dependency property
$wgSDUProperty = 'Semantic Dependency';
// If enabled, SDU will create a Job for each update
$wgSDUUseJobQueue = false;

Usage

The value of the Semantic Dependency property is evaluated as an ASK query, except that [[ or ]] must be ommitted. If there are more conditions, combine them through AND and OR

Examples

Update Self

This will save the current page twice. Useful when the page stores semantic properties that are calculated from other properties of the same page.

[[Semantic Dependency::{{FULLPAGENAME}}]]

Update other page(s)

[[Semantic Dependency::Product:Test Product]]
[[Semantic Dependency::{{{Target Page|}}}]]

Update pages with relation to current page

This will update all pages that link with Part Of to the current page.

[[Semantic Dependency::Part Of::{{FULLPAGENAME}}]]

More Advanced Queries

Be careful that the query does not return too many pages, as this will result in a heavy load.

[[Semantic Dependency::Category:Product]]
[[Semantic Dependency::Category:Product AND Tag::Demo]]
[[Semantic Dependency::Category:Person OR Category:Organization]]

Example test case

  • Make sure, a page Property:Semantic_Dependency exists with content [[Has type::Text]]
  • Make sure, $wgSDUUseJobQueue = false;
  • Create a page A with
[[Title::A]]
  • Create a page B with
* [[Part Of::A| ]][[Title::{{#show:A|?Title}}.B]]
* {{#show:{{FULLPAGENAME}}|?Title}}
  • Now, change page A as follows
[[Title::XXX]]

As a result, you should see

- XXX.B
- XXX.B

on page B

Debugging

  • Note, that on some systems logging to /tmp might not work
  • Make sure, a log folder, writable by your web server, exists
> mkdir /var/log/mediawiki
> chown -R www-data /var/log/mediawiki
  • In your LocalSettings enable
$wgDebugLogGroups['SemanticDependencyUpdater'] = '/var/log/mediawiki/SDU.log';
  • Watch the log file
> tail -f /var/log/mediawiki/SDU.log
  • If things work as expected, this will look like:
2020-03-25 13:01:45 vagrant wikidb01-wk: [SDU] --> A
2020-03-25 13:01:45 vagrant wikidb01-wk: [SDU] -----> Data changes detected
2020-03-25 13:01:45 vagrant wikidb01-wk: [SDU] --------> [[Part Of::A]]
2020-03-25 13:01:45 vagrant wikidb01-wk: [SDU] --------> [Edit] B
Category:Semantic MediaWiki extensions Category:Extensions by gesinn.it
Category:All extensions Category:Extensions by gesinn.it Category:Extensions in GitHub version control Category:Extensions included in Canasta Category:Extensions included in semantic::core Category:Extensions not in ExtensionJson Category:Extensions with manual MediaWiki version Category:Extensions without a compatibility policy Category:Extensions without an image Category:MIT licensed extensions Category:SMW::SQLStore::AfterDataUpdateComplete extensions Category:Semantic MediaWiki extensions Category:Stable extensions Category:User interface extensions