Alle Beiträge, jStage Platform, Technologien & Entwicklung

Demodaten aus Wikipedia mittels Semantic Web

derived from S. Krause | CC

Um produktive IT-Systeme stetig erweitern und verbessern zu können, haben sich dedizierte Testumgebungen bisher immer gut bewährt. So können neue Features und eventuelle Fehlerbehebungen in einer isolierten Umgebung getestet werden, bevor diese in den produktiven Betrieb aufgenommen werden.

Anforderung

Aktuell arbeiten wir an unserem jStage Shopsystem mit diversen Testumgebungen, um die Stabilität unserer Software stetig zu erhöhen und um den Kunden Einblicke in die zukünftigen Vorabversionen gewähren zu können. Für eine noch agilere Entwicklung wurde eine kompakte Testumgebung konzipiert, sodass das gesamte Shopsystem lokal auf dem Rechner eines Entwicklers abläuft. In dieser Testumgebung ist anstatt der Testdatenbank eines Kunden, eine vom Kunden unabhängige Datenbank enthalten. Dadurch fehlt es natürlich auch an Demo- bzw. Testdaten (z.B. Test-Produkte für den Shop). Um eine größere Menge an Artikeln (samt Artikeldaten, Bilder, usw.) nicht per Hand anlegen zu müssen, wurde nach einem automatisierten Prozess gesucht.

Lösungsfindung

Zunächst habe ich nach frei verfügbaren und geeigneten Datenquellen recherchiert, aus denen die Demo-Artikel letztendlich generiert werden können. Die aktuelle Wahl ist auf Wikipedia und dabei willkürlich auf Motorräder gefallen. Um die Daten natürlich nicht per Hand kopieren zu müssen, wurde die Wikipedia-API evaluiert um die Daten programmatisch abzugreifen. Doch wie sagt man einem Programm, aus welchen konkreten Wikipedia-Seiten automatisiert die gewünschten Informationen bezogen werden sollen? Weiterhin konnte man in der API nicht auf die einzelnen Daten aus der Infobox zugreifen, z.B. “Drehmoment”, “Motor” oder “Leistung”. Die gesamte API liefert nur Texte in spezifischer Wikipedia-Markup Language, was wiederum aufwändig geparst werden muss. Um so einen Wikipedia-API Aufruf zu sehen klicken Sie einfach hier.

Bei der Recherche wie man die Infobox-Daten eines Wikipedia-Artikels systematisch abfragen
kann, fand ich das Projekt DBpedia bzw. DBpedia Deutsch. Hierbei handelt es sich um ein Projekt der Universität Leipzig, Mannheim und weiterer Institute. Dieses Projekt basiert auf der interessanten Technologie Semantic Web. Diese Technik möchte ich zunächst kurz vorgestellen.

Exkurs: Semantic Web

Von Semantic Web spricht man, wenn Informationen im Internet mit einer eindeutigen Beschreibung ihrer Bedeutung (Semantik) versehen werden. Somit soll es für Maschinen möglich sein, die von den Menschen angehäuften Informationen zu “verstehen” und logisch weiterzuverarbeiten. Ein einfaches Beispiele wäre z.B.: <Stadt>München</Stadt> <Geburtsjahr>1995</Geburtsjahr>  <Land>Deutschland</Land>

Das semantische Web wurde vom World Wide Web Consortium (W3C) erarbeitet und standardisiert. Weiterhin ist Sematic Web auch das maßgebliche Stichwort zu Web 3.0.
Lösung

Das DBpedia Projekt extrahiert systematisch Wikipedia-Einträge als strukturierte Informationen nach dem RDF-Standard (Resource Description Framework). Siehe z.B. diesen Wikipedia-Artikel als DBPedia-Resource. Auf diese semantisch angereicherten Informationen kann mit der graph-basierten Abfragesprache SPARQL zugegriffen werden. Hierzu ein Beispiel: Finde alle Personen, die vor 1900 in Berlin geboren sind mit Name, Geburtsdatum, Todesdatum und Link zur Resource (Person) .

Um das Ganze selber auszuprobieren, kann die obige Abfrage ganz einfach in den Online Editor von DBPedia kopiert werden. Dort lässt sich die Query auch direkt ausführen und man sieht das Ergebnis.

Implementierung eines Daten-Importers

implementierung_eines_daten-importers

Die Idee der Implementierung war nun ein Groovy Programm zu schreiben, welches automatisiert die gewünschten Artikel-Daten aus DBPedia (bzw. indirekt Wikipedia) liest und in die eigene Datenbank schreibt. Dazu wurde Apache Jena (ein Java Framework für Semantic Web) eingesetzt. Mit diesen Mitteln konnten mehrere hundert Motorräder mit allen verfügbaren Attributen, Bilder und Beschreibungstexte geladen werden. 

Siehe das Ergebnis dieser Query hier.

Um die einzelnen Attribute abzufragen wurde für jedes Motorrad eine etwas aufwändigere Query verwendet:

Ein kleiner Ausschnitt der Daten aus dieser Abfrage für eine Honda CBR 600 sieht z.B. wie folgt aus:

LABEL ABSTRACT HERSTELLER ANTRIEB BREMSEN THUMBNAIL
Honda CBR 600 Die Honda CBR600 ist ein Sporttourer (F-Modelle) bzw. Supersportler (RR-Modelle) des japanischen Fahrzeugherstellers Honda, das seit 1986 in achter Generation gefertigt wird. Honda Motor Co., Ltd. Kettenantrieb hi. 220 × 5 mm Einscheibenbremse;vo. 310 × 4,5 mm Doppelscheibenbremse, thumbnail-honda

Auf diese Art und Weise konnte ein initialer Datenimport unsere Testdatenbank mit tollen Mottorad-Daten füllen. Dabei waren uns vor allem viele Produktattribute, Artikeltexte und Bilder wichtig, um unsere Shopfeatures vernünftig testen und demonstrieren zu können.

Haben Sie auch mal eine größere Menge an Testdaten benötig oder sind mit Semantic Web in Berührung gekommen? Teilen Sie uns Ihre Erfahrung doch mit!

 

Quellen: