Jump to content

Rozšíření:SemanticDependencyUpdater

From mediawiki.org
This page is a translated version of the page Extension:SemanticDependencyUpdater and the translation is 100% complete.
Příručka k rozšířením MediaWiki
Semantic Dependency Updater
Stav rozšíření: stabilní
Implementace Uživatelské rozhraní
Popis Detekuje sémantické vložení a odstranění, včetně změn zaznamenaných na podobjektech.
Autoři Simon Heimler, Alexander Gesinn
Správci gesinn.it
Nejnovější verze 5.0.0 (2026-02-03)
MediaWiki 1.43+
Změny v databázi Ne

  • $wgSDUProperty = 'Semantic Dependency';
  • $wgSDUUseJobQueue = false;
Licence Licence MIT
Stáhnout
Releases

Compatibility

  • Semantic MediaWiki 6+

The Semantic Dependency Updater (SDU) extension detects semantic inserts and deletions, including changes recorded on subobjects. 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!

Instalace

Semantic MediaWiki 4 or later is required!
  • Ke stažení soubor/y a vložte je do adresáře pojmenovaného SemanticDependencyUpdater ve vaší složce extensions/.
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'SemanticDependencyUpdater' );
    
  • Configure as required.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Místo stahování zip archivu si můžete toto rozšíření také vyzkoušet přes Git:

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

Konfigurace

Povinné

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

{{#set:Has type=Text}}

Volitelné

// Název vlastnosti sémantické závislosti
$wgSDUProperty = 'Semantic Dependency';
// Pokud je tato možnost povolena, SDU zařadí do fronty úlohu UpdateJob pro každou závislou stránku.
// Toto se doporučuje pro větší grafy závislostí, aby se předešlo dlouhým dobám ukládání.
$wgSDUUseJobQueue = true;
// Pokud je tato možnost zakázána, SDU spustí jednu vynucenou aktualizaci ihned po uložení.
// To je užitečné pro malá nastavení nebo ladění, ale může to zvýšit latenci ukládání.
$wgSDUUseJobQueue = false;

Použití

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

Příklady

Aktualizovat sám

Tím se aktuální stránka uloží dvakrát. Užitečné, když stránka ukládá sémantické vlastnosti, které jsou vypočítány z jiných vlastností stejné stránky.

{{#set:Semantic Dependency={{FULLPAGENAME}}}}

Aktualizovat další stránku (stránky)

{{#set:Semantic Dependency=Product:Test Product}}
{{#set:Semantic Dependency={{{Target Page|}}}}}

Aktualizovat stránky vzhledem k aktuální stránce

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

{{#set:Semantic Dependency=Part Of::{{FULLPAGENAME}}}}

Pokročilejší dotazy

Be careful not to return too many pages, as this can cause a heavy load.

{{#set:Semantic Dependency=Category:Product}}
{{#set:Semantic Dependency=Category:Product AND Tag::Demo}}
{{#set:Semantic Dependency=Category:Person OR Category:Organization}}

Příklad testovacího případu

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

As a result, you should see

- XXX.B
- XXX.B

on page B

Ladění

  • 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.php 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