<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.3//EN" "document-v13.dtd">
<document>
  <header>
    <title>MyCoRe User Guide 2.1</title>
  </header>
  <body>    
  
  <section id="chapter_01">
   <title>Allgemeines zu MyCoRe</title>
   <section id="preface">
    <title>Vorbemerkungen</title>
    <p>
    MyCoRe bietet die Möglichkeit verschiedene Softwarekomponenten für die Speicherung und Verarbeitung der Daten 
    (digitale Objekte und zugehörige Beschreibungsdaten) zu verwenden. Dabei spielt das verwendete 
    Betriebssystem eine wesentliche Rolle. Jedes System hat Vor- und Nachteile, die an dieser Stelle kurz aufgezeigt 
    werden sollen. Wir wollen es abschließend dem Anwender überlassen, in welchem System er für seine Anwendung die 
    größten Vorteile sieht.
    </p>
    <section id="system">
    <title>Betriebssysteme</title>
    <p>
    MyCoRe ist auf Grund seiner vollständigen Implementation in Java unabhängig vom Betriebssystem. Innerhalb der 
    MyCoRe-Community gibt es Installationen unter Unix (Linux, AIX, Solaris) wie auch unter MS Windows und Tests 
    unter Mac OS. Die Entscheidung für ein bestimmtes Betriebssystem ist stark vom Einsatzzweck und der Verfügbarkeit der 
    zusätzlich benötigten Komponenten abhängig. 
    </p>
    </section>
    <section id="database">
    <title>Relationale Datenbanken</title>
    <p>
    Im Bereich der SQL Datenbasis werden ab MyCoRe 1.3 alle Zugriffe über die Datenbank-Mapping-Sprache 
    <link title="Hibernate" href="http://www.hibernate.org/">Hibernate</link> realisiert. Dieses garantiert eine einheitliche 
    Programmierschnittstelle gegenüber der Anwendung und gestattet die Nutzung aller durch Hibernate unterstützten 
    relationalen Datenbanksysteme wie <link title="HSQLDB" href="http://hsqldb.org/">HSQLDB</link>, 
    <link title="MySQL" href="http://dev.mysql.com/">MySQL</link>, <link title="PostgreSQL" href="http://www.postgresql.org/">PostgreSQL</link>, 
    <link title="IBM DB2" href="http://www-306.ibm.com/software/data/db2/">IBM DB2</link> und <link title="Oracle" href="http://www.oracle.com/lang/de/database/index.html">Oracle</link>. Über die Konfiguration von MyCoRe gibt der 
    Administrator der Anwendung an, welche Datenbank konkret zum Einsatz kommt. Standardmäßig wird für DocPortal die 
    HSQLDB verwendet. Dies ist ein sogenanntes leichtgewichtiges, Java-basiertes Datenbanksystem und erfordert keine 
    zusätzlichen Installationen. Der erforderliche Code ist im MyCoRe-Paket bereits enthalten. Für produktive 
    Anwendungsinstallationen sollte jedoch ein den Erfordernissen entsprechendes Datenbanksystem gewählt werden.
    </p>
    </section>
    <section>
    <title>Suchindex</title>
    <p>
    Für die Suche in den abgelegten Daten wurden verschiedene Ansätze realisiert. Mit Hilfe einer simplen 
    JDOM-Suchmaschine über XPath-Ausdrücke kann auf einfache Art in den beschreibenden Daten der digitalen Objekte 
    (Metadaten) gesucht werden. Dieser Ansatz ist für Entwicklungszwecke konzipiert. Standard ist der Einsatz einer 
    Volltextsuchmaschine für Metadaten und Texte auf Basis des <link title="Apache-Projekt Lucene" href="http://lucene.apache.org/">Apache-Projektes Lucene</link>. 
    Lucene ist ebenfalls in MyCoRe integriert und bedarf keiner zusätzlichen Installation. Darüber hinaus kann die Volltextsuche des verwendeten 
    relationalen Datenbanksystems eingesetzt werden. Bisher sind hinsichtlich der Leistungsfähigkeit von Lucene in einer 
    Produktionsumgebung keine Einschränkungen bekannt.
    </p>
    </section>
    <section>
    <title>Textextraktion</title>
    <p>
    Zum Extrahieren von durchsuchbaren Volltexten aus Dokumenten werden seitens MyCoRe eine Reihe von externen 
    Anwendungen genutzt. Welche davon bei einer konkreten MyCoRe-Installation zum Einsatz kommen, entscheidet der jeweilige 
    Administrator selbst. Über eigene Plugins lassen sich weitere Komponenten problemlos einbinden. Die jeweilige Software 
    (ps2ascii, pdftotext usw.) muss zusätzlich zu den MyCoRe-Komponenten installiert werden. Derzeit sind für folgende 
    Objekttypen Plugins in MyCoRe integriert: xml, html, txt, ps, pdf, doc, xls, ppt, odt und sxw.
    </p>
    </section>
    <section>
    <title>Streaming Server</title>
    <p>
    MyCoRe kann alternativ für die Speicherung von Audio- und Video-Daten Streaming-Server integrieren und zur 
    Datenhaltung nutzen. Vorgesehen ist der Einsatz eines <link title="Helix-Server" href="https://helix-server.helixcommunity.org/">Helix-Servers</link>
    oder des <link title="IBM VideoCharger" href="http://www-306.ibm.com/software/data/videocharger/">IBM VideoChargers</link>. 
    Beide Produkte müssen extern installiert und dann über die Anwendungskonfiguration eingebunden werden.
    </p>
    </section>
    <section>
    <title>Webanwendungs-Server</title>
    <p>
    MyCoRe benötigt für die interaktive Arbeit eine Servlet-Engine. Bekanntester Vertreter hier ist 
    <link title="Apache Tomcat" href="http://tomcat.apache.org/">Tomcat</link>. Alternativ bietet die MyCoRe-Beispielanwendung DocPortal die Nutzung 
    von <link title="Jetty" href="http://jetty.mortbay.org/jetty/">Jetty</link> an. Besonders für kleinere Anwendungen stellt es eine interessante 
    Alternative dar. Jetty ist eine javabasierte und leichtgewichtige Anwendung, die ebenfalls in der DocPortal-Distribution 
    enthalten ist. Eine weitere Alternative ist der <link title="IBM Application Server" href="http://www-306.ibm.com/software/websphere/">IBM Application Server</link>. 
    Für Produktionsumgebungen mit einer Apache-Proxy-Anbindung empfiehlt sich jedoch der Einsatz von Tomcat oder WebSphere.
    </p>
    </section>
    <section>
    <title>Web-Server</title>
    <p>
    Zur Arbeit mit MyCoRe in Produktionsumgebungen empfehlen wir die Nutzung des 
    <link title="Apache Web-Server" href="http://httpd.apache.org/">Apache-Web-Servers</link>. 
    Damit ist es möglich der Anwendung eine URL auf Port 80 ohne weitere 
    Portangaben zuzuweisen (virtuelle Hosts). Bei der Verwendung des IBM WebSphere Application Servers 
    ist ein IBM Webserver (basierend auf Apache) bereits integriert.
    </p>
    </section>
   </section>
   <section>
   <title>Die Beispielanwendung</title>
   <p>
   Zur Demonstration des Leistungsumfangs von MyCoRe wird eine Beispielanwendung mitgeliefert. Diese soll anschaulich 
   die Funktionalitäten von MyCoRe aufzeigen und gleichzeitig eine praxisnahe Anwendung darstellen. Als Anwendungsszenario 
   haben die Entwickler einen Dokumenten-Server mit Namen <em>DocPortal</em> gewählt. Die Installation und 
   Nutzung von MyCoRe und der darauf aufbauenden Anwendung <em>DocPortal</em> wird im Verlauf dieser 
   Dokumentation in allen Einzelheiten besprochen. Ziel ist es, Interessierten von Anfang an einen 
   vollständigen und sofort nutzbaren Dokumenten-Server an die Hand zu geben.</p>
   </section>
   <section>
   <title>Installationswege</title>
   <p>
   Für die Installation der Beispielanwendung DocPortal gibt es drei Wege. 
   Die erste Möglichkeit, die Installation einer Binärdistribution, steht zur Zeit leider nicht zur Verfügung.
   <!-- Um einen ersten Eindruck vom System zu erhalten, wird von der Entwicklergruppe eine 
   <a title="Binärdistribution" href="site:binary">Binärdistribution</a> auf den MyCoRe-Webseiten bereitgestellt. 
   Dabei handelt es sich um eine mit der Software IZPack generierte jar-Datei. Durch die Ausführung der Datei wird die 
   Installation von DocPortal gestartet. Als Ergebnis erhält man eine leere Anwendung, deren Daten in der HSQLDB 
   verwaltet werden. Als Webanwendungs-Server wird Jetty verwendet. Beispieldaten sind in Distributionen thematisch 
   zusammengestellt und können analog zu DocPortal zu installiert werden. -->
   </p>
   <p>
   Die folgende Dokumentation beschäftigt sich damit, den zweiten (Download eines fertigen Source-Zweiges) und den 
   dritten (Download vom Subversion-System) Installationsweg zu beschreiben. Es wird erklärt, wie die Beispielanwendung 
   DocPortal schrittweise zu installieren ist und wie der Administrator per Konfiguration diese Anwendung in seine 
   Umgebung einpasst. Hierbei ist zu unterscheiden, ob das Zielsystem unter den Betriebssystemen UNIX (Linux) oder 
   MS Windows arbeitet. Auf die jeweiligen Unterschiede wird in den einzelnen Installationsschritten ggf. näher 
   eingegangen. DocPortal kann auch unter Mac OS installiert werden, ein Referenz- und Testsystem in der Community steht 
   momentan jedoch nicht zur Verfügung.
   </p>
   <p>
   Die Release-Stände sowie aktuelle Snapshots können von der Home Page des Projektes unter <link title="www.mycore.de" href="site:news">http://www.mycore.de</link> als *.zip bzw *.tar Datei heruntergeladen werden. 
   Eine weitere Möglichkeit besteht in der Nutzung der Subversion Quellen. Hier erfolgt die Auswahl der Release-Stände 
   mittels Tags. Für den aktuellen Entwicklerstand ist der Zweig 'trunk' auszuwählen. Verwiesen sei in diesem Zusammenhang 
   auch auf die Projektseite bei <link title="Sourceforge.net" href="http://sourceforge.net/projects/mycore">Sourceforge</link>.
   </p>
   </section>
  </section>
   
  <anchor id="chapter_2"/>
  <section id="chapter_02">  
   <title>Allgemeine Umgebungs- und Softwarevoraussetzungen</title>
   <p>
   In der nachfolgenden Beschreibung wird davon ausgegangen, dass alle Arbeiten unter UNIX/Mac OS 
   durch einen anzulegenden Benutzer <code>mcradmin</code> ausgeführt werden. Für die Benutzung von 
   MyCoRe/DocPortal muss der Benutzer die nachfolgend gelistete Software verwenden können. Die in MyCoRe enthaltenen 
   UNIX-Skripte erwarten die <code>bash</code>-Shell unter <code>/bin/bash</code>. 
   Diese muss entsprechend zur Verfügung stehen oder die Skripte müssen von Hand angepasst werden. Für den Benutzer 
   definiert der Administrator weiterhin einige Umgebungsvariablen. Hinzu kommen eine Reihe von optionalen Anwendungen, 
   die dem MyCoRe-Benutzer bei Bedarf ebenfalls zu Verfügung stehen sollten. 
   </p>
   <p>
   Unter MS Windows ist kein spezieller Benutzer vorgesehen. Trotzdem sind eine Reihe von Softwareprodukten erforderlich. 
   Umgebungsvariablen sind ebenfalls in diesem Zusammenhang zu definieren. Für die Nutzung alternativer Komponenten gibt 
   es in diesem Kapitel (wie zu allen anderen Punkten) Hinweise.
   </p>   
   <section>  
  <title>Erforderliche und zusätzliche Softwareprodukte</title>  
  <table>  
  <tr>
  <th colspan="1" rowspan="1">Produkt</th>
  <th colspan="1" rowspan="1">UNIX/MacOS/MS Windows</th>
  </tr>
  <tr>
  <td colspan="1" rowspan="1"><link title="Java" href="http://java.sun.com/">Java 2 Plattform, SE, 1.6.x (J2SE)</link> oder höher </td>
  <td colspan="1" rowspan="1">erforderlich</td>
  </tr>
  <tr>
  <td colspan="1" rowspan="1"><link title="Apache Ant" href="http://ant.apache.org/">ANT 1.7.1</link> oder höher inklusive 'regular expression'- und 'trax'- Erweiterung</td>
  <td colspan="1" rowspan="1">erforderlich</td>
  </tr>
  <tr>
  <td colspan="1" rowspan="1">Relationales Datenbanksystem (MySQL, PostgreSQL, DB2, Oracle)</td>
  <td colspan="1" rowspan="1">optional, kann die mitgelieferte HSQLDB ersetzen</td>
  </tr>
  <tr>
  <td colspan="1" rowspan="1">Tomcat 5.5.x</td>
  <td colspan="1" rowspan="1">optional, kann das mitge-lieferte Jetty ersetzen</td>
  </tr>
  <tr>
  <td colspan="1" rowspan="1">Apache 2.2.x</td>
  <td colspan="1" rowspan="1">optional, wird zur Umsetzung virtueller Host-Namen verwendet</td>
  </tr>
  <tr>
  <td colspan="1" rowspan="1"><link title="JAI" href="Http://www.sun.com">JAI</link>, 1.1.2 oder höher</td>
  <td colspan="1" rowspan="1">optional, wenn Sie die MyCoRe-IView-Komponente einsetzen wollen</td>
  </tr>
  </table>
  <p class="klein"><strong>Tabelle 2.1:</strong> Softwarevoraussetzungen</p>
  <p>
  Unter Linux sind die meisten Programme in den gängigen Distributionen enthalten. 
  Unter SuSE fehlt nur 
  <link title="Wiki-Seite zu JAI und SuSE" href="http://cmswiki.rrz.uni-hamburg.de/hummel/MyCoRe/Dokumentation/HowTo/SuSe10-3">JAI</link>. 
  Für das Betriebssystem AIX stellt die Firma IBM verschiedene Software-Downloads unter 
  <link title="IBM" href="http://ftp.software.ibm.com/">http://ftp.software.ibm.com/</link> bereit. 
  Unter MS Windows können die Installationspakete von den angegebenen Webseiten geholt werden.
  </p>
  </section>
  <section>
  <title>Setzen der Umgebungsvariablen</title>
    <p>
    Folgende Umgebungsvariable kann für die Arbeit mit MyCoRe definiert werden:
    </p>
    <table>    
    <tr>
    <th colspan="1" rowspan="1">Variable</th>
    <th colspan="1" rowspan="1">Verweis auf ...</th>
    </tr>
    <!-- <tr>
    <td>MYCORE_HOME</td>
    <td>... das Basisverzeichnis des MyCoRe-Quellzweiges
    (z.B. <strong>Windows:</strong> D:\mycore; <strong>Linux:</strong> /home/mcradmin/mycore)</td>
    </tr> -->
    <tr>
    <td colspan="1" rowspan="1">DOCPORTAL_HOME</td>
    <td colspan="1" rowspan="1">... das Basisverzeichnis des DocPortal-Quellzweiges
    (z.B. <strong>Windows:</strong> D:\docportal; <strong>Linux:</strong> /home/mcradmin/docportal)</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 2.2:</strong> Umgebungsvariablen</p>
    <p>Wenn diese Variable nicht definiert ist, wird die Anwendung im aktuellen Basisverzeichnis (z.B. 'docportal') vermutet.
    </p>
   </section>
    <section>
    <title>Hinweise zur Installation von Apache Tomcat</title>
      <p>
      Tomcat kann als Alternative zum in DocPortal mitgelieferten Jetty eingesetzt werden. Tomcat ist ebenfalls ein 
      Webanwendungs-Server, der besonders bei größeren Installationen Verwendung findet.
      </p>
      <p>
      MyCoRe arbeitet beim Encoding der Zeichen standardmäßig mit UTF-8. Für eine korrekte Darstellung passen Sie die 
      Datei <code>%CATALINA_HOME%/conf/server.xml</code> an, indem Sie das Tag für den Connector um das Attribut 
      <code>URIEncoding='UTF-8' </code>ergänzen.
      </p>
   </section>    
  </section>
  
  <section id="chapter_003">
   <title>Installation der MyCoRe-Anwendung DocPortal für Eilige</title>
   <p>
   <strong>Achtung: </strong><em>Mit der folgenden Anleitung installieren Sie den aktuellen Entwicklungsstand von Docportal (Trunk). 
   Die Version kann Fehler enthalten! </em>
   </p>
   <p>
   Sind Java 1.6, Ant 1.7.1 und ein svn-Client auf Ihrem Rechner installiert, können
   Sie mit wenigen Schritten ein MyCoRe/DocPortal installieren. Die Installation holt 
   alle erforderlichen Daten und Programme für eine Beispielanwendung von www.mycore.de. 
   Zur Speicherung der Metadaten wird HSQLDB, für die Inhalte (Bilder, Texte, etc.) das lokale 
   Dateisystem verwendet. Und hier sind die durchzuführenden Schritte:<br/><br/>

   Legen Sie ein Verzeichnis mit dem absoluten Pfad &lt;pfad&gt; an und führen Sie in dem 
   Verzeichnis die folgenden Kommandos aus:
   </p>
   <ol>
   <li>svn export http://server.mycore.de/svn/docportal/trunk/install.xml</li>
   <li>ant -Ddestdir=&lt;pfad&gt; -f install.xml</li>
   </ol>
   <p> 
   Das zweite Kommando dauert etwa 10 Minuten. Die Installation war erfolgreich, wenn sich im Verzeichnis
   &lt;pfad&gt; die Datei homepage.html befindet. 
   Die Datenbank HSQLDB und und der Jetty-Webserver werden vom Installationsskript (<code>install.xml</code>) gestartet, so dass die 
   MyCoRe-Anwendung <link href="http://localhost:8291/" alt="Link zur MyCoRe-Anwendung DocPortal" title="DocPortal" target="_blank">DocPortal</link> 
   dann im Browser aufgerufen werden kann. 
   </p> 

   <p class="fett">
   Start von DocPortal
   </p>
   <p>
   Wechseln Sie ins Verzeichnis <code>&lt;pfad&gt;/docportal/build/bin</code> und rufen Sie unter Windows die Kommandos<br/>
   <code>hsqldbstart.cmd </code> und <code>jettystart.cmd </code> auf<br/><br/>

   und unter Linux<br/>
   <code>hsqldbstart.sh </code> und <code>jettystart.sh </code><br/><br/>

   Geben Sie als Adresse in einem Browser <link href="http://localhost:8291/" alt="Link zur MyCoRe-Anwendung DocPortal" title="Link zur MyCoRe-Anwendung DocPortal" target="_blank">http://localhost:8291</link> ein
   </p>
   <p class="fett">
   Stop von DocPortal
   </p>
   <p>
   Wechseln Sie ins Verzeichnis <code>&lt;pfad&gt;/docportal/build/bin </code> und rufen Sie unter Windows die Kommandos<br/>
   <code>jettystop.cmd </code> und <code>hsqldbstop.cmd </code> auf<br/><br/>

   und unter Linux<br/>
   <code>jettystop.sh </code> und <code>hsqldbstop.sh </code>
   </p>
   <p>
   Hiermit erhalten Sie einen ersten Eindruck von MyCoRe/DocPortal. Sollten Sie eine eigene Anwendung mit einem
   eigenen Datenmodell planen, führen Sie die im folgenden beschriebene Installation durch. 
   </p>
   
   </section>
   
  <section id="chapter_03">
   <title>Download und Installation des MyCoRe-Kerns</title>
    <anchor id="chapter_3.1"/>
    <p>
    <strong>Achtung: </strong>Die Entwicklung des MyCoRe-Kerns (im Trunk) wird auf das Apache-Tool 
    <link href="http://maven.apache.org/" alt="Apache Maven Projekt" title="Apache Maven Projekt" target="_blank">Maven</link> umgestellt. 
    Die folgende Anleitung bezieht sich auf das Release 2.0 Fixes von MyCoRe und DocPortal. 
    </p>
    <section>
    <title>Download des MyCoRe-Kerns als Source-Paket</title>
    <p>
    Für eine Step-by-Step Installation der DocPortal-Anwendung benötigen Sie zuerst das MyCoRe-Basissystem (den MyCoRe Kern). 
    DocPortal wird sich im weiteren Verlauf der Installation darauf beziehen und die erforderlichen Komponenten daraus 
    verwenden. Der Kern muss in dem Verzeichnis zu finden sein, das unter der Umgebungsvariablen <code>MYCORE_HOME</code> 
    angegebene wurde bzw. muss der Wert von <code>MYCORE_HOME</code> dem Installationsverzeichnis des Kerns entsprechen.
    </p>
    <p>
    Auf der <link title="MyCoRe SourceForge" href="http://sourceforge.net/project/showfiles.php?group_id=92005" target="_blank">SourceForge-Seite</link> wird der MyCoRe-Kern als Download des Source-Paketes 
    angeboten. Da sich die folgende Anleitung auf das Release 2.0.x bezieht, sollten Sie dieses oder einen 
    weiterentwickelten Snapshot auswählen. Packen Sie das erhaltene *.zip bzw. *.tar Verzeichnis auf einem Plattenbereich 
    aus und setzen Sie die <code>MYCORE_HOME</code> Umgebungsvariable wie oben angegeben. 
    </p>
    <p>Nach dem erfolgreichem Auspacken des Source-Codes bzw. erfolgreichem Checkout (siehe unten) erhalten Sie unter dem 
    Verzeichnis <code>~/mycore</code> folgende Dateistruktur.</p>
    <table> 
    <tr>
    <th colspan="1" rowspan="1">Relativer Pfad</th>
    <th colspan="1" rowspan="1">Inhalt</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">build.xml</td>
    <td colspan="1" rowspan="1">Das Steuer-Script für ANT.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">changelog.txt</td>
    <td colspan="1" rowspan="1">Enthält Hinweise zu Produktänderungen.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">components</td>
	<td colspan="1" rowspan="1">Zusätzliche modulare Programmkomponenten.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">config</td>
    <td colspan="1" rowspan="1">Einige wenige Konfigurationsdateien für den Kern</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">install.xml</td>
    <td colspan="1" rowspan="1">Das ANT-Steuer-Script für die Komplettinstallation.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">integrate.xml</td>
    <td colspan="1" rowspan="1">Steuert die Integration der Components in die Anwendung.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">lib</td><td colspan="1" rowspan="1">Java-Archive von Komponenten, welche in MyCoRe genutzt werden.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">license.txt</td>
    <td colspan="1" rowspan="1">Die verbindliche Lizenz von MyCoRe.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">resources</td>
    <td colspan="1" rowspan="1">Erforderliche allgemeine Steuerdateien für MyCoRe.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">schema</td>
    <td colspan="1" rowspan="1">XML Schema Dateien des MyCoRe-Kerns.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">sources</td>
    <td colspan="1" rowspan="1">Verzeichnis des Java-Quellcodes. </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">tests</td>
    <td colspan="1" rowspan="1">Spezielle Klassen für JUnit-Test</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">xsl</td>
    <td colspan="1" rowspan="1">XSLT Stylesheets des MyCoRe-Kerns.</td>
    </tr>
    </table>
     <p class="klein"><strong>Tabelle 3.1:</strong> Inhalt des MyCoRe-Kerns</p>
     <p>Das Einspielen von Updates erfolgt dann durch überschreiben der Quellen mit dem neuen Release / Snapshot.</p>
    </section>
    <section>
   <title>Download des MyCoRe-Kerns via Subversion</title>
   <p>
   Alternativ können Sie auch direkt aus dem Subversion-Repository die Programmdaten auschecken. Lesender Zugriff erfolgt 
   über einen Subversion Client und den Apache+WebDAV Zugang. Es werden drei Zweige angeboten:
   </p>
   <ol>
   <li>tags – hier finden Sie Snapshots</li>
   <li>trunk – dies ist der aktuelle Entwicklungszweig (HEAD)</li>
   <li>branches – sowie Releases inklusiver ergänzender Fixes</li>
   </ol>
   <p class="kasten">svn checkout 
   <link title="" href="http://server.mycore.de/svn/mycore/branches/release_2_0_fixes/">http://server.mycore.de/svn/mycore/branches/release_2_0_fixes/</link> mycore
   </p>
   <p>Bugfixes und Korrekturen können bei Bedarf über ein Update direkt eingespielt werden. 
   </p> 
   </section>
   <section>
   <title>Konfiguration und Übersetzung des Kerns</title>
   <div class="png">
   <img src="images/config.png" alt="Grafik"/>
   </div>
   <ol>   
   <li>   
     MyCoRe verwendet Apache Ant (Version 1.7 oder höher erforderlich), um den Quellcode zu übersetzen und eine vollständige 
     Beispiel-Applikation zu erzeugen. Entsprechend der Installations-anleitung sollten Sie zunächst diese Software 
     installieren. Der Aufruf <code>ant usage</code> im <code>mycore</code>-Verzeichnis zeigt bei richtiger Konfiguration, 
     welche Aufrufe möglich sind.
   </li>
   <li>Es ist nicht nötig, weitere Umgebungsvariablen wie etwa den Java <code>CLASSPATH</code> zu setzen. Das Skript ignoriert den lokal 
     gesetzten <code>CLASSPATH</code> und generiert stattdessen einen eigenen <code>CLASSPATH</code> entsprechend Ihrer Konfiguration. Somit kann 
     sichergestellt werden, dass nur die erforderlichen Pakete und Klassen in der richtigen Version verwendet werden. Die Konfiguration der 
     Systemumgebung verwendeter Systeme für die XML-Speicherung (Lucene, SQL oder JDOM) und die Speicherung von Tabellen über JDBC in einer relationalen 
     Datenbank (Hibernate, IBM DB2, MySQL, optional auch andere) wird in der Datei <code>config/build.properties</code> festgelegt. Nach dem erstmaligen 
     Checkout des Kerns befindet sich im <code>config</code>-Verzeichnis nur das Template <code>build.properties.template</code>. Diese Datei muss 
     nach <code>build.properties</code> kopiert werden.
   </li>
   <li>
     Sollten Sie die IView-Komponente nutzen wollen, so muss JAI (siehe <link href="#chapter_2">Softwarevoraussetzungen</link>) installiert sein und
     Sie müssen die für die Properties
	 <code>MCR.System.SharedJarsDir</code> und <code>MCR.System.Jars</code> die
     entsprechende Konfigurationszeile in der Datei <code>build.properties</code> auswählen. Die Library libmlib_jai.so muss vom System
	 korrekt gefunden werden (z. B. als Link in /usr/lib).
   </li>
   <li>
     Sie sollten zunächst prüfen, ob ihre Systemumgebung korrekt eingerichtet ist, indem Sie <code>ant info</code>
     ausführen. Ant zeigt Ihnen daraufhin die verwendeten JDK- und Ant-Software-Versionen und den generierten 
     <code>CLASSPATH</code> und <code>LIBPATH</code> (für Unix Systeme) an.
   </li>
   <li>     
     Eine Übersicht über alle wesentlichen Build-Ziele erhalten Sie mit          
     <p class="break"><code>ant usage</code></p>    
    </li>
    <li>      
      Übersetzen Sie alle MyCoRe Quellcode-Dateien mit dem Befehl             
      <p class="break"><code>ant jar</code></p>            
      Das Kommando erzeugt ein Verzeichnis <code>build</code>, in welches alle weiter zu verwendenden
      Teile kopiert werden. Dabei entsteht auch die <code>jar</code>-Datei <code>mycore.jar</code>, welche den Kern enthält.            
    </li>
    <li>      
      Optional können Sie auch JavaDoc Quellcode-Dokumentation im HTML-Format generieren lassen, indem Sie             
      <p class="break"><code>ant javadocs</code></p>      
      aufrufen       
      Dabei entstehen HTML-Dateien im Verzeichnis <code>build/javadocs</code>.
    </li>
    </ol>
    <p>
    Damit sind alle Arbeiten im Kernsystem abgeschlossen und Sie können nun die eigentliche Anwendung, in diesem 
    Fall die Beispiel-Applikation DocPortal installieren.
    </p>
 </section>
 
 </section>
 
 <anchor id="chapter_4"/>
 <section id="chapter_04">
  <title>Die MyCoRe-Beispielanwendung DocPortal</title>
  <section>
   <title>Grundlegender Aufbau und Ziel der Beispielanwendung</title>
  <section>
   <title>Allgemeines</title>
   <p>
   Um die Funktionsweise des MyCoRe-Kernes zu testen wurde eine Beispiel-Anwendung basierend auf diesem Kern 
   entwickelt. Sie soll dem Anwender eine voll funktionsfähige Applikation in die Hand geben, welche eine Vielzahl von 
   Komponenten des MyCoRe-Projektes nutzt und deren Arbeitsweise klar werden lässt. Um die Anwendung, im weiteren 
   DocPortal genannt, gleichzeitig sinnvoll einsetzten zu können, wurde als Beispielszenario ein Dokumenten-Server 
   gewählt, wie er bei vielen potentiellen Nutzern zur Anwendung kommt. Auch soll das DocPortal die Nachfolge des 
   erfolgreichen MILESS-Dokumenten-Servers sein und den Migrationspfad zu MyCoRe hin aufzeigen. 
   </p>
   <p>  
   Die Beispiel-Applikation ist in zwei Ebenen aufgeteilt. Für eine Nachnutzung von DocPortal ist es auch möglich eine 
   weitere Anwendungsschicht einzufügen. Dies gestattet eine flexible Konfiguration auf einem Zielsystem bei 
   gleichzeitiger Nutzung mehrerer gleichartiger Anwendungen auf diesem System. Beispielsweise wollen Sie einen 
   Dissertations-Server neben einem Server für eine Bildsammlung und einem allgemeinen Dokumenten-Server auf dem selben 
   System laufen lassen. Alle drei basieren auf einem gemeinsamen Anwendungskern DocPortal und nutzen große Teile wie 
   Datenmodell oder Editormasken davon gemeinsam. Diese Komponenten werden in der DocPortal-Basis untergebracht, während 
   die Konfiguration der Tabellennamen jeweils unterschiedlich ist. Die möglichen Szenarien verdeutlicht die folgende 
   Grafik.
   </p>   
   <img src="images/schicht.png" alt="Grafik"/>
   <p class="klein"><strong>Abbildung 4.1:</strong> MyCoRe-Schichtenmodell</p>   
   <p>
   Auf der offiziellen Web-Seite des <link title="" href="site:applications">
   MyCoRe-Projektes</link> finden sie die in den nachfolgenden Abschnitten zu installierende Anwendung bereits lauffähig vor. 
   Nach Abschluss der Arbeiten sollte auch Ihr System so funktionieren. 
   </p>
  </section>
  </section>
  <section>
   <title>Download der Beispielanwendung als Source-Paket</title>
   <p>
   Nachdem Sie den MyCoRe-Kern erfolgreich installiert haben, ist nun die Installation der mitgelieferten 
   Beispielanwendung sinnvoll. Hier können Sie ein erstes Gefühl dafür gewinnen, wie eine eigene Anwendung gestaltet 
   sein könnte.
   </p>
   <p>Die entsprechenden *.zip bzw. *.tar Dateien finden Sie analog zum MyCoRe-Kern auf der Web-Seite des Projektes. 
   Packen Sie diese einfach aus und weisen Sie die Umgebungsvariable <code>DOCPORTAL_HOME</code> entsprechend zu. Für 
   Updates dieser Komponenten verfahren Sie wie in <link href="#chapter_3.1">Download und Installation des MyCoRe-Kerns</link> beschrieben.
   </p>
  </section>
  <section>
   <title>Download der Beispielanwendung via Subversion</title>
   <p>
   Der Download von DocPortal mittels Subversion erfolgt analog zu dem des MyCoRe-Kerns. 
   </p>
   <p class="kasten">svn checkout 
   <link title="" href="http://server.mycore.de/svn/docportal/branches/release_2_0_fixes/">http://server.mycore.de/svn/docportal/branches/release_2_0_fixes/</link> docportal
   </p>
  </section> 
  <section>
   <title>Konfiguration und Installation von DocPortal</title>
   <section>
    <title>Grundlegendes zur Konfiguration</title>
    <p>
    Die Konfiguration der Beispielanwendung ist im Verzeichnis <code>$DOCPORTAL_HOME/config</code> zu finden. Hier 
    sind alle Dateien untergebracht, die Sie für eine erste oder einfache Installation der Anwendung nicht ändern müssen. 
    Die Voreinstellungen entsprechen dem Standard und sollten ohne Probleme für die Nutzung der HSQLDB funktionieren. 
    Kopieren Sie <strong>als erstes</strong> die Datei <code>mycore.private.properties.template</code> nach 
    <code>mycore.private.properties</code>. Diese Datei enthält für den Anfang alle einzustellenden Werte, die an Ihre 
    spezielle Systemumgebung angepasst werden müssen. Damit dies privaten Einstellungen nicht durch ein Update 
    überschrieben werden, wurde auf die Template-Variante zurückgegriffen.
    </p>
    <note label="Hinweis">    
    Achten Sie bei Updates stets darauf, ob sich im Template etwas geändert hat!
    </note>
    <anchor id="mpp"/>
    <p class="fett">   
    mycore.private.properties
    </p>
    <p>    
    Die Datei <code>mycore.private.properties</code> enthält eine ganze Reihe von Konfigurationswerten. Für ein erstes 
    System müssen Sie nur folgende Werte anpassen:
    </p>
    <ul>
    <li>
    <code>MCR.Modules.Application </code> – Diesen Wert sollten Sie ändern, wenn sie eigene Module einbinden wollen oder
     das <code>docportal</code>-Modul deaktivieren möchten.
    </li>
    <li>
    <code>MCR.basedir</code> – Pfad zur DocPortal-Root bzw. entspricht <code>DOCPORTAL_HOME</code>
    </li>  
    <li>
   <code>MCR.Mail.Address</code> – Mail-Adresse, an die alle Nachrichten gehen sollen
   </li> 
   <li>
   <code>MCR.Mail.Server</code> – SMTP-Server für ausgehende Mail
   </li>
   <li>
   <code>MCR.WebService.Admin</code> – Kennung des Axis-Admins zum deploy des WebService
   </li>
   <li>
   <code>MCR.WebService.AdminPasswd</code> – und das dafür erforderliche Passwort
   </li>
   </ul>
   <p class="fett">
   mycore.properties.wcms
   </p>
   <p>
   DocPortal enthält ein WCMS-Modul (Web Content Management System) für die webbasierte Pflege der statischen 
   Webseiten.
   </p>
   <p>Die Konfiguration des WCMS wird in folgender Datei vorgenommen:</p>
   <p class="break">
   <code>mycore/components/wcms/config/mycore.properties</code>
   </p>
   <ul>
   <li>
   Die Datei wird ggf. automatisch durch „<code>ant webapps</code>“ angelegt.
   </li>
   </ul>
   <p class="fett">
   hibernate.cfg.xml
   </p>
   <p>
   DocPortal verwendet Hibernate als Schnittstelle zwischen der Java-Anwendung und der verwendeten relationalen Datenbank. 
   Kopieren Sie zunächst die Datei
   </p>
   <p class="break">
   <code>docportal/config/hibernate/hibernate.cfg.xml.template</code> 
   </p>
   <p>nach </p>
   <p class="break">
   <code>docportal/config/hibernate/hibernate.cfg.xml</code>.
   </p>
   <p>
   Unter <link title="" href="http://www.hibernate.org/">www.hibernate.org</link> finden Sie ggf. weitere Hinweise, wenn Sie 
   zu einem späteren Zeitpunkt die Hibernate-Anbindung für Ihre Datenbank optimieren wollen, oder besonderen Funktionen 
   wie Statistiken, Caches und Logging nutzen wollen.
   </p>
   <p class="fett">
   document.xsl
   </p>
   <p>Um den Image-Viewer nun in der DocPortal-Anwendung zu sehen, muss dieser noch in der Dokumenten-Darstellung 
   integriert werden. Dazu sind in der Datei <code>$DOCPORTAL_HOME/modules/docportal/xsl/document.xsl</code> 
   nur die Kommentarzeichen von <code>&lt;xsl:include href="mcr-module-startIview.xsl"/&gt;</code> sowie dem
   Darstellungsblock zu entfernen. 
   </p>
   </section>
   <section>
   <title>Initialisieren von DocPortal</title>
   <p>
   Nun gilt es, die Beispielanwendung mit Leben zu füllen. Gehen Sie nacheinander folgende Arbeitsschritte durch. 
   Sollte ein Fehler auftreten, beseitigen Sie diesen, bevor sie weiter arbeiten. Es werden standardmäßig drei 
   Verzeichnisse angelegt, welche generierte Daten enthalten.
   </p>
   <table>
   <tr>
   <th colspan="1" rowspan="1">Verzeichnis</th>
   <th colspan="1" rowspan="1">Beschreibung</th>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">build</td>
   <td colspan="1" rowspan="1">In diesem Verzeichnis werden alle für die Kommandozeilenarbeit und die Webanwendung 
   erforderlichen Daten abgelegt.</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">data</td>
   <td colspan="1" rowspan="1">In diesem Verzeichnis sind standardmäßig alle Daten, Inizes und Objektdateien abgelegt.</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">save</td>
   <td colspan="1" rowspan="1">In diesem Verzeichnis befinden sich alle Sicherungen. Es wird durch Anwendung des Kommandos Save... bzw. 
   ant saveWebContent gefüllt.</td>
   </tr>
   </table>
   <p class="klein"><strong>Tabelle 4.1:</strong> Verzeichnisse des Build-Prozesses</p>
   <p>
   Führen Sie die nachfolgenden Kommandos nun schrittweise aus.
   </p>
   <ol>
   <li>
   Prüfen Sie die Systemumgebung in DocPortal mit
   <p class="break"><code>ant info</code></p>
   </li>
   <li>
   Generieren Sie die XML Schema Dateien für das Datenmodell mit dem Kommando
   <p class="break"><code>ant create.schema</code></p>
   </li>
   <li>
   Compilieren Sie die zusätzlichen Java-Klassen und kopieren Sie die notwendigen Java Bibliotheken 
   mit dem Kommando
   <p class="break"><code>ant create.jar</code></p>
   </li>
   <li>
   Erzeugen Sie die CommandLineTools mit Hilfe des Kommandos
   <p class="break"><code>ant create.scripts</code></p>
   </li>
   <li>
   Starten der HSQLDB (wenn kein anderes Datenbanksystem verwendet wird)
   <p class="break"><code>build/bin/hsqldbstart.sh</code> bzw. <code>build/bin/hsqldbstart.cmd</code></p>
   </li>
   <li>
   Laden Sie die Standard-ACL's, Gruppen und Benutzer für die Beispielanwendung mit den Kommandos
   <p class="break"><code>ant create.users</code> und <code>ant create.default-rules</code></p>
   </li>
   <li>
   Laden Sie abschließend noch alle mitgelieferten Klassifikationen. Diese werden für ein reibungsloses 
   Funktionieren der Anwendung sowie zum Einspielen der Beispieldaten benötigt.
   <p class="break"><code>ant create.class</code></p>
   </li>
   </ol>
   <p>
   Sie sollten nun eine leere, aber vollständige Beispielanwendung haben, in welche per CommandLineInterface 
   Daten eingestellt werden könnten. Wie dies geht, wird weiter hinten beschrieben. Die Inbetriebnahme der 
   Web-Anwendung ist in einem der nächsten Kapitel detailiert erklärt.
   </p>
   </section>
   <section>
   <title>Starten der MyCoRe-Kommandozeile</title>
   <p>
   Starten Sie die MyCoRe-Kommandozeile, auch CommandLineInterface genannt, durch Aufruf 
   von <code>build/bin/mycore.sh</code> (UNIX/MacOS) bzw. <code>build\bin\mycore.cmd</code> (Windows). 
   Eine kurze Übersicht aller Befehle erhalten Sie durch Eingabe von <code>help</code>. 
   Sie verlassen die MyCoRe-Kommandozeile durch Eingabe von <code>quit</code> oder <code>exit</code>. 
   Mit <code>help [Kommandoteil]</code> erhalten Sie einen kurzen Hilfetext. 
   Eine ausführliche Dokumentation enthält der Abschnitt Das <link href="#Klass">Klassifikationen-Datenmodell</link>.
   </p>
   <p>Sie können natürlich auch die Aufrufe in beliebige Skripte usw. einbinden, um eine Batch-Verarbeitung zu 
   organisieren. Das Laden der Beispieldaten erfolgte auf diese Weise.
   </p>
   </section>
   <section>
   <title>Erzeugen der Web-Anwendung</title>
   <p>
   Dieser Abschnitt beschäftigt sich mit der Inbetriebnahme der DocPortal-Anwendung als Web-Applikation. Um den 
   Installationsaufwand in Grenzen zu halten, enthält der DocPortal-Code-Baum schon eine fertige Servlet-Engine 
   namens Jetty. Diese ist zwar nicht so mächtig wie Tomcat, ist aber für kleinere und mittlere Anwendungen und 
   Demonstrationszwecke sehr gut geeignet. Bevor Sie jedoch die Jetty-Engine starten sind noch diese Schritte 
   zu tun:
   </p>
   <ol>
   <li>
   Nun kann die Webanwendung erstellt werden.
   <p class="break"><code>ant create.webapp</code></p>
   </li>
   <li>
   Alternativ können Sie auch ein Web Application Archive (war) erzeugen.
   <p class="break"><code>ant war</code></p>
   </li>
   </ol>
   <p>
   Das MyCoRe Build-Skript kopiert beim Erzeugen der Web Applikation auch alle externen, 
   erforderlichen <code>*.jar</code>-Dateien Ihrer verwendeten Datenbank-Systeme (DB2, MySQL, ...) in 
   das Verzeichnis <code>WEB-INF/lib</code>, entsprechend den Vorgaben Ihrer Konfiguration 
   in <code>build.properties</code>. 
   </p>
   <p>
   Nun können Sie die Webanwendung ein erstes Mal starten. Benutzen Sie dazu das generierte Skript, welches die 
   Servlet-Engine Jetty aktiviert.
   </p>
   <p class="break"><code>build/bin/jettystart.sh</code> bzw. <code>build\bin\jettystart</code></p>
   <p>
   Starten Sie nun einen Web-Browser der URL <link href="http://localhost:8291/">http://localhost:8291/</link>
   </p>
   <p>
   Damit Ihre Anwendung auch über die WebServices erreichbar ist (entfernte Anfragen), müssen Sie diese 
   Funktionalität noch gesondert aktivieren. Nachdem Sie mit den Properties MCR.WebServices.Admin 
   und MCR.WebServices.AdminPasswd Kennung und Passwort für den Administrator des Webservice gesetzt haben, 
   verwenden Sie hierzu bei laufender Servlet Engine das Kommando
   </p>
   <p class="break"><code>ant webservice.deploy</code></p>
   <p>
   Die nun verfügbaren WebService-Dienste sehen Sie bei Eingabe der 
   URL <link href="http://localhost:8291/">http://localhost:8291/servlets/AxisServlet</link> in Ihrem Web-Browser. 
   </p>
   <p>
   Um den Dienst abzuschalten muss ebenfalls unter laufendem Jetty das folgende Kommando gegeben werden.
   </p>
   <p class="break"><code>ant webservice.undeploy</code></p>
   <p class="kasten">GRATULATION,<br/>
   SIE HABEN NUN ERFOLGREICH DocPortal INSTALLIERT!</p>
   </section>   
  </section>
  <section>
    <title>Laden der Beispieldaten</title>
    <p>
    MyCoRe stellt eine umfangreiche Sammlung von Beispieldaten bereit. Diese wurde aus Performance-Gründen in ein 
    extra Paket gepackt. Sie können diese als Distribution in Form von <code>*.jar</code>-Dateien von 
	<link href="http://sourceforge.net/" title="SourceForge" target="_blank">SourceForge</link> beziehen und in Ihre 
    fertige Anwendung laden. Alternativ ist auch ein Download vom MyCoRe-Subversion-Server möglich. 
	Die Beispieldaten sind in mehrere Blöcke gegliedert, welche einzeln geladen werden 
    können und bestimmte Aspekte des MyCoRe-Projektes verdeutlichen sollen.
    </p>
   <p class="kasten">svn checkout 
   <link title="" href="http://server.mycore.de/svn/content/trunk">http://server.mycore.de/svn/content/trunk</link> content
   </p>
    <table>
    <tr>
    <th colspan="1" rowspan="1">Zweig</th>
    <th colspan="1" rowspan="1">Beschreibung</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">audiosample</td>
    <td colspan="1" rowspan="1">Einige größere Audiodateien</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">defaultsample</td>
    <td colspan="1" rowspan="1">Ein kleineres Beispiel mit Bildern, HTML-Seiten, Text</td>
    </tr>
		<!--
    <tr>
    <td>kochbuch</td>
    <td>Teddies Kochbuch von Ursula Reber als hierarchischer Content</td>
    </tr>
			-->
    <tr>
    <td colspan="1" rowspan="1">theses</td>
    <td colspan="1" rowspan="1">Einige Diplomarbeiten im Zusammenhang mit MyCoRe</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">video</td>
    <td colspan="1" rowspan="1">Einige größere Videosequenzen</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 4.2:</strong> Beispieldaten im SVN</p>
    <p>
    Das Laden der Daten einer Beispielgruppe in die DocPortal-Anwendung geht wie folgt:
    </p>
    <p class="kasten"><code>java -jar -Xmx1024m -Xms1024m ...-installable.jar</code></p>
	<p>
	Alternativ können die Beispiele auch nach dem Download vom SVN-Server mit <code>ant load</code>
	in die Anwendung eingebracht werden. Es ist jedoch in beiden Fällen wichtig, dass die
	Anwendung <strong>NICHT</strong> interaktiv läuft (kein Jetty!).
	</p>    
  </section>
  <section>
   <title>Sonstiges</title>
   <p>
   Mit Hilfe des Build-Prozesses können Sie auch gezielt die erzeugte Anwendung und/oder die Daten entfernen. 
   Während das Kommando <code>ant clean</code> bzw. <code>ant clean.system</code> alle generierten Anwendungsdaten 
   (standardmäßig im <code>build</code>-Verzeichnis) entfernt, löscht <code>ant clean.data</code> das Verzeichnis 
   der geladenen Daten. Bitte gehen Sie mit diesen Kommandos sorgfältig um. 
   </p>
  </section>
 </section> 
 
 <section id="chapter_05">
   <title>Das Datenmodell</title>
   
   <section>
    <title>Eine Übersicht</title>
    <p>
    Die folgende Skizze soll eine Übersicht über die Zusammenhänge der einzelnen Daten geben. In den anschließenden 
    Abschnitten werden diese dann näher erläutert. Die Datenmodelle der Typen <strong>document</strong> 
    und <strong>disshab</strong> sowie <strong>author</strong> und <strong>person</strong> unterscheiden sich lediglich 
    in der Frage der Pflichtfelder. Die Typen disshab und person sind für einen Dissertations-Server (DOL) gedacht und 
    sind in der Grundversion von DocPortal nicht enthalten.
    </p>
    <img src="images/mcruse_metadata.png" alt="Metadaten"/>
    <p class="klein"><strong>Abbildung 5.1:</strong> Zusammenhänge der einzelnen Metadaten</p>   
   </section>
   
   <section>
    <title>Die Document-Daten</title>
    <p>
    Das Datenmodell der Dokumente ist ein Kompromiss zwischen den einzelnen abzubildenden Datenmodellen bisher 
    bestehender Projekte. Gleichzeitig sollen auch Anforderungen an die Zukunft, wie das <strong>xMetaDiss</strong> 
    Datenmodell oder OAI berücksichtigt werden. Entscheidend für die Gestaltung der Daten mit MyCoRe sind vor allem 
    die MyCoRe-Datentypen. Die Festlegungen zur Wiederholbarkeit der Angaben bezieht sich immer 
    auf <strong>eine</strong> Sprache. Die meisten Felder sind optional und können bei Bedarf verwendet werden.
    </p>
    <p>
    Einzelne Applikationen werden nur einen Teil der angegebenen Felder ausfüllen. Es ist daher sinnvoll sich auf 
    eine allgemeine Mindestmenge von Pflichtfeldern zu einigen, um eine korrekte Suche über mehrere Instanzen und 
    Projekte zu gestatten. Bei einigen Feldern ist dies aber von den Spezifika des jeweiligen Projektes abhängig.
    </p>
    <p>Die Suchmöglichkeiten (parametrisch/Freitext) beziehen sich auf die Metadaten. Hinzu kommt die Volltextsuche 
    im Dokument. Die Felder des <strong>Dublin Core Datenmodells</strong> sollten immer implementiert und wenn möglich 
    mit Daten gefüllt sein. Auf sie beziehen sich auch die Suchen externer Datenanbieter bzw. Teilnehmer am MyCoRe- 
    oder OAI Datenverbund. Um späteren Problemen mit nicht-Latin1-Sprachen aus dem Weg zu gehen sollen alle 
    Metadatensätze und die Internet-Anwendung UTF-8 als Codierung verwenden. 
    </p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Nr.</th>
    <th colspan="1" rowspan="1">Bezeichner</th>
    <th colspan="1" rowspan="1">Bemerkung</th>
    <th colspan="1" rowspan="1">Pfl.</th>
    <th colspan="1" rowspan="1">wied.</th>
    <th colspan="1" rowspan="1">Suche</th>
    <th colspan="1" rowspan="1">MCR-Type</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">1</td>
    <td colspan="1" rowspan="1">Titel (DC)</td>
    <td colspan="1" rowspan="1">Haupttitel und ggf. weitere Titel</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">2</td>
    <td colspan="1" rowspan="1">Creator (DC)</td>
    <td colspan="1" rowspan="1">Name eines Autors ohne Verweis</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">Param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMentLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">3</td>
    <td colspan="1" rowspan="1">CreatorLink</td>
    <td colspan="1" rowspan="1">Daten des Autor oder Schöpfer des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. </td>
    <td colspan="1" rowspan="1">MCRMetaLinkID</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">4</td>
    <td colspan="1" rowspan="1">Subject (DC)</td>
    <td colspan="1" rowspan="1">Ordnungskriterien in Klassifikationen</td>
    <td colspan="1" rowspan="1">ggf.</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">5</td>
    <td colspan="1" rowspan="1">Origin</td>
    <td colspan="1" rowspan="1">Zugehörigkeit zu einer Einrichtung als Klassifikation</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">6</td>
    <td colspan="1" rowspan="1">Description (DC)</td>
    <td colspan="1" rowspan="1">Kurzbeschreibung des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">7</td>
    <td colspan="1" rowspan="1">DescriptURL</td>
    <td colspan="1" rowspan="1">Link zu Kurzbeschreibungen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">8</td>
    <td colspan="1" rowspan="1">Publisher (DC)</td>
    <td colspan="1" rowspan="1">Name des Veröffentlichers des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">9</td>
    <td colspan="1" rowspan="1">PublisherLink</td>
    <td colspan="1" rowspan="1">Daten des Veröffentlichers des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. </td>
    <td colspan="1" rowspan="1">MCRMetaLinkID</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">10</td>
    <td colspan="1" rowspan="1">Contributor (DC)</td>
    <td colspan="1" rowspan="1">Name des Beteiligten an der Erstellung des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">11</td>
    <td colspan="1" rowspan="1">ContribLink</td>
    <td colspan="1" rowspan="1">Daten des Beteiligten an der Erstellung des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. </td>
    <td colspan="1" rowspan="1">MCRMetaLinkID</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">12</td>
    <td colspan="1" rowspan="1">Date (DC)</td>
    <td colspan="1" rowspan="1">Datumsangaben zum Objekt</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaISO8601</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">13</td>
    <td colspan="1" rowspan="1">Type (DC)</td>
    <td colspan="1" rowspan="1">Typ des Objektes als Klassifikation</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">14</td>
    <td colspan="1" rowspan="1">Format (DC)</td>
    <td colspan="1" rowspan="1">Format des Objektes als Klassifikation</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">15</td>
    <td colspan="1" rowspan="1">Identifier (DC)</td>
    <td colspan="1" rowspan="1">Angaben zur Identifikation des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">16</td>
    <td colspan="1" rowspan="1">Source (DC)</td>
    <td colspan="1" rowspan="1">Angaben zu den Quellen des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">17</td>
    <td colspan="1" rowspan="1">SourceLink</td>
    <td colspan="1" rowspan="1">Link zu Angaben zu den Quellen des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">18</td>
    <td colspan="1" rowspan="1">Languages (DC)</td>
    <td colspan="1" rowspan="1">Sprache als Klassifikation</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">19</td>
    <td colspan="1" rowspan="1">Keywords </td>
    <td colspan="1" rowspan="1">Schlüsselworte als verbaler Text</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">20</td>
    <td colspan="1" rowspan="1">Coverage (DC)</td>
    <td colspan="1" rowspan="1">Angaben zu der Erstreckung des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext </td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">21</td>
    <td colspan="1" rowspan="1">CoverageLink</td>
    <td colspan="1" rowspan="1">Link zu Angaben zu der Erstreckung des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">22</td>
    <td colspan="1" rowspan="1">CoverageDate</td>
    <td colspan="1" rowspan="1">Datumsangaben zur Erstreckung des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaDate</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">23</td>
    <td colspan="1" rowspan="1">Relation (DC)</td>
    <td colspan="1" rowspan="1">Textlicher Verweis auf externe Referenzen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext </td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">24</td>
    <td colspan="1" rowspan="1">RelationLink</td>
    <td colspan="1" rowspan="1">Verweise auf externe Referenzen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">25</td>
    <td colspan="1" rowspan="1">RelationISBN</td>
    <td colspan="1" rowspan="1">ISBN als Relation.</td>
    <td colspan="1" rowspan="1">nein</td><td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaISBN</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">26</td>
    <td colspan="1" rowspan="1">Rights (DC)</td>
    <td colspan="1" rowspan="1">Angaben zu den Rechten des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">27</td>
    <td colspan="1" rowspan="1">RightsLink</td>
    <td colspan="1" rowspan="1">Link zu Angaben zu den Rechten des Objektes</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">28</td>
    <td colspan="1" rowspan="1">Size</td>
    <td colspan="1" rowspan="1">Angaben zu Seitenanzahl, Bilder, Tabellen usw.</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">29</td>
    <td colspan="1" rowspan="1">Place</td>
    <td colspan="1" rowspan="1">Erscheinungsort</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param.Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">30</td>
    <td colspan="1" rowspan="1">ISBN</td>
    <td colspan="1" rowspan="1">eindeutige ISBN</td>
    <td colspan="1" rowspan="1">nein</td><td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param.</td><td colspan="1" rowspan="1">MCRMetaISBN</td>
    </tr><tr><td colspan="1" rowspan="1">31</td><td colspan="1" rowspan="1">NBN</td>
    <td colspan="1" rowspan="1">eindeutige NBN</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaNBN</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">32</td>
    <td colspan="1" rowspan="1">URN</td>
    <td colspan="1" rowspan="1">eindeutige URN</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr><tr><td colspan="1" rowspan="1">33</td>
    <td colspan="1" rowspan="1">DDBContact</td>
    <td colspan="1" rowspan="1">Eindeutiger Identifizierer der DB</td>
    <td colspan="1" rowspan="1">nein</td><td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">34</td>
    <td colspan="1" rowspan="1">Notes</td>
    <td colspan="1" rowspan="1">Anmerkungen zum Objekt</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">35</td>
    <td colspan="1" rowspan="1">Citation</td>
    <td colspan="1" rowspan="1">Zitierweise</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 5.1:</strong> Das neue Metadaten-Modell der Dokumente</p>
    
    <p>Ausfüllhinweise:</p>
    <p>
    Die Zahlen in Klammern geben die maximale Zeichenlänge pro Kardinalität an.
    </p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Nr.</th>
    <th colspan="1" rowspan="1">Bezeichner</th>
    <th colspan="1" rowspan="1">Ausfüllhinweis</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">1</td>
    <td colspan="1" rowspan="1">Titel(1024)</td>
    <td colspan="1" rowspan="1"><ul>
        <li>Pro Titeltyp können mehrere Sprachen benutzt werden.</li>
        <li>Haupttitel werden mit <strong>type=“main“</strong> markiert.</li>
        <li>Alternative Titel werden mit <strong>type=“alt“</strong> markiert.</li>
        <li>Untertitel werden mit <strong>type=“subtitle“</strong> markiert.</li>    
    </ul></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">2</td>
    <td colspan="1" rowspan="1">Creator(128)</td>
    <td colspan="1" rowspan="1"><ul>
        <li>Für Habilitationen und Dissertationen Verfasser in Vorlageform.</li>
        <li>Sonst Autorname als Text.</li>
    </ul></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">3</td>
    <td colspan="1" rowspan="1">CreatorLink</td>
    <td colspan="1" rowspan="1">Verweis auf einen Personen-Datensatz.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">4</td>
    <td colspan="1" rowspan="1">Subject</td>
    <td colspan="1" rowspan="1"><ul>
        <li>Verweise auf Kategorien von Klassifikationen, in die das Dokument eingeordnet ist.</li>
        <li>Für  Habilitationen und Dissertationen in Leipzig --&gt; Regensburger Systematik (ID der RS)</li>
        <li>Weitere bibliotheksinterne Sachgruppen</li>
    </ul></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">5</td>
    <td colspan="1" rowspan="1">Origin</td>
    <td colspan="1" rowspan="1">Auswahlliste, zu welcher Einrichtung das Objekt gehört.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">6</td>
    <td colspan="1" rowspan="1">Description(4096)</td>
    <td colspan="1" rowspan="1">Beschreibende Informationen.
        <ul><li>Für den Beschreibungstext <strong>type=“description“</strong>.</li>
            <li>Für Abstract <strong>type=“abstract“</strong>.</li>
            <li>Für die Inhaltsangabe <strong>type=“content“</strong>.</li>        
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">7</td>
    <td colspan="1" rowspan="1">DescriptURL</td>
    <td colspan="1" rowspan="1">Vereis auf externe Beschreibungstexte.
        <ul><li>Für den Beschreibungstext <strong>type=“description“</strong>.</li>
            <li>Für Abstract <strong>type=“abstract“</strong>.</li>
            <li>Für die Inhaltsangabe <strong>type=“content“</strong>.</li>        
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">8</td>
    <td colspan="1" rowspan="1">Publisher(128)</td>
    <td colspan="1" rowspan="1">Textliche Bezeichnung des/derHerausgeber(s).</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">9</td>
    <td colspan="1" rowspan="1">PublisherLink</td>
    <td colspan="1" rowspan="1">Verweis auf einen Personen- oder Institutionen-Datensatz.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">10</td>
    <td colspan="1" rowspan="1">Contributor(128)</td>
    <td colspan="1" rowspan="1">Textliche Bezeichnung des/der Beteiligten.
        <ul>
        <li>Für den Typ können Informationen wie <strong>„advisor“</strong> , <strong>„mentor“</strong>, 
        <strong>„drawer“</strong> usw. angegeben werden.</li>
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">11</td>
    <td colspan="1" rowspan="1">ContributorLink</td>
    <td colspan="1" rowspan="1">Verweis auf einen Personen- oder Institutionen-Datensatz.
        <ul>
        <li>Für den Typ können Informationen wie <strong>„advisor“</strong> , <strong>„mentor“</strong>, 
        <strong>„drawer“</strong> usw. angegeben werden.</li>
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">12</td>
    <td colspan="1" rowspan="1">Date</td>
    <td colspan="1" rowspan="1"><ul><li>Für allgemeine Dokumente Datum der Einstellung <strong>type=“create“</strong>.</li>
            <li>Für das Datum der Einreichung zur Dis./Habil.der Arbeit <strong>type=“submit“</strong>.</li>
            <li>Für das Datum der Verteidigung zur Dis./Habil.der Arbeit <strong>type=“accept“</strong>.</li>
            <li>Für das Datum der Beschlussfassung zur Dis./Habil. der Arbeit <strong>type=“decide“</strong>.</li>
        </ul>           
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">13</td>
    <td colspan="1" rowspan="1">Type</td>
    <td colspan="1" rowspan="1">Auswahlliste inkusive „Dissertation“ und „Habilitation“</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">14</td>
    <td colspan="1" rowspan="1">Format</td>
    <td colspan="1" rowspan="1">Auswahlliste </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">15</td>
    <td colspan="1" rowspan="1">Identifier(128)</td>
    <td colspan="1" rowspan="1">ggf. Bibliothekssignatur</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">16</td>
    <td colspan="1" rowspan="1">Source(1024)</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">17</td>
    <td colspan="1" rowspan="1">SourceLink</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">18</td>
    <td colspan="1" rowspan="1">Language</td>
    <td colspan="1" rowspan="1">Siehe Anmerkungen zur Sprachnotation.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">19</td>
    <td colspan="1" rowspan="1">Keywords(128)</td>
    <td colspan="1" rowspan="1">Verbal anzugebende Schlüsselworte / Stichworte.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">20</td>
    <td colspan="1" rowspan="1">Coverage(1024)</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">21</td>
    <td colspan="1" rowspan="1">CoverageLink</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">22</td>
    <td colspan="1" rowspan="1">CoverageDate</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">23</td>
    <td colspan="1" rowspan="1">Relation(1024)</td>
    <td colspan="1" rowspan="1"><ul><li>Angabe zum Erscheinen des Werkes.</li>
            <li>Verbaler Verweis auf vorangegangene Versionen.</li>
       </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">24</td>
    <td colspan="1" rowspan="1">RelationLink</td>
    <td colspan="1" rowspan="1">Link auf vorangegangene Versionen.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">25</td>
    <td colspan="1" rowspan="1">RelationISBN</td>
    <td colspan="1" rowspan="1">Verweis auf eine ISBN Nummer.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">26</td>
    <td colspan="1" rowspan="1">Right(1024)</td>
    <td colspan="1" rowspan="1">Verbale Beschreibung der Urheberrechte.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">27</td><td colspan="1" rowspan="1">RightsLink</td>
    <td colspan="1" rowspan="1">Verweis auf eine URL mit den Lizenz- und/oder Urheberrechten.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">28</td><td colspan="1" rowspan="1">Size(1024)</td>
    <td colspan="1" rowspan="1">Verbale Aufzählung von Seite, Abbildungen, usw. lt. Vorgabe der Bibliothek.<br/>
        Für Leipzig z. B. : xxx S. : Ill., graph. Darst.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">29</td>
    <td colspan="1" rowspan="1">Place(1024)</td>
    <td colspan="1" rowspan="1">Erscheinungsort</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">30</td>
    <td colspan="1" rowspan="1">ISBN(32)</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">31</td>
    <td colspan="1" rowspan="1">NBN(256)</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">32</td>
    <td colspan="1" rowspan="1">URN(256)</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">33</td>
    <td colspan="1" rowspan="1">DDBContact(1024)</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">34</td>
    <td colspan="1" rowspan="1">Notes(4096)</td>
    <td colspan="1" rowspan="1"><ul><li>Für SWB Fußnoten <strong>type=“feet“</strong>.</li>
            <li>Für SWB Kommentare <strong>type=“coment“</strong>.</li>
       </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">35</td>
    <td colspan="1" rowspan="1">Citation4096)</td>
    <td colspan="1" rowspan="1">Verbale Angabe der Zitierweise.</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 5.2:</strong> Ausfüllhinweise zum neuen Datenmodell der Dokumente</p>
    
   </section>
   
   <section>
    <title>Das Datenmodell für Institutionen</title>
    <p>
    Für Institutionen wurde ein Datenmodell entwickelt, welches sich hauptsächlich an dem Einsatz im dienstlichen 
    Gebrauch orientiert.
    </p>
    
    <table>
    <tr>
    <td colspan="1" rowspan="1">Nr.</td>
    <td colspan="1" rowspan="1">Bezeichner</td>
    <td colspan="1" rowspan="1">Bemerkung</td>
    <td colspan="1" rowspan="1">Pfl.</td>
    <td colspan="1" rowspan="1">wied.</td>
    <td colspan="1" rowspan="1">Suche</td>
    <td colspan="1" rowspan="1">MCR-Type</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">1</td>
    <td colspan="1" rowspan="1">Name</td>
    <td colspan="1" rowspan="1">Angaben zum Namen einer Institution</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaCorporationName</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">2</td>
    <td colspan="1" rowspan="1">Address</td>
    <td colspan="1" rowspan="1">Angaben zur Adresse</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaAddress</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">3</td>
    <td colspan="1" rowspan="1">Phone</td>
    <td colspan="1" rowspan="1">Telefonnummern / Fax</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">4</td>
    <td colspan="1" rowspan="1">URL</td>
    <td colspan="1" rowspan="1">URL’s</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">5</td>
    <td colspan="1" rowspan="1">eMail</td>
    <td colspan="1" rowspan="1">eMails’s</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">6</td>
    <td colspan="1" rowspan="1">Note</td>
    <td colspan="1" rowspan="1">Bemerkungen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 5.3:</strong> Das neue Metadaten-Modell für Institutionen</p>
    
    <p>Ausfüllhinweise:</p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Nr.</th>
    <th colspan="1" rowspan="1">Bezeichner</th><th colspan="1" rowspan="1">Ausfüllhinweis</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">1</td>
    <td colspan="1" rowspan="1">Name</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">2</td>
    <td colspan="1" rowspan="1">Address</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">3</td>
    <td colspan="1" rowspan="1">Phone</td>
    <td colspan="1" rowspan="1"><ul>
            <li>für Telefonnummern <strong>type="phone"</strong></li>
            <li>für Faxe <strong>type="fax"</strong></li>
        </ul></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">4</td>
    <td colspan="1" rowspan="1">URL</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">5</td>
    <td colspan="1" rowspan="1">eMail</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">6</td>
    <td colspan="1" rowspan="1">Note</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 5.4:</strong> Ausfüllhinweise für das neue Metadaten-Modell für Institutionen</p>
    
   </section>
   <section>
    <title>Das Datenmodell für natürliche Personen</title>
    <p>
    Für natürliche <strong>Personen</strong> hingegen ist ein umfangreicheres Datenmodell erforderlich. 
    Dieses ist in der angebotenen Variante vor allem auf dienstliche Belange abgestimmt.
    </p>
    
    <table>
    <tr>
    <td colspan="1" rowspan="1">Nr.</td>
    <td colspan="1" rowspan="1">Bezeichner</td>
    <td colspan="1" rowspan="1">Bemerkung</td>
    <td colspan="1" rowspan="1">Pfl.</td>
    <td colspan="1" rowspan="1">wied.</td>
    <td colspan="1" rowspan="1">Suche</td>
    <td colspan="1" rowspan="1">MCR-Type</td>
    </tr>    
    <tr>
    <td colspan="1" rowspan="1">1</td>
    <td colspan="1" rowspan="1">Name</td>
    <td colspan="1" rowspan="1">Angaben zum Namen einer Person</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param. Freitext</td>
    <td colspan="1" rowspan="1">MCRMetaPersonName</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">2</td>
    <td colspan="1" rowspan="1">Female</td>
    <td colspan="1" rowspan="1">Angaben zum Geschlecht der Person</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">param. </td>
    <td colspan="1" rowspan="1">MCRMetaBoolean</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">3</td>
    <td colspan="1" rowspan="1">Institution</td>
    <td colspan="1" rowspan="1">Verweis auf die Institution, zu der die Person gehört</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param. </td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">4</td>
    <td colspan="1" rowspan="1">Address</td>
    <td colspan="1" rowspan="1">Angaben zur Adresse</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaAddress</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">5</td>
    <td colspan="1" rowspan="1">Phone</td>
    <td colspan="1" rowspan="1">Telefonnummern</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">6</td>
    <td colspan="1" rowspan="1">Date</td>
    <td colspan="1" rowspan="1">Datumsangeben wie Geburtsdatum, usw.</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaISO8601</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">7</td>
    <td colspan="1" rowspan="1">Profession</td>
    <td colspan="1" rowspan="1">Berufsbezeichnung / Amt</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">8</td>
    <td colspan="1" rowspan="1">ProfClass</td>
    <td colspan="1" rowspan="1">Berufsbezeichnung / Amt als Klassifikationseintrag</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">9</td>
    <td colspan="1" rowspan="1">National</td>
    <td colspan="1" rowspan="1">Nationalität</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">param.</td>
    <td colspan="1" rowspan="1">MCRMetaClassification</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">10</td>
    <td colspan="1" rowspan="1">URL</td>
    <td colspan="1" rowspan="1">URL’s</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">11</td>
    <td colspan="1" rowspan="1">eMail</td>
    <td colspan="1" rowspan="1">eMails’s</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">12</td>
    <td colspan="1" rowspan="1">Reference</td>
    <td colspan="1" rowspan="1">Externe Referenzen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLink</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">13</td>
    <td colspan="1" rowspan="1">Note</td>
    <td colspan="1" rowspan="1">Anmerkungen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">14</td>
    <td colspan="1" rowspan="1">Publications</td>
    <td colspan="1" rowspan="1">Publikationen</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">ja</td>
    <td colspan="1" rowspan="1">nein</td>
    <td colspan="1" rowspan="1">MCRMetaLangText</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 5.5:</strong> Das neue Metadaten-Modell für Personen</p>
    
    <p>Ausfüllhinweise:</p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Nr.</th>
    <th colspan="1" rowspan="1">Bezeichner</th>
    <th colspan="1" rowspan="1">Ausfüllhinweise</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">1</td>
    <td colspan="1" rowspan="1">Name</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">2</td>
    <td colspan="1" rowspan="1">Female</td>
    <td colspan="1" rowspan="1"><ul>
        <li>weiblich ist <strong>true</strong>; männlich ist <strong>false</strong></li>
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">3</td>
    <td colspan="1" rowspan="1">Institution</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">4</td>
    <td colspan="1" rowspan="1">Address</td>
    <td colspan="1" rowspan="1"><ul>
        <li>Für das Büro ist <strong>type=“office“</strong> anzugeben.</li>
        <li>Für die private Adresse ist <strong>type=“private“</strong> anzugeben.</li>
        </ul></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">5</td>
    <td colspan="1" rowspan="1">Phone</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">6</td>
    <td colspan="1" rowspan="1">Date</td>
    <td colspan="1" rowspan="1"><ul>
        <li>Für das Geburtsdatum ist <strong>type=“birth“</strong> anzugeben.</li>
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">7</td>
    <td colspan="1" rowspan="1">Profession</td>
    <td colspan="1" rowspan="1"><ul>
        <li>Für den Beruf ist <strong>type=“profession“</strong> anzugeben.</li>
        <li>Für die Tätigkeit ist <strong>type=“job“</strong> anzugeben.</li>
        </ul>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">8</td>
    <td colspan="1" rowspan="1">ProfClass</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">9</td>
    <td colspan="1" rowspan="1">National</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">10</td>
    <td colspan="1" rowspan="1">URL</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">11</td>
    <td colspan="1" rowspan="1">eMail</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">12</td>
    <td colspan="1" rowspan="1">Reference</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">13</td>
    <td colspan="1" rowspan="1">Note</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">14</td>
    <td colspan="1" rowspan="1">Publications</td>
    <td colspan="1" rowspan="1"/>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 5.6:</strong> Ausfüllhinweise für das neue Metadaten-Modell für Personen</p>
    
   </section>
   
   <anchor id="chapter_5.5"/>
   <section>
    <title>Klassifikationen</title>
    <p>
    Klassifikationen sollen eine Suche / Präsentation von einheitlichen Begriffen gewährleisten. 
    Da letztendlich jede Einrichtung selbst für die Auswahl der verwendeten Klassifikation verantwortlich ist, 
    können hier nur Empfehlungen ausgesprochen werden, um eine gemeinsame Instanzen-übergreifende Suche zu ermöglichen. 
    Achtung, in einem Verbund sollte man sich darüber im Klaren sein, dass Streichungen von Kategorien einer 
    Klassifikation zu Fehlern führen können! Ergänzungen hingegen sind unkritisch.
    </p>
   
    <section>
     <title>Subjekte</title>
     <p>
     Die Klassifikationen der Subjekte sind wohl das größte Problem bei der Suche nach einem gemeinsamen Nenner. 
     Andererseits kann hier auch toleriert werden, das eine große Individualität der einzelnen Anwendungen herrscht, 
     wenn man bereit ist, Diskrepanzen bei der Suche hinzunehmen bzw. dieses Feld von einer <strong>gemeinsamen 
     übergreifenden</strong> Suche auszuschließen. Einige Klassifikationen sind schon für MyCoRe realisiert, andere 
     bedürfen noch einer Umsetzung. Eine Übersicht gibt die folgende Tabelle.
     </p>
     
     <table>
     <tr>
     <th colspan="1" rowspan="1">Klassifikation</th>
     <th colspan="1" rowspan="1">in DocPortal</th>
     <th colspan="1" rowspan="1">MCRObjectID</th>
     <th colspan="1" rowspan="1">im Sample</th>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Basisklassifikation (GBV)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Sachgruppen der Deutschen Nationalbibliographie (DNB)</td>
     <td colspan="1" rowspan="1">ja</td>
     <td colspan="1" rowspan="1">DocPortal_class_00000007</td>
     <td colspan="1" rowspan="1">ja</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Dewey Decimal Classifikation (DDC)</td>
     <td colspan="1" rowspan="1">ja</td>
     <td colspan="1" rowspan="1">DocPortal_class_00000009</td>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Regensburger Verbundklassifikation (RKV)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Mathematics Subject Classifikation (msc1991)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Physics and Astronomy Classification Scheme (pacs2003)</td>
     <td colspan="1" rowspan="1">ja</td>
     <td colspan="1" rowspan="1">DocPortal_class_00000010</td>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">ACM Computing Classification System (ccs1998)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Zentralblatt für Didaktik der Mathematik (zdm)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Library of Congress Classification Scheme (LCC)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Universam Decimal Classification Scheme (UDC)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">National Library of Medicine Classification Scheme (NLM)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Mathematics Subject Classifikation (msc2000)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Schlagwortnormdatei (SWD)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Library of Congress Subject Headings Scheme (LCSH)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Medical Subject Headings Scheme (MeSH)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">Unified Medical Language System Scheme (UMLS)</td>
     <td colspan="1" rowspan="1">nein</td>
     <td colspan="1" rowspan="1"/>
     <td colspan="1" rowspan="1"/>     
     </tr>
     </table>
     <p class="klein"><strong>Tabelle 5.7:</strong> Potentielle Klassifikationen für DocPortal</p>
     
    </section>
    
    <section>
     <title>Herkunft</title>
     <p>
     Diese Klassifikation beinhaltet eine Liste von Grundeinträgen für die beteiligten Einrichtungen. Diese 
     Grundeinträge sind durch den jeweiligen DocPortal-Anwender für sich um eine weitere Untergliederung näher zu 
     spezifizieren. Ziel dieser Grundeinrichtung ist eine grobe Suchbarkeit der Daten auch von Anwendungen anderer 
     Portal-Teilnehmer aus (Beispiel: Suche von Objekten aus Leipzig in Jena). Es erscheint sinnvoll, für die 
     Herkunft die Möglichkeit einer Anbindung von URL's an die jeweilige Kategorie, wie sie MyCoRe bietet, 
     auszunutzen, somit kann direkt auf die Web-Seite eines Institutes oder einer Einrichtung referenziert werden. 
     </p>
    </section>
    
    <section>
     <title>Typ</title>
     <p>
     Da sich das xMetaDiss Konzept nur für Dissertation und Habilitationen verantwortlich fühlt, ist eine Integration 
     in MILESS/MyCoRe relativ einfach möglich. DocPortal sieht daher alle in MILESS bisher verwendeten Typen vor. 
     Ergänzungen durch die Anwender von DocPortal können problemlos durchgeführt werden.
     </p>
    </section>
    
    <section>
     <title>Format</title>
     <p>
     Die Festlegung der Format-Klassifikation ist sehr schwierig. METADISS sieht hier zum Beispiel die MIME-Types vor. 
     In MILESS/MyCoRe werden hier verbale Einstufungen benutzt. Dabei sollten wir auch bleiben, da wir ja ggf. eine 
     Menge von Objekten mit einem Metadatensatz versehen (Derivate). Aus der Speichertabelle dieser Derivate können 
     die erforderlichen Mime-Types gewonnen werden. 
     </p>
    </section>
    
    <section>
     <title>Sprache</title>
     <p>
     Die Language Klassifikation ist eine Abbildung der Sprachen nach ISO-639-1. Ggf. werden diese Sprachkürzel um 
     Länderkürzel nach ISO Norm 3166 erweitert werden (z. B. eng-US). Um Konform zur XML-Notation zu sein, wird 
     gemäß Spezifikation die Form <strong>...[-CC]</strong> gewählt, wobei ... der 3-stellige Sprachcode ist. Diesem 
     kann sich das Länderkürzel mit Minuszeichen anschließen.
     </p>
    </section>
   
    <section>
     <title>Nationalität</title>
     <p>
     Die Klassifikation der Nationalitäten umfasst eine einfache Liste der gängigsten Nationalitäten. 
     Eine Ergänzung ist jederzeit möglich.
     </p>
    </section>
    
    <section>
     <title>Übersicht der DocPortal-Klassifikationen</title>
     <p>
     Die nachfolgende Tabelle gibt eine Übersicht der mitgelieferten Klassifikationsmuster, wie sie Verwendung finden. 
     Diese Muster müssen für eine Nachnutzung entsprechend angepasst werden. Gleichzeitig erfolgt mit dem weiteren 
     Projektausbau auch die Erweiterung dieser Klassifikationen.
     </p>
     
     <table>
     <tr>
     <th colspan="1" rowspan="1">MCRObjectID</th>
     <th colspan="1" rowspan="1">Inhalt der Klassifikation</th>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000001</td>
     <td colspan="1" rowspan="1">Eine Liste der möglichen Nationalitäten.</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000002</td>
     <td colspan="1" rowspan="1">Eine Grundliste der beteiligten Universitäten und Firmen. Diese Liste ist nicht fein struktueriert, dies müssen 
         die Anwender selbst vornehmen. Im description Attribut der Kategorien können MCRObjectID's der Institutionen 
         abgelegt werden.
     </td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000003</td>
     <td colspan="1" rowspan="1">Analog zu DocPortal_class_00000002..</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000004</td>
     <td colspan="1" rowspan="1">Eine Liste der möglichen Sprachen.</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000005</td>
     <td colspan="1" rowspan="1">Eine Liste der Typen</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000006</td>
     <td colspan="1" rowspan="1">Eine Liste der Formate</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000007</td>
     <td colspan="1" rowspan="1">Eine Liste der Sachgruppen DNB</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000008</td>
     <td colspan="1" rowspan="1">Eine Liste der Berufe</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000009</td>
     <td colspan="1" rowspan="1">Die DDC-Klassifikation</td>
     </tr>
     <tr>
     <td colspan="1" rowspan="1">DocPortal_class_00000010</td>
     <td colspan="1" rowspan="1">Die PACS-Klassifikation</td>
     </tr>
     </table>
     <p class="klein"><strong>Tabelle 5.8:</strong> DocPortal-Klassifikationen</p>
     
    </section>
   </section>
  </section>
  <section id="chapter_06">
  <title>Die Arbeit mit der Beispielanwendung</title>
  
  <section>
   <title>Benutzer</title>
   <p>
   Um nun eigene Dokumente einstellen zu können oder im WCMS Seiten verändern zu können, benötigen Sie entsprechende 
   Logins. Einige sind schon bei dieser Installation eingerichtet worden.
   </p>
   
   <section>
    <title>Benutzer der Beispielanwendung</title>
    <p>
    Die Beispielanwendung bringt zur Demonstration bereits eine Reihe von Benutzern und Gruppen mit. Einer Gruppe 
    können dabei mehrere Benutzer angehören. Die Vergabe von Rechten auf Objekte kann dann sowohl für einen einzelnen 
    Benutzer als auch für eine ganze Gruppe erfolgen. Im <link href="#ACL">Kapitel 6.2</link> wird dieses Zugriffssystem (ACL-System) näher 
    erläutert.
    </p>    
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Gruppe</th>    
    <th colspan="1" rowspan="1">Beschreibung</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">root</td>
    <td colspan="1" rowspan="1">Die Gruppe der Superuser</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">admingroup</td>
    <td colspan="1" rowspan="1">Die Gruppe der Systemadministratoren</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">readergroup1</td>
    <td colspan="1" rowspan="1">Eine Gruppe von Lesern der 1. Einrichtung (nur Leserechte für Objekte der Gruppe)</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">readergroup2</td>
    <td colspan="1" rowspan="1">Eine Gruppe von Lesern der 2. Einrichtung (nur Leserechte für Objekte der Gruppe)</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">authorgroup1</td>
    <td colspan="1" rowspan="1">Eine Gruppe von Autoren der 1. Einrichtung (Autorenrechte nur auf die eigenen Objekte)</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">authorgroup2</td>
    <td colspan="1" rowspan="1">Eine Gruppe von Autoren der 2. Einrichtung (Autorenrechte nur auf die eigenen Objekte)</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">editorgroup1</td>
    <td colspan="1" rowspan="1">Eine Gruppe von Editoren der 1. Einrichtung (Bearbeiter aller Objekte einer Einrichtung)</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">editorgroup2</td>
    <td colspan="1" rowspan="1">Eine Gruppe von Editoren der 2. Einrichtung (Bearbeiter aller Objekte einer Einrichtung)</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">gastgroup</td>
    <td colspan="1" rowspan="1">Die Gruppe der Gäste</td>
    </tr>    
    </table>
    <p class="klein"><strong>Tabelle 6.1:</strong> Beispielgruppen in DocPortal</p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Benutzer</th>
    <th colspan="1" rowspan="1">Gruppe</th>
    <th colspan="1" rowspan="1">Passwort</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">root</td>
    <td colspan="1" rowspan="1">rootgroup</td>
    <td colspan="1" rowspan="1">alleswirdgut</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">administrator</td>
    <td colspan="1" rowspan="1">admingroup</td>
    <td colspan="1" rowspan="1">alleswirdgut</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">editor1A</td>
    <td colspan="1" rowspan="1">editorgroup1</td>
    <td colspan="1" rowspan="1">editor1A</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">editor1B</td>
    <td colspan="1" rowspan="1">editorgroup1</td>
    <td colspan="1" rowspan="1">editor1B</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">editor2A</td>
    <td colspan="1" rowspan="1">editorgroup2</td>
    <td colspan="1" rowspan="1">editor2A</td>
    </tr><tr>
    <td colspan="1" rowspan="1">editor2B</td>
    <td colspan="1" rowspan="1">editorgroup2</td>
    <td colspan="1" rowspan="1">editor2B</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">author1A</td>
    <td colspan="1" rowspan="1">authorgroup1</td>
    <td colspan="1" rowspan="1">author1A</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">author1B</td>
    <td colspan="1" rowspan="1">authorgroup1</td>
    <td colspan="1" rowspan="1">author1B</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">author2A</td>
    <td colspan="1" rowspan="1">authorgroup2</td>
    <td colspan="1" rowspan="1">author2A</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">author2B</td>
    <td colspan="1" rowspan="1">authorgroup2</td>
    <td colspan="1" rowspan="1">author2B</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">reader1A</td>
    <td colspan="1" rowspan="1">readergroup1</td>
    <td colspan="1" rowspan="1">reader1A</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">reader2A</td>
    <td colspan="1" rowspan="1">readergroup2</td>
    <td colspan="1" rowspan="1">reader2A</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">gast</td>
    <td colspan="1" rowspan="1">gastgroup</td>
    <td colspan="1" rowspan="1">gast</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 6.2:</strong> Beispielbenutzer in DocPortal</p>
   
   </section>
   
   <section>
    <title>Benutzer des WCMS</title>
    <p>
    Aktuell ist nur der Benutzer admin mit dem Passwort wcms eingerichtet. 
    </p>
    <p>
    Wenn sie weitere Nutzer anlegen wollen, führen sie bitte folgende Schritte aus:
    </p>
    <ul>
    <li><code>mycore.jar</code> in den <code>CLASSPATH</code> aufnehmen</li>
    <li>Aufruf von <code>java wcms.util.HashCipher neuesKennwort</code></li>
    <li>den dann ausgegebenen Hashwert in Datei <code>docportal/modules/module-wcms/aif/config/WCMSUserDB.xml</code> 
    eintragen</li>
    </ul>
   </section>
   
  </section>
  
  <anchor id="ACL"/>
  <section>
   <title>Zugriffsrechte auf Daten</title>
   <p>
   Alle in MyCoRe gespeicherten Objekte besitzen einen Zugriffsschutz über Access Control Lists (ACL). 
   Dieser Schutzmechanismus ordnet jedem Objekt eine Reihe von Attributen zu, welche als Bedingung erfüllt sein müssen, 
   damit der Zugriff auf das Objekt gewährt wird. Der Vergleich der in den ACL's gespeicherten Voraussetzungen gegen 
   den aktuellen Zustand des Zugriffs erfolgt mittels der Sitzung (Session). In ihr werden alle Umgebungsinformationen 
   wie zugreifende IP, Benutzer, usw. gespeichert. Das für MyCoRe implementierte ACL-System kennt drei Attribute für die 
   Auswertung.
   </p>
   <ul>
   <li>Benutzer</li>
   <li>Gruppen</li>
   <li>Netzadressen in Form von IP's bzw. IP-Blöcken</li>
   </ul>
   <p>
   Bei der interaktiven Eingabe neuer Daten werden standardmäßig im Projekt festgelegte Zugriffsregeln vorgegeben. 
   Diese trennen sich in die Bereiche Lesen und Bearbeiten. Im Bereich des Bearbeitens wird wiederum in die Arbeit im 
   Workflow und im Server-System unterschieden. Hier können jeweils die Arbeitsgänge Editieren und Löschen getrennt 
   voneinander festgelegt werden. Für DocPortal sind folgende Berechtigungen (Permissions) definiert:
   </p>
   <ul>
   <li>read – gestattet den lesenden Zugriff</li>
   <li>writewf – gestattet das Schreiben bzw. Ändern, solange das Objekt im Simple Workflow (SWF) ist</li>
   <li>deletewf – gestattet das Löschen, solange das Objekt im Simple Workflow (SWF) ist</li>
   <li>writedb – gestattet das Schreiben bzw. Ändern, wenn das Objekt im Server ist</li>
   <li>deletedb - gestattet das Löschen, wenn das Objekt im Server ist</li>
   </ul>
   <p>
   Die Permissions werden in der Editor-Verarbeitung des Neuanlegens eines Datensatzes aus einem Standard-ACL-Datensatz 
   erzeugt. Hierzu kommt die Berechtigung des aktuellen Autors zu allen Bearbeitungsfunktionen. Die Leserechte sind für 
   alle Benutzer zugelassen. Diese Einstellung gilt konkret für die Docportal-Anwendung. Für eigene Projekte kann dies 
   ganz anders definiert werden. Die Permissions werden im Workflow-Prozess direkt im Datensatz gespeichert. Die 
   Notation der Zugriffsregeln im Datenabschnitt <em><strong>services</strong></em> ist als Datentyp 
   <em><strong>MCRMetaAccessRule</strong></em> im <link href="#chapter_8">Kapitel 8</link> näher beschrieben. Beim Einstellen (Hochladen) der Objekte 
   in den Server werden die Regeln <strong>writewf</strong> und <strong>deletewf</strong> vollständig entfernt, da sie 
   nicht mehr benötigt werden. Alle anderen Zugriffsregeln werden im MyCoRe-ACL-System in die Datenbank eingetragen 
   und anschließend aus dem Originaldatensatz gelöscht. Damit ist das Objekt gesichert, ein Zugriff darauf benötigt 
   nun immer die Zustimmung der ACL-Komponente. Eine Änderung der Permissions kann nun nur noch bei einer 
   Schreibberechtigung erfolgen. Die interaktiven Komponenten von DocPortal bieten hier ein Aktionsfeld mit einem 
   Editor-Formular an. <strong>Nutzer der Gruppe admingroup sind immer für den Zugriff berechtigt, auch wenn dies nicht 
   explizit angegeben ist.</strong>
   </p>
   <p>
   Um den einzelnen digitalen Objekten ggf. eine höhere Sicherheit zu geben, können ergänzende Permissions in den 
   Derivate-XML-Daten angegeben werden. Bei einem Zugriff wird zuerst geprüft, ob Zugriffsrechte für den Metadatensatz 
   bestehen, anschließend wird geprüft ob es zusätzliche Einschränkungen aus dem Derivate gibt. Standardmäßig ist im 
   Derivate immer die Permission '<strong>true</strong>' gesetzt, was keinen weiteren Einschränkungen entspricht.
   </p>
   <p>
   Das ACL-System gestattet prinzipiell eine beliebige Sicherung mit anwendungsspezifischen Kriterien. Im 
   <link href="site:appdev_2_1">Programmer Guide</link> finden Sie detaillierte Informationen zu 
   Weiterentwicklung Ihrer eigenen Applikationen. 
   </p>
  </section>
  
  <section>
   <title>Die Verwendung der Kommandozeilenschnittstelle </title> 
   <p>
   Mit Hilfe der Kommandozeilenschnittstelle können Sie administrative Aufgaben für ihre MyCoRe-Anwendung auf 
   Kommandozeilenebene durchführen. Dies ermöglicht auch die Abarbeitung von Scripts zu Massenverwaltung der 
   eingestellten Daten. So können Sie etwa Objekte (Dokumente, Derivate, Personen, usw.) oder Klassifikationen in 
   das Repository einlesen, aktualisieren und löschen, Suchen durchführen und Objekte in Dateien exportieren. Diese 
   Funktionalitäten sind insbesondere bei einer Migration eines bestehenden Systems zur Sicherung der Daten sehr 
   sinnvoll.
   </p>
   <p>
   Die nachfolgenden Abschnitte sollen Ihnen eine Übersicht der möglichen Kommandos geben. Die einzelnen 
   Kommandogruppen werden dabei intern in den Kommandokern importiert und stehen dem Benutzer zur Verfügung. Die mit 
   dem MyCoRe-System ausgelieferten Kommandos können beliebig erweitert werden. Konsultieren Sie hierzu den 
   MyCoRe <link href="site:appdev_2_1">Programmer Guide</link>.
   </p>
   
   <section>
    <title>Basiskommandos des Kommandozeilensystems</title>
    <p>
    Das Kommandozeilensystem enthält eine kleine Zahl an Basiskommandos. Diese sollen im folgenden Abschnitt 
    beschrieben werden. Sie werden ergänzt durch weitere Kommandos für die einzelnen Bereiche der Arbeit mit MyCoRe. 
    Es besteht auch die Möglichkeit, eigene Anwendungskommandos als Java-Klassen zu entwickeln und zu integrieren. 
    Das Kommandozeilen-Tool ist <code>mycore.sh</code> bzw. <code>mycore.cmd</code> steht nach dem Erzeugen 
    mittels <code>ant create.scripts</code> im <code>bin</code>-Verzeichnis der Anwendung bereit. In den unten stehenden 
    Beschreibungen sind alle erforderlichen Parameter in der Form <code>{n}</code> notiert. <code>n</code> gibt dabei 
    die Nummer des Parameters an. Die Zählung beginnt bei 0.
    </p>
    
    <dl class="kasten">
    <dt><code>help</code></dt>
    <dd>Zeigt alle möglichen Kommandos, auch die von der Anwendung hinzugefügten.</dd>
    <dt><code>help {0}</code> </dt>
    <dd>Zeigt alle Kommandos, die mit {0} als Text beginnen</dd>
    <dt><code>process {0}</code></dt>
    <dd> Führt das im Parameter 0 angegebene System-Shell-Kommando aus.</dd>
    <dt><code>! {0}</code></dt>
    <dd>Führt das im Parameter 0 angegebene System-Shell-Kommando aus.</dd>   
    <dt><code>whoami</code></dt>
    <dd>Zeigt den aktuellen Benutzer an.</dd>
    <dt><code>login {0}</code></dt>
    <dd>Startet einen Benutzerwechsel-Dialog für den Benutzer {0}.</dd>
    <dt><code>change to user {0} with {1}</code></dt>
    <dd>Wechselt den Benutzer {0} mit dem Passwort {1}.</dd>
    <dt><code>show file {0}</code></dt>
    <dd>Zeigt den Inhalt der Datei {0} an. Eine absolute Pfadangabe für {0} ist erforderlich.</dd>
    <dt><code>show command statistics</code></dt>
    <dd>Zeigt eine Statistik der ausgeführten Kommandos und der Laufzeiten an.</dd>
    <dt><code>cancel on error</code></dt>
    <dd>Beendet die Ausführung folgender Kommandos im Fehlerfall.</dd>
    <dt><code>skip on error</code></dt>
    <dd>Übergeht Kommandos, welche bei der Ausführung fehl schlagen.</dd>
    <dt><code>exit</code></dt>
    <dd>Beendet das Kommandozeilensystem.</dd>
    <dt><code>quit</code></dt>
    <dd>Beendet das Kommandozeilensystem.</dd>
    </dl>
        
   </section>
   
   <section>
    <title>Kommandos zur Arbeit mit der Benutzerverwaltung </title>
    <p>    
    Eine Gruppe der verfügbaren Kommandos der Kommandozeilenschnittstelle ermöglicht die Verwaltung von Benutzern und 
    Gruppen. Diese Kommandos werden im folgenden vorgestellt. Oft werden bei den Kommandos XML-Dateien mit Definitionen 
    von Benutzern oder Gruppen erwartet. Die Syntax dieser XML-Beschreibungen finden Sie im 
    <link href="site:appdev_2_1">Programmer Guide</link>. Es werden derzeit nur die wichtigsten 
    Geschäftsprozesse der Benutzerverwaltung in den folgenden Kommandos abgebildet. 
    Der Schwerpunkt liegt auf einem Management-Interface für administrativen Zugriff. Die vollständige GUI der 
    Benutzerverwaltung (geplant für eine spätere Version) wird die Möglichkeit einer Bearbeitung aller Geschäftsprozesse 
    bieten.
    </p>
     
    <p class="fett">Allgemeine Verwaltungskommandos</p>
    <anchor id="superuser"/>

    <dl class="kasten">    
    <dt><code>init superuser</code></dt> 
    <dd>Dieses Kommando wird einmalig bei der Installation und Konfiguration des MyCoRe-Systems verwendet. Dabei werden 
    Daten über den zu verwendenden Administrations-Account und den Gast-Account aus den Konfigurationsdateien gelesen, 
    sowie das Benutzersystem initialisiert.</dd>    
    <dt><code>check user data consistency</code></dt> 
    <dd>Dieses Kommando dient zur Kontrolle der Konsistenz des Benutzersystems. Alle Verbindungen zwischen Benutzern 
    und Gruppen werden kontrolliert und Unregelmäßigkeiten, die eventuell durch den Import von Daten (
    siehe weiter unten) entstanden sind, werden ausgegeben.</dd>    
    <dt><code>set user management to ro mode</code></dt>
    <dd/>    
    <dt><code>set user management to rw mode</code></dt>
    <dd>Mit diesen Kommandos können die Daten der Benutzerverwaltung eingefroren werden. Dies sollte vor dem 
    Exportieren von Daten in XML-Dateien geschehen, damit sich nicht während des Exports Daten geändert oder Objekte 
    angelegt werden.</dd>
    </dl>
     
    <p class="fett">Kommandos zum Anlegen und Ändern von Gruppen und Benutzern aus XML-Dateien</p>
     
    <dl class="kasten">
    <dt><code>create user data from file {0}</code></dt>    
    <dt><code>create group data from file {0}</code></dt> 
    <dd>Diese Kommandos erwarten eine XML-Datei als Parameter. In der Datei müssen ein oder mehrere Definitionen von 
    Benutzern oder Gruppen existieren, die dann in das System übernommen werden. Ein Benutzerpasswort muss im Klartext 
    in der definierenden XML-Datei vorliegen (für die Syntax siehe den 
    <link href="site:appdev_2_1">Programmer Guide</link>). Ist die Passwortverschlüsselung eingeschaltet 
    (siehe <link href="#mpp">mycore.private.properties</link>), so wird das Passwort bei der Ablage in 
    der Datenbank verschlüsselt. Bei der Erzeugung der Objekte wird die Korrektheit der Eingaben bezüglich vorhandener 
    Regeln überprüft. So wird z.B. getestet, ob IDs doppelt vergeben wurden.</dd>
    <dt><code>import user system from files {0} {1}</code></dt>
    <dd>Dieses Kommando dient der Rekonstruktion des User Systems aus den abgesicherten Daten der Benutzer und Gruppen. 
	Da eine direkte Abhängigkeit zwischen beiden Teilen besteht werden alle Daten mittels eines gemeinsamen
	Kommandos verarbeitet. Dabei ist {0} die Guppen- und {1} die Benutzerdatei der Sicherung.</dd>
    <dt><code>update user data from file {0}</code></dt>
    <dd>Mit diesen Befehlen werden bereits vorhandene Benutzer aktualisiert. Dabei ist zu bedenken, dass „update“ im 
    Sinne von „festsetzen auf neue Werte“ zu verstehen ist, die Objekte also nach dem update genau die Definitionen 
    haben, die in den XML-Dateien festgelegt werden. Einige der Attribute können allerdings nicht verändert werden, 
    z.B. die Erzeuger-Accounts oder das Datum der Erzeugung. Sollen diese Daten unbedingt verändert werden, dann 
    müssen die Objekte vorher gelöscht und neu angelegt werden.</dd>
    <dt><code>export all users to file {0}</code></dt>
    <dt><code>export all groups to file {0}</code></dt>
    <dt><code>export user {0} to file {1}</code></dt>
    <dt><code>export group {0} to file {1}</code></dt>
    <dd>Mit diesen Kommandos werden alle oder einzelne Objekte der Benutzerverwaltung in XML-Dateien gespeichert. 
    Passwörter von Benutzern werden bei eingeschalteter Verschlüsselung verschlüsselt abgelegt. Die so entstandenen 
    Dateien können beispielsweise mit den import-Kommandos wieder geladen werden.</dd>
    <dt><code>encrypt passwords in user xml file {0} to file {1}</code></dt>
    <dd>Passwortverschlüsselung kann durch einen Konfigurationsparameter in der Datei mycore.properties.user aktiviert 
    oder deaktiviert werden. Dieses Kommando wird benötigt, wenn man ein bestehendes System mit nicht eingeschalteter 
    Verschlüsselung auf ein System mit Verschlüsselung migrieren will. Dabei verfährt man folgendermaßen: Zunächst 
    werden alle Benutzer des alten Systems mit dem Kommando (siehe oben) export all users to file in eine XML-Datei 
    exportiert. Daraufhin wendet man encrypt passwords in user xml file {0} to file {1} auf diese Datei an und erhält 
    damit verschlüsselte Passwörter in den XML-Dateien. Mit dem Kommando (siehe oben) update user data from file 
    können diese Daten in das System reintegriert werden. Danach muss die Kommandozeilenschnittstelle geschlossen und 
    die Verschlüsselung in mycore.properties.user eingeschaltet werden.</dd>
    </dl>
     
    <p class="fett">Kommandos zum direkten Arbeiten mit Objekten der Benutzerverwaltung</p>
     
    <dl class="kasten">
    <dt><code>delete user {0}</code></dt>
    <dt><code>delete group {0}</code></dt>
    <dd>Durch Angabe des Benutzer- oder Gruppennamens werden die Objekte mit diesen Kommandos aus dem System entfernt 
    (und abhängige Objekte aktualisiert).</dd>
    <dt><code>list all users</code></dt>
    <dt><code>list user {0}</code></dt>
    <dt><code>list all groups</code></dt>
    <dt><code>list group {0}</code></dt>
    <dd>Die Kommandos dienen dem Auflisten der Objekte der Benutzerverwaltung und sind selbsterklärend.</dd>
    <dt><code>set password for user {0} to {1}</code></dt>
    <dd>Mit Hilfe dieses Befehls kann das Passwort eines Benutzers direkt über die Kommandozeile gesetzt werden. 
    Voraussetzung ist, dass die notwendigen Privilegien vorliegen.</dd>
    <dt><code>enable user {0}</code></dt>
    <dt><code>disable user {0}</code></dt>
    <dd>Mit Hilfe dieser Kommandos können einzelne Benutzer temporär deaktiviert und wieder aktiviert werden. 
    Ist ein Benutzer disabled, so kann er oder sie sich nicht mehr am System anmelden.</dd>
    <dt><code>add user {0} as member to group {1}</code></dt>
    <dt><code>remove user {0} as member from group {1}</code></dt>
    <dd>Mit diesen Kommandos kann direkt auf die Mitgliederlisten von Gruppen zugegriffen werden, indem Mitglieder 
    (sowohl Gruppen als auch Benutzer) hinzugefügt oder gelöscht werden können.</dd>
    </dl>
     
    <p class="fett">Das Sichern und Restaurieren der Benutzerverwaltungsdaten</p>
     
    <p>
    Während der Initialisierung eines MyCoRe-Systems werden ein Administrations-Account und ein Gastzugang eingerichtet 
    zusammen mit den zugehörigen primären Gruppen (siehe <link href="#superuser">Kommando <code>init superuser</code></link>). 
    Dadurch ist das Sichern und Reimportieren der gesamten Daten der Benutzerverwaltung mit etwas mehr Handarbeit 
    verbunden, weil der Administrations-Account und Gastzugang zwar mit gesichert werden, aber vor einer Restauration der 
    Daten z.B. nach einem Crash der SQL-Datenbank neu initialisiert werden müssen. Das bedeutet, dass sie bereits vorhanden sind und 
    ein <code>import user data from file</code> deswegen nicht geht. Andererseits können sich die Daten dieser beiden 
    Benutzer natürlich auch verändert haben, so dass die alten Daten wieder hergestellt werden müssen. Der folgende 
    Ablauf führt zum Ziel. Dabei stehen <code>&lt;superuser&gt;</code> und <code>&lt;superuser-group&gt;</code> bzw. 
    <code>&lt;guest&gt;</code> und <code>&lt;guest-group&gt;</code> für die in <code>mycore.private.properties</code> 
    eingetragenen Parameter für den Administrations- und Gastzugang. In der MyCoRe-Kommandozeile werden die folgenden 
    Befehle durchgeführt:
    </p>
     
    <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
     
    MyCoRe:&gt; export user &lt;superuser&gt; to file &lt;superuser.xml&gt;
    MyCoRe:&gt; export user &lt;guest&gt; to file &lt;guest.xml&gt;
    MyCoRe:&gt; export group &lt;superuser-group&gt; to file 
             &lt;superuser-group.xml&gt;
    MyCoRe:&gt; export group &lt;guest-group&gt; to file &lt;guest-group.xml&gt;
    MyCoRe:&gt; export all users to file &lt;all-users.xml&gt;
    MyCoRe:&gt; export all groups to file &lt;all-groups.xml&gt;
    
    </p><![CDATA[
    ]]></source>   
      
    <p>
    Die Benutzer <code>&lt;superuser&gt;</code> und <code>&lt;guest&gt;</code> sowie die zugehörigen Gruppen müssen 
    aus den Dateien <code>&lt;all-users.xml&gt;</code> bzw. <code>&lt;all-groups.xml&gt;</code> manuell entfernt 
    werden. Dann können alle Daten in einer neu erstellten SQL-Datenbank folgendermaßen importiert werden:
    </p>
     
    <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
     
    MyCoRe:&gt; init superuser
    MyCoRe:&gt; import user data from file &lt;all-users.xml&gt;
    MyCoRe:&gt; import group data from file &lt;all-groups.xml&gt;
    MyCoRe:&gt; update user data from file &lt;superuser.xml&gt;
    MyCoRe:&gt; update user data from file &lt;guest.xml&gt;
    MyCoRe:&gt; update group data from file &lt;superuser-group.xml&gt;
    MyCoRe:&gt; update group data from file &lt;guest-group.xml&gt;
    MyCoRe:&gt; check user data consistency
    
    </p><![CDATA[
    ]]></source>
   </section>
   
   <section>
    <title>Kommandos zur Administration des ACL-Systems</title>
     
    <dl class="kasten">
    <dt><code>load permissions data from file {0}</code></dt>
    <dd>Das Kommando lädt statische Permissions aus der Datei {0}.</dd>
    <dt><code>update permission {0} for id {1} with rulefile {2}</code></dt>
    <dt><code>update permission {0} for id {1} with rulefile {2} described by {3}</code></dt>
    <dt><code>update permission {0} for selected with rulefile {2}</code></dt>
    <dt><code>update permission {0} for selected with rulefile {2} described by {3}</code></dt>
    <dt><code>list all permissions</code></dt>
    <dd>Das Kommando listet alle statischen Permissions.</dd>
    <dt><code>delete permissions {0}</code></dt>
    <dd>Das Kommando löscht die in {0} angegebene Permission.</dd>
    <dt><code>delete all permissions</code></dt>
    <dd>Das Kommando löscht alle statischen Permissions.</dd>
    <dt><code>export all permissions to file {0}</code></dt>
    <dd>Das Kommando sichert alle statischen Permissions in die unter {0} angegebene Datei.</dd>
    </dl>
   </section>
   
   <section>
    <title>Kommandos zum Verwalten von Klassifikationen</title>
     
    <dl class="kasten">
    <dt><code>load classification from file {0}</code></dt>
    <dd>Es wird eine Klassifikation in Form einer XML-Definition aus der Datei {0} gelesen und in das System geladen.</dd>
    <dt><code>load all classifications from directory {0}</code></dt>
    <dd>Es werden alle XML-Definitionen von Klassifikationen aus einem Verzeichnis {0} gelesen und in das System geladen.</dd>
    <dt><code>update classification from file {0}</code></dt>
    <dd>Es wird eine Klassifikation in Form einer XML-Definition aus der Datei {0} gelesen. Diese überschreibt die im System bereits 
    geladene Klassifikation. Achtung, lassen Sie keine Kategorien einer bestehenden Klassifikation weg, da sonst Ihr 
    System ggf. in einen inkonsistenten Zustand kommen kann! Referenzierte Kategoien werden nicht beseitigt.</dd>
    <dt><code>update all classifications from directory {0}</code></dt>
    <dd>es werden alle XML-Definitionen von Klassifikationen aus einem Verzeichnis {0} gelesen. Diese überschreiben die im 
    System bereits geladenen Klassifikationen. Achtung, lassen Sie keine Kategorien einer bestehenden Klassifikation 
    weg, da sonst Ihr System ggf. in einen inkonsistenten Zustand kommen kann! Referenzierte Kategoien werden nicht beseitigt.</dd>
    <dt><code>delete classification {0}</code></dt>
    <dd>Es wird eine Klassifikation mit der im Parameter <code>{0}</code> angegebenen <code>MCRObjectID</code> 
    gelöscht. Sollten noch Referenzen existieren, wird das Löschen abgebrochen.</dd>
    <dt><code>export classification {0} to {1} with {2}</code></dt>
    <dd>Es wird eine Klassifikation mit der im Parameter <code>{0}</code> angegebenen <code>MCRObjectID</code> 
    in eine Datei mit dem im Parameter <code>{1}</code> angegeben Namen gespeichert. Es wird zur Transformation 
    der zu speichernden Daten das Stylesheet <code>{2}-classification.xsl</code> unter 
    <code>$DOCPORTAL_HOME/build/xsl</code> verwendet.</dd>
    <dt><code>export all classifications to directory {0} with {1}</code></dt>
    <dd>Es werden alle im System befindlichen Klassifikationen in Dateien des Verzeichnisses mit dem im Parameter 
    <code>{0}</code> angegeben Namen gespeichert. Es wird zur Transformation der zu speichernden Daten das Stylesheet <code>{1}-classification.xsl</code> unter 
    <code>$DOCPORTAL_HOME/build/xsl</code> verwendet.</dd>
    <dt><code>count classification children of {0}</code></dt>
    <dd>Es werden die Referenzen zu den Kategorien der im Parameter <code>{0}</code> angegebenen Klassifikation mit der <code>MCRObjectID</code> gezählt.</dd>
    <dt><code>list all classifications</code></dt>
    <dd>Das Kommando listet alle in der Datenbasis gespeicherten Klassifikationen aus.</dd>
    <dt><code>list classification {0}</code></dt>
    <dd>Das Kommando listet die unter der <code>MCRObjectID</code> in der Datenbasis gespeicherte Klassifikation mit alle Kategorien aus.</dd>
    </dl>
   </section>
   
   <section>
    <title>Kommandos zur Verwaltung der Objekte</title>
    <dl>
    <dt><code>load object from file {0}</code></dt>
    <dt><code>load all objects from directory {0}</code></dt>
    <dt><code>load derivate from file {0}</code></dt>
    <dt><code>load all derivates from directory {0}</code></dt>
    <dd>die Kommandos laden die Metadaten-Objekte oder die Derivate inklusive ihrer Bilder und Dokumente von einer 
    Quelldatei oder einem Quellverzeichnis in das System.</dd>
    <dt><code>update object from file {0}</code></dt>
    <dt><code>update all objects from directory {0}</code></dt>
    <dt><code>update derivate from file {0}</code></dt>
    <dt><code>update all derivates from directory {0}</code></dt>
    <dd>die Kommandos laden die Metadaten-Objekte oder die Derivate inklusive ihrer Bilder und Dokumente von einer 
    Quelldatei oder einem Quellverzeichnis in das System. Dabei werden die bestehenden Daten bis auf 
    Strukturinformationen überschrieben. Strukturinformationen sind ggf. Daten über Vater-Kind- oder 
    Objekt-Derivate-Beziehungen.</dd>
    <dt><code>export object {0} to directory {1} with {2}</code></dt>
    <dt><code>export object from {0} to {1} to directory {2} with {3}</code></dt>
    <dt><code>export all objects of type {0} to directory {1} with {2}</code></dt>
    <dt><code>export derivate of {0} to directory {1}</code></dt>
    <dt><code>export derivate from {0} to {1} to directory {2}</code></dt>
    <dt><code>export all derivates to directory {0} with {1}</code></dt>
    <dd>die Kommandos speichern ein oder mehrere Metadaten-Objekte oder Derivate in ein Verzeichnis ab. Für die 
    Parameter <code>{0}</code> und <code>{1}</code> bzw. <code>{0}</code> sind <code>MCRObjectIDs</code> anzugeben. 
    Es werden zur Transformation der zu speichernden Daten die Stylesheets <code>{3}-object.xsl</code> und 
    <code>{3}-derivate.xsl</code> unter <code>$DOCPORTAL_HOME/stylesheets</code> verwendet. 
    Standard ist <code>save-object.xsl </code> bzw. <code>save-derivate.xsl.</code></dd>
    <dt><code>delete object {0}</code></dt>
    <dt><code>delete object from {0} to {1}</code></dt>
    <dt><code>delete derivate {0}</code></dt>
    <dt><code>delete derivate from {0} to {1}</code></dt>
    <dd>die Kommandos löschen einzelnen Metadaten-Objekte oder Derivate oder ganze Gruppen von selbigen. 
    Alle Parameter müssen dabei <code>MCRObjectID</code>'s sein.</dd>
    <dt><code>delete all objects of type {0}</code></dt>
    <dd>das Kommando löscht alle eingestellten Objekte eines bestimmten Datentypes.</dd>
    <dt><code>delete all derivates</code></dt>
    <dd>das Kommando löscht alle eingestellten Derivate.</dd>
    <dt><code>show loadable derivate of {0} to directory {1}</code></dt>
    <dd>das Kommando speichert den Content des Derivates vom Objekt mit der <code>MCRObjectID {0}</code> in das 
    Verzeichnis <code>{1}</code>.</dd>
    </dl>
   </section>
   
   <section>
    <title>Kommandos zur Arbeit mit dem ImageViewer</title>
    <dl>
    <dt><code>clear image cache</code></dt>
    <dd>das Kommando löscht den Image Cache.</dd>
    <dt><code>create image cache for file {0}</code></dt>
    <dd>das Kommando erzeugt den Image Cache für die Datei <code>{0}</code>.</dd>
    <dt><code>remove image cache for file {0}</code></dt>
    <dd>das Kommando löscht den Image Cache für die Datei <code>{0}</code>.</dd>
    <dt><code>create image cache for derivate {0}</code></dt>
    <dd>das Kommando erzeugt den Image Cache für das gesamte Derivate <code>{0}</code>.</dd>
    <dt><code>remove image cache for derivate {0}</code></dt>
    <dd>das Kommando löscht den Image Cache für das gesamte Derivate <code>{0}</code>.</dd>
    </dl>
    <note label="Hinweis">
    Beachten Sie, dass diese Kommandos nur funktionieren, wenn Sie die notwendigen 
    Schritte aus Kapitel 6.2.2 -&gt; „Aktivieren des Cache“ durchgeführt haben.</note>
   </section>
   
   <section>
    <title>Anfragen an das System per Kommandozeile</title>
    <dl>
    <dt><code>run query from file {0}</code></dt>
    <dd>das Kommando startet eine Anfrage mit einer Query, welche im File <code>{0}</code> steht.</dd>
    <dt><code>run local query {0}</code></dt>
    <dd>das Kommando startet eine Anfrage gegen das lokale System mit einer Query, welche im String <code>{0}</code> 
    steht.</dd>
    <dt><code>run distributed query {0}</code></dt>
    <dd>das Kommando startet eine Anfrage gegen alle bekannten Systeme mit einer Query, welche im String <code>{0}</code> 
    steht.</dd>
    </dl>
   </section>
   
   <section>
    <title>Sonstige Kommandos</title>
    <dl>
    <dt><code>repair metadata search of type {0}</code></dt>
    <dt><code>repair metadata search of ID {0}</code></dt>
    <dd>die Kommandos lesen die XML-SQL-Tabellen und reparieren zerstörte Metadaten-Suchindizes. Das Kommando kann 
    auch beim Wechsel eines <code>SearchStore</code> angewendet werden.</dd>
    <dt><code>repair derivate search of type derivate</code></dt>
    <dt><code>repair derivate search of ID {0}</code></dt>
    <dd>die Kommandos lesen die gespeicherten Datenobjekte und reparieren zerstörte Volltext-Suchindizes. Das Kommando 
    kann auch beim Wechsel eines <code>SearchStore</code> angewendet werden.</dd>
    <dt><code>get last ID for base {0}</code></dt>
    <dt><code>get next ID for base {0}</code></dt>
    <dt><code>show last object ID for base {0}</code></dt>
    <dt><code>show next object ID for base {0}</code></dt>
    <dd>die Kommandos liefern die nächste freie oder die letzte <code>MCRObjectID</code> für eine vorgegeben 
    <code>MCRObjectID</code>-Basis zurück. Die Basis besteht aus Projekt- und Type-String in der Form 
    <code>project_type</code>. (Siehe Abschnitt zur <link href="#MCRO">MCRObjectID</link>)</dd>
    <dt><code>check file {0}</code></dt>
    <dd>prüft eine im Parameter <code>{0}</code> angegebene Datei mittels XML-Parser.</dd>
    <dt><code>init hibernate</code></dt>
    <dd>das Kommando initialisiert den Hibernate-SQL-Store. Das Kommando ist nur einmal erforderlich!</dd>
    </dl>
   </section>
   
  </section>
  
  <section>
   <title>Das SimpleWorkflow-System zur interaktiven Autorenarbeit</title>
   <p>
   Das SimpleWorkflow-System wurde entwickelt, um mit einem einfachen Werkzeug die interaktive Autoren- und 
   Editorenarbeit zu ermöglichen und damit eine sinnvolle Arbeit mit einer MyCoRe-Applikation zu ermöglichen. Es ist 
   jedoch so konzipiert, dass es auch über eine Servlet-Schnittstelle in größere Workflow-Engines eingebunden werden 
   kann. Einen Workflow im eigentlichen Sinne gibt es nur sehr eingeschränkt und in einfachem Ablauf. Weiterführende 
   organisatorische Maßnahmen waren auch nicht Ziel dieser Entwicklung.
   </p>
   <p>
   Die Komponente wurde in ein Modul verlagert und ist somit durch andere Komponenten ersetzbar. 
   Eine genaue Beschreibung der Details zur Integration finden Sie im 
   <link href="site:appdev_2_1">Programmer Guide</link>. Die wichtigsten Merkmale dieses Moduls sind:
   </p>
   <ul>
   <li>Mit dem System kann ein einfacher Eingabe- und Bearbeitungs-Dialog realisiert werden.</li>
   <li>Eingabe und Bearbeitung werden durch eine Rechtekontrolle mittels des ACL-System realisiert. 
       Nur berechtigte Benutzer dürfen die Daten verändern.</li>
   <li>Die Zwischenspeicherung aller eingehenden Daten erfolgt zuerst auf einem Plattenbereich, so dass bei 
       Fehlern ggf. auch der Administrator direkt eingreifen kann. Daten die erfolgreich in den Server geladen 
       wurden, werden aus diesem Plattenbereich gelöscht.</li>
   <li>Das System benutzt die MyCoRe-interne Editor-Komponente.</li>
   <li>Das System basiert auf einer Reihe von Servlets, XML-Seiten und Stylesheets, sowie der Einbindung in die 
       Editor-Formulare.</li>
   <li>Alle Funktionen werden über ein einheitliches Servlet initiiert (<code>MCRStartEditorServlet</code>). 
       Die möglichen Aufrufe sind weiter unten notiert.</li>
   </ul>
   
   <img src="images/userguide_simpleworkflow_1.jpg" alt="Funktionsschema SimpleWorkflow"/>
    <p class="klein"><strong>Abbildung 6.1:</strong> Funktionsschema des SimpleWorkflow</p>  
   
   <section>
    <title>Das MCRStartEditorServlet</title>
    <p>
    Dieses Servlet ist der Einstiegspunkt für die Nutzung des SimpleWorkflow-Systems. Von ihm aus werden alle 
    Verarbeitungsprozesse angestoßen. Das Servlet seinerseits startet dann wieder Web-Dialoge oder führt selbstständig 
    Aktionen aus. Dabei sind die folgenden Startparameter von Interesse:
    </p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Parameter</th>
    <th colspan="1" rowspan="1">Bedeutung</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">todo</td>
    <td colspan="1" rowspan="1">Zeigt an, welche Aktion auszuführen ist.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">type</td>
    <td colspan="1" rowspan="1">Gibt den Datenmodell-Typ des Metadaten-Objektes an.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">step</td>
    <td colspan="1" rowspan="1">Gibt den Verarbeitungsschritt an (z. B. author, editor, commit).</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">layout</td>
    <td colspan="1" rowspan="1">Gestattet eine verfeinerte Angabe des Verarbeitungsschrittes (ist optional).</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">tf_mcrid</td>
    <td colspan="1" rowspan="1">Enthält eine MCRObjektID, welche neu hinzugekommen und/oder dem System noch nicht bekannt ist. 
    Die Gültigkeit wird geprüft.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">Enthält eine MCRObjectID, welche aus einem Datensatz oder ähnlichen Quellen extrahiert wurde und gültig 
    sein sollte.</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">re_mcrid</td>
    <td colspan="1" rowspan="1">Enthält eine weitere MCRObjectID, welche aus einem Datensatz oder ähnlichen Quellen extrahiert wurde und 
    gültig sein sollte (z.B. zugehöriger Metdatensatz).</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">extparm</td>
    <td colspan="1" rowspan="1">Erweiterungsparameter, wie in einigen wenigen Fällen benutzt.</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 6.3:</strong> Parameter des MCRStartEditorServlets</p>
    
    <p>
    Die nächsten Tabellen sollen eine Übersicht der möglichen Aktionen geben. Jede Aktion ist dabei an eine 
    entsprechende Berechtigung gebunden, welche der aktuelle Benutzer gerade haben muss. Hat er sie nicht, so wird 
    seine Aktion abgewiesen und nicht ausgeführt. Dabei wird noch nach dem Datenmodell-type unterschieden, d.h. 
    ein Benutzer muss für genau diesen type auch die Berechtigung haben. Die Aktionen unterscheiden sich in dem 
    Ziel-Store, todo=w... steht für den Plattenbereich; todo=s... arbeitet mit den bereits eingestellten Server-Daten. 
    Der Parameter layout ist optional und dient der Verfeinerung der möglichen Arbeitsschritte. Während alle Aktionen, 
    die mit einem w beginnen auf dem Plattenbereich (workflow) arbeiten, veranlassen alle Aktionen mit s einen Zugriff 
    und Änderungen im Server-System.
    </p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Aktion</th>
    <th colspan="1" rowspan="1">todo</th>
    <th colspan="1" rowspan="1">ID</th>
    <th colspan="1" rowspan="1">Permission</th>
    <th colspan="1" rowspan="1">ruft</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Anlegen neuer Metadaten </td>
    <td colspan="1" rowspan="1">wnewobj</td>
    <td colspan="1" rowspan="1">tf_mcrid</td>
    <td colspan="1" rowspan="1">create-type</td>
    <td colspan="1" rowspan="1">editor_form_author-type[-layout].xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Anlegen eines Neuen Derivates </td>
    <td colspan="1" rowspan="1">wnewder</td><td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">create-type</td>
    <td colspan="1" rowspan="1">MCRStartEditorServlet?todo=waddfile</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Hinzufügen neuer Dateien aus dem Upload</td>
    <td colspan="1" rowspan="1">waddfile</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writewf</td>
    <td colspan="1" rowspan="1">fileupload_new.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Bearbeiten von Metadaten </td>
    <td colspan="1" rowspan="1">weditobj</td><td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">writewf</td>
    <td colspan="1" rowspan="1">editor_form_type_[layout_]editor.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Bearbeiten des Label eines Derivate-Metadaten-Satzes</td>
    <td colspan="1" rowspan="1">weditder</td><td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writewf</td>
    <td colspan="1" rowspan="1">editor_form_derivate_editor.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Löschen aller Daten eines Objektes </td>
    <td colspan="1" rowspan="1">wdelobj</td>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">deletewf</td>
    <td colspan="1" rowspan="1">editor_type_editor.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Löschen eines Derivates </td>
    <td colspan="1" rowspan="1">wdelder</td>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">deletewf</td>
    <td colspan="1" rowspan="1">editor_type_editor.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Löschen einer Datei aus einem Derivate</td>
    <td colspan="1" rowspan="1">wdelfile</td>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">writewf</td>
    <td colspan="1" rowspan="1">editor_type_editor.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Setzen der Hauptdatei in einem Derivate</td>
    <td colspan="1" rowspan="1">wsetfile</td><td colspan="1" rowspan="1">se_mcrid</td><td colspan="1" rowspan="1">writewf</td>
    <td colspan="1" rowspan="1">editor_type_editor.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Hochladen eines Datensatzes vom Plattenbereich zum Server</td>
    <td colspan="1" rowspan="1">wcommit</td>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRQueryServlet mit der ID mit mode=ObjectMetadata</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 6.4:</strong> Mögliche Aktionen mit dem MCRStartEditorServlet auf dem Plattenbereich</p>
    
    <table>
    <tr>
    <th colspan="1" rowspan="1">Aktion</th>
    <th colspan="1" rowspan="1">todo</th>
    <th colspan="1" rowspan="1">ID</th>
    <th colspan="1" rowspan="1">Permission</th>
    <th colspan="1" rowspan="1">ruft</th>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Bearbeiten der Metadaten</td>
    <td colspan="1" rowspan="1">seditobj</td>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRQueryServlet mit der ID mit mode=ObjectMetadata</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Bearbeiten des Label der Derivate-Metadaten </td>
    <td colspan="1" rowspan="1">seditder</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">editor_form_commit_derivate.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Löschen eines Datenobjekts</td>
    <td colspan="1" rowspan="1">sdelobj</td>
    <td colspan="1" rowspan="1">se_mcrid</td>
    <td colspan="1" rowspan="1">deletedb</td>
    <td colspan="1" rowspan="1">editor_deleted.xml</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Löschen eines Derivates von einem Datenobjekt</td>
    <td colspan="1" rowspan="1">sdelder</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">deletedb</td>
    <td colspan="1" rowspan="1">MCRQueryServlet mit der ID mit mode=ObjectMetadata</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Hinzufügen eines neuen Derivates zu einem Datenobjekt des Servers; Zwischenablage der Daten auf dem 
    Plattenbereich</td>
    <td colspan="1" rowspan="1">snewder</td>
    <td colspan="1" rowspan="1">re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRStartEditorServlet?todo=saddfile</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Hinzufügen von Daten zu einem Derivate aus dem Server; Zwischenablage der Daten auf dem Plattenbereich</td>
    <td colspan="1" rowspan="1">snewfile</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRStartEditorServlet?todo=saddfile</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Upload von Datenobjekten in die Zwischenablage</td>
    <td colspan="1" rowspan="1">saddfile</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRStartEditorServlet?todo=scommitder</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Setzen Des Label in einem Derivate</td>
    <td colspan="1" rowspan="1">ssetlabel</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRQueryServlet mit der ID mit mode=ObjectMetadata</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">Setzen der Main File Markierung im Derivate</td>
    <td colspan="1" rowspan="1">ssetfile</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRFileNodeServlet mit der ID des Derivates</td>
    </tr>
    <tr>
    <td colspan="1" rowspan="1">löschen einer Datei aus einem Derivate</td>
    <td colspan="1" rowspan="1">sdelfile</td>
    <td colspan="1" rowspan="1">se_mcrid re_mcrid</td>
    <td colspan="1" rowspan="1">writedb</td>
    <td colspan="1" rowspan="1">MCRFileNodeServlet mit der ID des Derivates</td>
    </tr>
    </table>
    <p class="klein"><strong>Tabelle 6.5:</strong> Mögliche Aktionen mit dem MCRStartEditorServlet im Server</p>
    
   </section>
   
   <section>
    <title>Abläufe für neue Datenobjekte</title>
    <p>
    Die Abläufe für die Eingabe neuer Datensätze sind praktisch für alle Datenmodelle gleich. Lediglich die Anbindung 
    der Derivate an die Metadaten-Objekte ist nicht immer gegeben. Das hängt allein an der Gestaltung des jeweiligen 
    Datenmodell-Konzeptes für ein Projekt (z.B. haben Personendaten im DocPortal-Projekt keine eigenen Derivate). 
    Wird beim SimpleWorkflow ein neues Objekt eingestellt, so befinden sich alle relevanten Daten vorerst auf einem 
    Plattenbereich, der über die Konfiguration festgelegt wird. Erst wenn das Commit (Laden) zum Server-System ausgeführt 
    wurde, werden die Daten von diesem Zwischenspeicher wieder gelöscht. Jeder Datenmodell-type hat dabei in der Regel 
    ein eigenes Verzeichnis innerhalb des Workflow-Plattenbereiches.
    </p>    
   </section>
   
   <section>
    <title>Abläufe für Datenobjekte aus dem Server</title>
    <p>
    Wurden Datenobjekte in den Server eingebracht, so steht Benutzern, welche berechtigt sind, die Möglichkeit einer 
    Änderung der Daten und/oder das Löschen der selben frei. Für das Bearbeiten der Daten werden diese zwischenzeitlich 
    auf dem Plattenbereich gespeichert. Bei erfolgreicher Beendigung einer Aktion werden die temporären Daten wieder vom 
    Plattenbereich gelöscht. Im Falle eines Fehlers kann über den Zugriff auf den Plattenbereich (Workflow) und 
    entsprechender Aktionen der Fehler behoben werden. Alle Commits sind als Update ausgelegt, so dass ältere Versionen 
    im Server auch bei einem Commit vom Workflow als Folge eines Fehlers überschrieben werden. Einzelheiten zu den 
    Abläufen finden Sie im <link href="site:appdev_2_1">Programmer Guide</link>. 
    </p>
   </section>
   
   <section>
    <title>Einbindung in das Access Control List - System</title>
    <p>
    In den Bearbeitungsstufen gibt es jeweils einen Button, welcher es gestattet, die ACL's (Access Control Lists – 
    Zugriffslisten) zu ändern. Dies geschieht über zusätzliche Eingabemasken. Alle Änderungen wirken direkt und sofort.
    </p>
   </section>
   
  </section>
  
  <section>
   <title>Der Klassifikationseditor</title>
   <p>
   Eine Klassifikation in MyCoRe ist eine hierarchische festgeschriebene Darstellung von Kategorien, welche nach 
   bestimmten Ordnungsprinzipien und Eigenschaften gestaltet ist.
   </p>
   <p>
   Die Menge der Klassen/Kategorienamen bilden ein kontrolliertes Vokabular, das es ermöglicht, Dokumente nach den 
   Kriterien der Klassifikation zu ordnen. In Bibliotheken spielen Klassifikationen eine große Rolle.
   </p>
   <p>
   In den Metadaten der Dokumente können beliebige Klassifikationen und Kategorien dem Dokument zugeordnet werden. 
   </p>
   <p>
   Typische Klassifikationen wie Dokumentformate, Dokumententyp, Herkunft für die formale Zuordnung von Dokumenten aber 
   auch DDC und Pacs für die inhaltliche Klassifizierung werden von MyCoRe im Sample bereits mitgeliefert. 
   </p>
   <p>
   Umgekehrt bietet MyCoRe mit dem Klassifikationsbrowser die Möglichkeit über Klassifikationen zu navigieren und so zu 
   den zugehörigen Dokumenten zu gelangen.
   </p>
   <p>
   Syntax und Beschreibung von Klassifikationen wurden bereits in <link href="#chapter_5.5">Kapitel 5.5</link> dargestellt.   
   </p>
   
   <img src="images/classification.png" alt="Auswahl Klassifikationen"/>
    <p class="klein"><strong>Abbildung 6.2:</strong> Auswahl der zu bearbeitenden Klassifikation</p> 
       
   <section>
    <title>Start des Klassifikationseditors</title>
    <p>
    Der Editor wird über den Klassifikationsbrowser mit dem Parameter <code>mode=edit</code> gestartet. 
    </p>
    <p>
    Beispiel:<br/>
    <code>http://localhost:8080/docportal/browse?mode=edit</code>
    </p>
    <p>
    Erfüllen die Privilegien des Nutzers die Anforderungen, erhält man zunächst eine Liste aller im System installierten 
    Klassifikationen, also auch die, die nicht über den Klassifikationsbrowser eingebunden sind. Die nicht eingebundenen 
    Klassifikationen werden mit den Parametern aus dem Default-Block gesteuert! 
    </p>
   </section>
   
   <section>
    <title>Operationen des Klassifikationseditors</title>
    
    <note label="Hinweis">
    Klassifikationen werden im Editiermodus grundsätzlich unsortiert angezeigt, da sonst die Verschiebeoperationen für 
    Kategorien nicht sinnvoll nutzbar sind.</note>
   </section>
   
   <section>
    <title>Klassifikationen</title>
    
    <p class="fett">Neue Klassifikation erstellen</p>
    
    <p>
    Über den Button [neue Klassifikation erstellen] kann eine Klassifikation angelegt werden. Dazu ist es notwendig 
    mindestens ein Label für die Klassifikation anzugeben. Es können Label und zugehörige Beschreibungen in 
    verschiedenen Sprachen angelegt werden, sowie eine URL.<br/>
    Die ID der Klassifikation wird vom System vergeben.
    </p>
    
    <p class="fett">Klassifikation importieren</p>
    
    <p>
    Über den Button [Klassifikation importieren] kann eine neue Klassifikation vom Dateisystem in MyCoRe importiert 
    werden, oder eine bereits im System vorhandene Klassifikation aktualisiert werden. Ist der Import der 
    Klassifikation nicht erfolgreich (z.B. XML ist nicht valide, oder die zu aktualisierende Klassifikation existiert 
    nicht im System) erfolgt eine Fehlermeldung und die Klassifikation wird nicht importiert.<br/>Bei Erfolg wird 
    automatisch wieder auf die Liste aller im System vorhandenen Klassifikationen zurückgesprungen.
    </p>
    <dl>
    <dt><img src="images/export.png" alt="Export Klassifikationen"/> Export der Klassifikation</dt>
    <dd>Mit dieser Funktion kann die ausgewählte Klassifikation in einem Extra-Browserfenster im XML-Format angezeigt 
    werden oder auch über die rechte Maustaste auf dem lokalen Dateisystem gespeichert werden.</dd>
    <dt><img src="images/edit.png" alt="Editieren Klassifikationen"/> Editieren der Klassifikation</dt>
    <dd>Die Beschreibungsdaten der ausgewählten Klassifikation können über ein Editorformular geändert werden. Es können 
    weitere Label in anderen Sprachen hinzugefügt werden. Die ID kann nicht verändert werden. Ein Label muss für die 
    Klassifikation mindestens belegt sein.</dd>
    <dt><img src="images/delete.png" alt="Löschen Klassifikationen"/> Löschen der Klassifikation</dt>
    <dd>Die ausgewählte Klassifikation wird, inklusive der eventuell vorhandenen Kind-Kategorien gelöscht, nachdem 
    geprüft wurde ob es keine Referenzen zu Objekten gibt. Im Browser ist das durch die Anzeige der Dokumentanzahl 
    bereits sichtbar. Klassifikationen, bei denen eine Anzahl&gt;0 gezählt wurde besitzen daher keinen [Delete] Button.<br/>
    Im Erfolgsfall wird wieder die aktuelle Klassifikationsliste ohne das gelöschte Klassifikations-Item angezeigt.
    </dd>
    </dl>    
   </section>
   
   <section>
   <title>Kategorien</title>
   <p>
   Beim Klick auf eine der aufgelisteten Klassifikationen wird die erste Ebene der Klassifikation mit den zugehörigen 
   Kategorien geöffnet. 
   </p>
   
   <img src="images/category.png" alt="Kategorien bearbeiten"/>
    <p class="klein"><strong>Abbildung 6.3:</strong> Einzelne Kategorien einer Klassifikation bearbeiten</p>  
      
   <p>
   Die aktuell manipulierte Kategorie wird zur besseren Übersicht farblich hervorgehoben.
   </p>
   <p>
   Für Kategorien gibt es folgende Aktionsmöglichkeiten:
   </p>
   <dl>
   <dt><img src="images/category_new.png" alt="Kategorie anlegen"/> Neue Kategorie anlegen</dt>
   <dd>Unter der ausgewählten Kategorie wird eine neue Kategorie angelegt. Dazu wird ein Editorformular für die Angaben 
   von ID, Label und Beschreibung geöffnet. Die Felder sind zunächst mit den Werten der Vorgängerkategorie 
   (also der Ausgewählten unter der die neue Kategorie angelegt werden soll.) belegt.<br/>
   Beim Abspeichern wird die Eindeutigkeit einer Kategorie-ID für die Klassifikation geprüft. 
   Ist sie nicht eindeutig erfolgt einen Fehlermeldung. Im Erfolgsfall wird wieder die aktuelle Klassifikationsebene 
   mit dem neuen Kategorie-Item angezeigt. </dd>   
   <dt><img src="images/category_edit.png" alt="Kategorie bearbeiten"/> Editieren der Kategorie</dt>
   <dd>Die ausgewählte Kategorie wird im das Editorformular geladen. Die Angaben von ID, Label und Beschreibung können 
   manipuliert werden.<br/>
   Beim Abspeichern wird die Eindeutigkeit einer Kategorie-ID für die Klassifikation geprüft. Ist sie nicht eindeutig 
   erfolgt einen Fehlermeldung. Im Erfolgsfall wird wieder die aktuelle Klassifikationsebene mit dem modifizierten 
   Kategorie-Item angezeigt.<br/>
   Die Kind-Knoten, die an der Kategorie möglicherweise hängen werden nicht geändert.
   </dd>
   
   <dt><img src="images/category_delete.png" alt="Kategorie löschen"/> Löschen der Kategorie</dt>
   <dd>Die ausgewählte Kategorie wird, inklusive der eventuell vorhandenen Kind-Kategorien gelöscht, nachdem geprüft 
   wurde ob es keine Referenzen zu Objekten gibt. Im Browser ist das durch die Anzeige der Dokumentanzahl bereits 
   sichtbar. Kategorien, bei denen eine Anzahl &gt;0 gezählt wurde besitzen daher keinen Delete–Button.<br/>
   Im Erfolgsfall wird wieder die aktuelle Klassifikationsebene ohne das gelöschte Kategorie-Item angezeigt. </dd>
   <dt><img src="images/category_move.png" alt="Kategorie verschieben"/> Verschieben der Kategorie</dt>
   <dd>Eine Kategorie kann in der Hierarchie im Baum verschoben werden. Je nach Position im Baum sind die 
   Verschiebemöglichkeiten Aufwärts, Abwärts, nach Links und Rechts möglich.<br/>
   <em>Auf- und Abwärts</em>-Verschieben verändert die Position der jeweils gewählten Kategorie um 1 Stelle in der 
   aktuellen Ebene.<br/>
   Die <em>Rechts</em>-Verschiebung bewirkt, dass die Kategorie zur Kind-Kategorie der darüber positionierten 
   Kategorie wird. Dabei werden auch alle in der ausgewählten Kategorie eventuell vorhandenen Kindelemente mit 
   verschoben. Die Kategorie wird quasi in die darüber positionierte Kategorie hinein geschoben und dort an das 
   Ende dieser Ebene angehangen, also eine Ebene tiefer angelegt.<br/>
   Die <em>Links</em>-Verschiebung bewirkt das Gegenteil der Rechts-Verschiebung, dass die Kategorie aus der Ebene in 
   die darüber liegende Ebene geschoben wird. Dabei werden auch alle in der ausgewählten Kategorie eventuell 
   vorhandenen Kindelemente mit verschoben. Die Kategorie wird quasi in die darüber liegende Ebene geschoben und dort 
   an das Ende der Ebene angehangen.</dd>
   </dl>
  </section>
  
 </section>
 
