Help:Datenreparatur

Alle von Semantic MediaWiki (SMW) genutzten Daten werden auf Wikiseiten gespeichert. Für den Fall das diese Daten irgendwann veraltet oder fehlerbehaftet sein sollten, ist es immer noch möglich die aus den Wikiseiten entnommenen Daten neu aufzubauen. Daten gehen jedenfalls niemals verloren. Manchmal wird das Auffrischen von Daten auch im Zusammenhang mit Softwareaktualisierungen notwendig sowie stets bei der ersten Installation, da auch vorhandene Metadaten einbezogen werden.

Diese Seite beschreibt die Möglichkeiten, Daten jedweder SMW-Installation zu reparieren, bzw. zu initialisieren. Die Daten einer einzelnen Seite können aufgefrischt werden, in dem man sie lediglich bearbeitet und speichert. Sollte aber eine Vielzahl von Seiten aufgefrischt werden müssen, so ist es wesentlich bequemer eine Funktion der Spezialseite „SMW-Administation“ (Administration von Semantic MediaWiki) zu nutzen, die diese Arbeit automatisch durchführt. Zusätzlich ist hierfür unter „[Pfad zur Semantic MediaWiki-Installation]/maintenance/“ das Wartungsskript SMW_refreshData.php verfügbar, mit dem man dies über die Kommandozeile der Shell durchführen kann:

php SMW_refreshData.php

Um sicherzugehen, dass alle Wikiseiten die neu aufgebauten Daten richtig anzeigen, wird anschließend unter „[Pfad zur MediaWiki-Installation]/“

php touch LocalSettings.php

ausgeführt. Sofern man keinen Zugriff auf eine Kommandozeile hat, genügt es auch eine belanglose Änderung an der Datei „LocalSettings.php“ vorzunehmen. Auf diese Weise werden möglicherweise noch verfügbare Seitencaches der Installation aufgelöst, die ansonsten dafür gesorgt hätten, dass man noch die alten Versionen der Wikiseiten sieht.

Was die auf dieser Seite benannten Skripte angeht, so sind dies einerseits MediaWiki-Skripte, wie auch Semantic-MediaWiki-Skripte. Der Unterschied besteht im Pfad, unter dem diese Skripte vorgefunden werden („[Pfad zur MediaWiki-Installation]“ im Gegensatz zu „[Pfad zur Semantic MediaWiki-Installation]“).

Nutzung von Spezial:SMW-Administration
Die Spezialseite Spezial:SMW-Administration („Administration von Semantic MediaWiki“) verfügt über eine Funktion mit der man alle semantischen Daten reparieren kann. Diese Seite ist nur für die Nutzer des Wikis verfügbar, die zur Benutzergruppe der Administratoren gehören. Davon abgesehen kann diese Funktion nur dann online über die Spezialseite ausgeführt werden, wenn der Konfigurationsparameter $smwgAdminRefreshStore mit true aktiviert wurde (dies ist die Standardeinstellung).

Der Aktualisierungsprozess benötigt seine Zeit. Der Fortschritt kann nach Initialisierung auf der Spezialseite Spezial:SMW-Administration eingesehen werden. Die Deaktivierung des Parameters $smwgAdminRefreshStore mit false führt nicht zum Abbruch bereits aktiver Reparaturprozesse. Ein laufender Prozess kann nur dann abgebrochen werden wenn $smwgAdminRefreshStore aktiviert ist.

Der Zeitraum, den ein Aktualisierungsprozess benötigt, ist von Wiki zu Wiki unterschiedlich. Er wird mit jedem Seitenaufruf im Wiki einen Schritt weitergeführt. Sofern also viele Nutzer auf dem Wiki aktiv sind, wird dieser Prozess schneller vorangehen. Auch ist der Zeitraum von der Anzahl der Wikiseiten abhängig. Je mehr Seiten vorhanden sind, desto länger dauert die Aktualisierung. Es ist dabei normal, dass die Aktualisierung bis zum Wert von 50 % schneller vorangeht, da in diesem Abschnitt nur die Attribute und Datentypen abgearbeitet werden, während die eigentlichen Wikiseiten im darauf folgenden Abschnitt repariert werden. Um den Aktualisierungsprozess zu beschleunigen, kann das unter „[Pfad zur MediaWiki-Installation]/maintenance/“ vorhandene Wartungsskript runJobs.php über die Kommandozeile ausgeführt werden:

Kommandozeile der Shell

php runJobs.php --maxjobs 1000

Die Option --maxjobs 1000 ist zwar fakultativ, wird aber empfohlen, um die Ausführungsdauer des Skriptes zu begrenzen. Das Skript neigt dazu, mit zunehmender Ausführungsdauer, zunehmend Arbeitsspeicher zu benötigen.

Sofern man keinen Zugriff auf die Betriebssystemshell hat, kann man den Wert der MediaWiki-Konfigurationsparameters  in der Datei "LocalSettings.php" hochsetzen, um die Anzahl der auszuführenden Aufträge pro Seitenabruf zu erhöhen. Dies führt allerdings auch zu einem höheren Systemleistungsbedarf und kann sich negativ auf die Leistung des Wikis auswirken.

Nutzung des Wartungsskriptes von Semantic MediaWiki
Während die vorherig beschriebene Methode grundsätzlich auch ohne die Verwendung eines Wartungsskriptes möglich ist, gibt es als Alternative hierzu auch das Wartungsskript SMW_refreshData.php</tt>. Es aktualisiert die zu reparierenden Daten direkt, ohne dass man hierzu vorher auf das Wiki zugreifen muss. Die Aufgabe dieses Skriptes besteht darin, alle Seiten eines Wikis durchzugehen und deren semantischen Daten wiederherzustellen. Das Skript wird angewendet, in dem man über die Kommandozeile unter „[Pfad zur Semantic MediaWiki-Installation]/maintenance“

php SMW_refreshData.php -v

ausführt. Sofern das Sktipt, beispielsweise aufgrund einer abweichenden Verzeichnisstruktur nicht funktioniert, sind weitere Hinweise in der Datei „README“ dokumentiert, die ebenso im Verzeichnis „[Pfad zur Semantic MediaWiki-Installation]/maintenance“ verfügbar ist.

Das Wartungsskript arbeitet alle in der Datenbank gespeicherten Seiten des Wikis, in der Reihenfolge ihrer Speicherung ab, und aktualisiert die in ihnen enthaltenen semantischen Daten. Der Parameter -v</tt> stellt dabei sicher, dass der Arbeitsfortschritt des Skriptes direkt in der Shell ausgegeben wird. Die Ausführung des Skriptes kann durch das Drücken der Tasten „Strg+C“ abgebrochen werden. Die vom Skript angegebenen Indexzahlen beziehen sich nicht nur auf die von MediaWiki verwendeten Seitenindizes, sondern geben auch an, welche Indizes Semantic MediaWiki für die semantischen Daten verwendet. Aus diesem Grunde kann das Skript höhere Indizes bearbeiten als der maximale Seitenindex des Wikis beträgt.

Sofern das Wiki eine große Anzahl an Seiten enthält, wird das Skript während seiner Ausführung zunehmend Arbeitsspeicher einsetzen. Daher ist es besser das Skript nach ungefähr 2000 Seiten zu stoppen, um so den verwendeten Arbeitsspeicher zu leeren. Aus diesem Grund kann das Skript auch für Teilbereiche an Seiten ausgeführt werden. Hierzu verwendet man die Parameter -s</tt> und -e</tt>, um jeweils die erste sowie die letzte zu verarbeitende Seite anzugeben. Ein Beispiel:

php SMW_refreshData.php -v -s 1000 -e 2999

Auf diese Weise könnten etliche Ausführungsvorgänge mit dem Skript notwendig werden, z. B. auch weil die semantischen Daten für ein Attribut erst dann neu gespeichert werden können, nachdem der Datentyp des Attributes neu gespeichert wurde. Daher ist es auch möglich das Wartungsskript, unter Verwendung des Parameters -tp</tt>, zunächst nur die Datentypen sowie die Attributseiten zu aktualisierten. Dadurch sind diese dann bereits für den folgenden Aktualisierungsvorgang verfügbar. Im Normalfall sollten nicht mehr als zwei Aktualisierungsvorgänge für ein Wiki notwendig werden.

