Forum

Fil avec beaucoup de réponses

Bitte um Test: Export nach Zotero


Auteur Message
le: 21. 02. 2020 [15:46]
nicolausbusch
Auteur du fil
Inscrit depuis: 26.04.2012
Interventions: 852
Litlink-Version: 5

Liebe Litlink UserInnen

Wir arbeiten an einer Exportfunktion, die es ermöglichen soll, möglichst umfangreich in Litlink erfasste Daten in andere Systeme zu übertragen. Als Medium bietet sich hier natürlich Zotero an.
Folgendes haben wir getan: es gibt eine neue Zitierform, die einen Text mit Daten im Format RIS erstellt (Das RIS-Format in der von Zotero unterstützten Form ist hier dokumentiert: https://github.com/aurimasv/translators/wiki/RIS-Tag-Map). Haben Sie diese Zitierform eingestellt, können Sie mit der Funktion "Kopiere Zit-Form in Zwischenablage" einen einzelnen Titel oder auch ein ganzes Titelverzeichnis im RIS-Format im Clipboard (Zwischenablage) produzieren.
In der Zotero-App wählen Sie dann "Importieren aus Zwischenablage" (Ctrl-Alt-Shift-I). Achtung: dies funktioniert nicht im Browser, Sie müssen Zotero lokal installiert haben.
Die Funktion ist schon recht mächtig, Karteikarten werden ebenso übernommen wie Links auf Dateien und Schlagworte. Einzig bei den URLs stehen wir etwas an, hier scheint Zotero entgegen der Spezifikation nur eine URL anzunehmen. Ein Eintrag im Feld URL kommt also an, aber nicht die Einträge unter Weblinks.
Wichtig wäre nun der Praxistest mit möglichst vielen verschiedenen Daten. Dazu möchte ich Sie bitten, eine neue Zitierform "RIS Export Titel" vom Typ "Titel" anzulegen und die nachstehende Definition hineinzukopieren. Versuchen Sie dann mit realen Daten, ob diese einzeln oder im Paket sauber bei Zotero ankommen. Und interessiert hier insbesondere: kommen alle Ihre Daten an? Landet alles im richtigen Feld, wenn nein, wo müsste es hin? Stimmen die Zuordnungen der Eintragsarten? Je präziser Ihr Feedback ausfällt, desto besser können wir die Zitierform anpassen.

=================== ALLES UNTERHALB KOPIEREN ============

//Litlink 5 Zitierform RIS Export Titel

Let([

//Personendaten vorbereiten¶

$tmp_AutorPerson =
Trim( DTitel::d_AutorNachname_t & Case( not IsEmpty( DTitel::d_AutorVorname_t ) ; "," &
DTitel::d_AutorVorname_t ) & DTitel::xCalc_Pseudonym_ctu ) ;

$tmp_Coautoren = MBS("list.sort" ;Substitute( List( DTitel.Coautor::xCalc_NameAutorKomplett_cti) ; ", ";","));
$Autoren =
List( "AU - " & $tmp_Autorperson;
MBS("list.AddPrefix" ; $tmp_Coautoren ; "A1 - ";1)
) ;


//Herausgeber ermitteln

$HrsgStatus =
Case( IsEmpty( DTitel::d_HerausgeberName_t ) and IsEmpty( DTitel::d_Körperschaft_t ) and DTitel::d_Herausgeber_n <> 1 ; 0;
/* Einfacher Autor, kein Hg. (d_Herausgeber_n = 1 bedeutet, der Autor ist Hrsg.) */
IsEmpty( DTitel::d_HerausgeberName_t ) and DTitel::d_Herausgeber_n = 1 ; 1 ;
/* Autor ist Hg. */
not IsEmpty( DTitel::d_HerausgeberName_t ) and IsEmpty( DTitel::d_AutorNachname_t ); 2;
/* Kein Autor, aber Hg. */
not IsEmpty( DTitel::d_HerausgeberName_t ) and not IsEmpty( DTitel::d_AutorNachname_t ); 3;
/* Autor und separater Hg. */
not IsEmpty( DTitel::d_Körperschaft_t ) and not IsEmpty( DTitel::d_AutorNachname_t ); 4;
/* Autor und Körperschaft als Hg. */
not IsEmpty( DTitel::d_Körperschaft_t ) and IsEmpty( DTitel::d_AutorNachname_t ); 5);
/* Kein Autor, Körperschaft als Hg. */

$Herausgeber =
Case(
$HrsgStatus = 0 ; "" ;
$HrsgStatus = 1 ; "ED - " & $tmp_AutorPerson ;
$HrsgStatus = 2 ; "ED - " & DTitel::d_HerausgeberName_t ;
$HrsgStatus = 3 ; "ED - " & DTitel::d_HerausgeberName_t ;
$HrsgStatus = 4 ; "ED - " & DTitel::d_Körperschaft_t ;
$HrsgStatus = 5 ; "ED - " & DTitel::d_Körperschaft_t
);

//Datentyp festlegen

$Type = Case(
DTitel::d_Datentyp2_t = "Sammelband" ; "BOOK";
DTitel::d_Datentyp2_t = "Monographie" ; "BOOK";
DTitel::d_Datentyp2_t = "Werkausgabe" ; "SER";
DTitel::d_Datentyp2_t = "Artikel" ; "JOUR";
DTitel::d_Datentyp2_t = "Aufsatz" ; "CHAP";
DTitel::d_Datentyp2_t = "Interview" ; "PCOMM";
DTitel::d_Datentyp2_t = "Reihe" ; "SER";
DTitel::d_Datentyp2_t = "Tagung" ; "SER";
DTitel::d_Datentyp2_t = "Vortrag" ; "CONF";
DTitel::d_Datentyp2_t = "Brief" ; "PCOMM";
DTitel::d_Datentyp2_t = "Gerichtsentscheid" ; "CASE";
DTitel::d_Datentyp2_t = "Gutachten" ; "HEAR";
DTitel::d_Datentyp_t = "m" ; "ADVS";
DTitel::d_Datentyp_t = "p" ; "ADVS";
DTitel::d_Datentyp_t = "w" ; "ELEC";
"GEN"
);

//Schlagworte
$Keywords = MBS("list.AddPrefix" ; DTitel::d_Schlagworte_t ; "KW - ";1) ;

//Karteikarten, Exzerpt und Kommentar in $LNotes umwandeln
//...erstmal die Abfrage für die Karteikarten vorbereiten...
~queryForm =
"SELECT <Seiten>
+ ':' + CASE WHEN <Zitat> IS NOT NULL THEN '\"'+ TRIM(<Zitat>) + '\"' ELSE '' END
+ CASE WHEN <Kommentar> IS NOT NULL THEN '¶'+ TRIM(<Kommentar>) ELSE '' END
FROM <Kartei>
WHERE <ID_Titel> = ?
ORDER BY <SeiteVon>";

//...Form mit korrekten Feldbezeichnern ergänzen...
~query =
Substitute( ~queryForm;

["<Seiten>" ; "xCalc_AnzeigeSeiten_ctu" ];
["<Zitat>" ; "d_Zitat_t" ];
["<Kommentar>" ; "d_Kommentar_t" ];
["<ID_Titel>" ; "\"_fk_Titel_t\"" ];
["<SeiteVon>" ; "d_SeiteVon_n" ];
["<Kartei>" ; "DKartei" ]
)
;

//N1 = Notes, N2 = Abstract
//...Kommentar und Rezension sowie Exzerpt vorbereiten, SQL-Abfrage von oben ausführen und alles verwursten zu $LNotes
$Note1 = Case (not IsEmpty(DTitel::d_Kommentar_t) ; "N1 - Kommentar:¶" & DTitel::d_Kommentar_t );
$Note1 = _TryPair( $Note1; Case (not IsEmpty(DTitel::d_Rezension_t) ; "N1 - " &DGlobals::d_BezeichnerRezension_tg & ":¶" & DTitel::d_Rezension_t ) ;"¶";"";"");
$Notes = Substitute( ExecuteSQL ( ~query ; "" ; "##//##" ; DTitel::_pk_GUID ) ;¶; "<br>");

$Note2 = Case (not IsEmpty(DTitel::d_Exzerpt_t) ; "N2 - " & DTitel::d_Exzerpt_t );

$LNotes =
_TryString ( $Note1 ; "" ; "¶" ) &
_TryString ( $Note2 ; "" ; "¶" ) &
Substitute( MBS( "List.AddPrefix"; Substitute ( $Notes;"##//##";¶) ; "N1 - ";1 ) ; "<br>";¶) ;

//Links in $LLinks umwandeln
~websites = List ( DTitel.Website::d_URL_t );
~links = List ( DTitel.File::d_Pfad_t );

//UR = URL, L1 = Link ($LSites funktioniert in Zotero derzeit nicht, nur eine URL übergebbar)
$LSites = MBS( "List.AddPrefix"; ~websites ; "UR - ";1 ) ;
$LLinks= MBS( "List.AddPrefix"; ~links ; "L4 - " ;1) ;

//Alle abhängigen Daten in eine gemeinsame Liste zum Anhängen giessen
$Anhang = List($LNotes;$Lsites;$LLinks);

//Den Rest vorbereiten
$StartTag = "TY - " & $type;
$EndTag = "ER - ";
$Titel = "T1 - " & DTitel::d_Titel_t;
$Date = "Y1 - " & Case (
not IsEmpty(DTitel::d_DatumJahr_n) ; DTitel::d_DatumJahr_n & "/" & DTitel::d_DatumMonat_n & "/" & DTitel::d_DatumTag_n ;
IsValid ( GetAsDate(DTitel::d_Datierung_t)); Year(GetAsDate(DTitel::d_Datierung_t)) & "/" & Month(GetAsDate(DTitel::d_Datierung_t)) & "/" & Day(GetAsDate(DTitel::d_Datierung_t)) ;
Length( GetAsNumber ( DTitel::d_Datierung_t )) = 4; GetAsNumber( DTitel::d_Datierung_t) & "//" & Substitute( DTitel::d_Datierung_t ; GetAsNumber ( DTitel::d_Datierung_t );"")
); //end case
$Year = "PY - " & Middle($Date;7;Position ( $Date ; "/" ; 1 ; 1 )-7);
$tmp_Seiten = Substitute(DTitel::d_AusgabeSeite_t;[" ";""];["/";"¶"];["-";"¶"];["bis";"¶"]);
$SeiteVon = "SP - " & GetValue ( $tmp_Seiten ; 1);
$SeiteBis = "EP - " & GetValue ( $tmp_Seiten ; 2);
$Periodikum = "JF - " & DTitel.Periodikum::d_Titel_t;
$PeriodikumSigle = "JO - " & DTitel.Periodikum::d_Sigle_t;
$Reihe = "T2 - " & Case( DTitel::d_Datentyp2_t = "Aufsatz"; DTitel.Titel.Sammelband::d_Titel_t ; DTitel::d_Reihe_t);
$Nummer = "M1 - " & DTitel::d_AusgabeNr_t;
$Sig = "CN - " & DTitel::d_Signaturen_t;
$Bib = Case( DTitel::d_Datentyp_t = "d";"DB - "; "DP - ") & DTitel.Bibliothek::d_Kurzname_t;
$Standort = Case( DTitel::d_Datentyp_t = "d";"AN - " & DTitel::d_Archivbestand_t);
$Volume = "VL - " & DTitel::d_AusgabeVol_t;
$Ausgabe = "IS - " & DTitel::d_AusgabeNr_t;
$Auflage = "ET - " & DTitel::d_Auflage_t;
$Sprache = "LA - " & DTitel::d_Sprache_t;
$Ort = "CY - " & DTitel::d_Ort_t;
$Verlag = "PB - " & DTitel::d_Verlag_t;
$URL = "UR - " & DTitel::d_URL_t;
$Gesichtet = "Y2 - " & DTitel::d_DatumGesichtet_d;
$Quelle = "M2 - " & "Litlink 5 - " & cf.LL_DatentypLangform & " - " & DTitel::d_Datentyp2_t;
$ISBN = "SN - " & Case(
not IsEmpty ( DTitel.Periodikum::d_ISSN_t ); DTitel.Periodikum::d_ISSN_t;
not IsEmpty ( DTitel.Titel.Sammelband::d_ISBN_t ); DTitel.Titel.Sammelband::d_ISBN_t;
DTitel::d_ISBN_t
); //end case


//Alles zusammenfügen
$result = List($StartTag; $Autoren;$Herausgeber;$Titel;$Date;$Year;$SeiteVon;$SeiteBis;$PeriodikumSigle;$Periodikum;$Ort;$Verlag;$ISBN;$Reihe;$Nummer;$URL;$Gesichtet;$Bib;$Sig;$Standort;$Auflage;$Volume;$Ausgabe;$Sprache;$Keywords;$Anhang;$Quelle;$EndTag)
];

$result
) //End let

=================== ALLES OBERHALB KOPIEREN ============
le: 26. 02. 2020 [14:10]
klausl
Inscrit depuis: 26.03.2015
Interventions: 16
Zunächst mal: Das Einrichten des Formats hat wie beschrieben geklappt (wobei ich, zugegeben, die Stelle für das Einrichten eines neuen Formats nur mühselig gefunden habe - der Screenshot im Tutorial ist da wohl nicht mehr ganz aktuell ... bestimmt aber auch mein Problem, weil ich die Stelle viel zu selten benötige ...).

Probiert habe ich folgende Dokumenttypen mit diesen Ergebnissen:

Buch +

Buch in Schriftenreihe: Nr. wird übernommen, Titel der Reihe nicht; bei "Autor=Hrsg." werden aus zwei Autoren/Herausgebern zwei Autoren + ein Hrsg.

Zeitschriftenaufsatz +

Aufsatz in Sammelwerk: in RIS werden die Aufsatzdaten übernommen; der Titel des Sammelwerks ist vorhanden, weitere Angaben nicht: Hrsg., Verlag, Verlagsort, Erscheinungsjahr

Zeitungsartikel +

Abschlussarbeit (Diss etc.): hier habe ich Uni, Institut und Art der Arbeit (z.B. Bachelorarbeit) in "Bibl. Zusätze", was nicht übernommen wird

Untersucht habe ich nur die Vollständigkeit der bibliografischen Daten, keine zusätzlichen Daten (Kartei etc.); davon habe ich nicht so sehr viele. Die Probleme sind wohl hauptsächlich darauf zurückzuführen, dass Zotero/RIS alle Daten verknüpfter Werke in einem Datensatz enthält, Litlink diese jedoch in mehreren Datensätzen vorhält (was natürlich eindeutig eleganter ist!) - diese werden (noch) nicht vollständig vom Format gezogen.

Soweit der erste Test ...

Grüße

Klaus Lepsky





le: 26. 02. 2020 [15:03]
nicolausbusch
Auteur du fil
Inscrit depuis: 26.04.2012
Interventions: 852
Vielen Dank, das sind schon einmal sehr hilfreiche Rückmeldungen. Tatsächlich habe ich in RIS nichts gefunden, was den "Bibl. Zusätzen" entsprechen würde, mal schauen, ob mir dort noch etwas einfällt.

>>bei "Autor=Hrsg." werden aus zwei Autoren/Herausgebern zwei Autoren + ein Hrsg."

Korrekt sollte es in diesem Fall keinen Autor geben aber zwei Hrsg., richtig? Alle anderen genannten Punkte sollte ich noch einbauen können, hier müsste m.E. die Abfrage immer in der Form erweitert werden:
Verlag = Wenn IstLeer (Titel::Verlag)==> Sammelband::Verlag, Sonst Titel::Verlag

le: 26. 02. 2020 [17:43]
klausl
Inscrit depuis: 26.03.2015
Interventions: 16
"nicolausbusch" schrieb:

Vielen Dank, das sind schon einmal sehr hilfreiche Rückmeldungen. Tatsächlich habe ich in RIS nichts gefunden, was den "Bibl. Zusätzen" entsprechen würde, mal schauen, ob mir dort noch etwas einfällt.


Nun ja, die Verwendung des Felds "Bibl. Zusätze" war meine Lösung für das Problem, dass es für den Zotero-Typ "Dissertation" zwei Felder gibt, deren Inhalt ich retten wollte: "Art" (gemeint ist Art der Abschlussarbeit) und "Universität"; da landet dann der Name der Uni, Fakultät etc.

Dass das nun umgekehrt nicht gut gehen würde, war eigentlich klar, denn in Litlink schreibe ich beide Feldinhalte in ein Feld ...

"nicolausbusch" schrieb:

Korrekt sollte es in diesem Fall keinen Autor geben aber zwei Hrsg., richtig? Alle anderen genannten Punkte sollte ich noch einbauen können, hier müsste m.E. die Abfrage immer in der Form erweitert werden:
Verlag = Wenn IstLeer (Titel::Verlag)==> Sammelband::Verlag, Sonst Titel::Verlag


Richtig, so hatte ich die Option "Autor=Hrsg." immer interpretiert: Wenn es einen oder mehrere Autoren gibt und dieser Haken gesetzt ist, sind das alles Herausgeber. Im Zitierformat macht Litlink das ja auch entsprechend.

Wie zuverlässig die Abfrage leerer Felder die Verknüpfungsprobleme abfängt, kann ich nicht genau abschätzen. Die Abfrage im Zitierformat macht ja keine Fallunterscheidung für unterschiedliche Datentypen, falls ich das richtig interpretiere. Wenn es diese gäbe, wäre es beispielsweise eindeutig, welche Felder aus dem Datensatz "Aufsatz" und welche aus dem zugehörigen "Sammelband" zu zu ziehen sind. Wobei dieser ja zu allem Überfluss auch wieder in einer Reihe erschienen sein könnte.

Und das alles nur wegen der schlechten Angewohnheit von RIS und Zotero (und anderen), Daten von mehreren Dokumenten in einem Datenatz zu erfassen ;-)

