Intelligente Websites mit Semantic MediaWiki erstellen
Dieses Anfänger-Tutorial für Semantic MediaWiki beschreibt in wenigen einfachen Schritten, wie man ein semantisches Wiki erstellt und die ersten Schritte macht.Was bringt mir ein Semantisches Wiki?
Semantische Wikis wirken auf den ersten Blick etwas abstrakt, sind jedoch ein mächtiges Tool, um Websites mit automatisierten, intelligenten Suchfunktionen zu erstellen. Es eignet sich als Grundlage vor allem für Websites, die bestimmte Dinge oder Themen systematisch beschreiben, also z.B. Nachschlagewerke, Fakten-Sammlungen, Lexika, Enzyklopädien, Wissensdatenbanken und Hilfetexte bzw. Dokumentationen. Beliebt sind sie inzwischen aber auch als interne Firmen-Wikis, z.B. im Projekt- und Wissensmanagement. Auch im immer beliebter werdenden Segment des Datenjournalismus können Semantische Wikis sinnvoll eingesetzt werden.
Was ist nun der Unterschied zu anderen Websites? Normale Websites wie z.B. Blogs bestehen meist aus Sammlungen von unstrukturierten Texten. Bei Semantischen Wikis ist dies anders: hier besteht der Grundstock der Seiten aus Beschreibungen von Objekten, die mit Daten angereichert sind. Jede Seite repräsentiert für das System das beschriebene Objekt und enthält Daten, die mit diesem Objekt verbunden sind. So lässt sich beispielsweise auf einer Seite über die deutsche Hauptstadt "Berlin" fest die Einwohnerzahl "3,4 Millionen" (oder: 3.400.000) verankern.
Der Clou: Diese Daten können dann von anderen Seiten abgefragt werden. So kann man beispielsweise einen normalen Text über deutsche Großstädte schreiben, und dann über eine Abfrage - einen kurzen Codeschnipsel - die Einwohnerzahl anzeigen. Wird die Einwohnerzahl auf der Seite über die Stadt geändert, so ändert sie sich dadurch auch in dem Text, in dem diese Abfrage steht. So braucht man die Texte nicht alle Monate zu pflegen und aktualisieren.
Mit einem Semantischen Wiki können weiterhin alle möglichen automatischen Listen mit diesen Daten und sogar vollautomatisch generierte Texte erstellt werden. Die Möglichkeiten hier gehen - bei entsprechender Einarbeitung - weit über die sogenannter "Text-Spinning-Tools" hinaus, weshalb Semantic MediaWiki auch im Bereich der Suchmaschinenoptimierung interessant werden könnte. Auch Drupals "Views"-Modul zieht trotz seiner Mächtigkeit gegen Semantic MediaWiki klar den Kürzeren.
Doch es ist noch viel mehr möglich: SMW kann sich mit dem "Semantischen Web" verbinden und automatisch von anderen Seiten Daten abfragen und in das eigene Angebot integrieren. Damit ist der Weg zu einem "allwissenden Web-Gehirn" nur noch eine Frage der Größenordnung...
Wie man Semantic MediaWiki installiert und die ersten Schritte macht, ist Thema dieses Semantic-MediaWiki-Anfänger-Tutorials. Wer diese Anleitung durchgearbeitet hat, kann bereits die grundlegenden Funktionen der Software anwenden und eigene Seiten bauen. Für fortgeschrittene Funktionen empfiehlt sich die (hauptsächlich englischsprachige) Dokumentation auf der Website von Semantic MediaWiki.
Wann brauche ich ein Semantisches Wiki nicht?
Die Einrichtung eines Semantischen Wikis ist mit deutlich mehr Aufwand als der eines einfachen Blogs verbunden. Daher handelt es sich auch um eine Frage der Größe: Je größer das Projekt und je eher es in die Richtung einer "Wissensdatenbank" geht, um so mehr lohnt sich ein semantisches Wiki als Grundlage. Eigentlich können fast alle Website-Typen ab einer bestimmten Größe von einem semantischen Wiki profitieren. Aber für ein normales Blog oder eine Video-Website ist es in der Regel nicht notwendig.
Semantic MediaWiki
Semantic MediaWiki (SMW) basiert auf der Software MediaWiki, die der Unterbau der Wikipedia und anderer Web-Enzyklopädien ist. Dabei ist es nicht nötig, dass man wirklich ein Wiki im traditionellen Sinn, also eine frei editierbare Website erstellt - auch eine geschlossene Privatseite ist möglich. Einfache Semantic-Web-Funktionen bieten seit wenigen Jahren zwar auch Standard-Content-Management-Systeme wie WordPress oder (besonders) Drupal, doch die Mächtigkeit und Reife von Semantic MediaWiki stellt alle Konkurrenten auf diesem Gebiet in den Schatten. SMW wird bereits seit 2006 entwickelt und ist daher schon weit über das Experimentierstadium hinaus.
Es gibt auch einige andere Semantic-Wiki-Tools wie OntoWiki oder ACLWiki, die aber bei weitem nicht den Reifegrad von SMW aufweisen und weitaus schwieriger zu bedienen sind.
Installation und Konfiguration
Zuerst sollte man die Voraussetzungen betrachten. Man benötigt einen Webspace oder Server mit folgenden Optionen:
- PHP 5
- MySQL 5
- Apache oder Lighttpd (MediaWiki funktioniert auf Linux- oder Windows-Servern)
Ein SSH-Zugang ist nicht unbedingt notwendig, aber sehr hilfreich, besonders bei größeren Projekten. Schon zum kleinen Preis gibt es viele Webhoster, die ihn anbieten.
In der Anleitung gehe ich davon aus, das bekannt ist, wie der Webspace bedient wird, also z.B. eine Datenbank angelegt wird. Ansonsten funktioniert die Installation von MediaWiki ähnlich wie die jedes anderen CMS auch.
Download und Installation
Zunächst muss man MediaWiki von mediawiki.org herunterladen. Hier nimmt man am besten die aktuellste stabile Version.
Dann lädt man sich das sogenannte Semantic Bundle hier herunter. Dieses beinhaltet Semantic MediaWiki und alle Erweiterungen, die für ein Semantisches Wiki notwendig sind.
Die beiden Pakete sind als ZIP- oder GZip-Archiv vorhanden. Nun geht man in den Webspace in das Verzeichnis, in dem SMW installiert werden soll (normalerweise der "Document Root", also je nach Hoster ein Verzeichnis mit dem Namen "public_html", "html", bzw. bei einem Server meist "/var/www" oder bei XAMPP "htdocs" ). Dort entpackt man zunächst MediaWiki. Dabei wird automatisch ein neues Verzeichnis mit dem Namen der MediaWiki-Version erstellt.
Nun entpackt man das Archiv "Semantic Bundle" in den Ordner "extensions", der sich unterhalb des Verzeichnisses "/w" befindet.
Als nächsten Schritt legt man eine Datenbank z.B. mit PHPMyAdmin an.
Dann installiert man MediaWiki über den Browser, indem man die URL des Webspaces bzw. des gewählten Unterverzeichnisses aufruft. Der Installer ist eigentlich weitgehend selbsterklärend und funktioniert auch auf Deutsch. Man gibt also, wie bei anderen Systemen auch, Benutzername, Datenbank sowie den Name der Website sowie einige weitere Daten an. Allerdings ist der Installer auf ein öffentliches Wiki ausgelegt. Wer daher ein "geschlossenes Wiki", also eine nicht von außen editierbare Website betreiben will, der sollte den Installer bis zum Ende durchgehen und die entsprechende Option auswählen.
Der Installer generiert eine Datei mit dem Namen "LocalSettings.php", welche die Konfiguration enthält. Diese herunterladen und auf dem eigenen PC speichern. Dann diese Datei auf den Webspace direkt in das Verzeichnis "w" hochladen.
So, jetzt kann man sein eigenes Wiki schon mal besuchen! Erscheint der Begrüßungstext, dann war alles richtig! Ansonsten in der MediaWiki-Hilfe nachschauen, was falsch gemacht wurde.
Semantic MediaWiki konfigurieren
Jetzt wird's etwas schwieriger: Man muss noch etwas nacharbeiten und folgendes tun:
- Die Datei LocalSettings.php vom Webspace aus mit einem Texteditor öffnen.
- Folgenden Code ganz unten anhängen:
# Semantic MediaWiki
require_once( "$IP/extensions/semantic-bundle/SemanticBundleSettings.php" );
require_once( "$IP/extensions/semantic-bundle/SemanticBundle.php" );
Dieser Code bewirkt, dass die grundlegenden semantischen Erweiterungen aktiviert werden.
Man geht nun ins Wiki, loggt sich mit seinem Administrator-Account ein und gibt dann in das Suchfeld rechts oben "Special:SMWAdmin" ein.
Es erscheint eine Seite mit drei Abschnitten, die jeweilige Admin-Aufgaben angeben. Hier den ersten Button (Tabellen initialisieren) anklicken. Damit wird Semantic MediaWiki endgültig installiert.
Jetzt kann man noch weitere Extensions freischalten. Dazu geht man auf dem Webspace in das Verzeichnis w/extensions/semantic_bundle und ruft dort die Seite SemanticBundleSettings.php mit einem Texteditor auf.
Außer Semantic MediaWiki und Validator sind alle Extensions auskommentiert, was man an einer Raute ("#") vor dem Extension-Namen erkennt. Um eine Extension zu aktivieren wird diese Raute jeweils gelöscht. Für ein bequemes Arbeiten Pflicht sind dabei die folgenden:
- Semantic Forms: Erlaubt es, die Daten über selbst definierte Formulare zu editieren.
- ParserFunctions: Erlaubt es, einfache logische Konstruktionen (z.B. if - then) einzubauen.
Weitere nützliche Extensions:
- Maps / Semantic Maps: Erlaubt es, Karten von GoogleMaps oder OpenStreetMap einzubinden
- Widgets: Erlaubt es, Dinge wie YouTube-Videos, Disqus-Kommentare, Social Bookmarks etc. einzubinden.
- External Data: Erlaubt es, Daten von anderen Websites abzugreifen und automatisch weiterzuverarbeiten.
Damit wollen wir uns aber hier nicht aufhalten, denn dies würde den Rahmen dieses Textes weit sprengen...
Ein Modell für das Wiki bauen
So, nun kommen wir zur eigentlichen Arbeit beim Aufbau eines Semantischen Wikis: Dem Aufbau eines Modells, einer sogenannten Ontologie. Und damit zum Hauptteil dieses Semantic-MediaWiki-Tutorials.
Das hört sich erst einmal sehr abstrakt und wissenschaftlich an, ist aber gar nicht schwer!
Zuerst fragen wir uns: Welche Arten von Objekten will ich in meinem Wiki beschreiben?
Beispiele:
- In einer Wissensdatenbank im Gesundheitsbereich können es z.B. Krankheiten, Organe und Kliniken sein.
- In einem Lexikon über Rockmusik sind die Objekte z.B. Bands, Musiker, Songs, Alben und Labels.
Schritt 1: Die Kategorienstruktur
Nehmen wir einmal das letzte Beispiel, da es uns hilft, viele Zusammenhänge auf einfache Weise zu verstehen. Wir bauen also als Probe-Wiki ein Lexikon über Rockmusik mit Bands, Musikern, Songs, Alben und Labels als Objekten.
Der erste Schritt ist der Aufbau einer Kategorienstruktur, einer sogenannten Taxonomie. Kategorien sind die Arten von Objekten, die wir in unserem Semantischen Wiki beschreiben wollen. Wir benötigen also für jede "Art Objekt" eine dieser Kategorien. Also in unserem Fall jeweils eine Kategorie für Bands, Musiker, Songs, Alben und Labels.
Das Anlegen von Kategorien ist sehr einfach: Einfach in das Suchfeld oben rechts den Begriff "Kategorie", einen Doppelpunkt und den gewünschten Kategoriennamen eingeben.
Wir geben also als erstes ein:
Kategorie:Band.
(Einzahl ist in einem semantischen Wiki immer(!) besser als Mehrzahl, um Verwirrung zu vermeiden).
Es erscheint eine Seite, die uns mitteilt, dass es diese Kategorie nicht gibt. Dann erscheint ein roter Link. Auf diesen klicken wir, und erscheint ein Feld. In dieses geben wir nun einen beliebigen Beschreibungstext ein, z.B. "Die Kategorie 'Band' enthält alle Bands". Man kann das Feld auch leer lassen.
Wir speichern den Text mit Klick auf den Button unten und unsere erste Kategorie ist fertig!
Denselben Vorgang wiederholen wir für "Kategorie:Musiker", "Kategorie:Song", "Kategorie:Album" und "Kategorie:Label".
Nun haben wir fünf Kategorien, aber noch keine richtige Struktur. Die Frage ist nun: Kann man diese Kategorien sinnvoll gruppieren?
Wir überlegen uns: "Bands" und "Musiker" sind ja zwei Arten von "Künstlern". Ein Song kann z.B. von einer Band oder einem einzelnen Musiker veröffentlicht sein.
Nun gehen wir also (über das Suchfeld rechts oben, wie gehabt) auf die Seite "Kategorie:Band", klicken auf "Editieren" und geben ganz unten folgenden Codeschnipsel ein:
[[Kategorie:Künstler]]
und speichern ab.
Nun gehen wir in die "Kategorie:Musiker" und machen das selbe noch einmal.
Jetzt haben wir auf beiden Seiten unten einen roten Link auf die Kategorie "Künstler". Diese müssen wir noch anlegen. Dazu klicken wir einfach darauf und geben einen Beschreibungstext ein, z.B. "Diese Kategorie gruppiert alle Künstler, die als Urheber eines Songs oder Albums in Frage kommen, also z.B. Bands und einzelne Musiker".
Halt, noch nicht abspeichern!
Es ist in vielen Fällen sinnvoll, eine Hauptkategorie zu erstellen, die alle Dinge enthált. Im Semantic-Web-Bereich wird diese auf englisch meist "Thing" genannt. Im Deutschen hat sich noch kein Begriff etabliert, aber weil es so schön ist, nennen wir sie einfach "Ding".
Wir gehen dazu genauso vor wie beim vorigen Schritt und geben einfach am unteren Ende des Beschreibungs-Texts der Kategorie Künstler folgendes an:
[[Kategorie:Ding]]
Das Prinzip sollte jetzt klar sein, oder?
Wir legen nun nach dem selben Muster eine Oberkategorie für "Album" und "Song" an. Diese nennen wir "Veröffentlichung".
"Veröffentlichung" ordnen wir wieder unter "Ding" ein.
"Label" ist etwas vollkommen anderes und lässt sich mit dem Rest nicht einfach gruppieren. Daher ordnen wir diese Kategorie direkt unter "Ding" ein.
Wir haben nun eine Kategorienstruktur mit drei verschiedenen "Haupt-Ästen": "Veröffentlichung", "Künstler" und "Label". Unter "Veröffentlichung" befinden sich "Song" und "Album" und unter "Künstler" "Band" und "Musiker".
Damit ist der erste Schritt beendet! Wenn du es bis hierher geschafft hast: Gratulation! Erst einmal tief durchatmen, denn jetzt kommt der vielleicht anspruchsvollste Teil des ganzen Tutorials.
Schritt 2: Attribute anlegen
Kommen wir nun zum Kernelement eines Semantischen Wikis, den Attributen.
Wie beschreibt man Attribute am besten? Das ist gar nicht so einfach.
Jede Aussage, die wir machen, könnten wir als einen kurzen Satz ansehen. Nehmen wir einmal folgenden:
"Michael Jackson hat das Album 'Thriller' veröffentlicht".
Vielleicht erinnern sich einige noch an die Grammatiklektionen aus dem Deutschunterricht in der Schule. Dort hatte jeder Satz ein Subjekt, ein Prädikat und ein Objekt.
- Das Subjekt ist ein Substantiv (Hauptwort) oder ein Namenswort, das das "Hauptobjekt" im Satz darstellt. In diesem Fall ist es "Michael Jackson".
- Das Prädikat ist im Grundsatz ein Verb (Tu-Wort), das die Aktivität im Satz beschreibt, es kann aber noch weitere Details enthalten. Hier ist es "Hat Veröffentlicht"
- Das Objekt ist ein Substantiv (Hauptwort) oder ein Namenswort, das über das Prädikat mit dem Subjekt in Verbindung gebracht wird. In diesem Fall ist es "(das Album) Thriller", wobei "das Album" nur eine weitere Beschreibung zum besseren Verständnis für den Leser ist. Der Satz wäre mit "Michael Jackson hat 'Thriller' veröffentlicht" eigentlich schon vollständig, wenn wir wissen, dass Thriller der Name eines Albums ist.
In Semantischen Wikis und im Semantic Web generell arbeitet man mit ganz ähnlichen Strukturen:
- Subjekte sind in unserem Fall die Seiten unseres Wikis, die jeweils ein Ding beschreiben.
- Prädikate sind die Attribute, um die es in diesem Abschnitt gehen soll.
- Objekte sind andere Seiten, die über das Attribut mit der Subjekt-Seite verbunden werden.
Um das besser zu verstehen, legen wir die Seiten doch einfach einmal an.
Geben wir dazu zunächst in das Suchfeld Michael Jackson ein. Wie bei den Kategorien einfach dann auf den erscheinenden roten Link klicken. Dann erscheint wieder das Bearbeitungsfeld. Hier geben wir einen kurzen Beschreibungstext ein, z.B. "Michael Jackson ist ein US-amerikanischer Pop-Sänger."
Wir wollen nun signalisieren, dass Michael Jackson das Album "Thriller" veröffentlicht hat.
Wichtig: Wie oben angedeutet, interessiert der Teil "Das Album" des Satzes erst einmal nicht, da dieser "Thriller" und nicht "Michael Jackson" beschreibt!
Also müsen wir folgenden Satz in den Code von Semantic MediaWiki umwandeln:
Michael Jackson - Hat veróffentlicht - Thriller.
Da "Michael Jackson" schon die Seite ist, auf die wir uns befinden, brauchen wir diesen Teil des Satzes nicht noch einmal eingeben. Stattdessen geben wir folgendes ein:
[[hat veröffentlicht::Thriller]]
Dies ist die wichtigste Struktur für Attribute in Semantic MediaWiki. "Hat veröffentlicht" ist hier das Attribut.
Der Code für jede beliebige "Beziehung" zwischen Subjekt, Attribut und Objekt lautet also:
[[Attribut::Objekt]] (auf der Seite mit dem Namen des Subjekts)
So schwer war das jetzt auch wieder nicht, oder? Damit haben wir schon fast den Aufbau des Semantic Web verstanden. Denn auch dieses besteht aus solchen Strukturen: Subjekt - Attribut - Objekt.
Bevor wir abspeichern, können wir gleich die Kategorie dazugeben und so die Seite in unsere Taxonomie einsortieren.
Wir geben also unter dem Text folgendes ein:
[[Kategorie:Musiker]]
und speichern erst einmal ab.
Es erscheint unser Beschreibungstext, unten die Kategorie sowie in der Mitte das Wort "Thriller", verlinkt in roter Farbe. "Hat veröffentlicht" wird nicht angezeigt - das ist richtig so!
Ein kleiner Schritt fehlt noch: Auch Attribute haben eigene Seiten, ähnlich wie Kategorien. Diese können, solange wir "Semantic Forms" (siehe Kapitel Installation) aktiviert haben, komfortabel über ein Formular angelegt werden.
Wir gehen dann in unserem Suchfeld einfach Special:CreateProperty ein.
Es erscheinen zwei Felder, die eine Eingabe erwarten:
- Der Name des Attributs. Dies ist in diesem Fall "Hat veröffentlicht" (Bitte keine Rechtschreibfehler machen, sonst muss alles nochmal gemacht werden)
- Der Typ des Attributs. Der Standard ist hier "Seite". Das lassen wir einfach so.
Erklärung: "Seiten" sind alle Objekte, die mit einem Substantiv oder einem Namen beschreibbar sind und daher Seiten in unserem Wiki sein könnten. Wir haben ja gesagt, dass wir auch Seiten über Alben anlegen wollen. Später werden wir daher auch die Seite "Thriller" anlegen. (Es gibt noch andere Arten von Objekten, z.B. Zahlen, Datumsangaben, URLs, E-Mail-Adressen usw. Diese sollen uns erst einmal nicht beschäftigen.)
Nun klicken wir auf "Speichern" und schon ist unser Attribut fertig!
Und gleich eine Überraschung: Auf der Seite wird bereits vollautomatisch angezeigt, dass "Michael Jackson" bei diesem Attribut den Wert "Thriller" aufweist. Das ist schon einmal ein kleiner Vorgeschmack auf die Mächtigkeit von Semantic MediaWiki!
Nun wollen wir die Seite "Thriller" anlegen. Dazu klicken wir auf den roten Link "Thriller" - schon öffnet sich das Bearbeitungsfenster. Dort geben wir ein:
Thriller ist ein Album von [[Michael Jackson]].
*Veröffentlicht [[Veröffentlichungsdatum::1982]]
*Label [[Veröffentlicht auf::Epic Records]]
[[Kategorie:Album]]
Das Sternchen in der zweiten und dritten Zeile nicht vergessen - denn so entsteht ein schön formatierter Stichpunkt. Was die anderen Zeilen machen, sollten wir eigentlich jetzt verstanden haben: Michael Jackson wird mit einem einfachen Link in der ersten Zeile verlinkt. Die zweite Zeile ordnet das Attribut "Veröffentlichungsdatum" der Zahl 1982 zu, die dritte Zeile verbindet das Attribut "Veröffentlicht auf" mit dem Label "Epic Records" und die vierte Zeile ordnet die Seite in die Kategorie "Album" ein.
Es fehlen noch die Seiten der Attribute. Also legen wir "Veröffentlichungsdatum" und "Veröffentlicht auf" an.
Wir gehen dabei vor wie bei "Hat veröffentlicht" (also zuerst auf Special:CreateProperty gehen), mit einem Unterschied: Bei "Veröffentlichungsdatum" geben wir als Typ nicht "Seite", sondern "Datum" an. Dies erlaubt es uns später, wenn wir schon viele Artikel über Alben und Songs haben, richtig nach Datumsangaben zu sortieren. "Veröffentlicht auf" ist dagegen ein normales Attribut vom Typ "Seite".
Noch ein kleiner Schritt, und wir haben den schwierigsten Teil hinter uns: Das Label "Epic Records" anlegen. Wir können einen ganz einfachen Text eingeben ("Epic Records ist ein bedeutendes Musiklabel") und dann nicht vergessen, den Text in die Kategorie Label einzuordnen, wie oben bei "Michael Jackson" in "Musiker" und bei "Thriller" in "Album".
So, das wäre erst einmal geschafft! Jetzt noch mal testen, ob alles geklappt hat.
Gehen wir nun auf "Michael Jackson". Wir sehen, dass das Wort "Thriller" jetzt blau angezeigt wird. Wenn nicht, dann hat der geneigte Leser etwas falsch gemacht und muss zur Strafe den Abschnitt noch einmal von vorne lesen! Ansonsten: Wir klicken auf "Thriller" und sehen dort, dass auch "Epic Records" jetzt blau ist.
Dann können wir noch die Kategorien durchtesten: Wenn wir auf die Kategorie "Album" klicken, sollte "Thriller" automatisch dort erscheinen. Dasselbe bei "Label" und "Epic Records" und "Musiker" und "Michael Jackson".
Jetzt können wir einen Kaffee trinken, denn der schwierigste Punkt ist geschafft!
Schritt 3: Abfragen und Listen erstellen
Nun wollen wir mit diesen Daten eine automatische Liste erstellen, was mit einer sogenannten Abfrage an unsere Datenbasis realisiert wird.
Kleine Zwischenübung zum Aufwärmen: Legen wir erst einmal 3 weitere Alben eines beliebigen Künstlers an (Wer es einfach haben will, nimmt einfach die Alben "Bad", "Dangerous" und "History" von Michael Jackson). Dazu bitte jeweils Label, Veröffentlichungsdatum und Kategorie ("Album") angeben. Zumindest ein weiteres der Alben sollte auf Epic Records veröffentlicht worden sein.
Nun haben wir ja eine Seite von Epic Records angelegt, aber diese bisher leer gelassen. Das soll sich ändern! Wir werden die Seite also mit einer Abfrage aller Alben dieses Labels aufwerten.
Dazu erst eine kleine Vorbemerkung:
Jede Angabe, die wir in einem semantischen Wiki machen, kann man als Filter für eine Abfrage verwenden. Dies betrifft Seitennamen, Kategorien und vor allem die Werte von Attributen.
Wir möchten jetzt folgendes herausfinden:
Welche Alben in unserem Wiki sind von Epic Records?
Die Angabe "in unserem Wiki" ist sehr wichtig - denn wir haben ja bisher erst vier Alben eingegeben. Über die anderen Alben dieses Labels können wir keine Aussage machen (sofern wir nicht auf andere Datenquellen zurückgreifen, aber das würde wieder einmal hier den Rahmen sprengen).
Diese Einschränkung müssen wir immer im Auge behalten. Denn später, bei komplexeren Datenstrukturen, können sonst schnell Missverständnisse entstehen.
Klar? Gut, dann geht es weiter.
Wir brauchen also eine Abfrage, die folgende Filter enthált:
- Es muss sich um ein Album handeln. Daher muss sich die Seite in der Kategorie "Album" befinden.
- Das Album muss von Epic Records veröffentlicht worden sein. Daher muss die Seite für das Attribut "Veröffentlicht auf" den Wert "Epic Records" aufweisen.
Abfragen werden in Semantic MediaWiki mit dem Stichwort #ask eingeleitet. Dahinter werden die Filter angegeben, und zwar auf gleiche Weise, wie in Artikeln Kategorien und Attribute angegeben werden. Am Ende steht die Kontrolle der Ausgabe. Folgende ist die Grundstruktur von #ask:
{{#ask: <Filter> | Ausgabe }}
Wir geben also unsere Frage wie folgt unter den Beschreibungstext und vor der Kategorie ein:
{{#ask: [[Kategorie:Album]] [[Veröffentlicht auf::Epic Records]]}}
Wir kónnen das erst einmal so abspeichern, ohne etwas über die Ausgabe anzugeben.
Schon beim Abspeichern sehen wir: Es sollte geklappt haben. Denn es werden die Alben von Epic Records aufgelistet.
Jetzt zur Ausgabe: Wir können bei diesem Schritt festlegen, dass in der Liste nur bestimmte Daten angezeigt werden. Es kann sich dabei wie bei den Filtern nur um Daten handeln, die wir mit Attributen und Kategorien markiert haben, dazu kommt der Seitenname.
Die Ausgabe der Kategorie wäre in diesem Fall unsinnig, da wir die Abfrage schon im Filter auf eine Kategorie beschränkt haben. Der Seitenname wird uns automatisch angezeigt. Auch den Wert des Attributs "Veröffentlicht auf" brauchen wir nicht auszugeben, denn auch dieses haben wir schon als Einschränkung verwendet, es hätte also nur einen möglichen Wert - nämlich "Epic Records".
Mit den bisher eingegebenen Daten können wir (auf einfache Weise) daher nur das Attribut "Veröffentlichungsdatum" abfragen.
Werte von Attributen fragen wir folgendermaßen ab: Wir geben einen senkrechten Strich (auch als "Pipe-Symbol" bekannt) und ein Fragezeichen ein, und dahiter (ohne Leerzeichen!) das gewünschte Attribut.
Also in unserem Fall "|?Veröffentlichungsdatum".
Der gesamte Code für die Abfrage sieht so aus:
{{#ask: [[Kategorie:Album]] [[Veröffentlicht auf::Epic Records]]
|?Veröffentlichungsdatum}}
Speichern wir ab und schauen uns das Ergebnis an.
Oha - wir sehen, hier hat sich etwas geändert. Statt einer einfachen Liste wird nämlich jetzt eine Tabelle ausgegeben!
Wir können das Format über den Parameter |format= steuern. So ergibt:
{{#ask: [[Kategorie:Album]] [[Veröffentlicht auf::Epic Records]]
|?Veröffentlichungsdatum
|format=ul}}
dasselbe, jedoch in einer Liste von Stichpunkten. Der Code lehnt sich an HTML an, in dem "ul" eine unformatierte Liste bezeichnet.
Wobei in diesem Fall unschön ist, dass der Name des Attributs "Veröffentlichungsdatum" mit dazu angezeigt wird. Mit einem Gleichheitszeichen ("=") hinter dem Attributsnamen können wir die Ausgabe des Attributs verändern oder unterdrücken:
{{#ask: [[Kategorie:Album]] [[Veröffentlicht auf::Epic Records]]
|?Veröffentlichungsdatum = Datum
|format=ul}}
zeigt "Datum" statt "Veröffentlichungsdatum" an. Mit
{{#ask: [[Kategorie:Album]] [[Veröffentlicht auf::Epic Records]]
|?Veröffentlichungsdatum =
|format=ul}}
können wir die Ausgabe des Attributnamens ganz unterdrücken. Wir können auch die Namen der Alben, also das Subjekt des jeweiligen Artikels weglassen:
{{#ask: [[Kategorie:Album]] [[Veröffentlicht auf::Epic Records]]
|?Veröffentlichungsdatum = Datum
|format=ul
|mainlabel=-
}}
Das mag in diesem Fall zwar eher unerwünscht aussehen, ist aber in einigen Fällen durchaus sinnvoll.
Fertig!
Wir haben jetzt die grundlegenden Schritte gelernt, um ein semantisches Wiki zu erstellen. Natürlich gibt es noch vieles, das man dazulernen kann und sollte!
- Vorlagen und Formulare zu erstellen, um die Bedienung zu vereinfachen.
- Daten nach bestimmten Kriterien sortieren zu können.
- Die Daten auf Landkarten oder als Grafiken auszugeben.
- Eigene komplexere Vorlagen zu erstellen, mit denen man automatische Texte generieren kann (SEOs olé)
- Daten von anderen Websites abzugreifen.
- Ein eigenes Modell des Weltwissens bauen und damit eine Künstliche Intelligenz erstellen...
Wie man sieht, würden diese Schritte in diesem Semantic-MediaWiki-Anfänger-Tutorial den Rahmen bei Weitem sprengen. Wir beschränken uns also erst einmal auf diese Grundschritte. Wie gesagt: Wenn man einmal das Thema der Attribute und Kategorien verstanden hat, ist der Rest gar nicht so schwer! Es fehlen also nur noch um Details, um die Ausgabe zu verfeinern.
In den Kommentaren nehme ich gerne Anregungen entgegen, um diese Semantic-MediaWiki-Anleitung noch zu verbessern. Denn wenn man im Semantic Web noch Total-Laie ist, sind sicherlich einige Sachen schwerer zu verstehen. Wenn also Beispiele und Details fehlen - seid mutig!