Semantische Suche
Durch die Anpassung der Vorlagen stehen nun alle Daten für die semantische Suche zur Verfügung. Das Interface für die Suche findet sich unter »http://example.org/index.php/Spezial:Semantische_Suche« - eine Wiki-typisch einfache Seite mit einer Eingabebox für die Suche, einer für (optionale) zusätzliche Parameter und dem Knopf, der die Suche startet. Eine Beispiel-Abfrage soll alle Personen finden, die am 26.12.1791 geboren sind. Dazu muss man das Wiki nach dem Attribut »attGeburtsdatum« durchsuchen. Die Abfrage »[[attGeburtsdatum:: 26.12.1791]]« im Suche-Feld liefert das Gewünschte, nämlich die Seite von Charles Babbage. Die Datumsnotation ist übrigens recht anpassungsfähig: Die Form »1791-12-26« funktioniert ebenfalls.
Für eine Suche nach allen Datensätzen, die über das Attribut »attGeburtsdatum::« verfügen, kommt eine Wildcard zum Einsatz. Der Platzhalter ist bei der semantischen Suche nicht das Sternchen, sondern das Pluszeichen: »[[attGeburtsdatum:: +]]«. Etwas komplexer ist folgende Abfrage:
[[attGeburtsdatum:: > 1700-01-01]]
[[attGeburtsdatum:: < 1800-01-01]]
Sie findet alle Seiten, auf denen das Geburtsdatum in einem bestimmten Zeitintervall liegt.
Tests auf größer oder kleiner sind also explizit anzugeben, ohne einen Operator prüft die Abfrage auf Gleichheit. Daneben gibt es nur noch den Test auf Ungleichheit, der mit dem Rufzeichen kodiert wird, und einen Like-Operator, als Tilde geschrieben. Letzterer funktioniert nur bei Strings und ist aus Performancegründen normalerweise ausgeschaltet.
Das Ergebnis dieser Suche zeigt, dass die beiden Bedingungen implizit mit einem »AND« verknüpft wurden. Aber auch eine Disjunktion ist möglich, entweder mit dem Operator »OR« oder mit »||«. Die Abfrage »[[attVorname:: Pablo || David]]« oder alternativ »[[attVorname:: Pablo]] || [[attVorname:: David]]« findet also alle Pablos und Davids.
Häufig wünscht sich der Wiki-Benutzer nicht nur eine Liste der Seiten, sondern eine Liste mit anderen Attributen, die auf der jeweiligen Seite vorkommen. In unserem Fall also Vor- und Nachname. Wer das will, trägt Folgendes ins Feld »Zusätzlichen Ausgaben« ein:
?AttVorname
?AttNachname
?AttGeburtsdatum
Abbildung 2 zeigt die gesamte Abfrage ergänzt um eine Sortierung nach dem Geburtstag und dem Ergebnis.

|
Abbildung 2: Eine semantische Suche mit Ergebnissen, Bedingungen und anzuzeigenden Attributen.
|
01 {|
02 ! Vorname
03 | [[attVorname::{{{vorname}}}]]
04 |-
05 ! Nachname
06 | [[attNachname::{{{nachname}}}]]
07 |-
08 ! Geburtsdatum
09 | [[attGeburtsdatum::{{{geburtsdatum}}}]]
10 |-
11 ! Geburtsstadt
12 | [[attGeburtsstadt::{{{geburtsstadt}}}]]
13 |}
|
Die gespeicherte Suche
Niemand möchte für Standardabfragen jedes Mal die Boxen neu füllen, das Ergebnis sollte immer auf Klick verfügbar sein. Dafür gibt es die Parserfunktion »#ask«. Das Format ist:
{{#ask: Argument1 | Argument2 | ... }}
Die Argumente sind die Inhalte der beiden Eingabeboxen von eben, garniert mit zusätzlichen Steuerparametern für die Ausgabe, wie Listing 4 zeigt.
01 {{#ask: [[attVorname::David]]
02 | ?attVorname
03 | ?attNachname
04 | sort=attNachname,attVorname
05 }}
|
Ein Blick auf die Hilfeseite des SMW [2] lohnt sich dabei, denn es steht eine ganze Reihe leistungsstarker Funktionen für die Abfrage und die Ergebnisformatierung zur Verfügung. Allerdings lauern auch einige Tücken. So kann es leicht geschehen, dass als Ergebnis der Suche gar nichts erscheint. Das liegt meistens an einem Tippfehler in den Attributnamen. In hartnäckigen Fällen hilft es, die Abfrage und die Spalten erst einmal zu reduzieren und dann Stück für Stück wieder zu ergänzen.
Etwas überraschend reagiert eine Abfrage auch, wenn sie nach Attributen sortieren soll, die nicht in der Ergebnismenge vorhanden sind. Befände sich in der Philosophenliste auch noch Aristoteles, so wäre zwar das Feld »attNachname« gefüllt, aber das Feld »attVorname« wäre wohl gar nicht vorhanden. Damit verschwände der Philosoph aus jeder Liste, in der nach »attVorname« sortiert wird. Verzichtet man auf diese Sortierung und belässt es dabei, den Vornamen nur in den Ergebnisspalten aufzuführen, so taucht er wieder auf.
Ein letztes Problem hat mit dem Caching-Mechanismus von Mediawiki zu tun: Gibt es neue Daten, so finden sie sich auf einer Abfrageseite erst dann, wenn diese frisch abgespeichert oder der Link »aktualisieren« angeklickt wird. Die Alternative dazu ist, mit einem beherzten »$wgEnableParserCache = false;« in der Datei »LocalSettings.php« den Parser-Cache gleich ganz auszuschalten. Das empfiehlt sich aber nur für wenig frequentierte Wikis.
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|
KDZ,
24.06.2009 18:09