Grüße

Klaus Lepsky


le: 05. 03. 2020 [21:24]
michhoff
Inscrit depuis: 13.02.2013
Interventions: 9
Hallo Herr Busch,

vielen Dank für die Entwicklung und das Tuning der Exportmöglichkeit nach Zotero! Hier meine ersten Ergebnisse des Imports über die Zwischenablage:

(Ich verwende LitLink 5.01.013 unter MacOS 10.13 und Zotero 5.0.84)

1. Bei einem Buchbeitrag (Aufsatz) wurden einige Angaben nicht übertragen, die im im LL-Datensatz des Sammelbandes angelegt sind: Ort, Verlag, Name des Herausgebers, Signatur, Reihe/Serie. Richtig übernommen wurden Jahr und Titel des Sammelbandes sowie Autor, TItel und Seitenzahl des Buchbeitrags. Auch Kommentar und Schlagworte wurden richtig übertragen.

(auch bei anderen Datensätzen diesen Typs passierte das Gleiche - auch wenn der Sammelband keinen Herausgeber, sondern einen Autor ohne Herausgeber-Vermerk hatte)

2. Bei der Übernahme des Datensatzes, der den Sammelband repräsentiert, wurden die fraglichen Felder richtig übertragen. Allerdings wurde ein Herausgeber immer auch zusätzlich als Autor übertragen, und bei zwei bzw. drei Herausgebern kamen der 2. Hg. und der 3. Hg. nur als "Autor" hinzu, was beides nicht korrekt ist.