Um sicherzugehen, dass alle Wikiseiten die neu aufgebauten Daten richtig anzeigen, wird anschließend unter „[Pfad zur MediaWiki-Installation]/“

php touch LocalSettings.php

ausgeführt. Sofern man keinen Zugriff auf eine Kommandozeile hat, genügt es auch eine belanglose Änderung an der Datei LocalSettings.php</tt> vorzunehmen. Auf diese Weise werden möglicherweise noch verfügbare Seitencaches der Installation aufgelöst, die ansonsten dafür gesorgt hätten, dass man noch die alten Versionen der Wikiseiten sieht.

Neuaufbau aller semantischen Daten
Mit den beiden vorherig benannten Methoden sollten die semantischen Daten in den meisten Fällen repariert werden können. Dennoch ist es denkbar, dass aus irgendwelchen Gründen, fehlerhafte Daten im SMW-Speicher bestehen bleiben. In solch einem Fall ist es sinnvoll, die von SMW genutzten Datenbankstrukturen zu löschen und erneut zu installieren, bevor alle Daten aktualisiert werden.

Um alle semantischen Daten zu löschen wird das Installationsskript SMW_setup.php</tt>, das sich unter „[Pfad zur Semantic MediaWiki-Installation]/maintenance“ befindet, zusammen mit dem Parameter --delete</tt>, über die Kommandozeile ausgeführt:

php SMW_setup.php --delete

Danach ist so zu verfahren, als ob man SMW erneut installiert, indem man

php SMW_setup.php

ausführt und anschließen die Datenreparatur, gemäß einer der beiden, in den obigen Abschnitten beschriebenen Methoden, durchführt.

Alternativ kann auch das Wartungsskript SMW_refreshData.php</tt>, in Verbindung mit dem Parameter -f</tt>, eingesetzt werden, um die Löschung und Wiederherstellung der semantischen Daten in einem Schritt durchzuführen. In diesem Zusammenhang wird empfohlen, zunächst die Datensätze für alle Attribute und Datentypen wiederherzustellen und danach erst die restlichen Daten verarbeiten zu lassen. Wie folgt wird hierbei das unter „[Pfad zur Semantic MediaWiki-Installation]/maintenance“ vorhandene Wartungsskript in der Kommandozeile ausgeführt:

php SMW_refreshData.php -ftpv php SMW_refreshData.php -v

Bitte beachten Sie, dass lediglich bei der ersten Ausführung des Skriptes der Parameter -f</tt> angewandt wird. Im Falle großer Wikis sollten zudem die Parameter -s</tt> und -e</tt> entsprechen der Beschreibung im vorhergehenden Abschnitt genutzt werden.

Automatische Reparaturfunktionen
Änderungen an Wikiseiten erfordern gegebenenfalls die Aktualisierung semantischer Daten auf anderen Seiten. Wenn beispielsweise eine Vorlage geändert wird, die eine semantische Annotation enthält, müssen möglicherweise alle Seiten, in die diese Vorlage eingebunden ist, aktualisiert werden. Ebenso müssen in jedem Fall alle Seiten aktualisiert werden, die ein Attribut nutzen, dessen Datentyp geändert wurde. Die Aktualisierung der entsprechenden Daten auf den Wikiseiten nimmt dabei etwas Zeit in Anspruch. Es gibt in diesem Zusammenhang keine bequeme Möglichkeit den Aktualisierungsfortschritt nachzuvollziehen.

Hinweise
Sofern man einem Wiki einen neuen benutzerdefinierten Namensraum hinzufügt oder einen bereits bestehenden Namensraum mit der Einstellung true</tt> für den dem Parameter $smwgNamespacesWithSemanticLinks zur Nutzung mit semantischen Annotationen aktiviert, wird das Spezialattribut Zuletzt geändert nicht automatisch für die letzte Version einer bereits vorhandenen Seite des betreffenden Namensraums gesetzt. Es ist zudem in beiden Fällen nicht möglich, dies mit einer auf dieser Seite beschriebenen Möglichkeit der Datenreparatur zu erreichen. Vielmehr wird dieses Spezialattribut erst mit der nächsten Bearbeitung einer Seite im betreffenden Namensraum gesetzt.