Speichern Sie Metadaten in das Jackrabbit-Repository

7

kann mir jemand erklären, wie man im folgenden Szenario vorgeht?

  1. Empfangen von Dokumenten (MS-Dokumente, ODS, PDF)

  2. Dubl-Core-Metadaten-Extraktion über Apache Tika + Inhaltsextraktion über Jackrabbit-Content-Extraktoren

  3. Verwenden Sie Jackrabbit, um Dokumente (Inhalte) zusammen mit ihren Metadaten im Repository zu speichern ?

  4. Abrufen von Dokumenten + Metadaten

Ich bin an den Punkten 3 und 4 interessiert ...

DETAILS: Die Anwendung verarbeitet Dokumente interaktiv (einige Analysen - Spracherkennung, Wortzahl usw. + sammeln so viele Details wie möglich - Dublin Core + Parsing der Inhalts- / Ereignisbehandlung), so dass es Ergebnisse der Verarbeitung an den Benutzer und dann den extrahierten Inhalt zurückgibt und Metadaten (extrahierte und benutzerdefinierte Benutzermetadaten) werden im JCR-Repository gespeichert

Schätze irgendwelche Hilfe, danke

    
lisak 01.03.2011, 14:22
quelle

3 Antworten

26

Das Hochladen von Dateien ist für JCR 2.0 grundsätzlich dasselbe wie für JCR 1.0. JCR 2.0 fügt jedoch einige zusätzliche integrierte Eigenschaftsdefinitionen hinzu, die nützlich sind.

Der Knotentyp "nt: file" soll eine Datei darstellen und enthält zwei integrierte Eigenschaftsdefinitionen in JCR 2.0 (die beim Erstellen von Knoten vom Repository automatisch erstellt werden):

  • jcr: erstellt (DATUM)
  • jcr: createdBy (STRING)

und definiert ein einzelnes Kind namens "jcr: content". Dieser "jcr: content" -Knoten kann von jedem Knotentyp sein, aber im Allgemeinen werden alle Informationen, die sich auf den Inhalt selbst beziehen, auf diesem Kindknoten gespeichert. Der De-facto-Standard ist die Verwendung des Knotentyps "nt: resource", für den folgende Eigenschaften definiert sind:

  • jcr: Daten (BINARY) obligatorisch
  • jcr: lastModified (DATE) automatisch erstellt
  • jcr: lastModifiedBy (STRING) wurde automatisch erstellt
  • jcr: mimeType (STRING) geschützt?
  • jcr: Codierung (STRING) geschützt?

Beachten Sie, dass "jcr: mimeType" und "jcr: encoding" in JCR 2.0 hinzugefügt wurden.

Insbesondere sollte der Zweck der Eigenschaft "jcr: mimeType" genau das sein, wonach Sie fragen - erfassen Sie den "Typ" des Inhalts. Die Eigenschaftsdefinitionen "jcr: mimeType" und "jcr: encoding" können jedoch (durch die JCR-Implementierung) als "geschützt" definiert werden (dh die JCR-Implementierung setzt sie automatisch). In diesem Fall wäre es nicht möglich, manuell zu definieren Legen Sie diese Eigenschaften fest. Ich glaube, dass Jackrabbit und ModeShape diese nicht behandeln geschützt.

Hier ist ein Code, der zeigt, wie eine Datei mit den folgenden Knotentypen in ein JCR 2.0-Repository hochgeladen wird:

%Vor%

Und wenn die JCR-Implementierung die Eigenschaft "jcr: mimeType" nicht als geschützt behandelt (d. h. Jackrabbit und ModeShape), müssten Sie diese Eigenschaft manuell festlegen:

%Vor%

Metadaten können sehr einfach auf den Knoten "nt: file" und "jcr: content" gespeichert werden, aber die Knotentypen "nt: file" und "nt: resource" können nicht sofort verwendet werden für zusätzliche Eigenschaften. Bevor Sie also weitere Eigenschaften hinzufügen können, müssen Sie zuerst ein Mixin (oder mehrere Mixins) hinzufügen, die Eigenschaftsdefinitionen für die Arten von Eigenschaften haben, die Sie speichern möchten. Sie können sogar eine Mischung definieren, die jede Eigenschaft zulässt. Hier ist eine CND-Datei, die eine solche Mischung definiert:

%Vor%

Nachdem Sie diese Knotentypdefinition registriert haben, können Sie diese auf Ihren Knoten verwenden:

%Vor%

Sie können auch ein Mixin definieren und verwenden, das für jedes Dublin Core-Element zugelassen ist:

%Vor%

Alle diese Eigenschaften sind optional und dieses Mixin erlaubt keine Eigenschaften irgendeines Namens oder Typs. Ich habe auch nicht wirklich mit diesem 'dc: metadata' Mix gesprochen, da einige davon bereits mit den eingebauten Eigenschaften dargestellt sind (zB "jcr: createBy", "jcr: lastModifiedBy", "jcr: created" , "jcr: lastModified", "jcr: mimeType") und dass einige von ihnen mehr mit Inhalt zu tun haben, während andere mehr mit der Datei zu tun haben.

Sie können natürlich auch andere Mixins definieren, die Ihren Metadatenanforderungen besser entsprechen. Aber seien Sie vorsichtig bei der Vererbung mit Mixins - da JCR einem Knoten mehrere Mixins erlaubt, ist es am besten, wenn Sie Ihre Mixins eng und facettenorientiert gestalten (zB "ex: taggable", "ex: beschreibbar", etc.) und wenden Sie dann die entsprechenden Mixins nach Bedarf auf einen Knoten an.

(Es ist sogar möglich, obwohl viel komplizierter, ein Mixin zu definieren, das mehr Kinder unter den Knoten "nt: file" erlaubt und dort einige Metadaten speichert.)

Mixins sind fantastisch und geben Ihrem JCR-Inhalt eine enorme Menge an Flexibilität und Power.

Oh, und wenn Sie alle gewünschten Knoten erstellt haben, speichern Sie die Sitzung:

%Vor%     
Randall Hauch 02.03.2011, 15:46
quelle
1

Ich bin ein wenig eingerostet mit JCR und ich habe noch nie 2.0 benutzt, aber das sollte Sie zum Laufen bringen.

Siehe link . Sie möchten den zweiten Kommentar öffnen.

Sie speichern die Datei einfach in einem Knoten und fügen dem Knoten weitere Metadaten hinzu. So speichern Sie die Datei:

%Vor%

Wie Sie Metadaten speichern, bleibt Ihnen überlassen. Eine einfache Möglichkeit besteht darin, Schlüsselwertpaare einfach zu speichern:

%Vor%

Um die Daten zu lesen, rufen Sie einfach getProperty() auf.

%Vor%     
rancidfishbreath 01.03.2011 23:31
quelle
1

Ich bin neu bei Jackrabbit und arbeite an 2.4.2. Was Ihre Lösung betrifft, können Sie mit einer Core-Java-Logik nach dem Typ suchen und Fälle eingeben, die eine Variation Ihrer Aktion definieren.

Sie müssen sich keine Gedanken über Probleme mit dem Speichern von Inhalten verschiedener .txt- oder .pdf-Dateien machen Inhalt wird in Binär konvertiert und gespeichert. Hier ist ein kleines Beispiel, in dem ich eine PDF-Datei in / von jackrabbit repo hochgeladen und heruntergeladen habe.

%Vor%

Hoffe das hilft

    
Abhishek Shah 25.07.2012 05:39
quelle