3. Die "Bibl. Zusätze" werden nicht übertragen (getestet bei Sammelband).

4. Wenn eine Karteikarte mit dem Titel verbunden ist, wird diese auch sinnvoll in einen Zotero-Kommentar übertragen, allerdings steht am Anfang ein Doppelpunkt (vor diesem sollte wohl "Kartei" stehen?)

Soweit erstmal, weitere Ergebnisse wohl bald in einer neuen Nachricht.

Viele Grüße

Michael Hoff


le: 05. 03. 2020 [22:06]
michhoff
Inscrit depuis: 13.02.2013
Interventions: 9
Hallo Herr Busch,

hier noch ein paar Punkte:

Die Übernahme von Zeitschriftenartikeln ist schon sehr gut.

wünschen würde ich mir aber noch, dass auch die Inhalte von "URL", "Gesichtet", "Eigene", "Aktion/Aufgabe" und "Projekte" übertragen werden, am einfachsten wohl in einen Zotero-Kommentar (mit vorangestellten Feldnamen).

Und Exzerpt-Texte besser auch als Zotero-Kommentar, nicht in "Zusammenfassung/Abstract" (für dieses Feld könnten die Exzerpte zu lang werden?).

Vielen Dank und beste Grüße

Michael Hoff
le: 06. 03. 2020 [16:24]
nicolausbusch
Auteur du fil
Inscrit depuis: 26.04.2012
Interventions: 852
Hier die Version 2, die meisten Punkte sollten abgearbeitet sein. Was ich nicht tun möchte:
- Herausgeber über drei Ebenen ermitteln (Aufsatz im Sammelband in einer Reihe), das ist in Zotero nicht abbildbar.
- Alle möglichen Felder, die in Zotero und anderen System nicht unterstützt werden, als Kommentare exportieren. Wer das haben möchte kann es natürlich gerne ergänzen.
===================

