Rheinische-Friedrich-Wilhelms-Universität Bonn Institut für Informatik III Diplomarbeit Ein regelbasiertes System zur Subsumtionsunterstützung bei Körperverletzungsdelikten Daniel Köhnen September 2000 Erstgutachter: Prof. Dr. Rainer Manthey ii Inhaltsverzeichnis 1 Einleitung......................................................................................................................1 2 Grundlagen ...................................................................................................................3 2.1 Grundlagen aus der Informatik ...............................................................................3 2.1.1 Expertensysteme .............................................................................................3 2.1.2 Datenbanksysteme ..........................................................................................4 2.1.3 Deduktive Datenbanksysteme..........................................................................7 2.1.3.1 Motivierendes Beispiel ................................................................................7 2.1.3.2 Begriffsbestimmung: Deduktives Datenbanksystem ....................................7 2.1.3.3 Zentrales Element: Regel.............................................................................8 2.1.3.4 Einschub: Integritätsbedingungen ................................................................8 2.1.3.5 Änderungsgetriebene und anfragegetriebene Inferenz ..................................9 2.1.3.6 Vorteile Deduktiver Datenbanksysteme .......................................................9 2.1.4 Aktive Datenbanksysteme .............................................................................10 2.1.4.1 Motivation.................................................................................................10 2.1.4.2 Begriffsklärung: Aktives Datenbanksystem (ADBS) .................................10 2.1.4.3 Zentrales Element: Aktive Regel ...............................................................10 2.1.5 Relationale Datenbanksysteme ......................................................................11 2.1.5.1 Relationales Datenmodell ..........................................................................11 2.1.5.2 SQL ..........................................................................................................12 2.1.6 Objektorientiertes Datenmodell .....................................................................13 2.1.7 UML .............................................................................................................14 2.1.7.1 UML-Klassendiagramme ..........................................................................14 2.1.7.2 UML-Sequenzdiagramme..........................................................................16 2.1.8 Logische Programmierung ............................................................................17 2.1.8.1 Prolog .......................................................................................................18 2.1.8.2 Datalog......................................................................................................22 2.1.9 Tcl/Tk ...........................................................................................................23 2.1.9.1 Tcl-Grundlagen .........................................................................................23 2.1.9.2 Tk-Grundlagen ..........................................................................................24 2.2 Rechtswissenschaftliche Grundlagen.....................................................................26 2.2.1 Gesetzesstruktur............................................................................................26 2.2.2 Die juristische Subsumtion: Vorgang der Rechtsfindung ...............................28 2.2.2.1 Gesetzesauslegung ....................................................................................29 2.2.2.2 Unbestimmte Rechtsbegriffe .....................................................................31 2.2.2.3 Sachverhaltsanpassung ..............................................................................31 2.2.3 Prüfungsaufbau im Strafrecht ........................................................................32 2.2.4 Prüfungsreihenfolge ......................................................................................33 iii 3 Ausgewählte juristische Systeme................................................................................35 3.1 LEX-1 ...................................................................................................................35 3.1.1 Systembeschreibung......................................................................................35 3.1.2 Bewertung.....................................................................................................36 3.2 WZ ........................................................................................................................37 3.2.1 Systembeschreibung......................................................................................37 3.2.2 Bewertung.....................................................................................................38 3.3 HYPO und darauf aufbauende Ansätze .................................................................39 3.3.1 Beschreibung ................................................................................................39 3.3.2 Bewertung.....................................................................................................40 3.4 Sonstige regelbasierte Ansätze ..............................................................................40 4 Exkurs: Analogie zwischen Rechtsanwendung und wissensbasierten Systemen.....41 5 Formalisierung juristischer Sachverhalte und Normen............................................42 5.1 Datenbanksprachen ..............................................................................................42 5.2 Auswahl des zu modellierenden Gesetzesauschnitts...............................................43 5.3 Eingeschränkter Prüfungsaufbau des juristischen Systems ....................................44 5.4 Formalisierung von Sachverhalten........................................................................45 5.4.1 Konzeptueller Entwurf ..................................................................................47 5.4.2 Logischer Entwurf.........................................................................................54 5.4.2.1 Beziehungen..............................................................................................54 5.4.2.2 Objekt-Klassen..........................................................................................55 5.4.2.3 Klassen-Hierarchien ..................................................................................57 5.4.2.4 Methoden von Objekten ............................................................................58 5.4.2.5 Diskriminator-Metatyp ..............................................................................58 5.4.2.6 Beispiel-Sachverhalt..................................................................................59 5.5 Formalisierung juristischer Normen .....................................................................60 5.5.1 Prinzipieller Aufbau von Gesetz-modellierenden Regeln...............................61 5.5.2 Allgemeines über die Formalisierung von Gesetzen ......................................62 5.5.3 Formalisierung einzelner Gesetze..................................................................63 5.5.3.1 Körperverletzung (§223) ...........................................................................63 5.5.3.1.1 Körperliche Misshandlung (§223 I, 1. Alt.)..........................................64 5.5.3.1.2 Gesundheitsschädigung (§223 I, 2. Alt.) ..............................................66 5.5.3.2 Gefährliche Körperverletzung (§224) ........................................................67 5.5.3.3 Schwere Körperverletzung (§226) .............................................................68 5.5.3.4 Fahrlässige Körperverletzung (§229) .........................................................69 5.5.4 Effizienz .......................................................................................................69 5.5.5 Hierarchie der Körperverletzungsdelikte .......................................................69 iv 6 Implementierung des juristischen Systems................................................................71 6.1 Entwicklung des Systems.......................................................................................71 6.2 Planung und erste Systemdefinition.......................................................................72 6.3 Architektur des Systems ........................................................................................74 6.4 Wissensbasis .........................................................................................................75 6.5 Dialogkomponente ................................................................................................75 6.5.1 Benutzerfreundlichkeit ..................................................................................76 6.5.1.1 Abbildung natürlicher Sprache auf Prolog-Klauseln ..................................77 6.5.1.2 Abbildung von Prolog-Klauseln auf natürlichsprachliche Sätze .................78 6.5.2 Die Dialoge des juristischen Systems ............................................................79 6.5.2.1 Sachverhalt bearbeiten...............................................................................80 6.5.2.1.1 Gegenstand-Bearbeitung......................................................................81 6.5.2.1.2 Verhalten-Bearbeitung.........................................................................84 6.5.2.1.3 Person-Bearbeitung .............................................................................85 6.5.2.2 Sachverhalt-DB verwalten.........................................................................86 6.5.2.3 Meinungs-DB verwalten............................................................................86 6.5.2.4 Subsumtion ...............................................................................................86 6.5.2.5 Rückfragen des Systems ............................................................................88 6.5.2.6 Schlussbemerkungen zur Dialogkomponente.............................................89 6.6 Event-Handler ......................................................................................................90 6.6.1 ProTcXl ........................................................................................................90 6.6.2 Funktionsweise des Event-Handlers ..............................................................92 6.7 Datenbank-Management-System ...........................................................................96 6.7.1 Datenbankänderungsoperationen: Insert, Delete, Update ...............................96 6.7.2 Verwaltung der Objekt-Schlüssel ..................................................................97 6.7.3 Transaktionen................................................................................................97 6.7.4 Integritätsprüfung..........................................................................................99 6.7.5 Trigger im juristischen System .................................................................... 101 6.8 Subsumtionskomponente ..................................................................................... 103 6.8.1 Deduktive Komponente............................................................................... 103 6.8.1.1 Top-Down............................................................................................... 103 6.8.1.2 Top-Down-Auswertung und Bearbeitung der Ergebnismenge ................. 104 6.8.1.3 Generate And Test................................................................................... 105 6.8.1.4 Constrain And Generate .......................................................................... 106 6.8.2 Entscheidungskomponente .......................................................................... 108 6.8.3 Subsumtionsstrategie des juristischen Systems ............................................ 113 7 Zusammenfassung und Ausblick ............................................................................. 117 v 1 Einleitung Der Aufbau vieler Gesetze – welche im Folgenden allgemeiner auch als (juristische) Normen bezeichnet werden – und die zahlreich damit zusammenhängenden Begriffshierarchien motivieren den Einsatz regelbasierter (deduktiver) Systeme im Recht. So können viele Gesetze in eine wenn-dann-Struktur gebracht werden, wie folgende Beispiele veranschaulichen: - Wenn jemand eine Straftat begeht, dann wird er bestraft. Wenn jemand eine Körperverletzung begeht, dann begeht er eine Straftat. Wenn jemand einen anderen körperlich misshandelt, dann begeht er eine Körperverletzung Neben diesen Parallelen zwischen juristischen Gesetzen und ‚Regeln’ besteht darüber hinaus nach Herbert Fiedler und Thomas F. Gordon ([FG87], S. 63 ff.) auch eine gewisse Analogie zwischen juristischer Methodik und wissensbasierten Systemen. Insbesondere sei ein Richter in eingeschränktem Maße mit der Inferenzkomponente eines solchen Systems zu vergleichen. Bei einer solchen Sichtweise verwundert es nicht, dass in der Vergangenheit viele Versuche unternommen wurden, juristische Expertensysteme zu entwickeln, deren hochgestecktes Ziel es war, die Arbeit eines Juristen – zumindest in speziellen Bereichen – von Computern leisten zu lassen. Besonders zahlreich waren diese Versuche Ende der 80er Jahre. Die meisten der so entwickelten Systeme kamen über das Prototypstadium jedoch nicht hinaus, wie eine breit angelegte empirische Auswertung von Thomas Jandach in [Jan93] (S. 20 ff.) ergab. Eine Ursache hierfür stellen sicherlich die, in der Vergangenheit häufig zu optimistischen Erwartungen an die Künstliche Intelligenz dar; die Ziele der juristischen Systeme waren oft zu hoch gesteckt. So wurde beispielsweise im Rahmen des LEX-Projekts (s. [HL89]) versucht, ein System zu entwickeln, welches bestimmte, in natürlicher Sprache formulierte Fälle beurteilen können sollte. Darüber hinaus scheint es gewisse Aspekte der juristischen Arbeitsweise zu geben, welche sich von Computern nicht, oder nur schwer bewältigen lassen. So ist es zur Klärung von Rechtsfragen häufig erforderlich, Wertungen vorzunehmen oder bestimmte Textstellen zu deuten. Ein System zu entwickeln, welches auch in solchen Situationen die „richtigen“ Entscheidungen zu treffen vermag, ist insbesondere auch deshalb sehr problematisch, da im Allgemeinen nicht vollkommen objektiv beurteilt werden kann, ob ein Urteil „richtig“ oder „falsch“ ist. So ist oftmals auch zu erklären, warum in einem Rechtsstreit zunächst die eine Partei, in späterer Instanz aber die andere Partei gewinnt. Man könnte nun zu der Überzeugung gelangen, solch unterschiedliche Bewertungen ein und des selben Falles seien grundsätzlich unerwünscht, die Gesetze müssten von der Legislative klarer formuliert werden und es müssten eindeutige Wertmaßstäbe festgelegt werden, an welchen sich jeder Richter orientieren kann. Jedoch kann kein Gesetzgeber alle denkbaren Fallkonstellationen bedenken und somit unter Berücksichtigung seiner rechtspolitischen Zielsetzungen und Wertentscheidungen von vornherein regeln (vgl. [Sir89], S. 43). Darüber hinaus können sich Werte wandeln und rechtspolitische Zielsetzungen verändern. Um das Recht an solche dynamische Prozesse anpassen zu können, ist es wohl geradezu erwünscht, in einem engen Rahmen über gewisse Spielräume im Gesetz zu verfügen, um produktive, rechtsfortbildende Diskussionen über deren Ausfüllung zu ermöglichen. 1 Basierend auf dieser Erkenntnis, wurde im Rahmen dieser Arbeit versucht, ein regelbasiertes juristisches System zu entwickeln, welches zwar in der Lage sein sollte, bestimmte Sachverhalte juristisch zu beurteilen, welches dabei aber in Auslegungs- oder Wertungsfragen den Systemanwender in den Inferenzprozess involviert. Ziel der Arbeit war es, auf diese Weise ein juristisches Gutachten zu erstellen. Das System sollte in der Lage sein, die hierzu erforderliche Subsumtion – also die Unterordnung eines konkreten Falles unter eine abstrakte Rechtsnorm – möglichst weitgehend nachzuahmen. Hierbei wurden verschiedene, aber nicht alle Gesichtspunkte der Subsumtion berücksichtigt. Bei dem implementierten System handelt es sich im Grunde um eine Deduktive Datenbank, welche auch über ein einfaches Trigger-Konzept verfügt. Das System kann Lebenssachverhalte im Hinblick darauf untersuchen, ob der objektive Tatbestand eines Körperverletzungsdelikts verwirklicht wurde. Dazu mussten die Lebenssachverhalte zunächst in eine Form gebracht werden, welche vom System behandelt werden kann. Hierzu gibt der Benutzer in vorgegebene grafische Eingabemasken den Fall in einer standardisierten Form ein, woraus das System anschließend eine interne Repräsentation des Sachverhaltes erzeugt. Mit Hilfe von Regeln kann anschließend die Inferenzkomponente des Systems versuchen, das Vorliegen einzelner Tatbestände aus der internen Fallrepräsentation zu beweisen. Die hierbei verwendeten Regeln stellen die Modelle der Gesetze dar, welche vom juristischen System „beherrscht“ werden. Die Art und Weise, auf welche diese Regeln von der Inferenzkomponente verwendet werden, orientiert sich an den Eigenarten der juristischen Subsumtion wie beispielsweise der Reihenfolge, in welcher einzelne Tatbestände bei einem juristischen Gutachten zu überprüfen sind. Ein herausragendes Merkmal des Systems ist, dass bei juristischen Meinungsstreitigkeiten – etwa bei der Frage, ob eine bestimmte Tätigkeit eine Misshandlung darstellt – der Benutzer konsultiert wird: Existieren zu einem juristischen Problem verschiedene Ansichten, so werden diese durch das System verwaltet und an gegebener Stelle dem Systembenutzer zur Entscheidung vorgelegt. Dies macht zwar erforderlich, dass der Anwender über gewisse juristische Kenntnisse verfügt, doch erhöht es gleichzeitig die Leistungsfähigkeit des Systems enorm, da bei juristischen Meinungsstreitigkeiten viele andere Systeme an ihre Grenzen stossen ... Die vorliegende Arbeit hat folgenden Aufbau. Im Anschluss an diese Einleitung wird der Leser in Kapitel 2 mit den für das Verständnis dieser Arbeit benötigten Grundlagen aus den Bereichen Informatik beziehungsweise Rechtswissenschaft vertraut gemacht. Auf der Seite der Informatik werden hauptsächlich die im juristischen System zur Anwendung gekommenen Konzepte erläutert, die rechtswissenschaftlichen Grundlagen beziehen sich im Wesentlichen auf die juristische Methodenlehre. Um bestimmte Entwurfsentscheidungen für das juristische System besser begründen zu können und um einen kleinen Überblick über bisherige Ansätze zu vermitteln, werden in Kapitel 3 ausgewählte andere juristische Systeme vorgestellt. In Kapitel 4 wird in einem kurzen Exkurs die bereits angesprochene Analogie zwischen juristischer Methodik und wissensbasierten Systemen dargestellt, um eine Verbindung zwischen den Bereichen Rechtswissenschaft und Informatik herzustellen. Die beiden folgenden Kapitel beschreiben dann ausführlich das entwickelte juristische System. Kapitel 5 beschäftigt sich mit der formalen Darstellung von Sachverhalten und Normen, welche die Basis für die in Kapitel 6 vorgestellte Implementation des Systems bildet. Die Arbeit schließt in Kapitel 7, wo ein Fazit gezogen wird und Vorschläge zur Weiterentwicklung des Systems gemacht werden. 2 2 Grundlagen In diesem Kapitel werden die zum Verständnis der Arbeit erforderlichen allgemeinen Grundlagen aus Informatik und Rechtswissenschaft dargestellt. Im weiteren Verlauf der Arbeit werden darüber hinaus an verschiedenen Stellen gewisse speziellere Grundlagen erörtert. 2.1 Grundlagen aus der Informatik Das im Rahmen dieser Arbeit entwickelte juristische System weist einige Parallelen zu Expertensystem-Ansätzen aus den 80er Jahren auf. Daher soll zunächst die Struktur solcher Expertensysteme dargestellt werden. Bei dem im Rahmen dieser Arbeit entwickelten juristischen System handelt es sich im Prinzip um ein Datenbanksystem, weshalb in den folgenden Abschnitten Grundlagen aus dem Gebiet der Datenbanken vermittelt werden. Hierbei handelt es sich um kurze Einführungen zu klassischen, deduktiven und aktiven Datenbanken. Außerdem werden die zum Datenbankentwurf erforderlichen Grundkenntnisse über das Relationenmodell und objektorientierte Datenmodelle vermittelt. Anschließend wird die UML – eine Sprache zur Software-Modellierung – vorgestellt. Diese Sprache wird an einigen Stellen der Arbeit verwendet, um einzelne Aspekte des entwickelten Systems mit ihr zu beschreiben. Als nächstes werden Grundlagen der logischen Programmierung vermittelt. Insbesondere wird hierbei auf die Sprache Prolog eingegangen, da große Teile des juristischen Systems mit ihr implementiert wurden. Die zweite verwendete Sprache zur Realisierung des juristischen Systems ist Tcl/Tk. Daher erfolgt zum Abschluss des Abschnittes zur Beschreibung der Grundlagen aus der Informatik eine kurze Einführung in diese Programmiersprache. 2.1.1 Expertensysteme In der Vergangenheit – insbesondere in den 80er Jahren – wurde häufig versucht, sogenannte juristische Expertensysteme zu entwickeln. Diese Expertensysteme sind den später beschriebenen deduktiven Datenbanksystemen teilweise ähnlich. Im folgenden soll daher zunächst der Begriff des Expertensystems klargestellt werden, um später in der Lage zu sein, Parallelen zu deduktiven Datenbanksystemen sichtbar zu machen und so das juristische System besser einordnen und mit den später beschriebenen bisherigen Entwicklungen (Kapitel 3) vergleichen zu können. Eine exakte, einheitliche Definition existiert für Expertensysteme nicht. Stattdessen gibt es verschiedene Ansätze, welche in [Jan93] (S. 6 ff.) ausführlich dargestellt, klassifiziert und bewertet werden. Zu diesen verschiedenen Definitionen soll hier keine Stellung bezogen werden. An dieser Stelle soll den weit verbreiteten Sichtweisen gefolgt werden, welche es von der Struktur abhängig machen, ob es sich bei einem System um ein Expertensystem handelt. Hiernach besteht ein Expertensystem aus folgenden Bestandteilen: - 3 Wissensbasis Inferenz- oder Ableitungsmaschine Erklärungskomponente (Wissenserwerbskomponente) Dialogkomponente Die in Klammern stehenden Bestandteile sind nicht in allen Definitionen enthalten. Die genaue architektonische Anordnung dieser Komponenten kann sich von Definition zu Definition geringfügig unterscheiden. Dialogkomponente Wissenserwerbskomponente Inferenzmaschine Erklärungskomponente Wissensbasis Abbildung: Ein Architekturmodell eines Expertensystems Das in der Wissensbasis abgelegte Wissen kann in der Regel in fallspezifisches, anwendungsspezifisches und allgemeines Wissen unterteilt werden. Die Inferenzmaschine wird benötigt, um dem System Schlussfolgerungen zu ermöglichen, welche benötigt werden, um Anfragen von der Dialogkomponente zu verarbeiten oder mit Hilfe der Erklärungskomponente Begründungen zu erzeugen. Die Wissenserwerbskomponente hat die Aufgabe, die Wissensbasis aufzubauen und neues Wissen einzufügen. 2.1.2 Datenbanksysteme Da keine anerkannte, einheitliche Definition für Datenbanksysteme existiert, soll in diesem Abschnitt zunächst das „klassische“ Datenbanksystem-Grundmodell dargestellt werden, welches bei den weiteren Betrachtungen zu Grunde gelegt wird. Ein Datenbanksystem (kurz: DBS) setzt sich demnach aus einem Datenbank-ManagementSystem (DBMS) und mindestens einer Datenbank (DB) zusammen. Eine Datenbank besteht aus einer Menge anwendungsspezifischer Fakten. Das DBMS hat die Aufgabe, diese Fakten anwendungsunabhängig zu verwalten und die Kommunikation zwischen Anwendern und/oder Datenbankanwendungen und den Datenbanken zu organisieren. Aufgaben eines DBMS sind beispielsweise Schutz vor Datenverlust, Verwaltung von Transaktionen, Anfrageoptimierung und Autorisierungskontrolle. Auf welche Art die Fakten der DB abgespeichert sind und welche Operationen zur Verfügung stehen, um darauf zuzugreifen, hängt von dem zu Grunde liegenden Datenmodell ab (z.B. relationales Datenmodell). Dieses Datenmodell besteht in der 4 Regel1 aus einer Datendefinitionssprache (DDL2), welche die in den DBen verwendeten Datentypen beschreibt, und einer Datenmanipulationssprache (DML3), mit welcher Operationen zum Zugriff auf die Daten wie speichern, lesen, löschen und verändern formuliert werden. Anwender Datenbank-M anagement-System (DBMS) DB DB DB DB Abbildung: „klassisches“ DBS-Grundmodell Soweit die kurze Einführung in das „klassische“ DBS-Grundmodell. Für ausführliche Beschreibungen seien die Darstellungen [KE99] und [Vos94] empfohlen. An dieser Stelle folgt nun noch ein kurzer Abschnitt über Transaktionsverwaltung, da dieser im juristischen System größere Relevanz zukommt: Einschub: Transaktionsverwaltung Eine Transaktion besteht aus zu einer Einheit zusammengefassten Datenbankoperationen und muss über die vier Eigenschaften des ACID-Paradigmas „atomicity“ (Atomarität), „consistency“ (Konsistenz), „isolation“ (Isolation) und „durability“ (Dauerhaftigkeit) verfügen. - Die „atomicity“-Eigenschaft fordert, dass entweder alle der zu einer Transaktion gehörigen Datenbankoperationen ausgeführt werden sollen oder aber keine einzige. Eine Transaktion wird somit als atomare Einheit betrachtet, die nicht zerlegt werden kann. - Die „consistency“-Eigenschaft stellt sicher, dass die Datenbank nach einer Transaktion wieder in einen konsistenten Zustand gelangt. Gelingt dies nicht, wird die „atomare“ Transaktion komplett zurückgenommen. Konsistent ist ein Zustand, in welchem alle an den Datenbestand gestellten Integritätsbedingungen eingehalten werden. 1 anders beim objektorientierten Datenmodell: Struktur der Daten und Operationen werden zusammen definiert Data Definition Language 3 Data Manipulation Language 2 5 - Die „isolation“-Eigenschaft verlangt, dass parallele Transaktionen voneinander unbeeinflusst ablaufen müssen. - Die „durability“-Eigenschaft schließlich fordert, dass die innerhalb einer Transaktion vorgenommen Datenbankänderung nach Beendigung der Transaktion dauerhaft erhalten bleiben. Solche dauerhaften Änderungen können nur noch durch kompensierende Datenbankoperationen rückgängig gemacht werden. Mit Hilfe der Transaktionen sollen im wesentlichen zwei Ziele verfolgt werden. Das eine Ziel ist die Synchronisation. Im Mehrbenutzerbetrieb soll mit Hilfe des Konzepts der Transaktion dafür gesorgt werden, dass durch die gleichzeitige Arbeit mehrerer Anwender keine Inkonsistenzen in der Datenbank entstehen. Da es sich beim juristischen System um ein System handelt, welches nicht für den Mehrbenutzerbetrieb ausgelegt ist, spielt dieser Aspekt keine Rolle und erlangt in der vorliegenden Arbeit auch keine weitere Berücksichtigung. Das andere Ziel mit Hilfe der Transaktionen verfolgte Ziel heißt Recovery. Nach Fehlern wie zum Beispiel dem Absturz des Systems, soll die Datenbank wieder in ihren letzten konsistenten Zustand versetzt werden. Andere Arten von „Fehlern“ können beispielsweise unsinnige Benutzereingaben oder vom Anwender gewünschte Transaktionsabbrüche darstellen. Um diese Ziele mit Hilfe der Transaktionen erreichen zu können, stehen auf der TransaktionsEbene folgende Operationen zur Verfügung 4: - Durch die Operation begin of transaction (kurz: BOT) wird der Anfang einer Transaktion markiert. - Durch die commit-Operation wird die Beendigung der Transaktion eingeleitet. Alle während der Transaktion vorgenommenen Datenbankänderungen werden dauerhaft in die Datenbank aufgenommen. - Mit der Operation abort wird eine Transaktion abgebrochen. Das DBS kehrt in den Zustand zurück, der vor Transaktionsbeginn bestand. - Mit define savepoint wird ein Sicherungspunkt definiert. - Zu dem Zustand, der vor diesem Sicherungspunkt bestand, kann mit der Operation backup transaction zurückgekehrt werden. Eine ausführliche Darstellung zur Transaktionsverwaltung befindet sich beispielsweise in [VG93]. Die beiden nun folgenden Beschreibungen zu deduktiven und aktiven Datenbanksystemen erweitern das „klassische“ DBS-Grundmodell. Beide Ansätze sind orthogonal zueinander, was bedeutet, dass sie einander nicht ausschließen. Stattdessen kann ein DBS durchaus deduktive und aktive Konzepte enthalten. 4 Nur die ersten drei Operationen sind tatsächlich erforderlich. 6 2.1.3 Deduktive Datenbanksysteme In diesem Abschnitt soll – mangels einheitlicher Definition – zunächst klargestellt werden, was in dieser Arbeit unter einem Deduktiven Datenbanksystem (DDBS) verstanden werden soll. Darüber hinaus sollen einige, für diese Arbeit relevante Aspekte eines DDBS dargestellt werden. Begonnen werden soll dieser Abschnitt jedoch zunächst mit einem motivierenden Beispiel. 2.1.3.1 Motivierendes Beispiel Angenommen, folgender Sachverhalt liegt vor: „Beim Berlin-Marathon befinden sich alle 5 km und im Ziel sogenannte Versorgungszentren, an welchen die Läufer verpflegt werden.“ Mit Hilfe von Fakten kann dieser Sachverhalt folgendermaßen beschrieben werden: Beim Beim Beim Beim Beim Beim Beim Beim Beim Berlin-Marathon Berlin-Marathon Berlin-Marathon Berlin-Marathon Berlin-Marathon Berlin-Marathon Berlin-Marathon Berlin-Marathon Berlin-Marathon befindet befindet befindet befindet befindet befindet befindet befindet befindet sich sich sich sich sich sich sich sich sich an an an an an an an an an km km km km km km km km km 5 ein Versorgungspunkt. 10 ein Versorgungspunkt. 15 ein Versorgungspunkt. 20 ein Versorgungspunkt. 25 ein Versorgungspunkt. 30 ein Versorgungspunkt. 35 ein Versorgungspunkt. 40 ein Versorgungspunkt. 42,195 ein Versorgungspunkt. Man erkennt leicht, dass in dieser Darstellung eine Regelmäßigkeit steckt, welche sich als Regel formulieren lässt. Hierdurch lassen sich beispielsweise folgendermaßen Fakten einsparen: 1. Beim Berlin-Marathon befindet sich an km 5 ein Versorgungspunkt. 2. Wenn sich an einer bestimmten Stelle ein Versorgungspunkt befindet, dann befindet sich (bis ins Ziel) 5 km hinter dieser Stelle ein weiterer Versorgungspunkt. 3. Beim Berlin-Marathon befindet sich an km 42,195 ein Versorgungspunkt. Herkömmliche Datenbanksysteme können Regeln (wie 2.) nicht verarbeiten, was die Erweiterung des klassischen Modells motiviert. 2.1.3.2 Begriffsbestimmung: Deduktives Datenbanksystem Als DDBS soll in dieser Arbeit ein DBS bezeichnet werden, welches über eine Komponente verfügt, die es dem System erlaubt, mit Hilfe von Regeln neues Wissen herzuleiten5. Diese Komponente wird als Deduktive Komponente (oder Inferenzkomponente) bezeichnet. 5 Dieses Erschließen neuen Wissens wird als Inferenz bezeichnet. Nach C. S. Peirce (s. [Har31]) lassen sich die Inferenzarten Deduktion („Schließen von einem allgemeinen auf einen speziellen Fall“), Induktion („Erschließung regelhaften Wissens durch Beobachtung“) und Abduktion („Hypothesen über den Sachverhalt werden aus Beobachtung und regelhaftem Wissen gewonnen“) unterscheiden. Da sich Induktion und Abduktion auch als Deduktionsproblem betrachten lassen [BHS93] und diese beiden Inferenzarten die unerwünschten Eigenschaften aufweisen, dass mit ihrer Hilfe hergeleitetes Wissen nicht notwendigerweise wahr ist, kommt im Zusammenhang mit Automatischem Beweisen der Deduktion die größte Bedeutung zu. In dieser Arbeit werden daher die Begriffe Deduktion und Inferenz synonym verwendet. 7 Zugegebenermaßen ist dieser Ansatz zur Beschreibung eines DDBS etwas vage. Beispielsweise wird nicht geklärt, wie die Architektur eines DDBS genau auszusehen hat. Dadurch wird diese Umschreibung aber der Verschiedenartigkeit der Architekturansätze6 gerecht. Es wird nicht vorgeschrieben, wie die Komponente an das herkömmliche DBMS gekoppelt ist („lose Kopplung“ oder „enge Kopplung“). Auch wird nicht ausgeschlossen, dass die Komponente sogar Teil des DBMS ist („integrierter Ansatz“). 2.1.3.3 Zentrales Element: Regel Zentrales Element deduktiver Datenbanksysteme ist die Regel. Diese wird zwecks Abgrenzung zur weiter unten erläuterten aktiven Regel auch als passive Regel bezeichnet. (Passive) Regeln können auf verschiedene Arten beschrieben werden. Hierzu muss die DDL des deduktiven Datenbanksystems die Möglichkeit haben, Regeln zu formulieren. Dies ist in Sprachen „konventioneller“ Systeme nicht möglich. In der Anfragesprache SQL (s. Kapitel 2.1.5.2) können zwar mittels Sichten gewisse, eingeschränkte Regeln formuliert werden, rekursive Anfragen sind damit aber nicht realisierbar7. So gesehen, lassen sich die Regeln eines Deduktiven Datenbanksystems auch als Erweiterung der SQL-Sichten auffassen. Unabhängig von der genauen Syntax einer Regel, hat ihre Darstellung stets eine „wenn-dann-Struktur“. wenn <Bedingung> dann <herleitbares Fakt> Aufgrund der Zielsetzung deduktiver Datenbanksysteme, Schlussfolgerungen ziehen zu können, bildet Logik die theoretische Grundlage. Daher besteht ein enger Zusammenhang zwischen logischer Programmierung (s. Kapitel 2.1.8) und deduktiven Datenbanksystemen. Diese Verbindung von DDBSen und logischer Programmierung ist zwar nicht zwingend, allerdings eignen sich logische Programmiersprachen wie Prolog besonders gut, Regeln zu formulieren. Eine spezielle Anfragesprache für deduktive Datenbanksysteme stellt Datalog dar. Hierbei handelt es sich zwar nicht um eine Programmiersprache im engeren Sinne, um diese Sprache aber mit Prolog besser vergleichen zu können, wird sie ebenfalls erst in Kapitel 2.1.8 beschrieben. 2.1.3.4 Einschub: Integritätsbedingungen Dieser Einschub befasst sich mit semantischer Integrität von Datenbanken. Obwohl dieses Thema auch für herkömmliche Datenbanksysteme von großer Bedeutung ist, soll es aufgrund der Parallelen statischer Integritätsbedingungen zu deduktiven Regeln im Anschluss an die diesbezügliche Beschreibung erläutert werden. Man beachte zunächst, dass beispielsweise die Vereinbarungen von Datentypen bereits als Integritätsbedingungen aufgefasst werden können. Im folgenden soll – wenn nicht anders angegeben – der Begriff der Integritätsbedingung allerdings enger verstanden werden: als eine besondere, im folgenden beschriebene Art von Regel. Darüber hinaus spielen die dynamischen Integritätsbedingungen, also Integritätsbedingungen welche sich auf Abläufe in Datenbanken beziehen, keine Rolle. Betrachtet werden sollen hingegen statische – sich auf den Datenbankzustand beziehende – Integritätsbedingungen. 6 Ein kurzer Überblick über die verschiedenen Architekturansätze erfolgt in [FU1665], Kapitel 10, S. 42 7 Die SQL-3-Spezifikation sieht rekursive Anfragen vor. In DBSen mit rekursiven Sichten könnte insofern also auch keine Rede mehr von „konventionellen“ DBSen sein. Zur Weiterentwicklung des SQL-Standards s. [Mel96] 8 Im Versorgungspunkte-Beispiel könnte man sich beispielsweise folgende Bedingung denken: Versorgungspunkte dürfen nie näher als 2 km nebeneinander liegen. Man erkennt schon an diesem Beispiel den normativen Charakter von Integritätsbedingungen. Im Gegensatz zu deduktiven Regeln, welche zur Herleitung von neuen Fakten dienen, sprechen Integritätsbedingungen Verbote aus und grenzen somit die Menge zulässiger Datenbankzustände ein. Die Parallele zu deduktiven Regeln offenbart sich erst nach Umformung der Bedingung: Wenn ein Versorgungspunkt von einem anderen Versorgungspunkt weniger als 2 km entfernt liegt, dann ist der Datenbankzustand inkonsistent. 2.1.3.5 Änderungsgetriebene und anfragegetriebene Inferenz Man unterscheidet änderungsgetriebene und anfragegetriebene Inferenz. Inferenz wird als änderungsgetrieben bezeichnet, wenn die Inferenz als Folge von Datenbankänderungen angestoßen wird, um neues Wissen herzuleiten. Werden die Infernzmechanismen hingegen erst als Reaktion auf Anfragen aktiv, um zu ermitteln, ob ein gewisses Fakt in der Datenbank enthalten ist, spricht man von anfragegetriebener Inferenz. Die Begriffe der änderungsgetriebenen und anfragegetriebenen Inferenz sind eng verknüpft mit den Begriffen materialisierte und virtuelle Daten. Daten werden als materialisiert bezeichnet, wenn sie (wie bei der änderungsgetriebenen Inferenz üblich) physisch in der Datenbank vorhanden sind (beispielsweise als Relation). Werden die Daten nicht physisch erzeugt, sondern muss stattdessen bei Anfragen über Inferenz des Systems geprüft werden, ob ein bestimmtes Fakt gegeben ist oder nicht, spricht man von virtuellen Daten. 2.1.3.6 Vorteile Deduktiver Datenbanksysteme Virtuelle Datenhaltung hat gegenüber der materialisierten den Vorteil der teilweise enormen Speicherplatzersparnis, dafür ist der Zugriff (wegen des Umwegs über die Deduktive Komponente) auf diese Daten häufig langsamer. Aus diesem Grund ist es mitunter sinnvoll, auf Mischformen der Datenhaltung zurückzugreifen. So können beispielsweise die Daten größtenteils virtuell gehalten werden, wobei häufig benötigte oder zeitintensiv herzuleitende Daten materialisiert werden. Im Gegensatz zu herkömmlichen Datenbanksystemen kann in einem DDBS auf diese Weise, ein möglichst ideales Verhältnis zwischen Speicherplatz und DatenZugriffszeit erreicht werden. Über diesen – aus der Möglichkeit zur virtuellen Datenhaltung resultierenden – Vorteil hinaus haben Deduktive Systeme weitere Vorteile. Ein Vorteil ist beispielsweise, dass die Datenbankinhalte aufgrund ihrer modulareren Struktur besser lesbar sind. Darüber hinaus lassen sich Änderungen der Datenbankinhalte teilweise erheblich einfacher vornehmen. Angenommen, die Leitung des Berlin-Marathons gelangt zu der Ansicht, es genüge, alle 7 km einen Versorgungspunkt zur Verfügung zu stellen, so müssten im Beispiel in der ersten Darstellungsart sämtliche Fakten geändert werden. Die Änderung in der Darstellung mit Hilfe von Regeln kann hier viel einfacher vorgenommen werden. Dies soll als Einführung genügen. Zur ausführlichen Beschreibung deduktiver Datenbanksysteme sei auf [CGT90], [Man99] oder [BS96] verwiesen. 9 2.1.4 Aktive Datenbanksysteme 2.1.4.1 Motivation Manchmal erscheint es wünschenswert, dass ein DBS auf bestimmte Ereignisse oder Konstellationen in den Datenbanken selbständig reagiert. In einem beschränkten Maß ist dies zwar auch den oben beschriebenen Deduktiven Datenbanksystemen möglich. So kann das DBMS bei Verletzung einer Integritätsbedingung einen Rollback auslösen und somit auf bestimmte – inkonsistente – Situationen reagieren. Dies reicht jedoch nicht mehr aus, wenn erforderlich wird, dass speziellere Reaktionen ausgelöst werden oder dass auch auf Ereignisse reagiert wird, die keinen inkonsistenen DB-Zustand nach sich ziehen. So könnte der Inhaber eines Supermarktes beispielsweise den Wunsch haben, dass sein DBS automatisch erkennt, wenn gewisse Produkte besonders häufig oder besonders selten verkauft werden und daraufhin automatisch prüft, ob eine Preisanpassung erfolgen sollte. 2.1.4.2 Begriffsklärung: Aktives Datenbanksystem (ADBS) Für solche Situationen eignen sich aktive Datenbanksysteme. Da sich auch in Bezug auf aktive Datenbanksysteme noch keine einheitliche Sichtweise etabliert hat, soll an dieser Stelle zunächst einmal geklärt werden, was in dieser Arbeit unter einem aktivem DBS verstanden wird. Hierbei wird der Begriffsdefinition von [DG96] gefolgt: „Ein Datenbanksystem heißt aktiv, wenn es zusätzlich zu den üblichen DBS-Fähigkeiten in der Lage ist, definierbare Situationen in der Datenbank (und wenn möglich darüber hinaus) zu erkennen und als Folge davon bestimmte (ebenfalls definierbare) Reaktionen auszulösen.“ ([DG96], S.7) 2.1.4.3 Zentrales Element: Aktive Regel Um Situationen erkennen und passende Reaktionen auslösen zu können, muss zunächst spezifiziert worden sein, welche Situationen welche Reaktionen des Systems nach sich ziehen sollen. Aktive Datenbanken stellen hierzu ECA-Regeln (ECA steht für Event, Condition, Action) oder ähnliche Konzepte zur Verfügung. Diese Regeln, welche auch als Trigger oder aktive Regeln bezeichnet werden, haben folgenden prinzipiellen Aufbau: ON Event, IF Condition Æ DO Action Eine solche ECA-Regel soll bewirken, dass immer, wenn ein Ereignis "Event" stattfindet und die Bedingung "Condition" erfüllt ist, die Aktion "Action" ausgeführt wird. Die genaue Syntax der aktiven Regel eines Aktiven Datenbanksystems wird durch die DDL festgelegt. Auch aktive Regeln können mit logischen Programmiersprachen beschrieben werden. Hinsichtlich der Semantik aktiver Regeln gibt es verschiedene betrachtenswerte Aspekte: So ist beispielsweise die Frage zu berücksichtigen, wann eine Regel relativ zum Zeitpunkt des Eintretens eines Ereignisses vom System auszuführen ist oder wie die Ereignisse und Bedingungen (EC-Kopplung) beziehungsweise die Bedingungen und die Aktionen (CA-Kopplung) miteinander gekoppelt sind. Hierbei gibt es einerseits die Möglichkeit der direkten Kopplung, was beispielsweise bei einer EC-Kopplung bedeutet, dass direkt nach Auswertung des Ereignis-Teils die Bedingung überprüft wird (Kopplungsmodus „immediate“). Bei dem zweiten möglichen Kopplungsmodus, der verzögerten Kopplung („deferred“), wird zunächst das je10 weilige Transaktionsende abgewartet. Eine verzögerte CA-Kopplung bedeutet beispielsweise, dass die nach Auswertung des Bedingungs-Teils eventuell fällige Aktion erst kurz vor dem „commit“ der aktuellen Transaktion ausgeführt wird. Ein letzter Kopplungsmodus heißt Entkopplung, was bedeutet, dass der entkoppelte Regelteil in einer unabhängigen, separaten Transaktion ausgeführt wird („decoupled“). Da im juristischen System zwar aktive Regeln verwendet werden, diese aber eine sehr einfache Semantik haben und nur in einem sehr eingeschränkten Rahmen verwendet werden, endet die Einführung zu Aktiven Datenbanken hier. In [DG96] ist mehr über die Konzepte Aktiver Datenbanken zu erfahren. 2.1.5 Relationale Datenbanksysteme 2.1.5.1 Relationales Datenmodell Relationale Datenbanksysteme basieren auf dem 1970 von [Cod70] eingeführten Relationenmodell. Aufgrund der Einfachheit dieses Modells ist es in der Praxis zum bedeutendsten Datenmodell geworden. Im Relationenmodell wird die modellierte Anwendungswelt mit Hilfe von flachen Relationen beschrieben. Eine Relation kann als Teilmenge des kartesischen Produkts von Wertebereichen aufgefasst werden.8 In flachen Relationen enthalten die Wertebereiche oder Domänen jeweils nur atomare Werte, also weder Relationen nach anders strukturierte Werte („Forderung der ersten Normalform“). Ein Beispiel für eine flache Relation ist Fußballspieler ⊆ string × string × {Tor, Abw, Mit, Ang} × integer Man unterscheidet zwar zwischen dem Schema einer Relation, welches sich aus den einzelnen Wertebereichen zusammensetzt, und der Instanz einer Relation, womit die konkrete Teilmenge bezeichnet wird. Der Einfachheit halber soll hier jedoch, wo sich die Bedeutung aus dem Zusammenhang ergibt, beides als Relation bezeichnet werden. Relationen lassen sich sehr gut als Tabellen veranschaulichen: Name Volker Vollspann Didi Dribbling Siggi Sicher Fußballspieler Team Position FC Beispiel Ang VfB Musterstadt Mit FC Beispiel Tor Rückennummer 9 10 1 Die einzelnen Spalten stellen die Attribute dar. Die Attributwerte sind jeweils Elemente des dazugehörigen Wertebereichs. Ausführliche Darstellungen des relationalen Datenmodells finden sich in [KE99] (S.59 ff.) und [Heu92] (S. 57 ff.). 8 obwohl diese Sichtweise aufgrund der Reihenfolgeabhängigkeit der einzelnen Wertetypen Probleme mit sich bringen kann, soll sie aufgrund ihrer Griffigkeit in dieser Arbeit verwendet werden 11 2.1.5.2 SQL9 Für relationale Datenbanksysteme existiert die Datenbanksprache SQL, welche gleichzeitig DDL und DML ist. Sie ist die eindeutig am weitesten verbreitete relationale Datenbanksprache und soll daher im folgenden kurz vorgestellt werden. Eine von vielen ausführlichen Einführungen zu SQL ist [KR97]. Abfragen (engl.: queries) werden in SQL mit Hilfe der SELECT-Anweisung durchgeführt. Mit dieser Anweisung kann auf verschiedenste Weisen auf Inhalte von Tabellen zugegriffen werden. Hier ein Beispiel: SELECT name, rueckennummer FROM fussballspieler WHERE team = ’FC Beispiel’ ORDER BY rueckennummer Die obige Abfrage hat zur Folge, dass aus (FROM) der Tabelle „fussballspieler“ die Spalten „name“ und „rueckennummer“ herausgesucht werden (SELECT). Hierbei sollen allerdings nur die Zeilen betrachtet werden, wo (WHERE) team = ’FC Beispiel’ ist. Die neue Tabelle soll nach „rueckennummer“ sortiert werden (ORDER). Das Ergebnis obiger Anfrage wäre somit – die Relation „fussballspieler“ aus Kapitel 2.1.5.1 zu Grunde gelegt – folgende Tabelle: Name Siggi Sicher Volker Vollspann Rückennummer 1 9 Mit Hilfe der DML-Anweisungen INSERT, UPDATE und DELETE lassen sich die Tupel (Zeilen) in den Relationen (Tabellen) einfügen, verändern oder löschen. Ein weiteres wichtiges SQL-Konzept sind die Sichten, welche über CREATE VIEW definiert werden. Im folgenden Beispiel wird eine Sicht „sportler“ erzeugt, welche die Namen von Fußballspielern, Turnern etc. (mittels UNION) zusammenfasst. CREATE VIEW sportler AS ( SELECT name FROM fussballspieler) UNION ( SELECT name FROM turner) UNION ... Im Gegensatz zu den Basisrelationen in SQL sind die in Sichten enthaltenen Daten nicht materialisiert. Sie stellen lediglich abgeleitete Relationen dar. Viele SQL-basierte relationale Datenbanksysteme bieten die Möglichkeit an, SQL in Programmiersprachen wie beispielsweise Fortran oder C einzubinden. Dies geschieht meist so, dass SQL-Ausdrücke direkt in Programme eingefügt werden können („embedded SQL“). 9 SQL steht für Structured Query Language. 12 Als DDL/DML für relationale Datenbanksysteme eignen sich außer SQL auch die logischen Programmiersprachen. Da diese ausführlicher beschrieben werden sollen, wurde darauf verzichtet, sie bereits an dieser Stelle zusammen mit SQL vorzustellen. 2.1.6 Objektorientiertes Datenmodell Innerhalb des Datenbankentwurfs10 unterscheidet man unter anderem die Phasen des konzeptuellen und logischen Entwurfs. In relationalen Datenbanken basiert der logische Entwurf auf dem in Kapitel 2.1.5.1 beschriebenen Relationenmodell. Ein auf dem Relationenmodell basierender Entwurf ist häufig schwierig, da dieses Modell sich an Eigenschaften von Maschinen orientiert und daher als unnatürlich empfunden wird (vgl. [Oes98], S. 25 ff.; [KE99], S. 55). Aus diesem Grunde sollte zunächst ein konzeptueller Entwurf vorgenommen werden, welcher im Anschluss in den logischen Entwurf überführt werden kann. Für einen konzeptuellen Entwurf eignen sich die deutlich stärker an die menschliche Denkweise angelehnten objektorientierten Datenmodellen besonders gut. Da in dieser Arbeit der konzeptuelle Entwurf der Sachverhalt-Datenbank auf einem objektorientierten Datenmodell basiert, sollen die für diese Arbeit wichtigen objektorientierten Konzepte nun vorgestellt werden. Eine detailliertere Darstellung findet sich in [Oes98] (S. 35 ff.). Gegenstände11 (wie z.B. Fußballmannschaft) aus der realen Welt können als Objekte aufgefasst werden. Ein Objekt verfügt über Attribute (wie z.B. Vereinsname, Tabellenplatz) und Operationen, welche mögliche „Verhaltensweisen“ von Objekten beschreiben. Ein im Vergleich zum relationalen Datenmodell herauszuhebendes Merkmal von Objektattributen ist, dass ein solches durchaus wiederum ein Objekt als Wert haben kann12. Dies ist in relationalen Datenmodellen unter Einhaltung der Forderung der ersten Normalform nicht auf solch direkte Art darzustellen. In objektorientierten Datenmodellen kann aber so beispielsweise ein Attribut eines Objektes „Fußballmannschaft“ die Bezeichnung „Elfmeterschütze“ tragen und als Wertemenge die Menge aller möglichen „Fußballspieler“-Objekte haben. Ein einzelnes Element aus einer solchen Menge wird auch als Objekt-Instanz bezeichnet. Man unterscheidet zwischen diesen Objektinstanzen und Objektklassen: Objektinstanzen modellieren jeweils einen „Gegenstand“ der realen Welt. In einer Objektklasse sind hingegen Objektinstanzen, welche über die gleiche Datenstruktur verfügen, zusammengefasst (Klassifikation); eine Objektklasse ist sozusagen eine Schablone für Objektinstanzen. class Fussballmannschaft { string vereinsname; int tabellenplatz; fussballspieler elfmeterschuetze; public void tabellenplatz_aendern (int neu_tabellenplatz) { tabellenplatz = neu_tabellenplatz; } } Abbildung: Eine Objektklasse in Java 10 Eine genaue Beschreibung zum Datenbankentwurfs findet sich in [KE99] (S. 27 ff.) oft macht es darüber hinaus auch Sinn, abstrakte Begriffe (Stundenplan, Straftat) als Objekte aufzufassen 12 In Sprachen wie beispielsweise Smalltalk, wo jedes Attribut wieder ein Objekt ist, muss der Wert eines Attributs sogar wieder ein Ob jekt sein 11 13 Eine wichtige Eigenschaft von Objektinstanzen ist die Objektidentität: jedes Objekt muss eindeutig von jedem anderen unterscheidbar sein. Um dies zu gewährleisten werden Schlüssel verwendet. Mit Schlüssel wird eine minimale Menge von Attributen eines Objektes bezeichnet, deren Werte die Objektinstanz innerhalb aller Objektinstanzen einer Objektklasse eindeutig identifiziert (vgl. [KE99], S.35). Legt man das Fußballspieler-Beispiel aus Kapitel 2.1.5.1 zu Grunde, so bilden die Attribute „Team“ und „Rueckennummer“ einen Schlüssel, vorausgesetzt jeder Spieler hat innerhalb eines Teams eine eindeutige Rückennummer. Klassen können hierarchisch angeordnet werden. Ist eine Klasse einer anderen hierarchisch untergeordnet, „erbt“ sie die Attribute und Operationen der übergeordneten Klasse (Vererbung), kann zusätzlich aber auch neue Eigenschaften (Attribute, Methoden) aufweisen. So ist beispielsweise eine Klasse „Sportler“ denkbar, welche über Attribute wie „Name“ und „Gewicht“ verfügt. Die untergeordnete Klasse „Fußballspieler“ verfügt dann auch über diese Attribute, könnte zusätzlich allerdings beispielsweise das Attribut „Rückennummer“ einführen. Dies soll als kurze Einführung genügen. Im nun folgenden Kapitel wird eine Möglichkeit vorgestellt, objektorientierte Datenmodelle zu beschreiben. 2.1.7 UML Da komplexe Software-Systeme in ihrer Gesamtheit nur schwer zu erfassen sind, ist es zur Beschreibung und damit auch zur Entwicklung solcher Systeme erforderlich, geeignete Darstellungsarten für die verschiedenen Aspekte eines Software-Systems zur Verfügung zu haben (vgl. [UML1.3], S. 2). Aus dieser Notwendigkeit heraus wurden in der Vergangenheit verschiedenste Modellierungs-Sprachen entwickelt. Nachdem die wohl beliebtesten Beschreibungsarten der „Amigos“ Grady Booch ([Boo91]), James Rumbaugh ([Rum91]) und Ivar Jacobsen ([Jac92]) 1997 zusammengeführt wurden, steht nun mit der so entstandenen „Unified Modeling Language“ (UML) ein Quasi-Standard zur Verfügung (vgl. [Oes98], S. 19). Die UML legt Notation und Semantik einer „Sprache“ zur Beschreibung verschiedener Gesichtspunkte von Software-Modellen fest. Sie basiert auf dem objektorientierten Datenmodell. Ein Teil der mit dieser Sprache erzeugbaren Diagrammarten soll im folgenden so weit, wie für das Verständnis der in dieser Arbeit vorkommenden Diagramme erforderlich, erläutert werden. Die Darstellung der Diagrammtypen orientiert sich hauptsächlich an [UML1.3] und [Oes98]. 2.1.7.1 UML-Klassendiagramme Klassendiagramme sind dazu da, Objekt-Klassen und die Beziehungen zwischen diesen Klassen darzustellen. Mit Hilfe dieses Diagrammtyps lassen sich so objekt-orientierte Datenmodelle visualisieren. Basiselement des Klassendiagramms ist die Objekt-Klasse, welche in der UML durch ein Rechteck, das durch waagerechte Linien in maximal drei Bereiche eingeteilt ist, dargestellt wird. Im obersten Teil des Rechtecks steht der Name der Klasse. Im zweiten Teil des die Klasse darstellenden Rechtecks finden sich die Klassen-Attribute. Im dritten Teil stehen die Methoden der Klasse. Durch Linien zwischen zwei Klassen werden Beziehungen zwischen den entsprechenden Klassen dargestellt. Neben solch einer Linie kann der Name der Beziehung angegeben sein. Eine besondere Art der Beziehung ist die Spezialisierung. Diese wird durch einen Pfeil dargestellt, dessen Spitze unausgefüllt ist und auf die sogenannte Oberklasse zeigt. Die dazugehörende Unterklasse erbt sämtliche Attribute und Methoden der Oberklasse, kann darüber hin14 aus aber zusätzliche eigene Attribute und Methoden enthalten. Gehört ein Objekt einer Unterklasse an, so gehört es gleichzeitig auch zur entsprechenden Oberklasse. Eine Klasse heißt abstrakte Klasse, wenn in ihr keine Instanzen erzeugt werden können. Alle Elemente einer solchen Klasse müssen auch zu einer ihrer Unterklassen gehören. Zur Kennzeichnung einer abstrakten Klasse schreibt man ihren Namen in kursiver Schrift. Fußballspieler Standardsituation führt_aus name: STRING team: STRING position: {Tor, Abw, Mit, Ang} rückennummer: INTEGER verwarnstatus: {{}, gelb, rot, gelb-rot} ausführendes_Team: {Heim, Gast} verwarnstatus_ändern(neuer_Verwarnstatus) Eckball Freistoß Anstoß Einwurf seite: {links, rechts} Elfmeter direkt: {ja, nein} Klassendiagramm: Standardsituationen Man betrachte das Klassendiagramm „Standardsituationen“. Eine Instanz der Klasse Fußballspieler könnte beispielsweise folgende Attribute besitzen: name: team: position: rückennummer: verwarnstatus: Volker Vollspann FC Beispiel Ang 9 {} Darüber hinaus existiert die Klasse „Standardsituation“. Sie ist als abstrakte Klasse modelliert, was zur Folge hat, dass jede Standardsituation Instanz einer der Klassen „Anstoß“, „Eckball“, „Einwurf“, „Elfmeter“ und „Freistoß“ sein muss. Eine Instanz der Klasse „Eckball“ hat demnach auch die Eigenschaften der Klasse „Standardsituation“ und könnte beispielsweise über folgende Attributwerte verfügen: ausführendes_Team: seite: Heim rechts Zwischen diesem Eckball und Volker Vollspann könnte nun die Beziehung „führt_aus“ bestehen, was natürlich nur Sinn machte, wenn der FC Beispiel die Heimmannschaft wäre. Die meisten Objektklassen im Klassendiagramm „Standardsituationen“ verfügen über keine Methoden, manche – wie Einwurf – führen auch keine neuen Attribute ein, sondern erben nur aus der Oberklasse. Einzig die Klasse „Spieler“ verfügt über eine Methode. Über „verwarnstatus_ändern(neuer_Verwarnstatus)“ kann der „verwarnstatus“ eines Spielers verändert werden. Soweit die ersten Erläuterungen zu UML-Klassendiagrammen. Auf speziellere Probleme wird an entsprechender Stelle genauer eingegangen. 15 2.1.7.2 UML-Sequenzdiagramme Mit Sequenzdiagrammen lässt sich in der UML die Zusammenarbeit einzelner Objekte insbesondere unter zeitlichen Gesichtspunkten beschreiben. Da man einzelne Komponenten eines Softwaresystems auch als Objekte auffassen kann, lässt sich auch die Kooperation einzelner Systemteile wie beispielsweise Dialog- und Inferenzkomponente mit Hilfe dieses Diagrammtyps veranschaulichen. Dialog_Personalien _aufnehmen neu() Dialog_Eingabe_ Geburtsdatum datum_erfragen() geburtsdatum Sequenzdiagramm: Eingabe-Dialoge Ein Objekt wird im Sequenzdiagramm durch ein Rechteck dargestellt, in welchem der Name des Objektes steht. Unter diesem Objektsymbol beginnt die Lebenslinie des Objektes. Diese ist gestrichelt dargestellt und verläuft entlang einer imaginären Zeitachse von oben nach unten. Wird die gestrichelte Linie durch einen grauen Balken – den Steuerungsfokus – überlagert, bedeutet dies, dass das entsprechende Objekt für den Zeitraum der Überlagerung aktiv ist und somit Programmkontrolle besitzt. Mitunter können mehrer Objekte gleichzeitig aktiv sein. Dieser Fall ist auch in der Beispielabbildung zu erkennen. Ein Kreuz am unteren Ende eines grauen Balkens signalisiert das Ende der Lebensdauer eines Objektes. Die Entstehung eines neuen Objektes wird dadurch dargestellt, dass ein Pfeil mit geschlossener Spitze vom Steuerungsfokus eines anderen Objektes aus auf das neu erschaffene Objekt zeigt. Diese Art von Pfeilen kann nicht nur zur Objektkonstruktion verwendet werden, sondern steht prinzipiell für jede Nachricht, die ein Objekt an ein anderes sendet. Über einem solchem Pfeil steht stets die Bezeichnung der dazugehörigen Nachricht. Durch Pfeile mit offenen Spitzen werden Rücksprünge beschrieben. Der Text über diesen Pfeilen bezeichnet den dazugehörigen Rückgabewert. Die Beispielabbildung soll folgenden Vorgang darstellen. Der Benutzer befindet sich im Dialog mit dem Programm: er möchte seine Personalien eingeben. Dazu wird ein entsprechender Dialog benötigt, in welchem er beispielsweise Vor- und Nachnamen eingeben kann. Möchte er nun sein Geburtsdatum eingeben, muss dazu eigens ein weiterer Dialog gestartet werden. In der Beispielabbildung existiert zunächst nur das Objekt „Dialog_Personalien_aufnehmen“. Dieses sendet eine als Konstruktor fungierende Nachricht „neu()“, um ein Objekt vom Typ 16 „Dialog_Eingabe_Geburtsdatum“ zu erschaffen. Nun existieren zwei Objekte nebeneinander, wobei das Objekt „Dialog_Personalien_aufnehmen“ den Steuerungsfokus besitzt. Erst in dem Moment, wo die Nachricht „datum_erfragen()“ versendet wird, enthält auch das zweite Objekt Programmkontrolle, was am zweiten senkrechten Balken zu erkennen ist. Nun kann der Benutzer mit beiden Objekten interagieren. Beendet er die Eingabe des Geburtsdatums, wird dieses („geburtsdatum“) an „Dialog_Personalien_aufnehmen“ zurückgegeben und „Dialog_Eingabe_Geburtsdatum“ wird zerstört. 2.1.8 Logische Programmierung Bei der imperativen13 Programmierung werden durch Algorithmen genaue Anleitungen spezifiziert, welche einer Maschine vorgeben (befehlen), wie sie ein bestimmtes Problem bearbeiten soll. Solche imperativen Programme basieren daher, abhängig vom Abstraktionsgrad der konkret verwendeten Programmiersprache, mehr oder weniger deutlich erkennbar auf der zu Grunde liegenden Maschinenstruktur (z.B. von Neumann-Rechner). Im Gegensatz dazu fußt die deklarative14 (oder deskriptive15) Programmierung auf mathematischen Theorien. Als deklarativ wird diese Art der Programmierung deshalb bezeichnet, weil mit Hilfe der zu Grunde liegenden mathematischen Theorien das zu bearbeitende Problem beschrieben wird. Ein deskriptives Programm besteht dann im Idealfall – welcher in der Praxis aus Effizienzgründen jedoch nicht ganz erreicht wird – lediglich aus Problembeschreibungen, welche keine Informationen über den von der Maschine vorzunehmenden Problemlösungsvorgang enthalten. Dadurch werden Programme häufig leichter lesbar und in Folge dessen einfacher zu entwickeln, warten und verifizieren. Ein ausführlicher Überblick über deklarative Programmierung findet sich beispielsweise in [Loo99] oder [Man98]. Bei der deklarativen Programmierung unterscheidet man hauptsächlich zwischen den Bereichen funktionale und logische Programmierung, jedoch existieren auch Ansätze, welche diese Richtungen in einer Sprache vereinen. In diesem Abschnitt soll die logische Programmierung genauer betrachtet werden. Logische Programme bestehen aus logischen Formeln. Ein solches Programm wird nicht im klassischen Sinne gestartet. Stattdessen wird eine Anfrage formuliert, welche wiederum aus einer logischen Formel besteht. Das System versucht mit Hilfe der anderen Formeln zu beweisen, dass diese Anfrage-Formel „wahr“ ist. Enthält die zu beweisende Formel (das „Goal“) Variablen, so sucht das System nach Belegungen, für welche die durch die Formel ausgedrückte Aussage gilt. Der von der Programmiersprache abhängige Vorgang des Beweisens entspricht der „Ausführung“ des Programms. An dieser Stelle sollen zwei auf Logik basierende Sprachen vorgestellt werden. Dies sind die Sprachen Prolog und Datalog. Letztere stellt zwar keine Programmiersprache im engeren Sinn dar; vielmehr handelt es sich bei dieser Sprache um eine relationale Anfragesprache. Da Datalog aber mit Prolog verglichen werden soll, um später in Kapitel 5.1 besser beurteilen zu können, welche Sprache sich besser als Datenbanksprache des juristischen Systems eignet, wird auch Datalog in diesem Kapitel beschrieben. 13 „imperare“ (lat.) bedeutet befehlen „declarare“ (lat.) bedeutet erklären, deutlich machen 15 „describere“ (lat.) bedeutet beschreiben 14 17 2.1.8.1 Prolog Die folgende Darstellung der Grundlagen der Prolog-Programmierung ist stark zusammengefasst und spiegelt nur einen Ausschnitt der Möglichkeiten wider. Zur vertiefenden Lektüre können [SG98] und [StS94] empfohlen werden. Da die Programmiersprache Prolog auf der Prädikatenlogik erster Stufe basiert, werden gewisse Grundlagen aus der mathematischen Logik benötigt, welche zum Teil als bekannt vorausgesetzt werden. Diese Grundlagen können in [Sch94] nachgelesen werden. Man unterscheidet folgende Arten von Prolog-Termen: - Konstanten: Konstanten sind im Prinzip 0-stellige Funktionssymbole und werden in Prolog durch einen kleinen Buchstaben am Anfang gekennzeichnet. Außerdem werden Zahlen als Konstanten betrachtet und alles was durch Hochkommata umschlossen ist. - Variablen: Variablen werden in Prolog durch einen großen Buchstaben oder einen Unterstrich am Anfang gekennzeichnet. Ein alleinstehender Unterstrich („_“) steht für eine anonyme Variable, wobei zu beachten ist, dass zwei solcher anonymer Variablen trotz gleicher Schreibweise für verschiedene Variablen stehen. - Zusammengesetzte Terme (Funktionen): Diese Terme bestehen aus einem kleingeschriebenen Funktionsnamen und einer Argumentliste, welche wiederum Terme enthält. Ein Beispiel für eine Funktion ist: f(X, a, g(auto), 123, _). In Prolog werden Funktionen nicht interpretiert; man kann auch sagen, sie interpretieren sich selbst. So steht ein Term wie beispielsweise f(4) nicht für einen bestimmten Wert, sondern für f(4). Mit Hilfe verschiedener Umformungsschritte können Formeln der Prädikatenlogik in erfüllbarkeitsäquivalente Formeln in Klauselform gebracht werden. Eine Klausel, welche genau ein positives Literal enthält, nennt sich definite Hornklausel. Ein Prolog-Programm besteht nun aus einer Menge von Klauseln dieser besonderen Art, welche alle implizit als allquantifiziert zu betrachten sind. In Prolog unterscheidet man definite Hornklauseln weiter in: - Fakten: Definite Hornklauseln, welche aus einem einzigen positiven Literal bestehen, werden Fakten genannt. Somit entsprechen Fakten atomaren Formeln, welche aus einem Prädikatensymbol und einer Liste von Termen bestehen. Prolog-Prädikate werden notiert wie Funktionen in Prolog; jedoch ergibt sich aus dem Zusammenhang, was im Einzelfall gemeint ist. - Regeln: Als Regel werden definite Hornklauseln bezeichnet, welche mindestens ein negatives Literal enthalten. Regeln werden in Prolog in implikativer Schreibweise notiert. Die Implikation „ ⇐ “ wird in Prolog durch „:-“ und die Konjunktion „ ∧ “ durch ein Komma ausgedrückt. Dies sind Beispiele für Prolog-Fakten: nachbar(ned, homer). mitbewohner(homer, maggie). weiblich(maggie). mitbewohner(bart, maggie). maennlich(ned). 18 ... und dies ist ein Beispiel für eine Prolog-Regel: nachbar(X,Z) :- mitbewohner(Y,Z), nachbar(X,Y). Der linke Teil einer Regel wird als Kopf (engl. Head), der rechte Teil als Rumpf (Tail) bezeichnet. Durch Regeln und Fakten werden Bedeutungen von Prädikaten festgelegt. So wird durch das Beispiel-Fakt nachbar(ned, homer) ausgedrückt, dass zwischen ned und homer eine nachbar/2-Beziehung besteht. Über Regeln können solche Relationen ebenfalls definiert werden. Die Regel im Beispiel drückt aus, dass X und Z in „nachbar/2“-Beziehung zueinander stehen, wenn X und Y in „nachbar/2“-Beziehung stehen und Y und Z an der Relation „mitbewohner/2“ beteiligt sind. Wie gerade bereits geschehen, werden in Prolog zur Bezeichnung von Relationen, ihr Name und – durch einen Schrägstrich getrennt – ihre Stelligkeit angegeben, also etwa „weiblich/1“ oder „nachbar/2“. Relationen mit gleichem Namen aber unterschiedlichen Stelligkeiten sind in Prolog verschiedene Relationen. Mittels Anfragen (engl. queries) kann das in Prolog-Programmen enthaltene Wissen erfragt werden. Eine Anfrage sieht aus wie ein Fakt oder – bei zusammengesetzten Anfragen – wie eine Konjunktion von Fakten, doch ist immer aus dem Kontext klar, ob ein Fakt oder eine Anfrage vorliegt. Wird eine Anfrage in das Prolog-System eingegeben, so versucht dieses, die Anfrage zu beweisen. Die Klausel, welche jeweils aktuell zu beweisen versucht wird, bezeichnet man als Goal oder Zielklausel. Anfragen können auch Variablen enthalten, für welche während des im folgenden genauer beschriebenen Beweisverfahrens geeignete Werte gesucht werden. SLD-Resolution Die definiten Hornklauseln sind Grundlage für ein spezielles Beweisverfahren, welches Prolog verwendet. Mit diesem Verfahren kann die Semantik eines Prolog-Programms operational beschrieben werden. Hierzu definiert man die Bedeutung eines Programms als die Menge aller variablenfreien Prädikate, welche mit diesem Verfahren bewiesen werden können. Das entsprechende Beweisverfahren heißt SLD-Resolution16 und soll im folgenden beschrieben werden. Zunächst müssen aber die hierfür erforderlichen Begriffe Unifikation und allgemeinster Unifikator erläutert werden. Wird durch Substitution eine Menge von Literalen L identisch gemacht, so nennt man dies Unifikation. Der Vorgang wird als unifizieren bezeichnet. Die dabei vorgenommenen Substitutionen werden als Unifikator bezeichnet. Ein Unifikator u heißt allgemeinster Unifikator oder most general unifier (kurz: MGU) von L, wenn zu jedem anderen Unifikator v eine Substitution w existiert, so dass gilt: w u = v. Beispiel: Durch die Substitution {[X|g(a)] , [Z|a], [Y|a]} können die Elemente der Literalmenge {f(X, g(a)), f(g(Y), g(Z))} identisch gemacht werden zu f(g(a),g(a)). Diese Substitution ist somit ein Unifikator, allerdings nicht der allgemeinste. MGU ist {[X|g(Y)], [Z|a]}. Um mit (SLD-)Resolution eine gegebene Formel (Anfrage) zu beweisen, wird versucht, deren Negation zu widerlegen. Gelingt dies, so ist die ursprüngliche Formel bewiesen. Eine Formel ist widerlegbar, wenn sie im Widerspruch zur vorliegenden Klauselmenge (dem PrologProgramm) steht. In solch einem Fall kann durch Resolution von der Negation der AnfrageFormel auf die leere Klausel („ erden. Dies geschieht durch wiederholte Anwendung der Resolventenregel, welche eine Verallgemeinerung des modus ponens darstellt. 16 SLD steht für „linear resolution with selection function for definite clauses” 19 { A1 ,..., Am , ¬L1} , {B1 , ..., Bn , L2} sind Klauseln u ist MGU der Literale L1 und L2 { A1 ,..., Am , ¬L1},{B1 ,..., Bn , L2 } {u ( A1 ) ,..., u ( Am )}∪{u ( B1 ), ...,u ( Bn )} Abbildung: Resolventenregel Die Suche nach einem Resolutionsbeweis kann mitunter sehr schwierig sein. Dies liegt daran, dass die Resolventenregel im Allgemeinen bei jedem Schritt auf mehrere verschiedene Arten zur Anwendung kommen kann. Die SLD-Resolution nutzt die Tatsache aus, dass PrologProgramme aus definiten Hornklauseln bestehen und kann auf diese Weise effizienter arbeiten: Beim zu beweisenden Goal wird zuerst das am weitesten links stehende Literal ausgewählt. Dieses wird mit einem Regelkopf unifiziert und anschließend durch den dazugehörigen Regelrumpf ersetzt. Existieren mehrere „passende“ Regeln, wird zunächst die am weitesten oben stehende gewählt. Dieser Vorgang wird solange wiederholt, bis alle Literale des Goals von links nach rechts bewiesen sind. Man sagt daher, die Berechnungsregel von Prolog lautet „von links nach rechts“. Kann ein Literal an einer beliebigen Stelle des Beweises nicht mehr mit einem Regelkopf unifiziert werden, so werden soviele Resolutionsschritte zurückgenommen (einschließlich der Substitutionen), bis der Beweis an einer Stelle angekommen ist, wo das ausgewählte Literal mit einer anderen (der nächsttieferen) Regel unifiziert werden kann. Aufgrund dieser Reihenfolge der Regelauswahl in Prolog sagt man, die Auswertungsstrategie von Prolog ist „von oben nach unten“. Nach Durchführung der Unifikation fährt der Beweis fort. Gibt es keine alternativen Regeln mehr, so kann das Goal nicht bewiesen werden. Der Vorgang des Zurücknehmens von Resolutionsschritten und Ausprobierens von anderen Möglichkeiten heißt Backtracking. Die Abbildung „Beispielanfrage“ zeigt den Verlauf einer SLD-Resolution. Zunächst wird Y mit bart unifiziert, dies muss später allerdings zurückgenommen werden, um mit dem Beweis fortfahren zu können. ?- nachbar(ned, maggie). mitbewohner(Y, maggie), nachbar(ned, Y) mitbewohner(Y, maggie) true nachbar(ned,bart) false mitbewohner(Y, maggie), nachbar(ned, Y) mitbewohner(Y, maggie) true nachbar(ned, homer) true ned = X, maggie = Z Y = bart Y = homer Abbildung: Beispielanfrage Die SLD-Beweisstrategie zieht gewisse Reihenfolgeabhängigkeiten nach sich. Die verschiedenen Variablenbindungen, die während eines Beweises entstehen, führen teilweise zu unterschiedlichen Lösungen für eine Anfrage. Diese werden in einer von der SLD-Resolution abhängigen Reihenfolge entdeckt. Der Programmierer kann über die Anordnung der Regeln und Klauseln in Prolog-Programmen die Reihenfolge, in welcher die Lösungen gefunden werden, beeinflussen. Es kann sogar vorkommen, dass Prolog bei einem Beweis in eine endlose, re20 kursive Schleife gerät ohne vorher Lösungen gefunden zu haben, bei einer anderen Anordnung der Regeln aber zunächst Lösungen entdeckt. In Verbindung mit den im folgenden beschriebenen „außer-logischen“ Konstrukten – insbesondere den roten Cuts – treten solche Reihenfolgeabhängigkeiten noch stärker zu Tage. Nicht-pures Prolog Die bisherigen Ausführungen bezogen sich auf „pures“ Prolog. Mit purem Prolog können im Prinzip „nur“ auf Klauselmengen basierende Beweise durchgeführt werden. Um eine vollwertige Programmiersprache zu erhalten, wurden Prädikate eingeführt, welche mit Seiteneffekten operieren, also neben ihrer logischen Bedeutung eine weitere Funktion haben. - Write: So kann beispielsweise das Prädikat write/1, welches immer „wahr“ ist, verwendet werden, um Text auf den Bildschirm zu schreiben. Wenn der Beweismechanismus an eine Stelle kommt, wo dieses Prädikat bewiesen werden soll, so wird Text auf den Bildschirm ausgegeben. Solche Seiteneffekte können nicht mehr über das Backtracking zurückgenommen werden. - Assert und retract: Zwei weitere wichtige „außer-logische“ Prädikate sind assert/1 und retract/1. Mit dem ersten Prädikat werden Klauseln in das Prolog-Programm eingefügt, mit letzterem entfernt. - Negation As Failure: Ein besonders wichtiges „außer-logisches“ Prädikat, ist not/1. Es erfordert ein Prädikat als Argument und gehört somit nicht mehr zur Prädikatenlogik erster Stufe. „not/1“ wird verwendet, um eine besondere Art der Negation unter Prolog verwendbar zu machen. Hierbei handelt es sich um Negation As Failure. Nach der Closed World Assumption gilt alles, was nicht explizit über Fakten angegeben ist oder über Regeln hergeleitet werden kann, als „falsch“. Das Prädikat not/1 dient dazu, solche negative Informationen zu nutzen. Die Anfrage not Goal ist „wahr“, wenn der Beweis von „Goal“ mißlingt. Mit Hilfe des Prädikats not/1 können teilweise Regeln verwirklicht werden, welche zu erheblicher Speicherplatzersparnis führen. So kann beispielsweise in einer Personendatenbank durch Verwendung der folgenden Regel auf materialisierte Darstellung des Geschlechts verzichtet werden, wenn alle Frauen von der Relation weiblich/1 erfasst sind: maennlich(Person) :- not weiblich(Person). - Cuts: Als letztes “außer-logisches“ Konzept soll an dieser Stelle der Cut (notiert als „!“) vorgestellt werden. Der ursprüngliche Zweck von Cuts ist es, den Suchraum von PrologBerechnungen zu begrenzen. Dies hat zum einen den Vorteil, dass der Beweis schneller durchgeführt werden kann. Zum anderen wird weniger Speicherplatz für die Verwaltung des Backtrackings benötigt. Die Bedeutung des Cuts lässt sich folgendermaßen beschreiben. Angenommen, es wird versucht, die folgende Klausel K zu beweisen. K :- A1, ... ,Ai ,! , Ai+1, ... , An. 21 Nachdem „!“ erreicht ist, stehen alle Variablenbindungen links vom Cut fest. Alternativen zu K werden nicht mehr berücksichtigt. Scheitert der Beweis von K an einem Literal Ai+1, ... , An, so erfolgt Backtracking höchstens bis zum Cut. Genügt dies nicht, scheitert der Beweis von K und der Beweis des übergeordneten Goals wird an der Stelle fortgesetzt, bevor K ausgewählt wurde. Man unterscheidet grüne und rote Cuts. Als grün wird ein Cut bezeichnet, der die Semantik des Programms nicht verändert. Solche Cuts wirken sich nur auf die Laufzeit aus und begrenzen den Suchraum, wo klar ist, dass keine Lösungen gefunden werden. Rote Cuts hingegen ändern die Semantik eines Prolog-Programms, indem möglicherweise noch nicht entdeckte Lösungen „abgeschnitten“ werden. Alle hier vorgestellten nicht-puren Konzepte haben gemeinsam, dass sie imperative Aspekte in Prolog integrieren und somit den deklarativen Charakter der Sprache beschädigen. Aus diesem Grunde sollte der Einsatz solcher Konzepte immer gründlich durchdacht werden. 2.1.8.2 Datalog Datalog17 ist eine relationale Anfragesprache, welche – wie der Name erkennen lässt – von logischen Programmiersprachen wie Prolog beeinflusst ist. Im Gegensatz zu Prolog verfügt Datalog aber nicht über dessen „außer-logischen“ Konzepte und stellt damit eine Reinform einer logischen Programmiersprache dar. Es folgt ein kurzer Überblick über weitere Unterschiede zur Programmiersprache Prolog. Eine weiterführende Informationsquelle für Datalog ist [CGH94]. Die Syntax von Prolog entspricht im wesentlichen der von “purem” Prolog. Funktionssymbole sind im ursprünglichen Datalog jedoch nicht zugelassen, damit der direkte Zusammenhang zu den Relationen einer relationalen Datenbank nicht verloren geht. In seiner ursprünglichen Definition verfügt Datalog auch nicht über Negation. Sowohl für Funktionen als auch für die Negation gibt es allerdings erweiterte Sprachdefinitionen. Die Datalog-Semantik ist im Gegensatz zur instanzorientierten18 Semantik von Prolog mengenorientiert. Dies bedeutet, dass Datalog die Lösungen zu einem Goal nicht sequenziell sondern gleichzeitig erhält. Hieraus folgt auch, dass – anders als in Prolog – Reihenfolgenunabhängigkeit für die Anordnung der Regeln und Klauseln besteht. Ein weiterer Unterschied zu Prolog ist, dass die Resolventenregel in umgekehrter Richtung zur Anwendung kommt. Anstatt in einer „top-down“-Strategie – ausgehend von einer Anfrage – diese durch wiederholte Resolution zu beweisen, kommt in Datalog in der Regel eine “bottom-up”-Strategie zur Anwendung, welche – ausgehend von den Basisfakten – die Regeln verwendet, um neue Fakten herzuleiten. Die Deklarativität von Datalog-Programmen kann ausgenutzt werden, um die Effizienz zu steigern. Durch Äquivalenztransformationen von Datalog-Programmen – die durch die pure Deklaritivität möglich werden – können Anfragen optimiert werden. Hier endet die Darstellung der logischen Programmiersprachen Datalog und Prolog. Weshalb Prolog vor Datalog letztlich im juristischen System den Vorzug bekommt, wird in Kapitel 5.1 erläutert. Der Abschnitt über die Grundlagen der Informatik soll nun mit einer Einführung in Tcl/Tk beschlossen werden. 17 18 Datalog steht für Database Prolog Lösungen werden der Reihe nach ermittelt 22 2.1.9 Tcl/Tk Tcl19/Tk20 wurde Ende der 80er Jahre von John K. Ousterhout entwickelt. Es setzt sich zusammen aus der interpretativen, stringbasierten Skriptsprache Tcl und dem Toolkit Tk. Dieses Toolkit erlaubt es, grafische Oberflächen (GUIs21) für „X windows“ zu erzeugen. Tcl/Tk ist relativ einfach zu erlernen und frei verfügbar. Darüber hinaus verfügt es über Schnittstellen zu den verschiedensten Programmiersprachen. Die Entscheidung, Tcl/Tk zu verwenden, um die grafische Oberfläche des juristischen Systems damit zu implementieren, fiel daher vor allem wegen der guten Schnittstelle zu ECLiPSe, sehr leicht (vgl. [Mei96], S. 1). Diese Verbindung zwischen Tcl/Tk und Prolog nennt sich ProTcXl22. Zu ProTcXl gehören auf der einen Seite Tcl-Kommandos, die es erlauben Prolog-Prädikate von Tcl/Tk aus aufzurufen. Auf der anderen Seite werden von ProTcXl aber auch Prolog-Prädikate definiert, mit welchen auf Tcl/TkKommandos zugegriffen werden kann. Auf Details, welche die Schnittstelle zwischen ECLiPSe und Tcl/Tk betreffen, wird bei der Beschreibung des Eventhandlers genauer eingegangen. An dieser Stelle soll eine sehr kurze Einführung in Tcl/Tk erfolgen. Zur vertiefenden Lektüre sei [Wel95] empfohlen. 2.1.9.1 Tcl-Grundlagen Ein Tcl-Programm wird „Script“ genannt und besteht aus einer Folge von Tcl-Kommandos, welche allesamt aus dem Kommandonamen und einer Liste von Argumenten bestehen. Einzelne Elemente einer Liste werden durch ein Leerzeichen getrennt, so dass ein typisches TclKommando folgendes Format hat: command argument1 argument2 ... argument_n Variablen können mit Hilfe des set-Kommandos belegt werden. Da alle Argumente stets als Zeichenketten aufgefasst, vom Interpreter also nicht ausgewertet werden, hätte ein Kommando der Form set x a+1 zur Folge, dass die Variable x mit der Zeichenkette a+1 belegt würde. Sollen arithmetische Ausdrücke ausgewertet werden, ist das expr-Kommando erforderlich. Um Kommandos auszuwerten, werden eckige Klammern („[ ]“) benötigt. Der Wert einer Variable wird mit Hilfe des Dollarzeichens („$“) ermittelt. Die Kommandos set a 4 set x [expr $a + 1] hätten somit zur Folge, dass die Variable x mit dem Wert 5 belegt würde. Anführungszeichen und geschweifte Klammern („{ }“) haben in Tcl die Funktion, mehrere Argumente zusammenzufassen. Die Ausdrücke „$x $a hallo“ {$x $a hallo} 19 Tcl steht für Tool Command Language Tk steht für Toolkit 21 graphical user interfaces 22 Prolog und Tcl, das X steht für den direkten Zugriff auf die X11-Bibliothek Xlib 20 23 stellen daher jeweils nur ein einziges Argument dar. Der Unterschied zwischen den Anführungszeichen und den geschweiften Klammern besteht darin, dass innerhalb geschweifter Klammern keine Auswertungen stattfinden, innerhalb von Anführungszeichen jedoch schon. Weitere Programmierkonstrukte wie „proc“, „if ... then ... else“,“foreach“, „while“ und „puts“ entsprechen in ihren Bedeutungen ihren Gegenstücken aus anderen Programmiersprachen und werden daher hier nicht näher erläutert. 2.1.9.2 Tk-Grundlagen In diesem Abschnitt sollen kurz die wichtigsten Grundkonzepte des Toolkits Tk beschrieben werden. Tk besteht aus einer Menge zusätzlicher Tcl-Kommandos, die es erlauben, grafische Objekte – sogenannte Widgets – darzustellen und zu verwalten. Es gibt verschiedene Arten dieser grafischen Objekte. Aufgrund der großen Anzahl verschiedener Arten von Tk-Widgets werden an dieser Stelle nur einige Beispiele aufgeführt und ihre Bedeutung kurz erläutert: - Toplevel-Window: Alle anderen Widgets müssen sich in einem solchen Fenster befinden. - Frames: Enthalten andere Widgets. - Buttons: Je nach Button-Art ändert ein Mausklick auf einen Button bestimmte Variablenwerte (Radiobutton und Selectbutton) oder sorgt dafür, dass Tcl-Scripts oder Kommandos ausgeführt werden (Commandbutton). - Scrollbars: Mit ihnen lassen sich, wenn nicht alle Inhalte eines Widgets auf einmal sichtbar sein können, die sichtbaren Bereiche verschieben. - Listboxes: Dienen der Darstellung von Listen sowie der Auswahl der darin enthaltenen Elemente. - Entry-Widgets: Stehen für Text-Eingaben zur Verfügung. Die Eigenschaften der Widgets können bei ihrer Erschaffung direkt angegeben werden. Beispielsweise wird mit dem Kommando button .knopf –text „drück’ mich und es klingelt“ –command bell ein neuer Commandbutton mit der Bezeichnung „.knopf“ erzeugt, welcher die Aufschrift „drück’ mich und es klingelt“ trägt. Über den letzten Teil der Zeile wird bestimmt, dass bei Druck auf den Button das Kommando „bell“ ausgeführt wird, was ein akustisches Signal bewirkt. Die Widget-Eigenschaften können über das configure-Kommando modifiziert werden. .knopf configure –text „ich bin ein Button“ bewirkt, dass der oben erzeugte Button fortan die Aufschrift „ich bin ein Button“ trägt. Ein äußerst wichtiges Kommando ist das pack-Kommando. Es weist den Tk-Fenstermanager an, ein bereits erzeugtes Widget auf dem Bildschirm darzustellen. Hierzu muss der Name des entsprechenden Widgets angegeben werden. Ausserdem kann eine pack-Anweisung wie 24 pack .knopf –side left Informationen darüber enthalten, wie das Widget genau auf dem Bildschirm erscheinen soll (z.B. linksbündig). Je nach Widget gibt es noch viele andere Kommandos, welche an gegebener Stelle kurz erläutert werden. An dieser Stelle soll lediglich noch erwähnt werden, dass die Widgets hierarchisch angeordnet sind. An der Spitze dieser Hierarchie befindet sich das Hauptfenster der Anwendung. Dieses trägt stets die Bezeichnung „.“. Am Namen des Widgets lässt sich seine Position in der Hierarchie ablesen. Ein Button „b“, der sich in einem Frame „f“ befindet, welcher in einem Toplevel-Window „w“ angesiedelt ist, trägt die Bezeichnung „.w.f.b“. 25 2.2 Rechtswissenschaftliche Grundlagen Im kommenden Abschnitt wird das Ziel verfolgt, den Anwendungsbereich des juristischen Systems zu erläutern. Hierzu wird als erstes die allgemeine Struktur des Gesetzes dargestellt. Da das entwickelte System die juristische Subsumtion nachzuahmen versucht, wird diese im weiteren Verlauf dieses Kapitels ausführlich beschrieben. Um später auf einzelne Entscheidungen aus der Phase des System-Entwurfs genauer eingehen zu können, ist es erforderlich, in diesem Abschnitt auch Aspekte der Subsumtion zu erläutern, die vom tatsächlich implementierten System nicht nachgeahmt werden können. Der Anwendungsbereich der in dieser Arbeit entwickelten Software ist das Strafgesetz. Die folgenden Ausführungen über Gesetze und deren Anwendung beziehen sich daher teilweise schwerpunktmäßig auf das Strafrecht. Daher ist zu beachten, dass in anderen Teilgebieten des Rechts, wie beispielsweise im Bürgerlichen Recht, Unterschiede bestehen. 2.2.1 Gesetzesstruktur Das Strafgesetzbuch ist unterteilt in einen Allgemeinen Teil und einen Besonderen Teil. Der Allgemeine Teil (§§231-79b) enthält im wesentlichen Regeln, die für jede Straftat gleichermaßen gelten. §1. Keine Strafe ohne Gesetz. Eine Tat kann nur bestraft werden, wenn die Strafbarkeit gesetzlich bestimmt war, bevor die Tat begangen wurde. §12. Verbrechen und Vergehen. (1) Verbrechen sind rechtswidrige Taten, die im Mindestmaß mit Freiheitsstrafe von einem Jahr oder darüber bedroht sind. (2) Vergehen sind rechtswidrige Taten, die im Mindestmaß mit einer geringen Freiheitsstrafe oder die mit Geldstrafe bedroht sind. (3) ... §23. Strafbarkeit des Versuchs. (1) Der Versuch eines Verbrechens ist stets strafbar, der Versuch eines Vergehens nur dann, wenn das Gesetz es ausdrücklich bestimmt. (2) ... §25. Täterschaft. (1) Als Täter wird bestraft, wer die Straftat selbst oder durch einen anderen begeht. (2) Begehen mehrere die Straftat gemeinschaftlich, so wird jeder als Täter bestraft (Mittäter). §52. Tateinheit. (1) Verletzt dieselbe Handlung mehrere Strafgesetze oder dasselbe Strafgesetz mehrmals, so wird nur auf eine Strafe erkannt. (2) ... 23 Soweit nicht anders angegeben, sind alle §§ solche des Strafgesetzbuches (StGB). 26 Hauptsächlich beschreiben die Paragraphen des Besonderen Teils (§§80-358) einzelne strafwürdige Verhaltensweisen und geben das Strafmaß für diese Delikte an. §223. Körperverletzung. (1) Wer eine andere Person körperlich mißhandelt oder an der Gesundheit schädigt, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. (2) Der Versuch ist strafbar. §224. Gefährliche Körperverletzung. (1) Wer die Körperverletzung 1. durch Beibringung von Gift oder anderen gesundheitsschädlichen Stoffen, 2. mittels einer Waffe oder eines anderen gefährlichen Werkzeugs, ... begeht, wird mit Freiheitsstrafe von sechs Monaten bis zu zehn Jahren, in minder schweren Fällen mit Freiheitsstrafe von drei Monaten bis zu fünf Jahren bestraft. (2) Der Versuch ist strafbar. §242. Diebstahl. (1) Wer eine fremde bewegliche Sache einem anderen in der Absicht wegnimmt, diesselbe sich rechtswidrig zuzueignen, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. (2) Der Versuch ist strafbar. Wie man leicht sieht, haben die Paragraphen des Besonderen Teils eine Art wenn-dannStruktur. Außerdem ist zu beobachten, dass gewisse juristische Begriffe wie zum Beispiel „gesundheitsschädlicher Stoff” in §224 I Alt. 1 oder „gefährliches Werkzeug” in Alternative 2 Bestandteil von Hierarchen sind. So lassen sich „gesundheitsschädlicher Stoff” als Oberbegriff von „Gift” und „gefährliches Werkzeug” als Oberbegriff von „Waffe” ausmachen. Viele juristische Begriffe definieren sich darüber hinaus über Unterbegriffe, so dass sich baumartige Strukturen bilden lassen. §242. Diebstahl Wegnahme Bruch Vom fremden einer fremden, Gewahrsams Herrschaftswillen Begründung getragene Abbildung: Baumstruktur des Gesetzes 27 beweglichen, Sache neuen Gewahrsams tatsächliche Sachherrschaft Beispielsweise ist der Begriff „Diebstahl“ definiert als „Wegnahme einer fremden, beweglichen Sache.“ Die einzelnen Tatbestandsmerkmale „Wegnahme“, „fremd“, „beweglich“ und „Sache“ lassen sich wiederum genauer beschreiben. So ist der juristische Begriff der „Wegnahme“ in §242 gleichbedeutend mit „Bruch fremden und Begründung neuen Gewahrsams“. „Gewahrsam“ ist „vom Herrschaftswillen getragene tatsächliche Sachherrschaft“ und so weiter. 2.2.2 Die juristische Subsumtion: Vorgang der Rechtsfindung Der Begriff der Subsumtion bedeutet im juristischen Kontext die Unterordnung eines konkreten Sachverhaltes unter eine abstrakte Rechtsnorm (vgl. [Kau87], S. 1206). Dies soll nun näher erläutert werden. Ziel der Rechtsfindung ist es, ausgehend von einem Sachverhalt, eine Rechtsfolge zu ermitteln und somit ein Urteil fällen zu können. Die für das Strafrecht typische Rechtsfolge ist die Strafe, beispielsweise Freiheitsentzug oder Geldbuße; Rechtsfolgen des Bürgerlichen Rechts sind häufig Ansprüche. Eine solche Rechtsfolge wird ermittelt, indem versucht wird, einen abstrakten Tatbestand, welcher eine abstrakte Rechtsfolge nach sich zieht, mit einem tatsächlichen Sachverhalt zur Deckung zu bringen. Man bezeichnet die Kombination eines abstrakten Tatbestandes mit einer daraus folgenden abstrakten Rechtsfolge als Obersatz. Der konkrete Sachverhalt, welcher damit zur Deckung gebracht werden soll, heisst Untersatz. Der Vorgang des „zur-Deckung-bringens“ von Ober- und Untersatz ist der eigentliche Subsumtionsschritt. Gelingt dieser Subsumtionsschritt, so lässt sich das Urteil – also die konkrete Rechtsfolge – aus der abstrakten Rechtsfolge des Obersatzes und dem konkreten Sachverhalt des Untersatzes herleiten. Dieses Urteil nennt sich auch Schluss(-satz) (vgl. [Sir89], S. 10). Der oben beschriebene Vorgang der juristischen Subsumtion soll nun anhand eines Beispieles verdeutlicht werden: Obersatz: § 223 I 2. Alt. StGB: Wer eine andere Person ... an der Gesundheit schädigt, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. Untersatz: Peter Müller fügt Lieschen Müller eine Verletzung zu. Der abstrakte Tatbestand wird im Obersatz mit den Worten „wer eine andere Person an der Gesundheit schädigt“ beschrieben. Der abstrakte Tatbestand ist mit der abstrakten Rechtsfolge „Freiheitsstrafe bis zu fünf Jahren oder Geldstrafe“ (für diese Person) verknüpft. Der Untersatz – also der konkrete Sachverhalt – kann mit dem abstrakten Tatbestand zur Deckung gebracht werden, indem für „wer“ Peter Müller und für „eine andere Person“ Lieschen Müller eingesetzt wird. Ferner entspricht das Zufügen einer Verletzung dem Vorgang des Schädigens an der Gesundheit, so dass sich abstrakter und konkreter Tatbestand überdecken. Dadurch folgt letztlich als Schlusssatz: Schlusssatz: Peter Müller wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. Der Vorgang der Subsumtion ist damit abgeschlossen. Leider ist es im Allgemeinen nicht möglich, die Subsumtion so problemlos durchzuführen, wie dies im obigen Beispiel geschehen ist. Der Grund hierfür liegt darin, dass Sachverhalt und Norm meist nicht direkt so gut zueinander passen wie im obigen Beispiel. Daher müssen 28 Sachverhalt und Norm einander angepasst werden. Die Norm muss im Hinblick auf den Sachverhalt konkretisiert werden. Das Gesetz muss ausgelegt werden. Auf der anderen Seite muss der Sachverhalt im Hinblick auf die Norm angepasst werden. Beispielsweise müssen aus dem Sachverhalt die rechtlich unerheblichen Tatsachen ausgesondert werden. Diese beiden unterschiedlichen Vorgänge – Gesetzesauslegung einerseits und Sachverhaltsanpassung andererseits – werden nun näher erläutert. Dabei ist allerdings zu beachten, dass diese beiden Tätigkeiten nicht nacheinander vorgenommen werden. Stattdessen versucht der Jurist „durch Hin- und Herwandern des Blickes“ Sachverhalt und Norm durch wechselseitige Anpassungen zur Deckung zu bringen. 2.2.2.1 Gesetzesauslegung Das Gesetz kann bei der Subsumtion nur richtig angewendet werden, wenn bekannt ist, was es meint, wenn also der Sinn des Gesetzes klar ist. Da Gesetze mit natürlicher Sprache beschrieben werden, diese aber oft mehrdeutig oder unklar ist, muss dieser Gesetzessinn häufig erst ermittelt werden, bevor die Subsumtion eines Sachverhaltes unter der Rechtsnorm vorgenommen werden kann. So ist ein Blick in den Gesetzestext des §248b allein nicht ausreichend, um zweifelsfrei sagen zu können, ob eine Staftat bereits vorliegt, wenn jemand unbefugt in dem Auto eines anderen übernachtet24. §248b. Unbefugter Gebrauch eines Fahrzeugs. (1) Wer ein Kraftfahrzeug oder ein Fahrrad gegen den Willen des Berechtigten in Gebrauch nimmt, wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft, ... Fraglich ist hier, wie der Begriff des „Ingebrauchnehmens“ zu interpretieren ist. Legte man den Begriff restriktiv also einschränkend aus, so wäre „Gebrauch“ als bestimmunggemäßer Gebrauch zu interpretieren. In diesem Fall umschlösse der Begriff nur das Führen des Gefährts. Ein zweckentfremdendes Übernachten im Auto wäre damit von der Norm nicht erfasst. Anders stellte sich dies bei einer extensiven oder ausdehnenden Auslegung dar. Würde man „Gebrauch“ als irgendwie geartetes Verwenden auffassen, läge im Beispiel ein „Ingebrauchnehmen“ vor. Das Beispiel zeigt, dass in solchen Fällen eine Entscheidung nur dann getroffen werden kann, wenn zuvor die Bedeutung des Gesetzes geklärt wurde. Die juristische Methodenlehre stellt hierzu gewissermassen eine Anleitung zur Verfügung, wie diese Bedeutung im Rahmen der Auslegung zu ermitteln ist (s. z.B. [Wes95], Rn. 56 ff.; [Bro95], Rn. 58 ff.; [Lar91] S. 312 ff., BVerfGE 11, 126). Zunächst werden im allgemeinen folgende Auslegungsarten unterschieden (vgl.z.B. [Bro95], Rn. 59-62): - grammatische Auslegung (Wortlaut der Norm) systematische Auslegung (Gesetzeszusammenhang) historische Auslegung (Entstehungsgeschichte des Gesetzes) objektiv-teleologische Auslegung (Sinn und Zweck der Norm) Grammatische Auslegung Der Wortlaut der Norm umgrenzt die möglichen Interpretationen der Norm. Nur was nach den Regeln des allgemeinen Sprachgebrauchs oder der juristischen Fachsprache möglicherweise durch den Gesetzes-Wortlaut gemeint sein kann, ist potentielle Bedeutung der Norm. 24 s. BGHSt 11, 44 und 47 29 Eine Berücksichtigung der weiteren Auslegungsarten kommt damit erst in Betracht, wenn der Wortlaut mehrdeutig ist, die grammatische Auslegung also kein eindeutiges Ergebnis liefert. Im obigen Beispiel erlaubt der Wortlaut zwei Interpretationen. Ob „Gebrauch“ restriktiv als „bestimmungsgemäßer Gebrauch“ oder extensiv als „irgendwie geartete Verwendung“ zu interpretieren ist, ist vom Wortlaut her offen. Somit müssen die weiteren Auslegungsarten herangezogen werden. Die weiteren Auslegungsarten systematische, historische und objektiv-teleologische Auslegung dienen dazu, einer von mehreren möglichen Interpretationen den Vorzug zu geben. Hierbei besteht zwischen den weiteren Arten der Auslegung keine bestimmte Rangordnung ([Sir89], S. 37). Systematische Auslegung Im Rahmen der systematischen Auslegung wird anhand der Gesetzessystematik zu erkennen versucht, was der Gesetzgeber mit der Norm bezwecken möchte. Im Beispiel bietet der Gesetzeskontext einen Anhaltspunkt. Da §248b zu dem 19. Abschnitt des Strafgesetzbuches gehört, welcher sich mit „Diebstahl und Unterschlagung“ beschäftigt, könnte man der Ansicht sein, dass §248b nicht das bloße Übernachten im Auto behandelt. Historische Auslegung oder subjektiv-teleologische Auslegung Weitere Hinweise auf die beabsichtigte Bedeutung eines Gesetzes kann manchmal die Entstehungsgeschichte der Norm geben25. Diese ist in Dokumenten wie Entwürfen, Motiven und Protokollen26 dokumentiert. Auch Vorgänger einer Norm können Hinweise enthalten, wie sie zu interpretieren ist. Objektiv-teleologische Auslegung Die objektive-teleologische Auslegung versucht – mitunter in Verbindung anderer Auslegungsarten – zu ermitteln, welchen rechtspolitischen Zweck ein Gesetz verfolgt. Im Strafrecht wird bei der objektiv-teleologischen Auslegung der Versuch unternommen, herauszufinden, was der Schutzzweck der Norm ist, um so Rückschlüsse auf die richtige Interpretation des Gesetzes ziehen zu können. Der bestimmungsgemäße Zweck des §248b besteht darin, Schwarzfahrten entgegenzutreten. Der Schutzzweck der Norm ist, der damit verbundenen Gefährdung der öffentlichen Sicherheit entgegenzutreten.27 Für das Beispiel bedeutet dies, dass der Begriff des „Gebrauchs“ restriktiv auszulegen ist. In einem fremden Auto zu übernachten stellt somit lediglich eine straflose Gebrauchsanmaßung dar. 25 Hierbei ist jedoch umstritten, ob der subjektive Wille des Gesetzgebers bei der Gesetzesauslegung berücksic htigt werden darf (so aber die subjektive Theorie) oder ob bloß der objektivierte Wille des Gesetzgebers ermittelt werden darf. Nach der zweiten Ansicht (objektive Theorie) ist nicht ausschlaggebend, was der Gesetzgeber ursprünglich beabsichtigte, da Gesetzestext „nicht toter Buchstabe, sondern lebendig sich entwickelnder Geist“ sei, welcher „mit den Lebensverhältnissen fortschreiten und ihnen sinnvoll angepasst weitergelten will“ (BGHSt 10, 159). 26 Das heutige BGB hat in der langen Zeit seines Bestehens viele Veränderungen erfahren. Bevor es am 1.1.1900 verabschiedet wurde, durchlief es drei Entwurfsstadien (Entwürfe I-III). Die Begründungen zum 1. Entwurf sind in den sogenannten Motiven dokumentiert. Die Beratungen zum 2. Entwurf sind in den sogenannten Protokollen festgehalten. (vgl. [Bro95], Rn. 20) 27 s. BGH 11, 49 30 Verhältnis zwischen den verschiedenen Auslegungsarten Wie bereits erwähnt, ist zuerst die grammatische Auslegungsart anzuwenden. Eine feste Rangfolge unter den anderen Auslegungsarten besteht nicht, jedoch wird vereinzelt gefordert, dass eine historische Auslegung erst dann vorzunehmen ist, wenn die anderen Auslegungsmethoden zu keiner Lösung führen (vgl. [Ste84], S. 115 ff. m.w.N.). 2.2.2.2 Unbestimmte Rechtsbegriffe Eine Anleitung – wie bei der Auslegung von Gesetzen – gibt es für den Umgang mit unbestimmten Rechtsbegriffen nicht. Bei den unbestimmten Rechtsbegriffen handelt es sich um Begriffe, deren Bedeutung ohne Wertung nicht eindeutig zu bestimmen ist (vgl. [Sir89], S. 16). Beispiele für unbestimmte Rechtsbegriffe sind die „guten Sitten“ in §138 BGB, „Treu und Glauben“ aus §242 BGB und der Begriff der „angemessenen Wartezeit“ in §142 StGB. §138 I BGB. Sittenwidriges Rechtsgeschäft. Ein Rechtsgeschäft, das gegen die guten Sitten verstößt, ist nichtig. §242 BGB. Leistung nach Treu und Glauben. Der Schuldner ist verpflichtet, die Leistung so zu bewirken, wie Treu und Glauben mit Rücksicht auf die Verkehrssitte es erfordern. §142 StGB. Unerlaubtes Entfernen vom Unfallort. (1) Ein Unfallbeteiligter, der sich nach einem Unfall im Straßenverkehr vom Unfallort entfernt, bevor er ... 2. eine nach den Umständen angemessene Zeit gewartet hat ... wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft. Zur Ermittlung der Bedeutung unbestimmter Rechtsbegriffe ist nach dem Bundesverfassungsgericht eine an der Wertordnung des Grundgesetzes orientierte Wertung vorzunehmen (vgl. [Ste84], S. 116). Somit unterscheidet sich die Ausfüllung unbestimmter Rechtsbegriffe wesentlich von der oben beschriebenen Methode der Auslegung, „wenn auch im Einzelfall der Übergang flüssig ... sein mag“ ([Sir89], S. 40). 2.2.2.3 Sachverhaltsanpassung Die Auslegung der Norm bildet die eine oft notwendige Vorleistung, die bei einer Subsumtion zu erbringen ist. Auf der anderen Seite muss häufig der Sachverhalt an die Norm angepasst werden. Hierbei müssen einerseits rechtlich unerhebliche Tatsachen ausgesondert werden. Hinzu kommt, dass Sachverhaltsbeschreibungen teilweise anders ausgedrückt werden müssen, damit sie zum Obersatz passen. Sachverhalt: Peter begeht eine Körperverletzung, indem er Lieschen anschießt. Obersatz: § 224 I 2. Alt. StGB: Wer die Körperverletzung ... mittels einer Waffe ... begeht, wird mit Freiheitsstrafe von sechs Monaten bis zu zehn Jahren ... bestraft. Untersatz: Peter begeht eine Körperverletzung, indem er Lieschen mit einer Schusswaffe verletzt. Schlussatz: Peter wird mit Freiheitsstrafe von sechs Monaten bis zehn Jahren bestraft. 31 Im Beispiel musste der Sachverhalt anders ausgedrückt werden, damit er genau zum Obersatz passt.28 Die Verwendung einer Schusswaffe lässt sich aus dem Verb „anschießen“ erschließen. 2.2.3 Prüfungsaufbau im Strafrecht Im Rahmen einer strafrechtlichen Subsumtion wird in der Regel zu prüfen sein, ob eine gewisse Verhaltensweise zu bestrafen ist oder nicht. Hierbei sind meistens drei Prüfungsschritte zu berücksichtigen. Die nun folgende Darstellung des Prüfungsaufbaus im Strafrecht orientiert sich an [Wes95], wo ausführliche Darstellungen (z.B. Rn. 860 ff.) zu finden sind Zunächst erfolgt eine Prüfung der Tatbestandsmäßigkeit. Im Anschluss an diesen (häufig umfangreichsten) Prüfungspunkt wird die Rechtswidrigkeit der Tat und zum Abschluss die Schuld des Täters geprüft. Erst wenn ein Tatbestand rechtswidrig und schuldhaft verwirklicht wurde, ist ein Verhalten zu bestrafen. Die drei Prüfungsschritte werden nun kurz beschrieben. Tatbestandsmäßigkeit Bei der Prüfung, ob ein bestimmtes Delikt verwirklicht wurde, ist zunächst zu prüfen, ob der zu dem entsprechenden Delikt gehörende (abstrakte) Tatbestand29 im Sachverhalt konkret eingetreten ist. Der Tatbestand besteht aus einem objektiven und einem subjektiven Teil. Der objektive Tatbestand besteht aus den Umständen, „die das äußere Erscheinungsbild einer Tat bestimmen“ ([Wes95], Rn. 133). Diese Umstände sind meist im „wenn-Teil“ einer Norm des Besonderen Teils benannt. Beispiel: Würde man §223 StGB in einer wenn-dann-Schreibweise darstellen, könnte dies so aussehen: Wenn eine Person eine andere Person körperlich misshandelt oder an der Gesundheit schädigt, dann wird diese (die handelnde) Person ... bestraft. Der objektive Tatbestand ist in diesem Beispiel eine körperliche Misshandlung oder eine Schädigung an der Gesundheit. Der subjektive Tatbestand besteht aus den Umständen, „die dem psychisch-seelischen Bereich und der Vorstellungswelt des Täters angehören“ ([Wes95], Rn. 136). In der Regel sind die subjektiven Tatbestandsmerkmale nicht in der Norm des geprüften Delikts selbst aufgeführt. Zum Beispiel ist in §15 – einer Norm des Allgemeinen Teils des Strafgesetzbuches – für alle Normen festgelegt, dass in der Regel nur vorsätzliches Handeln bestraft werden darf. §15. Vorsätzliches und fahrlässiges Handeln. Strafbar ist nur vorsätzliches Handeln, wenn nicht das Gesetz fahrlässiges Handeln ausdrücklich mit Strafe bedroht. 28 Bei der juristischen Subsumtion kann dieser Schritt in solch trivialen Fällen häufig einfach ausgelassen we rden, da sich dem Leser die Bedeutung auch so erschliessen müsste. 29 Mit Tatbestand ist hier der Tatbestand im engeren Sinne gemeint, welcher aus den Merkmalen besteht, „die dem jeweiligen Delikt das individuelle Gepräge geben und seinen typischen Unrechtsgehalt charakterisieren“ (s. [Wes95], Rn. 116 ff.). 32 Wird nun beispielsweise geprüft, ob ein Verhalten den Tatbestand der Körperverletzung (§223) erfüllt, so ist innerhalb der Prüfung der subjektiven Tatbestandsmäßigkeit zu ermitteln, ob der Täter mit Vorsatz gehandelt hat. Gelegentlich tauchen subjektive Tatbestandsmerkmale allerdings auch direkt in der Beschreibung des entsprechenden Delikts auf. Beispiel: § 229. Fahrlässige Körperverletzung. Wer durch Fahrlässigkeit die Körperverletzung einer anderen Person verursacht, wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft. Rechtswidrigkeit Im nächsten Schritt erfolgt die negative Prüfung, „ob die ‚unrechtsindizierende’ Wirkung der Tatbestandsverwirklichung durch Rechtfertigungsgründe ausgeschlossen wird“ ([Wes95], Rn. 861). Beispiele: §32. Notwehr. (1) Wer eine Tat begeht, die durch Notwehr geboten ist, handelt nicht rechtswidrig. (2) Notwehr ist die Verteidigung, die erforderlich ist, um einen gegenwärtigen rechtswidrigen Angriff von sich oder einem anderen abzuwenden. §33. Überschreitung der Notwehr. Überschreitet der Täter die Grenzen der Notwehr aus Verwirrung, Furcht oder Schrecken, so wird er nicht bestraft. § 228. Einwilligung. Wer eine Körperverletzung mit Einwilligung der verletzten Person vornimmt, handelt nur dann rechtswidrig, wenn die Tat trotz der Einwilligung gegen die guten Sitten verstößt. Schuld Im Rahmen der Schuld-Prüfung wird ermittelt, ob dem Täter die rechtswidrige Tat persönlich vorzuwerfen ist ([Wes95], Rn. 395). Nur wenn dies der Fall ist, darf der Täter letztlich bestraft werden. Es gibt verschiedenste Gründe, warum eine Tat ohne „Schuld“ begangen worden sein kann. Beispiele: §19. Schuldunfähigkeit des Kindes. Schuldunfähig ist, wer bei der Begehung der Tat noch nicht vierzehn Jahre alt ist. §35. Entschuldigender Notstand. (1) Wer in einer gegenwärtigen, nicht anders abwendbaren Gefahr für Leben, Leib oder Freiheit eine rechtswidrige Tat begeht, um die Gefahr von sich, einem Angehörigen oder einer anderen ihm nahestehenden Person abzuwenden, handelt ohne Schuld... 2.2.4 Prüfungsreihenfolge Die oben beschriebene juristische Subsumtion dient dazu, einem abstrakten Tatbestand einen Sachverhalt unterzuordnen. Häufig wird es allerdings erwünscht sein, dass ein gegebener Sachverhalt gleich unter mehrere Normen subsumiert wird, da zur Ermittlung der Rechtsfolge 33 eines Verhaltens zunächst geklärt werden muss, gegen welche Gesetze verstoßen wurde. Bei umfangreicheren Sachverhalten müssen mehrere Normen im Hinblick auf mehrere verschiedene Lebensvorgänge überprüft werden. So könnten in einem strafrechtlichen Fall gleich mehrere Verhaltensweise auf Strafbarkeit zu überprüfen sein. Um die juristische Arbeitsweise nachvollziehbar zu gestalten, bietet es sich an, die erforderlichen Prüfungen sinnvoll zu ordnen. Hier kommen nach [Wes95] (Rn. 855-858) drei verschiedene Arten der Darstellung in Betracht: Chronologischer Aufbau Die Lebensvorgänge werden in ihrer zeitlichen Abfolge untersucht. Vorteil dieser Vorgehensweise ist, dass der Bearbeiter hierbei kaum vergessen kann, einen Sachverhaltsaspekt zu bearbeiten. Allerdings werden bei dieser Methode Tatkomplexe mitunter auseinander gerissen. Person A schlägt Person B. Dann zerschlägt Person A eine Flasche und benutzt die so gewonnene Waffe für einen Stich in den Arm von Person B. Hier würde nun in einem chronologischen Aufbau zunächst der Schlag hinsichtlich einer Körperverletzung zu überprüfen sein. Bevor dann der Stich geprüft würde, müsste streng genommen erörtert werden, ob das zerschlagen der Flasche eine Sachbeschädigung darstellt. Aufbau nach Tätern und Beteiligten Bei dieser beliebten Methode werden die Strafbarkeiten nach Personen geordnet untersucht. Diese Vorgehensweise ist sehr übersichtlich. Dies gilt allerdings nur für weniger verwickelte Fälle. Person A schlägt Person C, welche von Person B festgehalten wird. Danach hält Person A Person C fest und Person B schlägt zu. Person A hat durch den Schlag eine Körperverletzung und durch das Festhalten eine Teilnahme an einer Körperverletzung begangen. Für Person B gilt das gleiche. Die Teilnahme kann aber sinnvoll nur geprüft werden, wenn die Haupttat (an der sich beteiligt wird) bereits erörtert wurde. Im vorliegenden Fall ist dies nicht möglich, wenn der Aufbau nach Tätern geordnet werden soll. Aufbau nach Tatkomplexen Der Sachverhalt wird bei einem Aufbau nach Tatkomplexen zunächst hinsichtlich Sachverhaltsabschnitten, die eine in sich geschlossene Einheit bilden, geordnet. Diese Komplexe werden dann der Reihe nach geprüft. Im letzten Beispiel lassen sich die kleinen Komplexe „Person A schlägt Person C mit Hilfe von Person B“ und „Person B schlägt Person C mit Hilfe von Person A“ ausmachen. Innerhalb dieser Komplexe kann dann nach Personen geordnet werden. Hierbei kann nun darauf geachtet werden, dass jeweils die Strafbarkeiten der Person zuerst geprüft werden, welche die Haupttat begangen hat. 34 3 Ausgewählte juristische Systeme In diesem Abschnitt soll dargestellt werden, welche Bemühungen bereits unternommen wurden, Computer einzusetzen, um die Arbeit eines Juristen zu unterstützen oder nachzuahmen. Hierbei sind solche Projekte von Interesse, die das Ziel haben, „künstliche Intelligenz“ einzusetzen, um die juristische Methodik oder Teilaspekte dieser zu modellieren. Diese meist als juristische Expertensysteme bezeichneten Projekte wurden insbesondere in den 80er Jahren zu entwickeln versucht. Aus der Menge der hauptsächlich in dieser Zeit entwickelten Systeme, werden in diesem Kapitel insbesondere solche Ansätze dargestellt, welche für bestimmte Entwurfsentscheidungen des juristischen Systems von Bedeutung waren. So wird beispielsweise im LEX-Projekt die Machbarkeit einer natürlichsprachlichen Schnittstelle erprobt und das System WZ versucht sich am Umgang mit unbestimmten Rechtsbegriffen. Im Anschluss an die Beschreibung eines Systems wird jeweils eine kurze Bewertung vorg enommen. Ausserdem werden in Unterkapitel 3.4 einige regelbasierte Ansätze in einer kürzeren Darstellungsform zusammengefasst, einen Eindruck davon zu vermitteln, wofür regelbasierte Ansätze im Recht verwendet werden. Da Literatur zu den verschiedenen Projekten teilweise nur schwer zugänglich ist, orientieren sich die kurzen Darstellungen der Projekte CABARET, HYPO und KOKON einzig an der der Sekundärquelle [Jan93], welche auch zur Vermittlung eines weitergehenden Überblicks über die Entwicklung juristischer Expertensysteme zu empfehlen ist. 3.1 LEX-1 3.1.1 Systembeschreibung LEX30-1 ist der Prototyp eines juristischen Expertensystems auf natürlichsprachlicher Basis. Der Beschreibung basiert auf der Darstellung in [HL89]. Der Systementwicklung lag das Ziel zu Grunde, bessere Erkenntnisse über das menschliche Informations- und Entscheidungsverhalten zu gewinnen und dieses nachzuahmen. Darüber hinaus sollte das System in der Lage sein, natürliche Sprache zu verstehen. Später entwickelte sich dieser Versuch des Sprachverstehens als Schwerpunkt des Projekts heraus. Den juristischen Anwendungsbereich von LEX-1 stellt der „Unfallfluchtparagraph“ §142 I, IV StGB dar; dennoch war ein Ziel des Projektes die Anwendungsunabhängigkeit des Systems. So sollte es prinzipiell möglich sein, durch Austausch der Daten in der Wissensbasis auch andere Anwendungen mit ihm zu verwirklichen. Die Architektur des Systems entspricht der in Kapitel 2.1.1 dargestellten Expertensystemarchitektur. Allerdings verfügt LEX-1 darüber hinaus über jeweils eine Komponente zur Analyse (NLA31) beziehungsweise Synthese (NLS32) natürlicher Sprache, welche zwischen der Dialogkomponente und den anderen Komponenten des Systems in die Systemarchitektur eingebunden sind. 30 LEX steht für „Linguistik- und logikbasiertes juristisches Expertensystem. LEX ist ein gemeinsames Forschungsprojekt der Universität Tübingen und der IBM Deutschland GmbH. ist ein gemeinsames Forschungsprojekt der Universität Tübingen und der IBM Deutschland GmbH, an welchem Informatiker, Logiker, Linguisten und Juristen beteiligt waren. 31 Natural Language Analyzer 32 Natural Language Synthesizer 35 Das in der Wissensbasis von LEX-1 enthaltene Wissen ist in die drei Bereiche Fallwissen, Allgemeinwissen und juristisches Wissen unterteilt und wird durch sogenannte Diskursrepräsentationsstrukturen (kurz: DRSen), welche vom NLA und NLS analysiert beziehungsweise erzeugt werden, dargestellt. Eine DRS stellt entweder eine Regel oder ein Fakt dar. Durch Deduktion wird über die Infernzkomponente unter Verwendung des Wissens in der Wissensbasis zu beweisen versucht, dass der im Fallwissen enthaltene Sachverhalt den Tatbestand der Unfallflucht erfüllt. Gelingt dies, so ist die Erklärungskomponente mit Hilfe des während der Inferenz erstellten Beweisbaumes in der Lage, Fragen zu dem bearbeiteten Sachverhalt zu beantworten. Die Leistungsmöglichkeit des letztlich implementierten Systems ist stark begrenzt. LEX-1 ist in der Lage, eine Fallbeschreibung (mit kleinen Änderungen) – auf welche die Wissensbasis speziell zugeschnitten wurde – zu bearbeiten. Eine weitere Fallbeschreibung konnte von einem Systemkenner so modifiziert werden, dass eine Bearbeitung möglich wurde. 3.1.2 Bewertung Die wohl schwerwiegendste Ursache, für das praxisuntaugliche Resultat von LEX-1 ist, dass der Versuch, Computersysteme in die Lage zu versetzen, natürliche Sprache zu „verstehen“, die Systementwickler vor viele Schwierigkeiten stellt. Ein Teil dieser Schwierigkeiten soll anhand eines kleinen Beispieles aufgezeigt werden. „Frau Müller fährt Herrn Maier auf der Landstraße mit ihrem Wagen an. Dieser stürzt und verliert einen Zahn.“ Für den menschlichen Leser ist es leicht, den obigen Sachverhalt zu verstehen, ihn in seiner Bedeutung zu erfassen. Ein wissensbasiertes System, welches einen solchen Sachverhalt „verstehen“ soll, muss diesen in geeignete Repräsentationsstrukturen umsetzen können. Hierzu genügt es nicht, die deutsche Grammatik zu beherrschen und über einen großen Wortschatz zu verfügen. Stattdessen können einzelne Satzteile häufig nur unter Beachtung des Kontextes interpretiert werden. Mit Kontext kann hierbei ein Satz gemeint sein; es kann aber auch vorkommen, dass andere Sätze zum Verständnis hinzugezogen werden müssen. Diese Abhängigkeit vom Kontext soll nun am obigen Beispiels gezeigt werden. So bedeutet „einen Zahn zu verlieren“ in der Regel, dass man ihn aus dem Mund verliert. Denkbar wäre allerdings auch, dass Herr Maier den Zahn im obigen Sachverhalt in der Tasche mit sich trug. Da dies aber nicht extra erwähnt wurde, genügt das Indiz, dass Herr Maier gestürzt ist, um die intendierte Bedeutung zu erschliessen. Die Bedeutung des Begriffs „Wagen“ ist ebenfalls nicht eindeutig. Theoretisch könnte auch ein Einkaufswagen gemeint sein. Diese Möglichkeit wird allerdings durch Auswertung der Tatsache, dass sich der Unfall auf einer Landstraße ereignete, zu unwahrscheinlich. Drittens ist nicht klar, wer genau stürzt. Mit „dieser“ kann aus grammatikalischer Sicht auch der Wagen gemeint sein. Dies wäre sogar wahrscheinlich, da „Wagen“ das letztgenannte Wort ist, auf welches „dieser“ referenzieren könnte. Da man aber wohl eher nicht davon spricht, dass ein Wagen stürzt und ein Wagen auch keine Zähne hat, die er verlieren könnte, muss Herr Maier gemeint sein. Aus diesen Beobachtungen ergibt sich, dass ein wissensbasiertes System wesentlich mehr Wissen benötigt, als man zunächst annehmen könnte. Dieses Wissen, welches bei der wis- 36 sensbasierten Sprachanalyse33 explizit in einer Wissensbasis gespeichert ist, lässt sich unterteilen in Wortschatz, Grammatikregeln, Wortbedeutungen, semantische Regeln, Ableitungsregeln, Inferenzregeln (vgl. [Sag90], S. 3 ff.). Abgesehen von den Problemen der Sprachanalyse erscheint der Ansatz, Regeln einzusetzen, um juristisches Wissen zu repräsentieren, vielversprechend. Ein schwerwiegendes Problem ist hierbei nach Angaben der an der Entwicklung der Regeln in LEX-1 Beteiligten, diese Regeln durch eine angemessene Modellierung des Rechts zu erarbeiten. 3.2 WZ 3.2.1 Systembeschreibung Ein großes Problem bei der automatisierten Subsumtion stellen die sogenannten unbestimmten Rechtsbegriffe dar. Ein Versuch, ein System zu entwickeln, dass einen solchen Begriff „beherrscht“, wurde in [Ger87] unternommen. Das im Rahmen dieses Versuchs entwickelte System WZ34 basiert auf der Idee, es sei prinzipiell möglich, die Merkmale, welche entscheidend für die Einordnung eines Falles unter einen unbestimmten Rechtsbegriff sind, herauszufinden und anhand dieser Merkmale auf irgendeine Art zu ermitteln, ob der entsprechende Fall unter diesen Rechtsbegriff fällt oder nicht. Anwendungsbereich des Systems ist wie schon bei LEX-1 §142 StGB. Der in §142 enthaltene unbestimmte Rechtsbegriff ist die „angemessene Wartezeit“. Durch WZ soll gezeigt werden, dass dieser Begriff und prinzipiell auch andere unbestimmte Begriffe durch exakte Berechnungsregeln modelliert werden könnten (vgl. [Ger87], S. 147). Wartezeit <38 >=38 ... Tageszeit keine Angabe nachts untertags unangemessen abends unangemessen <13 unangemessen Wartezeit >=13 Unfallort inner- oder außerorts in bebautem Gebiet angemessen <15 unangemessen Wartezeit sonst unangemessen >=15 angemessen Abbildung: Teil des Entscheidungsbaumes von WZ 33 Alternative Systemkonzeptionen können beispielsweise Neuronale Netze als Grundlage haben. Bei diesen Systemen wird Wissen nicht explizit abgelegt, sondern implizit: es „befindet“ sich in der Vernetzungsstruktur der Neuronen. 34 WZ wurde im Rahmen einer Dissertation von Peter Gerathewohl entwickelt. 37 WZ fußt auf einer zunächst vorgenommenen Analyse richterlicher Entscheidungen, bei welcher die in den Urteilsbegründungen genannten relevanten Merkmale ermittelt wurden. Beispiele für solche Merkmale sind Tageszeit, zur Wartezeit vorherrschende Witterungslage, Unfallort und Verkehrsdichte. Die einzelnen Merkmale jeweils in verschiedenen Ausprägungen vorkommen. So kann das Merkmal „Verkehrsdichte“ in den Ausprägungen „wenig oder kein Verkehr“, „normaler, fließender Verkehr“, „lebhafter/dichter Verkehr“ und „keine Angabe hierzu“ auftreten. Mittels „RuleMaker“ (einem Regelgenerator innerhalb der Shell „RuleMaster“) wurde auf Basis der Daten der analysierten Beispielfälle ein Entscheidungsbaum geschaffen. Teilt der Systemanwender WZ mit, welche Merkmale in welcher Ausprägung vorliegen, kann WZ (vermeintlich) über diesen Entscheidungsbaum feststellen, ob eine bestimmte Wartezeit angemessen war. 3.2.2 Bewertung Ein ähnlicher Ansatz ließe sich auch mit Hilfe „Neuronaler Netze“ verwirklichen, wobei zunächst wieder die relevanten Merkmale gefunden werden müssten. Nachfolgend könnten die entsprechenden Netze mit Musterfällen trainiert werden. Beide Ansätze weisen allerdings grundsätzliche Probleme auf, worauf [Jan93] zutreffend hinweist (S. 42 f.): Ein großes Problem stellt dar, dass zunächst die relevanten Merkmale ermittelt werden müssten. Hierbei ist es sehr fraglich, ob dies überhaupt gelingen kann. Selbst wenn alle richterlichen Entscheidungen analysiert würden, könnte es sein, dass in der als nächstes folgenden Entscheidung ein neues Merkmal von Relevanz ist. Es ist daher wohl nicht zu beweisen, dass eine Liste relevanter Merkmale vollständig ist. Ein anderes Problem ist, dass bei der Zerlegung eines Begriffes in bedeutsame Merkmale teilweise wiederum unbestimmte Begriffe gebraucht werden. So benötigt das System WZ beispielsweise die Information, ob die Witterung während der Wartezeit normal oder extrem war, was wiederum ohne (Be-)Wertung der Witterungslage nicht möglich ist. Die Verwendung neuer unbestimmter Begriffe lässt sich auch nicht ohne weiteres verhindern, schon gar nicht, wenn man nur Merkmale verwenden möchte, welche Urteilsbegründungen entnommen wurden. Letztlich würden insbesondere „Neuronale Netze“ gegen die Maxime verstoßen, die Entscheidungen des Expertensystems durchschaubar und nachvollziehbar zu gestalten. Aber auch in WZ ist die Berechnungsregel undurchsichtig und das Resultat – die „angemessene Wartezeit“ – wird nicht begründet. Über die genannten Kritikpunkte hinaus ist es sehr fragwürdig, ob es überhaupt wünschenswert wäre, unbestimmte Rechtsbegriffe von einem Computer bestimmbar zu machen. So unterliegt der Rechtsbegriff der „guten Sitten“ auch dem Wandel der Zeit. Was heute als sittenkonform gilt, kann vor einigen Jahren noch gegen die „guten Sitten“ verstoßen haben. Hier kann ein Richter nicht auf Präjudizien beharren, sondern muss den Begriff an aktuelle Begebenheiten anpassen, damit nicht die Dynamik des Rechts verloren geht. Ebensowenig kann ein unbestimmter Rechtsbegriff von einer (statischen) Berechnungsregel „bestimmt“ werden. Zwar gilt das Gebot der Gleichmäßigkeit und Beständigkeit der Rechtsprechung, doch ist diese stets aufs Neue zu überprüfen, sonst kommt es zu einer Versteinerung des Rechts (vgl. zur Ausfüllung unbestimmter Rechtsbegriffe [Sir89], S. 41). 38 Aus diesen Erwägungen resultiert, dass die Subsumtion unter unbestimmte Rechtsbegriffe in der Zuständigkeit des Menschen verbleiben sollte. Allenfalls wäre eine Beratung des Menschen durch den Computer denkbar, obgleich diese auch zu einer ungeprüften Übernahme des Ratschlages verführen könnte. 3.3 HYPO und darauf aufbauende Ansätze 3.3.1 Beschreibung HYPO ist ein fallvergleichendes System. Dies bedeutet, dass es versucht, Erfahrungen aus Fällen aus der Vergangenheit für neue Fälle zu nutzen. HYPO vergleicht hierzu einen gegebenen Fall mit „Präzedenzfällen“. In der angloamerikanischen Rechtssprechung spielen zwar Präzedenzfälle eine wesentlich wichtigere Rolle als beispielsweise im deutschen Recht, dennoch haben Systeme wie HYPO auch in Deutschland ihre Berechtigung. Wird unter einen unbestimmten Rechtsbegriff subsumiert, so werden – dem Gebot der Beständigkeit und Gleichmäßigkeit der Rechtsprechung folgend – Präzedenzfälle zur Beratung herangezogen, wenngleich diese keine gesetzesgleiche oder gesetzesähnliche Kraft besitzen. Dennoch dienen gerade höchstrichterliche Entscheidungen häufig als Musterprozesse und erhalten so im deutschen Recht praktische Bedeutung (vgl. [Sir89], S. 41). Ähnlich wie bei dem System WZ werden bei HYPO Fälle mittels verschiedener, abgestufter Merkmale charakterisiert. Der Anwendungsbereich des Systems ist der „Schutz von Geschäftsgeheimnissen“. Das System ist in der Lage, (bei Vorliegen einer FallCharakterisierung) eine Anklage mit Hilfe von Präzedenzfällen zu stützen oder zu verteidigen (vgl. [Jan93], S. 43 ff.). Das Fallvergleichskonzept von HYPO wurde beispielsweise in [PS97], [PS98] und [Ben99] weiter untersucht und verfeinert. An dieser Stelle soll lediglich die Darstellung aus [Ben99] zusammengefasst werden, welche die Ideen aus [PS97]/[PS98] aufgreift. Demnach besteht ein Fall jeweils aus mehreren Argumenten, die sich jeweils entweder als Argument des Klägers oder als Argument des Angeklagten einordnen lassen. Angenommen, ein Fall bestünde aus den Argumenten A,B,C,D und E, wobei A, B, C anklagestützende Argumente („pro-plaintiff“ (p)) und die anderen Argumente anklageverteidigende Argumente („pro-defendant“ (d)) darstellen. Dies würde durch folgende Regeln dargestellt: R1: A & B & C -> p. R2: D & E -> d. Sei weiter angenommen, der Fall sei von der Verteidigung gewonnen worden. Nach dem hier dargestellten Ansatz, würde dies bedeuten, dass die Argumente aus R2 zusammen stärker wiegen als die Argumente aus R1. Dies würde folgendermaßen dargestellt: R3: R1 < R2 Unter der Annahme, dass alle Argumente voneinander unabhängig sind und entweder vorliegen oder nicht, können, wenn darüber hinaus angenommen wird, dass zusätzliche Argumente für eine bestimmte Seite die entsprechende Position niemals abschwächen, die Argumente in eine partielle Ordnung gebracht werden. Hier ein Auszug der sich daraus ergebenden Folgerungen für das obige Beispiel: R1a: A & B -> p. 39 R1b: R2a: R3a: R3b: A & C -> p. D -> d. R1a < R2. R1b < R2. Durch jeden neu hinzu kommenden Fall wird die Ordnung verfeinert, so dass immer mehr Fälle beurteilt werden können. Probleme treten beispielsweise auf, wenn Fälle ergänzt werden, aus welchen Widersprüche resultieren. Diese Situation träte beispielsweise ein, wenn ein Fall mit den Argumenten A,B,D und E für den Ankläger entschieden würde, was im Widerspruch zu R3 in Verbindung mit der Forderung, dass zusätzliche Argumente die entsprechende Position nicht abschwächen dürfen, steht. 3.3.2 Bewertung Wie schon im System WZ, so muss auch bei HYPO im vorhinein geklärt werden, was mögliche relevante Merkmale sind. Dieser Mangel wird jedoch von den anderen Ansätzen behoben. Alle Ansätze haben derzeit noch Probleme mit der Skalierung von Argumenten, da hier eine Darstellung gefunden werden muss, welche sich in die partielle Ordnung einbinden lässt (vgl. hierzu den Versuch in [Ben99], S.38 ff.). Schwerer wiegt allerdings wohl die bereits angesprochene Tatsache, dass sich verschiedene Fälle widersprechen können. Es wird vorgeschlagen, diese Situation zu lösen, indem ein an dem Widerspruch beteiligter Präzedenzfall oder der neue Fall als falsch beurteilt eingestuft wird und somit aus der Präzedenzfall-Datenbank zu entfernen ist. Als zweite Alternative wird vorgeschlagen, in solchen Situationen weitere Argumente einzuführen, welche eine Unterscheidung der „widersprüchlichen“ Fälle erlauben. Dies erscheint sinnvoll, doch ist wohl fraglich, ob eine eventuell später (wegen Auftretens eines Widerspruches) abzuändernde Fallcharakterisierung als Grundlage für Entscheidungen dienen darf. Eine Verwendung der vorgestellten Ansätze als Basis für eine Argumentationshilfe, welche diese Ansätze ursprünglich motivierte, erscheint hingegen denkbar. 3.4 Sonstige regelbasierte Ansätze CABARET35 ist ein Nachfolgeprojekt des oben beschriebenen Systems HYPO. Es verwendet klassische und probabilistische Regeln nebeneinander und kann daher auch als hybrides System klassifiziert werden. Es kann verwendet werden, um einen Standpunkt zu vertreten oder um Argumente gegen die diesen Standpunkt stützenden Argumente aufzuzeigen (vgl. [Jan93], S. 276). Das System KOKON36 stellt ein System dar, welches dazu dienen soll, Grundstückskaufverträge aufzusetzen. Der Anwender trägt in einem Formular die Daten des Kaufs ein und sieht parallel zur Dateneingabe die jeweils aktuelle Version des Vertrages. Regeln dienen dazu, aus den Eingaben Daten zu gewinnen, welche in einem Grundstückskaufvertrag anzugeben sind. So kann KOKON beispielsweise aus Daten wie dem Alter oder dem Personenstand ableiten, ob die Vertragspartei geschäftsfähig ist, ob behördliche Genehmigungen erforderlich sind oder ob eine Ehegattenzustimmung (§1365 BGB) benötigt wird (vgl. [Jan93], S. 273 f.). Default-Reasoning wird verwendet, um immer eine aktuelle Vertragsversion anzeigen zu können, welche anfangs ausschließlich aus den Default-Werten ermittelt wird. 35 CABARET steht für „Case-Based Reasoning Tool“und stammt von Edwina L. Rissland und David B. Skalak (University of Massachusetts). 36 KOKON wurde von Systemtechnik Berner und Mattner entworfen und in Zusammenarbeit mit der TU München im Rahmen des WISDOM-Verbundprojektes verwirklicht. 40 4 Exkurs: Analogie zwischen Rechtsanwendung und wissensbasierten Systemen An dieser Stelle erfolgt ein kurzer Exkurs, welcher zeigen soll, dass zwischen juristischer Methodik und wissensbasierten Systemen gewisse Parallelen existieren. Zwar sollte man diese Erkenntnis nicht überbewerten, doch motivieren diese Parallelen auch den Aufbau des juristischen Systems – welcher in den beiden folgenden Kapiteln beschrieben wird – mit. Der nun dargestellt Vergleich wurde 1987 von [FG87] (S. 63 ff.) angestellt. Repräsentiert man einen Fall über gegebene Fakten in einer Wissensbasis, so sei dies zu vergleichen mit der tatsächlichen Situation vor Gericht, wenn alle Aussagen vorliegen. Diese von den verschiedenen Parteien oder Zeugen getätigten Aussagen liegen in einem wissensbasierten System in Faktenform vor. Während in der Praxis der Richter nun den Fall im Lichte der Gesetze betrachten muss, können in regelbasierten Systemen Regeln verwendet werden, um zu Urteilen zu gelangen. Solche Regeln seien vergleichbar mit (bestimmten) Gesetzen. Wie ein Richter auf verschiedene Arten mit Hilfe der ihm vorliegenden Fakten und Gesetze zu seinem Urteil kommt, kann mitunter unterschiedlich sein. Zwar wird in einem juristischen Gutachten zunächst die Norm genannt und dann versucht, diese an die Fakten „anzupassen“ (top-down), doch stellt ein juristisches Gutachten nur eine Darstellungsform des Ergebnisses juristischen Schließens dar. Die Schlüsse, über welche der Richter zu seinem Urteil gelangte, können durchaus auch in umgekehrter Richtung, also von den Sachverhaltsfakten ausgehend, vorgenommen worden sein (bottom-up). Ebenso ist es denkbar, dass der Richter, um zu seinem Urteil zu gelangen, Sachverhalt und Norm aneinander anzupassen versucht hat und dabei teilweise von den Gesetzesnormen und teilweise von den Sachverhaltsfakten ausging (gemischte Strategie). Wie der Richter nun genau das Urteil erarbeitet, könne verglichen werden mit der von der Inferenzkomponente verwendeten Regel-Anwendungs-Strategie. Insofern entspräche die Judikative in gewissem Sinne solch einer Inferenzkomponente. Es dürfte wohl offensichtlich sein, dass die oben aufgezeigten Parallelen zwischen wissensbasierten Systemen und dem Rechtsfindungsvorgang von mehr oder weniger starken Vereinfachungen ausgehen. So können beispielsweise Aussagen einander widersprechen. In solchen Fällen können nun nicht einfach die Gesetze beziehungsweise Regeln angewendet werden, um zu einem Urteil zu gelangen. Der Grund dafür ist, dass dann der Fall eintreten könnte, dass verschiedene, widersprüchliche Urteile hergeleitet werden. Dieser Fall ist auch in Situationen denkbar, wo die Entscheidung eines Falles der Gesetzesauslegung bedarf. Um hier eindeutige Entscheidungen treffen zu können, sind zum einen Mechanismen erforderlich, welche es ermöglichen, Gesetze auszulegen. Außerdem muss eine Inferenzkomponente herausfinden können, wem geglaubt werden kann und wem nicht. Trotz solcher Probleme darf wohl zu Recht von gewissen Parallelen zwischen Rechtsanwendung und wissensbasierten Systemen gesprochen werden. Bei der Entwicklung solcher Systeme darf diese Erkenntnis allerdings nicht dazu verführen, zu stark zu vereinfachen und die Rechtsanwendung somit wichtiger Facetten zu berauben. Stattdessen ist zu versuchen, Probleme wie die oben angesprochenen, angemessen zu behandeln oder die Funktionalität des Systems in problematischen Bereichen einzuschränken und den menschlichen Jurist in die Entscheidungsfindung des Systems zu involvieren. 41 5 Formalisierung juristischer Sachverhalte und Normen In diesem Kapitel und in Kapitel 6 wird das im Rahmen dieser Arbeit entwickelte wissensbasierte juristische System vorgestellt. Während sich Kapitel 6 mit der Implementierung und der Architektur beschäftigt, geht es in diesem Kapitel darum, darzustellen, auf welche Weise das Wissen aus dem Anwendungsbereich innerhalb des Systems dargestellt wird. Um hierauf genau eingehen zu können, muss zunächst geklärt werden, welche Datenbanksprache(n) innerhalb des Systems verwendet werden soll(en) (Kapitel 5.1). Ferner ist der genaue Anwendungsbereich des Systems einzugrenzen. Dazu wird zunächst in Kapitel 5.2 der zu modellierende Gesetzesausschnitt ausgewählt. Anschließend wird in Kapitel 5.3 dargelegt, welche der bei einer juristischen Subsumtion üblichen Prüfungs-Schritte von dem hier behandelten juristischen System tatsächlich durchgeführt werden. Erst im Anschluss an diese Vorbereitungen wird in Kapitel 5.4 und Kapitel 5.5 gezeigt, auf welche Weise der Sachverhalt beziehungsweise die juristischen Normen formal dargestellt werden. 5.1 Datenbanksprachen Wie angekündigt, wird nun diskutiert, welche Sprache(n) als DDL und DML des juristischen Systems verwendet werden soll(en). Aufgrund der Eigenschaft, Handlungsabfolgen in beliebiger Länge („horizontal extensibility“) und in beliebiger Detailliertheit („vertical extensibility“) darstellen zu können, bietet sich die Prädikatenlogik erster Stufe beziehungsweise darauf basierende logische Sprachen wie Prolog oder Datalog zur Beschreibung von Sachverhalten an (vgl. [Bra99], S. 1). Diese beiden Sprachen wurden in den Kapiteln 2.1.8.1 und 2.1.8.2 dargestellt. Es gibt verschiedene Argumente, welche Prolog gegenüber Datalog zur Verwendung im juristischen System favorisieren. Die Reihenfolgeunabhängigkeit von Datalog mag für viele Anwendungen von Vorteil sein. Im juristischen System soll aber mit Hilfe von Ableitungsregeln hauptsächlich die juristische Subsumtion nachgeahmt werden. Hierbei sollen juristische Gutachten erstellt werden, bei welchen es in der Regel nicht gleichgültig ist, in welcher Reihenfolge die einzelnen Prüfungsschritte durchgeführt werden (vgl. Kapitel 2.2.4). Eine mengenorientierte Semantik – wie in Datalog – wird vermutlich nicht so häufig benötigt, daher genügt es, in solchen Fällen auf Prädikate wie findall/3 zurückzugreifen, mit welchen alle Lösungen zu einer Anfrage „gesammelt“ werden können. Ebenso von Vorteil für eine juristische Subsumtion ist die „top-down“-Auswertungsstrategie von Prolog. In einem juristischen Gutachten wird ausgehend von einer Norm versucht, diese mit einem Sachverhalt zur Deckung zu bringen. Betrachtet man die Abbildung in Kapitel 2.2.1, so erkennt man, dass es sich hierbei auch um eine „top-down“-Auswertung handelt. Außerdem kann Prolog durch seine außer-logischen Konzepte nicht nur als Datenbanksprache, sondern darüber hinaus auch besonders gut als Programmiersprache für das gesamte juristische System verwendet werden. Diese außer-logischen Konzepte lassen es auch zu, die Ableitungsreihenfolge zu beeinflussen und so an das jeweilige Problem anzupassen. So lassen sich Prolog-Regeln beispielsweise im Wechsel auf Sachverhalt und Norm anwenden, um so das in Kapitel 2.2.2 beschriebene „Hin-und-Herwandern des Blickes“ zu simulieren. Der gro42 ße Nachteil der außer-logischen Prolog-Konzepte ist allerdings, dass durch ihre Verwendung die Deklarativität in ihrer Reinheit verloren geht. Daher sollten diese Konzepte nur zur Datenmanipulation auf einer Meta-Ebene verwendet werden, nicht jedoch zur Beschreibung von Gesetzen oder Aspekten des Sachverhalts. Als populärste Datenbanksprache käme eventuell noch SQL in Frage, im juristischen System verwendet zu werden. Leider existieren in SQL-2 keine rekursive Sichten. Aber selbst wenn man die neueste SQL-3-Spezifikation zu Grunde legen würde, könnte man mit SQL immer noch nicht die Ableitungsreihenfolge so elegant beeinflussen, wie dies in Prolog möglich ist. Somit wird lediglich Prolog verwendet37, um das juristische System zu implementieren. Als DDL dient reines Prolog. Im juristischen System wurde der Prolog-Compiler ECLiPSe verwendet. 5.2 Auswahl des zu modellierenden Gesetzesauschnitts Bevor nun genauer darauf eingegangen werden kann, wie mit Hilfe von Prolog Gesetze und Sachverhalte modelliert werden, muss zunächst geklärt werden, welche Normen überhaupt modelliert werden sollen. Das juristische System soll zwar anhand konkreter Gesetze arbeiten, im Vordergrund soll aber die Imitation juristischer Methodik stehen. Insofern spielt die Wahl der Gesetze, welche vom juristischen System bearbeitet werden können sollen, nur eine untergeordnete Rolle. An das System darf nicht die Anforderung gestellt werden, dass es alle erdenklichen Normen „beherrscht“. Damit soll gemeint sein, dass das System nicht unter alle real existierenden Normen subsumieren können muss. Dies ist angesichts der Flut von Gesetzen wohl selbstverständlich, hat aber zur Folge, dass ein bestimmter Bereich des Gesetzes ausgewählt werden muss. Die Gesetze sollten so ausgewählt werden, dass bei einem juristischen Gutachten möglichst viele Aspekte juristscher Methodenlehre zur Anwendung kommen. Auf diese Weise wird erzwungen, dass für die verschiedensten Schwierigkeiten, welche im Rahmen der Subsumtion auftreteten können, Lösungen gefunden werden müssen. Zu diesen Aspekten gehören beispielsweise Auslegung und Wertungen im Zusammenhang mit unbestimmten Rechtsbegriffen. Die verschiedenen Gesetze sind in unterschiedlichem Maße auslegungsbedürftig und in längst nicht allen Gesetzen kommen wertungsbedürftige unbestimmte Rechtsbegriffe vor. Hierzu zunächst zwei extreme Beispiele: §4 HeizAnlV38. Einbau und Aufstellung von Wärmeerzeugern. (3) Zentralheizungen mit einer Nennwärmeleistung von mehr als 70 kW sind mit Einrichtungen für eine mehrstufige oder stufenlos verstellbare Feuerungsleistung oder mit mehreren Wärmeerzeugern auszustatten. ... §157 BGB. Auslegung von Verträgen. Verträge sind so auszulegen, wie Treu und Glauben und Rücksicht auf die Verkehrssitte es erfordern. Die Vorschrift aus der Heizungsanlagen-Verordnung enthält keine auslegungs- oder wertungsbedürftigen Passagen. Zwar ist in diesem Beispiel keine Rechtsfolge angegeben – diese findet sich in einem anderen Paragraphen der Heizungsanlagen-Verordnung –, doch sollte 37 38 Ausnahme: Dialogkomponente (s. Kapitel 6.5) Heizungsanlagen-Verordnung 43 erkennbar sein, dass sich solche Gesetze sehr einfach mit Regeln darstellen lassen. Anders sieht die Situation im zweiten Beispiel aus. Im Gegensatz zu §4 HeizAnlV enthält §157 BGB unbestimmte Rechtsbegriffe („Treu und Glauben“, „Rücksicht auf die Verkehrssitte“). Hier stößt die Darstellung durch Regeln auf Probleme (vgl. Kapitel 3.2.2). Da solche Probleme in einem gewissen Maß in fast allen Gesetzen auftauchen, muss ein System, welches die juristische Subsumtion nachahmen möchte, in der Lage sein, mit diesen Problemen umzugehen. Daher sollten die Normen der Wissensbasis des juristischen Systems unbestimmte und auslegungsbedürftige Begriffe enthalten. Rechtssätze, welche solche Begriffe enthalten, nennt man auch billiges Recht (lat. ius aequum) (vgl. [Bro95], Rn. 32). Auf der anderen Seite sollte dieses billige Recht auch nicht überwiegen, da auch gezeigt werden soll, dass Regeln prinzipiell zur Darstellung von Gesetzen gut geeignet sind. Würden ausschließlich Gesetze modelliert, welche nur bis zu einem bestimmten Punkt zu formalisieren sind, entstünde ein falscher Eindruck. Somit ist eine Anforderung an die zu modellierenden Gesetze, dass diese in einem „durchschnittlichen Maße“ billiges Recht (lat. ius aequum) enthalten. Eine weitere Anforderung folgt daraus, dass nur ein Teilbereich eines Rechtsgebietes modelliert wird. Es sollten Gesetze ausgewählt werden, welche isoliert betrachtet werden können. So gibt es Gesetze wie etwa im Bürgerlichen Gesetzbuch, die zu einem hohen Maße miteinander verflochten sind, mit der Folge, dass aus dem Versuch, einzelne Normen zu formalisieren, die Notwendigkeit andere Normen miteinzubeziehen resultiert. Letztlich wurden die Körperverletzungsdelikte39 aus dem 17. Abschnitt des Strafgesetzbuchs ausgewählt. Die Delikte sind in den Paragraphen 223-233 enthalten, welche auch im Anhang abgebildet sind. Diese Wahl genügt der Forderung nach einem „durchschnittlichem Maß“ an billigem Recht. Begriffe wie „hinterlistiger Überfall“ aus §224 I Nr. 3 oder „gute Sitten“ aus §228 sind in hohem Maße auslegungs- beziehungsweise wertungsbedürftig. Dennoch lassen sich in vielen Gesetzen Baumstrukturen erkennen und der ganze 17. Abschnitt stellt eine Hierarchie von Paragraphen dar, so dass ein großes Potential für den Einsatz von Regeln besteht. Ein weiterer Punkt, der für die Körperverletzungsdelikte spricht, ist ihr Bekanntheitsgrad. Unter dem juristischen Begriff der Körperverletzung kann sich wohl beinahe jeder etwas vorstellen. Würden unbekanntere Normen ausgewählt, so könnte eher der Eindruck entstehen, dass nur ganz spezielle Gesetze dem hier verfolgten Ansatz zugänglich seien. Letztlich lassen sich die Körperverletzungsdelikte auch recht gut isoliert betrachten. Schränkt man den im Strafrecht üblichen Prüfungsaufbau ein wenig ein, so kann man ein System entwickeln, welches (fast) ausschließlich auf der Modellierung der Körperverletzungsdelikte basiert. Wie diese Einschränkung auszusehen hat, wird nun dargestellt. 5.3 Eingeschränkter Prüfungsaufbau des juristischen Systems Wie in Kapitel 2.2.1 dargestellt, unterteilt sich das Strafgesetzbuch in einen Allgemeinen und einen Besonderen Teil. Während der Besondere Teil verschiedene Straftaten auflistet, enthält der Allgemeine Teil Vorschriften, wie damit umzugehen ist. Diese allgemeinen Vorschriften, sind bei der Prüfung jeder Straftat zu berücksichtigen. So ergibt sich der in Kapitel 2.2.3 beschriebene Prüfungsaufbau im Strafrecht zu einem großen Teil aus Vorschriften aus dem Allgemeinen Teil des Strafgesetzbuches. Dies hat zur Folge, dass sehr viele allgemeine Vorschriften dem juristischen System bekannt sein müssten, wenn es eine vollständige Überprüfung eines Körperverletzungsdelikts vornehmen wollte. 39 genauer: Straftaten gegen die körperliche Unversehrtheit 44 Ein großer Teilbereich einer solchen Prüfung kann allerdings weitestgehend ohne den Allgemeinen Teil vorgenommen werden. Hierbei handelt es sich um die Prüfung des objektiven Tatbestands. Da die Menge der vom juristischen System beherrschten Gesetze eingeschränkt werden soll, wurde darauf verzichtet, die Prüfungsschritte Rechtswidrigkeit und Schuld miteinzubeziehen. Auch die subjektive Tatbestandsmäßigkeit wird vom juristischen System nicht geprüft. Stattdessen wird „nur“ ermittelt, ob die in den „wenn-Teilen“ der Gesetze des 17. Abschnitts des Strafgesetzbuches enthaltenen objektiven Tatbestandsmerkmale vorliegen oder nicht. 5.4 Formalisierung von Sachverhalten Nun ist also klargestellt, welche Gesetze das juristische System in welchem Umfang bearbeiten können soll. Als nächstes gilt es zu beschreiben, wie Sachverhalt und Normen im juristischen System modelliert werden sollen. Es ist schwierig, eine geeignete Darstellungsform für die Modelle von Sachverhalt und Normen zu finden, welche auch beschreibt, wie diese Modellierung entwickelt wird. Der Grund hierfür ist, dass Sachverhalt und Normen streng genommen nicht getrennt betrachtet werden können, da sie in wechselseitiger Abhängigkeit stehen: - So ist für die Entwicklung der Gesetzes-Modelle entscheidend, wie der Sachverhalt modelliert ist, da Gesetze ja abstrakte Tatbestände beschreiben, welche sich mit konkreten Tatbeständen – also den Sachverhalten – decken sollen. - Auf der anderen Seite kann auch die Entwicklung der Sachverhaltsdarstellung nicht effizient erfolgen, ohne zu wissen, wie die Modelle der Gesetze aussehen. Man könnte zwar gewiss Konzepte erarbeiten, mit welchen man eine große Menge von Sachverhalten beschreiben könnte, da es aber nicht nötig ist, Sachverhalte beschreiben zu können, welche – im Fall des juristischen Systems – nichts mit Körperverletzungsdelikten „zu tun“ haben, ist es wohl sinnvoller, lediglich die Konzepte genau herauszuarbeiten, welche den Anwendungsbereich – den 17. Abschnitt des Strafgesetzbuches – tangieren. Zwar sollen nicht ausschließlich Sachverhalte darstellbar sein, welche aus Körperverletzungen „bestehen“, es genügt aber, solche Sachverhalte repräsentieren zu können, welche es „wert“ sind, hinsichtlich der Körperverletzungsdelikte überprüft zu werden. In der Regel können „prüfenswerte“ Sachverhalte allerdings mit den gleichen Konzepten beschrieben werden, wie die Sachverhalte, welche tatsächlich tatbestandsmäßig sind. Letztlich wurde die Entscheidung getroffen, zunächst die Modellierung des Sachverhaltes zu beschreiben. Der ausschlaggebende Grund hierfür ist, dass bereits bekannt ist, welche Gesetze vom System „beherrscht“ werden sollen. Hiermit steht prinzipiell bereits fest, welche Konzepte erforderlich sind, um die Sachverhalte zu beschreiben, welche im System dargestellt werden können müssen. Es ist jedoch zu beachten, dass dennoch viele Entscheidungen im Rahmen des Entwurfs der Sachverhalt-Modellierung im Hinblick auf die parallel dazu entwickelte Modellierung der „Körperverletzungsgesetze“ getroffen wurden. Auf diesen Aspekt wird in der nun folgenden Beschreibung der Sachverhalt-Modellierung im einzelnen immer wieder eingegangen. 45 Personenmerkmal personenmerkmal_beschr ___(personenmerkmal): ___STRING Schutzverhaeltnis schutzbefohlener: Pers. beschuetzer: Person bezeichnung: STRING gefaehrdeter: Person konkr_pers_gef_beschr(Konkr ____Pers_Gef): STRING Beschuetzer bezeichnung: STRING inhaber: Person Gefaehrdeter Person fuehrt_aus nachname: STRING vorname: STRING geschlecht: {w, m} alter: INTEGER wehrlos: BOOLEAN Inhaber Geschaedigter konkr_lebensgef konkr_gef_ges konkr_gef_koerp_entw konkr_gef_seel_entw Konkr_Pers_Gef begruendet Schutzbefohlener fuersorge_oder_obhut gehoert_hausstand_an wurde_gewalt_ueberlassen dienst_arbeitsverhaeltnis wird_behandelt wird_benutzt Verhalten /wird_beigebracht bezeichnung: STRING ist_kausal bezeichnung: STRING beweglich: BOOLEAN verhalten_beschr(Verh.): STRING verhalten_beschr2(Verh.): STR. gegenstand_beschr(Gegenst ___and): STRING person_beschr(Person): STRING Opfer Opfer Erfolg Gegenstand /Behandlung /Gs_Stoff /opfer: Person /uebel_unang: BOOLEAN /lebensgef: BOOLEAN bezeichnung: STRING /Werkzeug ist_folge_von /Gift Schaden Pers_schaden geschaedigter: Person pers_schaden_beschr(Pers_scha ___den): STRING Schaden /Misshandlung /Ueberfall /schaden: Pers_sch. /roh: BOOLEAN /hinterl: BOOLEAN /Waffe /Vernachlaessigung /Tod Beeintraechtigung /koerperlich: BOOLEAN /unerheblich: BOOLEAN /Ges_schaden /Schmerzen /Schwerer_Schaden /laenger: BOOLEAN /erheblich: BOOLEAN verl_sehverm verl_gehoer verl_sprechverm /B_Wohlbef /B_Unversehrt verl_wicht_glied dauernde_entstellung verf_in_siechtum verf_in_laehmung verf_in_geist_krankh verf_in_behinderung 46 5.4.1 Konzeptueller Entwurf Auf der vorigen Seite ist das komplette konzeptuelle Sachverhalt-Schema in UML dargestellt. Dieses wird nun im Folgenden Schritt für Schritt hergeleitet beziehungsweise erläutert und anschließend in Kapitel 5.4.2 in den logischen Entwurf überführt. Hierbei wird ausführlich auf ausgesuchte Probleme eingegangen, mit welchen man bei der Entwicklung eines solchen Schemas zwangsläufig konfrontiert wird. Dies geschieht auch, um dem Leser ein Gespür dafür zu vermitteln, wie schwierig es ist, einen komplexen juristischen Anwendungsbereich zu modellieren. Am Ende dieses Kapitels wird der Versuch unternommen, die Gründe für diese Schwierigkeit zu benennen. Auf der anderen Seite werden auch einige Entwurfsentscheidungen ohne Begründung getroffen. Dies liegt in der Regel nicht daran, dass sie „aus dem Bauch heraus“ getroffen worden wären, sondern vielmehr daran, dass diese Entscheidungen nur umständlich zu begründen sind (etwa nur durch Vorgriff auf das später präsentierte NormenModell). In Fällen, wo dieser Aufwand in keinem vernünftigen Verhältnis zur Wichtigkeit der Entscheidung steht, fehlt daher eine Begründung gelegentlich ganz. Die zentralen Konzepte: Verhalten, Person, Erfolg Innerhalb des Strafgesetzbuches werden rechtswidrige „Straftaten“ aufgezählt und unter Strafe gestellt. Dadurch dient das Strafrecht insbesondere dem Zweck, Verbote oder – in bestimmten Fällen – auch Gebote auszusprechen und die Menschen zu normgerechtem Verhalten zu bestimmen (vgl. [Wes95], Rn. 80). Um dem juristischen System die Möglichkeit zu geben, Rechtsverstöße zu erkennen, muss daher zunächst die Möglichkeit bestehen, rechtswidriges Verhalten – beziehungsweise Verhalten im Allgemeinen – innerhalb des Systems darzustellen. Daher muss ein Verhalten-Konzept existieren. Man beachte die Namensgebung: das Konzept wird bewusst mit „Verhalten“ und nicht etwa mit „Handlung“ oder – wie es der Begriff der Straftat motivieren könnte – mit „Tat“ bezeichnet, da im Strafrecht durchaus auch Untätigbleiben strafbar sein kann. Man unterscheidet daher zwischen Tun und Unterlassen40 (§13 StGB); Verhalten sei der Oberbegriff hierfür. (Menschliches) Verhalten ist immer mit irgendeiner „ausführenden“ Person verbunden. Daher könnten Personen als „Teil“ von Verhalten angesehen werden. Dennoch sollten zur Darstellung von Verhalten und Personen verschiedene Konzepte bereitstehen, da eine bestimmte Person immer auch in anderen Rollen als der des „Täters“ (z.B. Opfer, Anstifter ...) an einem bestimmten Verhalten beteiligt sein kann. Ein weiteres zur Beschreibung von Sachverhalten innerhalb des juristischen Systems benötigtes Konzept ist „Erfolg“. Man unterscheidet im Strafrecht Erfolgsdelikte von den schlichten Tätigkeitsdelikten dadurch, dass bei Erfolgsdelikten im gesetzlichen Tatbestand ein vom jeweiligen Verhalten abgrenzbarer Erfolg in der Außenwelt gefordert wird (s. [Wes95], Rn. 22). Ein Beispiel für ein Tätigkeitsdelikt ist §231 („Beteiligung an einer Schlägerei“). Hier wird bereits das bloße Verhalten, sich an einer Schlägerei zu beteiligen, unter Strafe gestellt, unabhängig davon, ob irgendwelche Folgen wie Verletzungen oder ähnliches eingetreten sind. Die weiteren Körperverletzungsdelikte sind allerdings Erfolgsdelikte. So wird in §223 („Körperverletzung“) – grob gesprochen – verlangt, dass eine Verletzung vorliegt. Die Bezeichnung beispielsweise einer Verletzung als „Erfolg“ erscheint unangebracht, da dieser Begriff häufig mit etwas Positivem assoziiert wird. Im juristischen Kontext ist er allerdings wertfrei zu verstehen. 40 Im Rahmen des juristischen Systems wird allerdings keine komplette Unterlassungsdelikt-Prüfung vorgenommen. 47 Die zur Darstellung von Körperverletzungsdelikten benötigten zentralen Konzepte sind hiermit bereits aufgezählt. Dies sind „Verhalten“, „Person“ und „Erfolg“. Die einzelnen Konzepte sind in der folgenden Abbildung als Klassen dargestellt. Als Attribut der Elemente der Klassen Verhalten und Erfolg ist nur das Attribut „bezeichnung“ angegeben. Eine typische Verhalten-Bezeichnung ist beispielsweise „schlagen“ eine Bezeichnung für einen Erfolg könnte z.B. „Schürfwunde am Bein“ heißen. Die Klasse Person verfügt über die Attribute Nachname, Vorname und einige Attribute, auf die erst später eingegangen wird. Alle41 Klassen des diesem Kapitel vorangestellten UML-Schemas verfügen neben den jeweils angegebenen Attributen über ein weiteres, nicht eigens angegebenes Schlüssel-Attribut namens „schluessel“ mit dem Wertebereich „Integer“. Die Funktion dieses Attributs ist die Wahrung der Objektidentität für die Instanzen der verschiedenen Objektklassen. In der nun folgenden Abbildung sollen neben den Klassen mit ihren Attributen auch die im Rahmen von Körperverletzungsdelikten interessierenden Beziehungen zwischen diesen Klassen dargestellt werden: Person nachname: STRING vorname: STRING ... fuehrt_aus Verhalten wird_behandelt bezeichnung: STRING ist_kausal Erfolg bezeichnung: STRING Abbildung: Die zentralen Sachverhalts-Konzepte Eine Person kann ein Verhalten ausführen oder durch ein Verhalten „behandelt“ werden, etwa wenn eine Person eine andere schlägt. Ein Erfolg (z.B. eine Verletzung) muss, damit er strafrechtliche Relevanz erlangen kann, in einem Zusammenhang mit dem Verhalten des „Täters“ stehen. Wie dieser Zusammenhang genau auszusehen hat, ist umstritten. Im Allgemeinen wird zumindest gefordert, dass das Verhalten kausal (=ursächlich) für den Erfolg ist. Darüber, wann ein Verhalten in kausalem Zusammenhang mit einem Erfolg steht, existieren verschiedene Ansichten. An dieser Stelle sollen lediglich drei von vielen verschiedenen Ansichten dargestellt werden, um ein Gespür für die Problematik entwickeln zu können. Im Anschluss daran wird festgelegt, welche Beziehungen im juristischen System mit „ist_kausal“ gemeint sein sollen. Ein ausführlicher Überblick über die verschiedenen Kausalitäts-Theorien ist in [Wes95] (Rn. 152 ff., mwN) zu finden. Angelehnt an diese Quelle erfolgten auch die nun folgenden Kurzzusammenfassungen: - Bedingungs- oder Äquivalenztheorie: Nach dieser Ansicht ist Ursache im Sinne des Strafrechts jede Bedingung eines Erfolges, die nicht hinweggedacht werden kann, ohne dass der Erfolg in seiner konkreten Gestalt entfiele („condicio-sine-qua-non-Formel“). Ein Mangel dieser Theorie ist, dass er in Fällen, wo mehrere unabhängige Bedingungen zusammenkommen, wobei jede für sich geeignet ist, den Erfolg herbeizuführen, beide Bedingungen nicht als Ursache angesehen werden können. Werden beispielsweise von zwei Personen Schüsse auf ein Opfer abgegeben und jeder Schuss für sich genommen, wäre mit Sicherheit ein tödli- 41 Eine Ausnahme bilden hier lediglich die Schutzverhältnisse (s.u.), da diese eigentlich Beziehungen modelli eren. 48 cher, so kann auch jeder Schuss hinweggedacht werden, ohne dass der Tod des Opfers entfiele. Eine andere Schwäche dieser Theorie ist, dass ein Geschehen, welches in Folge eines atypischen, unvorhersehbaren Kausalverlaufs zu einem tatbestandsmäßigen Erfolg führt, als dessen Ursache betrachtet werden muss und somit eventuell zu einer Bestrafung des „Täters“ führt, wo dies nicht angebracht erscheint. Bricht Person A Person B beispielsweise ein Bein und diese Person verstirbt durch einen Unfall des Krankenwagens auf dem Weg ins Hospital, so liegt nach der conticio-sine-qua-nonFormel in dem Verhalten, welches zum Beinbruch von Person B geführt hat, auch die Ursache für deren Tod. - Adäquanztheorie: Ein Verhalten ist nach der Adäquanztheorie dann („adäquate“) Bedingung des konkreten Erfolges, wenn es die objektive Möglichkeit seines Eintritts generell in nicht unerheblicher Weise erhöht hat. Nach dieser Theorie wird bei einem atypischen Kausalverlauf wie im Krankentransport-Beispiel der Kausalzusammenhang verneint. Im Ergebnis führt diese Theorie damit zu „besseren“ Resultaten, doch erscheint es nicht angebracht, einen Kausalzusammenhang in Fällen mit atypischem Verlauf zu leugnen. Hier erscheint die Lehre von der objektiven Zurechnung der bessere Ansatz zu sein. - Lehre von der objektiven Zurechnung: Nach der Lehre von der objektiven Zurechnung genügt der Begriff der Kausalität allein nicht, um eine Person für einen Erfolg verantwortlich zu machen. Stattdessen müsse neben der Kausalität das Merkmal der objektiven Zurechnung vorliegen. Ein Erfolg ist einem Verhalten – grob gesprochen – dann objektiv zurechenbar, wenn durch das Verhalten eine rechtlich verbotene Gefahr geschaffen und die Gefahr sich in dem tatbestandsmäßigen Erfolg realisiert hat. Die letztgenannte Ansicht entspricht der heute (vor-)herrschenden Meinung (abgekürzt hM). Somit wäre es durchaus angebracht, zwischen Verhalten und Erfolg sowohl eine Kausalitätsals auch eine (objektive) Zurechenbarkeits-Beziehung zu haben. Da allerdings im Rahmen dieser Arbeit auf die Probleme des Allgemeinen Teils – und um ein solches handelt es sich bei der Kausalitätsproblematik – nicht näher eingegangen wird, wurde auf diese umständlichere Vorgehensweise verzichtet. Stattdessen bestehe nun zwischen einem Verhalten und einem Erfolg dann eine Beziehung „ist_kausal“, wenn die Person durch ihr Verhalten für den Erfolg verantwortlich gemacht werden kann. Durch diese Vereinbarung wird die Kausalitätsproblematik vom juristischen System ferngehalten. Der Anwender muss im Einzelfall daher selbst wissen, ob eine Person durch ihr Verhalten für einen Erfolg verantwortlich gemacht werden darf. Man erkennt bereits an dieser Stelle, dass bei der Erarbeitung des konzeptuellen Schemas die rechtlichen Grundlagen von einiger Bedeutung sind und genauestens bekannt sein sollten, bevor eine Modellierung des Sachverhaltes vorgenommen werden kann. Weitere Konzepte: Gegenstand, Personenmerkmal, Schutzverhältnis Die drei bisher eingeführten Basiskonzepte reichen noch nicht aus, um alle relevanten Sachverhalte zu beschreiben. Betrachtet man §224 („Gefährliche Körperverletzung“), so entdeckt man die Begriffe „Gift“, „gesundheitsschädliche Stoffe“, „Waffe“ und „gefährliches Werkzeug“. Diese Begriffe können mit den oben eingeführten Konzepten nicht modelliert werden. Allerdings kommen die Begriffe in §224 nur in Verbindung mit einer Körperverletzung vor, was bedeutet, dass sie notwendigerweise an ein Verhalten gekoppelt sein müssen. Somit könnte man auf die Idee kommen, sie in das Verhalten-Konzept zu integrieren. Wird bei49 spielsweise ein Hammer verwendet, um eine Person damit zu schlagen, so könnte dies durch ein Verhalten – etwa mit der Bezeichnung „schlagen mit Hammer“ – dargestellt werden. Da aber Gift oder eine Waffe etwas prinzipiell anderes ist, als ein Verhalten, sollten im Sinne der Objektorientiertheit verschiedene Konzepte dafür eingeführt werden. Die oben genannten Begriffe sind teilweise hierarchisch angeordnet. So ist am Wortlaut des §224 zu erkennen, dass „Werkzeug“ ein Oberbegriff für „Waffe“ ist.42 Außerdem wird „gesundheitsschädlicher Stoff“ als Oberbegriff von „Gift“ verwendet. Da die Funktionen von „Werkzeugen“ und „gesundheitsschädlichen Stoffen“ innerhalb des Gesetzes sehr ähnlich sind, erscheint es sinnvoll, diese Begriffe zu einem Oberbegriff zusammenzufassen. Fraglich ist hierbei jedoch, wie ein solcher Oberbegriff heißen kann. Da alle diese Begriffe in irgendeiner Form verwendet werden, also gewissermaßen „Handlungs-Objekte“ sind, böte sich die Bezeichnung „Objekt“ an, wäre dieser Begriff in der Informatik nicht schon eindeutig belegt. Letztlich fiel die Entscheidung auf den Namen „Gegenstand“, auch wenn beispielsweise Gase, welche auch gesundheitsschädliche Stoffe sein können, sicherlich keine Gegenstände darstellen. Der alternativ in Frage kommende Konzept-Name „Stoff“ erschien zu nichtssagend, weshalb die Ungenauigkeit des Namens „Gegenstand“ in Kauf genommen wurde. Gegenstand bezeichnung: STR. beweglich: BOOL. Gs_Stoff Gift Werkzeug Waffe Abbildung: „Gegenstände“ Gegenstände haben die Attribute „bezeichnung“ und „beweglich“. Letzteres Attribut enthält die Information, ob der entsprechende Gegenstand beweglich ist oder nicht. Ein Objekt der Klasse „Gegenstand“ kann zu einem Verhalten in der Beziehung „wird_benutzt“ stehen, was bedeutet, dass der Gegenstand bei dem Verhalten verwendet wird. Darüber hinaus können Gegenstände auf eine besondere Weise benutzt werden: sie können einer anderen Person beigebracht werden, wobei hierbei „beibringen“ im Sinne von „in den Körper eines anderen einführen“ (vgl. [DT95], Rn. 4 zu §229) zu verstehen ist. Gelegentlich wird im Strafgesetzbuch Bezug auf bestimmte Merkmale von Personen genommen. So sind in §225 („Misshandlung von Schutzbefhohlenen“) der Passage „Wer eine Person unter achtzehn Jahren oder eine ... wehrlose Person“ die Merkmale Alter und Wehrlosigkeit zu entnehmen. Auch spielt gelegentlich das Geschlecht einer Person eine Rolle (§177. Vergewaltigung. „Wer eine Frau ...“). Solche Merkmale lassen sich bequem als Attribut der Klasse Person modellieren (s. komplettes UML-Sachverhalt-Schema). Es gibt aber auch Bezüge auf Personenmerkmale, die so verschiedenartig sind, dass sie nicht einfach als Attribut der Person-Klasse modelliert werden können. So ist im Rahmen der Überprüfung, ob eine Vergiftung erfolgt ist, die „Körperbeschaffenheit“ des Opfers zu berücksichtigen (vgl. [LK99], Rn. 1a zu §224). Diese „Körperbeschaffenheit“ umfasst Merkmale wie Allergie oder Überemfindlichkeit gegen einen bestimmten Stoff und ähnliches. Solche Personenmerkmale, die in unbegrenzter Anzahl einer Person „anhängen“ können, werden durch Instanzen der 42 Eigentlich ist zu erkennen, dass „gefährliches Werkzeug“ ein Oberbegriff von „Waffe“ ist. Dies ist aber – wie später gezeigt wird - nicht ganz exakt. Wenn ein „gefährliches Werkzeug“ aber Oberbegriff von „Waffe“ ist, dann auch ein „Werkzeug“. 50 Klasse „Personenmerkmal“ modelliert. Diese Instanzen haben wieder ein Attribut „bezeichnung“. In diesem Attribut ist jeweils die Spezifikation des Merkmals angegeben (z.B. „Allergie gegen Bienengift“). Außerdem gehört zur Klasse „Personenmerkmal“ das Attribut „inhaber“ vom Typ „Person“, womit der Bezug zu der Person hergestellt wird, welcher das entsprechende Merkmal anhängt. Letztlich existiert noch die abstrakte Klasse „Schutzverhaeltnis“. Wie der Name schon vermuten lässt, handelt es sich hierbei eher um eine Beziehung als um eine Klasse, doch wird ein Schutzverhältnis als Klasse modelliert, da es ein Oberbegriff für verschiedene Arten von Schutzverhältnissen43 ist. Zwar lassen sich in der UML auch Hierarchien von Beziehungen bilden, doch Klassenhierarchien stellen das bekanntere Konzept dar. Ohnehin wird nach der Überführung des konzeptuellen in das logische Schema der Unterschied zwischen den beiden alternativen Modellierungsformen (Klasse oder Beziehung) nicht mehr zu erkennen sein. Ein Objekt der „Schutzverhaeltnis“-Klasse verfügt über zwei Attribute vom Typ Person. Das eine heisst „schutzbefohlener“, das andere „beschuetzer“. Mit dieser Klasse kann dargestellt werden, dass eine Person („schutzbefohlener“) dem Schutze einer anderen Person („beschuetzer“) unterstellt ist. Dies ist etwa der Fall, wenn die Person „beschuetzer“ als Babysitter für die Person „schutzbefohlener“ eingesetzt wurde. Die zu diesem Beispiel gehörende Unterklasse von „Schutzverhaeltnis“ ist „fuersorge_oder_obhut“. Unterklassen der bisher eingeführten Klassen Die bisher eingeführten Klassen werden innerhalb des juristischen Systems teilweise noch untergliedert. Bevor diese Untergliederungen dargestellt werden, soll erläutert werden, welche grundsätzlichen Maßstäbe hierbei angesetzt wurden. Ein Verhalten beispielsweise lässt sich ja sehr fein untergliedern: so könnte es jeweils eine Klasse für verschiedenste Arten von Verhalten wie beispielsweise „singen“, „spazieren gehen“, „treten“ und „schlagen“ geben. Personen könnten in Klassen wie „Schüler“, „Polizist“, „Astronaut“ etc. unterteilt werden. Bei der Entwicklung des konzeptuellen Schemas des juristischen Systems wurde allerdings versucht, einen ganz konsequenten Weg zu gehen: abhängig von den modellierten (Körperverletzungs-)Normen werden nur solche Untergliederungen vorgenommen, welche von rechtlicher Relevanz sein können. Am Beispiel der Unterteilung von Gegenständen wurde diese Vorgehensweise bereits demonstriert. Die Unterteilung von Objekten der Klasse Verhalten ist dennoch problematisch. Da es durchaus von rechtlicher Relevanz sein kann, ob ein Verhalten „singen“ oder „schlagen“ ausgeführt wird, könnte man hier mit Recht Unterklassen wie „schlagen“ und „singen“ einführen. Hiervon wurde aber aus folgenden Gründen abgesehen: 43 - Verhalten-Objekte sind keine Verben, sondern werden lediglich mit Hilfe von Verben „bezeichnet“. Die Namen der Unterklassen müssten nun aber Verben oder zumindest substantivierte Verben sein. Eine Instanz einer Unterklasse wie „Schlagen“ stünde dann für einen konkreten Vorgang, bei welchem eine Person eine andere schlägt. Eine solche Modellierung wirkte sehr gekünstelt. - Außerdem müssten sehr viele Unterklassen eingeführt werden. Je nach vorliegendem Sachverhalt würden diese Klassen zu einem großen Teil ohne konkrete Instanzen sein. Diese Arten sind in §225 aufgelistet, welcher im Anhang abgebildet ist. 51 - Ein anderes Problem ist, dass im Voraus nicht gesagt werden kann, welche Klassen erforderlich sind, da das Spektrum verschiedener Verhaltensarten riesig ist. Allenfalls wäre es möglich, je nach Sachverhalt neue Klassen einzuführen. Aus den oben genannten Gründen, erscheint es angebracht, keine so weit reichende Untergliederung der Klasse „Verhalten“ vorzunehmen. Stattdessen werden im juristischen System Objekte der „Verhalten“-Klasse nicht in erster Linie nach Zugehörigkeit zu einer Unterklasse bewertet, sondern nach ihrer „bezeichnung“. Hierauf wird aber erst in Kapitel 5.5 genauer eingegangen. Als Resultat obiger Ausführungen existiert zu der Klasse „Verhalten“ nicht eine große Anzahl von Unterklassen, sondern lediglich die Unterklasse „Behandlung“44. Diese Klasse ist erforderlich, um körperliche Misshandlungen – eine spezielle Art von Körperverletzungen – zu definieren. „[Eine] körperliche Misshandlung ist eine üble, unangemessene Behandlung, ...“ ([LK99], Rn. 4 zu §223). Eine Behandlung verfügt über die BOOL’schen Attribute „uebel_unang“ und „lebensgef“, welche den Wert ‚ja’ haben, wenn die Behandlung übel und unangemessen beziehungsweise lebensgefährlich für die behandelte Person ist. Grundbedingung für jede Instanz der „Behandlung“-Klasse ist, dass eine Person in „wird_behandelt“-Beziehung zu ihr steht, da eine Behandlung ein Verhalten ist, bei welchem eine Person behandelt wird. Diese behandelte Person stellt den Wert des Attributs „opfer“ dar. Es ist notwendig, das Opfer der Behandlung anzugeben, obwohl die durch ein Verhalten behandelten Personen durch die „wird_behandelt“Beziehung identifizierbar sind. Der Grund hierfür ist, dass durch ein Verhalten grundsätzlich mehrere Personen zugleich behandelt werden können, ein Objekt der Klasse „Behandlung“ aber jeweils nur für die Behandlung einer einzelnen Person steht. An dieser Stelle liegt somit ein Modellierungsproblem vor: Verhalten Verhalten schluessel: 1 bezeichnung: „ärgern“ ... schluessel: 1 bezeichnung: „ärgern“ ... ? Opfer Behandlung Behandlung Behandlung von Lieschen Behandlung von Justus schluessel: 1 opfer: Lieschen schluessel: 1 opfer: Justus schluessel: 1 opfer: Lieschen schluessel: 1 opfer: Justus Abbildung: Modellierungsproblematik - Diskriminator-Metatyp Angenommen, Peter ärgert seine Kinder Lieschen und Jonas. Dann stellt dies ein Verhalten dar. Dieses Verhalten habe den Schlüssel 1 und ist in der Abbildung dargestellt. Gleichzeitig stellt dieses Verhalten zwei verschiedene Behandlungen dar (linke Seite der Abbildung), die 44 Dies ist nicht ganz korrekt ausgedrückt, wie gleich zu sehen sein wird. 52 aber – modellierte man Behandlung als Unterklasse von Verhalten – aufgrund der Vererbung jeweils den selben Schlüssel aber unterschiedliche „opfer“-Attribute hätten, was einen Verstoß gegen die Objektidentität darstellte. Dennoch erscheint es „natürlich“, eine Behandlung als eine spezielle Form von Verhalten anzusehen. Einen Ausweg aus diesem Dilemma eröffnet das Konstrukt des Diskriminator-Metatyps (s. dazu [Oes98], S. 265). Neben dem Spezialisierungspfeil im kompletten Sachverhalt-UMLDiagramm steht „Opfer“. Dies soll bedeuten, dass die spezielle (Unter-)Klasse erst durch das „Opfer“ genau definiert wird. Opfer sei, wer durch ein Verhalten behandelt wird. Im Beispielfall existieren dann die Opfer Lieschen und Jonas45 und somit zwei Unterklassen „Behandlung von Lieschen“ und „Behandlung von Jonas“ (s. rechte Seite der Abbildung). Durch den Diskriminator-Metatyp werden also gewissermaßen mehrere Unterklassen erzeugt. Zum Abschluss dieses Abschnittes sollen nun noch kurz die restlichen Unterklassen der bislang dargestellten Klassen aufgezählt werden. Im Übrigen sei auf das UML-Diagramm verwiesen, welches eingangs dieses Kapitels abgebildet ist. Die Klasse (bzw. die Menge der Klassen) „Behandlung“ kann unterteilt werden in Überfälle, Vernachlässigungen und Misshandlungen, wobei letztgenannte wieder eines Diskriminator-Metatyps bedürfen: ist ein Verhalten kausal für mehrere Personenschäden (s.u.), so stellt jede entsprechende Behandlung in Verbindung mit einem der Schäden eine eigene Misshandlung dar. Die Erfolge lassen sich ebenfalls noch in Unterklassen aufteilen. So gibt es Personenschäden, welche ihrerseits durch die Klassen „Tod“, „Beeintraechtigung“, „Ges_schaden“ (= Schaden an der Gesundheit), „Schmerzen“ und „Schwerer_Schaden“ spezialisiert werden. Beeinträchtigungen werden unterteilt in Beeinträchtigungen des Wohlbefindens oder der Unversehrtheit. Schwere Schäden unterteilen sich in die in §226 genannten Schäden. Alle Personenschäden können neben der „ist_kausal“-Beziehung an einer weiteren Beziehung teilnehmen. Diese Beziehung zwischen jeweils zwei Personenschäden trägt den Namen „ist_folge_von“. Mit ihr kann ausgedrückt werden, dass ein Personenschaden, die Folge eines anderen Personenschadens (der selben Person) ist. Somit kann beispielsweise dargestellt werden, dass eine Person an den Folgen ihrer Verletzungen stirbt. Außer den Personenschäden existieren noch die konkreten Personengefahren („Konkr_Pers_Gef“): löst ein Verhalten beispielsweise Lebensgefahr für ein Opfer aus, so wird dies mit der Beziehung „begruendet“46 dargestellt. Die Spezialisierungsbeziehung zwischen Erfolg und „Konkr_Pers_Gef“ ist im UML-Diagramm gestrichelt dargestellt, weil sie im logischen Entwurf nicht berücksichtigt wurde. Die konkreten Personengefahren unterteilen sich noch einmal in Lebensgefahr, Gefahr für die Gesundheit, Gefahr für die körperliche und Gefahr für die seelische Entwicklung. Gründe für die Schwierigkeiten beim konzeptuellen Entwurf Dies soll als Beschreibung des konzeptuellen Schemas genügen. Wie zu Anfang dieses Kapitels angekündigt, wird dieses Kapitel nun mit dem Versuch beschlossen, Gründe für die mehr oder weniger bereits im Vorausgegangenen angesprochenen Schwierigkeiten bei der Entwicklung eines konzeptuellen Schemas für einen juristischen Anwendungsbereich zu benennen. Das größte Problem ist es, die Konzepte herauszuarbeiten, welche zur Sachverhaltsbeschreibung benötigt werden. Zwar mag in diesem Abschnitt der Eindruck entstanden sein, dass sich diese Konzepte einigermaßen direkt aus den im Gesetz verwendet Begriffen herleiten lassen, dem ist aber häufig nicht so. Ohnehin genügt es nicht, den Gesetzestext alleine zu betrachten. 45 Korrekterweise sollten ihre Schlüssel angegeben werden. Zur besseren Übersicht wird allerdings der jeweilige Name benannt. 46 „begruendet“ ist vergleichbar mit „ist_kausal“ doch bestehen hier in der juristischen Sichtweise kleine Unterschiede, weshalb verschieden Beziehungen erforderlich sind. 53 Wie es bei der bereits betrachteten Kausalitätsproblematik der Fall ist, so kommt es häufig vor, dass um das Gesetz herum verschiedene Theorien erarbeitet wurden, wie mit dem entsprechenden Gesetz umzugehen ist (s. hierzu Kapitel 5.5). Um die Erfahrungen aus diesen Theorien für das juristische System nutzbar zu machen, müssen die Konzepte zur Sachverhaltsdarstellung so gewählt werden, dass sie zu diesen Theorien „passen“. So wurde oben eine körperliche Misshandlung als „üble, unangemessene Behandlung, ...“ definiert. Um diese Definition im juristischen System verwenden zu können, ist es beispielsweise erforderlich, über ein Konzept „Behandlung“ zu verfügen. Die so benötigten Konzepte zur Sachverhaltsdarstellung sind häufig nicht einfach zu handhaben. Dies zeigte sich bereits am Konzept der „Behandlung“. Teilweise ist dieses Problem die Folge davon, dass die juristischen Begriffe, aus denen die Konzepte entwickelt wurden, nicht die Bedeutung haben, die sie zu haben scheinen. Häufig ist es so, dass die natürlicherweise mit ihnen assoziierte Bedeutung in der Regel passt, aber in speziellen Fällen nicht. Ein Beispiel hierfür ist der Begriff des „gefährlichen Werkzeugs“. Eine Körperverletzung ist nach §224 I Nr. 2 dann eine gefährliche Körperverletzung, wenn sie mit einem gefährlichen Werkzeug begangen wurde. „Normalerweise“ müsste man nun davon ausgehen können, dass die Gefährlichkeit eine Eigenschaft des Werkzeuges ist. Dies ist allerdings tatsächlich nicht ganz richtig. Stattdessen gilt ein Werkzeug als gefährlich, wenn die gesamte Situation, in welcher das Werkzeug verwendet wird, durch die Verwendung des Werkzeuges „gefährlich“ wird (näheres in Kapitel 5.5). So kann es in einzelnen Fällen sein, dass nicht einmal ein Messer, welches in der alten Fassung des Strafgesetzbuches noch als Beispiel für gefährliche Werkzeuge ausdrücklich genannt wurde, als gefährliches Werkzeug einzustufen ist. Darüber hinaus operieren die Theorien über die richtige Interpretation von Gesetzen teilweise auf einer sehr abstrakten Ebene. Möchte man diese abstrakte Ebene mit der sprachlichen Ebene verknüpfen, führt dies an den Schnittstellen teilweise zu erheblichen Problemen. Diese Problematik wird sich an einigen in Kapitel 5.5 entwickelten Gesetzes-Modellen zeigen, wo auch die Diskussion über die Formalisierungs-Probleme an verschiedenen Stellen wieder aufgenommen wird. Hiermit ist das Kapitel über den konzeptuellen Entwurf des Sachverhalt-Schemas zu Ende. Wie dieses Schema in ein relationales umgewandelt wird, wird im nun folgenden Kapitel dargestellt. 5.4.2 Logischer Entwurf Die Erläuterung des konzeptuellen Entwurfs erfolgt, indem nacheinander die Umsetzungen der verschiedenen konzeptuellen Entwurfselemente in Relationen beschrieben werden. 5.4.2.1 Beziehungen Beziehungen (mit Grad n) des konzeptuellen Schemas lassen sich mit Hilfe der Objektschlüssel der an der jeweiligen Beziehung beteiligten Objekte folgendermaßen als Relation darstellen: Beziehung ⊆ Schlüssel1 × Schlüssel2 × ... × Schlüsseln Die Objekte werden hierbei durch ihre jeweiligen Schlüsselwerte repräsentiert. Wie bereits erwähnt, verfügt jedes Objekt im konzeptuellen Sachverhalt-Schema über einen „künstlichen“ Schlüssel vom Typ Integer. Darüber hinaus kommen dort nur binäre Beziehungen vor. Somit 54 kann beispielsweise die Kausalitätsbeziehung zwischen Verhalten und Erfolg in Prolog durch eine Menge von Fakten von folgender Form dargestellt werden: ist_kausal(Schluessel_V,Schluessel_E). Schluessel_V und Schluessel_E stehen für den Schlüssel des jeweiligen Verhalten- beziehungsweise Erfolg-Objektes. Insbesondere weil alle Objekt-Schlüssel im juristischen System vom gleichen Typ sind und somit prinzipiell zwei Objekte aus verschiedenen Klassen den gleichen Schlüsselwert haben können, ist es bei der oben beschriebenen Darstellungsart wichtig, genau festzulegen, an welcher Position einer Relation welcher Schlüsselwert zu stehen hat. Jede Beziehung des konzeptuellen Sachverhalt-Schemas wird im juristischen System durch Angabe der entsprechenden Fakten in oben angegebener Form definiert. Eine Ausnahme bildet hier lediglich die abgeleitete Beziehung „wird_beigebracht“, welche durch eine Ableitungsregel definiert wird: wird_beigebracht(Verhalten,Gegenstand):wird_benutzt(Verhalten,Gegenstand), ... Diese Regel besagt, dass jedes Verhalten, welches zu einem bestimmten Gegenstand in der Beziehung „wird_benutzt“ steht und darüber hinaus bestimmte Bedingungen („...“) erfüllt, zu diesem Gegenstand auch in der Beziehung „wird_beigebracht“ steht. 5.4.2.2 Objekt-Klassen Etwas problematischer ist die Darstellung von Objekten mittels Relationen. Insbesondere tritt hierbei die Frage auf, wie Objektattribute behandelt werden sollen (vgl. hierzu [GL96], S. 6 ff.; [Man00], Kap. 3, S. 7). Man unterscheidet zwischen extensionalen und intensionalen Attributen. Im juristischen System sind im Gegensatz zu den extensionalen Attributen die intensionalen oder abgeleiteten Attribute nicht physisch in der Datenbank vorhanden, sondern können mit Hilfe bestimmter Regeln aus anderen Attributen errechnet werden. Extensionale Attribute Die extensionalen Attribute eines Objekts werden im juristischen System durch eine Relation dargestellt, deren erstes Argument der Schlüssel des dazugehörenden Objekts ist. Die weiteren Argumente entsprechen den extensionalen Attributen des Objektes. Der Name der Relation entspricht dem Klassennamen des Objekts. Sei folgendes Objekt gegeben: Person schluessel: 1 nachname: „Müller“ vorname: „Lieschen“ geschlecht: w alter: 12 wehrlos: nein 55 Dieses Objekt würde dann durch folgendes Fakt dargestellt: person(1, „Müller“, „Lieschen“, w, 12, nein). Man beachte, dass bei dieser Darstellungsart die Namen der Attribute nicht auftauchen. Um welches Attribut es sich bei den einzelnen Werten handelt, ergibt sich implizit aus der jeweiligen Position. Eine nicht-positionsabhängige Alternative zu dieser Darstellungsart wäre, die einzelnen Attribute als „Funktion“ des Objektschlüssels aufzufassen. Dies geschieht bei den abgeleiteten Attribute und wird unten näher erläutert. Der Vorteil der hier aufgezeigten Darstellungsart ist aber, dass hiermit pro Objekt nur ein47 Fakt in der Wissensbasis abgespeichert werden muss. Außerdem lässt sich auf diese Weise die Vererbung sehr bequem implementieren, was in Kapitel 5.4.2.3 zu sehen sein wird. Abgeleitete Attribute Wie bereits erwähnt, werden abgeleitete Attribute anders dargestellt. Diese Attribute sind im UML-Diagramm durch einen Schrägstrich („/“) gekennzeichnet, der ihrem Namen vorangestellt ist. Ein abgeleitetes Attribut wird im juristischen System durch eine binäre Relation repräsentiert, deren erstes Argument wieder der Schlüssel des entsprechenden Objektes ist. Das zweite Argument entspricht dem Wert des abgeleiteten Attributs. Der Name der Relation setzt sich zusammen aus dem (abgekürzten) Namen der Klasse, zu welcher das Attribut gehört, und dem Attributnamen. Die Bedeutung der Relation wird über eine Regel bestimmt, welche dazu dient, den Attributwert herzuleiten. Sei folgendes Objekt gegeben: Quadrat schlüssel: 1 seitenlänge: 5 /fläche: { seitenlänge * seitenlänge } /umfang: { seitenlänge * 4 } Das extensionale Attribut („seitenlänge“) würde – wie gewohnt – durch folgendes Fakt dargestellt: quadrat(1, 5). Zur Berechnung der abgeleiteten Attribute stünden folgende Regeln zur Verfügung: quadr_flaeche(Schluessel, Flaeche):quadrat(Schluessel, seitenlaenge), Flaeche is seitenlaenge*seitenlaenge. quadr_umfang(Schluessel, Umfang):quadrat(Schluessel, seitenlaenge), Umfang is seitenlaenge*4. 47 Ausnahme: abgeleitete Attribute 56 Diese Darstellungsart für abgeleitete Attribute ist nicht-positionsabhängig. Stattdessen existiert für jedes Attribut eine eigene „Funktion“, welche den jeweiligen Attributwert errechnet. An dieser Stelle soll noch kurz erläutert werden, warum es von Vorteil ist, für jedes abgeleitete Attribut eine eigene Funktion zu haben. Hierdurch wird nämlich ermöglicht, dass Objekte behandelt werden können, ohne dass der Attributwert berechnet werden muss. Stattdessen wird dieser nur ermittelt, wenn er tatsächlich benötigt wird. Dies ist im juristischen System besonders wichtig, da für die Berechnung der abgeleiteten Attributwerte gelegentlich Fragen an den Anwender gerichtet werden müssen und es selbstverständlich ärgerlich wäre, wenn diese Fragen überflüssig wären. 5.4.2.3 Klassen-Hierarchien Die Klassen des juristischen Systems lassen sich in drei verschiedene Arten unterteilen. - Zum einen gibt es die extensionalen Klassen. Zwar ist dies nicht zwingend erforderlich, doch verfügen diese Klassen im juristischen System nur über extensionale Attribute. - Darüber hinaus existieren im juristischen System Klassen, welche nur den Zweck haben, einzelne Klassen zusammenzufassen. Dies sind die in Kapitel 2.1.7.1 beschriebenen abstrakten Klassen. Spezialisierungs-Beziehungen zwischen abstrakten Klassen und ihren Unterklassen werden im juristischen System durch Regeln von folgender Form realisiert: abstr_klasse(Schluessel, Attr_1, ..., Attr_n):klasse(Schluessel, Attr_1, ..., Attr_n, Attr_n+1, ...). Auf diese Weise verfügt die Klasse „klasse“ über alle Attribute ihrer Oberklasse „abstr_klasse“ und eventuell über weitere Attribute („Attr_n+1“, ...). - Letztlich gibt es Klassen, deren jeweilige Population –also die Menge ihrer Instanzen– automatisch berechnet wird. Diese abgeleiteten Klassen werden im UML-Diagramm durch einen Schrägstrich („/“) gekennzeichnet, der ihrem Namen vorangestellt ist. Die abgeleiteten Klassen sind im Prinzip Teilmengen ihrer Oberklassen, verfügen teilweise allerdings noch über weitere abgeleitete Attribute. Diese Attribute sind wie oben beschrieben durch besondere „Funktionen“ dargestellt. Die abgeleitete Klasse ergibt sich aus einer Populationsregel von folgender Struktur. abgel_klasse(Schluessel, Attr_1, ..., Attr_n):oberklasse(Schluessel, Attr_1, ..., Attr_n), ... . Die letzte Zeile der Populationsregel („...“) steht für beliebige Bedingungen, welche gelten müssen, damit eine Objekt Element der abgeleiteten Klasse ist. So könnte man beispielsweise eine Klasse „Quadrat_groß“ als Unterklasse von „Quadrat“ einführen, in welcher nur die Quadrate enthalten sind, die eine Fläche haben, die mindestens 20 beträgt: quadrat_gross(Schluessel, Seitenlaenge):quadrat(Schluessel, Seitenlaenge), quadr_flaeche(Schluessel, Flaeche), Flaeche >= 20. 57 An diesem Beispiel erkennt man auch, wie abgeleitete Attribute vererbt werden. „Quadrat_groß“ ist ja Unterklasse von „Quadrat“. Eine „Funktion“ mit Namen „quadrat_gross_flaeche“ existiert nicht, stattdessen wird über die Funktion der Oberklasse auf dieses Attribut zugegriffen. 5.4.2.4 Methoden von Objekten Im UML-Diagramm ist zu erkennen, dass einige Klassen über Methoden verfügen. Diese Methoden berechnen jeweils aus Merkmalen eines Objekts eine ausführliche Beschreibung dieses Objektes. Nach dieser Beschreibung können einzelne Objekte später (juristisch) klassifiziert werden. Eine ausführliche Beschreibung eines Verhalten-Objektes besteht beispielsweise nicht nur aus der Objekt-Bezeichnung sondern enthält zusätzlich die Informationen, welche Gegenstände bei dem Verhalten benutzt wurden (z.B. „schlagen mit Knüppel“). Die Namen der Methoden sind so gewählt, dass sie für jedes Objekt eindeutig sind, was auch erforderlich ist, da die Methoden – ähnlich wie die abgeleiteten Attribute – durch Relationen realisiert werden, welche „Funktionen“ darstellen. Anstelle der Methoden hätten diese Funktionen auch durch abgeleitete Attribute dargestellt werden können. Davon wurde aber abgesehen, da diese Funktionen, welche nun durch Methoden realisiert wurden, lediglich zur Textausgabe benötigt werden und somit eigentlich keine Objektattribute im strengen Sinne mehr darstellen. 5.4.2.5 Diskriminator-Metatyp Bevor zum Abschluss des Kapitels über den logischen Sachverhalt-Entwurf noch auf ein ausführliches Beispiel verwiesen wird, soll nun noch dargestellt werden, auf welche Weise mit Diskriminator-Metatypen umgegangen wird. Dies soll am Beispiel der „Behandlung“Klasse(n) geschehen: behandlung(Schluessel,Bezeichnung,Opfer):verhalten(Schluessel,Bezeichnung), wird_behandelt(Schluessel,Opfer). Es erscheint fast so, als wäre die Behandlung eine ganz „normale“ Spezialisierung von Verhalten. Allerdings wird scheinbar ein neues Attribut „Opfer“ eingefügt, welches aus der Beziehung „wird_behandelt“ gewonnen wird. Da ein Verhalten zu mehreren Personen in einer solchen Beziehung stehen kann, ist es durchaus möglich, dass Behandlungen mit dem selben Schlüssel unterschiedliche Attributwerte für „Opfer“ besitzen. Dieser scheinbare Widerspruch wird allerdings dadurch aufgelöst, dass Opfer nicht als Attribut, sondern als KlassenUnterscheidungsmerkmal aufgefasst wird. Somit gibt es im Allgemeinen also verschiedene Klassen „Behandlung“, die beispielsweise als „Behandlung_von_Lieschen“, „Behandlung_von_Jonas“ usw. bezeichnet werden könnten. 58 5.4.2.6 Beispiel-Sachverhalt Im Anhang ist ein ausführliches Beispiel zu sehen, welches den gleich folgenden Sachverhalt darstellt, durch welchen ein Gefühl dafür vermittelt werden soll, wie die vom juristischen System bearbeitbaren Fälle aussehen: Peter Müller schlägt die in seinem Haus wohnende Lieschen Müller, welche besonders empfindlich ist, und fügt ihr so leichte Blessuren zu. Anschließend tritt er sie mit seinem schweren Arbeitsschuh, wodurch sie innere Verletzungen und erhebliche, länger andauernde Schmerzen erleidet. Durch die inneren Verletzungen schwebte sie vorübergehend in Lebensgefahr. Berta B. sticht mit einer Gabel, einem Löffel, einem Messer und einem Messerchen Friedhelm F., was diesem eine tiefe Wunde einbringt. Daraufhin schlägt Friedhelm F. Berta B., welche seiner Obhut überlassen wurde, mit einer Eisenstange so stark, dass diese einen Schädelbruch und erhebliche, länger andauernde Schmerzen erleidet. Am Schädelbruch stirbt sie später. Im gemeinsamen Haushalt von Jürgen und Gerda Schmidt leben Willy und Karsten Schmidt zur Untermiete. Eines Tages kommt es zu einem handfesten Streit. Zunächst schlägt Gerda Schmidt Karsten Schmidt, welcher zusammen mit seiner Freundin Julia J. in Gerdas Betrieb beschäftigt sind, mit einer aufgerollten Zeitung. Julia J. berührt den so gereizten Karsten Schmidt mit einem Messerchen, woraufhin dieser zusammen mit Willy Schmidt Julia J. mit Salzsäure beschüttet und ihr so Verätzungen im Gesicht zufügt, welche bleibende Narben verursachen. Willy Schmidt wird von dem dazwischenspringenden Jürgen Schmidt gegen einen Kachelofen gestoßen, wodurch er sich eine Rippe bricht. 59 5.5 Formalisierung juristischer Normen Um mit Sachverhalten wie dem oben beschriebenen umgehen zu können, ist neben der Modellierung des Sachverhalts auch eine Formalisierung der Gesetze erforderlich, welche in diesem Kapitel beschrieben werden soll. In Kapitel 5.2 wurde dargestellt, warum die Körperverletzungsdelikte modelliert werden sollen. Einige Gesetze aus dem, diese Delikte enthaltenden, 17. Abschnitt des Strafgesetzbuches wurden aus verschiedenen Gründen nicht berücksichtigt. Diese nicht berücksichtigten Gesetze seien zunächst benannt: - § 228. Einwilligung. Dieser Paragraph besagt, dass ein Körperverletzungsdelikt nicht rechtswidrig ist, wenn das Opfer gesetzeswirksam in die Tat eingewilligt hat. Da Rechtswidrigkeit in der eingeschränkten Prüfung des juristischen Systems (vgl. Kapitel 5.3) nicht geprüft wird, wurde dieser Paragraph nicht formalisiert. - § 230. Strafantrag. Dieser Paragraph regelt, welche Anträge bei welchen Delikten gestellt werden müssen, damit diese verfolgt werden. Hier gilt ähnliches wie für §228. Das juristische System überprüft nur die objektive Tatbestandsmäßigkeit und somit auch nicht, ob erforderliche Anträge richtig gestellt wurden. - § 231. Beteiligung an einer Schlägerei. Dieses Gesetz stellt die Beteiligung an einer Schlägerei unter Strafe. Schlägereien können im juristischen System nicht dargestellt werden. Für den juristisch komplexen Begriff der Schlägerei wären zu viele neue Sachverhalts-Konzepte erforderlich gewesen. Daher wurde der kompletten §231 im juristischen System nicht berücksichtigt. Somit bleiben folgende Gesetze, welche vom System behandelt werden können sollen: - § 223. Körperverletzung. (s. Kapitel 5.5.3.1) § 224. Gefährliche Körperverletzung. (s. Kapitel 5.5.3.2) § 225. Mißhandlung von Schutzbefohlenen. § 226. Schwere Körperverletzung. (s. Kapitel 5.5.3.3) § 227. Körperverletzung mit Todesfolge. § 229. Fahrlässige Körperverletzung. (s. Kapitel5.5.3.4) Der komplette Text der Körperverletzungsdelikte findet sich im Anhang. Bevor in Kapitel 5.5.3 auf die formalen Darstellungen einzelner Gesetze eingegangen wird, soll zunächst erläutert werden, wie ein beliebiges Gesetz prinzipiell in Regel-Form gebracht wird (Kapitel 5.5.1 und 5.5.2). 60 5.5.1 Prinzipieller Aufbau von Gesetz-modellierenden Regeln In der Einleitung und im Exkurs aus Kapitel 4 wurde auf die Ähnlichkeiten von Regeln und Gesetzen hingewiesen. Viele Gesetze sind so beschaffen, dass sie Tatbestandsmerkmale und eine Rechtsfolge benennen. Wenn eine bestimmte Menge von Tatbestandsmerkmalen konkret (d.h. im Sachverhalt) vorliegt, dann gelte die Rechtsfolge wie beispielsweise eine bestimmte Strafe. Dies lässt sich folgendermaßen in einer Prolog-Regel ausdrücken: rechtsfolge(SV_Ausschnitt):tatbestandsmerkmal_1(SV_Ausschnitt_1), tatbestandsmerkmal_2(SV_Ausschnitt_2), ... tatbestandsmerkmal_n(SV_Ausschnitt_n). Diese Regel besagt, dass ein Ausschnitt aus einem Sachverhalt „SV_Ausschnitt“ (z.B. eine bestimmte Tat) die Rechtsfolge „rechtsfolge“ nach sich zieht, wenn die Tatbestandsmerkmale 1 bis n in nicht zwingenderweise untereinander disjunkten Sachverhaltsausschnitten 1 bis n verwirklicht sind. Der Sachverhaltsausschnitt „SV_Ausschnitt“ setzt sich hierbei aus Teilen der anderen Sachverhaltsausschnitte zusammen. Das folgende Diebstahl-Beispiel (vgl. Kapitel 2.2.1) soll dazu dienen, diese etwas verwirrende Erläuterung zu verdeutlichen: freiheitsstrafe(Handlung):wegnahme_von(Handlung, Sache), fremd(Sache), beweglich(Sache), sache(Sache), vorsaetzlich(Handlung), rechtswidrig(Handlung), schuldhaft(Handlung). Eine Handlung „Handlung“ zieht die Rechtsfolge „freiheitsstrafe“ nach sich, wenn eine fremde, bewegliche Sache durch diese Handlung weggenommen wurde und dies vorsätzlich, rechtswidrig und schuldhaft geschah. Im juristischen System werden Rechtsfolgen allerdings nicht berücksichtigt. Dies liegt daran, dass nicht bestraft werden kann, bevor nicht eine komplette Prüfung vorgenommen wurde, welche im juristischen System nicht erfolgt. Stattdessen wird nur geprüft, ob bestimmte objektive Tatbestände verwirklicht wurden (s. Kapitel 5.3). Dies kann allerdings genauso durch eine Regel ausgedrückt werden, wie wieder am Diebstahl-Beispiel gezeigt werden kann: diebstahl_obj_tb(Handlung):wegnahme_von(Handlung, Sache), fremd(Sache), beweglich(Sache), sache(Sache). Diese Regel besagt, dass der objektive Tatbestand des Diebstahls erfüllt ist, wenn eine „Sache“ weggenommen wird, die fremd und beweglich (und eine Sache) ist. Da im juristischen System nur objektive Tatbestände geprüft werden, wird der Zusatz „_obj_tb“ der Einfachheit halber bei der Gesetzesdarstellung in Zukunft weggelassen. Die einzelnen Tatbestandsmerkmale „Wegnahme einer Sache“, „Fremdheit der Sache“ etc. können wiederum durch Regeln genauer definiert werden, wie am Beispiel von „wegnahme_von“ zu sehen ist: 61 wegnahme_von(Handlung, Sache):bruch(Gewahrsam_Alt, Handlung, Sache), begruendung(Gewahrsam, Handlung, Sache), fremd_Gewahrsam(Gewahrsam_Alt). Die in dieser Regel eingeführten (Unter-)Tatbestandsmerkmale können wieder und wieder durch Regeln definiert werden. Auf diese Weise entsteht eine baumartige Regelstruktur. Die Wurzel dieser Struktur ist im Beispiel der „diebstahl“; die Blätter entsprechen Konzepten der Sachverhaltsdarstellung. So könnten zur Beschreibung von Diebstahl-Sachverhalten beispielsweise die Konzepte „fremd“, „beweglich“ und „sache“ zur Verfügung stehen. Diese Begriffe würden dann nicht weiter durch Regeln beschrieben. Erwähnt werden sollte auch noch, dass für einzelne Tatbestandsmerkmale durchaus Definitionen existieren können, welche Alternativen enthalten. So ist eine „gefährliche Körperverletzung“ beispielsweise eine Körperverletzung welche mit einer Waffe (§223 I Nr. 2 StGB) oder mittels eines hinterlistigen Überfalls (§223 I Nr. 3 StGB) verübt wurde. Solche Definitionen lassen sich über AND-OR-Graphen veranschaulichen. In Regel-Schreibweise würde eine Definition, in welcher verschiedene Alternativen vorkommen, in etwa folgendermaßen aussehen: gef_koerperverletzung(...):koerperverletzung(...), ... waffe(...). gef_koerperverletzung(...):koerperverletzung(...), ... ueberfall(...). Dies soll zur Beschreibung des prinzipiellen Aufbaus von Prolog-Modellen juristischer Normen genügen. Im fogenden Kapitel wird genauer erläutert, wie diese Prolog-Regeln aus dem Gesetzestext entwickelt werden. 5.5.2 Allgemeines über die Formalisierung von Gesetzen Wie bereits in Kapitel 5.4.1 im Rahmen der Erörterung der Kausalitätsproblematik angedeutet wurde, so können die oben dargestellten „Regelbäume“ nicht allein aus dem Gesetzestext gewonnen werden. Der Grund hierfür ist, dass in den Gesetzestexten häufig Formulierungen enthalten sind, welche sich nicht selbst erklären. Zwar gibt es Tatbestandsmerkmale, welche auch Nicht-Juristen sofort verstehen; hierzu zählen beispielsweise Begriffe wie „eine andere Person“ in §223 StGB. Häufiger ist jedoch, dass im Gesetzestext Formulierungen vorkommen, welche von Nicht-Juristen nicht verstanden werden. Manchmal sind dies Begriffe, welche zwar verständlich erscheinen, wo aber dennoch nicht genau klar ist, was gemeint ist. Ein Beispiel hierfür ist „wichtiges Glied des Körpers“ in §226 I Nr. 2 StGB. Nicht-Juristen werden hier in der Regel nicht mit Sicherheit sagen können, ob beispielsweise ein Finger als „wichtig“ oder ein Organ als „Glied“ zu betrachten ist. Solche Formulierungen sind teilweise durch das Gesetz erklärt. So wird beispielsweise in §12 StGB festgelegt, was ein „Vergehen“ und was ein „Verbrechen“ ist. §11 StGB enthält sogar gleich eine ganze Reihe von Begriffsdefinitionen wie „Angehöriger (§11 Nr. 1 StGB) oder „Amtsträger“ (§11 Nr. 2 StGB). Solche expliziten Begriffsdefinitionen bilden allerdings eher die Ausnahme. Wesentlich häufiger kommt es vor, dass unklare Formulierungen durch Rechtssprechung und Rechtslehre klargestellt wurden. So wurde häufig im Laufe der Zeit ein Konsens bezüglich der Bedeutung gewisser fraglicher Formulierungen erarbeitet. 62 Möchte man nun ein Gesetz durch Regeln modellieren, so sind diese von Rechtsprechung und Rechtslehre erarbeiteten Gesetzesinterpretationen genauso wie die Gesetzestexte selbst zu beachten. Diese Interpretationen finden sich in Urteilen von Gerichten, in juristischen Lehrbüchern oder Kommentaren zu den Gesetzen. Ein kurzes Beispiel: aus §223 StGB lässt sich entnehmen, dass es einer Körperverletzung gleich kommt, wenn man eine andere Person „an der Gesundheit schädigt“. Was damit gemeint ist, steht beispielsweise in dem Gesetzeskommentar [LK99] (S. 1063 f., Rn. 5 zu §223): „Gesundheitsschädigung ist jedes Hervorrufen oder Steigern eines vom normalen Zustand der körperlichen Funktionen nachteilig abweichenden (pathologischen) Zustandes, gleichgültig, auf welche Art und Weise er verursacht wird und ob das Opfer dabei Schmerz empfindet...“ Um Gesetze also formalisieren zu können, ist neben der Kenntnis des Gesetzestexts auch ausführliches Wissen über die darum entwickelten Theorien erforderlich. An dieser Stelle soll nicht verschwiegen werden, dass sich Theorien zur „richtigen“ Interpretation von Gesetzen teilweise widersprechen und somit nicht ohne weiteres eindeutige Regeln erarbeitet werden können. Dies war schon im Rahmen der Kausalitätsproblematik zu beobachten. Nicht selten existieren zu einem Zeitpunkt verschiedene Ansichten darüber, wie eine Gesetzespassage zu interpretieren ist. Im Rahmen dieses Kapitels über die Formalisierung von Gesetzen wird allerdings die einschränkende Annahme gemacht, dass stets ein Konsens über die „richtige“ Interpretation existiert. Diese Einschränkung wird in Kapitel 6.8.2 bei Erläuterung der Entscheidungskomponente des juristischen Systems wieder zurückgenommen. 5.5.3 Formalisierung einzelner Gesetze In diesem Kapitel soll nun an einigen Beispielen gezeigt werden, wie die Formalisierung der Gesetze, welche dem juristischen System als Grundlage dienen, erfolgt ist. Hierbei soll unter anderem gezeigt werden, dass die einzelnen Tatbestandsmerkmale, welche zur Erstellung von Regeln benötigt werden, zwar durch den Gesetzestext beziehungsweise durch Interpretationen des Gesetzestextes motiviert sind, dass aber prinzipiell verschiedene Möglichkeiten bestehen, ein Gesetz mittels Tatbestandsmerkmalen zu beschreiben. 5.5.3.1 Körperverletzung (§223) Begonnen werden soll mit dem ersten Paragraphen des 17. Abschnittes des Strafgesetzbuches: §223 StGB. § 223. Körperverletzung. (1) Wer eine andere Person körperlich mißhandelt oder an der Gesundheit schädigt, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. (2) Der Versuch ist strafbar. Wie in Kapitel 4 beschrieben wurde, existieren zur Beschreibung von Sachverhalten unter anderem die Objekte Person, Verhalten und Erfolg. Da im Rahmen einer Subsumtion Sachverhalt und Norm zur Deckung gebracht werden sollen, müssen die Regeln so geschaffen sein, dass sie an den Sachverhalt – also die Objekte, durch welchen dieser beschrieben wird – anknüpfen. Das Wort „Wer“ in §223 steht für eine Person, ebenso die Umschreibung „eine andere Person“. Durch „andere“ wird festgelegt, dass es sich hierbei um verschiedene Personen handeln 63 muss. Darüber hinaus ist die Körperverletzung ein Erfolgsdelikt, weswegen zur Beschreibung von Körperverletzungen unbedingt ein „Erfolg“ benötigt wird. In §223 sind zwei Alternativen genannt, wann eine Körperverletzung vorliegt. Daher lassen sich folgende Regeln aufstellen: koerperverletzung(Taeter, Verhalten, Erfolg, Opfer):verschieden(Taeter, Opfer), koerperl_missh(Taeter, Verhalten, Erfolg, Opfer). koerperverletzung(Taeter, Verhalten, Erfolg, Opfer):verschieden(Taeter, Opfer), ges_schaedigung(Taeter, Verhalten, Erfolg, Opfer). Hiernach liegt also eine Körperverletzung vor, wenn eine körperliche Misshandlung oder eine Gesundheitsschädigung erfolgt ist. Körperliche Misshandlung und Gesundheitsschädigung werden bei dieser Darstellung jeweils nicht als Sonderform eines Verhaltens aufgefasst, sondern als Deliktart wie etwa „Körperverletzung“. Diese Modellierung ist durchaus nicht zwingend. Es wurde lediglich auf diese Weise modelliert, um für die beiden Gesetzesalternativen Entsprechungen zur Verfügung zu haben. Dies ermöglicht es später, gezielt nach diesen Alternativen zu fragen. In diesem Zusammenhang sollte folgendes angemerkt werden: Juristische Begriffe wie „Körperverletzung“, „körperliche Misshandlung“ und „Gesundheitsschädigung“ können ihrem Wortlaut nach auf verschiedene Weisen verstanden werden. So kann zum einen das spezielle Delikt gemeint sein. Auf der anderen Seite kann hiermit aber auch ein Erfolg (die spezielle Verletzung) oder ein Verhalten (das Zufügen der Verletzung) gemeint sein. In der Rechtswissenschaft werden diese Begriffe auf alle verschiedenen Arten gebraucht, doch ist es für eine Modellierung wichtig, die verschiedenen Bedeutungen auseinanderzuhalten. 5.5.3.1.1 Körperliche Misshandlung (§223 I, 1. Alt.) Die oben aufgestellten Regeln wurden mehr oder weniger direkt aus dem Gesetzestext abgeleitet. Anders sieht dies aus, wenn die beiden Alternativen „körperliche Misshandlung“ und „Gesundheitsschädigung“ modelliert werden sollen. Eine Erläuterung dieser Begriffe sucht man im Gesetzestext vergebens. Stattdessen finden sich in den verschiedenen Gesetzeskommentaren Definitionen wie die folgende für „körperliche Misshandlung“ (s. [DT95], §223, Rn. 3; [LK99], §223, Rn. 4; vgl. außerdem BGH 14, 269; Bay NJW 70, 769): „Eine körperliche Misshandlung ist eine üble, unangemessene Behandlung, durch die das körperliche Wohlbefinden nicht nur unerheblich beeinträchtigt wird.“ Um diesen Satz zu modellieren, kann nun das Sachverhalt-Konzept „Misshandlung“ (s. UML-Sachverhalt-Diagramm) verwendet werden. Eine Misshandlung ist eine Spezialisierung einer Behandlung, welche Verhalten spezialisiert. Eine Misshandlung verfügt daher neben dem Schlüsselattribut und der Beschreibung über die abgeleiteten bool’schen Attribute namens „uebel_unang“, „lebensgef“ beziehungsweise „roh“. Diese Attribute sind durch eigene Relationen realisiert. Somit wäre die Relation „misshandlung“ binär (wegen der Attribute „schluessel“ und „beschr“), würden nicht durch die Diskriminator-Metatypen zwei weitere Parameter (Opfer und Erfolg) erforderlich. Außerdem taucht in obigem Satz die Formulierung „körperliches Wohlbefinden“ auf. Körperliches Wohlbefinden kann mit den zur Verfügung stehenden Sachverhalts-Konzepten nicht direkt ausgedrückt werden. Es wurde davon abgesehen, hierfür ein zusätzliches Konzept be64 reit zu stellen, da sich der obige Satz derart umformulieren lässt, dass dieses Konzept nicht mehr benötigt wird: „Eine körperliche Misshandlung ist eine üble, unangemessene Behandlung, durch die eine nicht unerhebliche Beeinträchtigung des körperlichen Wohlbefindens erfolgt.“ Somit braucht das Wohlbefinden an sich nicht mehr betrachtet zu werden. Es interessiert nur noch, ob eine „nicht unerhebliche Beeinträchtigung des körperlichen Wohlbefindens“ vorliegt. Hierzu dient das spezielle Personenschaden-Objekt namens „b_wohlbef“, welches über die abgeleiteten bool’schen Attribute „koerperlich“ und „unerheblich“ verfügt. Für die Regel zu „körperlicher Misshandlung“ ergibt sich damit: koerperl_missh(Taeter,Verhalten,Erfolg,Opfer):misshandlung(Verhalten,_,Opfer,Erfolg), beh_uebel_unang(Verhalten,"ja"), ist_kausal(Verhalten,Erfolg), b_wohlbef(Erfolg, Bez, Opfer), beeintr_koerperlich(Erfolg,"ja"), fuehrt_aus(Verhalten,Taeter), wird_behandelt(Verhalten,Opfer). Eine körperliche Misshandlung liegt damit nach dieser Regel vor, wenn eine Misshandlung von „Opfer“ mit dem Resultat „Erfolg“ gegeben ist. Zusätzlich dazu muss die Behandlung (jede Misshandlung ist auch eine Behandlung) übel und unangemessen sein. Der durch die Misshandlung verursachte („ist_kausal“) Erfolg muss eine Beeinträchtigung des Wohlbefindens darstellen, wobei diese körperlich zu sein hat (also nicht bloß seelisch). Um den jeweiligen Bezug zwischen Täter und Verhalten beziehungsweise zwischen Opfer und Verhalten zu garantieren, sind „fuehrt_aus/2“ und „wird_behandelt/2“ erforderlich. An obiger Regel ist zu erkennen, dass „uebel_unang/2“ nur ein einzelnes Attribut darstellt, obwohl es naheliegend erscheint, zwei verschiedene Attribute für „übel“ und „unangemessen“ einzuführen. Hiervon wurde abgesehen, da die beiden Begriffe im Zusammenhang mit Behandlungen stets als Einheit begriffen werden. So wird bei einer Behandlung, welche (beispielsweise durch die Rechtsprechung) als nicht „übel und unangemessen“ eingestuft wird, im Allgemeinen nicht aufgeführt, ob die Behandlung nicht übel oder nicht unangemessen (oder weder übel noch unangemessen) war. An dieser Stelle soll nun – stellvertretend für andere abgeleitete Klassen – gezeigt werden, wie die Population der abgeleiteten Klasse „Misshandlung“ ermittelt wird. Dies geschieht durch folgende Regel: misshandlung(Verhalten,VerhBeschr,Opfer,Erfolg):behandlung(Verhalten,VerhBeschr,Opfer), ist_kausal(Verhalten,Erfolg), beeintraechtigung(Erfolg,_,Opfer), beeintr_unerheblich(Erfolg,"nein"). Jede Behandlung, für welche zusätzlich folgendes gilt, ist eine Misshandlung: a) durch die Behandlung wird ein Erfolg verursacht, welcher b) eine Beeinträchtigung des Opfers darstellt und c) nicht unerheblich ist. 65 Wie abgeleitete Attribute (z.B. „beeintr_unerheblich“) ermittelt werden, wird in Kapitel 6.8.2 gezeigt. 5.5.3.1.2 Gesundheitsschädigung (§223 I, 2. Alt.) Wie die „Gesundheitsschädigung“ modelliert wird, soll an dieser Stelle nicht so ausführlich dargestellt werden, da das Prinzip ähnlich ist wie oben. Eine Gesundheitsschädigung wird folgendermaßen definiert (z.B. [LK99], §223, Rn. 5): „[Eine] Gesundheitsschädigung ist jedes Hervorrufen oder Steigern eines vom normalen Zustand der körperlichen Funktionen nachteilig abweichenden (pathologischen) Zustandes, gleichgültig, auf welche Art und Weise er verursacht wird und ob das Opfer dabei Schmerz empfindet.“ Die dazugehörige Regeldarstellung hat folgendes Aussehen: ges_schaedigung(Taeter,Verhalten,Erfolg,Opfer):fuehrt_aus(Verhalten,Taeter), verhalten(Verhalten,_VerhBeschr), wird_behandelt(Verhalten,Opfer), ist_kausal(Verhalten,Erfolg), ges_schaden(Erfolg,_ErfBeschr,Opfer). Die implizite Angabe von Sachverhaltsmerkmalen An dieser Stelle sei auf ein wichtiges Modellierungsproblem hingewiesen. Genau wie bei der körperlichen Misshandlung die Existenz einer Beeinträchtigung des Wohlbefindens gefordert wurde, so wird auch bei der Gesundheitsschädigung verlangt, dass ein Erfolg vorliegt. Dieser Erfolg ist in diesem Fall der Gesundheitsschaden, welcher in obiger Formulierung als „abweichender Zustand“ umschrieben wurde. Die Notwendigkeit der Existenz eines Erfolges folgt schon allein aus der Tatsache, dass es sich bei der Körperverletzung um ein Erfolgsdelikt handelt. Bei der Eingabe von Sachverhalten (vgl. Kapitel 6.5.2.1) kann es nun zu folgender problematischen Situation kommen. Der Anwender gibt ein, dass eine Person einer anderen eine schallende Ohrfeige gibt und glaubt, er hätte damit den Sachverhalt vollständig beschrieben. Das System kann aber in diesem Fall keine Körperverletzung beweisen, da ihm der dazu nötige Erfolg fehlt. Korrekterweise hätte der Anwender angeben müssen, dass durch die Ohrfeige eine Beeinträchtigung des körperlichen Wohlbefindens verursacht wurde. Ähnliche Probleme treten auch an anderen Stellen auf. So glaubt möglicherweise ein Anwender, welcher dem System mitteilt, dass eine Person ein Verhalten „vergiften“ ausführt, dass er hierdurch beschrieben hat, dass dem Opfer Gift „beigebracht“ wurde. Zu einem ähnlichen Problem könnte beispielsweise auch der Begriff „erschießen“ führen ... Das Problem hierbei ist jeweils, dass in solchen Formulierungen gewisse Sachverhaltsmerkmale implizit enthalten sind, diese aber vom System in expliziter Form gefordert werden. Dieses Problem wurde im Rahmen dieser Arbeit nicht gelöst. Somit hat der Anwender bei der Eingabe von Sachverhalten selbst darauf zu achten, dass er diese vollständig (in expliziter Form) beschreibt. 66 5.5.3.2 Gefährliche Körperverletzung (§224) Die gefährliche Körperverletzung (§224) stellt eine sogenannte qualifizierte Körperverletzung dar. Hierbei handelt es sich um eine Körperverletzung, welche aber aufgrund besonders gefährlicher Art der Tatausführung mit einem höheren Strafmaß bewehrt ist. In diesem Abschnitt soll beispielhaft die Umsetzung der 2. Alternative gezeigt werden: § 224. Gefährliche Körperverletzung. (1) Wer die Körperverletzung 1. mittels einer Waffe oder eines anderen gefährlichen Werkzeugs, 2. mittels eines hinterlistigen Überfalls, 3. mit einem anderen Beteiligten gemeinschaftlich oder 4. mittels einer das Leben gefährdenden Behandlung begeht, wird mit Freiheitsstrafe von sechs Monaten bis zu zehn Jahren, in minder schweren Fällen mit Freiheitsstrafe von drei Monaten bis zu fünf Jahren bestraft. (2) Der Versuch ist strafbar. Die verschiedenen Alternativen (1.-4.) stellen allesamt gefährliche Körperverletzungen dar: gefaehrliche_kv(Taeter,Verhalten,Erfolg,Opfer):gkv_gs_stoff(Taeter,Verhalten,Erfolg,Opfer,_Gs_Stoff). gefaehrliche_kv(Taeter,Verhalten,Erfolg,Opfer):gkv_gef_werkzeug(Taeter,Verhalten,Erfolg,Opfer,_Werkzeug). gefaehrliche_kv(Taeter,Verhalten,Erfolg,Opfer):gkv_ueberfall(Taeter,Verhalten,Erfolg,Opfer). gefaehrliche_kv(Taeter,Verhalten,Erfolg,Opfer):gkv_gemeinsch(Taeter,Verhalten,Erfolg,Opfer). gefaehrliche_kv(Taeter,Verhalten,Erfolg,Opfer):gkv_lebensgef(Taeter,Verhalten,Erfolg,Opfer). In diesem Abschnitt soll lediglich die 2. Alternative etwas genauer betrachtet werden. Wie bereits in Kapitel 5.4.1 angesprochen wurde, ist „gefährlich“ keine reine Werkzeugeigenschaft, auch wenn der Wortlaut des Gesetzes dies vermuten lässt. Stattdessen gilt (s. [LK99], §224, Rn. 5): „Gefährlich ist ein Werkzeug, das nach objektiver Beschaffenheit und nach Art der Benutzung im konkreten Fall erhebliche Verletzungen herbeizuführen geeignet ist.“ Hierbei sind Eigenschaften des Opfers und die der Art der Verwendung von Bedeutung: 67 - Wird eine Person mit einer starken Überempfindlichkeit gegen einen bestimmten Stoff, ein solcher Stoff verabreicht, so ist dieser Stoff im konkreten Fall gefährlich. - Eine Schere, welche dazu verwendet wird, einen Zopf abzuschneiden, ist kein gefährliches Werkzeug (s. [DT95], §223a, Rn. 2). Dies sei folgendermaßen modelliert: gkv_gef_werkzeug(Taeter,Verhalten,Erfolg,Opfer,Werkzeug):koerperverletzung(Taeter,Verhalten,Erfolg,Opfer), wird_benutzt(Verhalten,Werkzeug), werkzeug(Werkzeug,WerkzeugBez,"ja"), kv_ist_iVm_werkzeug_gefaehrlich(Verhalten,Werkzeug,Opfer). Eine Körperverletzung ist demnach eine gefährliche, wenn ein Werkzeug verwendet wird, welches in Verbindung mit dem Verhalten und dem Opfer (bzw. bestimmten OpferMerkmalen) zu einem gefährlichen Werkzeug wird. Dies sei zunächst etwas unelegant mit Hilfe des Prädikats „kv_ist_iVm_werkzeug_gefaehrlich/3“ dargestellt. Die genaue Modellierung unterscheidet sich an dieser Stelle von der oben abgebildeten, kann aber erst nach Erläuterung der Entscheidungskomponente (s. Kapitel 6.8.2) sinnvoll erklärt werden. 5.5.3.3 Schwere Körperverletzung (§226) Eine genaue Darstellung der Modellierung schwerer Körperverletzungsdelikte soll an dieser Stelle nicht erfolgen, da sie sich nur in einem Punkt wesentlich von den bisherig präsentierten Modellen unterscheidet. § 226. Schwere Körperverletzung. (1) Hat die Körperverletzung zur Folge, daß die verletzte Person 1. das Sehvermögen auf einem Auge oder beiden Augen, das Gehör, das Sprechvermögen oder die Fortpflanzungsfähigkeit verliert, 2. ein wichtiges Glied des Körpers verliert oder dauernd nicht mehr gebrauchen kann oder 3. in erheblicher Weise dauernd entstellt wird oder in Siechtum, Lähmung oder geistige Krankheit oder Behinderung verfällt, so ist die Strafe Freiheitsstrafe von einem Jahr bis zu zehn Jahren. (2) Verursacht der Täter eine der in Absatz 1 bezeichneten Folgen absichtlich oder wissentlich, so ist die Strafe Freiheitsstrafe nicht unter drei Jahren. (3) In minder schweren Fällen des Absatzes 1 ist auf Freiheitsstrafe von sechs Monaten bis zu fünf Jahren, in minder schweren Fällen des Absatzes 2 auf Freiheitsstrafe von einem Jahr bis zu zehn Jahren zu erkennen. Die schwere Körperverletzung ist – wie die gefährliche – eine qualifikazierte Körperverletzung. Der Grund für die Verschärfung des Strafmaßes ist in diesem Fall jedoch ein anderer: Ist durch die Verletzung eine besonders schwerer Folgeschaden (Alt. 1-3) eingetreten, so gilt das erhöhte Strafmaß des §226. Zur Modellierung solcher Folgeschäden wurde in Kapitel 5.4 die Beziehung „ist_folge_von“ eingeführt worden. Hiermit kann modelliert werden, dass ein Erfolg einen anderen nach sich zieht. Ein Problem tritt ein, wenn ein Erfolg nicht direkte sondern bloß indirekte Folge eines anderen Erfolgs ist. Dies kann beispielsweise der Fall sein, wenn eine Person eine Schnittverletzung erleidet, diese Schnittverletzung als Folgeschaden eine Entzündung nach sich zieht, welche wiederum eine Blutvergiftung verursacht. In diesem Fall ist die Blutvergiftung streng genommen auch eine Folge der Schnittverletzung. 68 Um solche Fälle modellieren zu können, existiert im juristischen System die Relation „ist_indir_folge_von/2“: ist_indir_folge_von(PS1,PS2):ist_folge_von(PS1,PS2). ist_indir_folge_von(PS1,PS2):ist_folge_von(PS1,PS3), ist_indir_folge_von(PS3,PS2). 5.5.3.4 Fahrlässige Körperverletzung (§229) Eine Körperverletzung, die fahrlässig begangen wird, ist eine fahrlässige Körperverletzung. Da Fahrlässigkeit ein subjektives Tatbestandsmerkmal ist, im juristischen System aber nur objektive Merkmale berücksichtigt werden, gleicht die Modellierung der fahrlässigen Körperverletzung der des Grundtatbestandes. 5.5.4 Effizienz Zum Abschluss des Kapitels über die Formalisierung einzelner juristischer Normen soll noch erwähnt werden, dass die hier angegeben Regeln im implementierten Prolog-System noch leicht modifiziert wurden. Im Hinblick auf schnellere Beweise wurde an verschiedenen Stellen versucht, die Klauseln möglichst effektiv anzuordnen. a) koerperl_missh(Taeter,Verhalten,Erfolg,Opfer):misshandlung(Verhalten,_,Opfer,Erfolg), ... fuehrt_aus(Verhalten,Taeter), ... . b) koerperl_missh(Taeter,Verhalten,Erfolg,Opfer):fuehrt_aus(Verhalten,Taeter), ... misshandlung(Verhalten,_,Opfer,Erfolg), ... . Angenommen, eine Anfrage lautet: ?- koerperl_missh(1, Verhalten, Erfolg, Opfer). Hier arbeitet Regel b) im Allgemeinen wesentlich effektiver, da nicht alle Misshandlungen der Reihe nach geprüft werden, sondern nur die, welche vom Täter mit Schlüssel „1“ begangen wurden. 5.5.5 Hierarchie der Körperverletzungsdelikte Man erkennt bereits an den oben aufgeführten Beispielen, dass die Körperverletzungsdelikte hierarchisch angeordnet sind. Darüber hinaus lassen sie sich auch als abgeleitete Klassen auffassen. Die Parameter der einzelnen Deliktarten bilden dann zusammen den jeweiligen Objekt-Schlüssel. In der nachfolgenden Abbildung ist dies veranschaulicht. 69 Straftat taeter: Person verhalten: Verhalten Straft_koerperl_Unv Erfolgsdelikt Taetigkeitsdelikt erfolg: Erfolg Missh_Schutzbef Koerperverletzung Beteiligung_Schlaegerei erfolg: Pers_schaden opfer: Person erfolg: Pers_schaden opfer: Person MS_Fuersorge_Obhut Koerperl_Missh MS_Hausstand Ges_schaedigung MS_Ueberlassen MS_Dienst_Arbeit Missh_Schutzbef_q Fahrlaessige_Kv Kv_Todesfolge gefahr: Konkr_Pers_Gef folge: Tod Gefaehrliche_Kv MSq_Gef_Tod_Gesund Schwere_Kv MSq_Gef_Entwicklung folge: Schwerer_Schaden SKv_Sehvermoegen_etc GKv_gs_Stoff GKv_gef_Werkzeug gs_stoff: Gs_Stoff werkzeug: Werkzeug GKv_Ueberfall GKv_Gemeinsch SKv_wichtiges_Glied SKv_Entstellung_etc GKv_Lebensgef 70 6 Implementierung des juristischen Systems In diesem Kapitel soll zunächst (Kapitel 6.1) dargestellt werden, nach welcher Vorgehensweise die Entwicklung des juristischen Systems erfolgte. Da dieses Kapitel insbesondere auch die Entwicklung des Systems nachzeichnen soll, könnte die Ansicht vertreten werden, es sei sinnvoll, die verschiedenen Entwicklungsphasen als Leitfaden für die Darstellung des Systems zu verwenden. In Kapitel 6.1 wird dargelegt, warum davon abgesehen wird. Der tatsächliche Aufbau der Darstellung orientiert sich zwar teilweise auch an Aspekten der Entwicklung, hauptsächlich ist er aber entlang der Architektur des Systems ausgerichtet. Bevor allerdings die genaue Systemarchitektur in Kapitel 6.3 vorgestellt wird, soll in Abschnitt 6.2 („Planung und erste Systemdefinition“) eine Art Anforderungsanalyse erfolgen. Entlang der daraus im folgenden abgeleiteten Architektur sollen in den weiteren Abschnitten die verschiedenen Komponenten des Systems genau beschrieben werden. Innerhalb dieser Abschnitte werden dann auch jeweils Aspekte der Systementwicklung dargestellt. 6.1 Entwicklung des Systems Die Entwicklung von Software-Projekten folgt häufig dem Wasserfallmodell48. Hierbei werden zuerst die Anforderungen analysiert und das zu erstellende System wird definiert. Anschließend wird das System entworfen und danach implementiert. Bevor es zum Einsatz kommt, wird es getestet. Bei dieser Vorgehensweise sind die einzelnen Entwicklungsphasen voneinander getrennt und werden der Reihe nach durchlaufen (vgl. [PaS94], S.36 ff.). In der Praxis – insbesondere bei größeren Projekten – stößt diese Vorgehensweise jedoch auf Probleme. So kann es beispielsweise sein, dass die Anforderungen zu Projektbeginn nicht klar umrissen sind, sondern erst durch die im Projekt gemachten Erfahrungen präzisiert werden können. Gerade innerhalb experimenteller Projekte wird dies regelmäßig der Fall sein. Ein rein sequentielles Durchlaufen der einzelnen Phasen wie zum Beispiel Anforderungsanalyse und Implementierung macht hier keinen Sinn. Stattdessen bietet sich in solchen Fällen eine evolutionäre Softwareentwicklung ([PaS94], S. 66 ff.) an. Hierbei wird zunächst das Projekt in groben Zügen geplant. Außerdem wird eine vorläufige Systemdefinition vorgenommen. Dieser Definition folgend, wird die erste Systemversion erstellt. Nachdem diese getestet wurde, ist zu überdenken, ob Änderungen der Systemdefinition vorgenommen werden sollen. Dies ist erforderlich, wenn eine Weiterentwicklung beabsichtigt ist. Soll weiterentwickelt werden, so muss zunächst eine Abänderung der Systemdefinition erfolgen. Hiernach wird in die Implementierungsphase zurückgekehrt und eine neue Version des entwickelten Softwaresystems wird realisiert, welche im Anschluss wieder getestet wird. Sollen an einer Systemversion keine Änderungen mehr vorgenommen werden, liegt dieses in der Endversion vor. Der hier beschriebene Entwicklungsprozess wird durch die aus [PaS94] (S. 67) stammende, leicht abgeänderte Abbildung veranschaulicht (s.u.). Bei der Entwicklung des juristischen Systems wurde gemäß dem Modell der evolutionären Softwareentwicklung vorgegangen. Orientierte sich der Aufbau der nun folgenden Beschreibung des Systems an den einzelnen – in der Realität jeweils mehrfach durchlaufenen – Entwicklungsphasen, so würde der Anschein einer „wasserfallartigen“ Entwicklung erweckt. 48 auch klassisches Phasenmodell genannt 71 Würde man das Systems entlang der evolutionären Entwicklung beschreiben, ginge dies vermutlich auf Kosten der Übersichtlichkeit. Basis der System-Darstellung ist daher dessen Endversion, welche im folgenden komponentenweise vorgestellt wird. Auf interessante Aspekte der Systementwicklung wird dabei in den jeweiligen Kapiteln eingegangen. Die nicht am Entwicklungszyklus beteiligte „Planung und erste Systemdefinition“ wird jedoch zuvor im nun folgenden Unterkapitel vorgenommen. Planung und erste Systemdefinition Implementierung einer Systemversion Modifikation der Produktdefinition Validierung neue Implementierung erforderlich? JA NEIN Endversion des Systems Abbildung: Darstellung der evolutionären Entwicklung des juristischen Systems 6.2 Planung und erste Systemdefinition Bevor mit der Entwicklung eines Systems begonnen werden kann, sollte unbedingt – zumindest in groben Zügen – geklärt sein, was es leisten soll beziehungsweise für welche Aufgabe(n) es eingesetzt werden soll. In einer Vorstudie sind daher zunächst unter anderem die Anforderungen an das zu entwickelnde System zu beschreiben und das Problemfeld ist abzugrenzen. Darüber hinaus sollte geklärt werden, wer mit dem zu entwickelnden System arbeiten soll und wie die in Zukunft vom System zu erbringende Leistung bislang bewältigt wird. Hierbei gilt es auch, Informationen über das Anwendungsgebiet einzuholen. In den vorangegangenen Kapiteln wurden auf die oben angesprochenen Probleme zum Teil schon eingegangen. So wurde beispielsweise in Kapitel 5.2 festgelegt, welche juristischen Fragen vom System bearbeitet werden können sollen. Dennoch soll an dieser Stelle noch einmal aufgezählt werden, was das System in groben Zügen leisten soll. Hauptziel des zu entwickelnden Systems ist es, den Vorgang der juristischen Subsumtion nachzuahmen. Hierdurch soll dem Systemanwender dabei geholfen werden, ein juristisches Gutachten zu erstellen. Als Anwender soll nach Möglichkeit jeder – also auch der juristische Laie – in Betracht kommen. Da das System nicht nur für Informatiker sondern auch für Juristen eine Hilfe darstellen soll, ist darüber hinaus wünschenswert, dass auch im Umgang mit Computern weniger erfahrene Personen das System bedienen können. 72 Das System sollte so konzipiert sein, dass die von ihm bearbeitbaren Gesetze (also die Körperverletzungsdelikte) prinzipiell austauschbar sind. Daher muss die Subsumtion so modelliert werden, dass sie unabhängig von den konkret „beherrschten“ Gesetzesnormen operiert. Aufgrund gewisser Unterschiede in der Methodik der einzelnen Rechtsgebiete wird es zwar schwierig sein, hier totale Unabhängigkeit zu realisieren, doch sollte sie zumindest möglichst weitreichend sein. Die in Kapitel 5.5 vorgestellte Darstellung von Gesetzen durch Regeln scheint ein vielversprechender Ansatz zu sein, diesem Ziel nahe zu kommen. Ebenso sollten die zu bearbeitenden Fälle beliebig ausgetauscht werden können. Darüber hinaus muss der Benutzer konkrete Fälle in das System eingeben können. Dies sollte möglichst komfortabel und weitestgehend unabhängig von der Struktur des den Fall repräsentierenden Datenmodells geschehen. Der Benutzer darf nicht gezwungen sein, dieses Modell zu kennen. Hingegen sollte es nicht möglich zu sein, dass der Anwender auch juristisches Wissen bearbeiten kann. Dies folgt daraus, dass juristische Laien mit dem System arbeiten können sollten. Allenfalls denkbar wäre, dass für einen eingeschränkten Benutzerkreis eine Bearbeitung des juristischen Wissens möglich ist. Im folgenden seien die oben herausgearbeiteten Anforderungen an das juristische System noch einmal stichwortartig zusammengefasst. Hinter den einzelnen Stichpunkten ist in Klammern angegeben, an welcher Stelle der Arbeit auf die jeweilige Anforderung genauer eingegangen wird. Diese Anforderungen sind: - Verschiedenste Aspekte der juristischen Methodenlehre sollen vom System bewältigt werden können. (Kapitel 7117) - Ein juristischer Laie soll mit dem System arbeiten können. (Kapitel 7) - Nicht-Informatiker sollen mit System arbeiten können und eine komfortable – vom Datenmodell unabhängige – Fallbearbeitung muss möglich sein. (Kapitel 6.5) - Die Gesetze sollen von der Subsumtion möglichst unabhängig sein. (Kapitel - Die Gesetze und auch der Sachverhalt sollten ausgetauscht werden können. (Kapitel 6.3) - Eventuell sollte es einem eingeschränkten Benutzerkreis möglich sein, juristisches Wissen zu bearbeiten. (Kapitel 7) 6.3) Wie eine juristische Subsumtion in der Praxis durchgeführt wird, wurde ausführlich in den Kapiteln 2.2.2 und 2.2.4 über die juristische Methodenlehre dargelegt. Welche dort genannten Aspekte der Subsumtion in das System integriert werden können, ist in den folgenden Kapiteln unter Berücksichtigung der in Kapitel 3 geschilderten Erfahrungen zu überprüfen. Hierbei wird immer wieder Bezug auf die in Kapitel 2.2 dargestellten Grundzüge juristischer Methodenlehre zu nehmen sein. 73 6.3 Architektur des Systems In diesem Kapitel soll die Systemarchitektur aus den oben genannten Anforderungen hergeleitet werden. Im weiteren Verlauf dieses Kapitels soll dann das Zusammenspiel der einzelnen Komponenten erläutert werden, damit der Leser einen groben Überblick erlangt und die nachfolgenden detaillierten Beschreibungen der einzelnen Komponenten besser in den Zusammenhang einordnen kann. 'LDORJNRPSRQHQWH (YHQWKDQGOHU 6XEVXPWLRQV NRPSRQHQWH 'HGXNWLYH (QWVFKHLGXQJV .RPSRQHQWH NRPSRQHQWH :LVVHQVYHUZDOWXQJ :LVVHQVEDVLV 6DFKYHUKDOW 1RUPHQ (QWVFKHLGXQJHQ 0HLQXQJHQ Abbildung: Architektur des Systems Ein wichtiger Aspekt in wissensbasierten Systemen ist, dass eine klare Trennung zwischen der Darstellung des Wissens des Anwendungsbereichs und der Verarbeitung dieses Wissens existiert. An das juristische System wurde in Kapitel 6.2 eben diese Forderung gestellt: zum einen sollte die Subsumtionsmethodik möglichst deutlich von den Gesetzen getrennt sein, zum anderen sollten die Gesetze und der Fall austauschbar sein. Daraus folgt also, dass eine Komponente zur Durchführung der Subsumtion existieren muss und Fall- und GesetzesWissen in austauschbaren und von der Subsumtionskomponente unabhängigen Modulen vorliegen müssen. Außer Fall- und Gesetzes-Wissen benötigt das System noch Wissen über juristische Meinungen und Entscheidungen, worauf später genauer eingegangen wird. Die Darstellungen des Wissens aus den verschiedenen Bereichen können als Datenbanken aufgefasst werden. Diese Datenbanken können als zusammengehörende Komponente –als Wissensbasis– begriffen werden. 74 Um mit dem Wissen aus der Wissensbasis angemessen „hantieren“ zu können, sollte das System über eine Komponente zur Verwaltung dieses Wissens verfügen. Diese Komponente entspricht dann dem Datenbank-Management-System eines Datenbanksystems. Darüber hinaus benötigt das juristische System noch eine Dialogkomponente, welche es dem Informatik-Laien ermöglicht mit dem System zu kommunizieren. Aufgrund der Problematik der Datenübergabe zwischen ECLiPSe und Tcl/Tk folgt außerdem die Notwendigkeit eines Eventhandlers. Hierauf wird in Kapitel 6.5 eingegangen. Der Eventhandler bildet die Schnittstelle zwischen der Dialogkomponente und dem restlichen System. Aus den obigen Ausführungen lassen sich folgende Komponenten identifizieren, welche in den in Klammern angegebenen Kapiteln dargestellt werden: - Wissensbasis (Kapitel 6.4) Dialogkomponente (Kapitel 6.5) Eventhandler (Kapitel 6.6) Wissensverwaltung oder DBMS (Kapitel 6.7) Subsumtionskomponente (Kapitel 6.8) 6.4 Wissensbasis In Kapitel 6.3 wurde bereits erwähnt, dass sich die Wissensbasis des juristischen Systems aus vier verschiedenen Datenbanken zusammensetzt. Wie die Sachverhalt- und die NormenDatenbank aussehen, wurde bereits in Kapitel 5 beschrieben. Daneben existieren noch eine Datenbank für juristische Meinungen (enthält MeinungObjekte) und eine für Entscheidungen (mit Entscheidung-Objekten). Diese Datenbanken können im Prinzip nur in Verbindung mit der Subsumtionskomponente (s. Kapitel 6.8) sinnvoll dargestellt werden, weshalb an dieser Stelle lediglich kurz angedeutet werden soll, welchem Zweck sie dienen. Die Datenbank für juristische Meinungen enthält alle Informationen über verschiedene Ansichten bezüglich eines juristischen Meinungsstreits. Ein solcher Meinungsstreit liegt vor, wenn kein Konsens bezüglich der Interpretation von Gesetzen besteht. Die Datenbank für Entscheidungen dient dazu, die erforderlichen Entscheidungen, welche der Anwender des Systems in Streitfragen zu treffen hat, zu verwalten. 6.5 Dialogkomponente Wie in Kapitel 5 dargestellt wurde, wird das Wissen des juristischen Systems in PrologFakten und –Regeln dargestellt. Daher kann auf dieses Wissen über Prolog-Anfragen auf Basis dieser Regeln und Fakten zugegriffen werden. Solche Anfragen könnten dann beispielsweise folgendermaßen aussehen: ?- person(Schluessel,Nachname,“Tim“,Geschlecht,Alter,Wehrlos). ?- koerperverletzung(Taeter,Verhalten,Erfolg,Opfer). Die erste Anfrage würde als Resultat alle Personen liefern, die mit Vornamen „Tim“ heissen. Die zweite Anfrage würde die Frage beantworten, welche Körperverletzungen begangen wurden. 75 Das Wissen des Systems kann darüber hinaus auf Prolog-Ebene mittels der Prädikate assert/2 und retract/2 modifiziert werden. So könnte beispielsweise folgendermaßen das Attribut „Alter“ eines Person-Objekts aus dem Datenbestand verändert werden: retract(person(4,“Schuster“,“Tim“,m,24,nein)). assert(person(4,“Schuster“,“Tim“,m,27,nein)). Insofern ist es also prinzipiell nicht unbedingt nötig, eine besondere Dialogkomponente zur Verfügung zu stellen. Wie jedoch an den Beispielen zu erkennen ist, sind solche Zugriffe auf das Wissen des Systems umständlich und ohne Kenntnis des zu Grunde liegenden relationalen Datenmodells nicht möglich. Insbesondere ist zu beachten, dass die Attributwerte der Relationen häufig Schlüssel sind, also meist bloße Zahlen, die den Anwender häufig vor die Frage stellen dürften, was sich dahinter verbirgt. In Kapitel 6.2 wurde die Anforderung formuliert, dass auch Nicht-Informatiker mit dem System arbeiten können sollen und eine komfortable – vom Datenmodell unabhängige – Fallbearbeitung muss möglich sein muss. Um einen solchen Umgang mit dem System zu ermöglichen, ist es somit nötig, eine spezielle Dialogkomponente bereitzustellen, über welche die gesamte Kommunikation des Anwenders mit dem System abgewickelt werden kann. Diese Dialogkomponente muss folgende Aufgaben bewältigen können: - Ein Sachverhalt muss eingegeben werden können. Dabei muss es nicht möglich sein, dem System jeden denkbaren Lebensvorgang vermitteln zu können. Vielmehr ist erforderlich, dass die Fälle eingegeben werden können, die mit Körperverletzungsdelikten in Verbindung stehen könnten. - Der Sachverhalt soll in der Folge auch verändert werden können. Schon deswegen muss es auch möglich sein, den Sachverhalt anzusehen. - Das System muss dem Anwender in Rechtsstreitigkeiten die verschiedenen Ansichten präsentieren und Entscheidungen des Anwenders erfragen können. Ausserdem muss der Anwender (neue) Meinungen zu einem Streit eingeben und bearbeiten können. - Letztlich muss auch der Anwender die Möglichkeit haben, Fragen an das System zu stellen und Antworten darauf zu erhalten. Hierunter fällt auch, dass der Anwender das System dazu auffordern können muss, eine Fallbearbeitung vorzunehmen. Bevor in Kapitel 6.5.2 dargestellt wird, wie die Dialogkomponente des juristischen Systems implementiert wurde und die oben aufgeführten Aufgaben bewältigt, sollen zuvor noch einige ergonomische Gesichtspunkte Berücksichtigung finden. 6.5.1 Benutzerfreundlichkeit Da die Dialogkomponente die Arbeit mit dem System erleichtern soll und eine unkomfortable Dialogkomponente die Handhabbarkeit des Systems und somit auch seinen Nutzen stark einschränken kann, sind bei ihrer Entwicklung stets gewisse ergonomische Überlegungen zu berücksichtigen. Auch unerfahrenen Anwendern sollte es möglich sein, mit dem System zu interagieren und dabei alle Aktionen einigermassen zügig auszuführen. Daher empfiehlt es sich, eine grafische Anwendungsoberfläche zur Verfügung zu stellen, da viele Anwender mit dem Umgang von „Fenstern“, „Buttons“, „Schiebereglern“ und ähnlichem vertraut sind und 76 diese Techniken in der Regel eine im Vergleich zu textbasierten Systemen intuitivere und schnellere Handhabung erlauben. Dennoch ist bei der Realisierung der Dialogkomponente auch zu berücksichtigen, dass Benutzerfreundlichkeit teilweise durch einen erheblichen Entwicklungsaufwand erkauft werden muss. Hier gilt es also besonders, einen sinnvollen Mittelweg zwischen Aufwand und Nutzen zu finden. In den Beschreibungen der einzelnen Dialoge wird hierauf weiter einzugehen sein. Ein Aspekt dieser Prolbematik soll allerdings bereits an dieser Stelle berücksichtigt werden. Hierbei geht es um die „Analyse und Synthese natürlicher Sprache“. Bei jeder Form des Dialoges des Systems stellt sich die Frage, inwieweit natürliche Sprache verwendet werden kann. In der Regel wird der Anwender den Sachverhalt in schriftlicher Form in natürlicher Sprache vorliegen haben. Auch Fragen, die er an das System stellen möchte, wird er zunächst als Vorstellung im Kopf haben, die –zumindest ansatzweise– in natürlicher Sprache formuliert ist. Daher wäre es sicher sehr komfortabel, wenn er beispielsweise einen Sachverhalt oder eine Frage in natürlicher Sprache in das System eingeben könnte und dieses die Sprache analysierte und in die interne Repräsentation überführen könnte, also die entsprechenden PrologKlauseln generieren könnte. Ebenso wäre es schön, wenn die Ergebnisse oder Rückfragen des Systems dem Anwender in natürlicher Sprache präsentiert würden, das System also selbstständig aus Prolog-Klauseln vernünftige natürlichsprachliche Sätze erzeugte. Wollte man dies realisieren, wären also Systemkomponenten zur Analyse beziehungsweise Synthese natürlicher Sprache erforderlich, wie dies beim LEX-Projekt (s. Kapitel 3.1) erforderlich war. Allerdings stellt die natürliche Sprache die Informatik derzeit vor große Probleme. Ohne hierauf näher eingehen zu wollen (vgl. dazu Kapitel 3.1.2), scheint es wohl nicht möglich zu sein, in vernünftiger Weise die natürliche Sprache zu analysieren. Zumindest legen die Erfahrungen des LEX-Projekts dies nahe, wo das implementierte System vor allem aufgrund des Versuchs, natürliche Sprache zu verarbeiten – gemessen an juristischen Maßstäben – nur geringe Leistungsfähigkeit erzielte. Die Erzeugung von (mehr oder weniger) natürlicher Sprache aus Prolog-Klauseln scheint hier ein kleineres Problem darzustellen. In den folgenden beiden Abschnitten soll nun dargestellt werden, auf welche Weise im juristischen System der Übergang von natürlicher Sprache zu Prolog-Klauseln (in beide Richtungen) realisiert wurde. 6.5.1.1 Abbildung natürlicher Sprache auf Prolog-Klauseln Wie bereits dargelegt, scheint es zu aufwendig zu sein, das System mit der Fähigkeit zur Sprachanalyse auszustatten. Der Schwerpunkt der Arbeit würde hierdurch zu stark verschoben. Es ist daher notwendig, die Sprachanalyse gewissermassen auf den Anwender zu verlagern. Dies scheint durchaus angebracht zu sein, da der Mensch über die Bedeutung einzelner Satzteile Bescheid weiss und die in natürlichsprachlichen Sätzen transportierten Informationen ermitteln kann. Es sollte daher Aufgabe des Anwenders sein, die Sätze, die er dem System vermitteln möchte, auf seine Informationen hin zu untersuchen. Das System muss dem Anwender nun lediglich eine Möglichkeit bieten, diese Informationen unmissverständlich eingeben zu können. Genügen sollten hier gewisse Sachverhalt-Eingabe-Formulare, die es ermöglichen, die relevanten Informationen eines Falles einzugeben. Da das Problemfeld (die Körperverletzungsdelikte) einigermassen klar umgrenzt ist und im Prinzip hauptsächlich Verhaltensweisen klassifiziert werden können müssen, kann die Menge der verschiedenen Konzepte zur Darstellung von Sachverhalten und somit auch die Menge der verschiedenen Einga77 be-Formulare relativ klein gehalten werden, so dass der Anwender den Umgang mit ihnen relativ schnell beherrschen lernen kann. 6.5.1.2 Abbildung von Prolog-Klauseln auf natürlichsprachliche Sätze Wie bereits gesagt, scheint zumindest die Erzeugung natürlichsprachlicher Sätze aus PrologKlauseln machbar zu sein. Dennoch sind auch hier noch einige grammatikalische Informationen nötig. So müssten beispielsweise Verben dekliniert werden können und die Geschlechter der Nomen im Sachverhalt müssten bekannt sein. Angenommen, folgende Sachverhaltsfakten lägen dem System vor: person(24,“Müller“,“Dieter“,m,33,nein). person(12,“Schmidt“,“Ulla“,w,35,nein). gegenstand(9,“Knüppel“,ja). verhalten(18,“schlagen“). pers_schaden(87,“Beule“,12). fuehrt_aus(18,24). wird_behandelt(18,12). ist_kausal(18,87). In natürlicher Sprache soll dies bedeuten: „Dieter Müller schlägt Ulla Schmidt mit einem Knüppel und fügt ihr so eine Beule zu.“ Um diesen Satz bilden zu können, benötigt das System folgendes Sprachwissen: - das Verb „schlagen“ in der dritten Person Singular heisst „schlägt“, das Geschlecht von „Knüppel“ ist männlich, das Geschlecht von „Beule“ ist weiblich. Das Sprachwissen müsste dem System als Faktenmenge zur Verfügung stehen. Entweder, es verfügte über eine riesige Wissensbasis mit allen Informationen zu allen Wörtern oder der Anwender müsste eine solche Faktenmenge sukzessiv aufbauen, indem er bei jeder Dateneingabe dem System auch die notwendigen grammatikalischen Informationen zu den eingegebenen Daten mitliefert. Auch eine Mischform wäre denkbar. So könnte das System über ein aufbaubares Grundwissen verfügen. Unabhängig davon, welche Alternative realisiert werden sollte, entstünde sehr großer Aufwand. Entweder die Systementwicklung würde grossen zusätzlichen Aufwand erfordern oder der Anwender hätte mehr Arbeit bei der Eingabe zu leisten. Fraglich ist daher, ob es nicht besser ist, ganz auf das Grammatikwissen zu verzichten, böte sich doch immerhin noch die Möglichkeit, pseudo-natürlichsprachliche Sätze im folgenden Stil zu bilden: Dieter Müller führt das Verhalten <schlagen> gegen Ulla Schmidt aus und verwendet dabei den Gegenstand <Knüppel> und verursacht den Schaden <Beule>. Zwar klingt ein solcher „Satz“ nicht elegant, dennoch ist vollkommen klar, was gemeint ist. Da auf eine Sprachanalyse des Systems verzichtet wird, scheint es konsequent zu sein, auch in die Sprachsynthese nicht allzu großen Aufwand zu investieren. Der Nutzen der besser formulierten Sätze wiegt den zu leistenden Aufwand wohl nicht auf. Daher wird auf diese pseudonatürlichsprachlichen Sätze zurückgegriffen. Dadurch, dass diese „Sätze“ noch in eine normale Form gebracht werden müssen, ist in einem gewissen Sinne auch die Sprachsynthese zu einem Teil vom Anwender zu leisten. 78 6.5.2 Die Dialoge des juristischen Systems Die Dialogkomponente wurde mittels Tcl/Tk (s. Kapitel 2.1.9) implementiert. Tcl/Tk wird vom Prolog-Programm aus gestartet. Wie die Interaktion zwischen ECLiPSe und Tcl/Tk genau realisiert wurde, wird in Kapitel 6.6 beschrieben. In diesem Teil der Arbeit, werden die Dialoge vorgestellt, mit welchen der Benutzer bei der Arbeit mit dem System konfrontiert werden kann. Somit fungiert dieser Abschnitt auch als Bedienungsanleitung für das juristische System. Das juristische System wird mit [’jur_system’], top. geladen und gestartet. Als erstes wird dann dem Benutzer das Hauptmenü präsentiert (s. Abbildung). Dieses besteht hauptsächlich aus vier Spalten von Buttons. Diese Spalten tragen die Überschriften - Sachverhalt bearbeiten Sachverhalt-DB verwalten Meinungs-DB verwalten Subsumtion Ausserdem existiert im Hauptmenü ein Button mit der Aufschrift „Sachverhalt ansehen“ und einer mit der Aufschrift „fertig“. Ein Druck auf den letztgenannten beendet das juristische System. Genaugenommen sorgt er lediglich dafür, dass die grafische Oberfläche geschlossen wird und der Anwender in den ECLiPSe-Terminal-Modus zurück gelangt, von wo aus immer noch auf die Daten des Systems zugegriffen beziehungsweise – mittels „top/0“ – die GUI erneut gestartet werden kann. Über den Button „Sachverhalt ansehen“ gelangt der Anwender zu einer textuellen Darstellung des Sachverhalts. Dialog: Hauptmenü 79 Im folgenden sollen die vier oben genannten Button-Spalten und die sich hinter den einzelnen Buttons verbergenden Funktionen des Programms näher beschrieben werden. 6.5.2.1 Sachverhalt bearbeiten Mit den Buttons unter der Überschrift „Sachverhalt bearbeiten“ werden Dialoge gestartet, die zur Bearbeitung der Sachverhalt-Daten in der entsprechenden Wissensbasis dienen. Der Anwender hat die Wahl zwischen folgenden Dialogen: - Person bearbeiten Verhalten bearbeiten Gegenstand bearbeiten Um alle Aspekte eines Sachverhalts bearbeiten zu können, müssen alle Sachverhalt-Prädikate (bis auf die abgeleiteten) bearbeitet werden können. Über die drei oben aufgeführten Dialoge kann auf die Prädikate „person/6“, „verhalten/2“ und „gegenstand/3“ zugegriffen werden. Die restlichen Prädikate können über Dialoge bearbeitet werden, welche von den anderen Dialogen aus erreicht werden können. Die folgende Übersicht soll veranschaulichen, über welche Dialoge welche Prädikate bearbeitet werden können. Person bearbeiten Gegenstand bearbeiten Verhalten bearbeiten Æ person/6 Æ schutzverhaeltnis/2 Æ personenmerkmal/3 Æ konkr_pers_gef/3 Æ pers_schaden/2 Æ gegenstand/3 Æ verhalten/2 Æ fuehrt_aus/2 Æ wird_behandelt/2 Æ ist_kausal/2 Æ wird_benutzt/2 Æ begruendet/2 Æ ist_folge_von/2 Abbildung: Übersicht über die Navigation der Sachverhaltsbearbeitung Die Navigation zur Bearbeitung der einzelnen Prädikate wird bei den Beschreibungen zu den einzelnen Dialogen genauer dargestellt werden. Der Grund dafür, dass vor Bearbeitung mancher Sachverhaltsaspekte zunächst ein Umweg über einen oder sogar zwei (im Falle von „ist_folge_von/2“) andere Dialoge gemacht werden muss, ist, dass hierdurch die Übersichtlichkeit gesteigert werden soll. Zum einen ist es wenig übersichtlich, wenn der Anwender bereits im Hauptmenü zwischen zu vielen verschiedenen Dialogen auswählen muss. Andererseits wird durch den Umweg über die drei Hauptdialoge zur Sachverhaltsbearbeitung der wünschenswerte Effekt herbeigeführt, dass der Anwender ein Prädikat, welches über einen untergeordneten Dialog bearbeitet wird (wie beispielsweise pers_schaden/2), mit dem entsprechenden Prädikat des übergeordneten Dialogs (person/6) assoziiert, so dass in diesen Fällen der jeweilige Objektbezug klar wird. 80 Bei Prädikaten, die binäre Beziehungen zwischen Objekten darstellen (wie zum Beispiel „ist_kausal/2“ oder „fuehrt_aus/2“), ist offensichtlich, dass die zur Bearbeitung erforderlichen Dialoge prinzipiell über zwei verschiedene übergeordnete Dialoge erreichbar sein müssten. So wäre es durchaus sinnvoll, wenn das Prädikat „fuehrt_aus/2“ mit den an dieser Relation beteiligten Objekten „Verhalten“ und „Person“ über die zu diesen Objekten gehörenden Dialoge oder diesen untergeordnete Dialoge bearbeitet werden könnte. Stattdessen wird allerdings von der Dialogkomponente jeweils nur eine von mehreren Möglichkeiten zur Verfügung gestellt. Auf das Prädikat „fuehrt_aus/2“ kann beispielsweise nur über den Dialog zur Bearbeitung von „Verhalten“-Objekten zugegriffen werden (s. dort). Der Grund hierfür ist, dass alternative Zugriffsmöglichkeiten auf die einzelnen Prädikate einen erheblichen Mehraufwand bei der Erstellung der Dialogkomponente bedeutet hätten. Da für jedes Prädikat eine sinnvolle Zugriffsmöglichkeit besteht, erscheint der hier erforderliche Mehraufwand in keinem vernünftigen Verhältnis zu dem Vorteil verschiedener Zugriffsmöglichkeiten mehr zu stehen. Das Vorhandensein nur einer Eingabemöglichkeit dürfte darüber hinaus nur in wenigen Fällen tatsächlich zu Unbequemlichkeiten bei der Sachverhaltsbearbeitung führen. Möchte man zum Beispiel ein Verhalten-Objekt eingeben, also in der Regel die Handlung einer Person beschreiben, ist selbstverständlich, dass man hierbei auch angeben möchte, wer das Verhalten „ausführt“, wer hierdurch „behandelt“ wird und welche Gegenstände dabei benutzt werden. Aus diesem Grund, sollten die Prädikate „fuehrt_aus/2“, „wird_behandelt/2“ und „wird_benutzt/2“ auch über den Dialog „Verhalten bearbeiten“ erreicht werden können. Auf der anderen Seite wird es wohl eher selten der Fall sein, dass jemand einen Gegenstand eingeben möchte und an dieser Stelle direkt bestimmen möchte, bei welchem „Verhalten“ dieser zur Anwendung kommt. Dies hat zur Folge, dass im Dialog „Gegenstand bearbeiten“ nur wenige Eingaben gemacht werden können, was zu Beginn der nun folgenden Beschreibungen der einzelnen Dialoge zur Sachverhalt-Bearbeitung zu sehen sein wird. 6.5.2.1.1 Gegenstand-Bearbeitung Dialog: Auswahl der zu bearbeitenden Instanz Allen Dialogen zur Bearbeitung einzelner Sachverhaltsaspekte wie Gegenstand-, Person- oder Verhalten-Objekte ist gemein, dass zunächst eine bestehende Instanz ausgewählt werden 81 kann, die bearbeitet werden soll. Ausserdem besteht die Möglichkeit, eine neue Instanz zu erschaffen. Die Beispielabbildung zeigt den Dialog zur Auswahl eines Gegenstand-Objektes. Wird auf den „neu“-Button gedrückt, gelangt der Anwender zum Gegenstand-BearbeitungsDialog. Dies geschieht auch, wenn er auf den „bearbeiten“-Button drückt und zuvor eine Instanz markiert hat. In diesem Fall sind jedoch die Attribute und gegebenfalls andere mit der jeweiligen Instanz zusammenhängende Werte in das entsprechende Dialog-Formular eingetragen. Bevor nun der Dialog zur Bearbeitung einzelner Gegenstand-Objekte (wie er in obiger Abbildung zu sehen ist) erläutert wird, soll dargestellt werden, auf welche Weise die Auswahl von Objektinstanzen in Tcl/Tk programmiert wurde. Hierzu wurde die Prozedur „schluesselbox“ entwickelt, die in einer stark vereinfachten Form hier abgebildet ist: proc schluesselbox {bezeichnung fenster cmd1 cmd2 cmd3 inhalt} { global schluesselbox_inhalt frame $fenster -relief ridge -borderwidth 3 frame $fenster.rahmen label $fenster.rahmen.bez -text $bezeichnung pack $fenster.rahmen.bez -side left -anchor w pack $fenster.rahmen -fill x pack $fenster -fill x neue_listbox $fenster schlbox foreach element $inhalt { $fenster.schlbox.inhalt insert end [lindex $element 1] set i [lindex $element 1] set e [lindex $element 0] set schluesselbox_inhalt($i) $e } set b $fenster.buttons frame $b; pack $b button $b.add -text neu –“command” $cmd1 pack $b.add -side left button $b.edit -text “bearbeiten” -command $cmd2 pack $b.edit -side left button $b.remove -text “löschen” -command $cmd3 pack $b.remove -side left } Abbildung: Tcl/Tk-Prozedur „schluesselbox“ Die genaue Funktionsweise der Prozedur ist nicht so wichtig und soll nicht näher erläutert werden. Wichtig ist, dass (über die Prozedur „neue_listbox“) eine „Listbox“ geöffnet wird, in welche die Elemente eingefügt werden („foreach element ...“), welche innerhalb der Listbox bearbeitet werden sollen. Diese Elemente sind im juristischen System meist Beschreibungen von Objekten (wofür die bereits beschriebenen Objekt-Methoden erforderlich sind). Die „button“-Anweisungen am Ende der Prozedur sorgen dafür, dass die Knöpfe „neu“, „bearbeiten“ und „löschen“ auf dem Bildschirm erscheinen. Was bei einem Druck auf einen der Knöpfe geschieht, steht in den Argumenten „cmd1“, „cmd2“ und „cmd3“. Diese drei Kommandos stellen jeweils Prozeduraufrufe dar. Die so aufrufbaren Prozeduren operieren auf dem Inhalt (meistens auf dem jeweils selektierten Element) der Listbox und sorgen so dafür, dass der Inhalt der Listbox verändert werden kann. Damit gleichzeitig auch eventuell erforderliche Datenbankanpassungen erfolgen können – beispielsweise wenn ein bestimmtes Element ent82 fernt wird und somit auch aus der Datenbank gelöscht werden muss – ist es erforderlich, die Schlüssel der einzelnen Objekte zu kennen. Dazu werden die Objektschlüssel in dem Array „schluesselbox_inhalt“ verwaltet. Ein Problem, welches im Rahmen der aktuellen Version des juristischen Systems noch nicht vollständig gelöst wurde, ist, dass die Objektbeschreibungen im Allgemeinen nicht die Schlüsseleigenschaft besitzen und so in Einzelfällen verschiedene Objekte innerhalb der Listbox nicht auseinandergehalten werden können. Immerhin verbessern die ausführlichen Objektbeschreibungen, welche in der Listbox stehen, die Unterscheidbarkeit im Vergleich zu den bloßen Objekt-Bezeichnungen, so dass der Mangel des Systems nur selten in Erscheinung tritt. Dennoch müsste dieser Mangel in einer Nachfolgeversion behoben werden. Geplant ist, Objekte mit identischen Bezeichnungen mit Indizes zu versehen. Dieser Plan wurde aus Zeitmangel jedoch noch nicht verwirklicht. Nun aber zur Bearbeitung einzelner Gegenstand-Objekte. Dialog: Gegenstand-Eingabe In diesem Dialog muss der Anwender lediglich eine Bezeichnung für das Gegenstand-Objekt in das dafür vorgesehene „Entry-Widget“ eintippen und über den „Select-Button“ angeben, ob dieses Objekt beweglich ist oder nicht. Wie in allen anderen Eingabe-Formularen befinden sich an unterster Stelle des DialogFensters drei Buttons. Diese tragen die Aufschriften „fertig“, „übernehmen“ und „abbrechen“. Mit „übernehmen“ werden die Eingabe-Daten in die Datenbank übernommen. Der „fertig“Button dient dem gleichen Zweck, mit dem einzigen Unterschied, dass er darüber hinaus den Dialog beendet. Dies passiert auch, wenn auf den „abbrechen“-Button geklickt wird, allerdings erfolgt in diesem Fall keine Anpassung der Datenbank. Die genaue Semantik dieser drei Buttons wird in dem Kapitel 6.7.3 über die Transaktionen im juristischen System beschrieben. 83 6.5.2.1.2 Verhalten-Bearbeitung Dialog: Verhalten-Eingabe Die Bearbeitung eines Verhaltens geschieht folgendermaßen. Zum einen muss selbstverständlich eine Bezeichnung für das Verhalten eingegeben werden. Über weitere Attribute verfügt das Konzepts „Verhalten“ nicht. Allerdings steht es, wie oben beschrieben, zu ein paar anderen Objektklassen in Beziehung. Da über diese Beziehungen das Verhalten näher beschrieben wird (wer ist/sind Täter, wer ist/sind Opfer etc.) werden diese Beziehungen über den Verhalten-Dialog bearbeitet. Dies geschieht, indem in die Listboxes die Objekte hinzugefügt oder entfernt werden, die zu dem bearbeiteten Verhalten-Objekt in der dazugehörigen Beziehung stehen. Die Überschriften der einzelnen Listboxes entsprechen hierbei nicht den Bezeichnungen der entsprechenden Prädikate, sondern orientieren sich an den Rollen, in welcher das jeweilige Objekt an der entsprechenden Relation beteiligt ist: Überschrift der Listbox Ausführende Personen Behandelte Personen Benutzte Gegenstände Verursachte Schäden Ausgelöste konkrete Gefahren entsprechendes Prädikat fuehrt_aus/2 wird_behandelt/2 wird_benutzt/2 ist_kausal/2 begruendet/2 Um ein neues Objekt in eine Listbox einzufügen, muss diese gegebenenfalls zunächst aufgeklappt werden. Dies geschieht durch Druck auf den Button mit der Beschriftung „...“. Existiert kein solcher Button neben der Überschrift der jeweiligen Listbox, ist diese bereits aufge- 84 klappt und kann über einen Druck auf den Button mit der Beschriftung „X“ wieder zugeklappt werden. Unter aufgeklappten Listboxes befinden sich jeweils Buttons mit den Aufschriften „hinzufügen“ und „entfernen“. Drückt der Anwender auf den Button „hinzufügen“, öffnet sich eine Listbox, in welcher alle Objekte der an der Beziehung beteiligten Klasse aufgelistet sind. Der Anwender kann nun ein Element auswählen und es so in die entsprechende Beziehung mit dem gerade bearbeiteten Verhalten-Objekt setzen. Ein Druck auf den Button „entfernen“ entfernt das jeweils markierte Element der Listbox. 6.5.2.1.3 Person-Bearbeitung Dialog: Person-Eingabe Die vom Anwender bearbeitenden Daten, welche unmittelbar zur Relation „person/6“ gehören, können im Dialog oben eingegeben beziehungsweise bearbeitet werden: Vorname, Nachname und Alter können in die entsprechenden Textfelder getippt werden. Über einen „SelectButton“ kann eingestellt werden, ob die Person wehrlos ist oder nicht. Ausserdem kann mittels sogenannter „Radio-Buttons“ das Geschlecht ausgewählt werden. Über den unteren Teil des „Dialog-Formulars“ können Daten eingegeben werden, die mit dem „person/6“-Prädikat in Beziehungen stehen. Hierzu zählen einerseits die Schutzverhältnisse an denen die Person als „schützende Person“ beteiligt sein kann. Drückt der Anwender den Button mit der Aufschrift „Schutzverhältnisse ...“, wird ein Dialog zur Bearbeitung der Schutzverhältnisse geöffnet, welcher nicht näher beschrieben werden muss, da er prinzipiell genauso funktioniert, wie die Bearbeitung der Beziehungen von Verhalten-Objekten (s.o.). Die weiteren Beziehungen, an welchen ein Person-Objekte beteiligt sein kann, werden über den Verhalten-Dialog bearbeitet. Allerdings existieren Objekte, welche als Attribut eine Referenz auf „Person“-Objekte haben. Da sie ausser dieser Referenz und ihres eigenen Schlüsselwertes nur über ein weiteres Attribut verfügen (jeweils „bezeichnung“), werden diese Objekte über den Dialog „Person bearbeiten“ mitverwaltet. 85 Dies geschieht – wie bei der Bearbeitung von Beziehungen – über Listboxes: Überschrift der Listbox Besondere Merkmale Erlittene Schäden Erfahrene konkrete Gefahren entsprechendes Prädikat personenmerkmal/3 pers_schaden/3 konkr_pers_gef/3 Der einzige Unterschied ist, dass bei Druck auf den Button „hinzufügen“ unter der jeweiligen Listbox keine Listbox zur Auswahl eines Objektes geöffnet wird, sondern ein Entry-Widget, in welches der Anwender die Bezeichnung des Personenmerkmals, Personenschadens beziehungsweise der konkreten Personengefahr eingibt und somit zugleich dieses Objekt erschafft. Eine Ausnahme bildet hierbei die Bearbeitung von Personenschäden. Da Objekte dieser Klasse an der Beziehung „ist_folge_von“ beteiligt sind, können bei der Bearbeitung solcher Objekte darüber hinaus, die Personenschäden angegeben werden, welche Folge des derzeit bearbeiteten Personenschadens sind. 6.5.2.2 Sachverhalt-DB verwalten Da es je nach Sachverhalt relativ aufwendig sein kann, diesen einzugeben, besteht die Möglichkeit, Sachverhalte durch Druck auf den entsprechenden Button und Angabe des Pfad- und Dateinamens in eine Datei zu schreiben und ihn daraus zu laden. Ausserdem können Sachverhalte gelöscht werden, damit ein neuer Fall eingegeben und bearbeitet werden kann. Wird ein Sachverhalt gespeichert, so werden neben den Sachverhaltsfakten auch die Zähler gespeichert, welche die Informationen enthalten, was der nächste zu vergebene Schlüsselwert für neu zu erschaffene Objekte ist, obwohl diese Werte streng genommen nicht zur SachverhaltDatenbank zu rechnen sind. Entsprechend werden die Zähler bei Löschung eines Sachverhaltes auf ihre Ausgangswerte zurück gesetzt. 6.5.2.3 Meinungs-DB verwalten Gleiches gilt für die Datenbank, welche die Informationen über verschiedene juristische Meinungen enthält. Auch diese Daten können gesichert, geladen und gelöscht werden. 6.5.2.4 Subsumtion Unter Rückgriff auf die zur Verfügung stehenden Datenbanken wie der SachverhaltDatenbank ist das juristische System in der Lage, juristische Fragen zu beantworten. Die Entscheidungen (für jeweils eine Ansicht in einem Meinungsstreit), die während dieser Beantwortungen von Fragen an das System vom Anwender getroffen werden, können über den Button „Subsumtion zurücksetzen“ revidiert werden. Für die Beantwortung der Fragen selbst stehen dem System hauptsächlich die Prädikate „constrain_and_test/1“ und „subsumtionen/2“ zur Verfügung. Mit der „Constrain And Test“Methode lassen sich schnell alle Antworten zu einer Anfrage ermitteln. Mit Hilfe des Prädikats „subsumtionen/2“ können diese Antworten nicht ganz so effizient, dafür aber in der bei einem juristischen Gutachten üblichen Reihenfolge gefunden werden. Darüber hinaus wird bei Anfragen mittels „subsumtionen/2“ ein Subsumtionstext erstellt, welcher auf dem Bildschirm ausgegeben wird. Dieser Text kann bearbeitet und in einer Textdatei gespeichert werden. Wie die beiden Inferenzmethoden genau funktionieren, wird in Kapitel 6.8 beschrieben. 86 An dieser Stelle soll lediglich beschrieben werden, wie die Methoden an die grafische Oberfläche angebunden sind. Hinter dem Button „(Delikt prüfen)“ verbirgt sich das Prädikat „constrain_and_test/1“. Die Klammern um die Beschriftung des Buttons sollen signalisieren, dass die Anbindung an die grafische Oberfläche nicht richtig abgeschlossen ist. Wird der Button gedrückt, erscheint zunächst ein einfacher Dialog, in welchem der Anwender das Delikt 49 auswählen kann, von welchem geprüft werden soll, ob es im vorliegenden Sachverhalt begangen wurde. Das zu dem Delikt gehörende Prolog-Prädikat bildet dann das Argument für „constrain_and_test/1“. Das Prädikat wird dann mit dem entsprechenden Argument angefragt und im ECLiPSeTerminal wird dargestellt, was genau überprüft wird und zu welchen Resultaten die jeweiligen Überprüfungen gelangen.50 Das Prädikat „subsumtionen/2“ kann über den Button „Subsumtion durchführen“ angefragt werden. Zunächst wird der Anwender wieder mit dem Deliktauswahl-Dialog konfrontiert, über welchen das System das erste Argument für „subsumtionen/2“ gewinnt: den Funktornamen des Prädikats, welches die Norm repräsentiert, die überprüft werden soll. Entscheidet sich der Anwender beispielsweise dafür, den Sachverhalt hinsichtlich des Vorhandenseins einer gefährlichen Körperverletzung zu untersuchen, so lautet dieses erste Argument „gefaehrliche_kv“. Das zweite Argument des Prädikats „subsumtionen/2“ sollte ursprünglich die zu dem Funktor gehörenden Argumente enthalten. Diese Argumente waren in einer Liste angeordnet. Aus dem Funktor (erstes Argument von „subsumtionen/2“) und den Argumenten aus dem zweiten Argument von „subsumtionen/2“ konnte nun ein Prolog-Term gebildet werden. Die Anfrage ?- subsumtionen(gefaehrliche_kv,[13,5,2,47]). hatte dann zur Folge, dass versucht wurde folgendes Goal zu beweisen: gefaehrliche_kv(13,5,2,47). Die Argumentliste konnte gewonnen werden, indem der Anwender in einem weiteren Dialog (s. Abbildung) aus mehreren Listboxes die entsprechenden Instanzen auswählte. Wurde kein Element ausgewählt, so wurde das entsprechende Argument als nicht instanziiert betrachtet. Im vorliegenden System wurde die Anbindung der Subsumtion an die grafische Oberfläche verbessert: anstatt nur die Auswahl eines oder keines Objektes je Argument zuzulassen, ist es nun möglich eine beliebige Anzahl von Objektinstanzen auszuwählen. Der Sachverhalt wird dann hinsichtlich aller möglichen Kombinationen von hieraus erzeugbaren Termen untersucht: ?- subsumtionen(gefaehrliche_kv,[[13,69],[5],[2,7,9],[47]]). ergibt nun folgende zu beweisende Goals: gefaehrliche_kv(13,5,2,47). gefaehrliche_kv(13,5,7,47). gefaehrliche_kv(13,5,9,47). gefaehrliche_kv(69,5,2,47). 49 50 ebenso können Deliktgruppen wie Straftaten, Körperverletzungsdelikte oder Erfolgsdelikte geprüft werden genaueres hierzu bei der Beschreibung der Deduktiven Komponente 87 gefaehrliche_kv(69,5,7,47). gefaehrliche_kv(69,5,9,47). Da die Auswahl aller Instanzen somit die gleiche Bedeutung hat, wie die Auswahl keiner Instanz, muss im Dialog jeweils mindestens eine Instanz ausgewählt werden. Voreingestellt ist jeweils, dass alle Elemente ausgewählt sind. Dialog: Auswahl der bei der Subsumtion zu berücksichtigen Instanzen 6.5.2.5 Rückfragen des Systems Während der soeben beschriebenen Anfragen mittels „constrain_and_test/1“ oder „subsumtionen/2“ kann es vorkommen, dass das System bei der juristischen Subsumtion zu einem Punkt gelangt, wo es verschiedene Ansichten und somit verschiedene Möglichkeiten, einen Sachverhalt zu bewerten, gibt. In einem solchen Fall muss der Anwender eine Entscheidung treffen, damit das System den Sachverhalt weiter untersuchen kann (näheres hierzu in Kapitel 6.8.2). Dazu wird dem Benutzer der in der Abbildung zu sehende Dialog präsentiert. 88 Dialog: Bearbeitung von Meinungen und Entscheidungen Ganz oben steht zunächst die eigentliche Frage, welche es zu beantworten gilt. Über den „Select-Button“ kann eingestellt werden, ob diese Frage umstritten ist oder nicht. Nur wenn dieser Button eingedrückt ist, die Frage also strittig ist, wird der mittlere Teil angezeigt. Dieser enthält zum einen eine Übersicht über die zu diesem Problem vertretenen Meinungen. Diese Meinungen können in einem anderen Dialog bearbeitet werden. Klickt man auf den Button mit der Aufschrift „ansehen“ öffnet sich ein Fenster, in welchem die Argumente der selektierten Meinung zu sehen sind. Auf diese Weise lassen sich mehrere solcher Fenster öffnen, was dabei helfen soll, eine Stellungnahme abzugeben, welche in einem Textfeld eingegeben werden kann. Auch dieses ist nur zu sehen ist, wenn die Frage umstritten ist. Im unteren Teil des Dialogs kann der Anwender zum Schluss angeben, ob die von ihm eingegebene Stellungnahme die Frage mit „ja“ oder „nein“ beantwortet. Diese Antwort ist ausschlaggebend dafür, wie das System mit der Subsumtion fortfährt. 6.5.2.6 Schlussbemerkungen zur Dialogkomponente Bevor im nächsten Kapitel unter anderem erläutert wird, auf welche Weise die Datenbanksprache in die soeben beschriebenen Dialoge eingebettet ist, soll nun noch einmal kurz hervorgehoben werden, dass diese Dialogkomponente lediglich ein Kompromiss zwischen großer Benutzerfreundlichkeit und geringem Entwicklungsaufwand darstellt. Zwar erorderte die 89 Entwicklung der Komponente in ihrer jetzigen Form schon einen erheblichen zeitlichen Aufwand, doch wäre dieser sicherlich wesentlich größer gewesen, hätte man beispielsweise alle Anfragen, welche im Prolog-Terminal-Modus möglich sind, auch in die grafische Oberfläche integriert. Dennoch sollte deutlich geworden sein, dass die grafische Oberfläche den Anwender in die Lage versetzt, wesentlich einfacher mit dem System zu interagieren. 6.6 Event-Handler In diesem Kapitel wird der Event-Handler beschrieben, welcher das Bindeglied zwischen grafischer Oberfläche und dem Rest des juristischen Systems darstellt. Die grafische Oberfläche ist ja in Tcl/Tk, der Rest des Systems in Prolog implementiert. 6.6.1 ProTcXl Das Bindeglied zwischen Tcl/Tk und Prolog stellt ProTcXl51 dar. Wie bereits in Kapitel 2.1.9 erwähnt, gehören zu ProTcXl auf der einen Seite Tcl-Kommandos, die es erlauben PrologPrädikate von Tcl/Tk aus aufzurufen. Auf der anderen Seite werden von ProTcXl aber auch Prolog-Prädikate definiert, mit welchen auf Tcl/Tk-Kommandos zugegriffen werden kann. Somit gibt es zwei prinzipiell unterschiedliche Möglichkeiten der Interaktion von Tcl/Tk und Prolog, die eigentlich beliebig miteinander kombiniert werden können. Es ist sogar möglich, beispielsweise von einem Tcl/Tk-Programm aus ein Prolog-Prädikat aufzurufen, welches dann wiederum Tcl/Tk-Prozeduren aufruft. Allerdings ist eine solche Vorgehensweise nicht empfehlen. Zum einen könnten gegenseitige rekursive Aufrufe für eine Überlastung des Heaps sorgen, vor allem aber litte die Übersichtlichkeit und Sauberkeit der Systemarchitektur. Stattdessen sollte eine Entscheidung getroffen werden, ob man entweder von Tcl/Tk aus Prolog-Prädikate aufrufen oder umgekehrt von Prolog aus auf Tcl/Tk-Prozeduren zugreifen möchte. Die Empfehlung des ProTcXl 2.1 User Manuals hierzu lautet, Tcl/Tk als „Master“, also als die aufrufende Sprache, zu verwenden, wenn Anwendungen implementiert werden, in denen Prolog nur für gelegentliche Anfragen benötigt wird. Hingegen sei in Anwendungen, in welchen viel Interaktion zwischen Prolog und Tcl/Tk stattfinden soll, eine Verwendung von Prolog als „Master“ ratsam ([Mei96], S. 30, 35). Das juristische System fällt eindeutig in die zweite Kategorie. Die Anfragen an die Wissensbasis stellen einen wesentlichen Nutzen des ganzen Systems dar, mit der Folge, dass es sich bei diesen Anfragen nicht bloss um gelegentliche Anfragen handelt. Der Sinn des Systems besteht hauptsächlich darin, mit ihm zu kommunizieren. Da diese Kommunikation über die durch Tcl/Tk realisierte grafische Oberfläche geschehen soll und dabei ständig auf die PrologWissensbasis zugegriffen werden muss, findet zwangsläufig viel Interaktion zwischen Prolog und Tcl/Tk statt. Da das Wissen des juristische Systems in Prolog-Fakten und Prolog-Regeln vorliegt, hätte ein System, welches Tcl/Tk als Master verwendet, zur Folge, dass ständig über ProTcXlSchnittstellenprozeduren auf die Daten zugegriffen werden müsste, was der Forderung nach einer möglichst kleinen Schnittstelle wiederspräche. Somit fällt die Entscheidung, dass Prolog als Master verwendet wird. 51 Prolog und Tcl, das X steht für den direkten Zugriff auf die X11-Bibliothek Xlib 90 Datenübergabe von ECLiPSe nach Tcl/Tk Diese Entscheidung hat zur Folge, dass es „erlaubt“ ist, Tcl/Tk-Prozeduren von Prolog aus aufgzurufen. Dies geschieht in der Regel, um Dialoge zu starten. Beispielsweise könnte der Dialog, der benötigt wird, um eine neue Person in die Wissensbasis einzugeben, folgendermaßen gestartet werden: tcl('tcl_person_neu ##',[Schluessel]). Diese Zeile bewirkt, dass die Tcl/Tk-Prozedur mit dem Namen „tcl_person_neu“ mit dem Argument „Schluessel“ (der Schlüsselwert der neu einzugebenden Person) aufgerufen wird. Über die Argumentliste (im Beispiel „[Schluessel]“) werden Daten von ECLiPSe an Tcl/Tk übergeben. Nachdem die Prozedur ausgeführt (und der Dialog generiert) wurde, fährt das Prolog-System fort. Datenübergabe von Tcl/Tk nach ECLiPSe Abhängig von der Art des gestarteten Dialogs, kann der Anwender bestimmte Eingaben machen. Alle Dialoge sind dazu da, Daten des Anwenders entgegenzunehmen. Das System muss in der Folge auf diese Eingaben reagieren können, so dass es erforderlich ist, die Daten, die der Benutzer während eines Dialoges eingibt, an das den „Prolog-Teil“ des System weiterzuleiten. Es muss also eine Übergabe der Daten von Tcl/Tk nach ECLiPSe stattfinden. Die Möglichkeit, die Prolog-Daten von der Tcl/Tk-Seite aus direkt zu manipulieren, scheidet aus, da bewusst darauf verzichtet wird, Prolog-Prädikate von Tcl/Tk aus zu verwenden (s.o.). Stattdessen wird die Datenübergabe realisiert, indem zum Abschluss eines Dialoges Ereignisse erzeugt werden, die das Prolog-System empfängt und verarbeitet. Ein solches Ereignis wird auf Tcl/Tk-Seite folgendermaßen produziert: prolog_event arg1 arg2 ... . Die Argumente „arg1 arg2 ...“ können hierbei beliebige Zeichenketten sein und auch die Daten enthalten, die an das Prolog-System übergeben werden sollen. So liesse sich, nachdem in einem Dialog zur Eingabe von Personendaten die entsprechenden Werte eingegeben wurden, folgendermaßen über ein Ereignis dem Prolog-System mitteilen, dass ein Person-Objekt („Doris Meier“) in die Datenbank eingefügt werden soll: prolog_event Person_einfuegen 1 Meier Doris w 12 nein Das erste Argument („Person_einfuegen“) enthält die Information für das Prolog-System, dass eine Person in die Datenbank eingefügt werden soll, die weiteren Argumente enthalten die zu der Person gehörenden Daten wie Geschlecht und Alter. Damit das Ereignis überhaupt ausgelöst werden kann, muss es zuvor an eine Aktion „gebunden“ worden sein. Dies kann so aussehen. button dialog.ok -command "prolog_event Person_einfuegen $key $name ..." pack dialog.ok Hierdurch wird ein „Button“ mit Namen „dialog.ok“ erzeugt. Sobald mit der Maus auf diesen geklickt wird, wird das hinter „command“ stehende Kommando ausgeführt; es wird also das Prolog-Ereignis „Person_einfuegen ...“ ausgelöst. 91 Selbstverständlich sind auf der Prolog-Seite entsprechende Prädikate erforderlich, um die erhaltenen Informationen sinnvoll zu verwerten. Ausserdem muss das Ereignis zunächst empfangen werden. Während ein Tcl/Tk-Dialog läuft, blockiert das Prolog-System nicht, sondern läuft normal weiter. Um Ereignisse empfangen zu können, muss das System zunächst in einen Wartezustand versetzt werden, was mit Hilfe des von ProTcXl bereit gestellten Prädikats „tk_next_event/1“ geregelt wird: tk_next_event(Ereignis). Hierdurch wird das Prolog-System angehalten bis ein Tcl/Tk-Ereignis empfangen wird. Dabei wird dann die Argumentliste des von Tcl/Tk ausgelösten Ereignisses mit der Prolog-Variable („Ereignis“) unifiziert. Die Variable enthält nun die Informationen, die das System benötigt, um zu wissen, was es tun soll. Zusammengefasst, wird also zuerst ein Dialog gestartet. Direkt danach wird das PrologSystem in einen Zustand versetzt, in dem es auf Ereignisse wartet. Die durch den Aufruf der Dialog-Prozedur erzeugte Oberfläche gibt dem Anwender die Möglichkeiten, Eingaben zu tätigen und die Eingabe – in der Regel durch einen Mausklick auf einen bestimmten „Button“– abzuschliessen. Die Aktion, die benötigt wird, um die Eingabe abzuschliessen, löst ein Ereignis aus, das vom Prolog-System empfangen wird. Das Ereignis enthält Informationen, welche das System benötigt, um zu „wissen“, wie es fortfahren soll. 6.6.2 Funktionsweise des Event-Handlers Sollen während eines Dialoges mehrere Ereignisse an das System gesendet werden, so muss dieses nach Empfang eines Ereignisses ständig über das Prädikat „tk_next_event/1“ in den Wartezustand zurückversetzt werden, um empfangsbereit zu bleiben. Dies wird durch den „Event-Handler“ geleistet. Ausserdem ist der Event-Handler dafür zuständig, die eigentlichen Reaktionen auf die empfangenen Ereignisse auszulösen, also auch die über die Tcl/TkEreignisse empfangenden Informationen zu interpretieren. Der Event-Handler hat folgenden prinzipiellen Aufbau: event_handler:tk_next_event(EventDescription),!, event_handler(EventDescription). event_handler([EventName|EventParameters]):handle_event(EventName,EventParameters),!, event_handler. Das Prädikat event_handler/1 bewirkt, dass auf ein Ereignis „EventDescription“ gewartet wird und dieses danach von dem Prädikat „event_handler/2“ verarbeitet wird. Das Ereignis „EventDescription“ setzt sich zusammen aus einem Ereignisnamen „EventName“ und dazugehörigenden Argumenten „EventParameters“. Das Prädikat „handle_event/2“ besteht aus einigen Klauseln, die für jeweils eine gewisse Art von Ereignissen stehen. Eine dieser Klauseln sieht beispielsweise folgendermaßen aus: handle_event("Person_einfuegen",[S,N,V,G,A,W]):db_insert(person(S,N,V,G,A,W)), naechster_schluessel(person,_), tcl('destroy .person_eingabe'). 92 Diese Klausel dient der Einfügung einer Person in die Wissensbasis. Das Prädikat „db_insert/1“ erledigt hierbei das Wesentliche: die Einfügung in die Datenbank. Das Prädikat „naechster_schluessel/2“ sorgt dafür, dass der nächste Schlüssel, der an ein neu erschaffenes Person-Objekt vergeben wird, um eins erhöht wird (s. Kapitel 6.7.2). So gibt es zu den verschiedensten Datenbankänderungen eigene „handle_event/2“-Klauseln. Fast allen ist gemein, dass sie – nachdem sie die Datenbankänderung bewirkt haben – die Dialogoberfläche anpassen. Beispielsweise könnte ein soeben eingefügtes Element in eine Liste in der Bildschirmansicht eingefügt werden müssen. Im vorliegenden Beispiel wird der Dialog zur Personeneingabe („.person_eingabe“) über das „destroy“-Kommando komplett geschlossen. Wichtig ist bei diesen Oberflächen-Anpassungen, dass sie vom Event-Handler aus ausgeführt werden. Prinzipiell hätten sie schon vorher, nämlich vom eigentlichen Tcl/Tk-Dialog aus, befohlen worden sein können. Dies geschieht jedoch nicht, da ansonsten im Falle des Scheiterns eines Datenbank-Updates dieser Schritt wieder zurückgenommen werden müsste. Scheitert im Beispiel das „db_insert/1“-Prädikat aus irgendwelchen Gründen, wird die Oberflächenanpassung erst gar nicht ausgeführt, der Dialog im Beispiel also nicht geschlossen. Nachdem das Prädikat „handle_event/2“ erfolgreich war, wird „event_handler/0“ erneut aufgerufen. Somit liegt hier im Prinzip eine Endlosschleife – die sogenannte „Event-Loop“ – vor. Diese kann jedoch über das Ereignis „exit_eventhandler“ und die dazugehörige handle_event/1-Klausel handle_event("exit_eventhandler"):!, fail. verlassen werden. Das genaue Zusammenspiel von ECLiPSe und Tcl/Tk soll nun noch einmal an einem Beispiel erläutert werden (vgl. Sequenzdiagramm). Am Anfang steht der Systemstart. Der Anwender möchte nun ein neues Person-Objekt eingeben. Daher wird vom Prolog-System52 aus das Kommando gegeben, einen Dialog zur Personeneingabe zu starten. Diese Aufgabe erledigt Tcl/Tk. Es wird eine Oberfläche zur Personeneingabe angezeigt. Das Prolog-System erhält nun die Kontrolle zurück. Gleichzeitig ist allerdings auch die Tcl/Tk-Oberfläche aktiv. Damit die hier generierten Ereignisse verarbeitet werden können, wird also als nächstes der Event-Handler gestartet. Dieser gibt nun die Kontrolle über das „tk_next_event/1“-Prädikat an Tcl/Tk ab. Angenommen, der Anwender gibt nun Personendaten ein. Die Oberfläche, mit der Anwender dabei interagiert, enthält unter anderem einen Button mit der Aufschrift „übernehmen“ und einen mit der Aufschrift „abbrechen“. Der Button mit der Aufschrift „übernehmen“ soll dazu dienen, die getätigten Eingaben in die Datenbank zu übernehmen, wobei der Dialog aber geöffnet bleiben soll. Der Button mit der Aufschrift „abbrechen“ soll den Eingabe-Dialog schließen. Sobald der Anwender nun beispielsweise auf den Button „übernehmen“ klickt, sendet Tcl/Tk das Ereignis „person_einfuegen ...“ an den Event-Handler. Dieser erledigt das Datenbank-Update und wartet durch „tk_next_event/1“ auf das nächste Ereignis. Der Dialog zur Person-Objekt-Eingabe bleibt dabei geöffnet, so dass der Anwender nun weitere Daten eingeben kann. So könnte es als nächstes sein, dass der Anwender eingeben möchte, dass ein Schaden, der Person, die gerade eingegeben wird, einen bestimmte Folgeschaden verursacht hat. In diesem 52 genauer wäre: der Prolog-Anteil des Systems ohne den Event-Handler 93 Fall sollte dem Anwender nun eine Liste von Schäden präsentiert werden, von denen er einen auswählen muss. Das Problem hierbei ist nun, dass der Personeneingabe-Dialog erst einmal nicht über die notwendigen Daten verfügt: Er kennt nicht die Liste der Schäden, die er dem Anwender zur Auswahl präsentieren soll. Diese Liste kann er jedoch der Datenbank entnehmen. Hierzu muss der Dialog nun ein Ereignis an das Prolog-System senden („prolog_event folgen_bearbeiten ...“). Als Folge auf dieses Ereignis wird ein weiterer Tcl/Tk-Dialog gestartet: der Dialog zur Auswahl des Folgeschadens. Danach wird das Prolog-System wieder in den Wartezustand versetzt („tk_next_event/1“). Wenn der Anwender die Folge ausgewählt hat, wird ein Ereignis zur Einfügung der Folge in die Datenbank ausgelöst („folge_einfuegen“) und der Folgeauswahldialog geschlossen. Der übergeordnete Personeneingabedialog bleibt geöffnet. Damit die von ihm produzierten Ereignisse weiter entgegengenommen werden können, wird abermals „tk_next_event/1“ aufgerufen. 3URORJ 6\VWHP (YHQW +DQGOHU 7FO7N ! Sequenzdiagramm: Beispielinteraktion zwischen ECLiPSe und Tcl/Tk Drückt der Anwender nun auf den „abbrechen“-Button, so wird das Ereignis „dialog_beenden“ ausgelöst. Hierauf reagiert der Event-Handler, indem er eine Tcl/Tk-Prozedur aufruft, die zum einen den Dialog zur Eingabe von Person-Objekten schließt, zum anderen das Ereignis „exit_eventhandler“ produziert. Hierauf antwortet der Event-Handler, indem er die Event-Loop verlässt, wodurch der Event-Handler verlassen wird. Probleme bei der Datenübergabe Bei der Datenübergabe zwischen Prolog und Tcl/Tk können aufgrund der unterschiedlichen Typ-Konzepte einige Probleme auftreten. So sind Leerzeichen in Tcl/Tk-Zeichenketten Trennsymbole für Listen. Eine Zeichenkette mit Leerzeichen wird in Tcl/Tk daher als Liste interpretiert, was es erforderlich macht, Zeichenketten zu konvertieren. 94 Ein größeres Problem bei der Datenübergabe zwischen Prolog und Tcl/Tk tritt auf, wenn versucht wird, mehrere Ereignisse hintereinander auszulösen. Werden in Tcl/Tk beispielsweise mehrere Prolog-Ereignisse an einen Mausklick gebunden, so wird tatsächlich nur eines dieser Ereignisse ausgelöst. Das Auslösen mehrerer Ereignisse kann aber erforderlich sein, wenn als Resultat eines Dialoges mehrere Datenbankänderungen durchgeführt werden sollen. Beispielsweise könnte ein Dialog geöffnet sein, in welchem der Anwender ein Verhalten-Objekt eingeben soll. Hierzu muss zum einen angegeben werden, wie die Bezeichnung des Verhalten-Objekts lautet (z.B. „schlagen“), zum anderen muss angegeben werden, wer die ausführende Person des Verhaltens ist. Möchte man nun die nötigen Datenbankeinfügungen vornehmen und die Fakten verhalten(Verhalten_Schluessel,“schlagen“). fuehrt_aus(Verhalten_Schluessel,Person_Schluessel). einfügen, so sind zwar zwei Datenbankeinfügungen erforderlich, diese können aber nicht durch zwei hintereinander ausgelöste Prolog-Ereignisse veranlasst werden. Der Grund hierfür ist, dass ECLiPSe-Code im Gegensatz zu Tcl/Tk-Programmen nicht „reentrant“ ist, was bedeutet, dass nicht auf mehreren Kopien des ECLiPSe-Code gleichzeitig operiert werden kann. Stattdessen werden in einem solchen Fall, die Ereignisse zu Ereignis-Listen zusammengefügt, so dass nur ein Ereignis (die Liste von Ereignissen) ausgelöst werden muss. prolog_event „. $ereignis1 $ereignis2“ Der Punkt („.“) dient hierbei als Listenoperator. Der Event-Handler verfügt über folgende Klausel, um solche Ereignislisten (oder Listen von Ereignislisten) zu verarbeiten: handle_event(".",[[E1H|E1T],[E2H|E2T]]):handle_event(E1H,E1T), handle_event(E2H,E2T). 95 6.7 Datenbank-Management-System In obigen Kapitel 6.6 wurde dargestellt, dass die Dialogkomponente Ereignisse an den EventHandler verschickt, welcher daraufhin bestimmtes System-Verhalten auslöst. Auf diese Weise wird insbesondere das Datenbank-Management-System angesprochen. Wie diese Komponente des juristischen Systems funktioniert, soll hier dargestellt werden. Das Datenbank-Management-System des juristischen Systems hat beispielsweise die Aufgabe, die Vergabe der Objekt-Schlüssel zu verwalten. Eine der wichtigsten Aufgaben des DBMS ist es, Änderungen an den Datenbankinhalten zu organisieren. So wird über das DBMS Wissen in die Datenbanken eingefügt, gelöscht oder verändert. Diese Operationen können darüber hinaus in Transaktionen zusammengefasst werden, für deren Verwaltung auch das DBMS zuständig ist. Außerdem überwacht das DBMS die Integrität der Datenbanken. Zum einen geschieht dies durch die Überwachung der explizit formulierten Integritätsbedingungen, zum anderen werden als Reaktion auf bestimmte Situationen mit Hilfe von Triggern konsistente Datenbankzustände aktiv erzeugt. 6.7.1 Datenbankänderungsoperationen: Insert, Delete, Update Im juristischen System können Prolog-Klauseln mit dem Prädikat „db_insert/1“ in die Wissensbasis eingefügt werden. So kann die Einfügung eines Person-Objektes über db_insert(person(1,"Müller","Peter","m",30,"nein")). erfolgen. Realisiert wird diese Einfügung mit Hilfe des Meta-Prädikats „assert/2“: db_insert(Clause):assert(Clause), log_entry(ta(assert(Clause),retract(Clause))). Über „assert(Clause)“ wird die entsprechende Klausel in die Wissensbasis geschrieben. Das Prädikat „log_entry/1“ protokolliert die Datenbankänderung. Dies wird in Kapitel 6.7.3 genau beschrieben. Auf ähnliche Weise kann Wissen aus der Wissensbasis auch wieder entfernt werden. Dies geschieht durch „retract(Clause)“, wodurch die erste zu „Clause“ passende Klausel aus der Wissensbasis entfernt wird: db_delete(Clause):retract(Clause), log_entry(ta(retract(Clause),assert(Clause))). Letztlich ist es auch möglich, Elemente der Wissensbasis zu verändern. Realisiert wird dies dadurch, dass die Klausel in ihrer alten Form entfernt wird und in der veränderten Form eingefügt wird. db_update(Clause,NewClause):retract(Clause), assert(NewClause), log_entry(ta((retract(Clause),assert(NewClause)), (retract(NewClause),assert(Clause)))). 96 6.7.2 Verwaltung der Objekt-Schlüssel Wie in Kapitel 5.4.2 beschrieben wurde, besitzt jedes Objekt des juristischen Systems einen Schlüssel. Diese Schlüssel sind für den Anwender des Systems unsichtbar. Das DBMS hat dafür zu sorgen, dass niemals ein und der selbe Schlüsselwert für zwei verschiedene Objekte der selben Klasse vergeben wird. Zu diesem Zweck merkt sich das System mit Hilfe des Prädikats „schluessel_nr/2“ den Schlüssel, welcher als nächstes an ein neu erschaffenes Objekt einer bestimmten Klasse zu vergeben ist. Die Fakten, in welchen dieses Wissen gespeichert ist, können in etwa so aussehen: % schluessel_nr(Klasse, Nr):% Nr ist der Schlüssel, welcher an das nächste neue Objekt der % Klasse „Klasse“ zu vergeben ist. schluessel_nr(person,2). schluessel_nr(personenmerkmal,1). schluessel_nr(gegenstand,3). schluessel_nr(verhalten,1). ... Das DBMS stellt Prädikate zur Verfügung, mit welchen diese Fakten manipuliert werden können. Wird etwa ein neues Person-Objekt erschaffen, so wird mit dem Prädikat „naechster_schluessel(Klasse)“ der zu Klasse gehörende Schlüssel-Zähler um eins erhöht. 6.7.3 Transaktionen Die in Kapitel 6.7.1 beschriebenen Datenbankänderungsoperationen können zu Transaktionen zusammengefasst werden. Der einzige Zweck, welcher im juristischen System durch die Transaktionen verfolgt wird, ist das Recovery. Nach „Fehlern“ soll die Datenbank wieder in ihren letzten konsistenten Zustand versetzt werden. Im juristischen System können zwei Arten von „Fehlersituationen“ eintreten: a) Die Datenbank befindet sich in einem inkonsistenten Zustand. Ein solcher Zustand kann eintreten, wenn beispielsweise „unsinnige“ Eingaben gemacht wurden. b) Der Benutzer bricht eine Transaktion ab. Beide Fehler führen dazu, dass das DBMS den letzten konsistenten Zustand wiederherstellt. Auf inkonsistente Datenbankzustände wird in Kapitel 6.7.4 genauer eingegangen. Die Beschreibung der Funktionsweise des Transaktionssystems im juristischen System orientiert sich daher im Folgenden hauptsächlich an manuellen Transaktionsabbrüchen. Die Bedienung des juristischen Systems wurde in Kapitel 6.5.2 ausführlich beschrieben. Dort wurde unter anderem auch dargestellt, dass die meisten Dialoge über die Buttons „übernehmen“, „abbrechen“ und „fertig“ verfügen. Die genaue Semantik dieser Buttons wird nun erläutert: - 97 „übernehmen“: Drückt der Anwender „übernehmen“, so werden alle Datenbankänderungen, welche innerhalb des Dialoges vorgenommen wurden, „endgültig“ in die Datenbank übernommen. - „abbrechen“: Der „abbrechen“-Button wird verwendet, um den Dialog abzubrechen. Alle Änderungen die innerhalb dieses Dialoges bereits erfolgt sind, sollen zurückgenommen werden. - „fertig“: Ein Druck auf den Button „fertig“ hat zur Folge, dass einerseits alle Datenbankänderungen – wie bei „übernehmen“ – „endgültig“ in die Datenbank übernommen werden. Gleichzeitig bewirkt ein solcher Knopfdruck, dass der Dialog beendet wird. Wie man leicht sieht, ähneln die Bedeutungen der Buttons den Operationen, welche auf Transaktionsebene zur Verfügung stehen. So entspricht ein „fertig“ oder „übernehmen“ in etwa der „commit“-Operation; der „abbrechen“-Button hat den gleichen Effekt wie die Operation „abort“. Diese Ähnlichkeiten legen es nahe, alle Änderungen, welche innerhalb eines Dialoges vorgenommen werden, als Transaktion zusammenzufassen. Wird ein Dialog dann beendet, so auch die Transaktion. Je nach dem, ob der Dialog über „abbrechen“ oder „fertig“ beendet wird, ist eine „abort“- beziehungsweise „commit“-Operation auszuführen. Ursprünglich war beabsichtigt, die (ansatzweise im juristischen System implementierte) „savepoint“Operation dazu zu verwenden, den „übernehmen“-Button zu realisieren. Dies ist allerdings nicht erforderlich, da die gewünschte Funktionalität des „übernehmen“-Buttons durch eine „commit“-„BOT“-Folge erreicht werden kann. Zur Implementierung von Transaktionen ist eine Log-Datei erforderlich, in welcher Datenbank- und Transaktions-Operationen protokolliert werden. Dies war bereits in Kapitel 6.7.1 zu sehen. Eine solche Log-Datei kann beispielswesie folgendermaßen aussehen: Transaktions-Log Schritt Operation 1 2 3 4 5 6 7 Log-Eintrag Redo „Dialog starten” BOT db_insert(Clause1) assert(Clause1) db_insert(Clause2) assert(Clause2) db_update(Clause1,NewClause1) retract(Clause1) assert(NewClause1) „übernehmen“ COMMIT BOT db_delete(Clause1) retract(Clause1) „abbrechen“ ABORT Undo retract(Clause1) retract(Clause2) assert(Clause1) retract(NewClause1) assert(Clause1) Hier wurde zunächst eine Transaktion mit „BOT“ begonnen, danach wurden über „db_insert/1“ zwei verschiedene Klauseln eingefügt. Der Log-Eintrag hierfür besteht aus einem Redo- und einem Undo-Teil. Der Redo-Teil enthält die Informationen darüber, wie die Operation wiederholt werden könnte; im Undo-Teil steht, wie die Operation rückgängig gemacht werden kann. Letztere Information ist wichtig, um bei einem etwaigen Rollback, die vorgenommenen Änderungen zu revidieren. In Schritt 4 wird eine Änderung vorgenommen. Dies wird durch eine Löschung und eine Einfügung realisiert, weswegen auch zwei Log98 Einträge benötigt werden. In Schritt 5 wird der „übernehmen“-Button gedrückt. Dies hat zur Folge, dass ein „commit“ und ein „abort“ erfolgt. Im vorletzten Schritt erfolgt eine Löschung, ehe in Schritt 7 der „abbrechen“-Knopf gedrückt wird, was ein „abort“ nach sich zieht. Der „abort“ bewirkt, dass – in umgekehrter Reihenfolge – die Undo-Operationen ausgeführt werden, bis das letzte „BOT“ erreicht wird. Somit werden im Beispiel die Schritte 1-4 nicht zurückgenommen. Zu beachten ist allerdings, dass die Dialoge in einer hierarchischen Struktur angeordnet sind. Wird ein Vaterdialog abgebrochen, so sollen alle Eingaben, die in Unterdialogen getätigt wurden – unabhängig davon, ob sie schon mit „fertig“ oder „übernehmen“ bestätigt wurden –, zurückgenommen werden. Dies macht geschachtelte Transaktionen erforderlich. Ausführliche Informationen über geschachtelte Transaktionen finden sich in [VG93] (S. 251 ff.). Solche Transaktionen können sogenannte Subtransaktionen enthalten, welche aus Sicht der jeweiligen Vater-Transaktion eine atomare Einheit darstellen. Dadurch, dass Subtransaktionen wiederum geschachtelte Transaktionen sein können, gibt es verschiedene Schachtelungsstufen. Im juristischen System korrespondiert der so entstehende Schachtelungsbaum mit der Dialoghierarchie. Hier ein Beispiel für eine geschachtelte Transaktion: [BOT ... [BOT [BOT ... COMMIT] ... [BOT ... COMMIT] COMMIT] COMMIT] Eine Folge daraus, dass im juristischen System geschachtelte Transaktionen erlaubt sind, ist, dass bei einem „abort“ nicht lediglich das letzte „BOT“ gesucht werden darf, wie oben beschrieben wurde. Stattdessen muss genau der „BOT“ gesucht werden, welcher zu der aktuellen Transaktionsebene gehört. Dies wurde im vorliegenden System folgendermaßen implementiert: Ein Zähler wird auf null gesetzt. Das Transaktions-Log wird rückwärts abgearbeitet und alle Undo-Operationen werden ausgeführt. Bei jedem „commit“ oder „abort“ wird der Zähler um eins erhöht und bei jedem „BOT“ um eins reduziert. Ist bei Entdeckung eines „BOT“ der Zähler auf null, so ist der Vorgang beendet. 6.7.4 Integritätsprüfung In obigem Kapitel wurde die Aussage gemacht, das im juristischen System zwei verschiedene „Fehlersituationen“ eintreten können. Auf den Abbruch durch den Benutzer wurde bereits ausführlich eingegangen. Dieses Kapitel beschäftigt sich mit inkonsistenten Datenbankzuständen, der anderen Fehlersituation. Führt eine Benutzereingabe zu einem inkonsistenten Zustand, so ist diese Eingabe vom DBMS zurückzuweisen. Daher muss das DBMS, bevor es Datenbankänderungen endgültig akzeptiert, prüfen, ob die Integritätsbedingungen erfüllt sind. Wie bereits in Kapitel 2.1.3.4 gesagt wurde, sollen hier unter Integritätsbedingungen nur bestimmte, durch besondere Regeln beschriebene Integritätsbedingungen verstanden werden. Durch diese Regeln lässt sich das Prädikat „inconsistent/0“ herleiten. Der jeweilige Regelrumpf beschreibt einen inkonsistenten Datenbankzustand. Diese Regel besagt beispielsweise, dass ein Datenbankzustand inkonsistent ist, wenn zwei Personen den gleichen Vor- und Nachnamen besitzen: inconsistent:person(S1,N1,V1,_,_,_), person(S2,N2,V2,_,_,_), not S1=S2, N1=N2, V1=V2. 99 Zwar sollten auch solche Eingaben prinzipiell möglich sein (vgl. Kapitel 6.5.2.1.1), da aber Personen mit gleichem Namen in der aktuellen Systemversion nicht auseinandergehalten werden können, wurde diese Bedingung formuliert. Hier zwei weitere Beispiele für Integritätsbedingingen, welche unsinnige Eingaben abfangen: inconsistent:schutzverhaeltnis(P,P). inconsistent:ist_indir_folge_von(A,B), ist_indir_folge_von(B,A). Die erste Bedingung drückt aus, dass eine Person nicht in einem Schutzverhältnis zu sich selbst stehen kann, die zweite schließt Zyklen in der Relation „ist_indir_folge_von/2“ aus: Kein Erfolg darf (indirekt) sich selbst bedingen. Viel mehr Integritätsbedingungen existieren im juristischen System nicht. Daher wurde auch davon abgesehen, eine inkrementelle Integritätsprüfung vorzunehmen. Somit werden stets alle Bedingungen überprüft und nicht nur die Bedingungen, welche durch die vorgenommenen Datenbankänderungen betroffen sein könnten. Weiter oben wurde bereits gesagt, dass der Datenbankzustand nur zu Ende einer Transaktion konsistent zu sein hat. Der Grund dafür ist, dass der Fall eintreten kann, dass während eines komplexeren Dialoges mehrere Eingaben getätigt werden müssen, welche erst in ihrer Gesamtheit wieder zu einem konsistenten Zustand führen. Daher sind die Integritätsbedingungen unmittelbar vor jedem „commit“ zu prüfen. Dies wird im juristischen System durch folgende Implementation des Prädikats „db_commit“ gewährleistet: db_commit:if_then_else( not inconsistent, log_entry(commit), (bell,fail) ). Dieses Prädikat besagt, dass ein „commit“ nur dann durchgeführt wird (indem der entsprechende Eintrag in die Log-Datei erfolgt), wenn der Datenbankzustand nicht inkonsistent ist. Ansonsten erfolgt ein Signalton („bell“) und „db_commit“ scheitert. Ein Problem tritt im Zusammenhang mit geschachtelten Transaktionen auf: Es kann vorkommen, dass in einem Unterdialog alles korrekt eingegeben wurde und dennoch ein inkonsistenter Datenbankzustand vorliegt. Der Grund hierfür ist, dass ein übergeordneter Dialog ungültige oder unvollständige Eingaben enthält. In solchen Fällen soll der Unterdialog natürlich abgeschlossen werden können, da im übergeordneten Dialog ja noch Änderungen vorgenommen werden können. Ein Beispiel: Der Dialog zur Person-Eingabe wird gestartet. Ohne irgendeine Eingabe zu machen wird von diesem Dialog aus der Dialog zur Eingabe von Folgeschäden aufgerufen. Angenommen, hier werden nur gültige Eingaben vorgenommen. Wenn nun die untergeordnete Transaktion beendet werden soll, fällt bei der Integritätsprüfung auf, dass die soeben eingegebenen Folgeschäden zu einem inkonsistenten Zustand führen, da die Person, welche diese Schäden erlitten haben soll, nicht existiert. Der Grund hierfür ist, dass der Person-EingabeDialog noch nicht beendet wurde. 100 Dieses Problem ist für geschachtelte Transaktionen typisch und lässt sich nicht so leicht vermeiden. Daher werden in der Regel von Subtransaktionen nur die Eigenschaften A und I des ACID-Prinzips verlangt (s. [VG93], S. 254). Stattdessen könnte man beispielsweise auch Integritätsbedingungen an bestimmte Dialoge koppeln. Da das oben beschrieben Problem aber nur in einem speziellen Fall im juristischen System auftreten kann, wird – wie oben beschrieben – in diesem Fall das ACID-Prinzip gelockert und auf die Integritätsprüfung verzichtet. 6.7.5 Trigger im juristischen System Ein besonderes Integritätsproblem stellt die referenzielle Integrität dar. Damit ist gemeint, dass nicht auf Objekte verwiesen werden darf, welche nicht existieren. Beispielsweise kann kein Personenmerkmal existieren, wenn es den dazugehörigen „Inhaber“ des Merkmals nicht gibt. Die referenzielle Integrität kann – wie in obigem Beispiel beschrieben – durch Integritätsbedingungen überwacht werden. Diese Vorgehensweise ist in bestimmten Fällen allerdings nicht praktikabel beziehungsweise sehr umständlich. Diese Fälle treten bei der Löschung von Objekten ein. Wird ein Objekt gelöscht, so müssen zur Wahrung der referenziellen Integrität alle Elemente, welche auf dieses Objekt verweisen, ebenfalls gelöscht werden. Dies stellt mitunter eine große, dem Anwender nicht zumutbare Arbeit dar. In solchen Fällen bieten sich Kaskaden-Löschungen an. Dies sind Löschungen, bei welchen Objekte, welche auf das gelöschte Element verweisen, gleich mitgelöscht werden. Kaskaden-Löschungen können, wie im juristischen System geschehen, bequem über Trigger realisiert werden. Ein Trigger hat in diesem System folgendes Aussehen: trigger(Event,Condition,Action). Wird beispielsweise ein Person-Objekt gelöscht, ist gleich eine ganze Menge von Triggern betroffen. Ein interessantes Exemplar stellt dabei diese aktive Regel dar: trigger( db_delete(person(Pers,_N,_V,_G,_A,_W)), ( fuehrt_aus(Verh,Pers), not (fuehrt_aus(Verh,Pers2),not Pers=Pers2) ), db_delete(verhalten(Verh,_B) ) ). Die Regel besagt, dass bei Löschung einer Person automatisch jedes Verhalten-Objekt gelöscht werden soll, welches von dieser Person ausgeführt wurde, außer an diesem Verhalten war noch eine andere Person beteiligt. Durch die so eventuell vorzunehmende VerhaltenLöschung können neue Trigger aktiviert werden, beispielsweise dieser: trigger(db_delete(verhalten(Verh,_B)), fuehrt_aus(Verh,P), db_delete(fuehrt_aus(Verh,P))). Im Folgenden soll nun beschrieben werden, wie dieses aktive Konzept in das DBMS des juristischen Systems integriert wurde. Jedes DBMS-Prädikat wird über das Meta-Prädikat „dbms/1“ aufgerufen. Ein solcher Aufruf kann dann beispielsweise so aussehen: dbms(db_delete(fuehrt_aus(12,3))). Das Meta-Prädikat „dbms/1“ ist folgendermaßen definiert: 101 dbms(Aktion):aktion(Aktion), reaktion(Aktion). Durch das Prädikat „aktion/1“ wird das jeweilige Prädikat „Aktion“ ausgeführt. Danach wird im Prädikat „reaktion/1“ geprüft, ob das System auf die soeben ausgeführte Aktion (welche aus Trigger-Sicht das Ereignis darstellt) zu reagieren hat. Dies geschieht mit Hilfe folgender Prädikate: reaktion(Event):findall( ca(Condition,Action), event_condition(ec(Event,Condition),Action), CAs ), checklist(condition_action,CAs), !. % keine Reaktion (Trigger) definiert reaktion(_). event_condition(ec(Event,Condition),Action):trigger(Event,Condition,Action), Condition. condition_action(ca(Condition,Action)):Condition,!, dbms(Action). condition_action(_). Anstatt diese Prädikate im Einzelnen genau zu erklären, wird an dieser Stelle lediglich erläutert, was durch sie gemeinsam geleistet wird: - Alle Trigger werden gefunden, deren Ereignisteil auf das konkrete Ereignis „passt“. Die jeweiligen Condition-Action-Paare der einzelnen Trigger werden in einer Liste „CAs“ zusammengefasst. Nach der Reihe werden die Bedingungen aus der Liste „CAs“ überprüft. Ist eine Bedingung erfüllt, so wird die entsprechende Aktion ausgeführt, was eventuell neue Trigger betrifft ... Dieses Trigger-System ist sehr einfach, weshalb es an dieser Stelle auch nicht genauer erläutert werden braucht. Für den verfolgten Zweck (die Kaskaden-Löschung) ist dieses System vollkommen ausreichend. 102 6.8 Subsumtionskomponente Bislang wurde dargestellt, wie das Wissen des juristischen Systems organisiert ist, wie darauf zugegriffen wird und wie es bearbeitet werden kann. In diesem Kapitel soll nun erläutert werden, auf welche Weise mit Hilfe der juristischen Normen und Sachverhalts-Fakten ermittelt werden kann, ob eine bestimmte Straftat begangen wurde oder nicht. Dazu werden zunächst im Rahmen der Erläuterung der deduktiven Komponente die vom System zur Verfügung gestellten Inferenzmethoden vorgestellt. Die Subsumtionskomponente besteht allerdings nicht nur aus dieser deduktiven Komponente. Der Grund dafür ist, dass zur Entscheidung gewisser Fragen der Anwender zu Rate gezogen wird. Wie dies genau realisiert wurde, steht in Kapitel 6.8.2. Im Anschluss daran wird in Kapitel 6.8.3 genau dargestellt, wie das System eine juristische Subsumtion unter Verwendung der deduktiven Komponente und der Entscheidungskomponente vornimmt. 6.8.1 Deduktive Komponente In diesem Kapitel soll erläutert werden, auf welche Weise die Deduktive Komponente zu ihren Schlüssen kommt, wie also genau überprüft wird, ob eine juristische Norm im Sachverhalt verwirklicht ist. Hierzu sollen der Reihe nach verschiedene Inferenzstrategien vorgestellt werden, die nach und nach verbessert werden. 6.8.1.1 Top-Down Am einfachsten ist es, die Normen von Prolog top-down auswerten zu lassen. Die Klauseln sind so aufgebaut, dass dies relativ effizient geschehen kann (s. Kapitel 5.5.4). Angenommen, dem System läge ein Sachverhalt, wie in Kapitel 5.4.2.6 und im Anhang dargestellt, vor. Sei weiter angenommen, das System benötige nicht den Anwender, um gewisse Entscheidungen zu treffen. Stattdessen würde es die Fragen des Sachverhaltes selbstständig beantworten. Durch Eingabe von beispielsweise koerperverletzung(T,V,E,O). könnte man erfragen, welche Körperverletzungen begangen wurden. Man erhielte folgende Ausgabe (auszugsweise), wobei „T“ für den Schlüssel des Täters, „V“ für den Schlüssel des Verhaltens, „E“ für den Schlüssel des Erfolges und „O“ für den Schlüssel des Opfers steht: T=1, T=1, ... T=1, ... T=9, T=9, ... T=3, ... T=9, ... 103 V=1, E=1, O=2 V=1, E=1, O=2 V=1, E=1, O=2 V=3, E=4, O=7 V=3, E=5, O=7 V=8, E=9, O=8 V=3, E=4, O=7 Die beiden Nachteile dieser top-down-Inferenzmethode sind offensichtlich: Zum einen werden die Antworten nicht in gewünschter Reihenfolge gegeben. Die Reihenfolge, in welcher die Antworten auf die Anfrage gegeben werden, entspricht nicht der, die bei einer juristischen Fallbearbeitung üblich ist. So kann es kaum erwünscht sein, dass zwischen zwei Taten der selben Person (mit Schlüssel 9) die Tat einer anderen Person (mit Schlüssel 3) genannt wird. Der andere offensichtliche Nachteil dieser Methode besteht darin, dass identische Antworten mehrfach angegeben werden (siehe die ersten Reihen). Dies geschieht, da die Antworten auf verschiedenen Wegen hergeleitet werden können. So kann beispielsweise eine Körperverletzung vorliegen, weil eine körperliche Misshandlung vorliegt. Gleichzeitig kann die selbe Handlung aber auch als Gesundheitsschädigung einzustufen sein, so dass mehrere Herleitungsmöglichkeiten bestehen. Ohne Nennung der Herleitungsumstände erscheint eine solche doppelte Aufzählung kaum sinnvoll. Zumindest die Mehrfachableitungen liessen sich vermeiden, wenn in die Klauseln, welche juristische Normen darstellen, „Cuts“ („!“) eingefügt würden, so dass der Suchbaum dynamisch beschränkt würde. Dies könnte folgendermassen aussehen: koerperverletzung(Taeter,Verhalten,Erfolg,Opfer):koerperl_missh(Taeter,Verhalten,Erfolg,Opfer),!. koerperverletzung(Taeter,Verhalten,Erfolg,Opfer):ges_schaedigung(Taeter,Verhalten,Erfolg,Opfer). Der „Cut“ in der ersten Klausel bewirkt, dass nicht überprüft wird, ob eine Gesundheitsschädigung vorliegt, wenn eine körperliche Misshandlung gegeben ist und somit eine Körperverletzung bereits auf diesem Wege hergeleitet wurde. Eine solche Vorgehensweise ist jedoch nicht akzeptabel, da die Semantik der Norm verändert würde. Daher wurde auch in Kapitel 5.1 entschieden, „reines“ Prolog als DDL zu verwenden. Im vorliegenden Beispiel wäre der „Cut“ kein Problem, wenn man bloß herausfinden wollte, ob eine Körperverletzung vorliegt oder nicht. Es mag allerdings auch Fälle geben, in welchen der Anwender alle verschiedenen Herleitungen einer Norm wissen möchte, was mit den obigen Klauseln nicht mehr möglich wäre. Ein solches Interesse des Anwenders ist durchaus denkbar. So könnte beispielsweise eine Herleitung einer Körperverletzung über eine körperliche Misshandlung nur mit schwachen Argumenten belegt sein, so dass es Sinn machen würde, einen weiteren Herleitungsweg zu entdecken und die Argumentation nachvollziehbarer zu gestalten beziehungsweise das Vorliegen einer Körperverletzung zu untermauern. Da nicht von vorhinein festgelegt sein soll, was mit den juristischen Normen geschieht und die Normen auch nicht eine Art „Algorithmus“ sein sollen, sondern juristisches Wissen beschreiben sollen, verbietet es sich, „Cuts“ innerhalb der Normen zu verwenden. Stattdessen kann man allerdings auf einer Meta-Ebene die Standard-Beweisstrategie von Prolog optimieren, was bei den im Folgenden beschriebenen Strategien geschehen ist. 6.8.1.2 Top-Down-Auswertung und Bearbeitung der Ergebnismenge Der oben aufgezeigte Nachteil der Mehrfachableitungen könnte auf recht naheliegende Weise behoben werden. Zunächst könnten alle Antworten gesammelt und danach Duplikate aussortiert werden. Dabei ließe sich direkt auch der Nachteil der ungewünschten Ergebnisreihenfolge beheben, wenn die Antwortreihenfolge im nachhinein der „üblichen“ juristischen Prüfungsreihenfolge angepasst würde. Die beschriebenen Schritte ließen sich mit Built-In104 Prädikaten wie findall/3 oder setof/3 recht einfach vornehmen. Da, wie in Kapitel 6.8.2 zu sehen sein wird, im juristischen System der Anwender in den Inferenzprozess eingebunden ist, brächte eine solche Vorgehensweise neue Probleme mit sich. Eines dieser Probleme besteht darin, dass Ableitungspfade beschritten werden, obwohl sie zu einer Antwort führen, die später aussortiert wird. Dies geschieht zwar im Allgemeinen sehr schnell, allerdings wird es wohl nicht selten vorkommen, dass auf diesem Ableitungspfad Entscheidungen vom Benutzer verlangt werden, die eigentlich nicht mehr zur Beantwortung der Frage notwendig sind. Hier könnten dem Anwender beispielsweise Fragen gestellt werden, die ermitteln sollen, ob eine bestimmte Handlung als körperliche Misshandlung einzustufen ist. Das System könnte zu diesem Schluss kommen, würde aber dennoch andere Ableitungspfade beschreiten und dabei Fragen stellen, die herausfinden sollen, ob eine Gesundheitsschädigung gegeben ist. Dies ist nicht nur lästig für den Anwender, sondern verstößt auch gegen die übliche juristische Vorgehensweise, in einem Fall nur auf die zur Lösung dieses Falles erforderlichen Probleme einzugehen. Das zweite Problem, welches durch die oben beschriebene Vorgehensweise entstehen würde ist, dass der Zusammenhang zwischen vom Anwender getroffenen Entscheidungen und den daraufhin gegebenen Antworten nicht mehr zu erkennen ist, wenn erst zu Ende aller Herleitungen – also nach Beantwortung aller Fragen – die Lösungsmenge präsentiert wird. Aufgrund der genannten Probleme ist dieser naheliegende Lösungsansatz zur Vermeidung von Mehrfachableitungen und Sortierung der Antworten zu verwerfen. 6.8.1.3 Generate And Test Vielmehr scheint erforderlich, dass Mehrfachableitungen schon zur Laufzeit erkannt und vermieden werden und nach Möglichkeit die Lösungen direkt in der richtigen Reihenfolge gesucht werden. Eine Möglichkeit, dies zu gewährleisten, besteht darin, alle denkbaren Ergebnisse einer Anfrage zu erzeugen und dann in der richtigen Reihenfolge zu überprüfen. Denkbar ist dabei jede Variablenbelegung, zu welcher die entsprechenden Objekte (wie beispielsweise ein bestimmter Erfolg) im Sachverhalt existieren. Um dies zu ermöglichen wird das Meta-Prädikat „jur_norm_inst/1“ benötigt. Wird es mit dem Kopf einer juristischen Norm aufgerufen, deren Parameter nicht instanziiert sind, so nimmt es eine Instanziierung vor. Beispielsweise wird durch jur_norm_inst(koerperverletzung(T,V,E,O)) als erstes folgende Instanziierung vorgenommen: T=1 V=1 E=1 O=1 More? (;) Weitere Ergebnisse werden dann in der Reihenfolge erzeugt, wie sie bei einer juristischen Prüfung erwünscht ist. Die so gewonnenen Goals werden der Reihe nach zu beweisen versucht, was mit Hilfe eines Meta-Interpreters geschieht. Auf diese Weise werden die Ergebnisse in der gewünschten Reihenfolge erzeugt, außerdem erfolgen keine Mehrfachableitungen mehr, da jede Instanziierung ja nur einmal getestet wird. 105 Insofern erzielt diese Inferenzstrategie sehr schöne Ergebnisse. Allerdings hat sie einen entscheidenden Nachteil: Da sie alle Instanzen zunächst generiert und diese jeweils testet, ist sie sehr langsam. Bei größeren Sachverhalten dauert die Ermittlung der Ergebnisse insbesondere dann sehr lange, wenn Deliktarten mit vielen Parametern – wie beispielsweise die schwere Körperverletzung – bewiesen werden sollen. Hauptursache ist hierbei die „kombinatorische Explosion“: In einem Sachverhalt mit nur jeweils 7 Objekten der Klassen Person, Verhalten und Personenschaden bestehen schon 16807 verschiedene Arten, ein Goal für die „schwere Körperverletzung“ zu erzeugen. 6.8.1.4 Constrain And Generate Die oben beschriebene Strategie kann jedoch weiter optimiert werden. Hierzu muss die Menge der zu testenden Goals beschränkt werden. Die Idee dabei ist, dass beispielsweise Personen, welche gar kein Verhalten ausüben, nicht als Täter eines Verbrechens in Frage kommen. In gleicher Weise kann niemand Opfer eines Körperverletzungsdelikts sein, der nicht auch einen Personenschaden erlitten hat. Hierzu wird das Meta-Prädikat „constrain_and_generate/1“ verwendet: constrain_and_generate(Goal):constrain(Goal,Goals), checklist(test,Goals). Zu einem (im Allgemeinen uninstanziierten) Goal werden zunächst über „constrain/2“ diejenigen Instanzen von Goal gesucht, welche als Lösung überhaupt in Frage kommen. Jedes dieser Goals wird anschließend über „test/1“ getestet. Dies entspricht der Testphase bei der Generate-And-Test-Strategie. Allerdings werden nicht alle Instanzen erzeugt („generate“), sondern nur eine eingeschränkte Menge („constrain“): constrain(Goal,Goals):setof(Goal,moeglich(Goal),Goals). Dieses Prädikat hat folgende Bedeutung: „Goals“ sind die (sortierten) Instanzen von „Goal“, welche möglicherweise bewiesen werden können. Die eigentliche Einschränkung findet somit über das Meta-Prädikat „moeglich/1“ statt. Das Prolog-Goal „moeglich(Goal)“ ist erfolgreich, wenn „Goal“ unter der Voraussetzung bewiesen werden kann, dass der Anwender alle Entscheidungen „ideal“ trifft. Hängt beispielsweise die Frage, ob eine körperliche Misshandlung vorliegt, davon ab, wie der Anwender eine bestimmte Situation beurteilt, so wird unabhängig davon die Frage nach dem Vorliegen der Misshandlung bejaht. Dieses Systemverhalten wird über folgende Klausel erreicht: moeglich(Goal):functor(Goal,entschluss,_),!. Wenn es sich bei dem zu beweisenden Goal um eine Frage an den Benutzer handelt („entschluss“), so ist dieses Goal „moeglich“. Um dies genau zu verstehen, muss an dieser Stelle kurz erläutert werden, wie der Anwender in den Beweisprozess eingebunden ist. Die in Kapitel 5 entwickelten Prolog-Regeln haben prinzipiell folgende Struktur: TBM(...):TBM1(...), TBM2(...), ... 106 Ein Tatbestandsmerkmal (TBM) liegt vor, wenn gewisse Unter-Tatbestandsmerkmale vorliegen. Ein solches Unter-Tatbestandsmerkmal kann nun auch ein sogenannter Entschluss sein. Dies kann dann in etwa so aussehen: TBM(...):TBM1(...), TBM2(...), entschluss(Die Handlung „schlagen“ ist eine Misshandlung). Damit liegt ein Tatbestandsmerkmal „TBM“ vor, wenn die Merkmale „TBM1“ und „TBM2“ vorliegen und der Anwender der Ansicht ist, dass die Handlung „schlagen“ eine Misshandlung darstellt. Wie man sich denken kann, wird der Anwender befragt, wenn das System versucht, ein Goal mit Funktor „entschluss“ zu beweisen. Genauer wird dies in Kapitel 6.8.2 dargestellt. Das Prädikat „moeglich/1“ besteht nicht nur aus der oben angegebenen Klausel. Ansonsten wäre das „TBM“ im eben genannten Beispiel nicht „moeglich“. Es sind weitere Klauseln erforderlich, um ein vorliegendes Goal hinsichtlich seiner Beweisbarkeit zu untersuchen: moeglich((A,B)):!,moeglich(A), moeglich(B). moeglich(A):clause(A,B), moeglich(B). moeglich(fail):fail. ... Die erste Klausel besagt, dass eine Konjunktion von Goals (im Beispiel also z.B. „TBM1(...),TBM2(...)“) dann „moeglich“ ist, wenn die beiden darin enthaltenen Goals jeweils diese Eigenschaft besitzen. Die zweite Klausel drückt aus, dass ein Goal möglich ist, wenn es in einem Resolutionsschritt durch ein mögliches Goal ersetzt werden kann. Durch die letzte der hier aufgeführten Klauseln wird formuliert, dass ein Goal „fail“ nicht beweisbar ist. Über das Meta-Prädikat „moeglich/1“ können somit „Regelbäume“ komplett inspiziert werden. Die folgende Tabelle zeigt, wieviel Zeit die oben beschriebenen Strategien benötigen. Gemessen wurde der Zeitbedarf für folgende Goals: koerperverletzung(T,V,E,O). schwere_kv(T,V,E,O,F). Den Messungen zu Grunde lag jeweils der in Kapitel 5.4.2.6 vorgestellte BeispielSachverhalt, dessen logische Darstellung im Anhang zu finden ist. Die Zeiten sind in Sekunden angegeben. koerperverletzung schwere_kv 107 Top-Down 0,017 0,081 Generate & Test 2,780 112,320 Constrain & Generate 0,029 0,121 An der Tabelle ist deutlich zu erkennen, dass eine größere Anzahl von Parametern den Zeitbedarf erhöht. Dies fällt insbesondere bei der Generate-And-Test-Strategie besonders unangenehm auf, welche ohnehin sehr schlechte Ergebnisse erzielt. Deutlich zu erkennen ist aber auch, dass die Constrain-And-Generate-Strategie im Vergleich dazu wesentlich besser abschneidet und sogar mit „Top-Down“ mithalten kann, obwohl „Constrain & Generate“ sogar die „richtige“ Ableitungsreihenfolge berücksichtigt... 6.8.2 Entscheidungskomponente In Kapitel 3.2.2 wurde darauf eingegangen, weshalb bestimmte juristische Entscheidungen nur von einem Menschen getroffen werden sollten. Bereits in der Einleitung wurde darauf hingewiesen, dass zur Erhaltung der „Dynamik des Rechts“ in bestimmten Fällen Meinungsstreitigkeiten durchaus erwünscht sind. So dürfen Wertungen im Zusammenhang mit unbestimmten Rechtsbegriffen und die Auslegung von Gesetzen nicht von einem Computersystem übernommen werden. Dies schränkt die Leistungsfähigkeit solcher Systeme in einem gewissem Sinne ein. Stattdessen besteht allerdings die Möglichkeit, ein System zu entwickeln, welches Meinungsstreitigkeiten verwaltet und dem Anwender bei seinen Entscheidungen assistiert. Dies ist im Fall des juristischen Systems geschehen. Problem-Objekte Um gewisse Entscheidungen treffen zu können, muss zunächst ein Problem vorliegen, zu welchem verschiedene Standpunkte existieren. Eine Entscheidung ist dann die Beantwortung eines solchen Problems unter Berücksichtigung der verschiedenen Standpunkte. An folgendem Beispiel soll gezeigt werden, wie Probleme im juristischen System modelliert werden: problem(p(15,[Gegenstandbeschr]),Problemtext):stringlist_string( ["ein_Gegenstand_<",Gegenstandbeschr,">_ein_Werkzeug"], Text ). Ein Problem besteht demnach aus einem zusammengesetzten Schlüssel und einer Problembeschreibung. Der komplexe Schlüssel setzt sich aus einer Problem-Nummer und einer Liste von Argumenten zusammen. Die Problem-Nummer klassifiziert das Problem grob, die Argumente spezifizieren es genauer. So kann – wie in obigem Beispiel – eine Problemkategorie existieren, welche für das Problem steht, ob ein bestimmter Gegenstand ein Werkzeug ist oder nicht. Im juristischen System hat dieses Problem die Nummer 15. Das Problem wird erst dadurch komplett beschrieben, dass dazu die Beschreibung eines Gegenstandes angegeben wird. Das Problem, ob ein Klebeband ein Werkzeug ist, wird somit durch die Instanz der Problem-Klasse mit dem zusammengesetzten Schlüssel „p(15,[’Klebeband’])“ dargestellt. Bei dem Attribut Problembeschreibung handelt es sich um ein abgeleitetes Attribut. Die entsprechende Ableitungsvorschrift kann der oben abgebildeten Regel entnommen werden. Die Problembeschreibung besteht demnach aus einer Umschreibung des Problems mit Hilfe der Argumentbeschreibung(en) („Klebeband“). Im Beispiel ist der so gebildete Problemtext: „ein_Gegenstand_<Klebeband>_ein_Werkzeug“. 108 Dieses Satzfragment kann später vom juristischen System dazu verwendet werden, danach zu fragen, ob ein Klebeband ein Werkzeug ist. Problem schluessel: p(INT., Argu mente: STR.-LISTE) /problembeschreibung: TEXT Abbildung: Problem-Klasse Zu beachten ist, dass sich die Argumentlisten von Problemen (im Beispiel [’Klebeband’]) nicht aus konkreten Objekte beziehungsweise deren Schlüsseln zusammensetzen, sondern textuelle Beschreibungen von Objekten enthalten. Dadurch wird erreicht, dass Regeln erzeugt werden können, die bestimmte Objekte (nämlich solche mit identischen Beschreibungen) identisch behandeln. Wurde beispielsweise während des Beweises eines Goals für ein bestimmtes Klebeband die Entscheidung getroffen, dass es sich hierbei um ein Werkzeug handelt, so „weiss“ das System beim nächsten Klebeband, dass auch dieses ein Werkzeug darstellt. Daher ist darauf zu achten, dass die textuellen Objekt-Beschreibungen (die ObjektMethoden) in einer eindeutigen Form erzeugt werden. Was damit gemeint ist, soll an diesem kurzen Beispiel gezeigt werden: Angenommen, eine Person führt ein Verhalten aus, welches die Bezeichnung „bogenschießen“ trägt. Die dabei verwendeten Gegenstände seien „Pfeil“ und „Bogen“. Nun können hieraus zwei verschiedene textuelle Repräsentationen erzeugt werden: a) „bogenschießen mit Pfeil, Bogen“ b) „bogenschießen mit Bogen, Pfeil“ In solchen Fällen sollte eine eindeutige Form gefunden werden, was in diesem Beispiel durch alphabetische Sortierung der Gegenstände geschieht (Beschreibung b). Meinung-Objekte Zu den oben beschriebenen Problemen können jeweils verschiedene Meinungen existieren. So kann es Meinungen geben, die das Problem bejahen beziehungsweise verneinen. Meinungen werden im juristischen System durch Fakten dargestellt: meinung(m(Schluessel),Problem,Bezeichnung,Antwort,Begruendung). Das erste Argument ist der Schlüssel der Meinung. Das zweite Argument enthält einen Fremdschlüssel: den Schlüssel des Problems, auf welches sich die Meinung bezieht. Im Attribut „Bezeichnung“ ist der Name der Meinung angegeben. „Antwort“ ist entweder „ja“ oder „nein“, je nach dem, ob durch diese Meinung die Auffassung vertreten wird, dass das Problem zu bejahen oder zu verneinen ist. Letztlich sollte im Attribut „Begruendung“ Text enthalten sein, welcher diese Antwort begründet. 109 Meinung schluessel: m(INTEGER) problem: Problem bezeichnung: STRING antwort: BOOL+ begruendung: TEXT Abbildung: Meinung-Klasse Ein Beispiel-Objekt der Klasse Meinung könnte so aussehen: meinung( m(1),p(15,[’Klebeband’]), ‚Meinung_von_Micha_Schmidt’, ja, ‚Klebeband_ist_ein_Werkzeug,_da_...’ ). Entscheidung-Objekte Stößt das juristische System während eines Beweises auf ein Problem (dazu später genaueres), so muss der Anwender eine Entscheidung treffen. In dem er dies tut, erschafft er ein Objekt, welches folgendermaßen aussieht: Entscheidung schluessel: e(Problem) stellungnahme: TEXT antwort: BOOL Abbildung: Entscheidungen-Klasse Das entsprechende Prolog-Fakt hat folgende Struktur: entscheidung(e(Problem),Stellungnahme,Antwort). Das erste Argument ist wieder der Schlüssel. Dieser Schlüssel wird aus dem Schlüssel eines Problems gebildet, was zur Folge hat, dass zu jedem Problem maximal eine Entscheidung existieren kann. Das zweite Attribut enthält eine Stellungnahme, das dritte die Antwort auf das Problem. Ein direkter Bezug zu einer bestimmten Meinung wird also innerhalb einer Entscheidung nicht hergestellt. So kann nicht einfach einer bestimmten Meinung zugestimmt werden. Der Grund hierfür ist, dass Entscheidungen auch dadurch entstehen können, dass Argumente aus verschiedenen Begründungen (einzelner Meinungen) gemischt werden und zusammen in die Stellungnahme einfließen. 110 Hier ein Beispiel für eine Entscheidung: entscheidung( e(p(15,[’Klebeband’])), ‚Der_Meinung_von_Micha_Meier_ist_Recht_zu_geben,_da_...’, ja ) Der Entscheidungsprozess In diesem Abschnitt soll nun soll dargestellt, auf welche Weise die eben beschriebenen Klassen Problem, Meinung und Entscheidung in die Inferenz des juristischen Systems integriert sind. Hierzu ist das Prädikat „entschluss/3“ erforderlich, welches überprüft, ob gewisse Entscheidungen vorliegen. Liegen diese nicht vor, so sorgt dieses Prädikat dafür, dass der Anwender eine Entscheidung trifft. Bevor „entschluss/3“ weiter unten genau erläutert wird, soll an Beispielen gezeigt werden, in welchem Zusammenhang es benötigt wird. - Zur Ermittlung von Klassen-Populationen: Es sei folgende Regel zur Ermittlung der Population der Werkzeug-Klasse betrachtet: werkzeug(Geg,GegBez,Ist_beweglich):gegenstand(Geg,GegBez,Ist_beweglich), entschluss(e(p(15,[GegBez])),_,"ja"). Diese Regel liest sich folgendermaßen: Ein Werkzeug ist ein Gegenstand, der durch eine entsprechende Problem-Entscheidung als solcher eingestuft ist. - Zur Berechnung abgeleiteter Attribute: Auch abgeleitete Attribute werden im juristischen System über das Prädikat „entschluss/3“ berechnet: beh_uebel_unang(Verhalten,Uebel_unang):verhalten_beschr(Verhalten,AusfBeschr), entschluss(e(p(6,[AusfBeschr])),_,Uebel_unang). Das Attribut „Uebel_unang“ ist dann ‚ja’, wenn eine bestimmte Entscheidung ‚ja’ lautet. Lautet sie ‚nein’, so ist dies auch der Wert des Attributs. - Zur Entscheidung für eine bestimmte juristische Sichtweise: Denkbar ist auch, dass von einer bestimmten juristischen Sichtweise abhängt, welche Unter-Tatbestandsmerkmale vorliegen müssen, damit ein bestimmtes Tatbestandsmerkmal erfüllt ist. So könnte beispielsweise von der Frage, ob man der Adäquanztheorie (s. Kapitel 5.4.1) folgt oder nicht abhängen, welche Modellierung einer Norm zu Grunde zu legen ist. Solche Situationen ließen53 sich beispielsweise folgendermaßen umsetzen: TBM(...):entschluss(..., ..., Entschluss), if_then_else( Entschluss = ‘ja’, TBM1(...), TBM2(...) ). 53 eine existiert juristischen System allerdings nicht 111 Dies bedeutet: Wird ein bestimmtes Problem mit ‚ja’ beantwortet (und somit beispielsweise der Adäquanztheorie zugestimmt), so muss „TBM1“ vorliegen, damit „TBM“ erfüllt ist. Wird der Theorie nicht gefolgt, so muss „TBM2“ vorliegen... Wie das Prädikat „entschluss/3“ genau arbeitet, wird jetzt erläutert. Dazu sei seine Implementierung Klausel für Klausel betrachtet: entschluss(e(Problem),Stellungnahme,Antwort):entscheidung(e(Problem),S,A),!, S=Stellungnahme,A=Antwort. Diese erste Klausel erfüllt den Zweck, dass in dem Fall, dass zu einem Problem bereits eine Entscheidung getroffen wurde, diese Entscheidung übernommen wird. Zu beachten ist in dieser Klausel die verspätete Unifikation. Man könnte der Ansicht sein, in der ersten Zeile des Klauselrumpfes könnte anstelle von „S“ bereits „Stellungnahme“ und anstelle von „A“ „Antwort“ stehen. Dies wurde aus folgendem Grund nicht getan: In dem Fall, dass „Antwort“ bereits instanziiert ist, würde der Cut nicht erreicht, wenn diese Antwort nicht zu der bereits getroffenen Entscheidung passen würde. Angenommen folgendes Goal sollte bewiesen werden: entschluss(e(p(15,[’Klebeband’])),_,"ja"). In der Wissensbasis würde bereits folgendes Fakt eingetragen sein: entscheidung(e(p(15,[’Klebeband’])),“...“,“nein“). In diesem Fall würde die oben angegebene Klausel nicht bewiesen werden können, der Cut würde aber erreicht, so dass die im Anschluss vorgestellten weiteren Klauseln von „entschluss/3“ nicht mehr berücksichtigt würden. Dies wäre aber der Fall, wenn die Unifikationen von „S“ und „A“ mit „Stellungnahme“ beziehungsweise „Antwort“ früher (vor dem Cut) erfolgt wären. Als nächstes seien folgende Klauseln betrachtet: entschluss(e(Problem),"ohne_Stellungnahme",Ja):meinung(_,Problem,_,"ja+",_),!, Ja="ja". entschluss(e(Problem),"ohne_Stellungnahme",Nein):meinung(_,Problem,_,"nein+",_),!, Nein="nein". Die Bedeutung dieser Klausel erscheint zunächst etwas verwirrend. Bislang wurde ja auch nicht erwähnt, dass das Attribut „Antwort“ in Meinung-Objekten nicht wirklich vom Typ BOOL ist. Der tatsächliche Datentyp sei als BOOL+ bezeichnet, was bedeuten soll, dass neben „ja“ und „nein“ auch die Werte „ja+“ und „nein+“ erlaubt sind. Hat eine „Antwort“ einen dieser Werte, so bedeutet dies, dass das juristische Problem, auf welches sich diese Meinung bezieht, nicht umstritten ist und mit „ja“ beziehungsweise „nein“ zu beantworten ist, was durch obige Klauseln ausgedrückt ist. Im Rahmen der Darstellung der Dialogkomponente (s. Kapitel 6.5.2.5) wurde bereits erwähnt, das juristische Probleme umstritten sein können oder auch nicht. Da es bei unumstrittenen Problemen keinen Sinn macht, vom Benutzer eine Entscheidung zu verlangen, wird stattdessen auf die oben beschriebene Weise innerhalb einer Meinung vermerkt, dass die Meinung nicht zur Diskussion steht. 112 Bislang kann der Benutzer noch keine neuen Entscheidung-Fakten erzeugen. Dies wird durch die letzte Klausel ermöglicht: entschluss(e(p(PNr,Argumente)),Stellungnahme,Antwort):problem(p(PNr,Argumente),Problembeschr), tcl_string(Argumente,Tcl_Argumente), schluessel_nr(meinung,SNr), findall( [M,Bez,Antw], meinung(m(M),p(PNr,Argumente),Bez,Antw,_), Meinungen ), tcl_string(Meinungen,Tcl_Meinungen), tcl( 'tcl_entschluss ## ## ## ## ##', [PNr,Problembeschr,Tcl_Argumente,SNr,Tcl_Meinungen] ), event_handler,!, entschluss(e(p(PNr,Argumente)),Stellungnahme,Antwort). Diese Klausel ist aufgrund der Tatsache, dass sie sehr eng mit Tcl/Tk verknüpft ist etwas komplizierter zu lesen. Im Wesentlichen leistet sie jedoch folgendes: Zunächst wird aus der Problembeschreibung eine Frage erzeugt. Als nächstes werden alle Meinungen zu dem entsprechenden Problem gesammelt (über „findall/3“). Die Tcl/Tk-Prozedur „tcl_entschluss“ wird aufgerufen. Diese Prozedur präsentiert dem Anwender die Frage und die verschiedenen Meinungen. Diese kann er im Rahmen des in Kapitel 6.5.2.5 beschriebenen Dialoges bearbeiten. Außerdem kann er den Dialog verlassen, indem er eine Entscheidung trifft, beziehungsweise das Problem als unsumstritten kennzeichnet und es beantwortet. Dies soll zur Beschreibung der Entscheidungskomponente genügen. Es soll lediglich noch angemerkt werden, dass diese Komponente offensichtlich nicht nur verwendet wird, um juristische Probleme im engeren Sinne zu entscheiden. Stattdessen wird sie auch verwendet, um „Probleme“ zu bearbeiten, welche nur aufgrund des fehlenden Sprachverständnisses des Systems Probleme darstellen. So ist ein Messer natürlich ein Werkzeug und ein Personenschaden mit der Bezeichnung „Tod“ steht selbstverständlich für den Tod eines Menschen. Solche Fragen stören natürlich den Anwender, sind aber erforderlich, um nach und nach eine Wissensbasis aufzubauen... 6.8.3 Subsumtionsstrategie des juristischen Systems Die Subsumtionskomponente besteht aus den bereits beschriebenen Komponenten deduktive Komponente und Entscheidungskomponente. Ziel des juristischen Systems war es, Subsumtionen möglichst weitreichend nachahmen zu können. In diesem Kapitel soll nun beschrieben werden, auf welche Weise bei einer solchen Subsumtion ein juristisches Gutachten erstellt wird. Auf der nächsten Seite ist zunächst zu sehen, wie ein solches Gutachten aussieht. Dem Gutachten liegt wieder der Beispielfall aus Kapitel 5.4.2.6 zu Grunde. Man erkennt schnell, dass diesem Gutachten der Feinschliff fehlt, doch lässt sich die darin enthaltene Prüfung nachvollziehen. Gelegentlich kommt im Gutachtentext das Symbol „+“ oder auch „-“ vor. Dies bedeutet, dass ein bestimmtes Tatbestandsmerkmal vorliegt beziehungsweise nicht vorliegt. 113 §223 Obersatz: Fraglich ist, ob gilt: Es ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine Kö rperverletzung. §223 I 1.Alt. Obersatz: Fraglich ist, ob gilt: Es ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine kö rperliche Misshandlung. > Person <Peter Müller> führt Verhalten <schlagen> aus (+) > Person <Lieschen Müller> wird behandelt durch Verhalten <schlagen> (+) > Verhalten <schlagen> ist Ursache von <leichte Blessuren> (+) > Person <Lieschen Müller> wird behandelt durch Verhalten <schlagen> (+) > Verhalten <schlagen> ist Ursache von <leichte Blessuren> (+) Obersatz: Fraglich ist, ob gilt: Es ist ein Personenschaden <leichte Blessuren> eine Beeinträchtigung des Wohlbefindens. > Meinung: BGH St ... (ja) > Leichte Blessuren stellen eine Beeinträchtigung des Wohlbefindens dar, weil ... > Meinung: Meinung 1 (nein) > Leichte Blessuren beeinträchtigen das körperliche Wohlbefinden nicht, da ... > Frage: Ist ein Personenschaden <leichte Blessuren> eine Beeinträchtigung des Wohlbefindens? > Antwort: ja > Stellungnahme: Der Ansicht des BGH ist zuzustimmen, da ... (Untersatz:) ja Schluss: Somit ist ein Personenschaden <leichte Blessuren> eine Beeinträchtigung des Wohlbefindens. ... (Untersatz:) ja Schluss: Somit ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine körperliche Misshandlung. (Untersatz:) ja Schluss: Somit ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine Körperverletzung. §224 Obersatz: Fraglich ist, ob gilt: Es ist das Verhalten < schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine gefährliche Körperverletzung. §224 I Nr.3 Obersatz: Fraglich ist, ob gilt: Es ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine gefährliche Körperverletzung mittels eines hinterlistigen Überfalls. Obersatz: Fraglich ist, ob gilt: Es ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Fol ge <leichte Blessuren> eine Körperverletzung. > s.o. (Untersatz:) ja Schluss: Somit ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine Körperverletzung. Obersatz: Fraglich ist, ob gilt: Es ist eine Behandlung <schlagen> ein Überfall. > Frage: Ist eine Behandlung <schlagen> ein Überfall? > Antwort: nein > Stellungnahme: ohne Stellungnahme Schluss: Es gilt nicht: Es ist eine Behandlung <schlagen> ein Überfall. Schluss: Es gilt nicht: Es ist das Verhalten <schlagen> von Person <Peter Müller> gegen Person <Lieschen Müller> mit der Folge <leichte Blessuren> eine gefährliche Körperverletzung mittels eines hinterlistigen Überfalls. §224 I Nr.5 ... Abbildung: Ausschnitt eines Gutachtens des juristischen Systems 114 Die Subsumtion des Systems basiert im Wesentlichen auf der Constrain-And-GenerateStrategie. Diese wurde jedoch um einige Aspekte erweitert. Die genaue Vorgehensweise des Systems bei der Subsumtion ist nur sehr umständlich zu erklären. Daher werden im Folgenden lediglich die interessantesten Gesichtspunkte dargestellt. Auf die Frage, wie die Gutachtentexte entstehen wird aber beispielsweise gar nicht eingegangen. Bei einer juristischen Subsumtion wird häufig erwartet, dass ein Sachverhalt im Hinblick auf alle Tatbestände untersucht wird, welche in irgendeiner Weise vom konkreten Fall betroffen sein könnten. Im Rahmen des juristischen Systems wurde dem Anwender daher auch die Möglichkeit eingeräumt, alle Körperverletzungsdelikte überprüfen zu lassen. Er hat allerdings auch die Möglichkeit, die zu prüfenden Delikte einzugrenzen. Im Rahmen dieser Darstellung soll auf diese Möglichkeit allerdings nicht näher eingegangen werden. Bei einer „kompletten“ Subsumtion der Körperverletzungsdelikte ist zunächst das Grunddelikt (§223) zu überprüfen. Hierzu genügt es, eine der beiden in §223 enthaltenen Alternativen zu „beweisen“. Wurde während der Subsumtion gezeigt, dass ein bestimmter Tatbestand im Sachverhalt vorliegt, so sind anschließend auch etwaige Qualifikationen (z.B. gefährliche Körperverletzung nach „bewiesener“ Körperverletzung) zu überprüfen. Die juristischen Normen können also zueinander in verschiedenartigen hierarchischen Beziehungen stehen. Je nach dem, um was für eine solche Beziehung es sich hierbei handelt, ist bei Erstellung eines Gutachtens unterschiedlich zu verfahren. Aus diesem Grunde ist es erforderlich, dem System mitzuteilen, in was für einer hierarchischen Beziehung zwei Normen zueinander stehen. Zunächst soll an Beispielen gezeigt werden, welche verschiedenen Arten hierbei existieren: straftat(Taeter,Verhalten):straft_koerperl_unv(Taeter,Verhalten). koerperverletzung(Taeter,Verhalten,Erfolg,Opfer):koerperl_missh(Taeter,Verhalten,Erfolg,Opfer). gefaehrliche_kv(Taeter,Verhalten,Erfolg,Opfer):koerperverletzung(Taeter,Verhalten,Erfolg), ... Die erste Klausel drückt aus, dass alle Straftaten gegen die körperliche Unversehrtheit auch Straftaten sind. Diese Hierarchie-Beziehung sei als „unterbegriff“ bezeichnet. Die zweite Klausel besagt ähnliches: Jede körperliche Misshandlung ist eine Körperverletzung. Der Unterschied hierbei ist jedoch, dass es sich bei der körperlichen Misshandlung um eine sogenannte Gesetzesalternative handelt, welche im Gutachten anders zu behandeln ist als „unterbegriffe“. Die dritte Klausel schließlich beschreibt einen Qualifikationstatbestand („qualifikation“). Qualifikationen werden erst geprüft, wenn das zu Grunde liegende Delikt hergeleitet wurde. Alle hierarchischen Beziehungen, die nicht unter eines der genannten Muster fallen, werden als „definition“ bezeichnet, da der Klauselrumpf jeweils den Klauselkopf definiert. Das im Rahmen der Subsumtion benötigte Prädikat „pruefung/1“ sorgt dafür, dass der in Gutachten übliche Prüfungsaufbau entsteht. Dabei greift das Prädikat auf die Relation „stehen_in_beziehung/3“ zurück, worin die Informationen über die jeweilige Art der HierarchieBeziehung enthalten sind. 115 pruefung(A):findall(B,stehen_in_beziehung(A,B,alternative),Alternativen), findall(D,stehen_in_beziehung(A,D,unterbegriff),Unterbegriffe), findall(E,stehen_in_beziehung(A,E,definition),Definitionen), if_then_else( not is_empty(Unterbegriffe), min_1_successful_goal(subsumtion_top,Unterbegriffe), true ), if_then_else( not is_empty(Definitionen), first_successful_goal(subsumtionsschritt,Definitionen), true ), if_then_else( not is_empty(Alternativen), first_successful_goal(subsumtion_top,Alternativen), true ). Abbildung: „pruefung/1“ sorgt für einen „richtigen“ Gutachtenaufbau Durch den besonderen Aufbau juristischer Gutachten ist es häufig erforderlich, dass Tatbestände mehrmals zu überprüfen sind. So ist nach erfolgreicher Subsumtion unter §223 beispielsweise §224 – eine Qualifikation zu §223 – zu prüfen. Diese Prüfung des §224 erfordert das Vorliegen von §223. In solchen Situationen kann in juristischen Gutachten auf die bereits erfolgte Prüfung verwiesen werden, damit nicht die komplette Prüfung erneut durchgeführt werden muss. Im anfangs abgebildeten Ausschnitt eines juristischen Gutachtens ist diese Vorgehensweise bei §224 I Nr. 3 zu erkennen. Dort ist an einer Stelle der Verweis „s.o.“ zu finden. Damit das System weiss, was es schon geprüft hat und zu welchen Ergebnissen es dabei gekommen ist, kann es die bereits erörterten Prüfungen in einer Relation („schon_eroertert/2“) abspeichern: assert(schon_eroertert(Goal,ja)) Das erste Argument des so eingefügten Fakts ist das bereits überprüfte Goal, das zweite Argument drückt aus, ob die Prüfung erfolgreich war. Hiermit endet die Beschreibung der Implementation des juristischen Systems. Der Arbeit liegt eine Diskette bei, auf welcher der komplette Quellcode des Systems enthalten ist. 116 7 Zusammenfassung und Ausblick Im Rahmen der vorliegenden Arbeit wurde ein regelbasiertes System entworfen und implementiert, welches dazu dienen sollte, die juristische Subsumtion zu unterstützen. Es sollte beispielhaft an einem kleinen Ausschnitt des Strafgesetzes – den objektiven Tatbeständen der Körperverletzungsdelikte – gezeigt werden, welche Möglichkeiten bestehen, bestimmte Gesichtspunkte der Arbeit eines Juristen durch ein regelbasiertes System nachzuahmen. Im System wurde ein computerunterstützter Umgang mit verschiedenen Aspekten juristischer Methodik realisiert. So kann das System Meinungsstreitigkeiten verwalten. Dadurch, dass es den Anwender in die Subsumtion involviert, verfügt es über eine Möglichkeit, mit Wertungen und Auslegungen umzugehen. Außerdem berücksichtigt das System viele Regeln, die im Zusammenhang mit der Erstellung eines Gutachtens zu berücksichtigen sind. Die relativ komfortable Benutzerschnittstelle erlaubt es auch Nicht-Informatikern, mit dem System zu interagieren. Dem Anspruch, dass ein juristischer Laie ein computerunterstütztes Gutachten erstellen können soll, wurde allerdings nicht genügt. Viele Fragen des Systems wird er nicht beantworten können. Immerhin kann ein solcher Laie aber durch das System gewisse Erkenntnisse über den Aufbau eines Gutachtens gewinnen. Die Einbeziehung des Anwenders in den Subsumtionsprozess erschwert einen fairen Vergleich mit anderen Systemen. WZ versucht beispielsweise gerade in den Bereichen, in welchen das juristische System auf die Entscheidungen des Anwenders zurückgreift, Fortschritte zu erzielen. LEX büßt durch den Versuch, eine natürlichsprachliche Schnittstelle zu realisieren, an Leistungsfähigkeit ein. Das im Rahmen dieser Arbeit implementierte System ist durch den Verzicht auf Funktionalitäten wie in WZ oder LEX zu einer recht ansprechenden Leistungsfähigkeit im Stande. Zumindest bei Vorhandensein einer großen Wissensbasis sollte es möglich sein, sehr viele Fälle aus dem Bereich der Körperverletzungsdelikte zu bearbeiten. Allerdings stößt das System an manchen Stellen auch an seine Grenzen. Sollen beispielsweise mehr verschiedene Gesetze bearbeitet werden können, so wird es erforderlich sein, die Menge der zur Darstellung von Sachverhalten zur Verfügung stehenden Konzepte zu vergrößern. Da dadurch der Anwender vermutlich in vielen Situationen mehrere verschiedene Möglichkeiten zur Sachverhaltsbeschreibung haben wird, muss ein Weg gefunden werden, diese ineinander zu überführen. Dieses Problem trat bereits in Kapitel 5.5.3.1.2 bei Begriffen wie „vergiften“ oder „erschießen“ auf. Vermutlich werden in solchen Fällen viele weitere Systemfragen erforderlich. Damit diese den Arbeitsfluss nicht zu stark behindern, wird es immer dringender erforderlich, über sehr große Wissensbasen zu verfügen. Im Zusammenhang mit solch großen Wissensbasen werden auch neue Anforderungen an das Datenbank-Management-System – wie beispielsweise leistungsstarke Indexstrukturen – entstehen... Die vorliegende Version des juristischen Systems lässt an vielen Stellen Erweiterungen sinnvoll erscheinen. Zunächst könnten offensichtliche kleinere Schwachpunkte behoben werden. So kann die Dialogkomponente an vielen Stellen verbessert werden. Es sollte möglich sein, Subsumtionen abzubrechen. Außerdem kann die Einbettung der Anfragesprache in die grafische Oberfläche an einigen Stellen noch erweitert werden. Es ist darüber hinaus dringend geboten, im Zusammenhang mit juristischen Entscheidungen Hilfetexte zur Verfügung zu stellen, welche die Fragen des Systems konkretisieren können. Dadurch würde insbesondere der Nutzen des Systems für den juristischen Laien vergrößert. 117 Auch die juristischen Normen bedürfen der Überarbeitung. Zwar wurden sie mit großer Mühe erarbeitet, doch sollten sie in Zusammenarbeit mit juristischen Experten überprüft werden. Darüber hinaus sind manche strafrechtlichen Theorien noch nicht in den Modellierungen der Gesetze enthalten. Aufgrund der vielen Schwierigkeiten bei der Entwicklung der Normen scheint es nicht angebracht zu sein, innerhalb des Systems eine Bearbeitung der Gesetze zuzulassen. Vom juristischen System wird hauptsächlich die nach außen sichtbare Vorgehensweise des Juristen nachgeahmt. Es könnte allerdings durchaus sinnvoll sein, auch typische juristische Gedankengänge zu imitieren. Insbesondere für den Fall, dass sehr viele Normen in modellierter Form vorliegen, scheint es empfehlenswert, vom Sachverhalt ausgehend in einer bottomup-Strategie diejenigen Tatbestände zu ermitteln, welche überhaupt vom entsprechenden Fall tangiert sein könnten. Dadurch könnte man die Effizienz des Systems steigern, da es in seiner derzeitigen Form alle ihm bekannten Normen überprüft. Ein weiterer Verbesserungsvorschlag für das juristische System ist, ihm die Möglichkeit zu geben, gezielt nach bestimmten Sachverhaltsmerkmalen zu fragen. So kann beispielsweise bei der Sachverhaltseingabe leicht vergessen werden, ein bestimmtes Personenmerkmal einzugeben. Es wäre sicherlich in vielen Situationen praktisch, wenn das System selbstständig erkennen könnte, dass bestimmte Tatbestände fast erfüllt sind und lediglich gewisse Merkmale fehlen, die – wie beispielsweise Personenmerkmale – nachgefragt werden können. Es ist darüber hinaus zu prüfen, ob der in Systemen wie HYPO verfolgte Ansatz (s. Kapitel 3.3) zum Fallvergleich in das juristische System zu integrieren ist. Zwar sollten die durch einen solchen Fallvergleich gewonnenen Schlüsse mit Rücksicht auf die „Dynamik des Rechts“ nicht ungeprüft übernommen werden, doch könnten sich in bestimmten Situationen fallvergleichende Ansätze als nützlich erweisen. So könnte bei der Frage, ob eine Konstellation von Werkzeug, Tathandlung und Opfer aus einem Werkzeug ein gefährliches Werkzeug werden lässt, ein Fallvergleich Sachverhalte mit vergleichbaren Konstellationen aufzeigen und somit bei der Entscheidung, ob das Werkzeug in dieser Situation als gefährlich einzustufen ist, behilflich sein. Ausser der genannten gibt es sicherlich noch viele weitere Ansätze – wie beispielsweise das Default-Reasoning in KOKON (s. Kapitel 3.4) –, welche im juristischen System zur Anwendung kommen könnten. Diese Ansätze sollten im Hinblick auf ihren Nutzen für das in dieser Arbeit entwickelte juristische System überprüft werden... 118 Anhang Siebzehnter Abschnitt des Strafgesetzbuches. Körperverletzung § 223. Körperverletzung. (1) Wer eine andere Person körperlich mißhandelt oder an der Gesundheit schädigt, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. (2) Der Versuch ist strafbar. § 224. Gefährliche Körperverletzung. (1) Wer die Körperverletzung 5. durch Beibringung von Gift oder anderen gesundheitsschädlichen Stoffen, 6. mittels einer Waffe oder eines anderen gefährlichen Werkzeugs, 7. mittels eines hinterlistigen Überfalls, 8. mit einem anderen Beteiligten gemeinschaftlich oder 9. mittels einer das Leben gefährdenden Behandlung begeht, wird mit Freiheitsstrafe von sechs Monaten bis zu zehn Jahren, in minder schweren Fällen mit Freiheitsstrafe von drei Monaten bis zu fünf Jahren bestraft. (2) Der Versuch ist strafbar. § 225. Mißhandlung von Schutzbefohlenen. (1) Wer eine Person unter achtzehn Jahren oder eine wegen Gebrechlichkeit oder Krankheit wehrlose Person, die 1. seiner Fürsorge oder Obhut untersteht, 2. seinem Hausstand angehört, 3. von dem Fürsorgepflichtigen seiner Gewalt überlassen worden oder 4. ihm im Rahmen eines Dienst- oder Arbeitsverhältnisses untergeordnet ist, quält oder roh mißhandelt, oder wer durch böswillige Vernachlässigung seiner Pflicht, für sie zu sorgen, sie an der Gesundheit schädigt, wird mit Freiheitsstrafe von sechs Monaten bis zu zehn Jahren bestraft. (2) Der Versuch ist strafbar. (3) Auf Freiheitsstrafe nicht unter einem Jahr ist zu erkennen, wenn der Täter die schutzbefohlene Person durch die Tat in die Gefahr 1. des Todes oder einer schweren Gesundheitsschädigung oder 2. einer erheblichen Schädigung der körperlichen oder seelischen Entwicklung bringt. (4) In minder schweren Fällen des Absatzes 1 ist auf Freiheitsstrafe von drei Monaten bis zu fünf Jahren, in minder schweren Fällen des Absatzes 3 auf Freiheitsstrafe von sechs Monaten bis zu fünf Jahren zu erkennen. § 226. Schwere Körperverletzung. (1) Hat die Körperverletzung zur Folge, daß die verletzte Person 4. das Sehvermögen auf einem Auge oder beiden Augen, das Gehör, das Sprechvermögen oder die Fortpflanzungsfähigkeit verliert, 5. ein wichtiges Glied des Körpers verliert oder dauernd nicht mehr gebrauchen kann oder 6. in erheblicher Weise dauernd entstellt wird oder in Siechtum, Lähmung oder geistige Krankheit oder Behinderung verfällt, 119 so ist die Strafe Freiheitsstrafe von einem Jahr bis zu zehn Jahren. (2) Verursacht der Täter eine der in Absatz 1 bezeichneten Folgen absichtlich oder wissentlich, so ist die Strafe Freiheitsstrafe nicht unter drei Jahren. (3) In minder schweren Fällen des Absatzes 1 ist auf Freiheitsstrafe von sechs Monaten bis zu fünf Jahren, in minder schweren Fällen des Absatzes 2 auf Freiheitsstrafe von einem Jahr bis zu zehn Jahren zu erkennen. § 227. Körperverletzung mit Todesfolge. (1) Verursacht der Täter durch die Körperverletzung (§§ 223 bis 226) den Tod der verletzten Person, so ist die Strafe Freiheitsstrafe nicht unter drei Jahren. (2) In minder schweren Fällen ist auf Freiheitsstrafe von einem Jahr bis zu zehn Jahren zu erkennen. § 228. Einwilligung. Wer eine Körperverletzung mit Einwilligung der verletzten Person vornimmt, handelt nur dann rechtswidrig, wenn die Tat trotz der Einwilligung gegen die guten Sitten verstößt. § 229. Fahrlässige Körperverletzung. Wer durch Fahrlässigkeit die Körperverletzung einer anderen Person verursacht, wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft. § 230. Strafantrag. (1) Die vorsätzliche Körperverletzung nach § 223 und die fahrlässige Körperverletzung nach § 229 werden nur auf Antrag verfolgt, es sei denn, daß die Strafverfolgungsbehörde wegen des besonderen öffentlichen Interesses an der Strafverfolgung ein Einschreiten von Amts wegen für geboten hält. Stirbt die verletzte Person, so geht bei vorsätzlicher Körperverletzung das Antragsrecht nach § 77 Abs. 2 auf die Angehörigen über. (2) Ist die Tat gegen einen Amtsträger, einen für den öffentlichen Dienst besonders Verpflichteten oder einen Soldaten der Bundeswehr während der Ausübung seines Dienstes oder in Beziehung auf seinen Dienst begangen, so wird sie auch auf Antrag des Dienstvorgesetzten verfolgt. Dasselbe gilt für Träger von Ämtern der Kirchen und anderen Religionsgesellschaften des öffentlichen Rechts. § 231. Beteiligung an einer Schlägerei. (1) Wer sich an einer Schlägerei oder an einem von mehreren verübten Angriff beteiligt, wird schon wegen dieser Beteiligung mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft, wenn durch die Schlägerei oder den Angriff der Tod eines Menschen oder eine schwere Körperverletzung (§ 226) verursacht worden ist. (2) Nach Absatz 1 ist nicht strafbar, wer an der Schlägerei oder dem Angriff beteiligt war, ohne daß ihm dies vorzuwerfen ist. § 232. (weggefallen) § 233. (weggefallen) 120 Logisches Schema des Sachverhalts aus Kapitel 5.4.2.6 personenmerkmal(10,"besonders_empfindlich",2). person(1,"Müller","Peter","m",30,"nein"). person(2,"Müller","Lieschen","w",7,"nein"). person(3,"Schmidt","Karsten","m",18,"nein"). person(4,"Schmidt","Willy","m",77,"nein"). person(5,"Schmidt","Jürgen","m",43,"nein"). person(6,"Schmidt","Gerda","w",38,"nein"). person(7,"B.","Berta","w",55,"nein"). person(8,"J.","Julia","w",20,"nein"). person(9,"F.","Friedhelm","m",67,"ja"). % Berta ist Friedhelms Betreuerin fuersorge_oder_obhut(7,9). % Lieschen wohnt bei Peter gehoert_hausstand_an(2,1). % Willy und Karsten wohnen im Haus von Juergen und Gerda gehoert_hausstand_an(3,5). gehoert_hausstand_an(4,5). gehoert_hausstand_an(3,6). gehoert_hausstand_an(4,6). % Karsten und Julia arbeiten im Betrieb von Gerda dienst_arbeitsverhaeltnis(3,6). dienst_arbeitsverhaeltnis(8,6). % % % % % % % % % % % % % % 1. Peter schlaegt Lieschen. Lieschen erleidet leichte Blessuren. 2. Peter tritt mit schwerer Arbeitsschuh Lieschen. Lieschen erleidet innere Verletzungen und ... Schmerzen. 3. Friedhelm schlaegt mit Eisenstange Berta. Berta erleidet einen Schaedelbruch, ... Schmerzen und stirb.t 4. Juergen stoesst vor Kachelofen Willy. Willy erleidet einen Rippenbruch. 5. Gerda schlaegt mit aufgerollte Zeitung Karsten. 6. Berta sticht mit Messer, Gabel und Löffel Friedhelm. Friedhelm erleidet eine tiefe Wunde. 7. Julia beruehrt mit Messer Karsten. 8. Karsten und Willy beschuetten mit Salzsaeure Julia. Julia erleidet Veraetzungen und bleibende Narben im Gesicht. verhalten(1,"schlagen"). verhalten(2,"treten"). verhalten(3,"schlagen"). verhalten(4,"stoßen_vor"). verhalten(5,"schlagen"). verhalten(6,"stechen"). verhalten(7,"berühren"). verhalten(8,"beschütten"). 121 fuehrt_aus(1,1). fuehrt_aus(2,1). fuehrt_aus(3,9). fuehrt_aus(4,5). fuehrt_aus(5,6). fuehrt_aus(6,7). fuehrt_aus(7,8). fuehrt_aus(8,3). fuehrt_aus(8,4). wird_behandelt(1,2). wird_behandelt(2,2). wird_behandelt(3,7). wird_behandelt(4,4). wird_behandelt(5,3). wird_behandelt(6,9). wird_behandelt(7,3). wird_behandelt(8,8). wird_benutzt(2,6). wird_benutzt(3,4). wird_benutzt(4,3). wird_benutzt(5,5). wird_benutzt(6,1). wird_benutzt(6,7). wird_benutzt(6,8). wird_benutzt(6,9). wird_benutzt(7,1). wird_benutzt(8,2). gegenstand(1,"Messerchen","ja"). gegenstand(2,"Salzsäure","ja"). gegenstand(3,"Kachelofen","nein"). gegenstand(4,"Eisenstange","ja"). gegenstand(5,"aufgerollte_Zeitung","ja"). gegenstand(6,"schwerer_Arbeitsschuh","ja"). gegenstand(7,"Gabel","ja"). gegenstand(8,"Löffel","ja"). gegenstand(9,"Messer","ja"). ist_kausal(1,1). ist_kausal(2,2). ist_kausal(2,3). ist_kausal(3,4). ist_kausal(3,5). ist_kausal(4,7). ist_kausal(6,8). ist_kausal(8,9). ist_kausal(8,10). ist_folge_von(6,4). ist_folge_von(10,9). pers_schaden(1,"leichte_Blessuren",2). pers_schaden(2,"innere Verletzungen",2). pers_schaden(3,"erhebliche,_länger_andauernde_Schmerzen",2). pers_schaden(4,"Schädelbruch",7). pers_schaden(5,"erhebliche,_länger_andauernde_Schmerzen",7). pers_schaden(6,"Tod",7). pers_schaden(7,"Rippenbruch",4). pers_schaden(8,"tiefe_Wunde",9). pers_schaden(9,"Verätzungen_im_Gesicht",8). pers_schaden(10,"bleibende_Narben_im_Gesicht",8). 122 konkr_pers_gef(1,"Lebensgefahr",2). begruendet(2,1). schluessel_nr(person,100). schluessel_nr(personenmerkmal,100). schluessel_nr(pers_schaden,100). schluessel_nr(konkr_pers_gef,100). schluessel_nr(gegenstand,100). schluessel_nr(verhalten,100). 123 Literaturverzeichnis [Ben99] Bench-Capon: Some Observations on Modelling Case Based Reasoning With Formal Argument Models, in: The Seventh International Conference on Artificial Intelligence and Law, Proceedings of the Conference,1999 [BHS93] W. Bibel, S. Hölldobler und T. Schaub (1993). Wissensrepräsentation und Inferenz: Eine grundlegende Einführung. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig/Wiesbaden. [Boo91] Grady Booch: Object-oriented design with applications, 1991 [Bra99] Branting, L. Karl: A General Model Of Narrative Cases, in: The Seventh International Conference On Artificial Intelligence and Law, Proceedings of The Conference [Bro95] Brox, Hans: Allgemeiner Teil des Bürgerlichen Gesetzbuchs / Hans Brox. 19., verb. Aufl. - Köln; Berlin ; Bonn ; München ; Heymann, 1995 [BS96] Vorlesung „Deduktive Datenbanken“, Prof. Dr. Franςois Bry, Dr. Heribert Schütz. Wintersemester 1996/97 [CGH94] Cremers, A. B. / Griefahn, U. / Hinze, R. Deduktive Datenbanken – Eine Einführung aus der Sicht der logischen Programmierung. Verlag Vieweg, Braunschweig/Wiesbaden, 1994 [CGT90] Ceri, S. / Gottlob, G. / Tanca, L.: Logic Programming and Databases. Springer Verlag Berlin Heidelberg, 1990 [Cod70] E.F. Codd. A relational model for large shared data banks. Communications of the ACM, 13(6):377-387, Juni 1970 [DG96] Dittrich, Klaus R.; Aktive Datenbanksysteme, Konzepte und Mechanismen / Klaus R. Dittrich; Stella Gatziu. – Bonn; Albany; Attenkirchen: Internat. Thomson Publ., 1996 [DT95] Dreher, Eduard / Tröndle, Herbert : Strafgesetzbuch und Nebengesetze, 47., neubearbeitete Auflage des von Otto Schwarz begründeten Werkes. Aus der Reihe Beck’sche Kurz-Kommentare, Band 10, München, 1995 [FeU1665] FernUni-Kurs 1665 “Datenbanksysteme“ [FeU1695] FernUni-Kurs 1695 “Deduktions- und Inferenzsysteme“ [FG87] Fiedler, Herbert / Gordon, Thomas F.: Recht und Rechtsanwendung als Paradigma wissensbasierter Systeme, in: W. Brauer / W. Wahlster (Hrsg.), Wissensbasierte Systeme, Proceedings, Berlin/Heidelberg 1987 124 [Ger87] Gerathewohl, Peter: Erschließung unbestimmter Rechtsbegriffe mit Hilfe des Computers. Ein Versuch am Beispiel der „angemessenen Wartezeit“ bei §142 StGB, 1987 [Gre94] Greinke, Andrew: Legal Expert Systems: A Humanistic Critique of Mechanical Legal Inference – The Australian National University, (ISSN: 131-8247), 1994 (gopher://infolib.murdoch.edu.au:70/00/.ftp/pub/subj/law/jnl/elaw/refereed/greinke.txt) [GL96] Griefahn, Ulrike / Lemke, Thomas: Implementing Chimera on Top of an Active Relational Database System (IDEA.WP.22.O.005), 1996 [Har31] Hartshorn et. al., Hrsg. (1931). Collected Papers of C. Sanders Peirce, Band 2. Harvard University Press, Cambridge (zitiert nach [FeU1695], S. 3) [Heu92] Heuer, Andreas: Objektorientierte Datenbanken; Konzepte, Modelle, Systeme / Andreas Heuer. – Bonn; München; Paris [u.a.] : Addison-Wesley, 1992 [HL89] Haft, Fritjof / Lehmann, Hein (Hrsg.): Das LEX-Projekt. Entwicklung eines Expertensystems – Tübingen: Attempto-Verlag, 1989 (Neue Methoden im Recht; Band 6) [Jac92] Jacobsen, Christerson, Jonsson, Övergaard: Object-Oriented Software Engineering - A Use Case Driven Approach, 1992 [Jan93] Jandach, Thomas: Juristische Expertensysteme: methodische Grundlagen ihrer Entwicklung / Thomas Jandach – Berlin; Heidelberg; New York; London; Paris; Tokyo; HongKong; Barcelona; Budapest: Springer, 1993 [Kau87] Creifelds Rechtswörterbuch, 13. Aufl. (Hrsg. von Hans Kaufmann, Bearb.: Dieter Guntz ...); Münchener Recht-Lexikon [in 3. Bd.]/Red. Horst Tilch (Bd. 3: R-Z) (1987) [KR97] Kleinschmidt, Peter / Rank, Christian: Relationale Datenbanksysteme. Eine praktische Einführung. Springer Verlag Berlin , Heidelberg; 1997 [KE99] Kemper, Alfons: Datenbanksysteme : eine Einführung / von Alfons Kemper ; André Eickler. – 3., korr. Aufl. – München ; Wien : Oldenbourg, 1999 [Lar91] Larenz, Karl: Methodenlehre der Rechtswissenschaft, 6. Aufl., Berlin/Heidelberg 1991 [LK99] Lackner, Karl / Kühl, Kristian : Strafgesetzbuch mit Erläuterungen. 23. Aufl. / C.H. Beck’sche Verlagsbuchhandlung, München, 1999 [Loo99] Loogen, Rita: Informatik IIIb (Deklarative Programmierung), Skript zur Vorlesung Wintersemester 1999/2000 (http://www.mathematik.uni-marburg.de/~loogen/Skripten/inf3bskript99klein.ps) [Man98] Manthey, Rainer: Folien zur Vorlesung „Grundlagen der deskriptiven Programmierung – Sommersemester 1998“, Rheinische Friedrich-WilhelmsUniversität Bonn 125 [Man99] Manthey, Rainer: Folien zur Vorlesung „Deduktive Datenbanken I – Sommersemester 1999“, Rheinische Friedrich-Wilhelms-Universität Bonn [Man00] Manthey, Rainer: Folien zur Vorlesung „Informationssysteme – Wintersemester 1999-2000“, Rheinische Friedrich-Wilhelms-Universität Bonn [Mei96] Meier, Micha: ProTcXl 2.1 User Manual, 1996 [Mel96] Melton, J.: An SQL Snapshot. Proceedings of the 1996 International Conference on Data Engineering (ICDE ‘96), 1996 [Oes98] Oestereich, Bernd: Objektorientierte Softwareentwicklung: Analyse und Design mit der Unified modeling language / von Bernd Oesterreich. – 4., aktualisierte Aufl. – München ; Wien : Oldenbourg, 1998 [PaS94] Pagel, Bernd-Uwe: Software Engineering: Die Phasen der Softwareentwicklung / Bernd-Uwe Pagel; Hans-Werner Six. – Bonn ; Paris ; Reading, Mass. [u.a.] : Addison-Wesley, 1994 [Phi86] Philipps, Lothar : Rechtssätze in einem Expertensystem in: Fiedler, Herbert / Traunmüller, Roland (Hrsg.), Formalisierung im Recht und juristische Expertensysteme, München, 1986, zitiert nach: [Jan93] [PS97] Prakken, H. / Sartor, G.: Reasoning With Precedents in a Dialogue Game, in: Proceedings of the Sixth International Conference on AI and Law, ACM Press New York, S. 1-9,1997, zitiert nach: [Ben99] [PS98] Prakken, H. / Sartor, G.: Modelling Reasoning With Precedents in a Formal Dialogue Game, in: Artificial Intelligence and Law, Vol. 6, Nos 2-4, S. 231287,1998, zitiert nach: [Ben99] [Rum91] Rumbaugh, Blaha, Premerlani, Eddy, Lorenson: Objektorientiertes Modellieren und Entwerfen, 1991 [Sag90] Sagerer, Gerhard: Automatisches Verstehen gesprochener Sprache / von Gerhard Sagerer. – Mannheim ; Wien ; Zürich : BI-Wiss.Verl., 1990 (Reihe Informatik ; Bd. 74) [Sch94] Schöning, Uwe: Logik für Informatiker. Spektrum Akademischer Verlag, Heidelberg , Berlin , Oxford; 4. Auflage, 1994 [SG98] Scholl, Marc H. / Grust, Torsten: Deklarative Programmierung – Vorlesung im Sommer 1998 (http://www.informatik.uni-konstanz.de/dbis/Courses-old/Courses-ss98/decl-ss98.html) [Sir89] Sirp, Wilhelm: Bericht, Gutachten und Urteil: e. Einf. in d. Rechtspraxis / von Wilhelm Sirp. - 31., überarb. u. erg. Aufl. d. 1884 von Hermann Daubenspeck begr., von d. 12.-18. Aufl. von Paul Sattelmacher u. von d. 19.-25. Aufl. von Paul Lüttig u. Gerhard Beyer bearb. Werkes. - München: Vahlen, 1989. 126 [Ste84] Stein, Ekkehart: Methoden der Verfassungsinterpretation und der Verfassungskonkretisierung, Reihe Alternativkommentare, Bd. I, - Neuwied, 1984 [StS94] Sterling, Leon: The art of Prolog : advanced programming techniques / Leon Sterling, Ehud Shapiro; 1994 [UML1.3] UML-Summary Version 1.3 (http://www.rational.com/uml) [VG93] Vossen, Gottfried: Grundlagen der Transaktionsverarbeitung / Gottfried Vossen; Margret Gross-Hardt.- Bonn; Paris; Reading, Maas. [u.a.] : AddisonWeseley, 1993 [Vos94] Gottfried Vossen. Datenmodelle, Datenbanksprachen und DatenbankManagement-Systeme / Gottfried Vossen. – Bonn; Paris; Reading, Maas. [u.a.]: Addison-Wesley, 1994 [Wel95] Welch, Brent. Practical Programming in Tcl and Tk / Brent Welch, 1995 [Wes95] Wessels, Johannes: Strafrecht, allgemeiner Teil : die Straftat und ihr Aufbau / von Johannes Wessels. - 25., überarb. Aufl. - Heidelberg : Müller, Jur. Verl., 1995 127 128 Schriftliche Erklärung Hiermit erkläre ich, dass ich meine Arbeit selbstständig durchgeführt habe und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe. 129