Seite 1 von 1

Zitierform RIS Export, für die Datenübergabe an Zotero

Verfasst: 7. Apr 2020, 17:05
von admin
//Litlink 5 Zitierform RIS Export Titel
//V5, 23.03.2020
//Nicolaus Busch

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. */
IsEmpty( DTitel::d_HerausgeberName_t ) and 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 =
"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...
~query =
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 ( ~query ; "" ; "¶" ; 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...
~query =
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 ( ~query ; "" ; "¶" ; DTitel.Titel.Sammelband::_pk_GUID );
""
);

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



$Herausgeber =
List(
Case(
$HrsgStatus = 0 ; "" ;
//$HrsgStatus = 1 wird unten abgehandelt
$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 ;
Substitute( $Autoren; ["AU - "; "ED - "];["A1 - "; "ED - "]);
$Autoren
) ;

//Schlagworte

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

//Schlagworte aus Projekten
$KeywordsProjects =
MBS("list.AddPrefix" ; List ( DTitel.XTitelProj.Projekte::d_Name_t ); "KW - ";1) ;

//Karteikarten, Exzerpt und Kommentar in $LNotes umwandeln

//...erstmal die Abfrage für die Karteikarten vorbereiten...
~queryForm =
"SELECT <Seiten> + CASE WHEN <Seiten> IS NOT NULL THEN ': ' ELSE '' END
+ CASE WHEN <Kurztitel> IS NOT NULL THEN TRIM(<Kurztitel>) + '¶' ELSE '' END
+ 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" ];
["<Kurztitel>" ; "d_Kurztitel_t" ];
["<Zitat>" ; "d_Zitat_t" ];
["<Kommentar>" ; "d_Kommentar_t" ];
["<ID_Titel>" ; "\"_fk_Titel_t\"" ];
["<SeiteVon>" ; "d_SeiteVon_n" ];
["<Kartei>" ; "DKartei" ]
);

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



//...Abfrage für Websites vorbereiten...
~queryForm =
"SELECT <URL>
+ CASE WHEN <Kommentar> IS NOT NULL THEN '¶'+ TRIM(<Kommentar>) ELSE '' END
FROM <Titel>
WHERE <ID_Titel> IN
(SELECT <ID_Child> FROM <Relation> WHERE <ID_Parent> = ? AND <Typ> ='Titel-Website')" ;

//...Form mit korrekten Feldbezeichnern ergänzen...
~query =
Substitute( ~queryForm;
["<URL>" ; "d_URL_t" ];
["<Kommentar>" ; "d_Titel_t" ];
["<ID_Titel>" ; "\"_pk_GUID\"" ];
["<Typ>" ; "\"d_RelationType_t\"" ];
["<ID_Child>" ;"\"_fk_IDchild_t\"" ];
["<ID_Parent>" ;"\"_fk_IDparent_t\"" ];
["<Titel>" ; "DTitel" ];
["<Relation>" ; "DRelation" ]
);

//...SQL-Abfrage ausführen
$temp =
Substitute( ExecuteSQL ( ~query ; "" ; "##//##" ; DTitel::_pk_GUID ) ;"¶"; "<br>");
$LSites=
Substitute( MBS( "List.AddPrefix"; Substitute ( $temp;"##//##";"¶") ; "N1 - ";1 ) ; "<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 =
List( $KomTemp; $RezTemp);
$Note2 =
Case (not IsEmpty(DTitel::d_Exzerpt_t) ; "N2 - " & DTitel::d_Exzerpt_t );

//Beliebige weitere Notizen hier erzeugen und unten bei "$LNnotes=" in die Liste einfügen
$NoteES=
Case (not IsEmpty(d_EigeneSignatur_t) ; "N1 - Eigene Signatur:" & d_EigeneSignatur_t );
$NoteKopie=
Case (not IsEmpty(d_KopieIn_t) ; "N1 - Kopie in:" & d_KopieIn_t );

//...und alles verwursten zu $LNotes
$LNotes =
List ( $Note1 ; $Note2 ; $NoteES; $NoteKopie; $Notes ) ;

//Links in $LLinks umwandeln
~links =
List ( DTitel.File::d_Pfad_t );
$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;$KeywordsProjects; $Anhang;$Zusatz;$Quelle;$EndTag)
]; //ende Berechnungen
$result
) //End let