//Litlink 5 Zitierform RIS Export Titel

Let([

//Datentyp festlegen

$Type = Case(
DTitel::d_Datentyp2_t = "Sammelband" ; "BOOK";
DTitel::d_Datentyp2_t = "Monographie" ; "BOOK";
DTitel::d_Datentyp2_t = "Werkausgabe" ; "SER";
DTitel::d_Datentyp2_t = "Artikel" ; "JOUR";
DTitel::d_Datentyp2_t = "Aufsatz" ; "CHAP";
DTitel::d_Datentyp2_t = "Interview" ; "PCOMM";
DTitel::d_Datentyp2_t = "Reihe" ; "SER";
DTitel::d_Datentyp2_t = "Tagung" ; "CONF";
DTitel::d_Datentyp2_t = "Vortrag" ; "CPAPER";
DTitel::d_Datentyp2_t = "Brief" ; "PCOMM";
DTitel::d_Datentyp2_t = "Gerichtsentscheid" ; "CASE";
DTitel::d_Datentyp2_t = "Gutachten" ; "HEAR";
DTitel::d_Datentyp_t = "m" ; "MULTI";
DTitel::d_Datentyp_t = "p" ; "MULTI";
DTitel::d_Datentyp_t = "w" ; "ELEC";
"GEN"
);

//Personendaten vorbereiten¶

$tmp_AutorPerson =
_TryPair ( DTitel::d_AutorNachname_t; DTitel::d_AutorVorname_t; ", "; "" ; "" ) &
DTitel::xCalc_Pseudonym_ctu
;

$tmp_Coautoren =
MBS("list.sort" ;
Substitute(
List( DTitel.Coautor::xCalc_NameAutorKomplett_cti) ;
", ";",")
);

$Autoren =
List( "AU - " & $tmp_Autorperson;
MBS("list.AddPrefix" ; $tmp_Coautoren ; "A1 - ";1)
) ;


//Herausgeber ermitteln

$HrsgStatus =
Case(
/* Autor ist Hg. */
DTitel::d_Herausgeber_n = 1 ; 1 ;
/* Kein Autor, aber Hg. */
not IsEmpty( DTitel::d_HerausgeberName_t ) and IsEmpty( DTitel::d_AutorNachname_t ); 2;
/* Autor und separater Hg. */
not IsEmpty( DTitel::d_HerausgeberName_t ) and not IsEmpty( DTitel::d_AutorNachname_t ); 3;
/* Autor und Körperschaft als Hg. */
not IsEmpty( DTitel::d_Körperschaft_t ) and not IsEmpty( DTitel::d_AutorNachname_t ); 4;
/* Kein Autor, Körperschaft als Hg. */
not IsEmpty( DTitel::d_Körperschaft_t ) and IsEmpty( DTitel::d_AutorNachname_t ); 5;
/* Einfacher Autor, kein Hg. (d_Herausgeber_n = 1 bedeutet, der Autor ist Hrsg.) */
IsEmpty( DTitel::d_HerausgeberName_t ) and IsEmpty( DTitel::d_Körperschaft_t )
and DTitel::d_Herausgeber_n <> 1 ; 0
);

//Daten verlinkter Hrsg. holen
//...erstmal die Abfrage vorbereiten...
~queryForm =Case(
DTitel::d_Herausgeber_n=1;
"SELECT <Name>
FROM <Autoren>
WHERE <ID_Autor> IN
(SELECT <ID_Child> FROM <Relation> WHERE <ID_Parent> = ? AND <Typ> IN ( 'Titel-Coautor', 'Titel-Autor'))
ORDER BY <Name>";
"SELECT <Name>
FROM <Autoren>
WHERE <ID_Autor> IN (SELECT <ID_Child> FROM <Relation> WHERE <ID_Parent> = ? AND <Typ> = 'Titel-Herausgeber')
ORDER BY <Name>"
);

//...Form mit korrekten Feldbezeichnern ergänzen...
~queryHrsg =
Substitute( ~queryForm;
["<Name>" ; "\"xCalc_NameAutorKomplett_cti\"" ];
["<Typ>" ; "\"d_RelationType_t\"" ];
["<ID_Autor>" ; "\"_pk_GUID\"" ];
["<ID_Child>" ;"\"_fk_IDchild_t\"" ];
["<ID_Parent>" ;"\"_fk_IDparent_t\"" ];
["<Autoren>" ; "DAutor" ];
["<Relation>" ; "DRelation" ]
);

//...SQL-Abfrage ausführen
$tmpHrsg =
ExecuteSQL ( ~queryHrsg ; "" ; "¶" ; DTitel::_pk_GUID );

$Hrsg=
Case(
not IsEmpty( $tmpHrsg );
$tmpHrsg ;
DTitel::d_HerausgeberName_t
);

//Daten verlinkter Hrsg.des Sammelbandes holen
//...erstmal die Abfrage vorbereiten...
~queryForm = Case(
DTitel.Titel.Sammelband::d_Herausgeber_n=1;
"SELECT <Name>
FROM <Autoren>
WHERE <ID_Autor> IN
(SELECT <ID_Child> FROM <Relation> WHERE <ID_Parent> = ? AND <Typ> IN ( 'Titel-Coautor', 'Titel-Autor'))
ORDER BY <Name>";
"SELECT <Name>
FROM <Autoren>
WHERE <ID_Autor> IN (SELECT <ID_Child> FROM <Relation> WHERE <ID_Parent> = ? AND <Typ> = 'Titel-Herausgeber')
ORDER BY <Name>"
);

//...Form mit korrekten Feldbezeichnern ergänzen...
~queryHrsgSB =
Substitute( ~queryForm;
["<Name>" ; "\"xCalc_NameAutorKomplett_cti\"" ];
["<Typ>" ; "\"d_RelationType_t\"" ];
["<ID_Autor>" ; "\"_pk_GUID\"" ];
["<ID_Child>" ;"\"_fk_IDchild_t\"" ];
["<ID_Parent>" ;"\"_fk_IDparent_t\"" ];
["<Autoren>" ; "DAutor" ];
["<Relation>" ; "DRelation" ]
);

//...SQL-Abfrage ausführen
$tmpHrsgSB =
Case( not IsEmpty ( DTitel::_fk_Sammelband_t);
ExecuteSQL ( ~queryHrsgSB ; "" ; "¶" ; DTitel.Titel.Sammelband::_pk_GUID );
""
);

$HrsgSB=
Case(
not IsEmpty( $tmpHrsgSB );
$tmpHrsgSB;
DTitel.Titel.Sammelband::d_HerausgeberName_t
);



$Herausgeber =
List(
Case(
$HrsgStatus = 0 ; "" ;
$HrsgStatus = 1 ; case(
$Type = "BOOK";
MBS("list.AddPrefix" ; $tmpHrsg ; "A3 - ";1);
MBS("list.AddPrefix" ; $tmpHrsg ; "A2 - ";1)
);
$HrsgStatus = 2 ; MBS("list.AddPrefix" ; $tmpHrsg ; "ED - ";1) ;
$HrsgStatus = 3 ; MBS("list.AddPrefix" ; $tmpHrsg ; "ED - ";1) ;
$HrsgStatus = 4 ; "ED - " & DTitel::d_Körperschaft_t ;
$HrsgStatus = 5 ; "ED - " & DTitel::d_Körperschaft_t
) ;
Case(
not IsEmpty($tmpHrsgSB);
MBS("list.AddPrefix" ; $tmpHrsgSB ; "A2 - ";1);
"A2 - " & DTitel.Titel.Sammelband::xCalc_NameAutorKomplett_cti
)
);

//Bei Autor = Herausgeber gibt es nur Hrsg, keine Autoren

$Autoren =
Case( $HrsgStatus = 1 ;
"";
$Autoren
) ;

//Schlagworte

$Keywords =
MBS("list.AddPrefix" ; DTitel::d_Schlagworte_t ; "KW - ";1) ;

//Karteikarten, Exzerpt und Kommentar in $LNotes umwandeln

//...erstmal die Abfrage für die Karteikarten vorbereiten...
~queryForm =
"SELECT <Seiten>
+ ':' + CASE WHEN <Zitat> IS NOT NULL THEN '\"'+ TRIM(<Zitat>) + '\"' ELSE '' END
+ CASE WHEN <Kommentar> IS NOT NULL THEN '¶'+ TRIM(<Kommentar>) ELSE '' END
FROM <Kartei>
WHERE <ID_Titel> = ?
ORDER BY <SeiteVon>";

//...Form mit korrekten Feldbezeichnern ergänzen...
~query =
Substitute( ~queryForm;
["<Seiten>" ; "xCalc_AnzeigeSeiten_ctu" ];
["<Zitat>" ; "d_Zitat_t" ];
["<Kommentar>" ; "d_Kommentar_t" ];
["<ID_Titel>" ; "\"_fk_Titel_t\"" ];
["<SeiteVon>" ; "d_SeiteVon_n" ];
["<Kartei>" ; "DKartei" ]
);

//...SQL-Abfrage ausführen
$Notes =
Substitute( ExecuteSQL ( ~query ; "" ; "##//##" ; DTitel::_pk_GUID ) ;¶; "<br>");

//...Kommentar und Rezension sowie Exzerpt vorbereiten
//...(N1 = Notes, N2 = Abstract)
$KomTemp =
Case (not IsEmpty(DTitel::d_Kommentar_t) ; "N1 - Kommentar:¶" & DTitel::d_Kommentar_t );
$RezTemp=
Case (not IsEmpty(DTitel::d_Rezension_t) ; "N1 - " & DGlobals::d_BezeichnerRezension_tg & ":¶" & DTitel::d_Rezension_t );

$Note1 =
_TryPair( $KomTemp; $RezTemp ; "¶";"";"");
$Note2 =
Case (not IsEmpty(DTitel::d_Exzerpt_t) ; "N2 - " & DTitel::d_Exzerpt_t );

//...und alles verwursten zu $LNotes
$LNotes =
_TryString ( $Note1 ; "" ; "¶" ) &
_TryString ( $Note2 ; "" ; "¶" ) &
Substitute( MBS( "List.AddPrefix"; Substitute ( $Notes;"##//##";¶) ; "N1 - ";1 ) ; "<br>";¶) ;

//Links in $LLinks, Websites in $LSites umwandeln

~websites =
List ( DTitel.Website::d_URL_t );
~links =
List ( DTitel.File::d_Pfad_t );

//UR = URL, L1 = Link ($LSites funktioniert in Zotero derzeit nicht, nur eine URL übergebbar)

$LSites = MBS( "List.AddPrefix"; ~websites ; "UR - ";1 ) ;
$LLinks= MBS( "List.AddPrefix"; ~links ; "L4 - " ;1) ;

//Alle abhängigen Daten in eine gemeinsame Liste zum Anhängen giessen

$Anhang = List($LNotes;$Lsites;$LLinks);

//Den Rest vorbereiten

$StartTag = "TY - " & $type;
$EndTag = "ER - ";
$Titel = "T1 - " & DTitel::d_Titel_t;
//...Datierung kommt vom Sammelband, wenn Titel keine hat
$DatTemp = Case(
not IsEmpty(DTitel::d_Datierung_t );
DTitel::d_Datierung_t;
DTitel.Titel.Sammelband::d_Datierung_t
);
$Date =
"PY - " & Case (
//...Titel enthält ein Datum in den Jahr/Monat/Tag Feldern
not IsEmpty(DTitel::d_DatumJahr_n) ;
DTitel::d_DatumJahr_n & "/" & DTitel::d_DatumMonat_n & "/" & DTitel::d_DatumTag_n ;
// ...Das Feld Datierung enthält eine Jahreszahl, der Rest wird Anmerkung
Length( GetAsNumber ( $DatTemp )) = 4;
GetAsNumber( $DatTemp ) & "//" & Substitute( $DatTemp ;
GetAsNumber ( $DatTemp );"");
//...Das Feld Datierung enthält irgendetwas anderes
not IsEmpty( $DatTemp );
$DatTemp
); //end case

$tmp_Seiten = Substitute(DTitel::d_AusgabeSeite_t;[" ";""];["/";"¶"];["-";"¶"];["bis";"¶"]);
$SeiteVon = "SP - " & GetValue ( $tmp_Seiten ; 1);
$SeiteBis = "EP - " & GetValue ( $tmp_Seiten ; 2);
$PeriodikumSigle = "JO - " & DTitel.Periodikum::d_Sigle_t;

//...RIS T2 wird unterschiedlich interpretiert je nach Datentyp
$Reihe =
"T2 - " & Case(
not IsEmpty(DTitel.Titel.Sammelband::d_Titel_t ) ;
DTitel.Titel.Sammelband::d_Titel_t ;
not IsEmpty(DTitel.Periodikum::d_Titel_t ) ;
DTitel.Periodikum::d_Titel_t ;
DTitel::d_Reihe_t
);

$Nummer = "M1 - " & DTitel::d_AusgabeNr_t;
$Sig = "CN - " & Case(
not IsEmpty(DTitel::d_Signaturen_t );
DTitel::d_Signaturen_t;
DTitel.Titel.Sammelband::d_Signaturen_t
);
$Bib = Case( DTitel::d_Datentyp_t = "d";"DB - "; "DP - ") & DTitel.Bibliothek::d_Kurzname_t;
$Standort = Case( DTitel::d_Datentyp_t = "d";"AN - " & DTitel::d_Archivbestand_t);
$Volume = "VL - " & DTitel::d_AusgabeVol_t;
$Ausgabe = "IS - " & DTitel::d_AusgabeNr_t;
$Auflage = "ET - " & Case(
not IsEmpty(DTitel::d_Auflage_t );
DTitel::d_Auflage_t;
DTitel.Titel.Sammelband::d_Auflage_t
);
$Sprache = "LA - " & DTitel::d_Sprache_t;

$Ort =
"CY - " & Case(
not IsEmpty ( DTitel.Periodikum::d_Ort_t ); DTitel.Periodikum::d_Ort_t;
not IsEmpty ( DTitel.Titel.Sammelband::d_Ort_t ); DTitel.Titel.Sammelband::d_Ort_t;
DTitel::d_Ort_t
); //end case

$Verlag =
"PB - " & Case(
not IsEmpty ( DTitel.Periodikum::d_Verlag_t ); DTitel.Periodikum::d_Verlag_t;
not IsEmpty ( DTitel.Titel.Sammelband::d_Verlag_t ); DTitel.Titel.Sammelband::d_Verlag_t;
DTitel::d_Verlag_t
); //end case

$ISBN =
"SN - " & Case(
not IsEmpty ( DTitel.Periodikum::d_ISSN_t ); DTitel.Periodikum::d_ISSN_t;
not IsEmpty ( DTitel.Titel.Sammelband::d_ISBN_t ); DTitel.Titel.Sammelband::d_ISBN_t;
DTitel::d_ISBN_t
); //end case

$URL = "UR - " & DTitel::d_URL_t;
$Gesichtet = "Y2 - " & DTitel::d_DatumGesichtet_d;
$Zusatz = "M2 - " & Case( not IsEmpty ( DTitel::d_BibliogrZusätze_t ) ; DTitel::d_BibliogrZusätze_t & "¶M2 - ---");
$Quelle = "M2 - " & "Litlink 5 - " & cf.LL_DatentypLangform & " - " & DTitel::d_Datentyp2_t;


//Alles zusammenfügen
$result =
List( $StartTag; $Autoren;$Herausgeber;$Titel;$Date;$SeiteVon;$SeiteBis;$PeriodikumSigle;$Periodikum;$Ort;$Verlag;$ISBN;$Reihe;$Nummer;$URL;$Gesichtet;$Bib;$Sig;$Standort;$Auflage;$Volume;$Ausgabe;$Sprache;$Keywords;$Anhang;$Zusatz;$Quelle;$EndTag)
]; //ende Berechnungen
$result
) //End let
le: 06. 03. 2020 [22:55]
michhoff
Inscrit depuis: 13.02.2013
Interventions: 9
Die Version 2 arbeitet nun super, soweit ich das mit meinen Titeldaten überprüfen konnte.

