News

Blog

Blog: Nepomuk und Strigi

Contributed by devil on 29. Aug 2009 - 12:16 Uhr

KDE4 bringt uns neue Techniken für den Desktop. Dazu gehört neben Akonadi auch Nepomuk. Nepomuk ist ein Projekt des Deutschen Forschungszentrums für Künstliche Intelligenz (DFKI) welches von KDE4 adaptiert wurde und uns den semantischen Desktop verspricht.

Der semantische Desktop, abgeleitet vom semantischen Web versucht Daten und Informationen auf unseren Rechnern über verschiedene Dateiformate hinaus sinnvoll zu verknüpfen. Dazu verwendet es das universelle Dateiformat Resource Description Framework (RDF). Tiefergehende Informationen zum semantischen Desktop gibt es unter http://de.wikipedia.org/wiki/Semantischer_Desktop . Nepomuk beinhaltet  auch Strigi zur Indexierung und Desktopsuche. Es wird sehr interessant sein zu verfolgen was uns Nepomuk in Zukunft noch bringt.

Mit KDE4.3 funktionieren Nepomuk / Strigi einwandfrei, aber leider nicht out of the box. Auch sind die Informationen im Netz noch sehr rar und nicht wirklich klar. Deshalb werde ich einmal die Inbetriebnahme bei sidux erklären.

Zunächst einmal etwas nötige Theorie: Nepomuk bedient sich eines objektorientierten RDF Frameworks namens Soprano welches wiederum verschiedene Backends nutzen kann. Soprano ist die zentrale Meta- Datenspeicherung der RDF Daten und kann verschiedene Backends benutzen. Zur Zeit sind das:

    * redland
    * sesame2
    * virtuoso

Debian verwendet momentan redland welches leider sehr langsam ist. sesame2 ist wegen vielen zu integrierenden Java jars nicht wirklich sinnvoll zu paketieren. Die Zukunft bei debian soll virtuoso gehören welches aber noch nicht benutzbar ist.

Eine schematische Darstellung macht die Zusammenhänge etwas klarer:

Schematik von Nepomuk

Weitere Erklärungen hierzu gibt es unter http://liquidat.wordpress.com/2007/06/19/more-about-nepomuk-kde-soprano-and-kde-integration/



Vorbereitung:

Zuerst stellen wir einmal sicher das alle nötigen Pakete installiert sind:

dpkg -l *strigi*
ii  kdegraphics-strigi-plugins          4:4.3.0-1                           graphics file format plugins for Strigi Desktop Search
ii  kdepim-strigi-plugins               4:4.3.0-1                           PIM file format plugins for Strigi Desktop Search
ii  kdesdk-strigi-plugins               4:4.3.0-3                           software development file format plugins for Strigi Desktop Search
ii  libstrigihtmlgui0                   0.7.0-1+b2                          library for writing html clients for Strigi Desktop Search
ii  libstrigiqtdbusclient0              0.7.0-1+b2                          library for writing D-Bus clients for Strigi Desktop Search
ii  strigi-applet                       0.5.7-1                             KDE applet for Strigi Desktop Search
ii  strigi-client                       0.7.0-1+b2                          Qt4 client for Strigi Desktop Search
ii  strigi-daemon                       0.7.0-1+b2                          fast indexing and searching tool for your personal data (daemon)
ii  strigi-plugins                      0.5.7-1                             plugins for Strigi Desktop Search

Bitte fehlende Pakete nachinstallieren.
Nach Aufruf  von Systemeinstellungen – Erweitert – Desktopsuche ist es sehr wahrscheinlich dass wir folgenden Fehler zu Gesicht bekommen:


    Der Strigi-Dienst kann nicht initialisiert werden - wahrscheinlich liegt ein Installationsproblem vor

Dieser Fehler und/oder andere erschienen bei mir auf allen Rechnern die sun-java  verwenden im Gegensatz zu openjdk. Abhilfe schafft hier folgender symbolischer Link:

    ln -s /usr/lib/jvm/java-6-sun/jre/lib/i386/server/libjvm.so /usr/lib/libjvm.so  (bitte i386 gegen amd64 austauschen bei 64-bit Installationen)

Bei openjdk war dies nicht notwendig, hier zeigte sich Strigi betriebsbereit. Unter 64-bit hatte ich trotzt korrektem Symlink mit sun-java überhaupt kein Glück, hier ging nur openjdk, und das ohne Symlink.

Für openjdk lautet der symlink, falls nötig:

ln -s /usr/lib/jvm/java-6-openjdk/jre/lib/i386/server/libjvm.so /usr/lib/libjvm.so   (bitte i386 gegen amd64 austauschen bei 64-bit Installationen)
Nun wollen wir noch das sesame2 Backend installieren da es wesentlich schneller ist als das vorinstallierte redland. Da sesame2 in Debian nicht erhältlich ist hat es towo freundlicherweise zum Testen für 32-bit und 64-bit paketiert. Die Pakete sind installierbar nach Eintrag folgender URL in /etc/apt/sources.list.d:


    deb http://frickelplatz.de/debian/ sid main contrib non-free

