Package: parse-ecli
parse_ecliparse_ecliÄnderungenInstallationBenutzung über die KommandozeileOptional:raw-modeDatei-EingabeBatch-VerarbeitungSilentDatei-AusgabeNutzung als ModulModuleecli_classes.pyÜberblick über ECLIUmfang und Ablauf der ECLI-ErkennungAbweichungen zu den Vorgaben des BfJUmfang der ErkennungAblauf der ErkennungECLI des BPatGZieleTestsTable of contents generated with markdown-tocDieses Programm dient der Aufschlüsselung von deutschen ECLI wieECLI:DE:BVERFG:2020:RK20200501.1BVR099620. Es kann als Modul in Python Software eingebunden oder über die Kommandozeile selbstständig aufgerufen werden.Python 3.8ist zwingend erforderlich.Eine webbasierte Live-Demo isthierverfügbar.ÄnderungenNeu in Version0.9.5Handels-, Insolvenz- und andere Register werden erfasstAlphanumerische Kammerbezeichnungen (4a Kammer) werden erfasstOptionaler Punkt nach Präfix bei AZ der Ordentlichen Gerichtsbarkeit ist nun zulässigDas Suffix D (Überlange Verfahren) wird beim BVerwG erkanntLokale Registerzeichen (SA für Gerichtsstandsbestimmungen beim OLG Hamm), St OLG SS (für Revisionen in Strafsachen beim OLG Nürnberg), diverse weitere Registerzeichen hinzugefügtDetailanpassungen der Regex-MusterInstallationDie Installation erfolgt am einfachsten über dasPyPi-Paket:python -m pip install parse-ecliJe nach Betriebssystem musspythonggf. durchpython3oder garpython3.8ersetzt werden.Alternativ kann dieses GitHub-Repo heruntergeladen werden. Die Installation erfolgt dann im Wurzelverzeichnis viapython -m pip install .Benutzung über die KommandozeileNach der Installation wird (typischerweise systemweit) der Befehlparse-ecliregistriert. Das Programm kann dann über die Kommandozeile (Bash, CMD, Powershell etc.) direkt aufgerufen werden:parse-ecli <ECLI>Der ECLI muss vollständig eingegeben werden. Führende Leerzeichen und Sonderzeichen werden entfernt.Wird ein ECLI anparse_ecliübergeben, wird er nach seinen Bestandteilen aufgeschlüsselt und so weit wie möglich erläutert.So werden aus dem ECLIECLI:DE:AGK:2007:1120.217C180.07.00folgende Daten ausgegeben:FeldWertGericht:Amtsgericht KölnEntscheidungsdatum:20.11.2007Aktenzeichen (max. 17 Stellen):217 C 180/07Kollisionsnummer:00Verfahren:Erstinstanzliche ZivilprozesseJe nach Gerichtsbarkeit unterscheidet sich die Datendichte des ECLI. So kann ausECLI:DE:BVERWG:2019:170719B3BN2.18.0folgendes extrahiert werden:FeldWertGerichtBVerwGSpruchkörper3. SenatEntscheidungsdatum17.07.2019Aktenzeichen (max. 17 Stellen)3 BN 2.18Kollisionsnummer0EntscheidungsartBeschlussVerfahrenNichtzulassungsbeschwerden in NormenkontrollverfahrenLinkhttps://www.bverwg.de/de/170719B3BN2.18.0Optional:raw-modeparse-ecli -r <ECLI>für rawmode, d.h. die Daten werden ohne Beschriftung nur durch Semikolon getrennt ausgegeben:ECLI:DE:BVERFG:2020:RK20200501.1BVR099620;BVerfG;Kammerentscheidung (1. Senat);01.05.2020;1 BvR 996/20;Keine;Verfassungsbeschwerden;http://www.bverfg.de/e/rk20200501_1bvr099620.html;Dies ermöglicht die automatische WeiterverarbeitungDatei-Eingabeparse-ecli -i input_fileECLI können auch aus einer Textdatei eingelesen werden, die mit-iangegeben wird. Standardmäßig wird die Datei nach ECLI an beliebigen Stellen durchsucht.
Bei Nutzung der Option-iwird ein zusätzlich über die Kommandozeile eingegebener ECLI ignoriert.Batch-Verarbeitungparse-ecli -i input_file -bIm Batch-Modus, der mit-baktiviert wird, können schnell beliebig viele ECLI validiert werden. Hier wird aus einer mit-iangegebenen Datei ein ECLI pro Zeile erfasst. Die Zeilen dürfen keine anderen Daten enthalten. Zeilen, die nicht mitECLI:DE:beginnen, werden ignoriert. Für ungültige Zeilen wird eine Fehlermeldung ausgegeben. Auch wird gewarnt, falls der ECLI in einer Zeile zwar einem generellen ECLI-Schema entspricht, aber das Aktenzeichen nicht aufgelöst werden konnte.Silentparse-ecli -i input_file -b -sDer Schaltersunterdrückt die Warnungen für ungültige ECLI im Batch-Modus.Datei-Ausgabeparse-ecli -o output_file <ECLI>Die Ausgabe kann auch in eine Datei umgeleitet werden, die mit-oangegeben wird.Warnungen werden nicht in die Datei geleitet.Durch Kombination der Optionen kann etwa eine Dateiinput.txtmit 100 ECLI maschinenlesbar in der Dateioutput.txtaufbereitet werden:parse-ecli -r -b -i input.txt -o output.txtNutzung als ModulNach der Installation kann das Programm mittelsimport parse_ecliin beliebige Python-Module eingebaut werden.ModuleNameFunktionparse_ecli.pyStellt die Entscheidungsklassen zur Verfügung. Das Modul kann selbstständig in andere Skripte importiert werden, sodass die Erkennung direkt in das Programm intergriert werden kann. Enthält auch die Ein-/Ausgabelogik für den direkten Aufruf über die Kommandozeile.pattern.pyEnthält die Regexesecli_classes.pyStellt die Hauptfunktionalität des Programms zur Verfügung und kann in andere Skripte eingebunden werden.Die Funktionmain_funcwird nur ausgeführt, wenn das Programm mitparse-ecliüber die Kommandozeile aufgerufen wird. Hier ist die Ein-/Ausgabefunktionalität enthalten.Die Funktionmatch_ecli(ecli_string)gibt ein Entscheidungs-Objekt zurück für einen übergebenen String zurück. Erwartet wird hier ein einzelner gültiger ECLI. Die Funktionsearch_ecli(ecli_string)durchsucht einen beliebigen String nach ECLI und gibt eine Liste mit allen Entscheidungs-Objekten zurück.Die Entscheidungsobjekte enthalten ein dict namenscourt_data. Dieses enthält die Daten, die aus dem ECLI extrahiert werden konnten. Jedem key ist eine Liste zugeordnet, deren erstes Feld eine Datenbeschreibung ist. Die eigentlichen Daten liegen im zweiten Feld, das leer vorinitialisiert ist.keyvaluesErklärung"court"["Gericht: ",""]Enthält das Gericht hinter dem Gerichtscode. Bei den Gerichten der Länder muss der Code in der Dateigerichte.jsonaufgelöst werden."bodytype"["Spruchkörper: ",""]Enthält den Spruchkörper (z.B. bei BGH) oder jedenfalls den Spruchkörpertyp (z.B. bei einer Kammerentscheidung des BVerfG)"date"["Entscheidungsdatum: ",""]"az"["Aktenzeichen: ",""]Das Aktenzeichen wird soweit möglich aus dem ECLI generiert. Bei Doppelaktenzeichen ist dies nur teilweise möglich. Die Registerzeichen werden, soweit sie nicht nur aus Großbuchstaben bestehen in 'decisions.json' nachgeschlagen."collision"["Kollisionsnummer: ",""]Die Kollisionsnummer der Entscheidung."year"["Jahr: ",""]"decisiontype"["Entscheidungsart: ",""]Der Entscheidungstyp, also z.B. Urteil, Beschluss, Gerichtsbescheid"decision_explain"["Verfahren ",""]Erläutert die Verfahrensart bzw. das Sachgebiet anhand des Registerzeichens (z.B. Revision in Zivilsachen)"register_explain"["Register/Zusatz: ",""]Manche Gerichte (etwas Sozialgerichtsbarkeit) verwenden ein zusätzliches Registerzeichen, das hier erläutert wird."url"["Link: ",""]Beim BVerfG und BVerwG wird zudem auf Basis des ECLI eine Kurz-URL zur Entscheidung generiert.Die Entscheidungsklassen verfügen über eine Methode namensoutput_decision, die mit zwei optionalen Argumenten aufgerufen werden kann:output_decision(rawmode=False, output_file=None):Wirdrawmodealstrueübergeben, so wird die entsprechende Ausgabe veranlasst (vgl. oben). Alsoutput_filekann ein Dateiobjekt angegeben werden, sodass die Ausgabe dorthin erfolgt.Überblick über ECLIDer Europäische Urteilsidentifikator (European Case Law Identifier – ECLI) wurde entwickelt, um die korrekte und eindeutige Angabe von Fundstellen in Entscheidungen europäischer und nationaler Gerichte zu erleichtern.
Der ECLI ist ein einheitlicher Identifikator, der für alle Gerichte der Mitgliedstaaten und der EU dasselbe erkennbare Format besitzt. Einen Kurzüberblick bietet z. B. dieWebsite des Bundesverwaltungsgerichts.Umfang und Ablauf der ECLI-ErkennungDie Vorgaben für valide deutsche ECLI folgen grundsätzlich den Angaben des Bundesamtes für Justiz alsECLI-Koordinator für Deutschland. Diese sind allerdings nach Angaben des BfJ (E-Mail Auskunft, Stand Mai 2020) veraltet und auch unvollständig. So fehlt das ECLI-Schema des BPatG, dieses wurde direkt beim Gericht erfragt. Auch scheinen die Angaben auf der Website unvollständig, da sie nicht alle tatsächlich in der Praxis vergebenen ECLI erfassen. Die entsprechenden Abweichungen im Programm werden beschrieben.Abweichungen zu den Vorgaben des BfJDas BfJ beschreibt die Kollisionsnummer der Gerichte der Länder als "zweistellig (fortlaufend von 00-99)". Tatsächlich werden in der Praxis (v.a. in Bayern) auch alphanumerische Kollisionsnummern vergeben. Sie beginnen mit0Astatt00. Beispiel:ECLI:DE:VGBAYRE:2005:0607.B1K04.1182.0AAktenzeichen beim BVerfG enthalten nicht immer eine Senatsbezeichnung (z.B.ECLI:DE:BVERFG:2018:VB20180322.VZ001016)Umfang der ErkennungUmfangreiche Tests (>1500 ECLI) haben ergeben, dass alle validen deutschen ECLI erkannt werden dürften. False positives sind aufgrund der strengen Regex kaum denkbar. Gültige, jedoch fiktive ECLI werden freilich als gültig erkannt und ausgewertet.Die Länge der Aktenzeichen bei den Gerichten der Länder ist im ECLI auf 17 Stellen beschränkt. Bei Doppelaktenzeichen kann dies dazu führen, dass es nicht vollständig im ECLI abgebildet ist. Darauf weist das Programm bei Länder-ECLI mit einer Warnung hin.Beispiel für ein Mehrfachaktenzeichen:ECLI:ECLI:DE:OLGMUEN:2020:0128.31WX229.19.31WX23.0AVollständige Aktenzeichen in Beck-Online:31 Wx 229/19, 31 Wx 230/19, 31 Wx 231/19Ausgabe Aktenzeichen:31 Wx 229/19 31 WX 23 [...]Ablauf der ErkennungIm Code sind die ECLI-Schemata als reguläre Ausdrücke im Modulpattern.pyhinterlegt.Die Analyse erfolgt zweistufig. In einem ersten Zugriff wird der ECLI mit den Mustern der verschiedenen Bundesgerichte bzw. dem der Länder verglichen. Bereits hier dürften die meisten ungültigen ECLI aussortiert werden, wobei die Muster der Bundesgerichte aufgrund der spezifischeren Vorgaben für die Bildung des ECLI strenger sind. Passt ein eingegebener ECLI auf eines der Muster, wird ein passendes Entscheidungstyp-Objekt erzeugt und in einem zweiten Schritt die für das jeweilige Gericht passendeparse_ecli-Funktion aufgerufen. Hier wird der ECLI abschnittsweise weiter analysiert und die enthaltenen Informationen übersetzt. Bei den Gerichten der Länder wird zuvor noch eine weitere Zuordnung zur jeweiligen Fachgerichtsbarkeit vorgenommen, um die Aktenzeichen korrekt bilden zu können. Die mit den Gerichtscodes korrespondierenden Gerichte sind ingerichte.jsonhinterlegt, sie werden nur bei einem Länder-ECLI benötigt und geladen. Die Daten zu Verfahrensarten, Registerzeichen etc. sind indecisions.jsonhinterlegt.ECLI des BPatGFür ECLI des BPatG finden sich noch keine Angaben beim BfJ.Die ECLI des BPatG werden wie folgt gebildet:Gemäß E-Mail-Auskunft vom 29.04.2020ECLIDE (= Ländercode)BPatG (= Gericht, das die Entscheidung erlassen hat)Jahr der EntscheidungOrdinalzahl (= bis zu 25 alphanumerische Zeichen inklusive Punkte).Die Ordinalzahl soll wie folgt aufgebaut sein:StellenBeschreibungMögliche Werte1-6Verkündungs-DatumZustellungs-Datum (bei Zustellung an Verkündungs Statt)TTMMJJ7EntscheidungstypB (Beschluss) U (Urteil)8-9Spruchkörper1…3610-14Registerzeichen gemäß § 3 I AktOBPatG vom 11.05.2010 (runde Klammern entfallen)Wpat Ni Li LiQ LiR ZApat ARpat15-17Laufende Nummer0…99918Trennzeichen (Punkt).19-20Jahreszahlabschließende zwei Stellen des Jahres21-22Suffix Gemäß § 3 II AktOBPatG vom 11.05.2010 (runde Klammern entfallen)EP EU23Trennzeichen (Punkt).24-25Kollisionsziffer (stets)ZieleAuch ausländische ECLI sollen analysiert werden können.Es soll aus gegebenen Daten eine gültige ECLI generiert werden können.TestsIm Ordner tests liegt eine Datei fürpytestbereit. Es kann aus dem Unterverzeichnisparse_eclimitpython -m pytest tests/aufgerufen werden.