Nur drei minimale Unstimmigkeiten sind mir aufgefallen:

- Ein Eintrag in 'Jahr/Datum' mit dem Inhalt "1987/88" kam nur als "1987" an. Steht in LitLink "1987/1988" funktionierte die Übernahme jedoch.
- Ein bei einer Zeitschrift im Periodikamodul vermerkter Ort tauchte nach der Übertragung im Aufsatzeintrag unter 'Extra' auf, mit vorangestelltem "Place:" - diese Übertragung erscheint mir unnötig.
- Die Übertragung der 'bibl. Zusätze' aus LitLink in das Zotero-Feld 'Extra' ist jetzt prima gelöst - aber könnte der dort ebenfalls zu findende Herkunftsvermerk (z.B. "Litlink 5 - Titel - Aufsatz") nicht generell entfallen? Dann könnte man den übertragenen Feldinhalt (z.B. Kennzeichnung als Dissertation) in einer Zotero-Zitierform direkt nutzen.

"nicolausbusch" schrieb:

Was ich nicht tun möchte:
- Herausgeber über drei Ebenen ermitteln (Aufsatz im Sammelband in einer Reihe), das ist in Zotero nicht abbildbar.
- Alle möglichen Felder, die in Zotero und anderen System nicht unterstützt werden, als Kommentare exportieren. Wer das haben möchte kann es natürlich gerne ergänzen.


