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

Dies ist der Platz zum Teilen eigener Zitierformen sowie für alle Fragen zur Erstellung oder Veränderung von Zitierformen
Antworten
admin
Site Admin
Beiträge: 5
Registriert: 30. Mär 2020, 15:31

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

Beitrag 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
____________
Nicolaus Busch
N. Busch GmbH
Antworten