und anschliessend:

    apt-get update && apt-get install frickelplatz-keyrings && apt-get install soprano-backend-sesame

Achtung: dies sind keine offiziellen sidux Pakete aber sauber gepackt und ausreichend zum Testen bis es in Debian ein vernünftiges Backend (vermutlich virtuoso) gibt.


Anschliesssend sollte der Befehl sopranocmd --help unter --backend folgendes ausgeben:

    --backend        The backend to use when accessing a storage directly and not via the Soprano server.
                           Possible backends are:
                           redland, sesame2

Wenn wir jetzt aus dem K-Menue Systemeinstellungen aufrufen und unter Erweitert auf Desktopsuche gehen und dort beide Haken setzen sollte alles bereit zur Indizierung sein und diese automatisch starten. Für einen ersten Test bitte unter Erweiterte Einstellungen eine kleine sinnvolle Auswahl aus /home treffen. Es können sowohl Ordner in /home direkt ausgeschlossen werden als auch bestimmte Dateitypen. Die erste Indexierung der Daten dauert eine Weile, bei 200 MB aus /home hier so etwa 4 Stunden. Danach werden nach jedem Booten kurz die neuen Daten indexiert, dies dauert hier einige Minuten. Man kann dies aber auch in den Systemeinstellungen abstellen indem man den unteren der beiden Haken entfernt und nur bei Bedarf neu indexiert.

Achtung: Bei Notebooks sollte die erste Indexierung nur bei Netzbetrieb ausgeführt werden. Strigi erkennt zwar einen niedrigen Akkustand,  stoppt die Indexierung und nimmt sie nach einem Neustart wieder auf. Dies führt aber teilweise noch zu einer fehlerhaften Datenbank

Wenn die erste Indexierung abgeschlossen ist kann man nun in Dolphin und K-Runner bequem und (mit sesame2 im Gegensatz zu redland) sehr schnell suchen. Selbst Suchen mit hunderten Treffern dauern 1-2 Sekunden. Dazu benutzt man in Dolphin das Suchfeld oben rechts oder in K-Runner (ALT-F2) den Begriff nepomuksearch:/suchwort

 

Kommentare

  1. funktioniert bei mir nicht
    Vielen Dank für die ausführliche Anleitung, funktioniert bei mir leider nicht (32 bit, Sun-java). Symlink ist angelegt, alle erwähnten Pakete sind in der erwähnten Version installiert, ebenso towos Paket (und --backend zeigts auch an). In systemsettings habe ich nach wie vor die "kann nicht initialisiert werden"-Meldung.
  2. Hallo devil,
    tja, auch ich dachte es funzt nicht aber ein Neustart des Systems vollbrachte wahre Wunder ... Alles geht jetzt bestens ! Vielen Dank für die Anleitung.
  3. Stimmt, der Neustart hats gebracht, strigi müllt mir nun grad die Platte voll.
  4. strigi-applet
    Hallo @devil,

    Danke für Deine Arbeit, Nepomuk und Strigi zu dokumentieren.

    Zu Deiner Anleitung habe ich zwei Anmerkungen:
    1. Ist o.g. Paket nicht überflüssig? Es zieht bei mir KDE 3 Abhängigkeiten nach:
    http://packages.debian.org/sid/strigi-applet

    2. Die Paketübersicht hast Du doppelt in den Artikel reingepackt.

    Viele Grüße,
    Holger
  5. Weitere mögliche Fehlerquelle: nepomukserverrc
    Falls der Service partout nicht starten will, könnte es sein, dass man aufgrund von was auch immer in
    ~/.kde/share/config/nepomukserverrc
    noch redland statt sesame2 drin stehen hat.
  6. danke für die Arbeit!
  7. funktioniert bei mir trotz aller Hinweise nicht...
    Hi,

    habe alles wie oben versucht, bei mir läuft der Dienst aber nicht (amd64). Nach Neustart steht da: "...Dienst nicht aktiviert", nach Anklicken des zweiten Häkchens und "Anwenden" steht die alte Meldung "...kann nicht initialisiert werden...".

    Na ja es kommt ja eh ein größeres Update hierzu, da warte ich mal drauf.

    Zwei Hinweise:

    1) Gut wäre ein Test mit dem ich rausfinde ob ich java oder openjdk habe. Dann brauche ich auch nur den symlink setzen, den ich benötige (falls zukünftig überhaupt noch nötig).

    2) Der Hinweis:

    "Anschliesssend sollte der Befehl sopranocmd --help unter --backend folgendes ausgeben:..."

    erschließt sich mir nicht. Was gebe ich ein?

    > sopranocmd --help --backend ???
    oder erst
    > --backend und dann sopranocmd --help

    > Unter root oder user ???

    Man sollte bei solchen Hinweisen an die Nicht-Profis denken!? Dies als Hinweis.


    Die Arbeit weiß ich natürlich zu schätzen!!

Nur angemeldete Benutzer dürfen kommentieren. Registrierung oder Anmeldung.