Ich verstehe die Zurückhaltung, aber oft enthalten diese "Sonderfelder" für die Arbeit mit den Daten wichtige Informationen. Könnten nicht wenigstens die 'Projekte' in 'Tags' überführt werden? Dann ließen sich die projektmäßig zusammengehörigen Titel in Zotero gemeinsam aufrufen, was wohl für viele nützlich wäre.

Eine Frage noch: Gibt es Kapazitätsgrenzen für die Sammelübertragung via Zwischenablage? Mit 75 Datensätzen hat es im Test reibungslos funktioniert, aber was ist mit 1500?

Neben der gelungenen Titelübernahme habe ich mir auch die Übernahme von Objekten angesehen, für die ebenfalls ein RIS-Exportformat erzeugt wird. Dieses ist aber noch rudimentär - wenn da weiterentwickelt wird, teste ich das auch gerne. Ich fände dabei - als Kunsthistoriker - insbesondere die Übertragung von LL-'Objekten' in den Datentyp 'Kunstwerk' in Zotero nützlich, inkl. der bislang noch nicht übertragenen Feldinhalte zu 'Größe', 'Material' bzw. 'Medien'.

Jetzt aber erstmal großen Dank für die bisherige Programmierung! Ich finde die Exportmöglichkeit nach Zotero sehr hilfreich.

