[Kobv-opus-tester] SWORD
Bettina Lapp
bettina.lapp at bibliothek.uni-augsburg.de
Do Sep 27 12:52:55 CEST 2018
Lieber Hr. Schwarten, liebe Kolleginnen und Kollegen,
wir nutzen die SWORD-Schnittstelle hier in OPUS Augsburg. Ich kann mal
meine Erfahrungen bzw Einstellungen hier teilen:
> In der Doku unter https://www.opus-repository.org/userdoc/import/sword.html steht "Das voreingestellte SWORD Service Dokument enthält (unter <collection href="..."> eine falsche Deposit Adresse. Die korrekte Angabe, die in href="..." stehen sollte, lautet: https://user@password@[OPUS4-Servername]/[OPUS4-Instanz]/sword/deposit".
> Heißt dies, dass ich in der Datei .../modules/sword/models/ServiceDocument.php unter "private function setImportCollection($collectionNode)" href anpassen muss?
ich hab jedenfalls nichts angepasst. Der SWORD-Client greift sowieso
immer authentifiziert zu, sowohl auf das servicedocument als auch auf
die deposit-url. Keine Ahnung, ob diese Tatsache im servicedocument
angegeben werden muss.
> 2. Die Sammlung import und der/die User/Nutzerrolle "sworduser" werden ja bei der OPUS 4.6.x Installation angelegt. Muss die Sammlung selbst sichtbar sein für den Import?
nein
> 3. Ein Test zum Ingest von testopus.zip (opus.xml + test.pdf) mit curlich glaube man braucht schon einen sword-client irgendeiner Art, nicht
nur einen http-client.
Bei uns gibt es die Sammlung Import, Sammlungseintrag 01 Import, nicht
sichtbar. Außerdem gibt es einen user samt passwort nur für den
SWORD-Import, dieser user hat ausschließlich Zugriff auf das sword-Modul.
In der config.ini:
; SWORD related configuration settings
; ====================================
; XML-Ausgabe der SWORD-Schnittstelle formattieren ("pretty printing")
sword.prettyXml = false
; Inhalt des Elements dcterms:abstract (im Service Document für die
Default Collection)
sword.collection.default.abstract = 'OPUS Augsburg SWORD Import'
; Inhalt des Elements sword:collectionPolicy (im Service Document für
die Default Collection)
sword.collection.default.collectionPolicy = ''
; Inhalt des Elements sword:treatment (im Service Document für die
Default Collection)
sword.collection.default.treatment = ''
; Definition der Default OPUS Collection, der die via SWORD importierten
Dokumente
; zugeordnet werden
; Dieser Parameter muss zwingend in der config.ini definiert werden,
damit die
; SWORD-Schnittstelle funktioniert
; Hier muss die Nummer einer Collection innerhalb der Collection Role
"Import"
; angegeben werden
; der Name dieser Collection erscheint im Service Document im Element sword:
sword.collection.default.number = '01'
; contains the URI and version of the server software
sword.generator = 'OPUS 4'
; contains either a human-readable statement describing treatment the
deposited
; resource has received or a URI that dereferences to such a description.
sword.treatment = ''
; MIME-Types der Dateien, die importiert werden können
filetypes.pdf.mimeType = 'application/pdf'
filetypes.txt.mimeType = 'text/plain'
filetypes.htm.mimeType = 'text/html'
filetypes.html.mimeType = 'text/html'
;======
Zugriff mittels SWORD php-client Github-Repository
https://github.com/swordapp/swordapp-php-library - die v1 library weil
OPUS nur SWORD v1.3 unterstützt.
Das zu importierende Dokument muss opus.xml heißen und im
OPUS-Importformat sein, kann man z.B. zusammen mit pdf in ein zip-Paket
packen. Hier ist mal ein Beispiel, gnadenlos von dem testclient abgekupfert:
<Codebeispiel>
// Create the zipped package (force an overwrite if it already exists)
$zip = new ZipArchive();
$zip->open($importdir . '/' . $zipfile, ZIPARCHIVE::CREATE |
ZIPARCHIVE::OVERWRITE);
$zip->addFile($importdir . '/' . $xmlfile, $xmlfile);
if ($pdf) { $zip->addFile($importdir . '/' . $pdf, $pdf); }
$zip->close();
// The URL of the service document
$saurl =
"https://opus.bibliothek.uni-augsburg.de/opus4/sword/servicedocument";
// The user (if required)
$sauser = "sworduser";
// The password of the user (if required)
$sapw = "swordpassword";
// The on-behalf-of user (if required)
//$saobo = "someone at somewhere.org";
$saobo = "";
// The URL of the example deposit collection
$sadepositurl =
"https://opus.bibliothek.uni-augsburg.de/opus4/sword/deposit";
// The file to deposit
$safile = $importdir . '/' . $zipfile;
// The content type of the test file
$sacontenttype = "application/zip";
// The packaing format of the test fifle
$saformat = "http://www.opus-repository.org/sword/opus4package-v1";
require("./swordapp/swordappclient.php");
$sac = new SWORDAPPClient();
// get servicedocument
$sasdr = $sac->servicedocument($saurl, $sauser, $sapw, $saobo);
print "<p class=\"text-info\">Request Servicedocument HTTP
status code: " . $sasdr->sac_status . " (" . $sasdr->sac_statusmessage .
")</p>\n";
print "<p class=\"text-info\">About to deposit file (" . $safile
. ") to " . $sadepositurl . "</p>\n";
$sadr = $sac->deposit($sadepositurl, $sauser, $sapw, $saobo,
$safile, $saformat, $sacontenttype);
print "<p class=\"text-info\">Request Deposit HTTP status code:
" . $sadr->sac_status . " (" . $sadr->sac_statusmessage . ")</p>\n";
if ($sadr->sac_status == 201) {
print "<p class=\"text-success\"> - ID: " . $sadr->sac_id .
"<br />\n";
print " - Title: " . $sadr->sac_title . "<br />\n";
....
}
</Codebeispiel>
Ich hoffe, das war hilfreich, Sie können mich gerne anmailen oder
anrufen für weitere Infos.
herzliche Grüße, Bettina Lapp
Am 27.09.2018 um 09:19 schrieb Martin Schwarten:
> Liebe Kolleginnen und Kollegen,
>
> ein zweiter Versuch zum Thema. Gibt es wirklich keinen der SWORD in
> OPUS nutzt bzw. Erfahrungen mit dieser Schnittstelle hat und etwas dazu
> sagen/schreiben kann?
>
>
> Viele Grüße
> Martin Schwarten
>
--
Universitätsbibliothek Augsburg
Referat IT der Bibliothek
86135 Augsburg
Tel. +49 821 598-5370
Fax +49 821 598-5407
bettina.lapp at bibliothek.uni-augsburg.de
https://www.bibliothek.uni-augsburg.de
Mehr Informationen über die Mailingliste Kobv-opus-tester