</section>

<section id="chapter_07">
  <title>Möglichkeiten zur Nutzung optionaler Komponenten</title>
  <p>
  MyCoRe bzw. DocPortal biete neben den in der Standardinstallation verwendeten Komponenten noch eine Reihe von 
  optionalen Zusätzen. Auch der Einsatz von anderer externer Software wie Tomcat / Apache / Speicher-Backends u. v. m. 
  soll in diesem Kapitel besprochen werden.
  </p>
  
  <section>
   <title>Die Zusammenarbeit mit anderen DocPortal-Installationen</title>
   <p>
   Das MyCoRe-System ist so konzipiert, dass hinsichtlich der Metadaten gleichartige Installationen miteinander 
   arbeiten und von einer gemeinsamen Oberfläche (Frontend) abgefragt werden können. Hierzu müssen die Remote-Instanzen 
   definiert werden. Auch die eigene Installation kann über diesen Weg abgefragt werden. Das ist in der 
   Beispielinstallation auch schon vorgesehen. Die Remote-Suche nutzt dabei die WebServices Komponenten von MyCoRe. 
   Das installiert DocPortal-Sample gestattet grundsätzlich auch eine Suche über den WebService-Dienst gegen den 
   localhost.
   </p>
   <p>
   Die Konfiguration ist denkbar einfach, es sind alle Hosts, für die eine Remote-Abfrage angeboten werden soll, 
   in die Datei <code>$DOCPORTAL_HOME/config/hosts.xml</code> einzutragen. Nach einem <code>ant webapps</code> sind die 
   Hosts dann mittels der Suchmasken durchsuchbar.
   </p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
       
      &lt;?xml version="1.0" encoding="UTF-8"?&gt;
       &lt;hosts xmlns="http://www.mycore.org/"&gt;   
        &lt;host alias="remote" 
          url=" &lt;a title="" href="http://localhost:8291/"&gt;http://localhost:8291/&lt;/a&gt;&lt;/code&gt;&lt;code&gt;"
          class="org.mycore.services.fieldquery.MCRQueryClientWebService"
          access="webservice"
          servicepath="services/MCRWebService"
          staticpath="receive/"&gt; 
          &lt;label xml:lang="de"&gt;Lokal via WebService&lt;/label&gt; 
          &lt;label xml:lang="en"&gt;Local via WebService&lt;/label&gt; 
        &lt;/host&gt;
        &lt;host alias="leipzig" 
          url="http://mycoresamplelinux.dl.uni-leipzig.de/"
          class="org.mycore.services.fieldquery.MCRQueryClientWebService"
          access="webservice"
          servicepath="services/MCRWebService"
          staticpath="receive/"&gt; 
          &lt;label xml:lang="de"&gt;Universität Leipzig&lt;/label&gt; 
          &lt;label xml:lang="en"&gt;University of Leipzig&lt;/label&gt; 
        &lt;/host&gt;
       &lt;/hosts&gt;
   
   </p><![CDATA[
   ]]></source>
   <p>
   Von den Entwicklern des MyCoRe-Projektes wird exemplarisch eine DocPortal-Installation bereitgehalten. Diese ist im 
   Konfigurationsfile <code>hosts.xml</code> notiert und sollten in der Regel verfügbar sein. Die Attribute für einen 
   Host bedeuten im Einzelnen:
   </p>
   <ul>
   <li>alias – der im MyCoRe-System zu verwendende Alias für einen externen Host</li>
   <li>url – die Basis-URL eines externen Hosts</li>
   <li>class – die MyCoRe-Java-Klasse, die den externen Zugriff realisiert</li>
   <li>access – einen Typ-String für die Zugriffsform</li>
   <li>servicepath – die URL-Erweiterung als Pfad auf dem externen Systembibliotheken</li>
   <li>staticpath – die URL-Erweiterung für die Darstellung der statischen URL des Objektes auf dem entfernten Rechner</li>
   </ul>
   
   <table>
   <tr>
   <th colspan="1" rowspan="1">Alias</th>
   <th colspan="1" rowspan="1">URL</th>
   <th colspan="1" rowspan="1">Port</th>
   <th colspan="1" rowspan="1">Standort</th>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">remote</td>
   <td colspan="1" rowspan="1">http://localhost:8291/</td>
   <td colspan="1" rowspan="1">8291</td>
   <td colspan="1" rowspan="1">lokale Installation</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">leipzig</td>
   <td colspan="1" rowspan="1">http://mycoresamplelinux.dl.uni-leipzig.de/</td>
   <td colspan="1" rowspan="1">8291</td>
   <td colspan="1" rowspan="1">Uni Leipzig</td>
   </tr>
   </table>
   <p class="klein"><strong>Tabelle 7.1:</strong> Feste Test-Instanzen für das MyCoRe-Beispiel</p>
   
  </section>
  
  <section>
   <title>Die Integration des Bildbetrachter-Modules</title>
   <p>
   DocPortal bietet einen komfortablen Bildbetrachter, um Dateien verschiedener Formate anzuzeigen. Dazu sind die 
   beiden Module „Imaging“ aus dem MyCoRe-Kern und das Modul „IView“ aus DocPortal zu installieren. Dieser Abschnitt 
   beschreibt die notwendigen Arbeiten, wenn Sie die Module nicht bei der Erstinstallation mit integriert haben.
   </p>
   
   <note label="Hinweis"> Aus lizenzrechtlichen Gründen können die Module nicht direkt in die Distribution eingebunden 
   werden, weil sie auf Sun's Java-Bibliothek JAI(JDK) beruhen. Der Download der Software muss vom jeweiligen Nutzer 
   selbst durchgeführt werden. Eine direkte Integration der *.jar Files in MyCoRe ist leider nicht gestattet.</note>
   
   <p>
   Die Einbindung des Bildbetrachters erfolgt in zwei Schritten:
   </p>
   <ol>
   <li>Integration des „Module-Imaging“ im MyCoRe-Kern</li>
   <li>Integration des „Module-IView“ in der DocPortal-Anwendung</li>
   </ol>
   <p>
   Beide Phasen wurde bereits ausführlich in den Abschnitten des <link href="#chapter_4">Kapitels 4</link> beschrieben. 
   </p>
   
   <note label="Hinweis">Es wird empfohlen MCR-IView mit dem eingebauten Cache zu benutzen. So kann sichergestellt 
   werden, dass hochaufgelöste Bilder ohne Verzögerungen betrachtet werden können.</note>
   
   <p>In der Datei <code>$DocPortal_HOME/modules/iview/config/mycore.iview.properties</code> sind die entsprechenden 
   Entstellungen zur Nutzung des Cache per Standard schon vorgenommen. Änderungen können bei Bedarf durchgeführt 
   werden (Detaillierte Informationen zur Cache-Konfiguration können im 
   <link href="site:appdev_2_1">Programmer Guide</link> nachgelesen werden).
   </p>   
  </section>
  
  <section>
   <title>Nutzung der OAI Schnittstelle</title> 
   
   <section>
    <title>Grundlagen</title>
    <p>
    Die <link title="" href="http://www.openarchives.org/">Open Archives Initiative</link> hat 2001 ein offenes Protokoll für 
    das Sammeln (Harvesting) von Metadaten vorgestellt. Dies geschah vor dem Hintergrund, dass gängige Suchmaschinen 
    im WWW für die wissenschaftliche Nutzung wegen der i.d.R. unüberschaubaren Treffermenge und der fehlenden Qualität 
    der angebotenen Treffer kaum nutzbar sind. Das Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) 
    liegt mittlerweile in der Version 2.0 vor. Das OAI-PMH dient zur Kommunikation zwischen Data Providern und Service 
    Providern. Unter einem Data Provider versteht man hierbei ein Archivierungssystem, dessen Metadaten von einem 
    (oder mehreren) Service Provider(n) abgerufen werden, der diese als Basis zur Bildung von Mehrwertdiensten benutzt 
    (z. B. der Suche über viele Archive gleichzeitig).
    </p>
    <p>
    Zum besseren Verständnis der weiteren Dokumentation führe ich hier die wichtigsten Definitionen kurz an:
    </p>
    <ul>
    <li>Ein Harvester ist ein Client, der OAI-PMH Anfragen stellt. Ein Harvester wird von einem Service Provider 
        betrieben, um Metadaten aus Repositories zu sammeln.</li>
    <li>Ein Repository ist ein über das Netzwerk zugänglicher Server, der OAI-PMH Anfragen verarbeiten kann, wie sie 
        im <link title="" href="http://www.openarchives.org/OAI/openarchivesprotocol.html">
        Open Archives Initiative Protocol for Metadata Harvesting 2.0</link> vom 2002-06-14 beschrieben werden. 
        Ein Repository wird von einem Data Provider betrieben, um Harvestern den Zugriff auf Metadaten zu ermöglichen.</li>
    </ul>
    <p>
    Der für MyCoRe und Miless implementierte OAI Data Provider ist zertifiziert und erfüllt den OAI-PMH 2.0 Standard.
    </p>
   </section>
   
   <section>
    <title>Der OAI Data Provider</title>
    <p>
    MyCoRe bietet ein extrem flexibles Klassifikations-/Kategoriensystem. Der MyCoRe OAI Data Provider benutzt eine 
    frei definierbare Teilmenge dieser Klassifikationen zur Strukturierung der Metadaten gemäß der Definition von Sets 
    in OAI 2.0. An den Harvester werden also nur Metadaten ausgeliefert, die in diesen Klassifikationen erfasst sind, 
    wobei die Klassifikationen eine Set-Struktur erzeugen. Zur weiteren Einschränkung kann eine zusätzliche 
    Klassifikation (restriction classification) angegeben werden, in der die Elemente klassifiziert sein müssen, die 
    für den OAI Data Provider aber nicht strukturbildend ist.
    </p>
    <p>
    Sollen weitere Daten über OAI zugänglich gemacht werden, so bietet der OAI Data Provider die Möglichkeit, unter 
    verschiedenen Namen mehrere Servlet-Instanzen zu betreiben, wobei eine Instanz jeweils ein OAI-Repository darstellt.
    </p>
   </section>
   
   <section>
    <title>Installation</title>
    <p>
    Zur Einbindung des OAI Data Providers müssen Eintragungen in den Deployment Descriptor des Servlet-Containers und 
    in die mycore.private.properties erfolgen.
    </p>
   </section>
   
   <section>
    <title>Der Deployment Descriptor</title>
    <p>
    Für jedes OAI-Repository muss eine Servlet-Instanz in den Deployment Descriptor nach folgendem Muster eingetragen 
    werden:
    </p>
    <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
       
      &lt;servlet id="OAIProvider"&gt;
        &lt;servlet-name&gt;
           MCROAIProvider
        &lt;/servlet-name&gt;
        &lt;servlet-class&gt;
           org.mycore.services.oai.MCROAIProvider
        &lt;/servlet-class&gt;
      &lt;/servlet&gt;
      &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;
          MCROAIProvider
        &lt;/servlet-name&gt;
        &lt;url-pattern&gt;
          /servlets/MCROAIProvider
        &lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
    
    </p><![CDATA[
    ]]></source>
   </section>
   
   <section>
    <title>Die Einstellungen in mycore.private.properties</title>
    <p>
    Bei den einzurichtenden Properties ist zwischen <em>instanzunabhängigen</em> und <em>instanzabhängigen</em> 
    Properties zu unterscheiden. Instanzunabhängige Properties sind hierbei für jedes angebotene OAI-Repository gültig, 
    instanzabhängige Properties beziehen sich auf das jeweilige OAI-Repository.
    </p>
   </section>
   
   <section>
    <title>Instanzunabhängige Properties</title> 
    <dl>
    <dt><code>MCR.OAI.AdmineMail=admin@uni-irgendwo.de</code> (notwendig)</dt> 
    <dd>Der Administrator der OAI-Repositories.</dd>
    <dt><code>MCR.OAI.Resumptiontoken.Store
     =org.mycore.backend.hibernate.MCRHIBResumptionTokenStore</code> (notwendig)</dt>
    <dd>Die Klasse, die einen ResumptionTokenStore implementiert, der zur Speicherung der Resumption Token verwendet wird.</dd>
    <dt><code>MCR.OAI.Resumptiontoken.Timeout=48</code> (notwendig)</dt>
    <dd>Die Zeit (in Stunden), für die die Informationen über die Resumption Token nicht gelöscht werden. Da das 
    Löschen nur erfolgt, wenn auf ein OAI-Repository zugegriffen wird, können die Dateien evtl. auch länger aufgehoben 
    werden. </dd>
    <dt><code>MCR.OAI.MaxReturns=50</code> (notwendig)</dt>
    <dd>Die maximale Länge von Ergebnislisten, die an einen Harvester zurückgegeben werden. Überschreitet eine 
    Ergebnisliste diesen Wert, so wird ein Resumption Token angelegt.</dd>
    <dt><code>MCR.OAI.QueryService=org.mycore.services.oai.MCROAIQueryImpl </code>(notwendig)</dt>
    <dd>Die Klasse, die für das Archiv das Query-Interface implementiert. Für Miless ist dies OAIService . </dd>
    <dt><code>MCR.OAI.Metadata.Transformer.oai_dc=MyCoReOAI-mycore2dc.xsl</code> (notwendig)</dt>
    <dd>Das Stylesheet, das die Transformation aus dem im Archiv benutzten Metadaten-Schema in das für OAI benutzte 
    OAI Dublin Core Metadaten-Schema durchführt. Wenn sich das im Archiv benutzte Metadaten-Schema ändert, muss 
    dieses Stylesheet angepasst werden. Optional können weitere Stylesheets angegeben werden, die einen Harvester 
    mit anderen Metadaten-Formaten versorgen, hierbei muß aber auch jeweils ein Namensraum und ein Schema angegeben 
    werden, z. B. <br/>    
      <source xml:space="preserve"><![CDATA[     
       
    MCR.OAI.Metadata.Transformer.xmetadiss=
       MyCoReOAI-mycore2xmetadiss.xsl
    MCR.OAI.Metadata.Namespace.xmetadiss=
      http://www.ddb.de/standards/xMetaDiss/
    MCR.OAI.Metadata..Schema.xmetadiss=
      http://www.ddb.de/standards/xmetadiss/xmetadiss.xsd
    
    ]]></source>
    Diese Stylesheets benutzen als Eingabe das Ergebnis des ersten Stylesheets. Weitere Transformer sind bereits im 
    Projekt vorhanden.</dd>
     <dt><code>MCR.OAI.Friends=miami.uni-muenster.de/servlets/OAIDataProvider</code> (optional) </dt>
    <dd>Unter dieser Property können weitere (bekannte und zertifizierte) OAI-Repositories angegeben werden, um den 
    Harvestern die Suche nach weiteren Datenquellen zu vereinfachen. </dd>
    </dl>
   </section>
   
   <section>
    <title>Instanzabhängige Properties</title>
    <p>
    Bei instanzabhängigen Properties wird der im Deployment Descriptor verwendete Servletname zur Unterscheidung für 
    die einzelnen Repositories verwendet. Je nach Vorgaben sind dabei Abbildungen zwischen den MyCoRe-Klassifikationen
	und den geforderten OAI Sets zu treffen. Für DINI sind das ddc = subject, pub-type = type, doc-type=format
	(siehe <link target="blank" href="http://edoc.hu-berlin.de/series/dini-schriften/2005-2-de2/PDF/2-de2.pdf">DINI-Empfehlungen zu OAI</link>), 
	bei anderen Harvestern können das auch andere Suchfelder mit Klassifikationen sein. 
    </p>
    <dl>
    <dt><code>MCR.OAI.Repository.Name.MCROAIProvider=Test-Repository</code> (notwendig)</dt>
    <dd>Der Name des OAI-Repositories.</dd>
    <dt><code>MCR.OAI.Repository.Identifier.MCROAIProvider=mycore.de</code> (notwendig)</dt> 
    <dd>Der Identifikator des OAI-Repositories (wird vom Harvester abgefragt). </dd>
    <dt><code>MCR.OAI.Repository.URLPath.MCROAIProvider=oai</code> (notwendig)</dt>
    <dd>Der Pfad (Teil nach der AnwendungsURL) unter dem der OAI Dataprovider Request annimmt.</dd>
    <dt><code>MCR.OAI.Setscheme.Searchfields.MCROAIProvider=format,type, subject</code> (notwendig)</dt>
    <dd>Die Suchindex-Felder, die zur Bildung der Struktur des OAI-Repositories verwendet wird. </dd>
    <dt><code>MCR.OAI.Setscheme.Classids.MCROAIProvider.format=DocPortal_class_00000006</code> (optional)</dt> 
    <dd>Mapping der Klassifikations-CategoryIDs auf international übliche Bezeichnungen in jeweils einer eigenen Zeile. 
    Hier erscheint im OAI-Result <code>„doc-type:text“</code> statt <code>„FORMAT0001“</code>, wenn dies in den Kategorien
	als Sparche xml:lang="x-dini" eingetragen ist.</dd>
    <dt><code>MCR.OAI.QueryRestriction.MCROAIProvider=(objectType = document)</code> (optional)</dt>
    <dd>Ein MyCoRe-Query-Ausdruck, der zur Beschränkung der Suche verwendet wird. </dd>
    
    </dl>
   </section>
   
   <section>
    <title>Test</title>
    <p>
    Um zu testen, ob das eigene OAI-Repository funktioniert, kann man sich des Tools bedienen, das von der Open 
    Archives Initiative unter <link title="Link zur Open Archives Initiative" href="http://www.openarchives.org/">http://www.openarchives.org</link> zur 
    Verfügung gestellt wird. Unter dem Menüpunkt Tools wird der OAI Repository Explorer angeboten.
    </p>
   </section>
   
   <section>
    <title>Zertifizierung und Registrierung</title>
    <p>
    Ebenfalls auf der oben angegebenen Website findet sich unter dem Menüpunkt Community der Eintrag <code>Register as 
    a data provider</code>. Dort kann man anfordern, das eigene Repository zu zertifizieren und zu registrieren. Die 
    Antwort wird an die in den Properties eingetragene Email-Adresse geschickt.
    </p>
   </section>
   
   <section>
    <title>Formatierung der OAI-Ausgabe</title>
    <p>
    Für die Ausgabe von OAI-Requests in Browsern wurde ein Stylesheet integriert. Damit kann der Browser die Rückgabe 
    des OAI Providers in XHTML konvertieren. Es werden außerdem Links für weitere OAI-Anfragen generiert. Die 
    Originaldatei steht auf <link title="Link zur Seite OAI2 to HTML XSLT Style Sheet" href="http://software.eprints.org/xslt.php">
    http://software.eprints.org/xslt.php</link> unter GPL zur Verfügung.
    </p>
   </section>
  </section>
  
  <section>
   <title>Aktivierung der URN-Vergabe für Derivate</title>
   <p>
   Um die URN-Vergabe für Derivate zu aktivieren, muss das folgende
   Property gesetzt werden:<br/><br/>

   <code>URN.Enabled.Objects = document</code><br/><br/>

   Soll für mehrere Objekttypen die URN-Vergabe ermöglicht werden, so
   müssen alle Typen durch Komma getrennt angegeben werden:<br/><br/>

   <code>URN.Enabled.Objects = document,file,certificate</code><br/><br/>

   Es erscheint dann im Docportal in der Bearbeitungsleiste unterhalb des
   Derivates eine Schaltfläche für das automatische Erzeugen der URN.
   </p>

   <p>
   In der Basisimplementierung sorgt der MCRURNProvider für die Erzeugung
   der URN. Dieser erzeugt die URN nach dem gleichen Schema, wie auch sonst
   URNs für die Metadatensätze erzeugt werden.<br/><br/>

   <code>URN.Provider.Class=org.mycore.services.urn.MCRURNProvider</code><br/><br/>

   Sollen URNs mit einer anderen Struktur erzeugt werden, so muss man
   lediglich eine Klasse schreiben die das
   <code>org.mycore.services.urn.IURNProvider</code>-Interface implementiert oder
   einfacher gleich von <code>org.mycore.services.urn.AbstractURNProvider</code>
   abgeleitet wird. Die neue Klasse muss dann mit dem vollen Klassenpfad als Wert
   für das Property <code>URN.Provider.Class</code> gesetzt werden.
   </p>

   <p>
   Die erzeugten URNs werden zum einen in der Datenbank in der Tabelle
   MCRURN als auch im Derivate selber abgelegt.
   </p>
  </section>

  <section>
   <title>Erzeugen einer Google Sitemap</title>
   <p>
   In MyCoRe gibt es im Indexing-Module ein kleines Servlet, welches eine Datei erzeugt, die den Konventionen des 
   <link title="Link zu Google" href="https://www.google.com/webmasters/sitemaps/docs/de/protocol.html">Sitemap-Protokolls</link>
   von Google entspricht. Der Zugriff vom Internet aus erfolgt mit der <em>URL http://myhost/sitemap_google.xml</em>. 
   Für die Konfiguration dieser XML-Ausgabe stehen in den Property-Dateien zwei Werte zur Verfügung.
   </p>
   <dl>
   <dt><code>MCR.GoogleSitemap.Types</code></dt> 
   <dd>Liste von mit Komma getrennten MyCoRe-Objekttypen – Standard ist document</dd>
   <dt><code>MCR.GoogleSitemap.Freq</code></dt> 
   <dd>Zugriffsfrequenz von Google – Standard ist monthly – weiter möglich sind: allways / hourly / daily / weekly / 
   monthly / yearly / never</dd>
   <dt><code>MCR.GoogleSitemap.ObjectPath</code></dt> 
   <dd>Pfad (Teil nach Anwendungs URL) unter dem die Detailansicht der Objekte abgerufen werden kann.
   - Standard ist: <code>receive/</code></dd> 
   <dt><code>MCR.GoogleSitemap.NumberOfURLs</code></dt> 
   <dd>Maximale Anzahl der Einträge pro Sitemap Datei. - Standard ist: <code>5000</code></dd> 
   </dl>
   <p>
   Um den Zugriff von Google gezielt anzufordern, sollten folgende Schritte durchgeführt werden:
   </p>
   <ul>
   <li>Auf <link title="" href="http://www.google.de/sitemaps">http://www.google.de/sitemaps</link> gehen.</li>
   <li>Ein Google – Konto einrichten.</li>
   <li>Die URL der Anwendung eintragen.</li>
   <li>Die URL der zugehörigen <em>sitemap</em> eintragen.</li>
   </ul>
   <p>
   Nun sollte Google die geladenen Datenobjekte gezielt indizieren und so eine gute Verfügbarkeit in den Suchmaschienen 
   erreichen.
   </p>
  </section>
  
  <section>
   <title>Einbindung virtueller Host-Namen mit Hilfe des Apache-Web-Servers</title>
   <p>
   Standardmäßig ist der Apache2 in den Installations-CDs aller gängigen Linux-Distributionen und in MacOS enthalten. 
   Für Windows muss ein gesonderter Download erfolgen (<link href="#chapter_2">Kapitel 2</link>). Der Quellcode des Apache2 liegt auf 
   <em>http://httpd.apache.org</em> für ein Download bereit. Die folgende Beschreibung bezieht sich auf die 
   Apache-version 2.0.x. Die weitere Beschreibung bezieht sich hinsichtlich der Pfade auf ein UNIX/MacOS-System, für 
   Windows sind die dazu korrespondierenden Pfade zu nutzen. 
   </p>
   
   <section>
    <title>Einbindung des Proxy-Modules</title>
    <p>
    Die Einbindung des Proxy-modules ist relativ einfach zu bewerkstelligen. In der Datei <em>/etc/sysconfig/apache2</em> 
    sind in der Zeile der Variable <strong>APACHE_MODULES</strong> die Module <strong>proxy,proxy_http,proxy_connect</strong> 
    hinzuzufügen. Nach der Änderung ist der Neustart des Apache-Servers erforderlich.
    </p>
   </section>
   
   <section>
    <title>Die Verbindung von einer Servlet-Engine und Apache2</title>
    <p>
    Die Verbindung zwischen dem Apache2 und der Servlet-Engine wird in den Konfigurationsfiles 
    <em>/etc/apache2/httpd.conf</em> und <em>/etc/apache2/http-vhosts.conf</em> konfiguriert. 
    </p>
    <p>
    In der Datei <em>/etc/apache2/httpd.conf</em> ist die Include-Anweisung für das Lesen der Zusatzkonfiguration 
    <em>http-vhosts.conf</em> zu aktivieren. Anschließend wird der eigentliche virtuelle Host in dieser Datei definiert. 
    Dabei sind natürlich die Pfade zu den einzelnen Verzeichnissen entsprechend den aktuellen Gegebenheiten anzupassen. 
    </p>
    <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
       
      &lt;VirtualHost mycoresample.dl.uni-leipzig.de:80&gt;
        ProxyPass / http://mycoresamplelinux.dl.uni-leipzig.de:8291/
        ProxyPassReverse / 
        http://mycoresamplelinux.dl.uni-leipzig.de:8291/
    
        ServerAdmin mcradmin@mycoresamplelinux.dl.uni-leipzig.de
        DocumentRoot /home/mcradmin/docportal/webapps
        ServerName mycoresamplelinux.dl.uni-leipzig.de
        ErrorLog /var/log/apache2/mycoresample-error_log
        CustomLog /var/log/apache2/mycoresample-access_log common
        Alias /mycoresamplelinux "/home/mcradmin/docportal/webapps"
    
      &lt;Directory "/home/mcradmin/docportal/webapps/" &gt;
        Options Indexes FollowSymLinks
        DirectoryIndex
        AddHandler jakarta-servlet2 .jsp
        Order deny,allow
        Deny from all
        Allow from all
      &lt;/Directory&gt;
    
      &lt;Directory "/mycoresamplelinux" &gt;
        Options Indexes FollowSymLinks
        DirectoryIndex
        AddHandler jakarta-servlet2 .jsp
        Order deny,allow
        Deny from all
        Allow from all
      &lt;/Directory&gt;
      &lt;/VirtualHost&gt;    
    
    </p><![CDATA[
    ]]></source>
    <p>
    Nach dieser Änderung ist zuerst die Servlet-Engine zu starten. Anschließend kann der Apache-Server mit 
    <code>/usr/sbin/rcapache2</code> neu gestartet werden.
    </p>
   </section>
   
  </section>
  
  <section>
   <title>Sicherung der Daten</title>
   <section>
    <title>Backup</title>
    <p>
    Natürlich muss ein Dokumenten-Server im Produktionseinsatz auch ein Datensicherungskonzept haben. Je nach Einsatz 
    der gewählten Datenbank ist der erste Schritt natürlich eine Sicherung der selben nach Backup-Vorgaben des 
    Herstellers. Dazu kommt auch eine regelmäßige Backup-Strategie für das Server-System.
    </p>
    <p>
    Ein weiterer Schritt ist das komplette Auslesen des Datenbestandes und die Speicherung auf einem externen 
    (ggf. Netzwerk-) Filesystem. Mit dieser Methode lassen sich auch Migrationen durchführen. Die Distribution enthält 
    im Verzeichnis bin Scripts für Windows und Linux, die diese Aufgabe realisieren. Gestartet wird jeweils das 
    <code>Save.cmd</code> bzw. <code>Save.sh Script</code>. Diese Kommandodateien rufen dann weitere Scripts, welche 
    mit <code>Save...</code> beginnen auf. Im Ergebnis des Kommandos werden alle Daten in das 
    <code>$DOCPORTAL_HOME/save -Verzeichnis exportiert.</code>
    </p>
   </section>
   
   <section>
    <title>Recovery</title>
    <p>
    Die mittels des Save-Kommandos exportierten Daten können im Bedarfsfall wieder in ein ggf. neu erstelltes System 
    eingespielt werden. Sollte es nötig sein, einzelne Benutzer mit Ihren gesicherten Passworten neu zu laden, so ist 
    vorher das im bin-Verzeichnis befindliche Script <code>SelectUserFromSave.sh</code> zu starten. Nach erfolgreichem 
    Lauf befinden sich für jeden Benutzer / jede Gruppe Dateien im Verzeichnis <code>$DOCPORTAL_HOME/config/user</code>. 
    Diese Daten können dann im MyCoRe-Kommandozeilen-Tool mit den Kommandos '<code>delete user ...</code>' und 
    '<code>import user from file ...</code>' geladen werden.
    </p>
    <p>Sollte nur der Metadaten-Index (z. B. Lucene) defekt sein, so hilft das Script <code>RepairFromXMLStore.sh</code> 
    diesen Index neu zu erstellen.
    </p>
    <p>
    Sind die XML-Daten bzw. die Derivate defekt bzw. weg so könne die gesicherten Daten aus dem save-Verzeichnis in die 
    Workflow-Directories kopiert werden. Mit dem Kommandozeile-Tool bzw. speziellen Scripts unter unixtools können 
    diese Objekte nun wieder in das System eingebracht werden. 
    </p>
   </section>
  </section>
   
   <section>
    <title>Erzeugen einer Distribution</title>
    
    <section>
     <title>Installation von IzPack</title>
     <p>
     <link title="" href="http://www.izforge.com/izpack7">IzPack</link> ist eine Third-Party-Software, welche das generieren von 
     Distributionen inklusive einer Vorort-Installationsroutine ermöglicht. Die Software ist für Open Source Projekte 
     frei verfügbar. Die folgende Beschreibung bezieht sich auf die Arbeit unter Linux, sollte aber unter der anderen 
     Betriebssystemen analog genauso funktionieren.
     </p>
     <p>
     Die Software ist am günstigsten unter <code>/usr/local</code> als Verzeichnis IzPack zu installieren. Anschließend 
     wurde noch die Umgebungsvariable <code>IZPACK_HOME</code> in die Datei <code>~/.bashrc</code> eingetragen. Nun kann 
     die Software in den eigenen Build-Prozess eingebunden werden. Im Falle von MyCoRe ist das die Datei 
     <code>DOCPORTAL_HOME/build.xml</code> (siehe Target izpack).
     </p>
     <p class="break"><code>export IZPACK_HOME=/usr/local/IzPack</code></p>
    </section>
    
    <section>
     <title>Erstellen der Anwendungs-Distribution</title>
     <p>
     Um eine eigene Distribution zu erstellen, ist es sinnvoll, in einer Sandbox ein leeres Docportal-System 
     aufzusetzen. Dazu gehen Sie entsprechend der Anleitungen in den Kapiteln 2-4 vor. Wichtig ist, dass die 
     Beispieldaten NICHT mit installiert werden, da sonst die Distribution sehr schnell extrem groß wird. Zum anderen 
     will ggf. der Nutzer lieber ein leeres System um gleich eigene Dateien einstellen zu können. Auf jeden Fall 
     sollten aber alle Beispielbenutzer und -klassifikationen mit geladen sein. Auch die Web-Anwendung sollte 
     aufgebaut sein und funktionieren.
     </p>
     <p>
     IzPack geht von einer Variable I<code>NSTALL_PATH</code> aus, welche die Installationswurzel seitens der späteren 
     Nutzer definiert. Es müssen daher erst alle <code>MYCORE_HOME, DOCPORTAL_HOME</code>-Variablen sowie die 
     <code>%basedir%</code>-Variablen dagegen ausgetauscht werden. Dies geschieht mit Hilfe eines ANT-Targets, 
     welches in der Datei <code>docportal/build.xml</code> enthalten ist. Das Target setzt nach dem Bau der 
     Distribution auch alle ersetzten Werte wieder auf ihren Ursprung zurück. Das betrifft jedoch nur das System auf 
     dem Sie konkret die Distribution erstellen. Soll eine Distribution für mehrere Systeme erstellt werden, müssen die 
     Scripts unter <code>.../bin</code> auf einem gesondert aufzusetzenden Zielsystem generiert werden. Die offizielle 
     Distribution enthält als Zielsystem <strong>Windows und Linux</strong>.
     </p>
     <p>
     Wenn die Installation in der Sandbox komplett funktioniert, muss noch die Datei <code>mycore.private.properties</code> 
     in <code>mycore.private.properties.izpack</code> kopiert werden. Darin ist dann für den Eintrag <code>MCR.basedir</code> 
     die Variable <code>$INSTALL_PATH</code> zu setzen. Sind alle Vorbereitungen abgeschlossen, so kann die Distribution 
     mit folgendem Kommando gebaut werden:
     </p>
     <p class="break"><code>ant izpack</code></p>
     <p>
     Installiert wird diese Distribution mit java <code>-jar docportal-installable.jar</code>. 
     </p>
    </section>
    
    <section>
     <title>Erstellen einer Beispieldaten-Distribution </title>
     <p>
     Auch die Beispieldaten sind in selbstinstallierenden Distributionen erhältlich. Um selbst eigene Daten in dieser 
     Form verteilen zu können, müssen Sie nur ein existierendes Beispiel adaptieren und die dort verwendeten 
     Steuerdateien entsprechend anpassen. Auch hier erzeugt ein <code>ant izpack</code> die gewünschte Distribution. 
     Die Scripts unter <code>bin</code> sorgen für das laden der Daten zum Zeitpunkt der Installation.
     </p>
    </section>
    
   </section>
   
  </section> 
  
 <anchor id="chapter_8"/>
 <section id="chapter_08">
 
 <title>Weiterführende Informationen zum Aufbau von MyCoRe-Anwendungen</title>
 
 <section>  
  <title>XML-Syntax des Datenmodells</title>
  <p>
  In diesem Abschnitt wird der Syntax der einzelnen XML-Daten-Dateien und der MyCoRe-Standard-Datentypen näher 
  beschrieben. Die Kenntnis des Syntax benötigen Sie um eigene Datensätze für Ihren Dokumenten-Server zu erstellen. 
  Eine umfassende Beschreibung der zugehörigen Klassen finden Sie im 
  <link href="site:appdev_2_1">Programmer Guide</link>. In den folgenden Abschnitten 
  wird lediglich auf die XML-Syntax der Daten eingegangen.
  </p>
  
  <anchor id="MCRO"/>
  <section>      
   <title>Die MCRObjectID</title>
   <p>
   Die Identifikation eines jeden MyCoRe Objektes erfolgt grundsätzlich über eine eindeutige ID. 
   Die ID kann per Hand vergeben oder auch automatisch via API generiert werden. Diese hat für alle Objekte einen 
   einheitlichen Aufbau, dessen Inhalt für jedes Projekt und jeden Datentyp festzulegen ist:
   </p>
   <p class="break">ID = “projektkürzel_type_nummer”</p>
   
   <table>
   <tr>
   <td colspan="1" rowspan="1"><strong>projektkürzel</strong></td>
   <td colspan="1" rowspan="1">Dieses Element ist für ein Projekt und/oder eine Einrichtung / Datengruppe festzulegen, zum Beispiel UBLPapyri 
       oder MyCoReDocument. In MyCoRe wird es teilweise auch zur Identifikation einzelner Konfigurationsdaten mit 
       genutzt.
   </td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1"><strong>type</strong></td>
   <td colspan="1" rowspan="1">Das Element beschreibt den Datenmodelltyp, d. h. der type verweist auf die zugehörige Datenmodell-Konfiguration, 
       zum Beispiel datamodel-author oder datamodel-document. In MyCoRe wird es oft zur Identifikation einzelner 
       Konfigurationsdaten im Zusammenhang mit der Verarbeitung dieses Datenmodells genutzt.
   </td>
   </tr>   
   <tr>
   <td colspan="1" rowspan="1"><strong>nummer</strong></td>
   <td colspan="1" rowspan="1">Ist eine frei wählbare positive Integerzahl. Diese Zahl kann in Verantwortung des Projektmanagers per Hand oder 
       automatisch vergeben werden. Bei der Projektdefinition wird die Größe des Zahlenbereiches festgelegt. Es hat sich 
       als sinnvoll erwiesen, nicht weniger als 8 Ziffern einzuplanen.
   </td>
   </tr>
   </table>
   <p class="klein"><strong>Tabelle 8.1:</strong> Aufbau der MCRObjectID</p>
   
   <p>
   Im MyCoRe-Projekt sind zwei MCRObjectID-Typnamen reserviert und dürfen nicht für anderweitige Objekte genutzt werden. 
   Der Typ <code>class</code> steht für Klassifikationen, der Typ <code>derivate</code> wird für Multimediaobjekte 
   verwendet.
   </p>
   <p>
   Es sei noch einmal ausdrücklich darauf hingewiesen, das die <code>MCRObjectID</code> eine zentrale Rolle im ganzen 
   MyCoRe-Projekt spielt. Über sie werden alle Daten identifiziert und referenziert. Es sind daher die vorgegebenen 
   Regeln streng einzuhalten. Da es derzeit für den Datentyp zum anhängen nur eine <code>type</code>-Bezeichnung gibt, 
   kann es beim Design eines Projektes hilfreich sein, sich für eine Gruppe von Projektkürzeln zu entscheiden, z. B. 
   <code>DOLAuthor_author_...</code>, <code>DOLDocument_document_...</code> usw. So kann jedem Datenmodell eine 
   dedizierte Derivate-Gruppe zugeordnet werden z. B. <code>DOLAuthor_derivate_...</code> oder 
   <code>DOLDocument_derivate_...</code>. Diese Trennung ist nicht zwingend, hat sich aber bei der Verwaltung großer 
   Datenmengen als günstig erwiesen. Manchmal ist es sogar sinnvoll, hierzu noch mehrere Projektkürzel für ein 
   Datenmodell zu verwenden, je nach Umfang des Datenbestandes und der Sicherungs- und Reparatur-Strategien des 
   Projektes.
   </p>
  </section>
  
  <anchor id="Klass"/>
  <section>  
   <title>Das Klassifikationen-Datenmodell</title>
   <p>
   Wie bereits erwähnt dienen Klassifikationen der einheitlichen Gliederung bestimmter Fakten. Sie sorgen dafür, 
   dass eine einheitliche Schreibweise für bestimmte Begriffe verwendet wird. Diese Einzelbegriffe werden als 
   Kategorien bezeichnet. Innerhalb einer Kategorie kann der Begriff in verschiedenen Sprachen aufgezeichnet sein. 
   Die eindeutige Zuordnung zu einer Kategorie erfolgt über einen Bezeichner. Dieser besteht aus der Klassifikations- 
   und Kategorie-ID und muss eindeutig sein.
   </p>
   <p>
   Klassifikationen werden im DocPortal als extra XML-Datei erstellt, in die Anwendung importiert und in Form einer 
   Datenbank gespeichert. Dies ist für den Nutzer transparent und erfolgt mittels Schnittstellen. Der Zugriff auf die 
   Daten erfolgt dann durch den oben genannten Bezeichner. Die Klassifikations-ID ist eine <code>MCRObjectID</code> mit 
   dem Typ <code>class</code>. Die Kategorie-ID ist dagegen frei wählbar. Sie darf mehrstufig sein, jede Stufe spiegelt 
   eine Hierarchieebene wieder. Die Stufen in der ID werden mit einem Punkt voneinander getrennt, ’<code>Uni.URZ</code>’. 
   Das wiederum gestattet eine Abfrage nach allen untergeordneten Stufen bzw. Sub-Kategorien wie ’<code>Uni.*</code>’.
   </p>
   <note label="Hinweis">
   Sollten Sie Zahlen als Kategorie-IDs mit verwenden, so planen Sie entsprechende führende Nullen ein, andernfalls 
   wird das Suchergebnis fehlerhaft! Weiterhin ist es sehr zu empfehlen, dieser Zahlenfolge einen Buchstaben voran 
   zusetzen, damit die ID nicht als Zahl interpretiert wird.
   </note>
   <p>
   Im ID Attribut einer <code>category</code> ist der eindeutige Bezeichner anzugeben. Das darunter befindliche label 
   Tag bietet die Möglichkeit, eine Kurzbezeichnung anzugeben. Mehrsprachige Ausführungen sind erlaubt. Dasselbe gilt für 
   das Tag <code>description</code>. Beide Werte werden als Strings aufgefasst. Eine category kann wiederum category 
   Tags beinhalten.
   </p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
       
      &lt;?xml version="1.0" encoding="UTF-8" ?&gt;
        &lt;mycoreclass
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="MCRClassification.xsd"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          ID="..." &gt;
         &lt;label xml:lang="..." text="..." description="..."/&gt;
         ...
         &lt;categories&gt;
          &lt;category ID="..."&gt;
             &lt;label xml:lang="..." text="..." description="..."/&gt;
             ...
             &lt;category ID="..."&gt;
               &lt;label xml:lang="..." text="..." description="..."/&gt;
               ...
             &lt;/category&gt;
             &lt;category ID="..."&gt;
               &lt;label xml:lang="..." text="..." description="..."/&gt;
               ...
             &lt;/category&gt;
           &lt;/category&gt;
         &lt;/category&gt;
       &lt;/categories&gt;
    &lt;/mycoreclass&gt;
   
   </p><![CDATA[
   ]]></source>
  </section>
  
  <section>
   <title>Das Metadatenmodell</title> 
   <p>
   Die zu speichernden Daten des Beispiels teilen sich in unserem Modell in Metadaten und digitale Objekte. Dies gilt 
   auch für die vom Anwender entwickelten Applikationen. Digitale Objekte sind Gegenstand des Abschnitts ’IFS und 
   Content Store’. Unter Metadaten verstehen wir in MyCoRe alle beschreibenden Daten des Objektes, die extern 
   hinzugefügt, separat gespeichert und gesucht werden können. Dem gegenüber stehen Daten welche die digitalen Objekte 
   selbst mitbringen. In diesem Abschnitt werden nur erstere behandelt. 
   </p>
   <p>
   Um die Metadaten besser auf unterschiedlichen Datenspeichern ablegen zu können, wurde ein System von XML-Strukturen 
   entwickelt, das es gestattet, neben den eigentlichen Daten wie Titel, Autor usw. auch Struktur- und 
   Service-Informationen mit abzulegen. Die eigentlichen Nutzerdaten sind wiederum typisiert, was deren 
   speicherunabhängige Aufzeichnung erheblich vereinfacht. Es steht dem Entwickler einer Anwendung jedoch frei, hier bei 
   Bedarf weitere hinzuzufügen. Im Folgenden soll nun der Aufbau der Metadatenobjekte im Detail beschrieben werden. Zum 
   Verständnis der MyCoRe-Beispielanwendung sei hier auch auf den vorigen Abschnitt verwiesen. Die Metadaten werden 
   komplett in XML erfasst und verarbeitet. Für die Grundstrukturen und Standardmetadatentypen werden seitens MyCoRe 
   bereits XMLSchema-Dateien mitgeliefert. 
   </p>
   <p class="fett">XML-Syntax eines Metadatenobjektes</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
       
      &lt;?xml version="1.0" encoding="UTF-8" ?&gt;
      &lt;mycoreobject
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="....xsd"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          ID="..."
          label="..." &gt;
       &lt;structure&gt;
       ...
       &lt;/structure&gt;
       &lt;metadata xml:lang="de"&gt;
       ...
       &lt;/metadata&gt;
       &lt;service&gt;
       ...
       &lt;/service&gt;
      &lt;/mycoreobject&gt;
      
    </p><![CDATA[
   ]]></source>
   <p>
   Die oben gezeigte Syntax stellt den Rahmen eines jeden Metadaten-Objektes dar. Diese Struktur ist immer gleich und 
   muss so eingehalten werden.
   </p>
   <ul>
   <li>Für xsi:noNamespaceSchemaLocation ist das entsprechende XMLSchema-File des Metadatentyps anzugeben 
   (document.xsd)</li>
   <li>Die ID ist die eindeutige MCRObjectID.</li>
   <li>Der label ist ein kurzer Text-String, der bei administrativen Arbeiten an der Datenbasis das Identifizieren 
   einzelner Datensätze erleichtern soll. Er kann maximal 256 Zeichen lang sein.</li>
   <li>Innerhalb der XML-Datenstruktur gibt es die Abschnitte structure, metadata und service zur Trennung von 
   Struktur-, Beschreibungs- und Wartungsdaten. Diese Tag-Namen sind reserviert und dürfen NICHT anderweitig verwendet 
   werden!</li>
   </ul>
   <p class="fett">XML-Syntax des XML-Knotens structure</p>
   <p>
   Im XML-Knoten structure sind alle Informationen über die Beziehung des Metadatenobjektes zu anderen Objekten abgelegt. 
   Es werden derzeit die folgenden XML-Daten unter diesem Knoten abgelegt. Die Tag-Namen parents/parent, children/child 
   und derobjects/derobject sind reserviert und dürfen NICHT anderweitig verwendet werden! Alle Sub-Knoten haben einen 
   Aufbau wie für MCRMetaLinkID beschrieben.
   </p>
   <p>
   In parents wird ein Link zu einem Elternobjekt gespeichert, sofern das referenzierende Objekt Eltern hat. Ob dies der 
   Fall ist, bestimmt die Anwendung. Das Tag dient der Gestaltung von Vererbungsbäumen und kann durch den Anwender 
   festgelegt werden. Siehe auch <link href="site:appdev_2_1">Programmer Guide</link>, Abschnitt 
   Vererbung. Die Werte für xlink:title und xlink:label werden beim Laden der Daten automatisch ergänzt.
   </p>
   <p>
   Die Informationen über die children hingegen werden durch das MyCoRe-System beim Laden der Daten automatisch erzeugt 
   und dürfen nicht per Hand geändert werden, da sonst das Gesamtsystem nicht mehr konsistent ist. Werden die Metadaten 
   eines Kindes oder eines Baumes von Kindern gelöscht, so wird in diesem Teil des XML-Knotens der Eintrag durch die 
   Software entfernt.
   </p>
   <p>
   Dasselbe gilt auch für den XML-Unterknoten <code>derobjects</code>. In diesem Bereich werden alle Verweise auf die an 
   das Metadatenobjekt angehängten digitalen Objekte gespeichert. Jeder Eintrag verweist mittels einer Referenz auf ein 
   Datenobjekt vom Typ mycorederivate, wie es im nachfolgenden Abschnitt ’IFS und Content Store’ näher erläutert ist.
   </p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;structure&gt;
       &lt;parents class="MCRMetaLinkID"&gt;
         &lt;parent xlink:type="locator" xlink:href="...mcr_id..." /&gt;
       &lt;/parents&gt;
       &lt;children class="MCRMetaLinkID"&gt;
         &lt;child xlink:type="locator" xlink:href="...mcr_id..." 
             xlink:label="..." xlink:title="..." /&gt;
         ...
       &lt;/children&gt;
       &lt;derobjects class="MCRMetaLinkID"&gt;
         &lt;derobject xlink:type="locator" xlink:href="...mcr_id..." 
             xlink:label="..." xlink:title="..." /&gt;
         ...
       &lt;/derobjects&gt;
     &lt;/structure&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des XML-Knotens metadata</p>
   <p>
   Der Abschnitt metadata des MyCoRe-Metadatenobjektes nimmt alle Beschreibungsdaten des eigentlichen Datenmodells auf. 
   Diese werden ihrerseits in vordefinierten Datentyp-Strukturen mit festgelegter Syntax abgelegt. Die Liste der 
   Einzelelemente und die Reihenfolge der Typen ist dabei quasi beliebig in Anordnung und Länge. Wichtig ist nur, dass 
   alle Datentypen bestimmte gemeinsame Eigenschaften haben. Es ist auch jederzeit möglich, weitere Typen den Projekten 
   der Anwender hinzuzufügen (siehe dazu <link href="site:appdev_2_1">MyCoRe Programmer Guide</link>).
   </p>
   <p>
   Die Metadaten bestehen aus einer Ansammlung von Informationen rund um das multimediale Objekt. Vorrangig wird dieser 
   Teil in der Suche abgefragt. Jedes Metadatum (auch Metadaten-Tag) enthält im class Attribut den Namen des MCRMeta-Typs 
   bzw. der gleichnamigen MCRMeta-Java Klasse. Daneben gibt es noch ein Attribut heritable, in dem festgelegt wird, ob 
   diese Metadaten vererbbar sein sollen. Es sind jeweils die booleschen Werte true oder false möglich. Die mit der 
   Vererbung verbundenen Mechanismen sind in dieser Dokumentation weiter hinten beschrieben. 
   </p>
   <p>
   Für MyCoRe wurden einige Basismetadatentypen festgelegt, mit denen die Mehrzahl der bisher in Betracht kommenden 
   Anwendungen gelöst werden können. Die einzelnen Daten treten dabei als Liste auf, in denen mehrere Elemente des 
   gleichen Typs erscheinen können, beispielsweise ein Titel in verschiedenen Sprachen. Jedes Listenelement hat wiederum 
   per Default ein type Attribut und eine gemäß W3C spezifizierte Sprache im Attribut xml:lang. Die Angabe der Sprache 
   im Tag metadata ist für alle eingeschlossenen Metadatentypen der Default-Wert. Die Liste der aktuell unterstützten 
   Sprach-Codes entnehmen Sie bitte der Java-Quelldatei 
   </p>
   <p class="break"><code>~/mycore/sources/org/mycore/common/MCRDefaults.java</code></p>
   <p>
   Für interne Zwecke wurde ein weiteres Attribut inherited eingeführt. Dieses ist NICHT durch den Anwender zu verändern! 
   Es wird gesetzt, wenn das betreffende Metadatum von einem Elternteil geerbt wurde (siehe Vererbung). Diese 
   Information ist für die Datenpräsentation sehr hilfreich. 
   </p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;metadata xml:lang="..."&gt;
       &lt;... class="MCRMeta..." heritabel="..."&gt;
        ...
       &lt;/...&gt;
       ...
     &lt;/metadata&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>
   Für das MyCoRe-Beispiel mit einem Dublin Core Datenmodell werden bereits einige Metadatentypen verwendet, welche dem 
   MyCoRe-Kern beigefügt sind. Die Syntax der einzelnen Typen wird in den nachfolgenden Absätzen genau beschrieben.
   </p>
   <p class="fett">MyCoRe Metadaten-Basistypen</p>
   <p>
   In MyCoRe gibt es eine Reihe von vordefinierten XML-Datenstrukturen zur Abbildung bestimmter mehr oder minder 
   komplexer Daten. Diese Strukturen bilden die MyCoRe-Datentypen, welche von der Dateneingabe bis hin zur Validierung 
   und Datenpräsentation für einen einheitlichen Umgang mit den Daten sorgen. Dabei ist zwischen einfachen, recht 
   atomaren Typen und anwendungsspezifischen komplexen Typen zu unterscheiden. Eine Auflistung finden Sie in 
   nachfolgender Tabelle.
   </p>
   <table>
   <tr>
   <th colspan="1" rowspan="1">Einfache Typen</th>
   <th colspan="1" rowspan="1">Komplexe Typen</th>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaBoolean</td>
   <td colspan="1" rowspan="1">MCRMetaAccessRule</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaClassification</td>
   <td colspan="1" rowspan="1">MCRMetaAddress</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaISBN</td>
   <td colspan="1" rowspan="1">MCRMetaHistoryDate</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaISO8601Date</td>
   <td colspan="1" rowspan="1">MCRMetaInstitutionName</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetsLangText</td>
   <td colspan="1" rowspan="1">MCRMetaPersonName</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaLink</td>
   <td colspan="1" rowspan="1">MCRMetaIFS</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaLinkID</td>
   <td colspan="1" rowspan="1">MCRMetaXML</td>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaNBN</td>
   <td colspan="1" rowspan="1"/>
   </tr>
   <tr>
   <td colspan="1" rowspan="1">MCRMetaNumber</td>
   <td colspan="1" rowspan="1"/>
   </tr>
   </table>
   <p class="klein"><strong>Tabelle 8.2:</strong> MyCoRe-Basisdatentypen</p>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaAccessRule</p>
   <p>
   Der Basistyp MCRMetaAccessRule ist für den Import/Export von Access Control Lists (ACL's) gedacht. Der Metadatentyp 
   stellt einen Container für die entsprechenden Access-Conditions dar und wird nur im MCRService-Teil verwendet.
   </p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;servacls class="MCRMetaAccessRule"&gt;
       &lt;servacl permission="..."&gt;
         &lt;condition format="xml"&gt;
          ...
         &lt;/condition&gt;
       &lt;/servacl&gt;
     &lt;/servacls&gt;

     &lt;servacls class="MCRMetaAccessRule"&gt;
       &lt;servacl permission="read"&gt;
         &lt;condition format="xml"&gt;
           &lt;boolean operator="and"&gt;
             &lt;!-- USER OR GROUP --&gt;
           &lt;boolean operator="or" /&gt;
             &lt;!-- DATE --&gt;
           &lt;boolean operator="and" /&gt;
             &lt;!-- IP --&gt;
           &lt;boolean operator="or" /&gt;
             &lt;!-- --&gt;
           &lt;/boolean&gt;
         &lt;/condition&gt;
       &lt;/servacl&gt;
     &lt;/servacls&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaAddress</p>
   <p>
   Der Basistyp MCRMetaAddress beinhaltet eine Liste von postalischen Anschriften in der Ausprägung eines 
   XML-Abschnittes. Dabei wird berücksichtigt, dass die Anschrift in verschiedenen Sprachen und in international 
   gängigen Formen gespeichert werden soll. Die einzelnen Subtags sind dabei selbsterklärend. Die Angaben zu type und 
   xml:lang sind optional, ebenso die unter subtag liegenden Tags, jedoch muss mindestens eines ausgefüllt sein. Alle 
   Werte werden als Text betrachtet. 
   </p>
   <p>XML-Syntax des Metadatentyps MCRMetaAddress:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaAddress"&gt;
       &lt;subtag type="..." xml:lang="..."&gt;
         &lt;country&gt;...&lt;/country&gt;
         &lt;state&gt;...&lt;/state&amp;gt;
         &lt;zipcode&gt;...&lt;/zipcode&gt;
         &lt;city&gt;...&lt;/city&gt;
         &lt;street&gt;...&lt;/street&gt;
         &lt;number&gt;...&lt;/number&gt;
       &lt;/subtab&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source> 
   <p>Beispiel des Metadatentyps MCRMetaAddress:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;addresses class="MCRMetaAddress"&gt;
       &lt;address type="Work" xml:lang="de"&gt;
         &lt;country&gt;Deutschland&lt;/country&gt;
         &lt;state&gt;Sachsen&lt;/state&gt;
         &lt;zipcode&gt;04109&lt;/zipcode&gt;
         &lt;city&gt;Leipzig&lt;/city&gt;
         &lt;street&gt;Augustuspaltz&lt;/street&gt;
         &lt;number&gt;10/11&lt;/number&gt;
       &lt;/address&gt;
       ...
     &lt;/addresses&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaBoolean</p>
   <p>
   Der Basistyp MCRMetaBoolean beinhaltet eine Liste von Wahrheitswerten mit zugehörigen type Attributen. Folgende Werte 
   sind zulässig:
   </p>
   <ul>
   <li>für true - ’true’, ’yes’, ’wahr’ und ’ja’</li>
   <li>für false - ’false’, ’no’, ’falsch’ und ’nein’</li>
   </ul>
   <p>XML-Syntax des Metadatentyps MCRMetaBoolean:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaBoolean"&gt;
       &lt;subtag type="..." xml:lang="..." &gt;
       ... 
       &lt;/subtab&gt;
       ... 
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadatentyps MCRMetaBoolean:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;publishes class="MCRMetaBoolean"&gt;
       &lt;publish type="Ausgabe_1" xml:lang="de"&gt;ja&lt;/publish&gt;
       &lt;publish type="Ausgabe_2" xml:lang="de"&gt;nein&lt;/publish&gt;
       ...
     &lt;/publishes&gt;
     
     </p><![CDATA[
    ]]></source>
   <p class="fett">XML-Syntax des Metadaten-Basistyps MCRMetaClassification</p>
   <p>
   Der Basistyp MCRMetaClassification dient der Einbindung von Klassifikationen und deren Kategorien in die Metadaten. 
   Beide Identifizierer zusammen beschreiben einen Kategorieeintrag vollständig. Dabei ist für die categid eine, ggf. 
   mehrstufige, Kategorie-ID einzutragen. Die classid muss vom Typ MCRObjectID sein. Bitte beachten Sie die Hinweise 
   zur Gestaltung der Kategorie-IDs im vorigen Kapitel!
   </p>
   <p>XML-Syntax des Metadaten-Basistyps MCRMetaClassification:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaClassification"&gt;
       &lt;subtag classid="..." categid="..."/&gt;
       ... 
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaClassification:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;origins class="MCRMetaClassification" heritable="false"&gt;
       &lt;origin classid="MyCoReDemoDC_class_1" categid="Unis.Leipzig.URZ"/&gt;
       ...
     &lt;/origins&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadaten-Basistyps MCRMetaHistoryDate</p>
   <p>
   Der Basistyps MCRMetaHistoryDate ist speziell kreiert, um Datumsangaben für historische Projekte speichern und suchen 
   zu können. Dabei wird sowohl ein verbaler Text wie eine konkrete Datumskonvertierung mit dem dazugehörigen Kalender 
   gespeichert. Das Datum wird im Format des angegebenen Kalenders abgelegt, auch für die Zeit vor Einführung des selben. 
   Zur Implementierung des Datentyps wurde die frei verfügbare ICU-Library der Firma IBM genutzt. Sie bietet eine Reihe 
   von Kalendern an, die so für diesen Datentyp nun verfügbar sind. Alle Datumsangaben werden zur internen Verarbeitung 
   in MyCoRe in eine Julian Day Number, also eine fortlaufende Tageszahl, umgerechnet. Diese wird neben einer Lesbaren 
   Form in dem Datentyp MCRMetaHistoryDate gespeichert.
   </p>
   <p>
   Somit ist eine scharfe Datumssuche mit Hilfe der Integer-Daten möglich. Die Eingabe der Daten erfolgt nach den Regeln:
   </p>
   <ul>
   <li>Im text-Feld steht ein beliebiger String gemäß den Projektvorgaben</li>
   <li>Die Felder von und bis enthalten gregorianische Datumsangaben.</li>
   <li>Ist für von und/oder bis nichts angegeben, werden Standardwerte genommen. Das sind 1..1.4713 BC und 31.12.3999 
       AD.</li>
   <li>Die Felder ivon bzw. ibis enthalten die korrespondierenden Werte zu von bzw. bis.</li>
   <li>Das calendar-Feld kann die Werte <strong>gregorian</strong> oder <strong>islamic</strong> 
   enthalten.</li>
   <li>Mögliche Notationen für die Datumsangaben sind 01.01.1999 / -01.12.200 / 1035 / 133 BC.</li>
   </ul>
   <p>Syntax des Metadaten-Basistyps MCRMetaHistoryDate:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaHistoryDate" heritable="..."&gt;
       &lt;subtag type="..." xml:lang="..."&gt;
         &lt;text&gt;...&lt;/text&gt;
         &lt;von&gt;...&lt;/von&gt;
         &lt;ivon&gt;...&lt;/ivon&gt;
         &lt;bis&gt;...&lt;/bis&gt;
         &lt;ibis&gt;...&lt;/ibis&gt;
         &lt;calendar&gt;...&lt;/calendar&gt;
       &lt;/subtab&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaHistoryDate:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;date class="MCRMetaHistoryDate" heritable="..."&gt;
       &lt;dates type="written" xml:lang="de"&gt;
         &lt;text&gt;4. Jh. v. Chr.&lt;/text&gt;
         &lt;von&gt;BC01.01.399&lt;/von&gt;
         &lt;ivon&gt;1575694&lt;/ivon&gt;
         &lt;bis&gt;BC31.12.300&lt;/bis&gt;
         &lt;ibis&gt;1830997&lt;/ibis&gt;
         &lt;calendar&gt;gregorian&lt;/calendar&gt;
       &lt;/dates&gt;
     &lt;/date&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaInstitutionName</p>
   <p>
   Der Basistyp MCRMetaInstitutionName beinhaltet eine Liste der Namen einer Firma oder Einrichtung oder eines Bereiches 
   der selben. Dabei soll berücksichtigt werden, dass die Name in verschiedenen Sprachen und in international gängigen 
   Formen gespeichert werden sollen. Über das Attribut type ist eine zusätzliche Differenzierung der verschiedenen Namen 
   möglich. 
   </p>
   <ul>
   <li>name beinhaltet den vollständigen Namen (Pflicht)</li>
   <li>nickname das Pseudonym (z. B. UBL) (optional)</li>
   <li>property den rechtlichen Stand, GmbH (optional</li>
   </ul>
   <p>Syntax des Metadaten-Basistyps MCRMetaInstitutionName:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaInstitutionName" heritable="..."&gt;
       &lt;subtag xml:lang="..."&gt;
         &lt;fullname&gt;...&lt;/fullname&gt;
         &lt;nickname&gt;...&lt;/nickname&gt;
         &lt;property&gt;...&lt;/property&gt;
       &lt;/subtab&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaInstitutionName:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;insts class="MCRMetaInstitutionName" heritable="..."&gt;
       &lt;inst xml:lang="de"&gt;
         &lt;fullname&gt;Obelix &amp;amp; Co. KG&lt;/fullname&gt;
         &lt;nickname&gt;O. &amp;amp;. Co.&lt;/nickname&gt;
         &lt;property&gt;KG&lt;/property&gt;
       &lt;/inst&gt;
     &lt;/insts&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaISBN</p>
   <p>
   Dieser Metadatentyp ist ganz speziell zur <span class="T4">Speicherung</span> einer ISBN gedacht. Er gestattet nur 
   eine Kardinalität.
   </p>
   <p>Syntax des Metadaten-Basistyps MCRMetaISBN:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaISBN" heritable="..."&gt; 
       &lt;subtag&gt;ISBN&lt;/subtag&gt;
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Syntax des Metadaten-Basistyps MCRMetaISBN:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;isbns class="MCRMetaISBN" heritable="..." &gt;
       &lt;isbn&gt;1-234-56567-4&lt;/isbn&gt;
     &lt;/isbn&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaISO8601Date</p>
   <p>
   Dieser Metadatentyp ist wie MCRMetaDate für das Speichern von Zeitangaben gedacht. Er bietet jedoch eine höhere 
   zeitliche Auflösung, bis in den Millisekundenbereich. Unterstützt werden alle Formate der Informationsseite des W3C 
   (http://www.w3.org/TR/NOTE-datetime). Sie enthält nähere Informationen zu den Formaten und zur ISO-Norm:ISO 8601 : 
   1998 (E)
   </p>
   <p>
   Wie MCRMetaDate unterstützt MCRMetaISO8601Date die Verwendung des type-Attributs, auf Grund seiner 
   Sprachunabhängigkeit in der Formatierung der Datumsangabe fehlt die Unterstützung für das lang-Attribut. Das 
   Verwenden von MCRMetaISO8601Date ermöglicht eine Syntaxprüfung der Datumsangabe bereits auf XMLSchema-Ebene, durch 
   den dort definierten Datentyp xsd:duration, auf dem der MyCoRe-Datentyp abgebildet wird.
   </p>
   <p>
   Optional kann ein format-Attribut verwendet werden. Dies erzwingt für das Datum das angegebene Format. So ist bei 
   der Formatangabe „YYYY“ das Datum „2006-01“ ungültig. Ohne die Formatangabe hingegen ist das gleiche Datum gültig, 
   weil es dem unterstützen Format „YYYY-MM“ entspricht.
   </p>
   <p>Syntax des Metadaten-Basistyps MCRMetaISO8601Date:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaISO8601Date" heritable="..."&gt;
       &lt;subtag type="..." format="..."&gt;YYYY-MM-DDThh:mm:ss.sTZD&lt;/subtag&gt;
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaISO8601Date:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;dates class="MCRMetaISO8601Date" heritable="false"&gt;
       &lt;date type="sample"&gt;2006-01-16T13:20:30.85+01:00&lt;/date&gt;
     &lt;/dates&gt;
     
    </p><![CDATA[ 
   ]]></source> 
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaLangText</p>
   <p>
   Der Basistyp MCRMetaLangText dient der Speicherung einer Liste von Textabschnitten mit zugehöriger Sprachangabe. Über 
   das form Attribut kann noch spezifizier werden, in welcher Form der Text geschrieben ist.
   </p>
   <p>XML-Syntax des Metadaten-Basistyps MCRMetaLangText:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaLangText" heritable="..."&gt;
       &lt;subtag type="..." xml:lang="..." form="..."&gt;
         ...
       &lt;/subtab&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaLangText:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;titles class="MCRMetaLangText" heritable="true"&gt;
       &lt;title type="maintitle" xml:lang="de" form="plain"&gt;
         Mein Leben als MyCoRe-Entwickler
       &lt;/title&gt;
     &lt;/titles&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax der Metadatentypen MCRMetaLink und MCRMetaLinkID</p>
   <p>
   Der Basistyp MCRMetaLink wurde geschaffen, um eine Verknüpfung verschiedener MyCoRe-Objekte untereinander zu 
   realisieren. Außerdem können hier genauso Verweise auf beliebige externe Referenzen abgelegt werden. Der Typ 
   MCRMetaLink ist eine Implementation des W3C XLink Standards (siehe ’XLM Linking Language (XLink) Version 1.0’).
   Auf dieser Basis enthält der MyCoRe-Metadatentyp zwei Arten von Links - eine Referenz und einen bidirektionalen Link. 
   Bei beiden werden jedoch in MCRMetaLink nicht alle Möglichkeiten der XLink Spezifikation ausgeschöpft, da dies für 
   die in MyCoRe benötigten Funktionalitäten nicht erforderlich ist.
   </p>
   <p>
   Im Referenztyp ist das Attribut xlink:type=’locator’ immer anzugeben. Die eigentliche Referenz wird im xlink:href 
   Attribut notiert. Dabei kann die Referenz eine URL oder eine MCRObjectID sein. Daneben können noch weitere 
   Informationen im xlink:label angegeben werden, die Rolle einer verlinkten Person. Der Referenztyp kommt im DocPortal 
   bei der Verlinkung von Dokumenten und Personen zum Einsatz. Um den Update-Aufwand in Grenzen zu halten, wurde die 
   genannte Verbindung als Referenz konzipiert. Somit weiß das referenzierte Objekt in der Beispielanwendung nichts über 
   den Verweis.
   </p>
   <p>
   Alternativ dazu besteht die Möglichkeit eines bidirektionalen Links. Dieser wird sowohl in der Link-Quelle wie auch 
   im Link-Ziel eingetragen. Der Typ ist in diesem Fall xlink:type=’arc’. Weiterhin sind die Attribute xlink:from und 
   xlink:to erforderlich. Optional kann noch ein Titel in xlink:title mitgegeben werden.
   </p>
   <p>
   Der Basistyp MCRMetaLinkID entspricht im Aufbau dem MCRMetaLink. Der einzige Unterschied ist, dass die Attribute 
   xlink:href, xlink:from und xlink:to nur mit MCRObjectIDs belegt werden dürfen.
   </p>
   <p>XML-Syntax des Metadaten-Basistyps MCRMetaLink:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaLink" heritable="..."&gt;
       &lt;subtag xlink:type="locator" xlink:href="..." xlink:label="..." xlink:title="..."/&gt;
       &lt;subtag xlink:type="arc" xlink:from="..." xlink:to="..." xlink:title="..."/&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaLink:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;urls class="MCRMetaLink" heritable="false"&gt;
       &lt;url xlink:type="locator" xlink:href="http://www.zoje.de" xlink:label="ZOJE" xlink:title="Eine externe URL"/&gt;
       &lt;url xlink:type="arc" xlink:from="mcr_object_id_1" xlink:to="mcr_object_id_2" xlink:title="Link zwischen Objekten"/&gt;
     &lt;/urls&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaNBN</p>
   <p>
   Diese Metadatentyp ist ganz speziell zur Speicherung einer NBN gedacht. Er gestattet nur eine Kardinalität.
   </p>
   <p>Syntax des Metadaten-Basistyps MCRMetaNBN:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaNBN" heritable="..."&gt;
       &lt;subtag&gt;NBN&lt;/subtag&gt;
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaNBN:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;nbns class="MCRMetaNBN" heritable="..."&gt;
       &lt;nbn&gt;urn:nbn:1-2334&lt;/nbn&gt;
     &lt;/nbns&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaNumber</p>
   <p>
   Der Basistyp MCRMetaNumber ermöglicht das Speichern und Suchen von Zahlenwerten. Die Zahlendarstellung kann je nach 
   Sprache, d. h. im Deutschen mit Komma und im Englischen mit Punkt, angegeben werden. Weiterhin sind die zusätzlichen 
   Attribute dimension und measurement möglich. Beide Attribute sind optional, ebenso wie das Default-Attribut type. 
   </p>
   <p>XML-Syntax des Metadaten-Basistyps MCRMetaNumber:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaNumber" heritable="..."&gt;
       &lt;subtag xml:lang="..." dimension="..." mesurement="..."&gt;
         ...
       &lt;/subtag&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaNumber:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;masse class="MCRMetaNumber" heritable="false"&gt;
       &lt;mass xml:lang="de" dimension="Breite" mesurement="cm"&gt;12,1&lt;/mass&gt;
       &lt;mass xml:lang="en" type="neu" dimension="width" mesurement="ft"&gt;12.2&lt;/mass&gt;
       ...
    &lt;/masse&gt;
    
   </p><![CDATA[
  ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaPersonName</p>
   <p class="Standard">Der Basistyp MCRMetaPerson beinhaltet eine Liste von Namen für natürliche Personen. Dabei wird 
   berücksichtigt, dass die Namen in verschiedenen Sprachen und international gängigen Formen auftreten können. Das 
   Attribut type dient der Differenzierung der verschiedenen Namen einer Person, Geburtsname, Synonym, Kosename usw. 
   firstname repräsentiert den/die Vornamen, callname den Rufnamen, surname den Familiennamen, academic den akademischen 
   Titel und peerage den Adelstitel und prefix Namenszusätze wie 'von', 'de' usw. fullname enthält nochmal den 
   automatisch zusammengesetzten Namen.
   </p>
   <p>XML-Syntax des Metadaten-Basistyps MCRMetaPersonName:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaPersonName" heritable="..."&gt;
       &lt;subtag type="..." xml:lang=".."&gt;
         &lt;firstname&gt;...&lt;/firstname&gt;
         &lt;callname&gt;...&lt;/callname&gt;
         &lt;surname&gt;...&lt;surname&gt;
         &lt;fullname&gt;...&lt;/fullname&gt;
         &lt;academic&gt;...&lt;/academic&gt;
         &lt;peerage&gt;...&lt;/peerage&gt;
         &lt;prefix&gt;...&lt;/prefix&gt;
       &lt;/subtag&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel des Metadaten-Basistyps MCRMetaPersonName:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaPersonName" heritable="true"&gt;
       &lt;subtag type="geburtsname" xml:lang="de"&gt;
         &lt;firstname&gt;Lisa Marie&lt;/firstname&gt;
         &lt;callname&gt;Lisa&lt;/callname&gt;
         &lt;surname&gt;Schnell&lt;surname&gt;
         &lt;fullname&gt;Schnelle, Lisa&lt;/fullname&gt;
       &lt;/subtag&gt;
       &lt;subtag type="familienname" xml:lang="de"&gt;
         &lt;firstname&gt;Lisa Marie&lt;/firstname&gt;
         &lt;callname&gt;Lisa&lt;/callname&gt;
         &lt;surname&gt;Schmidt&lt;surname&gt;
         &lt;fullname&gt;Dr. phil. Freifrau von Schnelle, Lisa&lt;/fullname&gt;
         &lt;academic&gt;Dr. phil.&lt;/academic&gt;
         &lt;peerage&gt;Freifrau&lt;/peerage&gt;
         &lt;prefix&gt;von&lt;/prefix&gt;
       &lt;/subtag&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des Metadatentyps MCRMetaXML</p>
   <p>
   Der Basistyp MCRMetaXML wurde zusätzlich als Container für einen beliebigen XML-Baum in das Projekt integriert. 
   Dieser wird in den Textknoten des Subtags gestellt und kann dort theoretisch beliebig groß sein. Achten Sie aber 
   darauf, dass entsprechend viel Speicherplatz in dem XML-SQL-Store vorgesehen wird. 
   </p>
   <p>XML-Syntax des Metadaten-Basistyps MCRMetaXML:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;tag class="MCRMetaXML" heritable="..."&gt;
       &lt;subtag type="..." &gt;
        ...
       &lt;/subtag&gt;
       ...
     &lt;/tag&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>Beispiel für die Definition dieses Datentyps in der Datamodel-Datei:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;-- beliebiges XML-Objekt --&gt; 
     &lt;element name="teixmls" minOccurs="0" maxOccurs="1"&gt;
       &lt;mcrmetaxml name="teixml" class="MCRMetaXML" minOccurs="1" maxOccurs="1"/&gt;
     &lt;/element&gt;
     
    </p><![CDATA[
   ]]></source>
   <p>und ein Beispiel mit Metadaten zum Metadaten-Basistyp MCRMetaXML:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;teixmls class="MCRMetaXML"&gt; 
       &lt;teixml inherited="0"&gt;
         &lt;TEI&gt; 
           &lt;teiHeader&gt; 
             &lt;title&gt;
               Text Encoding Initiative, ein Dokumentenformat zur Kodierung und den Austausch von Texten
             &lt;/title&gt; 
           &lt;/teiHeader&gt; 
         &lt;/TEI&gt; 
       &lt;/teixml&gt; 
     &lt;/teixmls&gt;
     
    </p><![CDATA[
   ]]></source>
   <p class="fett">XML-Syntax des XML-Knotens service</p>
   <p>
   Für die Einrichtung eines Workflow und um die Wartung großer Datenmengen zu vereinfachen sowie für den Import / 
   Export der ACL's wurde der XML-Abschnitt service in das Metadatenobjekt integriert. Hier sind Informationen wie 
   Datumsangaben, ACL's und Flags für die Verarbeitung im Batch-Betrieb enthalten. Achtung, die Tag-Namen sind fest 
   vorgegeben und dürfen nicht anderweitig verwendet werden! 
   </p>
   <p>
   Die Datumsangaben servdates verhalten sich analog zu denen in MCRMetaISO8601Date. Folgende Möglichkeiten für das 
   Attribut type sind vorgesehen. Weitere Typen sind jedoch integrierbar.
   </p>
   <dl>
   <dt><code>acceptdate</code></dt>
   <dd>Datum aus dem Dublin Core, kann frei verwendet werden.</dd>
   <dt><code>createdate</code></dt>
   <dd>Das Erzeugungsdatum des Objektes, dieser Wert wird automatisch beim Anlegen des Objektes erzeugt und bleibt 
       immer erhalten! </dd>
   <dt><code>modifydate</code></dt>
   <dd>Das Datum des letzten Update, dieser Wert wird automatisch beim Update des Objektes erzeugt und bleibt immer 
       erhalten!</dd>
   <dt><code>submitdate</code></dt>
   <dd>Datum aus dem Dublin Core, kann frei verwendet werden.</dd>
   <dt><code>validfromdate</code></dt>
   <dd>Datum aus dem Dublin Core, kann frei verwendet werden.</dd>
   <dt><code>validtodate</code></dt>
   <dd>Datum aus dem Dublin Core, kann frei verwendet werden.</dd>
   </dl>
   <p>
   Die servacls enthalten Access Control System Conditions für die genutzten Permissions wie read, writedb oder 
   deletedb. Eine genaue Beschreibung ist dem Kapitel über ACL's 
   des <link href="site:appdev_2_1">MyCoRe Programmer Guide</link> zu entnehmen. 
   </p>
   <p>
   Im servflags Teil können kurze Texte untergebracht werden. Die Anzahl der servflag Elemente ist theoretisch 
   unbegrenzt.
   </p>
   <p>XML-Syntax des service XML-Knotens:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;service&gt;
       &lt;servdates class="MCRMetaISO8601Date"&gt;
         &lt;servdate type="..."&gt;...&lt;/servdate&gt;
         ...
       &lt;/servdates&gt;
       &lt;servacls class="MCRMetaAccessRule"&gt;
         &lt;servacl permission="..."&gt;
         ...
         &lt;/servacl&gt;
       &lt;/servacls&gt;
       &lt;servflags class="MCRMetaLangText"&gt;
         &lt;servflag&gt;...&lt;/servflag&gt;
         ...
       &lt;/servflags&gt;
     &lt;/service&gt;
     
    </p><![CDATA[
   ]]></source>
  </section>
  
  <section>
   <title>Das Speichermodell für die Multimediadaten (IFS)</title>
   <p>
   Im bisherigen Verlauf dieses Kapitels wurden nur die beschreibenden Daten des multimedialen Objektes erläutert. 
   Dieser Abschnitt beschäftigt sich damit, wie die eigentlichen Objekte dem Gesamtsystem hinzugefügt werden können. 
   Im MyCoRe Projekt wurde zur Ablage der digitalen Objekte das Konzept des IFS entwickelt. Hier ist es möglich, über 
   spezielle Konfigurationen festzulegen, in welchen Speicher (Store) die einzelnen Dateien gespeichert werden sollen. 
   </p>
   <p class="Standard">Das Laden von Objekten erfolgt mittels einer Metadaten-Datei, welche alle Informationen über die 
   zu speichernde(n) Datei(en) und ihre Beziehung(en) zu den Metadaten enthält. Die zu speichernden multimedialen 
   Objekte werden im Weiteren als Derivate, also Abkömmlinge, bezeichnet, da ein Objekt in mehreren Formen, 
   Grafikformaten, auftreten kann. Die Struktur der XML-Datei für Derivate ist fest vorgegeben, alle Felder, die 
   nutzerseitig geändert werden können, sind unten beschrieben.
   </p>
   <p>XML-Syntax des Derivate-Datenmodells:</p>
   <source xml:space="preserve"><![CDATA[
    ]]><p class="kastensource">  
      
     &lt;?xml version="1.0" cncoding="ISO-8859-1" ?&gt;
       &lt;mycorederivate
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="....xsd"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         ID="..."
         label="..."
       &gt;    
         &lt;derivate&gt;
           &lt;linkmetas class="MCRMetaLinkID"&gt;
             &lt;linkmeta xlink:type="locator" xlink:href="..." /&gt;
           &lt;/linkmetas&gt;
           &lt;internals class="MCRMetaIFS"&gt;
             &lt;internal sourcepath="..." maindoc="..."/&gt;
           &lt;/internals&gt;
         &lt;/derivate&gt;
         &lt;service&gt;
           ...
         &lt;/service&gt;
       &lt;/mycorederivate&gt;
     
    </p><![CDATA[
   ]]></source>
   <ul>
   <li>Für xsi:noNamespaceSchemaLocation ist die entsprechende XML Schema-Datei anzugeben (Derivate.xsd)</li>
   <li>Die ID ist die eindeutige MCRObjectID.</li>
   <li>Der label ist ein kurzer Text-String, der bei administrativen Arbeiten an der Datenbasis das Identifizieren 
       einzelner Datensätze erleichtern soll. Er kann maximal 256 Zeichen lang sein.</li>
   <li>Die Referenz in linkmeta ist die MCRObjectID des Metadatensatzes, an den das/die Objekte angehängt werden sollen.</li>
   <li>Das Attribut sourcepath enthält die Pfadangabe zu einer Datei oder zu einem Verzeichnis, welches als Quelle 
       dienen soll. Aus diesen Dateien kann nun eine Datei ausgewählt werden, welche den Einstiegspunkt bei HTML-Seiten 
       darstellen soll. Bei einzelnen Bildern ist hier noch einmal der Dateiname anzugeben. Ist nichts angegeben, so 
       wird versucht Dateien wie index.html usw. zu finden.</li>
   </ul>
  </section>
  
 </section>
 
</section>


<section id="chapter_09">
 <title>Tipps und Problembehebung</title>
 
  <section>
   <title>XSLT in ANT geht nicht</title>
   <p>
   Beim Einsatz von SuSE Linux 10.1 kann es vorkommen, dass die Erstellung der MyCoRe-Schema-Dateien aus ANT heraus 
   scheitert. In diesem Falle sollte ant-trax-1.6.5.x nachinstalliert werden. Es ist darauf zu achten, dass trax ANT in 
   der Datei <em>/etc/ant.conf</em> bekannt gemacht wird.
   </p>
   <p>   OPT_JAR_LIST="$OPT_JAR_LIST regexp ant/ant-apache-regexp" # RPM package regexp</p>
   <p>OPT_JAR_LIST="$OPT_JAR_LIST jaxp_transform_impl ant/ant-trax" # RPM package trax</p>
  </section>
  
  <section>
   <title>Das Kommando 'ant create.schema' geht nicht</title>
   <p>
   Beim Einsatz von SuSE Linux 10.x gibt es ein Problem mit der Einbindung des Serializers in ANT. Zeile 157 ist um 
   <code>xalan-j2-serializer</code> zu ergänzen.
   </p>
   <p class="kasten">
   <code>157: LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jax p_parser_impl xml-commons-apis 
   xalan-j2-serializer)"</code>
   </p>
  </section>
  
  <section>
   <title>Java Console unter Linux Firefox</title>
   <p>
   Unter der Linux-Version des Firefox wird die Java Console nicht direkt angeboten. Diese ist aber zur Fehlersuche im 
   Applet recht hilfreich. Sie kann gesondert gestartet werden mit:
   </p>
   <p class="break"><code>/usr/lib/jvm/java-1.5.0-sun-1.5.0_07/bin/ControlPanel</code></p>
  </section>
  
 </section>

</body>
 
</document>