Viele Grüße

Michael Hoff
le: 07. 03. 2020 [12:53]
klausl
Inscrit depuis: 26.03.2015
Interventions: 16
"nicolausbusch" schrieb:

Hier die Version 2, die meisten Punkte sollten abgearbeitet sein. Was ich nicht tun möchte:
- Herausgeber über drei Ebenen ermitteln (Aufsatz im Sammelband in einer Reihe), das ist in Zotero nicht abbildbar.
- Alle möglichen Felder, die in Zotero und anderen System nicht unterstützt werden, als Kommentare exportieren. Wer das haben möchte kann es natürlich gerne ergänzen.


Version 2 habe ich wieder mit folgenden Dokumenttypen und jetzt positiven Ergebnissen getestet:

Buch +
Sammelwerk +
Abschlussarbeit +
Zeitschriftenaufsatz +
Aufsatz in Sammelwerk +
Aufsatz in Sammelwerk in Reihe +- aber da ist die dritte Ebene betroffen (s.o.)

Grüße

Klaus Lepsky
le: 08. 03. 2020 [14:10]
nikolauslinder
Inscrit depuis: 16.05.2012
Interventions: 55
"nicolausbusch" schrieb:

Hier die Version 2, die meisten Punkte sollten abgearbeitet sein. Was ich nicht tun möchte:
- Herausgeber über drei Ebenen ermitteln (Aufsatz im Sammelband in einer Reihe), das ist in Zotero nicht abbildbar.
- Alle möglichen Felder, die in Zotero und anderen System nicht unterstützt werden, als Kommentare exportieren. Wer das haben möchte kann es natürlich gerne ergänzen.


Lieber Herr Busch,

ich bin den Export jetzt auch mal angegangen. Weil in meiner Datenbank so viele Titel gespeichert sind, tue ich dies jahrgangsweise, d. h. in Teilmengen nach Jahr der Erstellung. Das funktioniert ganz gut.

Eine Bitte hätte ich allerdings: Das Feld "Kartentitel" ist bei mir sehr wichtig, weil ich dort jeweils kurze Einzeiler zum Inhalt des exzerpierten Texts (der Karte) hinterlegt habe. Wäre es nicht möglich, den Kartentitel mitzuexportieren?

(Ich programmiere das auch gerne selbst, bin allerdings z. Z. überhaupt nicht in der Übung. Könnten Sie mir ggf. einen kurzen Tip geben, wie und wo ich den entsprechenden Code in die Exportformel einsetzen muss?)

Vielen Dank und herzliche Grüße, Nikolaus Linder



Identification de l'utilisateur

Entrez votre nom d'utilisateur et votre mot de passe pour vous identifier:
Identification

Mot de passe oublié ?