DE69030815T2 - Apparat und verfahren zur erzeugung von dokumenten - Google Patents

Apparat und verfahren zur erzeugung von dokumenten

Info

Publication number
DE69030815T2
DE69030815T2 DE69030815T DE69030815T DE69030815T2 DE 69030815 T2 DE69030815 T2 DE 69030815T2 DE 69030815 T DE69030815 T DE 69030815T DE 69030815 T DE69030815 T DE 69030815T DE 69030815 T2 DE69030815 T2 DE 69030815T2
Authority
DE
Germany
Prior art keywords
term
document
value
definition
section
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69030815T
Other languages
English (en)
Other versions
DE69030815D1 (de
Inventor
Richard W. Brookline Nh 03033 Bolling
Henry Waltham Ma 02154 Goldstein
Eric Londonderry Nh 03052 Rustici
David F. Nashua Nh 03063 Shannon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wang Laboratories Inc
Original Assignee
Wang Laboratories Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wang Laboratories Inc filed Critical Wang Laboratories Inc
Publication of DE69030815D1 publication Critical patent/DE69030815D1/de
Application granted granted Critical
Publication of DE69030815T2 publication Critical patent/DE69030815T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/045Explanation of inference; Explainable artificial intelligence [XAI]; Interpretable artificial intelligence

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Medical Informatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • Graft Or Block Polymers (AREA)
  • Steering Control In Accordance With Driving Conditions (AREA)
  • Developing Agents For Electrophotography (AREA)
  • Devices For Executing Special Programs (AREA)
  • Electrotherapy Devices (AREA)

Description

  • Diese Anmeldung ist eine "continuation-in-part" der am 5.6.1989 eingereichten US-Serial-Nr. 371,434, die ihrerseits eine "continuation-in-part" der am 24.3.1987 eingereichten US-Serial-Nr. 030,250 ist, welche ihrerseits eine "continuation" der am 16.8.1985 eingereichten, nunmehr aufgegebenen US-Serial-Nr. 766,860 ist. Die zusätzliche Offenbarung der vorliegenden Erfindung beginnt mit Abschnitt 23 der Beschreibung einer Bevorzugten Ausführungsform und enthält die neuen Figuren 10 bis 14.
  • Stand der Technik 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Dokumenten-Erstellungssysteme, die mittels digitaler Rechner implementiert sind, insbesondere Dokumenten-Erstellungssysteme, die Expertensysteme verwenden, sowie Wissensbasis- und Schlußfolgerungsmaschinen-Komponenten von Expertensystemen.
  • 2. Stand der Technik
  • Viele Dokumente auf dem kommerziellen und juristischen Gebiet werden durch Kombinieren von (häufig als "Textbausteine" bezeichneten) schon existierenden Texten, je nach Umstand, für den der Text geschrieben wird, und dann durch Hinzufügen oder Bearbeiten des Ergebnisses, ebenfalls je nach Umstand, "geschrieben". Viele Dokumente, die Textbausteine aufweisen, wurden früher mit Formularen aus Formularbüchern erstellt. Der Formulartext enthielt die Informationen, die sich von Fall zu Fall nicht veränderten, sowie Leerstellen zum Auffüllen mit veränderlichen Informationen.
  • Mit der Entwicklung von (allgemein als "Editor" bezeichneten) Textaufbereitungsprogrammen für Rechner wurde es möglich, das Formularbuch zu automatisieren. Der Formularschöpfer stellte eine Dokumentenvorlape zur Verfügung, die im Rechner gespeichert wurde, und Benutzer des Editors zum Erstellen von Dokumenten unter Verwendung des Formulars kopierten einfach die Dokumentenvorlage in das von ihnen zu erstellende Dokument und trugen dann die fehlenden Informationen nach. Die Automatisierung ging rasch über das Erstellen und Kopieren von Dokumentenvorlagen hinaus und es entstand eine Systemklasse mit der Bezeichnung Dokumenten-Erstellungssystem. Ein Dokumenten- Erstellungssystem verwendet eine Dokumentenvorlage und Informationen, die im Dialogverkehr oder aus einer Datenbasis erhalten werden, um ein Dokument zu erstellen, das speziell auf die Situation abgestimmt ist, für die es zusammengestellt wird. Eine Übersicht über solche Systeme findet sich in dem nachstehend angegebenen Artikel:
  • James A. Eidelman, "The Computer as Form Book, Available Software Tools" (Der Rechner als Formularbuch, Verfügbare Softwarehilfsmittel), in Legal Economics, Mai-Juni 1988.
  • Zur Dokumentenerstellung sind verschiedene Lösungsversuche unternommen worden. Einige Textaufbereitungsprogramme enthalten Makrosprachen, die es dem Benutzer ermöglichen, Programme zu schreiben, die der Editor ausführt. Durch das Einbeziehen eines solchen Programms mit einer Dokumentenvorlage wurde die Dokumentenvorlage zu einem Dokumenten-Erstellungssystem. Andere Dokumentenerstellungsprogramme trennen das Programm, welches die Vorlage verwendet, von der Vorlage. Einige Dokumenten-Erstellungssysteme verwenden sogar Expertensysteme mit Wissensbasen. Die Informationen in der Wissensbasis werden zur Festlegung benutzt, welche Fragen an die Person zu stellen sind, für die das Dokument aufbereitet wird, und welche Informationen in das zu erstellende Dokument aufzunehmen sind.
  • Ein Beispiel eines herkömmlichen Dokumenten-Erstellungssystems, das ein Expertensystem verwendet, um den Benutzer beim Ausfüllen der Leerstellen in einem Formblatt oder einer Dokumentenvorlage zu unterstützen, ist das ABF-System, das vom James Sprowl et al. in einem Aufsatz mit dem Titel "An Expert System For Drafting Legal Documents" (Expertensystem zum Erstellen juristischer Dokumente) beschrieben wurde, der in den AFIPS-KONFERENZBERICHTEN der 1984 NATIONAL COMPUTER CONFERENCE vom 9. bis 12. Juli 1984 in Las Vegas, Nevada abgedruckt ist, die von der AFIPS PRESS, 1899 Preston White Drive Reston Virginia 22091, USA veröffentlicht wurden.
  • Das ABF-system ist ein Expertensystem zur Unterstützung von Rechtsanwälten beim Erstellen juristischer Dokumente mit mandantenspezifischen Informationen. Ein ein "juristisches Formular" darstellender Vorlagenrahmen verwendet Programmiergrundelemente wie logische Bedingungen und Schleifen, Verweise auf anderes Textmaterial und veränderliche Angaben zum Ausfüllen der Dokumentenvorlage. Wenn das ABF-System die Vorlage liest, empfängt es die Programmiergrundelemente mit mandantenspezifischen Informationen. Beim ersten Lesen einer Variablen bildet ein Konstrukt eine auf dieser Variablen basierende Frage. Der Benutzer beantwortet die Frage, und das Expertensystem bringt diese Antwort in eine Mandantendaten- Datei. Wenn das System wieder auf die gleiche Variable trifft, wird ihr Wert in der Mandantendaten-Datei gefunden. Variablen können auch vollständige Dokumente darstellen. Allgemeiner gesagt, ein Benutzer kann dem Expertensystem eine Prozedur zum Entwickeln einer Variablen bereitstellen. Vorstehendes erfordert eine Softwareprogrammierung durch den Benutzer.
  • Anders als beim ABF-System braucht der Benutzer des erfindungsgemäßen Ausgangsdokumenten-Erstellungssystems keine logischen Konstrukte zur Definition einer Variablen erzeugen. Jedes zum Definieren einer Variablen benötigte logische Konstrukt ist in der Hierarchie definierter Terme enthalten, die durch den Definitionenprozessor erzeugt werden. Die erfindungsgemäße Term-Schlußfolgerungsmaschine entwickelt eine Variable, indem sie alle Terme entwickelt, die ihre Definition bilden.
  • Andere ähnliche Beispiele von Expertensystemen zum Erstellen von Dokumenten werden in Kurzform in einem Artikel von Sandra Cock et al. unter dem Titel "The Applications of Artificial Intelligence to Law: A Survey of Six Current Projects" (Anwendung künstlicher Intelligenz auf dem Gebiet des Rechts: Überblick über sechs laufende Projekte) beschrieben, der in den Berichten der 1981 NATIONAL COMPUTER CONFERENCE auf S. 689 bis 695 veröffentlicht wurde. Der Autor des zweiten der sechs Projekte ist Mr. Sprowl, der zu den Autoren der weiter oben genannten Belegstelle gehört.
  • Das Projekt von Mr. Sprowl ist das Projekt II (von sechs Projekten) mit dem Titel "Automating the Delivery of Instructions And the Preparation of Legal Documents" (Automatische Ausgabe von Weisungen und Bearbeitung von juristischen Dokumenten), das ein System beschreibt, welches ein Vorläufer des Systems zu sein scheint, das in dem unmittelbar vorstehend genannten Artikel von Sprowl beschrieben ist. Zweck des beschriebenen Prototyp-Systems ist u.a. die Zusammenstellung einer mandantenspezifischen Version von Dokumenten, die fertig für die Einreichung bei Gericht sind. Die übrigen fünf Projekte (Projekte I und III bis VI), die in dem Cook-Artikel beschrieben werden, sind auf die Automatisierung von juristischen Recherchen und Beweisführungen gerichtet und sind für die Erstellung von Ausgangsdokumenten anhand einer Dokumentenvorlage, wie in der vorliegenden Beschreibung gelehrt, nicht relevant.
  • Die vorliegende Erfindung weicht vollständig von anderen Berichterstellungssystemen des Typs ab, der durch EP-A- 0 066 063 dargestellt ist. Die Anwendung zur Berichterstellung gemäß dieser Veröffentlichung offenbart eine Prozedur, die es einer Vielzahl von Benutzern ermöglicht, Berichte in einem allgemeinen Format zu erstellen. Zweck der strukturierten Berichte ist es, Fehler so gering wie möglich zu halten, die bei einer Vielzahl Mitglieder einer Gruppe, die in verschiedenen Sprachen lesen und schreiben können, auftreten. Dieses System ist statisch und erwartet die Eingabe von Daten. Im Gegensatz dazu bildet ein fachkundiger Benutzer, z.B. ein anwalt, der das erfindungsgemäße System benutzt, eine Dokumentenvorlage im Rahmen eines interaktiven Vorgangs, in dem viele Abschnitte einer Vorlage mit Termen definiert werden, die in einer logischen, hierarchischen Struktur organisiert sind. Als Antwort auf weitere Benutzereingaben und systemantworten erzeugt das System danach eine spezifisches, auf einen bestimmten Mandanten abgestimmtes Dokument, z.B. ein Testament.
  • Ein ständiges Problem bei der Auslegung von Dokumenten-Erstellungssystemen war, Leistung ohne übermäßige Komplexität zu erreichen. Leistungsfähige Dokumenten-Erstellungssysteme erforderten im allemeinen von der das System entwerfenden Person Programmiererkenntnisse; Dokumenten-Erstellungssysteme, die solche Kenntnisse nicht erforderten, boten häufig wenig mehr als die Auswahl zwischen Abschnitten der Vorlage. Bei Dokumenten-Erstellungssystemen, die Expertensysteme verwenden, bestand eine spezielle Schwierigkeit darin, das Expertensystem, das die zum Erstellen des Dokuments benötigten Informationen lieferte, in das Textaufbereitungsprogramm zu integrieren, welches das Dokument tatsächlich erzeugt. Die vorstehend genannte und weiter Schwierigkeiten werden durch die hier offenbarte Vorrichtung und die Verfahren zur Erstellung von dokumenten gelöst.
  • KURZE DARSTELLUNG DER ERFINDUNG
  • Die beanspruchte Dokumenten-Erstellungsvorrichtung der vorliegenden Erfundung ist ein Expertensystem zum Erstellen eines Ausgangsdokumentes. Das System enthält eine Dokumentenvorlage, eine Wissensbasis zum Speichern von Wissensbasiselementen, einen Editor zum Aufbereiten der Dokumentenvorlage und eines von der Dokumenten-Erstellungsvorrichtung erzeugten Ausgangsdokumentes, eine Wissensbasis-Definitionseinrichtung zum Definieren von Wissensbasiselementen in der Wissensbasis, und eine Schlußfolgerunqsmaschine, die auf die Eingabe von Informationen unter Benutzen der Wissensbasis durch Erzeugen einer Expertenantwort aufgrund der Information reagiert. Die Wissensbasis enthält eine Dokumentenabschnitt-Definitionseinrichtung, die auf erste Benutzereingaben reagiert und ein Dokumentenabschnitt-Wissensbasiselement definiert, das einem Abschnitt der Dokumentenvorlage zugeordnet ist. Die Dokumentenabschnitt-Definitionseinrichtung stellt dem Benutzer den Editor zum Aufbereiten des Abschnitts bereit und ordnet den aufbereiteten Abschnitt dem Dokumentenabschnitt-Wissenbasiselement zu. Die Schlußfolgerungsmaschine enthält eine Ausgangsdokumenten-Erstellungseinrichtung, die auf ein Dokumentenabschnitt-Wissensbasiselement durch Verwenden des Editors reagiert, um den dem Dokumentenabschnitt-Wissensbasiselement zugeordneten Dokumentenabschnitt dem Ausgangsdokument bereitzustellen, wenn das Dokumentenabschnitt-Wissensbasiselement und die zweiten Benutzereingaben es so erfordern.
  • Gemäß einem anderen Merkmal der Erfindung ist das erfindungsgemäße Expertensystem ein auf Definitionen aufgebautes Expertensystem des in den Stammanmeldungen der vorliegenden Anmeldung offenbarten Typs, und die Dokumentenabschnitte sind Terms zugeordnet, die in der Wissensbasis des auf Definitionen aufgebauten Expertensystems definiert sind. Die Abschnitte in der Dokumentenvorlage können ferner weitere Terme enthalten, die in der Wissensbais des auf Definitionen aufgebauten Expertensystems definiert sind, die weitere, Dokumentenabschnitten zugeordnete Terme enthalten. Wenn die Ausgangsdokumenten-Erstellungseinrichtung auf einen solchen Term trifft, erhält sie den gegenwärtigen Wert des Terms aus der Wissensbasis und gibt das Ausgangsdokument mit dem Wert anstelle des Terms aus. Wenn der Benutzer der Dokumentenabschnitt-Definitionseinrichtung die Definition eines Abschnitts der Dokumentenvorlage beendet hat, stellt die Dokumentenabschnitt-Definitionseinrichtung ferner fest, ob für die übrigen Terme im Abschnitt Definitionen in der Wissensbasis vorhanden sind; wenn nein, wird der Benutzer von der Wiessensbasis-Definitionseinrichtung aufgefordert, eine Definition zu liefern.
  • Ein wichtiger Vorteil der vorliegenden Erfindung ist die Erweiterung von Systemen, die für die Benutzung durch Fachkundige, z.B. einen Rechtsanwalt bestimmt sind, die Expertensystemtechnik anwenden, um eine Dokumentenvorlage zu erstellen, aus der spezifische Ausgangsdokumente ohne weiteres erzeugt werden können.
  • Ein weiterer Vorteil der Erfindung ist die Verwendung von hierarchisch organisierten Definitionen in einem System zum Erstellen von Ausgangsdokumenten ausgehend von einer Dokumentenvorlage, die es Benutzern der Wissensbasis ohne Fähigkeiten in der Softwareprogrammierung ermöglicht, das System ohne weiteres auf ihre Wissensgebiete anzuwenden.
  • Kurzbeschreibung der Zeichnungen
  • Fig. 1 ist ein prinzipielles Blockdiagramm eines herkömmlichen Expertensystems;
  • Fig. 1A ist ein prinzipielles Blockdiagramm einer herkömmlichen Expertensystem-Schale;
  • Fig. 2 ist ein prinzipielles Blockdiagramm einer Expertensystem-Schale und eines Expertensystems gemäß der Erfindung;
  • Fig. 3 ist ein prinzipielles Diagramm zur Veranschaulichung einer Hierarchie von Definitionen, wie sie bei der Erfindung verwendet wird;
  • Fig. 4 ist ein Diagramm der Terme und Beschreibungen zum Definieren des Terms FRAUD;
  • Fig. 5 ist ein Diagramm einer LISP-Umgebung;
  • Fig. 6 ist ein Überblick über ein erstes Prototyp-Ausführungsbeispiel der Erfindung;
  • Fig. 7 ist ein Diagramm der TDEF 617 des ersten Prototype- Ausführungsbeispiels;
  • Fig. 8 ist ein Diagramm mit Einzelheiten der Funktion DEFINIERE des ersten Prototyp-Ausführungsbeispiels;
  • Fig. 9 ist eine Darstellung von Verbesserungen des zweiten Prototyp-Aus führungsbeispieles;
  • Fig. 10 ist ein Beispiel einer Dokumentenvorlage, die in der Dokumenten-Erstellungsvorrichtung benutzt wird;
  • Fig. 11 ist ein prinzipielles Blockdiagramm der Dokumenten- Erstellungsvorrichtung;
  • Fig. 12 ist ein Diagramm der Dokumentenstruktur des Dokumentenvorlagebeispiels:
  • Fig. 13 ist ein Diagramm mit der Darstellung eines Mischterm-Attributs in der Dokumentenstruktur;
  • Fig. 14 ist ein Diagramm des in der Dokumenten-Erstellungsvorrichtung benutzten Index.
  • Die in der Beschreibung der bevorzugten Ausführungsform benutzten Bezugszeichen weisen zur Vereinfachung der Verweise drei Ziffern auf. Die zwei geringerwertigen Ziffern sind Bezugszeichen innerhalb einer Figur, das höchstwertige Zeichen gibt die Zahl der Figur an. Beispielsweise gehört das Bezugszeichen "901" zu einem Teil der Fig. 9.
  • Beschreibung einer bevorzugten Ausführungsform
  • Die nachfolgende Beschreibung einer bevorzugten Ausführungsform zeigt zunächst einen grundsätzlichen Überblick über das Expertensystem und die Expertensystem-Schale gemäß der Erfindung und gibt dann eine detaillierte Beschreibung der Implementierung des ersten Ausführungsbeispieles Bestimmte Verbesserungen bei der Implementierung werden anhand des zweiten Ausführungsbeispieles diskutiert. Erweiterungen zu dieser Offenbarung in der vorliegenden "continuation" beginnen im Abschnitt 23.
  • 1. Grundsätzlicher Überblick über die Expertensystem-Schale und das Expertensystem gemäß der Erfindung: Fig. 2
  • Fig. 2 zeigt das Konzept der Expertensystem-Schale 201 und des Expertensystems 202 gemäß der Erfindung. Die Expertensystem-Schale 201 weist vier Komponenten auf: den Befehls- Prozessor (CP) 203, den Definitionen-Prozessor (DP) 207, den Term-Speicher (TS) 215 und die Term-Schlußfolgerungseinrichtung (TIE) 219. Unter Verwendung der Expertensystem-Schale 201 erzeugte Expertensysteme 202 weisen alle diese Komponenten außer dem Definitionen-Prozessor DP 207 auf.
  • Wie weiter unten im einzelnen erläutert werden wird, empfängt der CP 203 Befehle von Benutzern der Schale 201 sowie des systems 202 und liefert diese an die anderen Komponenten; der DP 207 verarbeitet Definitionen; der TS 215 speichert definierte Terme und deren Definitionen; die TIE 219 benutzt die Definition eines Terms aus dem TS 215 zum Ermitteln des Terms und zur Durchführung anderer Operationen mit demselben.
  • Der CP 203 setzt Befehle von Benutzern der Schale 201 und des Expertensystems 202 in Befehle (DPC) 204 für den Definitionen-Prozessor und in Befehle (IEC) 217 für die Schlußfolgerungseinrichtung um. Bei diesem Prototyp erlauben die DPC 204 dem Benutzer der Schale 201, einen Term zu definieren, einen Term umzudefinieren, einen bereits definierten Term in einen nicht definierten umzuändern, die Definition eines Termes nachzusehen, einen Satz von Definitionen zu speichern und einen Satz von Definitionen zu erneuern. Die IEC 217 erlauben es dem Benutzer der Schale 201 oder des Expertensystems 202, welches durch die Schale 201 erzeugt wurde, den laufenden Wert eines Termes zu bestimmen, herauszufinden, wie das Expertensystem 202 diesen Wert erreicht hat, das Expertensystem 202 zu veranlassen, einen anderen Wert für einen Term anzunehmen und die Auswirkung desselben auf den Wert anderer Terme zu ermitteln, den Wert für einen beliebigen oder alle Terme rückzusetzen und für den Fall, daß die Bestimmung des laufenden Wertes eines Termes die Eingabe eines Wertes außerhalb der Definition erfordert, das Expertensystem 202 danach zu fragen, weshalb dieser Wert erforderlich ist.
  • Der Definitionen-Prozessor 207 definiert TERMe 206. Wenn ein TERM 206 vollständig definiert ist, so enthält der TS 215 einen definierten TERM (DTERM) 211, welcher dem TERM 206 entspricht und eine Definition (DEF) 213 des DTERM 211 enthält. Der TERM 206 kann entweder in einem DPC 204 empfangen werden oder aus einer Beschreibung (description) (DESC) 205, die der DP 207 vom Benutzer der Expertensystem-Schale 201 entsprechend einem TERM 206 angefordert hat. Der DP 207 bestimmt zunächst, ob bereits ein DTERM 211 entsprechend dem TERM 206 existiert, d.h. ob der TERM 206 bereits definiert ist. Wenn dies der Fall ist, findet der DP 207 den DTERM 211, der dem TERM 206 entspricht, wieder aus dem TS 215 und bereitet ihn für die Verwendung in der Definition vor, die der DP 207 gerade konstruiert. Falls er noch nicht definiert ist, gibt der DP 207 eine Beschreibungsanfrage (DESC REQ) an den Benutzer der Schale 201. Der Benutzer liefert eine Beschreibung (DESC) 205 des TERM 206 an den DP 201, welcher dann eine DEF 213 für den TERM 206 unter Verwendung der Information in der DESC 205 erstellt. Wie weiter unten im einzelnen beschrieben werden wird, ist die DESC 205 in einer Definitionssprache geschrieben, welche es dem Benutzer ermöglicht, andere TERMe 206, konstante Werte sowie den Umstand zu spezifizieren, daß der Wert von außerhalb des Expertensystems 206, für welches die Definition vorgesehen ist, zu holen ist. Die Definition gibt ferner die Operationen an, die mit den durch TERM 206 darqestellten Werten, den konstanten und den externen Werte in der Definition durchgeführt werden können. Wenn die DESC 205 TERMe 206 enthält, dann behandelt der DP 207 diese TERMe 206 in der gerade beschriebenen Weise. Ist ein DTERM 211 entsprechend dem TERM 206 vorhanden, so wird der DTERM 211 in der gerade erstellten DEF 213 benutzt; ist keiner vorhanden, so fordert der DP 207 eine den TERM 206 definierende DESC 205 an und verarbeitet diese wie beschrieben. Der wiederholte Einsatz des DP 207 ist in Fig. 2 durch den Pfeil 208 angedeutet, der zeigt, wie der UDESC 210, welcher zumindest einen TERM 206 enthält, wiederum durch den DP 207 verarbeitet wird. Die Verarbeitung wird in dieser Weise fortgesetzt, bis die Original-DESC 205 und alle TERMe 206 in jeder DESC 205, welche für TERMe 206 produziert wurden, die erforderlich waren, um die TERMe 206 in der Orginal-DESC 205 zu definieren, selbst definiert worden sind, d.h. wenn sie zugehörige DTERMe 211 und DEFne 213 im TS 215 haben.
  • Die DTERMe 211 und DEFn 213, welche durch den DP 207 erzeugt werden, werden im TS 215 gespeichert. Ein DTERM 211 kann im TS 215 mittels seines Namens lokalisiert werden. Die dem DTERM 211 entsprechende DEF 213 ist dem DTERM 211 zugeordnet und kann somit benutzt werden, sobald der DTERM lokalisiert ist. In einer DEF 213 ist eine modifizierte Version der DESC 205 enthalten, aus welcher die DEF 213 abgeleitet ist.
  • Die verbleibenden Operationen, die durch die DPC 204 spezifiziert sind, werden im DP 207 und im TS 215 wie folgt ausgeführt: Ist ein TERM 206 undefiniert, so entfernt der DP 207 den zugehörigen DTERM 211 und die DEF 213 aus dem TS 215; wird ein TERM 206 neu definiert, so entfernt der DP 207 die DEF 213, die dem TERM 206 entspricht, und fordert eine DESC 205 für den TERM 206 an. Diese DESC 205 wird dann in der gerade beschriebenen Weise verarbeitet. Fordert ein DPC, daß die Definition eines TERM 206 angezeigt wird, so zeigt der DP 207 die DESC 205, welche in der DEF 213 für den DTERM 211 enthalten war, welcher dem TERM 206 entspricht. Schließlich sichert die Sicherungsoperation den Inhalt eines gegebenen TS 215 in Form einer Datei für die spätere Verwendung und die Operation zum Wiederherstellen bewirkt, daß die Inhalte der Datei im TS 215 wiederhergestellt werden.
  • Die Term-Schlußfolgerungsmaschine (TIE) 219 führt Operationen unter Verwendung der DTERMe 211 und der DEFn 213 im TS 215 aus. Die Grund-Operation ist die sogenannte "Was"-Operation, welche den Wert eines DTERM 211 aus seiner Definition und aus externen Daten bestimmt, die durch den Benutzer des Expertensystems 202 oder der Schale 201 eingegeben werden. Die TIE 219 führt die WAS-Operation entsprechend einem IEC 217 aus, welcher die Operation spezifiziert, sowie einem TERM 206 aus dem CP 203. Die TIE 219 benutzt den DTERM 211, welcher dem TERM 206 entspricht, um die DEF 213 des DTERM 211 im TS 215 zu lokalisieren. Sie führt dann die Operationen aus, die in der DEF 213 spezifiziert sind, wobei DTERMe 211, Konstanten und externe Werte benutzt werden, die in der Definition angegeben sind, und gibt das Ergebnis TRES 227 an den Benutzer des Systemes 202 oder der Schale 201 zurück.
  • Die Konstanten in der DEF 213 stehen für eine sofortige Benutzung bei der Berechnung des Wertes vom DTERM 211 zur Verfügung; im Falle von externen Werten enthält der DTERM 211 eine Beschreibung, wie der externe Wert zu bekommen ist. Die TIE 219 verwendet die Beschreibung, um eine Anforderung nach einem externen Wert (EXVAL REQ) an die Quelle für die externen Werte (EXVAL) 225 zu stellen und empfängt die EXVAL 225 von der Quelle. Im einfachsten Fall ist die Quelle das Terminal, welches durch den Benutzer des Systems 202 oder der Schale 201 benutzt wird, und die Information wird dadurch gewonnen, daß eine Frage auf den Bildschirm des Benutzers gebracht und seine Eingabe empfangen wird; in komplizierteren Fällen kann die Quelle eine Datei oder eine Datenbasis sein.
  • Im Fall, daß ein weiterer DTERM 211 in der DEF 213 für den DTERM 211 ermittelt wird, erhält die TIE 219 die DEF 213 des weiteren DTERMs 211 und berechnet den Wert dieses DTERMs 211 aus seiner DEF 213; auf diese Weise werden alle DTERMe 211 in dieser DEF 213 ermittelt, und es wird solange fortgefahren, bis alle DTERMe 211 entwickelt sind, von denen der DTERM 211 abhängt, dessen Wert in der Was-Operation gesucht wird. Die Konstanten, die externen Werte und die DTERMe 211, welche in jeder DEF 213 angegeben sind, werden in der vorstehend beschriebenen Weise verarbeitet. Sind alle DEF 213 ermittelt, wird der gesuchte Wert des DTERM 211 berechnet und als TRES 227 zurückgegeben.
  • In einem bevorzugten Ausführungsbeispiel werden diejenigen EXVAL 225, welche bei der Entwicklung einer gegebenen DEF 213 erhalten werden, Teil der Definition dieser DEF 213. Wird deshalb die Was-Operation ein zweites Mal mit dem DTERM 211 durchgeführt, so wird die TIE 219 kein EXVAL REQ produzieren, sondern einfach die gespeicherten EXVAL 225 benutzen, um den Wert des DTERM 211 wieder zu berechnen. Ein bevorzugtes Ausführungsbeispiel hat zwei IEC 217 zum Modifizieren der gespeicherten EXVAL 225. Der erste Befehl, nämlich der Rücksetzbefehl, entfernt einfach aus den DEF 213 alle gespeicherten EXVAL 225 für die DTERMEe 211, welche in dem Rücksetz-Befehl angegeben sind. Wird deshalb die Was-Operation wieder durchgeführt, so wird ein neuer EXVAL 225 erhalten, wie vorstehend beschrieben ist. Der zweite Befehl, nämlich der Annahme-Befehl, ermöglicht es, daß ein neuer EXVAL 225 der DEF 213 für den TERM 206 zugeführt wird, welcher in dem Annahme-Befehl angegeben ist. Wird in diesem Falle die Was- Operation wieder durchgeführt, so wird der spezifizierte EXVAL 225 dazu benutzt, um den Wert des DTERM 211 abzuleiten, bezüglich dessen die Was-Operation ausgeführt wird.
  • Will der Benutzer einer Schale 201 oder eines Systems 202 wissen, warum die TIE 219 nach einem gegebenen EXVAL 225 fragt, so kann er auf einen EXVAL REQ mit dem Befehl für eine "Warum"Operation antworten. Als Antwort auf diesen Befehl gibt die TIE 219 eine DESC 205 bezüglich der DEF 213 für den DTERM 211 aus, dessen Wert bei der Anforderung des EXVAL 225 berechnet wurde, und der Benutzer kann aus der DESC 205 bestimmen, warum der gegebene EXVAL 225 wichtig ist. Der Benutzer kann weiterhin die Warum-Anfrage benutzen, um zu fragen, warum irgendeiner der DTERMe 211 erforderlich ist, deren Werte verlangt werden, um den Wert des DTERM 211 zu erhalten, dessen Entwicklung den EXVAL REQ erzeugt hat, worauf die TIE 219 die DESC 205 für diese DTERMe 211 bereitstellt.
  • 3. Hierarchie der Definitionen: Fig. 3
  • Bei der Definition eines Terms erzeugt der DP 207 eine Hierarchie von DEFn 213. Falls die DEF 213 für den gerade definierten Term selbst keine Terme enthält, so hat die Hierarchie nur eine Ebene. Enthält die DEF 213 für den Term einen weiteren Term, so muß dieser Term definiert werden, bevor der erste Term definiert werden kann, und der erste Term ist der oberste Term in einer Hierarchie mit zwei Ebenen. Enthält irgendeine der DEF 213 in der zweiten Ebene einen weiteren Term, so muß dieser Term definiert werden und die Hierarchie hat drei Ebenen. Die Hierarchie vertieft sich somit, bis keine der DEF 213 für die Terme, von welchen andere Terme abhängen, einen weiteren Term enthält, sondern vielmehr ausschließlich mittels Operationen bezüglich Konstanten oder externen Werten definiert ist. Wie sich aus dem Vorstehenden ergibt, ist eine DEF 213 immer die Spitzen-DEF 213 in der Hierarchie von DEF 213, die erforderlich sind, um den DTERM 211 zu definieren, welchen die DEF 213 definiert. Gleichzeitig kann sie aber auch einer tieferen Ebene in der Hierarchie von DEFn 213 angehören, die erforderlich sind, um einen anderen DTERM 211 zu definieren.
  • Fig. 3 ist eine prinzipielle Erläuterung einer derartigen Hierarchie von DEFn 213. Die Hierarchie 305 enthält DEF 213(A) bis 213(E), entsprechend DTERMen 211(A) bis 211(E), die zu einem Satz von DTERMen 301 gehören. Die oberste Definition in der Hierarchie 305 ist die DEF 213(A), die dem DTERM 211(A) entspricht. Die Angabe OP(B,C) in der DEF 213(A) bedeutet, daß die DEF 213(A) spezifiziert, daß der Wert des DTERM 211(A) dadurch erhalten wird, daß eine Operation mit den Werten der DTERMe 211(B) und (C) ausgeführt wird. Ähnlich spezifiziert die DEF 213(B), daß der Wert des DTERM 211(B) derart erhalten wird, daß eine Operation mit den Werten der DTERMe 211(D) und (E) ausgeführt wird. Dementsprechend hat die Hierarchie 305 für die DEF 213(A) drei Ebenen: Die erste Ebene 307, welche nur die DEF 213(A) enthält; die zweite Ebene 309, welche die DEF 213(B) und DEF 213(C) enthält, sowie die dritte Ebene 311, welche die DEFn 213(D) und 213(E) enthält. Die DEFn 213(C), 213(D) und 213(E) definieren die DTERMe 211 C, D und D nicht mit Hilfe anderer DTERMe 211 und führen deshalb nicht zu tieferen Ebenen. Derartige DEFn 213 werden terminale Definitionen 312 genannt.
  • Beim Aufbau der Hierarchie 305 beginnt der DP 207 mit dem TERM 266(A), welcher dem DTERM 211(A) entspricht, den er von einer DESC 205 empfängt, aus der eine DEF 213 auf einer höheren Ebene konstruiert wird, oder von einem "Definiere"- oder einem "Definiere um"-Befehl DPC 204. Der DP 207 fordert dann eine DESC 205 für den DTERM 211(A) an. Die DESC 205 definiert den DTERM 211(A) mittels einer Operation bezüglicher zweier TERMe 206 B bzw. C. Existieren die DEF 213(B) und 213(C) bereits, so kann der DP 207 die DEF 213(A) erzeugen und muß nicht weiter fortfahren. Existiert eine der DEF 213(B) und DEF 213(C) nicht&sub1; so muß der DP 207 diese DEF 213 erzeugen, bevor er die DEF 213(A) erzeugen kann. Der DP 207 fragt deshalb nach einer DESC 205 für den TERM 206(B) und für den TERM 206(C). Im Falle des TERM 206(C) definiert die DESC 205 den TERM 206(C) nur in Form von EXVAL (C) 225 und die DEF 213(C) kann sofort aufgebaut werden. Beim TERM 206(B) definiert die DESC 205 den TERM 206(B) mittels zweier zusätzlicher TERMe 206, D und E; dementsprechend muß der DP 207 auf eine tiefere Ebene gehen und für diese TERMe 206 DEFn 213 erzeugen. Wiederum fordert der DP 207 DESC 205 für diese Terme an. In beiden Fällen werden die TERMe 206 mittels EXVALn 225 definiert und dementsprechend können beide DEFn 213 aufgebaut werden. Die DEFn 213 für alle TERMe 206, welche bei der Definition des TERMS 206 A eine Rolle spielen, sind nunmehr aufgebaut: die DTERMe 211(B) bis (E) entsprechen den TERMen 206(B) bis (E) und existieren; die DEF 213(A) kann aufgebaut werden und der TERM 206(A) weist nun den ihm entsprechenden TERM 211(A) auf.
  • Da die Hierarchie 305 durch Wiederholung aufgebaut wird, wobei mit der Spitzen-DEF 213 in der Hierarchie 305 begonnen wird und nur TERMe 206 definiert werden, welche keinen entsprechenden DTERM 211 aufweisen, kann kein DTERM 211 zwei DEFn 213 aufweisen und keine DEF 213 in der Hierarchie 305 steht in Bezug zu einer DEF 213, die in der Hierarchie 305 höher steht. Dementsprechend sind die DEF 213 in der Hierarchie 305 notwendigerweise vollständig und konsistent in bezug auf die DEF 213(A) in der Hierarchie 305 oder zu der Spitzen- DEF 213 in irgendeiner Hierarchie, die die DEF 213(A) enthält.
  • 4. Beschreibungssprache für die Beschreibungen 205
  • Wie vorstehend gezeigt ist, erzeugt der DP 207 DEFn 213 aus den Beschreibungen (DESC) 205. In dem Prototyp werden die DESCn 205 mittels einer beschreibenden Sprache erzeugt. Die Beschreibungssprache enthält vordefinierte Terme, die Operationen mit Termen spezifizieren, eine Fall-Feststellung sowie Operationen zum Gewinnen externer Werte.
  • Die Operationen enthalten Boolesche Operationen, arithmetische Operationen und Text-Verknüpfungen. Die Fall-Feststellung ist eine Liste von Booleschen Ausdruckswert-Paaren der Form:
  • (boolean_exp_1) value_1 . . . (boolean_exp_n) value n (OTHERWISE) otherwise_value
  • (value: Wert; otherwise: anderenfalls)
  • Wenn die eine Fall-Feststellung enthaltende DEF 213 entwickelt wird, so werden die Booleschen Ausdrücke 1 bis n der Reihe nach entwickelt, bis eine von ihnen richtig ist. Der diesem wahren Booleschen Ausdruck entsprechende Wert wird der Wert des DTERM 211, welcher durch die DEF 213 definiert ist. Ist keiner der Booleschen Ausdrücke wahr, so wird derejenige Wert, der OTHERWISE (anderenfalls) entspricht, der Wert des DTERM 211.
  • Die Beschreibungssprache des Prototyps erlaubt die Unterteilung in zwei Klassen von Operationen zum Erhalt externer Werte. Die erste Klasse, die ASK-Operationen (FRAGE-Operationen), erhält Werte aus dem Terminal des Benutzers des Expertensystems 202. Die erste Klasse, also die ASK-Operationen, werden benutzt, um externe Werte aus dem Terminal zu gewinnen. Die zweite Klasse, die RECORD-Operationen (SATZ-Operationen), werden benutzt, um externe Daten aus einem Datenbasissystem zu gewinnen. In beiden Fällen kann es sich bei den externen Werten um Zahlen, Zeichenfolgen oder Boolesche Werte oder auch um ausgewählte Ausdrücke eines Satzes von alternativen Buchstaben-Ausdrücken handeln, wobei letztere nichts repräsentieren als sich selbst.
  • Die ASK-Operation zum Erhalt eines numerischen Wertes hat die Form:
  • ASK NUMBER "prompt_string" (number: Zahl; string: Zeichenkette)
  • Wird die DEF 213, welche eine derartige ASK-Operation (Frage) enthält, entwickelt, so gibt der DP 207 eine Aufforderungs- Zeichenkette an das Terminal und wartet darauf, daß über das Terminal eine Zahl eingegeben wird. Diese Zahl wird dann bei der Entwicklung der DEF 213 benutzt. Die Aufforderungs-Zeichenkette kann selbst einen zuvor definierten Term enthalten, und entsprechend kann die Antwort des Benutzers vom Wert eines zuvor entwickelten Terms abhängig gemacht werden. Die ASK-Operationen für Boolesche und Zeichenketten-Werte werden in der gleichen Weise festgelegt wie die ASK-Operation für numerische Werte, mit der Ausnahme, daß das Element NUMBER in der obigen Operation durch die Angabe JA/NEIN ersetzt wird, wenn ein Boolescher Wert gesucht wird, sowie TEXT, wenn eine Zeichenkette gesucht wird.
  • Die ASK-Operation, welche einen Buchstaben aus einer Anzahl von Buchstaben-Ausdrücken auswählt, hat folgende Form:
  • ASK CHOICE "prompt_string" (literal_term_1 . . literal_term_n)
  • (prompt string: Aufforderungs-Zeichenkette; literal term: Konstantenausdruck)
  • Wird die ASK CHOICE enthaltende DEF 213 entwickelt, so wird die Aufforderungs-Zeichenkette ausgegeben und der Benutzer aufgefordert, einen der Buchstaben auszuwählen. Dieser Buchstabenausdruck kann dann in der DEF 213 dazu benutzt werden, um den Wert des DTERM 211 zu berechnen, der durch die DEF 213 definiert ist.
  • Die RECORD-Operationen sind im wesentlichen analog zu den ASK-Operationen, mit der Ausnahme, daß die RECORD-Operation festlegt, wie der externe Wert in der Datenbasis zu lokalisieren ist, wobei die Datenbasis den Wert an einer bestimmten Stelle bereitstellt.
  • 5. Arbeitsweise der Schale 201 und des Systems 202: Fig. 4
  • Die Arbeitsweise der Schale 201 wird im Detail anhand einer Hierarchie von Definitionen erläutert, aus denen ermittelt werden kann, ob jemand betrogen worden ist. Die Legaldefinition von Betrug fordert, daß eine Partei wissentlich einer anderen Partei eine falsche Darstellung gegeben hat und daß die andere Partei zu ihrem Nachteil dieser falschen Darstellung vertraut hat. Fig. 4 zeigt eine Hierarchie von DTERMn 211, welche dieser Legaldefinition entsprechen.
  • Die Erzeugung der Hierarchie gemäß Fig. 4 beginnt, wenn der CP 203 den DEFINE FRAUD-Befehl (Definiere Betrug) erhält. Der CP 203 überträgt dann TERM 206 BETRUG zum DP 207, welcher eine DESC 205 vom die Definition erzeugenden Experten anfordert. Der Experte stellt die DESC 205 wie folgt bereit:
  • KNOWING_MISREPRESENTATION AND DETRIMENTAL_RELIANCE (KENNTNIS_VON_FALSCHDARSTELLUNG UND SCHÄDLICHES_VERTRAUEN)
  • Diese DESC 205 enthält zwei weitere TERMe 206 und den Booleschen UND-Operator. Dementsprechend muß der Wert von FRAUD derart berechnet werden, daß die Werte der DTERMe 211 gewonnen werden, welche den TERMN 206 entsprechen, und eine UND- Operation mit ihnen durchgeführt wird.
  • Da die weiteren TERMe 206 undefiniert sind, fragt der DP 207 nach ihren Definitionen. Der Experte liefert die DESC 205
  • FALSCHDARSTELLUNG UND BESCHULDIGTER_KANNTE_FALSCHDARSTELLUNG
  • Dies steht für KENNTNIS_VON_FALSCHDARSTELLUNG und die DESC 205 VERTRAUEN_DURCH_KLÄGER UND VERLUST_DURCH_KLÄGER für SCHÄDLICHES_VERTRAUEN. Wiederum sind diese weiteren TERMe 206 undefiniert, so daß der DP 207 nach ihren Definitionen fragt und der Experte die in Fig. 4 dargestellten bereitstellt. Der DP 207 kann in beliebiger Reihenfolge nach den Definitionen fragen, doch werden bei einem bevorzugten Ausführungsbeispiel alle TERMe 206, die notwendig sind, um einen gegebenen undefinierten TERM 206 zu definieren, definiert, bevor zum nächsten undefinierten TERM 206 fortgeschritten wird.
  • Im vorstehend beschriebenen Ausführungsbeispiel enthalten alle DESCS 205 FÄLSCHARSTELLUNG, BESCHULDIGTER_KANNTE_ FALSCHDARSTELLUNG, VERTRAUEN_DURCH_KLÄGER und VERLUST_DURCH_KLÄGER nur durch das System definierte DTERMe 211, die in der ASK- YES/NO-Operation benutzt worden sind, so daß der DP 207 nunmehr in der Lage ist, die DEFn 213 für alle Terme in der Hierarchie zu erzeugen. Die Werte für alle DTERMe 211 in der Hierarchie hängen letztlich von den Werten ab, welche die ASK-YES/NO-Operation (mit ja oder nein zu beantwortende Frage) vom Benutzer des Expertensystems 202 anfordert. Da das Expertensystem die BETRUG-Definition benutzt, hängen sie letztlich davon ab, was der Kläger über das ihm Geschehene berichtet.
  • Die Benutzung der BETRUG-Definitionshierarchie im Expertensystem 202 beginnt mit dem WHAT FRAUD-Befehl (welcher Betrug), den der Benutzer des Expertensystems 202 in den CP 203 eingibt. Der CP 203 erzeugt einen entsprechenden WHAT FRAUD IEC 217 für die TIE 219. Die TIE 219 bestimmt dann den Wert für BETRUG durch Entwicklung von dessen DEF 213. Um dies zu tun, muß sie die DEF 213 der anderen DTERMe 211 in der Hierarchie entwickeln, beginnend mit KENNTNIS_VON_FALSCHDARSTELLUNG. Die Entwicklung von KENNTNIS_VON_FALSCHDARSTELLUNG erfordert die Entwicklung von FALSCHDARSTELLUNG. Die Entwicklung dieses DTERM 211 führt zur Ausführung der WAS-JA/NEIN-Operation bezüglich seiner DEF 213 und die TIE 219 gibt die Anfrage aus: "Hat er dir etwas erzählt, was nicht wahr ist?" Antwortet der Benutzer mit "nein", so ist FALSCHDARSTELLUNG falsch, KENNTNIS_VON_ FALSCHDARSTELLUNG ebenfalls falsch und BETRUG ebenfalls falsch, so daß die TIE 219 einen TRES 227 zum Benutzer zurückgibt, der anzeigt, daß kein Betrug stattgefunden hat. Falls der Benutzer mit "ja" antwortet, so entwickelt die TIE 219 BESCHULDIGTER_ KANNTE_FALSCHDARSTELLUNG, was wiederum zu einer Frage an den Benutzer führt. Abhängig von der Antwort auf die Frage wird die Entwicklung fortgesetzt oder beendet. Die TIE 219 fährt in dieser Weise fort, bis sie einen Wert für BETRUG ermittelt hat.
  • Wie zuvor erwähnt, kann der Benutzer des Expertensystems 202 den WIE-Benutzerbefehl dazu benutzen, um zu bestimmen, in welcher Weise das Expertensystem 202 seinen Wert für BETRUG ermittelt hat. Angenommen, daß der Benutzer mit "nein" auf die Frage "Hat er dir etwas erzählt, was nicht wahr ist" geantwortet hat (im Zuge der Definition von FALSCHDARSTELLUNG), wird die TIE 219 im Prototyp auf HOW FRAUD (Wie Betrug) durch folgende Ausgabe antworten:
  • BETRUG ist definiert als (KENNTNIS_VON_FALSCHDARSTELLUNG UND SCHÄDLICHES_VERTRAUEN), wobei (KENNTNIS_VON_FALSCHDARSTELLUNG) gleichbedeutend ist mit FALSCH.
  • Wie zuvor erwähnt, placiert der DP 207 die DESC 205 für einen DTERM 211 in die DEF 213 des DTERM 211 und die TIE 219 speichert auch den beim Ermitteln der DEF 213 eines DTERMs 211 gewonnenen externen Wert in der DEF 213. Bei der Durchführung der WIE-Operation holt die TIE 219 zunächst die DESC 205 aus der DEF 213 für den DTERM 211, der gefordert ist, und gibt diesen aus und entwickelt dann die DTERMe 211 in der DEF 213, wie gefordert, um den geforderten Wert des DTERM 211 zu erhalten. Die DTERMe 211 werden dann zusammen mit ihren Werten ausgegeben. Falls der Benutzer weitere Rückfragen hat, muß er nur die WIE-Anfrage bezüglich der anderen DTERMe 211 eingeben, die in der ausgegebenen DESC 205 der vorhergehenden WIE- Operation angegeben waren.
  • Wie zuvor ebenfalls erwähnt, kann ein Benutzer auf die Anforderung nach einem externen Wert nicht mit einem Wert, sondern mit einem WARUM-Befehl antworten. Antwortet ein Benutzer beim BETRUG-Beispiel mit WARUM, wenn die TIE 219 fragt "Hat er dir irgendetwas erzählt, was nicht wahr ist", so antwortet die TIE 219 mit:
  • FALSCHDARSTELLUNG ist erforderlich, um den Wert von KENNTNIS_VON_FALSCHDARSTELLUNG zu ermitteln, welcher definiert ist als FALSCHDARSTELLUNG UND BESCHULDIGTER_KANNTE_FALSCHDARSTELLUNG
  • und wiederholt die Frage.
  • Wiederum kommt die bei der Beantwortung des WARUM-Befehls benutzte Information aus den DESC 205, die in den DEFn 213 gespeichert sind, und zwar in der Hierarchie, die benutzt wird, um BETRUG zu definieren. Will der Benutzer an dieser Stelle mehr wissen, kann er den WIE-Befehl auf die DTERMe 211 anwenden, die in der Antwort auf den WARUM-Befehl erwähnt sind.
  • 6. Die LISP-Umgebung der Prototyp-Ausführungsformen: Fig. 5
  • Nachdem bisher ein grundlegender Überblick über den Aufbau und den Betrieb der Schale 201 und des Systems 202 gegeben wurde, soll nachfolgend die Implementierung eines ersten Prototyps im Detail beschrieben werden.
  • Sowohl der erste als auch der zweite Prototyp sind in der Llspprogrammiersprache implementiert und werden in einem LISP-Umfeld ausgeführt. Die LISP-Programmiersprache und ein entsprechendes Umfeld werden häufig benutzt, um Prototypen und Serienversionen von Expertensystemen zu implementieren, und sind dem Fachmann wohlbekannt. Der spezielle LISP-Dialekt, welcher für Prototypen Verwendung findet, ist das COMMON LISP, welches in folgender Veröffentlichung beschrieben ist: Guy L. Steele, Jr., COMMON LISP, the Language, Digital Press, 1984. Nachfolgend werden das LISP-Umfeld und die Sprache nur insoweit beschrieben, wie es erforderlich ist, um die Arbeitsweise der Prototyp-Ausführungsbeispiele zu verstehen.
  • Die LISP-Sprache unterscheidet sich von anderen Sprachen, wie FORTRAN oder PASCAL, darin, daß sie hauptsächlich die Verarbeitung von Symbolen betrifft, im Unterschied zur Verarbeitung von Daten, die in einem Programm durch Symbole repräsentiert sind. Die fundamentalen Bausteine eines LISP-Programms sind die sogenannten Atome. Ein Atom kann ein Symbol sein, wie ABC, oder eine Konstante. Die Bausteine sind mittels Listen in Programme strukturiert, wobei die Listen keine sogenannten Elemente (member) oder auch Elemente einschließlich Atomen und anderen Listen aufweisen können. Eine Liste wird dadurch erzeugt, daß ihre Elemente in Klammern gesetzt werden. (ABC) ist eine Liste mit einem Element, dem Symbol ABC. Funktionen erscheinen in LISP als Listen, in welchen das erste Symbol der Liste die Funktion repräsentiert, während die anderen Atome die Argumente der Funktion darstellen. Die Plus-Funktion wird in LISP beispielsweise durch das Symbol + repräsentiert und die Liste (+ 2 3) bedeutet, daß die +- Operation auf die Atome 2 und 3 angewandt wird. Jedes Atom oder jede Liste, die bei der Entwicklung mittels eines LISP- Interpretierers einen Wert aufweist, wird eine Form genannt. 5 und (+ 2 3) sind Formen. Wenn das Symbol ABC einen Wert aufweist, ist es eine Form.
  • Funktionen werden in LISP mittels der DEFUN-Funktion definiert, in welcher die verbleibenden Posten der Liste den Namen der Funktion bilden, sowie ihre Argumente und den Wert, den sie ausgibt. Beispielsweise definiert der Ausdruck (defunfive () 5) eine Funktion, welche keine Argumente annimmt und immer zum Wert 5 zurückkehrt.
  • LISP-Programme können Symbole und Listen nicht nur verarbeiten, sondern auch herstellen. Da eine Funktionen-Definition nur eine Art einer speziellen Liste darstellt, kann ein LISP- Programm ein Symbol für die DEFUN-Funktion als Name für das neue Symbol bereitstellen, welches durch DEFUN erzeugt wird, und sodann das Symbol benutzen, um die neu erzeugte Funktion auszuführen. Symbole können sich selbst entweder durch Symbole oder Werte repräsentieren. Repräsentiert ein Symbol sich selbst als Symbol in einer LISP-Liste, so geht ihm ein '-Zeichen voran. Falls die Symbole Funktionen repräsentieren, ist der Wert des Symbols seine Funktion. Wird aber die Funktion in einer Liste mitsamt ihren Argumenten angeordnet und die Liste entwickelt, so ist das Ergebnis der Wert dieser Ausführung der Funktion. Dementsprechend repräsentiert 'fünf das Symbol fünf, während fünf die Funktion repräsentiert, die durch DEFUN, wie oben, definiert ist, und (fünf) den Wert der Ausführung der Funktion fünf repräsentiert, d.h. 5.
  • LISP-Programme werden in einer LISP-Umgebung geschrieben und ausgeführt. Die nachfolgend bei den Prototyp-Ausführungsbeispielen benutzte Sprache wurde von der Firma Gold Hill Computers, Inc., für die von Wang Laboratories, Inc. hergestellten Bürorechner entwickelt. Fig. 5 zeigt ein Blockdiagramm einer typischen LISP-Umgebung 501. Die Umgebung 501 hat zwei Hauptbestandteile, den LISP-Interpretierer 503, welcher die LISP-Formen entwickelt, und den LISP-Symbolraum 505, welcher die LISP-Symbole (SYM 501) und ihre Definitionen (SYMDEF 509) speichert. DEFUN und gewisse andere LISP-Funktionen erzeugen und definieren neue LISP-Symbole oder definieren zuvor existierende LISP-Symbole neu, wenn sie entwickelt werden; dementsprechend kann der LISP-Interpretierer 503 nicht nur als Entwickler von Symbolen verstanden werden, sondern auch als Erzeuger, Definierer und Umdefinierer von Symbolen.
  • Der Betrieb im LISP-Umfeld 501 ist wie folgt: Gibt der Benutzer des LISP-Umfeldes 501 eine Liste ein, die eine Form wie (fünf) enthält, so entwickelt der LISP-Interpretierer 503 die Form, wobei das Symbol fünf im Symbolraum 505 angeordnet wird. Dann wird bestimmt, was die zugehörige SYMDEF 509 ist, und sodann wird SYMDEF 509 interpretiert, um den Wert von fünf zu berechnen. In diesem Falle ist SYMDEF 509 der Code für die Funktion fünf, welche durch Entwicklung des DEFUN- Ausdruckes erzeugt worden ist, und ihre Interpretation erzeugt den Wert 5, welchen der Interpretierer als Wert von (fünf) an den Benutzer ausgibt.
  • Da der LISP-Interpretierer 503 in der Lage ist, SYMe 501 sowie deren zugehörige SYMDEFn 509 zu erzeugen, diese im Symbolraum 505 zu speichern und im Symbolraum 505 zu lokalisieren, kann die LISP-Umgebung 501 automatisch Operationen ausführen, welche in anderen Sprachen schwierig zu implementieren sind und welche für den Betrieb von Expertensystem-Schalen und Expertensystemen wesentlich sind. Aus diesem Grunde hat sich die LISP-Umgebung 501 als bevorzugte Umgebung für die Erzeugung von Prototyp-Expertensystemen und Prototyp-Expertensystem-Schalen erwiesen. Wie nachfolgend noch deutlicher werden wird, nutzen die Prototypen gemäß der vorliegenden Erfindung die Symbol-Erzeugung, die Definition und die Lokalisierung in diesem Umfeld voll aus.
  • 7. Überblick über die erste Prototyp-Ausführungsform: Fig. 6
  • Beim ersten Prototyp-Ausführungsbeispiel werden die Bauteile der Expertensystem-Schale 201 und des Expertensystems 202 mittels LISP-Funktionen implementiert. Fig.6 gibt einen Überblick über die Funktionen und setzt sie in Beziehung mit den Komponenten der Fig.2 sowie mit den Eingaben und Ausgaben dieser Komponenten. Dementsprechend sind die LISP-Funktionen, die den Befehlsprozessor CP 203 ausmachen, in dem gestrichelt gezeichneten Kästchen untergebracht, welches entsprechend markiert ist, während die Funktionen, welche den Definitionenprozessor DP 207 bilden, in dem gestrichelt gezeichneten Kästchen mit einer entsprechenden Markierung angeordnet sind, und diejenigen Funktionen, welche die Term-Schlußfolgerungseinrichtung TIE 219 bilden, in dem entsprechend markierten und gestrichelt gezeichneten Kästchen angeordnet sind. Der Term-Speicher TS 215 ist beim ersten Prototyp im LISP-Symbolraum 505 ausgeführt, welcher die LISP-Symbole und ihre Definitionen speichert. Es versteht sich, daß die Komponenten des ersten Prototyp-Ausführungsbeispieles auch den LISP-Interpretierer 503 enthalten, welcher die LISP-Funktionen ausführt, welche die Komponenten bilden, die SYMe 507 und die SYMDEFn 509, die durch die Komponenten erzeugt werden, in den Symbolraum 505 bringt, und die SYMe 507 und und ihre SYMDEFn 509 manipuliert.
  • Zunächst führt der EXPERT 603 die Funktionen des CP 203 im Prototyp aus. Der EXPERT 603 empfängt eine Eingangskette und setzt sie in Klammern, um eine LISP-Form zu erzeugen, die in Fig. 6 CFORM 605 genannt ist. Mit dieser wird die EVAL-Operation ausgeführt. Wenn der LISP-Interpretierer 503 die Form entwickelt, behandelt er das erste Symbol in der Form als LISP-Funktionsnamen und die verbleibenden Posten der Form als Liste von Argumenten für die benannte Funktion.
  • Die erwarteten Eingangsketten für den EXPERT 603 sind die Befehle für den DP 207, nämlich DEFINE, REDEFINE, UNDEFINE und die Befehle für die Term-Schlußfolgerungseinrichtung TIE 219, nämlich WHAT, HOW, ASSUME, RESET, DEFINITION, SAVE, WHY und RESTORE (entsprechend WAS, WIE, ANNAHME, RÜCKSETZEN, DEFINITION, SPEICHERN, WARUM, WIEDERHERSTELLEN). Die Befehle DEFINE (DEFINIERE), REDEFINE (DEFINIERE UM) und UNDEFINE (LÖSCHE DEFINITION) entsprechen den Befehlen DPC 204 der Fig. 2 und die verbleibenden Ketten entsprechen den Befehlen IEC 217 dieser Figur. Beim ersten Prototyp-Ausführungsbeispiel findet keine Fehlersuche im EXPERT 603 statt; bei einem kommerziellen Ausführungsbeispiel könnte der EXPERT 603 aber einen Code zum Nachweis einer unkorrekten Eingabe und zum Erzeugen einer entsprechenden Antwort aufweisen.
  • Wie der Fig. 6 zu entnehmen ist, wird der DP 207 beim ersten Prototyp durch die LISP-Funktionen DEFINE, REDEFINE und UNDEFINE ausgeführt. Wenn der EXPERT 203 den DEFINE-Befehl mit einem TERM 206 wie FRAUD erhält und dem LISP-Interpretierer als (DEFINE FRAUD) (Definiere Betrug) anbietet, so ruft der LISP-Interpretierer 503 die Funktion DEFINE mit dem Argument FRAUD auf. DEFINE fordert eine DESC 205 vom Benutzer und benutzt die DESC 205 zum Erzeugen der DEF 213 für FRAUD. Wie nachfolgend im Detail beschrieben wird, ist das Ergebnis des Aufrufs eine LISP-Funktion namens FRAUD, für die der DEFUN wie folgt aussieht:
  • (defun FRAUD()
  • (prog2
  • (push 'FRAUD arg-stack)
  • (AND (KNOWING_MISREPRESENTATION) (DETRIMENTAL_RELIANCE))
  • (pop Arg-stack)
  • ) ) ) )
  • (Erläuterung: detrimental reliance:
  • vertrauens schädigend,
  • knowing misrepresentation: Kenntnis von Falschdarstellung)
  • Im Verlaufe der Definition FRAUD werden KNOWING_ MISREPRESENTATION und DETRIMENTAL_RELIANCE sowie die für ihre Definitionen erforderlichen DTERMn 211 alle als LISP-Symbole definiert, welche LISP-Funktionen repräsentieren. AND ist eine vordefinierte LISP-Funktion, welche mit ihren Argumenten die AND-Operation ausführt. Der durch die Funktion FRAUD zurückgegebene Wert ist das Ergebnis der AND-Operation.
  • Die DTERMe 211, welche als LISP-Symbole definiert wurden, die LISP-Funktionen repräsentieren, werden nachfolgend mit TSYM 615 bezeichnet. Ihre Definitionen, welche die Implementierung der DEFn 213 beim Prototyp sind, werden TDEFn 617 genannt. Da der LISP-Interpretierer TSYMe 615 und TDEFn 617 entsprechend der DEFINE-Funktion erzeugt, plaziert er sie im Symbolraum 505. Der TDEF 617 des ersten Prototyps ist in Fig.7 gezeigt. Demnach enthält jede TDEF 617 eine TFUNC 701, die LISP-Funktion, die durch TSYM 615 repräsentiert wird, eine TDESC 705 als modifizierte Kopie der DESC 205, welche die Grundlage für die Definition TSYM 615 bildete, und den TEXVAL 703, welcher den letzten EXVAL 703 enthält, der durch den Benutzer des Expertensystems 202 bezüglich der TSYM 615 angegeben worden ist.
  • Die verbleibenden Funktionen im DP 207 werden vom EXPERT 603 in gleicher Weise wie DEFINE aufgerufen. Im Rahmen einer REDEFINE-Ausführung werden zunächst LISP-Operationen verwendet, welche TFUNC 701 und TDESC 705 von der TDEF 617 entfernen, so daß TSYM 615 neu definiert werden kann, und dann wird DEFINE aufgerufen, um neue Werte für TFUNC 701 und TDESC 705 in der TDEF 617 zu erzeugen. Der Befehl UNDEFINE entfernt einfach TFUNC 701 und TDESC 705, ohne daß eine neue Definition bezüglich TSYM 615 erzeugt wird.
  • Im Zuge der Fortsetzung der Implementierung der TIE 219 beim ersten Prototyp-Ausführungsbeispiel 601 empfängt der LISP- Interpretierer 503 eine CFORM 605 vom EXPERT 603, welche einen IEC 217 repräsentiert, und in der TIE 219 wird die Funktion ausgeführt, die in der CFORM 605 angegeben ist. Im Zuge der Ausführung der Funktionen in der TIE 219 werden Formen (TFORM 639) für den Interpretierer 505 bereitgestellt, die aus den TSYMn 615 erzeugt werden. Der Interpretierer 505 entwickelt diese und gibt das Resultat (TFORM RESULT) an die ausgeführte Funktion zurück.
  • Die Funktionen in der TIE 219 benutzen Datenstrukturen ARG- STACK 635 und TERMS-STACK 613 sowie SYM-BOUND-LIST in der TIE 219. Die ARG-STACK 635 wird benutzt, um ein TSYM 615 zu speichern, während die Werte des TSYM 615, mit denen es definiert ist, berechnet werden. Wie sich aus dem Code für die Prozedur FRAUD ergibt, wird das Symbol FRAUD in den ARG-STACK eingegeben, bevor die AND-Operation, welche FRAUD definiert, ausgeführt wird und danach vom ARG-STACK entfernt. Der TERMS-STACK 613 ist ein Stapel von TYMn 615. Der Stapel wird bei der Erzeugung der TDEF 617 für die TSYM 615 geordnet, wobei die TDEF 617 der ersten TSYM 615 am Boden und die der letzten oben angeordnet ist. Wie nachfolgend erläutert wird, ist die letzte TSYM 615 normalerweise diejenige, deren TDEF 617 in der Hierarchie von Definitionen oben angeordnet ist. Die SYM- BOUND-LIST 637 ist eine Liste von TYMn 615, denen laufend EXVAL 225 zugeordnet werden.
  • Die Diskussion der LIPS-Funktionen in der TIE 219 soll mit der WHAT-Funktion 619 beginnen (what: was). Diese Funktion wird bei einem WHAT-Befehl an den EXPERT 603 ausgeführt. Dieser Befehl hat die Form WHAT DTERM 611. Bezüglich FRAUD wäre es WHAT FRAUD, was der EXPERT 603 in (WHAT FRAUD) umwandelt. Die WHAT-Funktion 619 benutzt zunächst eine LISP-Funktion, um zu bestimmen, ob ihr Argument eine TSYM 615 ist, und benutzt bei positivem Ergebnis eine andere LISP-Funktion, die ein Symbol, welches ein Funktionsname ist, als Argument annimmt und die Funktion aufruft, in diesem Falle also FRAUD. Das Ergebnis ist die Ausführung der TFUNC 701 in der TDEF 617 für FRAUD. Ist diese TFUNC 701 ausgeführt, werden die TFUNCn 701 für MISREPRESENTATION und DETRIMENTAL_RELIANCE (FALSCHDARSTELLUNG und SCHÄDLICHES_VERTRAUEN) ausgeführt, bis der Wert für FRAUD bestimmt ist. Wird eine TFUNC 701 für ein gegebenes TSYM 615 ausgeführt, so werden die TFUNCn 701 für alle TYMn 615 ausgeführt, welche erforderlich sind, um den Wert der gegebenen TSYM 615 zu finden. Sind alle notwendigen TFUNCn 701 ausgeführt worden, wird der hieraus resultierende Wert dem Benutzer des Systems 202 als TRES 227 angezeigt. Hat eine TSYM 615, deren TFUNC 701 einen EXVAL 225 erfordert, bereits einen solchen Wert, so befindet sich die TSYM 615 in der SYM- BOUND-LIST 637 und die TFUNC 701 benutzt den TEXVAL 703 in der TDEF 617 für den TSYM 615; anderenfalls erzeugt die TFUNC 701 einen EXVAL REQ und erhält den EXVAL 225 vom Benutzer. Dementsprechend wirkt die WHAT-Funktion zusammen mit dem LISP-Interpretierer 503 als eine Schlußfolgerungseinrichtung zum Bestimmen des Wertes des TSYM 615, dessen Definition in der Hierarchie oben steht, wobei die Hierarchie durch die externen Werte bestimmt ist. Solange wie eine TFUNC 701 als Folge einer WHAT-Operation angefordert und aktiv ist, befindet sich das zugehörige TSYM 615 im ARG-STACK 635.
  • Die WIE-Funktion 623 wird auf den WIE-Befehl ausgeführt, welcher ein TSYM 615 spezifiziert. Die WIE-Funktion 623 nimmt dieses TSYM 615 als Argument und benutzt eine andere LISP- Funktion, nämlich die SYMBOL-Funktion, mit dem Argument TSYM 615, um die Liste zu erhalten, die mit DEFUN benutzt worden ist&sub1; um TFUNC 701 entsprechend dem TSYM 615 zu definieren, sowie andere LISP-Funktionen, um das dritte Element in der dritten Liste der TFUNC 701 zu erhalten. Wie sich aus der vorstehend beschriebenen FRAUD-Funktion ergibt, ist dieses Element die Liste, welche die Operation definiert, durch welche der Wert der Funktion abgeleitet wird, d.h. in FRAUD ist es die Liste (AND KNOWING_MISREPRESENTATION) (DETRIMENTAL _-RELIANCE)). Die WIE-Funktion findet diese Liste wieder auf, benutzt die DEFINITIONEN-Funktion der TIE 219, um die beim WIE-Befehl für die TSYM 615 benutzten TDESC 705 anzuzeigen, und entwickelt die TSYMe 615 in der Liste, die durch die TFUNC 701 wiedergefunden wurde, worauf das Ergebnis mit einem geeigneten Erläuterungstext ausgegeben wird.
  • Der Benutzer des Expertensystems 202 kann den WARUM-Befehl entweder in den EXPERT 603 oder in die TIE 219, entsprechend einem EXVAL REQ-Ausgang während der Entwicklung eines TSYM 615 eingeben. Die WARUM-Funktion kann entweder mit oder ohne einem TSYM 615 als Argument aufgerufen werden. Im ersten Fall arbeitet die Funktion mit dem TSYM 615, das gerade im ARG- STACK 635 oben ist, wobei es sich um das TSYM 615 handelt, das zur gerade entwickelten TFUNC 701 gehört und dessen Entwicklung den EXVAL REQ erzeugt hat, auf den der Benutzer antwortet, während im zweiten Falle die Funktion mit einem TSYM 615 arbeitet, das durch den Benutzer bereitgestellt wird. In jedem Falle wird im nächsten Schritt im ARG-STACK 635 das vorangegangene TSYM 615 lokalisiert, bei dem es sich um das TSYM 615 handelt, das der TFUNC 701 entspricht, deren Entwicklung zur Entwicklung der Funktion geführt hat, die dem TSYM 615 entspricht, welches durch den WARUM-Befehl verarbeitet wird. Liegt kein vorangegangenes TSYM 615 vor, so ist der WARUM-Befehl bedeutungslos, und dem Benutzer wird eine entsprechende Mitteilung gemacht. Liegt ein vorangegangenes TSYM 615 vor, dann erfolgt der Befehl DEFINITION, um die Definition für das vorangegangene TSYM 615 zusammen mit einem geeigneten Erläuterungstext auszugeben.
  • Bei der Fortsetzung der DEFINITION-Funktion kann der Befehl an den EXPERT 603, welcher die Funktion aufruft, entweder ein TSYM 615 als Argument oder kein Argument haben. Im ersten Falle wird die TDESC 705 in der TDEF 617 ausgegeben; im zweiten Falle werden die TDESCn 705 für alle TSYMe 615 des TERMS- STACK 613 ausgegeben.
  • Die ASSUME-Funktion (ANNAHME-Funktion) wird mit dem ASSUME- Befehl aufgerufen, welcher ein TSYM 615 und einen Wert spezifiziert. Bei dem TSYM 615 muß es sich um ein solches handeln, dessen TFUNC 701 einen EXVAL 225 anfordert. Die ASSUME-Funktion leert zunächst den ARG-STACK 635, so daß das TSYM 615 neu entwickelt wird, bevor ein WARUM-Befehl ausgeführt wird; sodann setzt sie den TEXVAL 703 in der TDEF 617 auf den als Argument empfangenen Wert und setzt das TSYM 615 auf die SYM- BOUND-LIST 613, um anzuzeigen, daß es einen TEXVAL 703 hat.
  • Die RESET-Funktion (Rücksetz-Funktion) wird mit dem RESET- Befehl aufgerufen, welcher ein TSYM 615 spezifizieren kann oder nicht. Im ersten Falle wird nur der TEXVAL 703 in der TDEF 617 rückgesetzt, der dem TSYM 615 entspricht; wogegen im zweiten Falle alle TEXVAL 703 rückgesetzt werden. Die RESET- Funktion leert zunächst den ARG-STACK 635 aus den zuvor beschriebenen Gründen. Ist ein TSYM 615 spezifiziert, löst die RESET-Funktion den TEXVAL 703 vom TSYM 615, entfernt ihn also von der TDEF 617, und entfernt das TSYM 615 von der SYM- BOUND-LIST 637. Ist kein TSYM 615 spezifiziert, so führt der RESET-Befehl die obige Operation für jedes TSYM 615 in der SYM-BOUND-LIST 637 aus.
  • Die SPEICHERN-Funktion (SAVE function) erzeugt eine Datei, die für jedes TSYM 615 einen DEFINE-Befehl enthält, auf den eine TDESC 705 für das TSYM 615 folgt. Die DEFINE-Befehle treten in der Reihenfolge auf, in welcher die TSYM 615 im TERMS-STACK 613 auftreten. Die SPEICHERN-Funktion funktioniert derart, daß folgendes für jedes TSYM 615 im TERMS-STACK 613 an die Datei ausgegeben wird: Die Kette DEFINE, eine Kette, welche das TSYM 615 repräsentiert, und eine Kette, welche die TDESC 705 für das TSYM 615 repräsentiert. Die sich ergebende Datei enthält die TDESC 705 in der Reihenfolge, in welcher die DESC 205, auf welchen sie basieren, in den DP 207 eingegeben wurden.
  • Die WIEDERHERSTELLEN-Funktion (RESTORE function) stellt die TYMn 615, welche zuvor gesichert worden sind, wieder her. Sie erledigt dies durch Ausführung einer LISP-Ladeoperation in der Datei. Während der Lade-Operation werden die LISP- Symbole in der Datei entwickelt. In diesem Falle ist das Ergebnis der Entwicklung die Erzeugung der TSYMe 615 und ihrer TDEFn 617, die in den DEFINE-Befehlen der wiederhergestellten Datei spezifiziert sind.
  • 10. Detaillierte Beschreibung von DEFINE 607: Fig. 8
  • Fig. 8 zeigt, wie die DEFINE-Funktionen (DEFINIERE-Funktion) und durch diese aufgerufene Funktionen rekursiv die Hierarchie von TDEFn 617 für einen gegebenen Satz von TYMn 615 erzeugen. Wie zuvor erwähnt, garantiert die Art, in welcher die DEFINE-Funktion die Hierarchie von TDEFn 617 erzeugt, daß jeder TERM 206 vollständig definiert ist und daß ein gegebener TERM 206 nur eine einzige Definition hat.
  • Fig. 8 zeigt die DEFINE-Funktion und die wesentlichen Funktionen, welche durch DEFINE aufgerufen werden, sowie die Art und Weise, in welcher die Daten, aus denen die TSYMe 615 und TDEFn 617 erzeugt werden, zwischen den Funktionen ausgetauscht werden.
  • DEFINE 607 erzeugt DETERMe 211 aus TERMN 206. Gibt die DEFINE einen DTERM 211 zurück, so sind zu dem DTERM 211 gehörende TSYM 615 und TDEF 217 erzeugt worden. Die DEFINE-Funktion 607 wird durch den EXPERT 603 und den RESTORE-Befehl 633 aufgerufen; zusätzlich wird sie rekursiv durch sich selbst und durch die PROCESS-Funktion 811 aufgerufen. Der EXPERT 603 stellt die CFORM 605 bereit, welche das DEFINE-Symbol enthält, und einen TERM 206, der definiert werden soll. Der RESTORE-Befehl 633 stellt eine CFORM 605 bereit, die das DEFINE-Symbol und einen TERM 206 enthält, welcher eine Kopie des zuvor gesicherten DTERM 211 ist, und eine Kopie der TDESC 705 für diesen DTERM 211. Wird die DEFINE-Funktion 607 rekursiv aufgerufen, so ist ihr Eingang ein TERM 206, welcher in der DESC 205 eines anderen TERM 206 benutzt wird, welcher gerade definiert wird.
  • Allgemein gesprochen, handelt es sich bei dem TERM 206 um ein einziges Symbol; enthält die DESC 205 jedoch eine Fallfeststellung, so kann es sich bei dem TERM 206 um eine Liste handeln. In diesem Falle ruft DEFINE die CONVERT-Funktion 809 (UMWANDLUNGS-Funktion) auf, um die Liste in eine LISP-Form umzuwandeln und dann anschließend rekursiv sich selbst aufzurufen, um jeden der undefinierten TERMe 206 in der LISP-Form zu definieren. Sodann bestimmt die DEFINE 607, ob der TERM 206 ein LISP-Symbol ist. Falls nicht, so gibt die DEFINE 607 den TERM 206 einfach unverändert zurück. Falls ja, so bestimmt die DEFINE 607, ob der TERM 206 durch die RESTORE- Funktion 633 bereitgestellt wurde; falls ja, so stellt die DEFINE-Funktion 607 den TERM 206 sowie eine Kopie der TDESC 705 für GETDEF 805 bereit und gibt den durch die GETDEF 805 zurückgegebenen Wert zurück, nämlich eine Liste, deren Element der TERM 206 ist. Wurde der TERM 206 nicht durch die RESTORE-Funktion 603 bereitgestellt, so bestimmt die DEFINE- Funktion 607, ob bereits ein TSYM 615 für den TERM 206 existiert oder ob es sich bei dem TERM 206 um einen Buchstaben handelt (d.h. es gab keine Kopie von TDESC 705). In beiden Fällen gibt die DEFINE eine Liste zurück, deren Element der TERM 206 ist. Falls keiner der anderen Fälle vorliegt, so wird die GETDEF 805 durch die DEFINE 607 aufgerufen, ohne daß eine Kopie der TDESC 705 vorliegt.
  • Die GETDEF 805 erhält einen undefinierten Term (UTERM) 803 durch die DEFINE 607 und kann ebenfalls eine Kopie der TDESC 705 für diesen Term erhalten. Im ersten Fall erhält die GETDEF eine DESC 205 vom Benutzer; im zweiten Fall benutzt sie einfach die TDESC 705. Sodann ruft sie die CONVERT-Funktion 809 auf, um sie in eine CDESC 807 umzuwandeln, welche eine LISP-Form ist. Sodann werden UTERM 803 und CDESC 807 für die PROCESS-Funktion 811 bereitgestellt, welche eine TFUNC 701 für UTERM 811 zurückgibt. Schließlich placiert die GETDEF 805 das TSYM 615 auf den TERMS-STACK 613 und gibt eine Liste an die DEFINE-Funktion 607 zurück, welche aus DTERM 211 besteht, der dem UTERM 803 entspricht.
  • Die CONVERT-Funktion 809 wird durch die DEFINE-Funktion 607 oder die GETDEF 805 aufgerufen. Sie erhält eine DESC 205 von der aufrufenden Funktion und wandelt sie in eine LISP-Form, also eine CDESC 807 um, welche sie der aufrufenden Funktion zurückgibt. Die PROCESS-Funktion 811 erhält den UTERM 803 und die CDESC 807, gibt den UTERM 803 an die DEFINE-Funktion 813, empfängt eine TFUNC 701 von der DEFINE-Funktion 811, gibt die TFUNC 701 an die GETDEF 805 zurück und erzeugt eine UTERML 815, also eine Liste von UTERMn 803 aus CDESC 807, welche bisher noch nicht definiert worden sind. Die PROCESS-Funktion ruft dann die DEFINE-Funktion 607 für jeden UTERM 803 der UTERML 815 auf. Die DEFINE-Funktion 803 erzeugt und entwickelt schließlich eine DEFUN für die TFUNC 701, wodurch eine TFUNC 701 erzeugt wird, welche sie der PROCESS-Funktion 811 zurückgibt, welche ihrerseits sie an die GETDEF 805 weitergibt.
  • Wie sich aus der vorstehenden Beschreibung ergibt, werden die rekursiven Aufrufe der DEFINE 607 fortgesetzt, bis alle TERME 206, die erforderlich sind, um den TERM 206 zu definieren, bezüglich dessen die DEFINE-Funktion aufgerufen wurde, definiert sind. Erst dann gibt die DEFINE 607 den DTERM 211, der dem TERM 206 entspricht, zurück. Da der Benutzer der Schale 201 alle TERMe 206 definieren muß, die erforderlich sind, um einen gegebenen TERM 206 zu definieren, wobei ein TERM 206 nur eine einzige Definition enthalten kann, garantiert die DEFINE-Funktion 607, daß ein Satz von Definitionen für einen TERM 206 vollständig und konsistent ist.
  • 11. prototyp-Ausführungsform 2: Fig. 9
  • Das zweite Prototyp-Ausführungsbeispiel enthält viele Verbesserungen gegenüber dem ersten Prototyp-Ausführungsbeispiel, u.a. eine verbesserte Schnittstelle mit dem Benutzer und eine verbesserte Korrektur von Benutzer-Fehlern. Zu den wichtigsten Verbesserungen beim zweiten Prototyp-Ausführungsbeispiel gehören die abgeänderten Formen der TDEF 617 und der WAS- Funktion, die in Fig.9 dargestellt sind.
  • Die TDEF 901 enthält, wie die TDEF 617, TDESC 705 und TEXVAL 703, enthält aber nicht eine TFUNC 701 und enthält statt dessen zwei neue Felder TFORM 903 und TTYPE 905. Diese Änderung wurde deshalb vorgenommen, um eine Schwierigkeit beim ersten Prototyp-Ausführungsbeispiel zu überwinden, nämlich den Nachteil, daß der zu definierende TERM 206 einem anderen LISP- Symbol entsprechen könnte, das bereits im Symbol-Raum 505 vorliegt. In diesem Falle würde die durch die DEFINE-Funktion 607 für den TERM 206 erzeugte Definition die bereits existierende Definition des Symbols ersetzen. Das Problem wird beim zweiten Prototyp-Ausführungsbeispiel dadurch überwunden, daß die TFUNC 701 durch eine TFORM 903 ersetzt wird, einer LISP- Form, welche nicht selbst als Funktion ausführbar ist, sondem durch eine EVALUATOR-Funktion 911 in der TIE 219 ausgeführt werden kann. Die TTYPE 905 enthält Informationen über Art des Wertes, der zurückgegeben wird, wenn die TFORM 905 durch den EVALUATOR 911 ausgeführt wird.
  • Die übrigen Teile der Fig. 9 zeigen den Zusammenhang zwischen der WAS-Funktion 907 und dem EVALUATOR 911 im zweiten Prototyp-Ausführungsbeispiel. Die WAS-Funktion 907 erhält die WAS CFORM 605 vom EXPERT 603, wie zuvor, allerdings anstelle der einfachen Ausführung einer LISP-EVAL-Operation bezüglich des TSYM 615 als Argument für die WAS-Funktion, wird nunmehr eine TFORM 903 von der TDEF 901 bezüglich des TSYMs 615 dem EVALUATOR 911 Übergeben, welcher seinerseits LISP-Formen zur Ausführung der in TFORM 903 angegebenen Operationen erzeugt und an den LISP-Interpretierer 503 übergibt. Der LISP- Interpretierer 503 gibt die Ergebnisse der Entwicklung der LISP-Formen an den EVALUATOR 911 zurück, der diese Ergebnisse in TRES 217 umarbeitet, worauf sie der WAS-Funktion 907 übergeben werden, worauf sie dann dem Benutzer wieder zurückgegeben werden.
  • 12. Weiterentwicklung von auf Definitionen aufgebauten Expertensystemen
  • Beim weiteren Arbeiten mit dem vorstehend beschriebenen definitions-basierten Expertensystem und bei der Weiterentwicklung desselben hat sich herausgestellt, daß auf Definitionen aufgebaute Expertensysteme in größerem Umfange als früher gedacht angewendet werden können. Die Weiterentwicklung hat auch zur Schaffung einer Vielzahl neuer Operationen, die in der Definition eines Terms angegeben werden können, und zur Entwicklung neuer Wert-Typen geführt. In der nachstehenden Beschreibung wird zuerst erläutert, wie ein auf Definitionen aufgebautes Expertensystem als Anwendungsentwicklungssystem verwendet werden kann, und auf welche Weise bestimmte der neuen Operationen die Brauchbarkeit eines solchen auf Definitionen aufgebauten Expertensystems in großem Umfang erweitern, und offenbart dann andere neue Operationen und die neuen Wert-Typen.
  • 13. Anwendungsentwicklungssysteme, die auf Definitionen aufgebaute Expertensysteme verwenden
  • Historisch gesehen, sind Anwendungen für Rechner in Sprachen wie COBOL oder C durch Rechnerprogrammierer geschrieben worden, die spezielle Kenntnisse dieser Sprachen und des Rechnersystems hatten, für welche die Anwendung entwickelt wurde. Aus diesem Umstand ergaben sich unerwünschte Folgen. Erstens ist das Schreiben von Anwendungsprogrammen in normalen Rechner sprachen ein arbeitsintensiver Vorgang; selbst eine einfache Anwendung kann Tausende von Anweisungen erfordern. Zweitens hat der Umstand, daß für das Programmieren in den normalen Programmiersprachen technische Erfahrung erforderlich ist, dazu geführt, daß Programmierer selten und teuer geworden sind. Drittens, und vielleicht am wichtigsten, entstanden Kommunikationsschwierigkeiten zwischen den Programmierern, die zwar die Programmiersprachen und die Rechnersysteme verstanden, aber nicht die Aufgabe, die das Anwendungsprogramm ausführen sollte, und den beabsichtigten Benutzern des Anwendungsprogramms, welche die Aufgabe verstehen, aber nichts von den Programmiersprachen und den Rechnersystemen. Folglich geschieht es häufig, daß ein Anwendungsprogramm mehrere Male umgeschrieben werden muß, bevor es das bringt, was der Benutzer von ihm erwartet.
  • Die vorstehend beschriebenen Schwierigkeiten haben in jüngerer Zeit zur Schaffung von Anwendungsentwicklungssystemen geführt, die aufgabenorientiert sind, d.h. sie beschreiben eine Anwendung in einer Form, welche denen vertraut ist, die in dem beabsichtigten Anwendungsbereich arbeiten. Die Vorteile eines solchen Anwendungsentwicklungssystems sind deutlich: In vielen Fällen können die Anwendungen von ihren Benutzern entwickelt werden, und Programmierer sind nicht mehr erforderlich. Selbst dort, wo Programmierer noch nötig sind, verringert die Benutzung eines aufgabenorientierten Anwendungsentwicklungssystems die Möglichkeit von Entwurfsfehlern, vereinfacht die Kommunikation zwischen dem Programmierer und den Benutzern, und reduziert in großem Umfang die Menge an Codes, die geschrieben werden müssen.
  • Das in der vorliegenden Patentanmeldung beschriebene auf Definitionen aufgebaute Expertensystem ist ein Beispiel für ein solches aufgabenorientiertes Anwendungsentwicklungssystem. Im Gegensatz zu herkömmlichen regelbasierten Expertensystemen, die häufig spezialisierte Wissensingenieure und Rechnerprogramme erforderlich machten, kann das auf Definitionen aufgebaute Expertensystem gemäß der vorliegenden Patentanmeldung von jedem entwickelt werden, der ein Volumen an Wissen als eine Hierarchie von Definitionen ausdrücken kann. Wie in der Patentanmeldung dargelegt, kann beispielsweise ein Rechtsanwalt, der die Legaldefinition von Betrug versteht, ein auf Definitionen aufgebautes Expertensystem entwickeln, das es einem Laien ermöglicht, im Dialog mit dem System festzustellen, ob ein Betrug vorliegt. In ähnlicher Weise kann ein Bankier, der versteht, wie seine Bank feststellt, ob einem Antragsteller ein Darlehen gewährt werden kann, ein auf Definitionen aufgebautes Expertensystem entwickeln, um im Dialog zu ermitteln, ob ein Darlehen gewährt werden soll.
  • Die Brauchbarkeit des auf Definitionen aufgebauten Expertensystems als aufgabenorientiertes Anwendungsentwicklungssystem ist durch bestimmte neue Operatoren in Definitionen beträchtlich erweitert worden, die das Rechnersystem veranlassen, zusätzlich zur Gewinnung von Werten Operationen auszuführen, wenn der Term, zu dem die Definition gehört, ermittelt wird. Durch die Ergänzung mit diesen neuen Operatoren ist das auf Definitionen aufgebaute Expertensystem zu einem allgemeinen Anwendungsentwicklungssystem zum Entwickeln von in hohem Maße dialogfähigen Anwendungen geworden. Ein Beispiel hierfür ist eine Anwendung, die als "automatischer Grundstücksmakler" bezeichnet werden kann. Im Dialogverkehr fordert die Anwendung den Benutzer auf, Informationen einzugeben wie Größenvorsteljung, bevorzugte architektonische Gestaltung, finanzielle Situation, und zeigt dann dem Benutzer Bilder von Häusern, die der Markt gegenwärtig anbietet und den Wünschen des Benutzers entsprächen.
  • 14. Die "Nebenwirkungs"-Operatoren
  • Wenn, wie vorstehend beschrieben wurde, die Term-Schlußfolgerungseinrichtung (TIE) 219 (sh. Fig. 2) auf einen Schlußfolgerungs-WAS-Bef ehl hin eine fachkundige Antwort zu einem bestimmten definierten Term (DTERM) 211 erzeugt, erzeugt sie die fachkundige Antwort durch Ermitteln der Definition (DEF) 213 des definierten Terms 211. Wenn diese Definition weitere definierte Terme 211 betrifft, werden die Definitionen 213 für diese Terme entwickelt, bis jeder definierte Term 211 in der Hierarchie der Definitionen für den bestimmten definierten Term 211 ermittelt worden ist. Aus Vorstehendem ergibt sich, daß jede DEF 213 einen Wert zurückgeben muß, wenn die Definition ermittelt ist. Jedoch kann die Entwicklung einer Definition mehr als nur die Erzeugung eines Wertes bringen. Zum Beispiel hat der im vorstehenden Teil der Patentanmeldung beschriebene ASK-Operator die Form
  • ASK NUMBER "prompt string" (Frage Zahl "Aufforderungs-Zeichenkette").
  • Beim Entwickeln eines Terms 211, dessen Definition 213 diesen Operator enthält, wird die durch "Aufforderungs-Zeichenkette" angegebene Aufforderung zum Anzeigegerät ausgegeben und die Antwort des Benutzers auf die Aufforderung wird als der Wert des Operators zurückgegeben. In diesem Falle ergab die Entwicklung des Terms 211 nicht nur die Rückgabe des durch die Antwort des Benutzers spezifizierten Wertes, sondern auch die Ausführung anzeigebezogener Operationen, einschließlich der Ausgabe der Aufforderung an das Anzeigegerät und des Empfangs des eingegebenen Wertes. Diese weiteren Operationen werden im allgemeinen als "Nebenwirkungen" bezeichnet, weil sie Nebenwirkungen der Entwicklung der Definition 213 sind.
  • Im Verlaufe der Weiterentwicklung des auf Definitionen aufgebauten Expertensystems hat es sich als nützlich herausgestellt, Operatoren vorzusehen, deren Hauptzweck die von ihnen erzeugten Nebenwirkungen ist. Bei einer derzeit bevorzugten Ausführungsform gibt jeder dieser Operatoren den Term an, der zum Definieren des Booleschen Wertes TRUE (Wahr) benutzt wird, wenn die Operation erfolgreich ist, und gibt andernfalls einen Fehler an. Ferner kann die Information, die für die Operation erforderlich ist, selbst mittels eines Terms 211 angegeben werden. Bei einer derzeit bevorzugten Ausführungsform enthalten die Operatoren die nachstehenden Terme:
  • COPY (Kopiere)
  • Kopiert eine im Operator angegebene Datei in eine andere in ihm angegebene Datei.
  • DELETE (Entferne)
  • Entfernt eine im Operator angegebene Datei.
  • DISPLAY (Zeige an)
  • Zeigt Informationen am Anzeigegerät an. Die Quelle der Information kann eine im Operator definierte Zeichenkette, eine Zeichendatei oder ein Bild sein.
  • PRINT (Drucke)
  • Druckt einen im Operator angegebenen Zeichen- Ausdruck in eine im Operator angegebene Datei.
  • RENAME (Umbenenne)
  • Gibt einer im Operator angegebenen Datei einen neuen Namen.
  • Eine detaillierte Beschreibung des DISPLAY-Operators dient zur Erläuterung der in den vorstehend genannten Operatoren enthaltenen Grundsätze.
  • 15. Detaillierte Beschreibung des DISPLAY-Operators
  • Im Nachstehenden folgt der Beschreibung der Syntax und der Funktion des DISPLAY-Operators eine Beschreibung der Implementierung des Operators. Für die Darstellung der Syntax des DISPLAY-Operators gelten nachstehende Vereinbarungen:
  • 1. In Großbuchstaben geschriebene Namen geben Terme 211 oder Ausdrücke an. Ein Ausdruck kann alles sein, was einen Wert hat, einschließlich eines Terms 211.
  • 2. Eckige Klammern schließen wahlfreie Elemente ein.
  • Bei einer derzeit bevorzugten Ausführungsform gibt es zwei Klassen DISPLAY-Operatoren. Die Entwicklung eines Terms 211, der mit der ersten Klasse der Operatoren definiert ist, ergibt die Anzeige von Zeichen; mit der anderen wird ein Bild angezeigt. Bei der ersten Klasse gibt es zwei Operatoren: DISPLAY (Zeige an) und DISPLAY FILE (Zeige Datei an). Bei dem DISPLAY-Operator sind die angezeigten Zeichen interne Zeichen des auf Definitionen aufgebauten Expertensystems; bei dem DISPLAY FILE-Operator sind die Zeichen in einer MS-DOS-Datei enthalten.
  • Die Syntax des DISPLAY-Operators ist folgende:
  • display TEXT-EXPRESSION [TEXT-EXPRESSION ...]
  • (Zeige Zeichen-Ausdruck an [Zeichen-Ausdruck ...])
  • DISPLAY gibt somit eine Liste mit einem oder mehreren anzuzeigenden Zeichen-Ausdrücken an. Der Zeichen-Ausdruck kann im auf Definitionen aufgebauten Expertensystem ein beliebiges Gebilde sein, das eine Zeichenkette als Wert liefert. Der Ausdruck kann somit eine Konstante sein, ein Term 211, der sich zu einer Zeichenkette entwickelt, oder eine Kombination von Konstanten, Termen 211 und Operatoren, die Zeichenketten- Ergebnisse liefern. Wenn, wie bei anderen Definitionen, ein Term 211 im DISPLAY-Operator noch nicht definiert worden ist, wird natürlich der Definitionen-Prozessor 207 eine Definition für den Term anfordern. Beispielsweise wird ein Term 211 SAY_HI (Sage hallo), der mit dem nachstehenden DISPLAY-Operator
  • display "Hi"
  • definiert ist, beim Entwickeln veranlassen, daß "Hi" am Anzeigegerät erscheint.
  • Bei DISPLAY FILE ist der Text in einer MS-DOS-Datei außerhalb des auf Definitionen aufgebauten Expertensystems enthalten. DISPLAY FILE hat nachstehende Syntax:
  • display file TEXT-EXPRESSION.
  • Für diesen Operator muß der Wert von TEXT-EXPRESSION der Name einer MS-DOS-Textdatei sein. Bei der Entwicklung des mit diesem Operator definierten Terms 211 wird der Inhalt der durch TEXT-EXPRESSION benannten Datei angezeigt.
  • Der erste der beiden Zeige-an-Operatoren für Bilder ist DISPLAY PICTURE, der ein Bild anzeigt, das in einer MS-DOS- Datei in einem aus einer Vielzahl normaler Formate gespeichert ist. Die Syntax ist folgende:
  • display picture TEXT-EXPRESSION [SIZE] (size: Größe)
  • Der Wert von TEXT-EXPRESSION muß der Name einer das Bild enthaltenden MS-DOS-Datei sein. SIZE kann einen von vier Werten haben, welche die Anfangsgröße des Bildes bestimmen: Sehr klein, klein, normal und groß. Beim Entwickeln des durch den Operator definierten Terms 211 wird das Bild in der Datei angezeigt.
  • Der zweite Zeige-an-Operator für Bilder zeigt ein Bild an, das ein als PC-WIIS bezeichnetes Bildmanagementsystem der Wang Laboratories, Inc. bereitstellt. PC-WIIS ist in Personalrechnern des IBM-PC-Typs implementiert, die das MS-DOS- WINDOWS-Anzeigemanagementsystem verarbeiten. Der Operator hat die Syntax:
  • display "*WIIS*" TEXT-EXPRESSION.
  • In diesem Falle muß der Wert von TEXT-EXPRESSION der Pfadname einer PC-WIIS-Bilddatei sein. Beim Entwickeln des mit diesem Operator definierten Terms 211 zeigt PC-WIIS das Bild in der Datei am Anzeigegerät an.
  • Ähnlich den weiter oben in der Anmeldung beschriebenen Operatoren werden die Nebenwirkungs-Operatoren durch LISP-Funktionen implementiert, die in einer LISP-Umgebung 501 (sh. Fig. 5) gespeichert sind und durch den LISP-Interpretierer 603 ausgeführt werden. Die LISP-Umgebung 501 enthält eingebaute LISP-Funktionen, die MS-DOS-Dateien öffnen, schließen, lesen, entfernen, und angeben, ob eine bestimmte MS-DOS-Datei existiert. Diese Funktionen werden zum Implementieren der LISP- Funktionen für die Operatoren DELETE (Entferne), RENAME (Benenne um), DISPLAY (Zeige an) und DISPLAY FILE (Zeige Datei an) benutzt. Die übrigen Funktionen werden mittels einer eingebauten LISP-sys:dos-Funktion implementiert, die ein durch MS-DOS auszuführendes Programm und Parameter für das Programm angibt. Wenn der LISP-Interpretierer die sys:dos-Funktion ausführt, ist das Ergebnis eine Programmunterbrechung an MS- DOS, das die Ausführung des LISP-Interpretierers stoppt und das Programm verarbeitet, das in der sys:dos-Funktion angegeben ist. Nach beendeter Ausführung des in der sys: dos-Funktion angegebenen Programms wird die Ausführung des LISP-Interpretierers wiederaufgenommen.
  • Die DISPLAY-Operatoren für Bilder können als Beispiele für die Benutzung der sys:dos-Funktion dienen. Bei DISPLAY PICTURE bestimmt das mittels sys:dos ausgeführte Programm das Format des anzuzeigenden Bildes und zeigt dann das Bild an; nach der Anzeige wird die Ausführung des LISP-Interpretierers wiederaufgenommen. Bei der DISPLAY-Version, die für das Anzeigen von PC-WIIS-Bildern benutzt wird, setzt der Operator voraus, daß der Benutzer zuerst das MS-DOS-WINDOWS-Anzeigemanagementprogramm ausführt, dann, nach Bedarf, PC-WIIS aus MS-DOS-WINDOWS, um das PC-WIIS-Bildsystem zu initialisieren, und danach, aus MS-DOS-WINDOWS heraus, das erfindungsgemäße auf Definitionen aufgebaute Expertensystem. Unter diesen Umständen führt die LISP-sys:dos-Funktion zur Ausführung des Programms, das in der sys:dos-Funktion unter MS-DOS-WINDOWS angegeben ist. Bei einer bevorzugten Ausführungsform ruft das in der sys:dos-Funktion spezifizierte Programm einfach eine PC-WIIS-Routine auf, welche die in der Funktion angegebene Bilddatei öffnet, ruft eine weitere PC-WIIS-Routine auf, die das Bild am Anzeigegerät anzeigt, und antwortet dann auf eine Tasteneingabe durch den Benutzer durch Aufrufen einer dritten PC-WIIS-Routine, welche die Bilddatei schließt und dann rückspringt. Nach dem Rücksprung wird erneut der LIPS-Interpretierer wiederaufgenommen. Bei der vorstehend beschriebenen automatischen Grundstücksmakler-Anwendung werden die Bilder der Häuser durch PC-WIIS verwaltet, und die Anzeige der Bilder wird durch den DISPLAY-"*WIIS*"-Operator veranlaßt.
  • 16. Der CALL-Operator
  • Der CALL-Operator (Aufrufe-Operator) gibt eine Non-LISP- Funktion an, die aufgerufen wird, wenn der mit dem Operator definierte Term 211 entwickelt wird. Der durch die Funktion zurückgegebene Wert wird der Wert des Terms. Aus dem Vorstehenden wird deutlich, daß die Non-LISP-Funktion aufgerufen wird entweder hauptsächlich wegen des durch sie zurückgegebenen Wertes oder wegen der Nebenwirkungen, die durch ihre Ausführung erzeugt werden. Die Syntax des Operators ist folgende:
  • call TEXT-EXPRESSION [, using SPEC-LIST]
  • [, returning NUMBER-SPEC]
  • (using SPEC-LIST: unter Benutzung Spezifikations-Liste; returning NUMBER-SPEC: unter Rückgabe Zahl-Spezifikation)
  • Beim Entwickeln muß TEXT-EXPRESSION den Namen der aufgerufenen Non-LISP-Funktion liefern. Die Funktion kann eine beliebige Funktion sein, die den Schnittstellenstandards der Programmiersprache C entspricht. SPEC-LIST ist eine Liste mit Ausdrücken, welche die Werte der aktuellen Argumente für die aufgerufene Non-LISP-Funktion spezifizieren. Bei einer bevorzugten. Ausführungsform müssen die Ausdrücke skalare oder Ketten-Werte haben. Ist die Non-LISP-Funktion eine mathematische Funktion, kann der Typ des durch sie zurückgegebenen Wertes unter Benutzung von NUMBER-SPEC spezifiziert werden. Die Auswahl umfaßt Dgpplung, Gleitkomma, ganze Zahl, lang, ganze Zahl ohne Vorzeichen und lang ohne Vorzeichen. Der voreingestellte Wert ist "ganze Zahl".
  • Bei einer bevorzugten Ausführungsform ist der CALL-Operator unter Benutzung einer externen Programmschnittstelle implementiert, die es dem LISP-Interpretierer ermöglicht, Non- LISP-Programme aufzurufen, wenn für den Aufruf kein Eingriff durch das Betriebssystem erforderlich ist. Die externe Programmschnittstelle umfaßt eine EPI.EXE-Datei, welche einen ausführbaren Code für alle in CALL-Operatoren angegebenen Funktionen und einen ausführbaren Code, der die Aufruf e erstellt und ausführt, enthält. Die Hinzufügung neuer Funktionen in die EPI.EXE-Datei geschieht auf einfache Weise durch Verbinden ihres ausführbaren Codes mit der EPI.EXE mittels eines Linkers. Das Erstellen und das Ausführen eines Aufrufs bei einer bevorzugten Ausführungsform sind dadurch kompliziert, daß der LISP-Interpretierer in einer geschützten Betriebsart in einem erweiterten Speicher läuft, wogegen die ausführbaren Codes in EPI.EXE im reellen Modus im Basisspeicher ausgeführt werden. Wenn ein mit dem CALL-Operator definierter Term 211 entwickelt wird, muß folglich der Prozessor vom geschützten auf reellen Modus umschalten, und der Code in EPI.EXE, der die im CALL-Operator spezifizierte Funktion aufruft, muß die Werte der aktuellen Argumente aus dem erweiterten Speicher in den Basisspeicher kopieren, wobei er alle notwendigen Umwandlungen durchführt. Die Rückgabe läuft umgekehrt ab: Der Code in EPI.EXE muß die Werte der aktuellen Argumente und den zurückgegebenen Wert aus dem Basisspeicher in den erweiterten Speicher kopieren, dabei alle Umwandlungen durchführen, und beim Rücksprung aus EPI.EXE muß der Prozessor vom reellen auf den geschützten Modus umschalten.
  • 17. Tabellen-Terme und -Werte
  • Das in der Stammanmeldung beschriebene auf Definitionen aufgebaute Expertensystem ermöglichte es, daß Terme 211 Boolesche, arithmetische und Zeichenketten-Werte aufwiesen, und definierte Operationen, die diese Werte-Typen enthielten. Das hier beschriebene verbesserte auf Definitionen aufgebaute Expertensystem ermöglicht ferner die Definition von Termen 211 als Tabellen und Felder in Tabellen und Operationen mit Tabellenwerten. Eine Tabelle ist in Zeilen und Spalten angeordnet. Jede Spalte ist durch einen Term 211 angegeben, und die in einer der Spalten enthaltenen Werte dienen als Schlüssel zum Anwählen einer bestimmten Zeile. Zum Beispiel kann ein mit KUNDEN (CLIENTS) bezeichneter Term 211 Spalten, die durch die Terme 211 NAME, ADRESSE und TELEFON angegeben sind, und für jeden Kunden eine Zeile aufweisen. Die Zeile für einen einzelnen Kunden kann so aussehen:
  • Dient der NAME als Schlüssel, kann die Zeile durch "Smith, John" spezifiziert werden.
  • Bei dem verbesserten auf Definitionen aufgebauten Expertensystem kann ein Term eine von zwei Arten Tabellen darstellen. Die erste Art ist eine Grundtabelle. Grundtabellen enthalten Datenwerte. Die Datenwerte können in der Definition 213 der Grundtabelle angegeben sein, vom Benutzer mittels des ASK- Operators oder aus einer externen Datei abgerufen werden. Die zweite Art ist eine Abfragetabelle. Eine Abfragetabelle wird durch eine Abfrageoperation aus einer Grundtabelle oder einer anderen Abfragetabelle erzeugt. Beispielsweise kann eine Tabelle NEW_YORKER_KUNDEN aus KUNDEN definiert werden, indem eine Abfrageoperation ausgeführt wird, die alle Zeilen aus KUNDEN entnimmt, in denen ADRESSE New York, NY angibt.
  • Tabellenoperatoren können mit beiden Tabellenarten benutzt werden. Diese Operatoren umfassen:
  • Nachschlageoperatoren zur Gewinnung des Wertes eines von einem Term 211 angegebenen Feldes aus einer Zeile;
  • Summenoperatoren zur Gewinnung von Werten, die aus allen Feldern einer von einem bestimmten Term 211 angegebenen Tabelle abgeleitet werden;
  • Quantifizieroperatoren zur Gewinnung Boolescher Werte, die aus allen Feldern einer von einem bestimmten Term 211 angegebenen Tabelle abgeleitet werden.
  • Im Nachstehenden wird zuerst die Definition von Grundtabellen, danach die von Abfragetabellen und schließlich werden die Tabellenoperatoren behandelt.
  • 18. Grundtabellen-Definition
  • Bei einer bevorzugten Ausführungsform kann die Syntax, die benutzt wird, um einen Term 211 zu definieren, dessen Wert eine Grundtabelle ist, eine Grundtabelle definieren, die einen Zahlenschlüssel-Block oder einen Zeichenketten-Schlüssel- Block verwendet:
  • table with number key NUMBER-TERM
  • table with text key TEXT-TERM
  • (Tabelle mit Zahlenschlüssel Zahlen-Term; Tabelle mit Zeichenschlüssel Zeichen-Term).
  • Im Falle der Grundtabelle mit dem Zahlenschlüssel-Block ist NUMBER-TERM der Term 211, der die Spalte der Tabelle angibt, deren Zahlenwerte als Schlüssel benutzt werden; im Falle der Grundtabelle mit dem Zeichenschlüssel-Block ist TEXT-TERM der Term 211, der die Spalte der Tabelle angibt, deren Zeichenwerte als Schlüssel verwendet werden. Der Tabellenoperator, der KUNDEN definiert, sieht folgendermaßen aus:
  • table with text key NAME (Tabelle mit Zeichenschlüssel Name).
  • Terme 211, die Spalten in der Tabelle bezeichnen, werden durch den FIELD-OF-Operator (Operator FELD VON) definiert.
  • Die Syntax hängt davon ab, ob die Werte in der Definition 213 angegeben sind oder extern gewonnen werden. Im erstgenannten Fall lautet die Syntax:
  • field of TABLE-TERM, values VALUE-LIST (Feld Tabellen-Term, Werte Werte-Liste).
  • Der TABLE-TERM ist ein einen Tabellenwert darstellender Term 211: die Werte in der VALUE-LIST sind Konstanten des Typs, der durch die Werte angefordert wird, die in der durch den gerade definierten Term 211 bezeichneten Spalte enthalten sind. Wurde das gerade definierte Feld als Schlüssel in der Tabellendefinition angegeben, bestimmt die Zahl der Werte in der Liste die Zahl der Zeilen in der Tabelle. Zum Beispiel bei KUNDEN kann das Feld NAME folgendermaßen definiert sein: field of CLIENTS, values "Smith, Adam" "Smith, John" "Smith, David",
  • und definiert eine KUNDEN-Tabelle mit drei Zeilen.
  • Die Syntax, die vorschreibt, daß die Werte für eine Spalte einer Tabelle extern zu beschaffen sind, ist folgende:
  • field of TABLE-TERM, ask [QUOTED-TEXT [, for every TABLE-OR-QUERY-EXPRESSION]]]
  • (Feld Tabellen-Term, frage angeführte Zeichen für jeden Tabellen- oder Abfrage-Ausdruck).
  • Auch hier ist TABLE-TERM der Term 211 für die Grundtabelle, in welcher der gerade definierte Term 211 eine Spalte angibt. "ask" gibt an, daß die Werte für die angegebene Spalte von einem Benutzer an einem Terminal im Dialogverkehr zu beschaffen sind. QUOTED-TEXT gibt eine Aufforderungs-Zeichenkette an, die auszugeben ist, wenn der Benutzer gefragt wird. Ist weiteres nicht angegeben, wird das auf Definitionen aufgebaute Expertensystem ein beliebiges Aufforderungszeichen und den Wert des Schlüsselfeldes für die Spalte ausgeben und auf die Eingabe durch den Benutzer warten. Beispielsweise kann ADRESSE folgendermaßen definiert sein:
  • field of CLIENTS, ask "What is the address of" (Feld Kunden, frage "Welches ist seine Adresse").
  • Für jede Zeile in KUNDEN wird das Expertensystem das Aufforderungszeichen, gefolgt vom Wert des NAMENS für diese Zeile ausgeben und abwarten, daß der Benutzer die Adresse eingibt. Wie weiter unten näher erläutert wird, können die Eingaben auf Zeilen, die spezielle Kriterien erfüllen, mittels des optionalen "f or every TABLE-OR-QUERY-EXPRESSION" beschränkt werden. Beispielsweise kann ADRESSE in KUNDEN folgendermaßen definiert werden:
  • field of CLIENTS, ask "Please input the address of",
  • for every CLIENTS where NAME is "Smith, John"
  • (Feld Kunden, frage "Bitte Adresse eingeben von" für jeden Kunden mit Namen "Smith, John").
  • Dies veranlaßt, daß der Benutzer nur nach der Adresse für John Smith gefragt wird, und daß die Adresse in das ADRESSEN- Feld der Zeile eingeschrieben wird, die als ihren NAMEN-Wert "Smith, John" enthält. Aus Vorstehendem läßt sich erkennen, daß bei einer Tabelle Spalten unter Verwendung von ASK und andere Spalten unter Verwendung von VALUES ausgefüllt werden können. Wird ASK verwendet, um Felder auszufüllen, die in der Tabellendefinition als Schlüssel angegeben sind, ist die Größe der Tabelle von der Zahl der ausgefüllten Felder abhängig.
  • Zusätzlich kann ein Term 211 als eine Tabelle angegeben werden, die in einer MS-DOS-Datei gespeichert ist. In diesem Falle ist die Definition 213 folgende:
  • dosfile table
  • (Dos-Datei Tabelle).
  • Auf eine solche Definition reagiert die erfindungsgemäße Expertensystem-Schale mit einer Menüfolge, die es dem Entwickler der Anwendung ermöglicht anzugeben, welche MS-DOS-Datei die Daten der Tabelle enthält und auf welche Weise Spalten in der Tabelle definierende Terme 211 mit Feldern in der MS-DOS- Datei in Beziehung stehen. Definitionen für solche Tabellen enthalten keine ask- oder value-Operatoren.
  • 19. Abfragetabellen-Definition
  • Eine Abfragetabelle wird mittels einer Abfrageoperation an einer Grundtabelle oder an einer anderen Abfragetabelle definiert. Die Syntax der Abfragetabellen-Definition ist folgende:
  • TABLE-OR-QUERY-TERM where BOOLEAN-EXPRESSION (Tabellen- oder Abfrage-Term, wo Boolescher Ausdruck).
  • Der TABLE-OR-QUERY-TERM gibt die Grund- oder Abfragetabelle an, aus der die Zeilen ausgewählt werden. Der BOOLEAN- EXPRESSION gibt die Bedingungen an, unter denen eine Zeile auszuwählen ist. Beispielsweise kann NON_JOHN_SMITH_TABLE (Nicht Tabelle John Smith) folgendermaßen definiert sein:
  • CLIENTS where NAME is not "Smith, John" (Kunden, deren Namen nicht Smith, John ist).
  • Die sich ergebende Abfragetabelle wird alle Zeilen von KUNDEN aufweisen, ausgenommen die, deren NAME den Wert "Smith, John" hat.
  • Wie weiter oben angegeben, kann der Operator "where BOOLEAN- EXPRESSION" auch zur Auswahl der Zeilen verwendet werden, die unter Benutzung des "ask"-Operators in eine Grundtabelle im Dialogverkehr einzugeben sind.
  • 20. Operationen mit Tabellen
  • Sobald eine Tabelle in der vorstehend beschriebenen Weise definiert worden ist, können Terme 211 durch Vorschreiben von Operationen an der Tabelle definiert werden. Die einfachste Operation ist die Auswahl eines Feldes aus einer angegebenen Zeile. Der entsprechende Operator ist der OF-Operator:
  • FIELD-NAME-TERM of ROW-SPECIFYING-TERM (Feldname-Term von Zeilen-Bestimmungs-Term).
  • Der FIELD-NAME-TERM ist ein Term 211, der ein Feld in der Zeile bezeichnet. Der ROW-SPECIFYING-TERM ist ein Term 211, dessen Definition eine einzelne Zeile angibt. Die Definition 213 kann somit eine Grundtabelle mit nur einer Zeile oder eine Abfragetabelle mit nur einer Zeile definieren. Beispielsweise kann die Abfragetabelle JOHN_SMITH_TABLE definiert sein als
  • CLIENTS where NAME is "Smith, John" (Kunden, deren Namen Smith, John ist).
  • Die JOHN_SMITH_TABLE weist somit eine einzelne Zeile auf, und ein of-Operator, der einen Term JOHN_SMITH_ADDRESS definiert, würde folgendermaßen lauten:
  • ADDRESS of JOHN_SMITH_TABLE.
  • Summenoperatoren erzeugen ein Ergebnis ausgehend von einem Teil oder von allen Daten, die in einer Spalte in einer Tabelle enthalten sind. Die Operatoren geben Zeichen, arithmetische oder Boolesche Werte zurück. Der Zeichen-Summenoperator ist COLLECT (stelle zusammen), der eine Zeichenkette aus Werten aus einer Spalte erzeugt. An das Ende jedes Wertes in der Kette ist ein Zeilenvorschubzeichen angehängt. Der Operator hat die Syntax:
  • collect FIELD-TERM-TEXT-EXPRESSION for every TABLE-OR-QUERY-EXPRESSION
  • (stelle zusammen Feld-Term-Zeichen-Ausdruck für jeden Tabellen- oder Abfrage-Ausdruck).
  • Die Definition des Ausdrucks FIELD-TERM-TEXT-EXPRESSION enthält einen Term 211, der eine Spalte in der Tabelle bezeichnet, die durch den TABLE-OR-QUERY-EXPRESSION angegeben ist. Der COLLECT-Operator erstellt dann entsprechend dem FIELD- TERM-NAME-EXPRESSION eine Zeichenfglge von den Werten im Feld. In diesem und in den nachstehend angegebenen Fällen kann TABLE-OR-QUERY-EXPRESSION einen WO-Operator, wie vorstehend beschrieben, enthalten. Beispielsweise kann ein Term 211 NAME-LIST (Namen-Liste) folgendermaßen definiert sein:
  • collect NAME for every CLIENTS (stelle zusammen NAMEN für jeden KUNDEN).
  • Die Namen-Liste (NAME-LIST) würde den nachstehenden Zeichenketten-Wert aufweisen:
  • "Smith, Adam
  • Smith, John
  • Smith, David".
  • Ein wichtiges Merkmal bei dem Umstand, daß ein Ausdruck, der einen Feld-Namen enthält, im COLLECT-Operator verwendet werden kann, besteht darin, daß der vom COLLECT-Operator definierte Wert aus dem von den Feldern zurückgegebenen Wert berechnet werden kann.
  • Die Operatoren für arithmetische Summen umfassen Operatoren zum Gewinnen des Durchschnitts der Werte in den Feldern, des Maximums der Werte in den Feldern, des Minimums der Werte in den Feldern, des Gesamtbetrages der Werte in den Feldern, der Zahl der Felder und des Prozentsatzes der Felder, die eine bestimmte Bedingung erfüllen. Der Durchschnitt-Operator kann als Beispiel für Durchschnitt, Maximum, Minimum und Gesamtbetrag dienen. Seine Syntax ist folgende:
  • average FTELD-TERM-NUMBER-EXPRESSION for every TABLE-OR-QUERY-EXPRESSION.
  • FIELD-TERM-NUMBER-EXPRESSION ist ein Ausdruck, dessen Entwicklung einen Term 211 erfordert, der ein Zahlen-Feld in einer Grund- oder Abfragetabelle angibt, die durch TABLE-OR- QUERY-EXPRESSION definiert ist. Auch hier ermöglicht die Verwendung eines Ausdrucks mit dem Feld-Term das Vorschreiben einer Berechnung mit dem vom Operator zurückgegebenen Ergebnis.
  • Der COUNT EVERY-Operator (Zähle jedes) zählt einfach die Anzahl der Zeilen in einer angegebenen Tabelle. Die Syntax ist folgende:
  • count every TABLE-OR-QUERY-EXPRESSION.
  • Beispielsweise könnte ein Term 211 NUMBER_OF_CLIENTS (Anzahl Kunden) folgendermaßen definiert werden:
  • count every CLIENTS.
  • Bei der Tabelle KUNDEN des vorliegenden Beispiels hätte NUMBER_OF_CLIENTS den Wert 3.
  • Der PERCENT WHERE-Operator (Prozentsatz wo) ermittelt, welcher Prozentsatz der Werte eines angegebenen Feldes in einer Tabelle eine angegebene Bedingung erfüllt. Der Operator hat die Syntax:
  • percent TABLE-OR-QUERY-TERM where FIELD-TERM-BOOLEAN-EXPRESSION.
  • Der TABLE-OR-QUERY-TERM schreibt die Grund-oder Abfragetabelle vor, an der die Operation ausgeführt wird, und der FIELD- TERM-BOOLEAN-EXPRESSION enthält einen Term 211, der eines der Felder in der angegebenen Tabelle vorschreibt. Zum Beispiel kann ein Term 211 PERCENT_JOHN_SMITH folgendermaßen definiert sein:
  • percent CLIENTS where NAME is "Smith, John".
  • PERCENT_JOHN_SMITH würde den Wert "33" bekommen, weil "Smith, John" eine von drei Zeilen in der Tabelle ist.
  • Die Operatoren für Boolesche Summen-Werte sind: FOR EVERY (für jede), der ermittelt, ob ein Boolescher Ausdruck, der einen Term 211 enthält, der ein Feld-Name ist, für jede Zeile der Tabelle wahr ist, und: FOR SOME (für einige), der ermittelt, ob ein solcher Boolescher Ausdruck für eine beliebige Zeile der Tabelle wahr ist. Die Syntax von FOR SOME ist ein Beispiel für beide:
  • for some TABLE-OR-QUERY-EXPRESSION, FIELD-TERM-BOOLEAN-EXPRESSION.
  • TABLE-OR-QUERY-EXPRESSION schreibt die Grund- oder Abfragetabelle vor, an der die Operation ausgeführt wird, und der FIELD-TERM-BOOLEAN-EXPRESSION ist ein Boolescher Ausdruck, der einen Term 211 enthält, welcher ein Feld in der Tabelle angibt. Ein Beispiel wäre die Definition für einen Term IS_JOHN_SMITH_THERE?, die folgendermaßen aussehen könnte:
  • for some CLIENTS, NAME is "Smith, John".
  • Aus dem Vorstehenden läßt sich erkennen, daß Tabellen-Werte und Tabellen-Terme 211 eine große Verbesserung des regelbasierten Expertensystems darstellen. Terme 211 können nunmehr geordnete Zusammenstellungen von Daten und Felder in den Zusammenstellungen darstellen, und Operatoren bezüglich Tabellen ermöglichen die Definition von Abfragetabellen und von Operationen, die bei beiden Tabellenarten die Wiedergewinnung einzelner Feld-Werte und die Berechnung von Ergebnissen ermöglichen, die von den Werten in einer gesamten Spalte abhängig sind.
  • 21. "Don't know"-Werte
  • Eine Schwierigkeit des auf Definitionen aufgebauten Expertensystems bestand bei der anfänglichen Implementierung darin, daß es Benutzerantworten, wonach dem Benutzer die Antwort auf eine ihm durch das Expertensystem gestellte Frage unbekannt war, nicht in zweckdienlicher Weise verarbeiten konnte. Diese Schwierigkeit wurde dadurch überwunden, daß es den Entwicklern des erfindungsgemäßen auf Definitionen aufgebauten Expertensystems ermöglicht wurde, in jede der Klassen der skalaren Werte, die im auf Definitionen aufgebauten Expertensystem benutzt werden, einen "don't know"-Wert ("Weiß nicht"- Wert) hinzuzufügen und zusätzlich den Begriff der "don't know dependency" ("Weiß-nicht-Abhängigkeit") für skalare Werte und Tabellenwerte vorzusehen, die selbst keine "Weiß nicht"-Werte sind, aber von "Weiß nicht"-Werten abhängen. Dort, wo "Weiß nicht"-Werte vorgeschrieben sind, können Systembenutzer "Weiß nicht" als mögliche Eingabe in das System vorsehen. Bei einer bevorzugten Ausführungsform geschieht die Eingabe des Wertes mit einer Funktionstaste oder durch Auswahl aus einem Aufklappmenü.
  • Wenn zum Beispiel "Weiß nicht"-Werte vorgeschrieben sind, und das Feld TELEFON von KUNDEN folgendermaßen definiert ist:
  • field of CLIENTS, ask "What is the telephone number of",
  • kann der Benutzer "Weiß nicht" angeben. In diesem Falle ist der Wert von TELEFON für dieses Feld "Weiß nicht". Angenommen, daß "Weiß nicht" die Antwort für die Zeile war, bei der NAME den Wert "Smith, John" hat, würde ein Term 211 JOHN SMITH PHONE, der mit
  • PHONE OF JOHN_SMITH_TABLE
  • definiert ist, TELEFON für diese Zeile angeben und den Wert "Weiß nicht" haben. Ferner würde der Wert eines Terms 211 PHONE_LIST, der mit dem COLLECT-Operator für das Feld TELEFON definiert ist, "von weiß nicht abhängig" sein, weil wenigstens einer der Werte in der durch TELEFON definierten Spalte ein "Weiß nicht"-Wert ist. Unter der Annahme, daß nur das Telefon von John Smith nicht bekannt ist, würde die Definition von PHONE_LIST:
  • collect PHONE for every CLIENTS,
  • einen Wert ergeben wie
  • "555-1111 666-2222".
  • Ferner wird das auf Definitionen aufgebaute Expertensystem dem Wert einen Hinweis auf "Weiß nicht"-Abhängigkeit zuordnen, d.h. einen Hinweis darauf, daß in seine Berechnung ein "Weiß nicht"-Wert einbezogen war. In diesem Fall gibt der Hinweis zwei Dinge an: die Stelle im Wert, die der "Weiß nicht"-Wert eingenommen hätte, und daß eines der drei Felder in der Spalte einen "Weiß nicht"-Wert enthält.
  • Die Entwicklung eines Terms 211, der mit fast jedem Operator definiert ist, der im auf Definitionen aufgebauten Expertensystem zur verfügung steht, kann die Entwicklung eines anderen Terms 211 mit sich bringen, der einen "Weiß nicht"-Wert hat. Bei einer bevorzugten Ausführungsform sind die allgemeinen Regeln für die Bestimmung des Wertes eines Terms 211, wo ein "Weiß nicht"-Wert betroffen ist, folgende:
  • 1. Wenn der Wert des Ergebnisses vom "Weiß nicht"-Wert unabhängig ist, wird das Ergebnis ohne Hinweis auf Weißnicht-Abhängigkeiten zurückgegeben.
  • 2. Wenn der Wert des Ergebnisses vom "Weiß nicht"-Wert abhängt, und kein Wert ohne den "Weiß nicht"-Wert bestimmt werden kann, ist das zurückgegebene Ergebnis "Weiß nicht" mit einem Hinweis auf "Weiß nicht"-Abhängigkeiten.
  • 3. Wenn der Wert des Ergebnisses vom "Weiß nicht"-Wert abhängt, aber irgendein Wert ohne den "Weiß nicht"-Wert bestimmt werden kann, ist das zurückgegebene Ergebnis der so bestimmte Wert mit einem Hinweis auf "Weiß nicht"-Abhängigkeiten. Ein solches Ergebnis wird als Schätzung bezeichnet.
  • Ein Beispiel für die ersten beiden Regeln gibt das Verhalten des durch "*" angegebenen MULTIPLY-Operators (Multiplizier- Operator), wenn einer seiner Operanden einen "Weiß nicht"- Wert hat. Hat der andere Operand den Wert 0, gibt der Operator 0 zurück, da dieses Ergebnis vom Wert des anderen Operanden unabhängig ist. Ansonsten gibt der MULTIPLY-Operator "Weiß nicht" zurück. Ein Beispiel für die dritte Regel ist der COLLECT-Operator. Wenn, wie das Beispiel zeigt, ein Feld der zusammengestellten Spalte den Wert "Weiß nicht" hat, übergeht COLLECT dieses Feld beim Erzeugen der Ergebniskette.
  • Die Angabe von "Weiß nicht"-Abhängigkeiten, die zusammen mit "Weiß nicht" oder einer Schätzung zurückgegeben wird, enthält den Term 211 von der Definitionshierarchie für den gerade entwickelten Term 211, dessen Wert von "Weiß nicht" direkt abhängig ist, und wenn der Wert eine Schätzung ist, enthält sie auf die Schätzung bezügliche Informationen, die den Umfang angeben, in dem die Schätzung durch "Weiß nicht"-Werte beeinflußt ist. Der Inhalt der auf die Schätzung bezüglichen Informationen ist von dem Operator abhängig, der die Schätzung erzeugt hat. Allgemein gesprochen, wenn die Schätzung ein Ketten-Wert ist, enthält die auf die Schätzung bezügliche Information den Index der Stelle in der Kette, welche die erste Komponente, die einen "Weiß nicht"-Wert hat, eingenommen haben würde. Wird die Schätzung durch einen Operator wie AVERAGE erzeugt, der die Inhalte aller Felder einer Spalte überprüft, enthält die auf die Schätzung bezügliche Information die Gesamtzahl der Felder der Spalte und die Zahl der Felder mit "Weiß nicht"-Werten. Ein Operator wie COLLECT, der sowohl eine Kette erzeugt als auch die Inhalte aller Felder einer Spalte überprüft, weist auf die Schätzung bezügliche Informationen auf, die sowohl die Position des ersten "Weiß nicht"-Wertes in der Ergebniskette als auch die Gesamtzahl der Felder und die Zahl der Felder mit "Weiß nicht"-Werten enthalten.
  • Bei einer bevorzugten Ausführungsform gibt es zwei spezielle Boolesche Operatoren, welche die Entdeckung von "Weiß nicht"- Werten und Schätzungen ermöglichen.
  • Der erste Operator entdeckt "Weiß nicht"-Werte und hat die Syntax
  • TEXT-NUMBER-BOOLEAN-EXPRESSION = don't know.
  • Der Operator gibt den Wert WAHR (TRUE) zurück, wenn der Ausdruck den Wert "Weiß nicht" hat, andernfalls den Wert FALSCH. Ein Beispiel fur seine Verwendung wäre in einer Definition von DONT_KNOW_ABOUT_JOHN_SMITH_PHONE, die folgendermaßen aussähe:
  • JOHN_SMITH_PHONE don't know.
  • Weil der Wert von JOHN_SMITH_PHONE der Wert des TELEFON-Feldes für die John-Smith-Zeile in KUNDEN ist, hat DONT_KNOW _-ABOUT_JOHN_SMITH_PHONE den Wert WAHR.
  • Der zweite Operator entdeckt Schätzungen und hat die Syntax:
  • TEXT-NUMBER-BOOLEAN-EXPRESSION = don't know estimate.
  • Der Operator gibt den Wert WAHR zurück, wenn der Ausdruck eine Schätzung ist, andernfalls den Wert FALSCH. Ein Beispiel für seine Verwendung wäre eine Definition von PHONE_LIST _-INCOMPLETE (Telefonliste unvollständig), die folgendermaßen aussähe:
  • PHONE LIST = don't know estimate.
  • Hier ist PHONE_LIST eine Schätzung, deshalb wird PHONE_LIST_INCOMPLETE den Wert WAHR haben.
  • 22. Implementierung von "Weiß nicht"-Werten
  • Wie weiter oben angegeben, werden Operatoren bei einer bevorzugten Ausführungsform mittels LISP-Funktionen implementiert. Bei der bevorzugten Ausführungsform geben die Funktionen für die Operatoren Listen zurück. Die Implementierung von "Weiß nicht"-Werten bei einer bevorzugten Ausführungsform nutzt dieses Merkmal und ein eingebautes spezielles LISP-Symbol, NIL, aus. Der Wert von NIL in LISP ist die leere Liste, und in einem Zusammenhang, der Boolesche Werte verlangt, der Wert FALSCH. NIL wird bei der bevorzugten Ausführungsform zum Darstellen von "Weiß nicht" verwendet. Um NIL von Booleschen Werten zu unterscheiden, hat die vorliegende Ausführungsform Ja-Nein-Operationen definiert. Diese Operationen funktionieren wie Boolesche Operationen, mit der Ausnahme, daß das Boolesche Primitivsymbol T in LISP durch das Symbol YES (ja) und das Boolesche Primitivsymbol NIL durch das Symbol NO (nein) ersetzt wurde.
  • Bei der bevorzugten Ausführungsform weist die von einer Funktion zurückgegebene Liste stets als ihr erstes Element den Wert auf, der von dem mittels der Funktion definierten Term 211 gefordert wird. Bestehen "Weiß nicht"-Abhängigkeiten, wird das erste Element selber eine Liste sein. Das erste Element dieser Liste wird dann der zurückgegebene Wert sein, d.h. entweder NIL, welches "Weiß nicht" darstellt, oder eine Schätzung. Das nächste Element ist der Hinweis auf die "Weiß nicht"-Abhängigkeit. Ist der zurückgegebene Wert NIL, ist der Abhängigkeits-Hinweis eine Liste der Terme 211, deren "Weiß nicht"-Werte die Rückgabe des "Weiß nicht"-Wertes erforderlich machten. Ist der zurückgegebene Wert eine Schätzung, ist der Abhängigkeits-Hinweis eine Liste, in der jedes Element eine Liste ist, die aus einem Term besteht, dessen "Weiß nicht"-Werte die Schätzung erforderlich machten, und der Schätzungs-Hinweis. Der von der PHONE_LIST zurückgegebene geforderte Wert wäre beispielsweise eine Liste in der nachstehenden Form:
  • ("555-1111 666-2222" 9 (PHONE 1 3)).
  • Die Zeichenkette ist ist selbstverständlich die von der COLLECT-Funktion erzeugte Kette; der Wert 9 ist der Index (beim Zählen des Zeilenvorschubzeichens) der Stelle des ersten "Weiß nicht"-Wertes in der Zeichenkette; PHONE ist der Feldname für die Spalte, die COLLECT zum Erhalten der Kette gelesen hat; schließlich zeigen die Ziffern 1 3 an, daß 1 "Weiß nicht"-Wert aus insgesamt 3 Feldern gefunden wurde.
  • Die Vorteile eines auf Definitionen aufgebauten Expertensystems mit "Weiß nicht"-Werten, welche die gerade beschriebenen Eigenschaften haben, sind deutlich. Außer daß das auf Definitionen aufgebaute Expertensystem es einem Benutzer ermöglicht anzugeben, daß er es nicht weiß, kann es feststellen, ob das "Weiß nicht" von Bedeutung ist, und wenn ja, ob eine Schätzung möglich ist. Ferner wird es dem auf Definitionen aufgebauten Expertensystem durch die Informationen bezüglich der "Weiß nicht"-Abhängigkeit ermöglicht festzustellen, welche Terme 211 die Abhängigkeit erzeugen, und im Falle der Schätzung festzustellen, in welchem Ausmaß die "Weiß nicht"- Werte den Wert beeinflussen können, für den die Schätzung erstellt wurde.
  • 23. Dokumenten-Erstellungssystem mit auf Definitionen aufgebautem Expertensystem
  • Das in den vorstehenden Abschnitten 1 bis 22 offenbarte auf Definitionen aufgebaute Expertensystem wird durch die Hinzufügung eines einzigen neuen Operators zu einem Dokumenten-Erstellungssystem. Dieser Operator wird mit Wp-Text-Operator bezeichnet. In der folgenden Offenbarung wird zuerst der Wp- Text-Operator beschrieben, dann ein Dokumentenvorlagen-Beispiel, anschließend ein Überblick über die Implementierung des Wp-Text-Operators in einer bevorzugten Ausführungsform und schließlich Einzelheiten der bevorzugten Ausführungsform.
  • 24. Der WP-TEXT-Operator
  • Der Wp-Text-Operator wird zum Definieren von Text-Termen 211 als Teile einer Dokumentenvorlage benutzt, die mit dem von der Wang Laboratories, Inc. hergestellten WP+-Editor geschrieben wird. Der WP+-Editor ist im einzelnen in dem am 30.12.1986 an James Lee Cooper erteiltenm US-Patent 4,633,430 Control Structure for a Document Processing System (Steuereinrichtung für ein Dokumenten-Erstellungssystem) offenbart, das durch diesen Hinweis zum Teil der vorliegenden Offenbarung erklärt wird. Der WP-Text-Operator hat die Syntax
  • wp text [if YES-NO-EXPRESSION].
  • Wenn das auf Definitionen aufgebaute Expertensystem den durch den Operator definierten Term 211 entwickelt, ist der Wert des Terms 211 der Teil der Dokumentenvorlage, der durch die Definition des Terms spezifiziert ist. Wird das auf Definitionen aufgebaute Expertensystem als Dokumenten-Erstellungssystem benutzt, wird der vom Wp-Text-Operator definierte Wert des Terms 211 an das vom Dokumenten-Erstellungssystem gerade erzeugte Ausgangsdokument ausgegeben. Liegt der wahlfreie Ausdruck
  • if YES-NO-EXPRESSION
  • vor, wird der vom Wp-Text-Operator definierte Term 211 nur dann entwickelt, wenn YES-NO-EXPRESSION zu YES führt; wird er zu NO, wird der Term 211 nicht entwickelt. Wenn sich der YES- NO-EXPRESSION zu einem "Weiß nicht"-Wert, wie im vorstehenden Abschnitt 21 beschrieben, entwickelt, entwickelt sich der Term 211 zur Kette "Weiß nicht".
  • Ein Dokumenten-Erstellungssystem, das Testamente erzeugt, definiert beispielsweise einen Term 211 DIST-LIFE-INSURANCE-To- CHILD (Aufteilung-Lebensversicherung-an-Kind), der sich zu der Klausel aus der Dokumentenvorlage bezüglich der Aufteilung der Lebensversicherung an ein Kind folgendermaßen entwickelt:
  • wp text if TRANSFER-INS-ON-CHILD.
  • TRANSFER-INS-ON-CHILD (Übertragung Versicherung an Kind) ist ein Ja-Nein-Term 211, der als die Antwort des Benutzers auf die Frage "Wünscht Mandant Übertragung von bei Kindern liegendem Anspruch auf Lebensversicherung auf Kinder und Nachkommen?" definiert wird. Wird ein Testament unter Anwendung des Testament-Erstellungssystems erstellt, wird die Frage von der Person beantwortet, für die das Testament erstellt wird. Ist die Antwort ja, wird der Teil der Dokumentenvorlage, der mit DIST-LIFE-INSURANCE-ON-CHILD bezeichnet ist, in das Testament aufgenommen; ist die Antwort nein, entfällt dieser Teil. Ist die Antwort "Weiß nicht", ist der Wert des Terms 211 diese Kette.
  • Wie sich aus dem Vorstehenden ergibt, kann ein Dokument durch einfaches Verketten von Kettentermen definiert werden, die mit dem Wp-Text-Operator definiert sind. Beispielsweise enthält das Testament-Erstellungssystem den Textterm GENERATE WILL (Erstelle Testament), der folgendermaßen definiert ist:
  • TESTAMENT-TITEL;
  • WIDERRUFE-VORHERIGES-TESTAMENT;
  • AUFTEILUNG;
  • MINDERJÄHRIGKEITSKLAUSEL;
  • TILGUNG-VON-VERBINDLICHKEITEN;
  • SORGERECHT-FÜR-MINDERJÄHRIGE;
  • VERSCHIEDENE-BESTIMMUNGEN;
  • VOLLSTRECKER.
  • Das Zeichen ";" ist ein Verkettungsoperator, und jeder der zu verkettenden Terme 211 ist entweder selbst ein Wp-Text-Term oder eine Verkettung von Wp-Text-Termen. Beim Entwickeln von GENERATE WILL ist somit dessen Wert eine Verkettung von Vorlagenteilen, die für die Wp-Text-Terme definiert sind. Bei der Erstellung von Dokumenten wird dieser Wert in einem WP+- Dokument erzeugt. Bei einer bevorzugten Ausführungsform geschieht die Erzeugung des Wertes in einem WP+-Dokument in zwei Schritten: beim ersten Schritt entsteht ein Wert, der eine Liste der Wp-Text-Terme in der Reihenfolge enthält, in der die von ihnen repräsentierten Vorlagenteile im Ausgangsdokument erscheinen sollen. Im zweiten Schritt werden die in der Liste enthaltenen Vorlagenteile aus der Dokumentenvorlage in das Ausgangsdokument in der Reihenfolge kopiert, in der sie auf der Liste stehen.
  • Eine bevorzugte Ausführungsform weist zwei Verfahren zum Definieren von Termen 211 mit dem Wp-Text-Operator auf. Wenn ein Benutzer der Expertensystem-Schale 201 unter Benutzung des Wp-Text-Operators einen Term 211 definiert, arbeitet gemäß dem ersten Verfahren eine Komponente der Expertensystem- Schale 201 den von der Wang Laboratories, Inc. hergestellten WP+-Editor automatisch ab. Der Benutzer der Schale 201 benutzt dann den WP+-Editor zum Hinzufügen des vom Term 211 repräsentierten Textes in die Dokumentenvorlage. Gemäß dem zweiten Verfahren wendet der Benutzer der Schale 201 den WP+- Editor zum Zusammenstellen der Dokumentenvorlage unabhängig von der Schale 201 an. Die Namen der WP-Text-Terme 211 sind in der Dokumentenvorlage enthalten. Bei der Benutzung dieses Lösungsweges gibt der Benutzer den Namen der Dokumentenvorlage in die Schale 201 ein, die das Dokument dann liest und den Benutzer fragt, ob er die Einfügung der in der Dokumentenvorlage definierten Wp-Text-Terme 211 in die Wissensbasis wünscht. Wünscht der Benutzer die Einfügung eines Terms, erstellt die Schale 201 eine Definition für den Term.
  • Wie weiter unten näher beschrieben wird, kann der Text andere Terme 211 enthalten. Diese Terme 211 sind mit Misch-Termen bezeichnet. Wenn der Definitionen-Prozessor DP 207 den den Text repräsentierenden neuen Wp-Text-Term 211 in den Termspeicher 215 einbringt, überprüft er die Misch-Terme im Text, um festzustellen, ob hierfür Definitionen im TS 215 vorhanden sind. Wenn nicht, wird der Benutzer der Schale 201 gemäß der Beschreibung im vorstehenden Abschnitt 5 aufgefordert, eine Definition anzugeben. Wenn die Schlußfolgerungseinrichtung 219 einen Wp-Text-Term 211 entwickelt, wird jeder Misch-Term in dem den Wp-Text-Term definierenden Teil der Vorlage entwickelt; wenn der Teil der Vorlage 1001, der durch den Wp- Text-Term 211 repräsentiert ist, in das Ausgangsdokument ausgegeben wird, wird jeder Misch-Term in dem Vorlagenteil durch den Wert des Misch-Terms ersetzt. Ist der Wert des Misch- Terms "Weiß nicht", ersetzt eine Kette dieses Wertes den Misch-Term. Bei einer bevorzugten Ausführungsform kann ein Misch-Term ein anderer Term 211 sein, der mit dem Wp-Text-Typ definiert ist.
  • 25. Die Dokumentenvorlage: Fig. 10
  • In Fig. 10 ist ein Beispiel einer Dokumentenvorlage 1001 dargestellt, die bei einer bevorzugten Ausführungsform zum Definieren von Wp-Text-Termen benutzt wird. Bei einer bevorzugten Ausführungsform wird die Dokumentenvorlage 1001 mit dem WP+- Editor geschrieben. In der Figur eerscheint der Teil der Dokumentenvorlage 1001, der einen Wp-Text-Term definiert, als Fragment 1002. Jedes Fragment 1002 beginnt mit einem Fragment-Term 1003, der mit dem durch das Fragment definierten Wp-Text-Term 211 identisch ist, und endet mit einem Doppelpunkt (:). Der Fragment-Term 1003 und der Doppelpunkt 1009 sind durch ein Fragment-Term-Attribut bezeichnet, das der WP+-Editor der den Fragment-Term 1003 repräsentierenden Textfolge und dem Doppelpunkt 1009 zuordnet. In Fig. 10 ist Text mit dem Fragment-Term-Attribut durch geradestehende Fettschrift dargestellt.
  • Der Text zwischen dem Fragment-Term 1003 und dem Doppelpunkt ist der Fragment-Text 1005. Dieser kann, wie weiter oben angegeben, Misch-Terme enthalten, die in Fig. 10 mit dem Bezugszeichen 1007 bezeichnet sind. Im Fragment-Text 1005 ist ein Misch-Term 1007 durch ein Misch-Term-Attribut gekennzeichnet, das der WP+-Editor der den Misch-Term 1007 repräsentierenden Zeichenfolge zuordnet. In Fig. 10 ist Text mit dem Misch-Term-Attribut durch unterstrichene fette Kursivschrift dargestellt. Der Misch-Term Cient (Mandant) kann allgemein als Beispiel für Misch-Terme 1007 dienen. Client ist ein Text-Term, der als Feld eines Tabellen-Terms definiert ist, der den Namen des Mandanten enthält. Beim Erstellen eines Testaments wird Client durch den Namen aus dem Tabellen-Term ersetzt. Wenn bei einer bevorzugten Ausführungsform der erste Buchstabe eines Misch-Terms 1007, der kein Wp- Text-Misch-Term 1007 ist, mit Großbuchstaben geschrieben ist, wird der erste Buchstabe des Wertes, der den Misch-Term ersetzt, ebenfalls mit Großbuchstaben geschrieben. Bei einer bevorzugten Ausführungsform reagiert der Editor auch auf das Fragment-Term-Attribut und das Misch-Term-Attribut durch Ändem der Art und Weise, in der diese Attribute aufweisende Zeichenfolgen angezeigt oder gedruckt werden. Folglich kann ein Benutzer des Dokumenten-Erstellungssystems anhand einer Anzeige oder eines Ausdrucks der Dokumentenvorlage 1001 bestimmen, welche Zeichenfolge der durch das Fragment definierte Fragment-Term 1003 ist und welche der enthaltenen Zeichenfolgen Misch-Terme 1007 sind. Die Dokumentenvorlage 1001 kann zusätzlich Kommentare enthalten, d.h. Texte, die in der Dokumentenvorlage 1001 enthalten, aber nicht Teil irgendeines Fragments 1002 sind. Bei einer bevorzugten Ausführungsform wird zu einem Kommentar gehörender Text durch ein Kommentarattribut angegeben. Auch hier ändert das Kommentarattribut die Art und Weise, in der Zeichenfolgen mit diesem Attribut angezeigt oder gedruckt werden.
  • 26. Überblick über die Implementierung des WP-Text-Operators in einem bevorzugten Umfeld: Fig. 11
  • Fig. 11 ist ein Blockschaltbild mit der Darstellung der Implementierung eines Dokumenten-Erstellungssystems 1102 anhand des Wp-Text-Operators in dem in Fig. 2 dargestellten auf Definitionen aufgebauten Expertensystems. Fig. 11 enthält aus dieser Figur den Definitionen-Prozessor DP 207, die Term- Schlußfolgerungseinrichtung 219 und den Termspeicher 215 sowie zusätzliche, für den Wp-Text-Operator erforderliche Komponenten. Teile der Fig. 2, die in Fig. 11 nicht erscheinen, sind in gleicher Auslegung zu verstehen wie in Fig. 2. Wie in Fig. 2 geben Pfeile den Datenfluß zwischen den Komponenten an. Die zusätzlichen Komponenten sind eine den Wp- Text-Operator definierende Komponente 1101 des Definitionen- Prozessors 207, eine Wp-Text auflösende Komponente 1103 der Term-Schlußfolgerungseinrichtung 219, ein Editor 1105, ein Index 1106, eine Dokumentenvorlage 1001 und ein erstelltes Dokument 1111. Bei einer bevorzugten Ausführungsform sind die Komponenten 1101 und 1103 LISP-Funktionen, die von einer LISP-Umgebung 561 ausgeführt werden.
  • Der Editor 1105 ist eine Version des WP+-Editors und wurde auf die Verarbeitung durch einen Mikroprozessor angepaßt, der mit dem von der Microsoft, Inc. hergestellten MS-DOS -Betriebssystem arbeitet. Der LISP-Interpretierer 501 verwendet die sys:dos-Funktion zum Aufrufen des Editors 11051 wie dies am Ende des vorstehenden Abschnitts 16 beschrieben wurde. Andere Textaufbereitungsprogramme können in der gleichen Weise wie der WP+-Editor verwendet werden. Der Editor 1105 soll nicht nur eine interaktive Aufbereitung zur Verfügung stellen, sondern sieht auch eine Anwendungsschnittstelle vor, die es anderen Anwendungsprogrammen ermöglicht, den Editor zum Aufbereiten von Dokumenten zu benutzen.
  • Die Dokumentenvorlage 1001 ist ein Dokument mit dem Vorlagentext, aus dem durch das Dokumenten-Erstellungssystem Dokumente generiert werden. Bei einer bevorzugten Ausführungsform findet der WP+-Editor Fragmente 1002 in der Vorlage 1001 mittels benannter Markierungen auf, d.h. Namen, die Positionen in der Vorlage 1001 zugeordnet sind. Das erstellte Dokument 1111 ist ein Dokument, das von dem auf Definitionen aufgebauten Expertensystem mit den Werten der Fragment-Terme 1003 und beliebigen Misch-Termen generiert wurde, die im Fragment-Text 1005 für die Fragment-Terme 1003 enthalten sind. Der Index 1106 wird zum raschen Auffinden der Fragment-Terme 1003 und der Misch-Terme 1007 in der Vorlage 1001 benutzt. Der Index enthält einen Kontrollsatz (CTL REC 1108), in dem gespeichert sind: der Name der Dokumentenvorlage 1001 und Tag und Uhrzeit der letzten Änderung der Dokumentenvorlage 1001 durch das auf Definitionen aufgebaute Expertensystem sowie zwei Listen: eine FT-Liste 1107 mit Fragment-Termen 1003 und den benannten Markierungen zum Auffinden der Fragmente in der Vorlage 1001, und eine MT-Liste 1109 mit den Misch-Termen 1007, die im Fragment-Text 1005 jedes Fragments 1002 enthalten sind. Bei einer bevorzugten Ausführungsform sind beide Listen in B- Baumstrukturen implementiert. Andere Implementierungen, die eine rasche Suche ermöglichen, sind selbstverständlich möglich.
  • Die vorstehend beschriebenen neuen Komponenten werden sowohl bei der Definition von Fragment-Termen 1003 als auch bei der Generierung von Dokumenten unter Benutzung der Fragment-Terme verwendet. Die nachstehende Beschreibung beginnt mit der Definition von Fragment-Termen 1003 und schließt die Generierung von Dokumenten an.
  • 27. Definition von Fragment-Termen 1003
  • Wenn die Schale 201 des auf Definition aufgebauten Expertensystems eine DEFINE-Operation bezüglich eines Fragment-Terms 1003 ausführt, ruft die im vorstehenden Abschnitt 7 beschriebene DEFINE-Funktion WPT DEF 1101 auf und leitet ihr den Fragment-Term 1003 zu. Die WPT DEF 1101 fragt als erstes bei der die Definition vornehmenden Person an, ob der Fragment- Term 1003 in eine vorhandene Vorlage 1001 oder in eine neue Vorlage 1001 aufgenommen werden soll. Entscheidet sich der Benutzer für eine neue Vorlage 1001, fragt WPT DEF 1101 nach dem Namen der neuen Vorlage 1001 und benutzt die sys:dos- Funktion, um für die Erzeugung des Dokumentes den Editor 1105 aufzurufen. Wünscht der Benutzer eine Verkettung mit einer vorhandenen Vorlage 1001, fragt die WPT DEF 1101 nach dem Namen dieser Vorlage.
  • Sobald die WPT DEF 1101 den Namen der Vorlage 1001 bekommen hat, stellt sie fest, ob für diese Vorlage 1001 ein Index 1106 besteht. Im negativen Fall erzeugt die WPT DEF 1101 einen Index 1106 für die neue Vorlage und bringt den Namen des Dokumentes in den CTL REC 1108. Als nächstes gibt der Benutzer an, ob er die Vorlage aufbereiten will. Wenn ja, erzeugt die WPT DEF 1101 mittels des Editors 1105 ein Zwischendokument. Sodann gibt die WPT DEF 1101 den Zugriff auf den Editor 1105 für die die Definition erzeugende Person frei. Letztere benutzt den Editor 1105 zum Schreiben eines durch den Fragment-Term 1003 repräsentierten Fragment-Text 1005 in das Zwischendokument. Dabei sieht sie für jeden Misch-Term 1007 im Fragment-Text das Misch-Term-Attribut vor. Am Ende verläßt sie den Editor 1105, und die WPT DEF 1101 wird erneut abgearbeitet.
  • Als nächstes bringt die WPT DEF 1101 einen Eintrag in die FT- Liste 1107 für den Fragment-Term 1003. Der Eintrag verbindet den Fragment-Term 1003 mit einer benannten Markierung, mit welcher der Editor 1105 das Fragment in der Vorlage 1001 wiederauffindet. Die WPT DEF 1101 entlehnt die benannte Markierung, die ab jetzt mit Fragment-Name 1113 bezeichnet wird, dem Fragment-Term 1003. Der Fragmentterm 1003 kann von beliebiger praktischer Länge sein (max. 30 Zeichen bei einer bevorzugten Ausführungsform), jedoch ermöglicht WP+ eine maximale Länge von 10 Zeichen für eine benannte Markierung. Wenn erforderlich, beginnt die WPT DEF 1101 zum Erstellen des Fragmentnamens mit einem einfachen Abstreichen des Fragment- Terms 1003; sodann durchsucht sie die FT-Liste 1107, ob ein gleicher Fragmentname bereits existiert; wenn ja, macht die WPT DEF 1101 aus dem neuen Fragmentnamen einen eindeutigen Namen. Dies tut sie bei einer bevorzugten Ausführungsform, indem sie eine Mischfolge von Zeichen abarbeitet, beginnend mit dem letzten Zeichen im Fragmentnamen. Bis ein eindeutiger Fragmentname erreicht ist, ersetzt die WPT DEF 1101 das letzte Zeichen im Fragmentnamen mit dem folgenden Zeichen in der Mischfolge und überprüft dann, ob der Fragmentname eindeutig ist. Wird durch die Benutzung dieser Mischfolge kein eindeutiger Name gefunden, wird die Folge erneut abgearbeitet, beginnend mit dem vorletzten Zeichen im Namen, und so fort. Sobald ein eindeutiger Fragmentname erreicht ist, ruft die WPT DEF 1101 den Editor 1105 auf, um den Fragment-Term 1003 an das Ende der Vorlage 1001 zu setzen und dem Fragment-Term 1003 das Fragment-Term-Attribut zuzuordnen, benutzt dann den Editor 1105, um unter Verwendung des Fragmentnamens 1113 in der Vorlage 1001 eine benannte Markierung zu erzeugen. Die benannte Markierung gibt die Position des letzten Zeichens im Fragment-Term 1003 an. Im nächsten Schritt wird der Editor 1105 benutzt, um das Fragment aus dem Zwischendokument in die Vorlage 1001 zu kopieren. Danach wird das Zwischendokument gelöscht. Im letzten Schritt wird der Editor 1105 benutzt, um einen Doppelpunkt 1009 hinter das Fragment zu setzen und dem Doppelpunkt 1009 das Fragment-Term-Attribut zuzuordnen.
  • Wenn dieser gesamte Vorgang beendet ist, benutzt die WPT DEF 1101 den Editor 1105, um im Fragment 1002 nach Misch-Termen 1007 zu suchen, indem sie nach Text sucht, der das Misch- Term-Attribut hat. Jedesmal, wenn der Editor 1105 einen Misch-Term findet und ihn an die WPT DEF 1101 zurückgibt, wird der Misch-Term von dieser zur Liste der Misch-Terme 1007 für das Fragment 1002 in der MT-Liste 1109 hinzugefügt. Wenn alle Misch-Terme für das Fragment 1002 in die NT-Liste 1109 eingebracht sind, bestimmt der Definitionenprozessor 207 bei jedem Misch-Term 1007 für das Fragment, ob hierfür eine Definition im Termspeicher 215 gespeichert ist. Wenn nein, fordert der Definitionenprozessor 207 den Benutzer auf, den Misch-Term 1007 in der im vorstehenden Abschnitt 5 beschriebenen Weise zu definieren. Wenn die WPT EDF 1101 zur DEFINE- Funktion zurückspringt, erzeugt letztere, wie im vorstehenden Abschnitt 7 beschrieben, einen TERN 211 und eine DEF 213 für den Fragment-Term 1003 im Termspeicher 215. Bei einer bevorzugten Ausführungsform enthält die DEF 213 das einen WPT-Lauf 1103 repräsentierende LISP-Symbol. Jeder Fragment-Term 1003 wird in der oben angegebenen Weise definiert; verläßt der Benutzer die Schale 201, speichert letztere Tag und Uhrzeit im CTL REC 1108.
  • Wie weiter oben erläutert, enthält die auf Definitionen aufgebaute Expertensystem-Schale auch eine REDEFINE-Operation zum Umdefinieren bereits definierter Terme 211. Wenn der umzudefinierende Term 211 ein Fragment-Term 1003 ist, ruft REDEFINE 101 die WPT DEF 1101 auf und leitet ihr den umzudefinierenden Fragment-Term 1003 zu. In diesem Falle verwendet die WPT DEF 1101 den Editor 1105, um ein Zwischendokument zu erzeugen, benutzt dann den Fragment-Term 1003 und die FT-Liste 1107, um den dem Fragment-Term 1003 entsprechenden Fragmentnamen 1113 zu erhalten, gibt den Fragmentnamen 1113 an den Editor 1105, um das durch den Fragment-Term 1003 identifizierte Fragment 1002 in der Vorlage 1001 aufzufinden, und verwendet dann den Editor 1105, um den Text, der dem Ende des Fragment-Terms 1003 folgt, in das Zwischendokument zu kopieren. Das Kopieren dauert an, bis die WPT DEF 1101 auf einen Doppelpunkt 1009 trifft, den sie im Fragment-Term-Attribut erkennt. Die den Term umdefinierende Person benutzt dann den Editor 1105, um, wie weiter oben beschrieben, den Text im Zwischendokument aufzubereiten. Wenn der Benutzer den Vorgang beendet hat, geht die WPT DEF 1101 in der weiter oben angegebenen Weise vor, mit der Ausnahme, daß sie den alten Fragment-Text 1005 löscht und mit dem neuen Fragment-Text 1005 aus dem Zwischendokument ersetzt.
  • Wie weiter oben angegeben, kann eine Dokumentenvorlage 1001 mittels des Editors 1105 unabhängig von der auf Definitionen aufgebauten Expertensystem-Schale 201 aufbereitet werden. In diesem Falle gibt die die Dokumentenvorlage 1001 bearbeitende Person einen Fragment-Term 1003 an, indem sie mit dem WP+- Editor das Fragment-Term-Attribut der Zeichenfolge, die der Fragment-Term 1003 ist, zuordnet und gibt einen Misch-Term 1007 an, indem sie mit dem WP+-Editor das Misch-Term-Attribut der Zeichenfolge zuordnet, die der Misch-Term 1007 ist, und gibt das Ende des Fragmentes an, indem sie mit dem WP+-Editor einen Doppelpunkt 1009 an diese Stelle setzt und ihm das Fragment-Term-Attribut zuordnet. Der Editor 1105 fügt Tag ud Zeitpunkt der Aufbereitung der Dokumentenvorlage 1001 automatisch in die Informationen ein, die er bezüglich des Dokumentes aufrechterhält.
  • Um die neuen Fragment-Terme 1003 in den Termspeicher 215 zu bringen, verbindet der Benutzer der Expertensystem-Schale 201 diese mit der Dokumentenvorlage 1001 in der weiter oben angegebenen Weise. Ist die Dokumentenvorlage 1001 neu, oder liegen Tag und Zeitpukt der Aufbereitung später als die im CTL REC 1108 für die Dokumentenvorlage angegebenen, überprüft die WPT DEF 1101 die Dokumentenvorlage 1001. Sie beginnt dabei mit dem Löschen des Index 1106 und dem Erstellen eines neuen Index 1106 für die Vorlage 1001. Die WPT DEF 1101 bestimmt dann für jeden Fragment-Term 1003, ob er im Termspeicher 215 bereits definiert ist, erstellt eine Liste der nicht definierten Fragment-Terme 1003 und fragt den Benutzer, ob er Definitionen in den Termspeicher 215 eingeben will. Wenn ja, werden die Definitionen in der weiter oben angegebenen Weise hinzugefügt. Beim Definieren eines nicht definierten Fragment-Terms 1003 sucht die WPT DEF 1101 im Fragment-Text 1005 nach dem Fragment-Term 1003 für Misch-Terme 1007 und verarbeitet jeden Misch-Term 1007 in der weiter oben beschriebenen Weise. Bei der Möglichkeit, daß der Benutzer auswählt, welche nicht definierten Fragment-Terme 1003 er zu seinem Termspeicher 215 hinzufügen will, besteht ein Vorteil darin, daß eine Vorlage 1001 erstellt werden kann, die Fragment-Terme 1003 für verschiedene Anwendungen aufweist, und daß ein Benutzer nur die Fragment-Terme 1003 aus der Vorlage 1001 auswählen kann, die er fur seine spezielle Dokumentenerstellungsanwendung benötigt.
  • 28. Generierung eines Dokumentes 1111
  • Bei einer bevorzugten Ausführungsform geschieht die Generierung eines Dokumentes 1111 in zwei Schritten. Im ersten Schritt wird ein Skript erstellt, das Fragment-Terme 1003 für alle Fragmente 1002 enthält, die im Ausgangsdokument enthalten sein werden; der zweite Schritt ist die Generierung des Ausgangsdokumentes aus dem Skript.
  • Im ersten Schritt fordert ein Benutzer das auf Definitionen aufgebaute Expertensystem 202 auf, einen Text-Term 211 aufzulösen, der entweder ein Fragment-Term 1003 ist oder als eine Verkettung mit Fragment-Termen 1003 definiert ist. Das vom Expertensystem 202 verwendete allgemeine Verfahren zum Auflösen eines Terms ist in der Beschreibung der WHAT-Funktion (Was-Funktion) weiter oben im Abschnitt 7 beschrieben. Wenn der aufzulösende Term ein Fragment-Term 1003 ist, wendet die Term-Schlußfolgerungseinrichtung 219 eine WPT SOLVE-Funktion (WPT-Auflöse-Funktion) an. Die Term-Schlußfolgerungseinrichtung 219 leitet jeden Fragment-Term der Reihe nach der WPT SOLVE-Funktion zu, die den Fragment-Term 1003 in der Weise entwickelt, daß sie anhand von Bedingungen, die in der Definition des Fragment-Terms 1003 enthalten sind, bestimmt, ob der durch den Term repräsentierte Fragment-Text 1005 in das Ausgangsdokument zu übernehmen ist. Wenn ja, liefert die WPT SOLVE 1103 den entsprechend begrenzten Fragment-Term 1003 als Wert des Fragment-Terms 1003 an die WHAT-Funktion. Soll das Fragment übernommen werden, benutzt die WPT SOLVE 1103 den Fragment-Term 1003 zum Auffinden des Fragmentnamens 1113 in der Fragment-Term-Liste 1107, verwendet den Editor 1105 und den Fragmentnamen 1113, um den Fragment-Text 1005 in der Dokumentenvorlage 1001 zu finden, benutzt den Editor 1105, um jeden Misch-Term 1007 im Fragment-Text 1005 zu lokalisieren, und gibt jeden Misch-Term 1007 zur Entwicklung an die Schlußfolgerungseinrichtung 219. Die Schlußfolgerungseinrichtung 219 entwickelt den Term und hält beliebige externe Werte fest, die für seine Entwicklung benötigt werden, wie dies weiter oben in Abschnitt 7 beschrieben wurde.
  • Das Ergebnis der Ausführung der WHAT-Funktion ist das Skript. Im Skript sind die Fragment-Terme 1003 im Textwert begrenzt, so daß sie sich im Textwert von anderem Text unterscheiden, und sie erscheinen in der Reihenfolge, in welcher der Fragment-Text 1005 im Ausgangsdokument 1111 erscheinen wird. Wie allgemein bei den Ergebnissen der WHAT-Funktion, wird das Skript angezeigt. Die Anzeige des Skripts ist von Vorteil, weil sie einem Entwickler einer Vorlage 1001 einen Satz Termdefinitionen bezüglich der Vorlage 1001 ermöglicht, um die Richtigkeit der Termdefinitionen zu bestimmen, ohne daß ein Dokument 1111 erzeugt werden muß. Bei anderen Ausführungsformen kann ein Skript nicht angezeigt werden, der von WPT SOLVE der WHAT-Funktion zugeleitete Wert kann Text 1005 enthalten, in dem beliebige Misch-Terme 1007 durch ihre Werte ersetzt sind, und der der WHAT-Funktion zugeleitete Wert kann direkt an den Editor 1105 zur Übernahme in das erstellte Dokument 1111 ausgegeben werden.
  • Wenn die Schlußfolgerungseinrichtung 219 das Skript anzeigt, gibt sie dem Benutzer die Möglichkeit, ein erstelltes Dokument 1111 zu erzeugen; wenn der Benutzer diese Möglichkeit wahrnimmt, fragt die WPT SOLVE 1103 den Benutzer nach dem Namen des erstellten Dokuments 1111, benutzt den Editor 1105 zum Erzeugen des erstellten Dokuments 1111 und liest dann das Skript. Bei jedem Fragment-Term 1003 im Skript benutzt sie die FT-Liste 1107, um den entsprechenden Fragmentnamen 1113 zu erhalten, gibt den Fragmentnamen an den Editor 1105 zum Auffinden des Fragment-Textes 1005, benutzt den Editor 1105 zum Kopieren des Fragment-Textes 1005 aus der Vorlage 1001 in das erstellte Dokument 1111, benutzt dann den Editor 1105 zum Lesen des Fragment-Textes 1105 im erstellten Dokument 1111, bis ein Misch-Term 1007 gefunden wird, liest den Misch-Term 1007, veschafft sich den Wert des Misch-Terms 1007 aus der Schlußfolgerungseinrichtung 219, die ihn unter Verwendung der gespeicherten externen Werte neu berechnet, bestimmt anhand der MT-Liste 1109, ob der Wert des Misch-Terms mit Großbuchstaben zu schreiben ist, und benutzt den Editor 1105, um den Misch-Term 1007 durch den gespeicherten Wert zu ersetzen, dabei den ersten Buchstaben groß zu schreiben, falls die MT-Liste 1109 dies so angibt. Wenn der Misch-Term 1007 ein Fragment-Term 1003 ist, geht die WPT SOLVE 1103 in der Weise vor, wie gerade für das durch diesen Fragment-Term 1003 repräsentierten Fragment 1002 angegeben wurde.
  • 29. Einzelheiten der Implementierung der Vorlage 1001 und des Index 1006: Fig. 12 bis 14
  • Die bei der bevorzugten Ausführungsform verwendeten Dokumente entsprechen alle der vom WP+-Editor benutzten Dokumentenstruktur. Fig. 12 und 13 stellen die Merkmale der Dokumentenstruktur dar, die für die vorliegende Erfindung relevant sind. Eine weitergehende Beschreibung der Dokumentenstruktur ist in dem am 14.6.1988 an T. Wright erteilten US-Patent 4,751,740 mit dem Titel Apparatus, Method and Structure for Translating a Document Having One Structure into a Document Having Another Structure (Vorrichtung, Verfahren und Struktur zum Übertragen eines eine Struktur aufweisenden Dokumentes in ein eine andere Struktur aufweisendes Dokument) beschrieben. Von besonderer Relevanz sind die Patentteile in Spalte 13, Zeile 21 - Spalte 15, Zeile 9 - und Fig. 10. Das US-Patent 4,751,740 wird hierdurch zum Inhalt der vorliegenden Offenbarung erklärt. Wie in Fig. 12 zu erkenen, ist in der vom WP+-Editor verwendeten Dokumentenstruktur das Dokument durch einen Satz Blöcke dargestellt, die mit Blocknummern adressierbar sind. Alle Blöcke sind von derselben Größe, fallen aber in drei deutlich verschiedene Funktionsgruppen: administrative Blöcke, Indexblöcke und Textblöcke.
  • Die administrativen Blöcke erscheinen in Fig. 12 als Doc- Info-Blöcke 1201 und als Dokumententabelle 1203. Die Doc- Info-Blöcke 1201 enthalten Informationen über das durch die Struktur dargestellte Dokument, einschließlich eines Feldes 1209, das Tag und Uhrzeit der letzten Aufbereitung des Dokumentes angibt. Wie weiter oben beschrieben, wird dieses Feld bei der vorliegenden Erfindung zur Feststellung verwendet, ob eine Vorlage 1001 außerhalb des auf Definitionen aufgebauten Expertensystems 202 aufbereitet worden ist. Die Dokumententabelle 1203 enthält Zeiger 1205 zu einer Vielzahl Indexe; im vorliegenden Zusammenhang ist nur einer von Interesse, nämlich ein Namenindexzeiger 1207 zu einem Namenindex, der Namen mit Positionen von Textblöcken verbindet. Der Namenindex besteht aus einem oder mehreren Namenindexblöcken 1209, von denen in Fig. 12 nur einer dargestellt ist. Wenn mehr als einer erforderlich ist, werden Ketten und Bäume von Namenindexblöcken aufgebaut. Jeder Namenindexblock enthält Namenindexeinträge 1211, die in alphabetischer Reihenfolge geordnet sind. Von Interesse für die vorliegende Beschreibung sind die Einträge, die Fragmentnamen 1113 mit Positionen von Textblöcken verbinden.
  • Die Textblöcke enthalten den Text des Dokumentes. Jeder Textblock 1211 enthält einen Textteil 1213, in dem die den Text bildenden Zeichen gespeichert sind, und einen Attributteil 1215 mit Informationen über Positionen im Textteil 1213. In einer Vorlage 1001 enthält der Attributteil die Informationen, die angeben, daß eine Zeichenfolge im Textteil 1213 ein Fragment-Term 1003 oder ein Misch-Term 1007 ist. Die Textblöcke sind in einer doppelt verknüpften Textblockkette 1217 organisiert. In einer Vorlage 1001 stellt die Textblockkette 1217 die Fragmente 1002 dar; in der Kette 1217 sind zwei solcher Fragmente dargestellt. Der Anfang jedes Fragmentes 1002 kann mittels des Namenindex aufgefunden werden; der Fragmentname 1113 wird benutzt, um den Namenindexeintrag 1211 für den Namen 1113 aufzufinden, und der Blockzeiger zeigt auf den Block, mit dem die Kette beginnt. Wenn der Editor 1105 eine benannte Markierung erzeugt, teilt er Blöcke in der Textkette 1217 so auf, daß die durch die benannte Markierung bezeichriete Stelle das erste Zeichen im Text 1213 eines Textblockes 1211 ist. Der Editor 1105 enthält ferner spezielle Routinen, die Anwendungsprogrammen zum Speichern von Informationen aus Doc-Info-Blöcken 1201, zum Lesen von Zeichen und Attributen aus Textblöcken 1211, zum Schreiben von Zeichen und Attributen in Textblöcke 1211, zum Auffinden von benannten Positionen in der Textblockkette 1217 und zum Kopieren von Material in die Textblockkette 1217 und Löschen von Material aus der Textblockkette 1217 zur Verfügung stehen.
  • Fig. 13 zeigt ein Kurzanzeige-Attributwort 1301, nämlich die Art Attributwort, die in der Vorlage 1001 zum Anzeigen eines Fragment-Term- und eines Misch-Term-Attributs benutzt wird. Die Attributwörter für den Text im Text 1213 eines Textblocks 1211 sind im Attributbereich 1215 dieses Textblocks enthalten. Die Attributwörter sind in einer zum Text umgekehrten Reihenfolge gespeichert, d.h. Attribute, die für das erste Zeichen im Textteil 1213 gelten, stehen am Ende des Attributteils 1215. Wenn der Editor 1105 einen Textblock 1211 schreibt, fügt er Zeichen hinzu, indem er vom Anfang des Textes 1213 nach hinten arbeitet; er fügt Attribute für die Zeichen hinzu, indem er vom Ende der Attribute 1215 nach vorne geht; wenn zwischen dem Ende vom Text 1213 und dem Ende der Attribute 1215 kein Leerraum besteht, ist der Block voll. Wenn der Editor 1105 Text aus Text 1213 liest, liest er gleichzeitig die Attribute aus Attributen 1215 und stellt Codes bereit, die angeben, welche Attribute für das gerade gelesene Zeichen gelten. Das Attributwort 1301 hat vier Felder: ein Feld Typ, das die Art des vom Wort repräsentierten Attributs angibt; ein Feld Zusatztyp 1305, das zusätzliche Informationen bezüglich des Typs liefert; ein Feld Anfang, das in bezug auf den Text 1213 die Position des ersten Zeichens in einer Zeichenfolge angibt, für welches das Attribut gilt, und ein Feld Ende 1309, das in bezug auf den Text 1213 die Position des letzten Zeichens der Folge angibt. Bei einer bevorzugten Ausführungsform sind die Attribute für Fragment- Term und Mischterm durch verschiedene Werte im Typ-Feld 1303 angegeben. Durch die Benutzung der Informationen aus den Attributwörtern 1301 für die Fragment-Term- und Misch-Term-Attribute sind WPT DEF 1101 und WPT SOLVE 1103 in der Lage, festzustellen, ob eine Zeichenfolge in einem Fragment 1002 ein Fragment-Term oder ein Misch-Term ist, und das Ende eines Fragments zu erkennen.
  • Fig. 14 zeigt einzelne Einträge in den Komponenten des Index 1106. Im Index 1106 für eine bestimmte Vorlage 1001 gibt es einen einzigen Kontrollsatz 1108. Zwei Arten von Informationen sind enthalten: der Vorlagenamen 1401, welcher der Name der Dokumentenvorlage 1001 ist, zu der der Index 1106 gehört, und Zeitpunkt letzte Aufbereitung 1403, welche den Zeitpunkt angibt, in dem die WPT DEF 1101 die Dokumentenvorlage 1001, zu der der Index 1106 gehört, zuletzt geändert wurde. Für jedes Fragment in der Vorlage 1001 besteht ein Fragment-Term- Listeneintrag 1405. Wie weiter oben angegeben, ist die Liste als B-Baum organisiert, der einen raschen Zugriff auf Fragment-Term-Listeneinträge 1405 durch den Fragment-Term 1003 ermöglicht. Jeder Fragment-Term-Listeneintrag 1405 enthält einen Fragment-Term 1003 und einen Fragmentnamen 1113 für das Fragment 1002, das durch den Fragment-Term 1003 bezeichnet ist. Schließlich besteht für jeden Misch-Term 1007 in jedem Fragment 1002 der Vorlage 1001 ein Misch-Term-Listeneintrag 1407. Auch die Misch-Term-Liste ist als B-Baum organisiert, der einen raschen Zugriff auf Misch-Term-Listeneinträge 1407 für ein Fragment 1002 durch den Fragment-Term 1003 für das Fragment 1002 ermöglicht. Jeder Misch-Term-Listeneintrag 1407 enthält für das Fragment 1002, zu dem der Misch-Term 1007 gehört, einen Fragment-Term 1003, den Misch-Term 1007 und ein Großschreibungs-Flag 1409, das durch WPT DEF 1101 gesetzt wird und angibt, daß der erste Buchstabe des Wertes, der den Misch-Term 1007 ersetzt, wenn dieser aufgelöst wird, groß zu schreiben ist. Wie weiter oben angegeben, gibt der Benutzer der auf Definitionen aufgebauten Expertensystem-Schale 201 die Großschreibung des Wertes dadurch an, daß er den ersten Buchstaben des Misch-Terms groß schreibt. Die Misch-Term-Listeneinträge 1407 für einen bestimmten Fragment-Term 1003 sind in einer MT-Liste 1109 alphabetisch nach Misch-Term 1007 geordnet.
  • Die vorstehende zusätzliche Offenbarung hat gezeigt, wie ein Dokumenten-Erstellungssystem unter Anwendung des weiter oben in den Abschnitten 1 bis 22 offenbarten, auf Definitionen aufgebauten Expertensystems, des WP+-Editors und einer durch den WP+-Editor erzeugten Dokumentenvorlage 1001 entwickelt werden kann. Wenngleich das auf Definitionen aufgebaute Expertensystem 202, der WP+-Editor und die vom WP+-Editor benutzte Dokumentenstruktur alle besonders gut für die Implementierung der Erfindung geeignet sind, kann diese auch unter Benutzung anderer Expertensystem-Typen, anderer Editoren und anderer Dokumentenstrukturen implementiert werden. Insbesondere können andere als die hier offenbarten Techniken verwendet werden, um in der Vorlage 1001 Fragment- und Misch-Terme zu kennzeichnen, die Lokalisierung von Fragmenten in der Vorlage 1001 zu ermöglichen, und festzustellen, ob ein Fragmentoder ein Mischterm bereits definiert worden ist. Ferner kann bei einigen Ausführungsformen der Schritt der Skripterzeugung weggelassen werden, und die Auflösungsoperation kann zur sofortigen Ausgabe des erstellten Dokuments führen. Unter diesen Umständen sind die offenbarten Ausführungsformen in jeder Hinsicht als erläuternd und nicht als einschränkend zu verstehen; der Umfang der Erfindung ist durch die beigefügten Ansprüche statt durch die vorstehende Beschreibung angegeben, und alle Änderungen, die sich innerhalb des Auslegungs- und Äquivalenzbereiches der Ansprüche ergeben, sollen durch letztere abgedeckt sein.

Claims (8)

1. Dokumenten-Erstellungssystem zum Erstellen eines Ausgangsdokumentes (1111), mit
A) einer Dokumentenvorlage (1001), aus der das Ausgangsdokument (1111) erstellt wird,
B) einer Editiereinrichtung (1105) zum Aufbereiten der Dokumentenvorlage und des Ausgangsdokumentes (1111),
C) einer Expertensystem-Wissensbasis (215),
D) einer Expertensystem-Wissensbasis-Definitionseinrichtung (207), und
E) einer Expertensystem-Schlußfolgerungsmaschinen-Einrichtung (219, 1103, 11051 1106),
dadurch gekennzeichnet, daß
F) die Expertensystem-Wissensbasis (215) hierarchische Wissensbasis-Terme (1003, 1007) zu speichern vermag, die entweder undefiniert oder Abschnitten der Dokumentenvorlage zugeordnet sein können, wobei diese Abschnitte ferner andere Terme (1003, 1007) enthalten können;
G) die Definitionseinrichtung (207) für die Expertensystem- Wissensbasis hierarchische Wissensbasis-Terme (1003, 1007) als Reaktion auf erste Benutzereingaben (204, 206) zu definieren vermag und umfaßt:
eine Dokumentenabschnitt-Definitionseinrichtung (1101, 1106), die in Reaktion auf eine der ersten Benutzereingaben einen Dokumentenabschnitt-Wissensbasis-Term (1003) zu definieren vermag, der einem Abschnitt (1002) der Dokumentenvorlage zugeordnet ist, indem sie dem Benutzer die Editiereinrichtung zum Aufbereiten des Abschnitts (1002) bereitstellt und den aufbereiteten Abschnitt (1002) dem Dokumentenabschnitt-Wissensbasis-Term (1003) in der Wissensbasis zuordnet, und
H) die Expertensystem-Schlußfolgerungsmaschinen-Einrichtung (219, 1103, 1105, 1106) Expertenantworten (1005, 1117) in Reaktion auf zweite Benutzereingaben (217, 225, 227) und Wissensbasis-Terme (1003, 1007) bereitstellt und umfaßt:
eine Ausgangsdokumenten-Erstellungseinrichtung (1105), die in Reaktion auf einen Dokumentenabschnitt-Wissensbasis-Term (1003) die Editiereinrichtung (1105) verwendet, um den dem Dokumentenabschnitt-Wissensbasis-Term (1003) zugeordneten Dokumentenabschnitt (1005) dem Ausgangsdokument (1111) bereitzustellen, wenn der Dokumentenabschnitt-Wissensbasis-Term (1003) und die zweiten Benutzereingaben (217, 225, 227) es so erfordern,
I) derart, daß eine hierarchische Wissensbasis aufgebaut werden kann durch Wechselwirkung zwischen der Expertensystem-Wissensbasis-Definitionseinrichtung (207) und dem Benutzer, bei der ein Term (1003, 1007) als Textabschnitt definiert werden kann und dieser Textabschnitt selbst weitere Terme (1003, 1007) enthalten kann.
2. Dokumenten-Erstellungssystem nach Anspruch 1, bei dem
die Editiereinrichtung (1105) eine Einrichtung (1006) zum Identifizieren einer Textfolge (1006, 1215) in einem Dokumentenabschnitt (1002) als Term (1003) enthält, der einen durch die Expertensystem-Schlußfolgerungsmaschinen-Einrichtung (219, 1103) rückübertragenen Wert (1005, 1007) darstellt, und
die Ausgangsdokumenten-Erstellungseinrichtung (1103, 1105) den identifizierten Term (1003) im bereitgestellten Dokumentenabschnitt (1002) feststellt, den identifizierten Term der Schlußfolgerungsmaschine bereitstellt, den Wert (1005, 1007) des identifizierten Terms von der Schlußfolgerungsmaschine empfängt und den empfangenen Wert an Stelle vom identifizierten Term an das Ausgangsdokument (1111) ausgibt.
3. Dokumenten-Erstellungssystem nach Anspruch 1, bei dem
die Wissensbasis (215) einen hierarchisch definierten Satz Terme (301, 1003) und ihre Definitionen (305, 1002) umfaßt,
wobei die entsprechende Definition jedes Terms (305) ihren zugehörigen Term unter Benutzung des Wertes (213(A)-(B), 1005, 1007) von einem oder mehreren Termen, von deren Definitionen jede auf einer niedrigeren Hierarchiestufe (307, 309, 311) liegt, und/oder unter Benutzung eines oder mehrerer term-unabhängiger Werte (213(C)-(E), 225) definiert, die nicht vom Wert eines Terms abhängen.
4. Dokumenten-Erstellungssystem nach Anspruch 3, bei dem
die Editiereinrichtung (1101, 1103, 1105) Einrichtungen (1201, 1203, 1205, 1209, 1003) zum Identifizieren einer Textfolge (1006, 1007, 1213, 1215) in einem Dokumentenabschnitt (1002, 1217) als Term (301, 1003) umfaßt,
die Dokumentenabschnitt-Term-Definitionseinrichtung (207, 1101) den identifizierten Term (301, 1003) im Dokumentenabschnitt (1002) feststellt und den festgestellten Term der Wissensbasis-Definitionseinrichtung (207, 1101) bereitstellt,
die Wissensbasis-Definitionseinrichtung (1101) auf den festgestellten Term (301, 1003) durch die Bestimmung reagiert, ob für den festgestellten Term eine Definition (305, 1003, 1201) in der Wissensbasis (215) vorhanden ist, und, wenn nicht, durch die Anforderung von ersten Benutzereingaben (206) durch den Benutzer und durch ihnen entsprechendes Definieren des festgestellten Terms (301, 1003), und
die Ausgangsdokumenten-Erstellungseinrichtung (1103, 1105) den identifizierten Term (301, 1003) in dem bereitgestellten Dokumentenabschnitt (1002) feststellt, den identifizierten Term der Schlußfolgerungsmaschine (219, 1101) bereitstellt, den Wert (213(A)-(B), 1005, 1007, 1213, 1215) des identifizierten Terms von der Schlußfolgerungsmaschine (219, 1103) empfängt, und den empfangenen Wert (1005, 1007) an Stelle vom identifizierten Term (301, 1003) an das Ausgangsdokument (1111) ausgibt.
5. Dokumenten-Erstellungssystem nach Anspruch 4, bei dem die Dokumentenabschnitt-Definitionseinrichtung Einrichtungen (1209, 1217) umfaßt, damit ein identifizierter Term (301, 1003, 1201) auf einen anderen Abschnitt (1002) der Dokumentenvorlage verweist.
6. Dokumenten-Erstellungssystem nach Anspruch 3, bei dem
die Dokumentenabschnitt-Term-Definitionseinrichtung (207, 1101, 1105) Einrichtungen zum Schaffen einer vom Wert des Dokumentenabschnitt-Teils (1215) der Definition (305, 1201, 1217) des Dokumentenabschnitt-Terms (1003) abhängigen Bedingung umfaßt, und
die Schlußfolgerungsmaschinen-Einrichtung den Wert (1007) des anderen Teils (1215) berechnet und die Ausgangsdokumenten-Erstellungseinrichtung (219, 1101, 1105) veranlaßt, den Wert (1107) des Dokumentenabschnitt-Term-Teils (1215) nur zu beschaffen, wenn die Bedingung erfüllt ist.
7. Dokumenten-Erstellungssystem nach Anspruch 3, bei dem
die Editiereinrichtung (1105, 1103) zusätzlich die Dokumentenvorlage (1001) unabhängig von der Dokumentenabschnitt- Term-Definitionseinrichtung (207, 1101) aufbereitet und zum Identifizieren einer Textfolge (1005, 1007, 1217) im Dokumentenabschnitt (1002) eine erste Identifiziereinrichtung (1113) verwendet, und
die Dokumentenabschnitt-Term-Definitionseinrichtung (207, 1101) zusätzlich den Dokumentenabschnitt-Term-Teil (1213) im Dokumentenabschnitt (1002, 1217) mittels der ersten Identifiziereinrichtung (1113) feststellt und darauf durch Definieren des Dokumentenabschnitt-Terms (1003, 1201) in der Wissensbasis (215) mit einem Wert (1105) und durch Zuordnen des Wertes (1005) zum definierten Dokumentenabschnitt-Term (1063) reagiert.
8. Dokumenten-Erstellungssystem nach Anspruch 7, bei dem
die Editiereinrichtung (1105, 1103) zusätzlich eine zweite Identifiziereinrichtung (1215) zum Identifizieren einer Textfolge (1005, 1217) in einem Dokumentenabschnitt (1002) als mit einem zweiten Wert (1007) statt einem ersten, dem Dokumentenabschnitt-Term (1003, 1113) zugeordneten Wert (1005) behaftet verwendet,
die Dokumentenabschnitt-Term-Definitionseinrichtung (207, 1101) den identifizierten anderen Wert (1007) im Dokumentenabschnitt (1002) mittels der zweiten Identifiziereinrichtung (1215) feststellt und den festgestellten anderen Wert (1007) der Wissensbasis-Definitionseinrichtung (207, 1101) bereitstellt,
die Wissensbasis-Definitionseinrichtung (207, 1101) auf den festgestellten zweiten Wert (1007) durch Bestätigen des Vorhandenseins des Wertes in der Wissensbasis (1215) und bei Nichtvorhandensein durch Anfordern erster Benutzereingaben (206) durch den Benutzer und durch ihnen entsprechendes Definieren des zweiten Wertes (1007) reagiert, und
die Ausgangsdokumenten-Erstellungseinrichtung (219, 1101, 1105) den identifizierten zweiten Wert (1007) im Dokumentenabschnitt (1002, 1217) mittels der zweiten Identifiziereinrichtung (1215) feststellt, den identifizierten zweiten Wert (1007) der Schlußfolgerungsmaschine (219, 1103) bereitstellt, den zweiten Wert (1007) von der Schlußfolgerungsmaschine (219) empfängt, und den empfangenen zweiten Wert an Stelle vom ersten Wert (1005) an das Ausgangsdokument (1111) ausgibt.
DE69030815T 1989-06-05 1990-04-03 Apparat und verfahren zur erzeugung von dokumenten Expired - Fee Related DE69030815T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/371,434 US4967368A (en) 1985-08-16 1989-06-05 Expert system with knowledge base having term definition hierarchy
PCT/US1990/001776 WO1990015392A1 (en) 1989-06-05 1990-04-03 Document generation apparatus and methods

Publications (2)

Publication Number Publication Date
DE69030815D1 DE69030815D1 (de) 1997-07-03
DE69030815T2 true DE69030815T2 (de) 1998-02-05

Family

ID=23463984

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69030664T Expired - Fee Related DE69030664T2 (de) 1989-06-05 1990-01-10 Expertensystem
DE69030815T Expired - Fee Related DE69030815T2 (de) 1989-06-05 1990-04-03 Apparat und verfahren zur erzeugung von dokumenten

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69030664T Expired - Fee Related DE69030664T2 (de) 1989-06-05 1990-01-10 Expertensystem

Country Status (7)

Country Link
US (1) US4967368A (de)
EP (2) EP0481995B1 (de)
JP (2) JPH04505518A (de)
AU (2) AU648981B2 (de)
CA (2) CA2012533C (de)
DE (2) DE69030664T2 (de)
WO (2) WO1990015389A1 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1311852C (en) * 1987-01-09 1992-12-22 James R. Allard Knowledge acquisition tool for automated knowledge extraction
US5018075A (en) * 1989-03-24 1991-05-21 Bull Hn Information Systems Inc. Unknown response processing in a diagnostic expert system
US5195173A (en) * 1989-12-29 1993-03-16 Ail Systems, Inc. Integrated multi-visual expert system maintenance advisor
US5819248A (en) * 1990-12-31 1998-10-06 Kegan; Daniel L. Persuasion organizer and calculator
DE69227562T2 (de) * 1991-09-11 1999-04-22 Hewlett Packard Co Datenverarbeitungssystem und Verfahren zur automatischen Durchführung von prioritisierten pflegerischen Diagnosen durch Auswertung von Patientendaten
US5724091A (en) 1991-11-25 1998-03-03 Actv, Inc. Compressed digital data interactive program system
US5377103A (en) * 1992-05-15 1994-12-27 International Business Machines Corporation Constrained natural language interface for a computer that employs a browse function
US5448722A (en) * 1993-03-10 1995-09-05 International Business Machines Corporation Method and system for data processing system error diagnosis utilizing hierarchical blackboard diagnostic sessions
US5644686A (en) * 1994-04-29 1997-07-01 International Business Machines Corporation Expert system and method employing hierarchical knowledge base, and interactive multimedia/hypermedia applications
US5632007A (en) 1994-09-23 1997-05-20 Actv, Inc. Interactive system and method for offering expert based interactive programs
US5682196A (en) 1995-06-22 1997-10-28 Actv, Inc. Three-dimensional (3D) video presentation system providing interactive 3D presentation with personalized audio responses for multiple viewers
US6021404A (en) * 1997-08-18 2000-02-01 Moukheibir; Nabil W. Universal computer assisted diagnosis
US5901068A (en) * 1997-10-07 1999-05-04 Invention Machine Corporation Computer based system for displaying in full motion linked concept components for producing selected technical results
US6529893B1 (en) * 1999-02-26 2003-03-04 Mandel Foner Expert diagnostic system with inference generator
GB2355817A (en) * 1999-07-12 2001-05-02 St John S Registration Ltd Generating customised documents
GB9920661D0 (en) 1999-09-01 1999-11-03 Ncr Int Inc Expert system
GB9920662D0 (en) * 1999-09-01 1999-11-03 Ncr Int Inc Expert system
US6311150B1 (en) * 1999-09-03 2001-10-30 International Business Machines Corporation Method and system for hierarchical natural language understanding
US8036866B1 (en) * 2000-06-16 2011-10-11 Baker Hughes Incorporated Case-based drilling knowledge management system
AU2000262161A1 (en) * 2000-07-17 2002-01-30 Morgan Stanley Dean Witter And Co. Object-oriented document assembly system
US6915506B2 (en) * 2001-03-27 2005-07-05 International Business Machines Corporation Method and apparatus for evaluating results of multiple software tools
WO2003027894A1 (en) * 2001-09-26 2003-04-03 The Trustees Of Columbia University In The City Of New York System and method of generating dictionary entries
GB2384580A (en) * 2001-12-14 2003-07-30 Empiricom Technologies Ltd Knowledge acquisition in expert systems
EP1329817A1 (de) 2002-01-21 2003-07-23 Business Integrity Limited System und Verfahren zur Generierung von Dokumenten
US7472343B2 (en) 2002-05-10 2008-12-30 Business Integrity Limited Systems, methods and computer programs for analysis, clarification, reporting on and generation of master documents for use in automated document generation
JP2004139312A (ja) * 2002-10-17 2004-05-13 Olympus Corp 診断レポート作成システム、診断レポート作成方法、及びプログラム
US9043265B2 (en) 2006-09-21 2015-05-26 Aebis, Inc. Methods and systems for constructing intelligent glossaries from distinction-based reasoning
US7945527B2 (en) * 2006-09-21 2011-05-17 Aebis, Inc. Methods and systems for interpreting text using intelligent glossaries
US8321205B2 (en) * 2008-01-02 2012-11-27 Stuart Allen Garrie Definitional method to increase precision and clarity of information
US10175844B2 (en) 2012-08-24 2019-01-08 Ricky Steven Pionkowski Interface environment for capturing and storing information in a document

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3716840A (en) * 1970-06-01 1973-02-13 Texas Instruments Inc Multimodal search
US3715730A (en) * 1970-06-01 1973-02-06 Texas Instruments Inc Multi-criteria search procedure for trainable processors
US4286330A (en) * 1976-04-07 1981-08-25 Isaacson Joel D Autonomic string-manipulation system
US4290114A (en) * 1976-07-01 1981-09-15 Sinay Hanon S Medical diagnostic computer
US4454576A (en) * 1981-05-18 1984-06-12 International Business Machines Corporation Report preparation
JPS5947627A (ja) * 1982-09-10 1984-03-17 Brother Ind Ltd テキスト処理装置
US4599692A (en) * 1984-01-16 1986-07-08 Itt Corporation Probabilistic learning element employing context drive searching
US4649515A (en) * 1984-04-30 1987-03-10 Westinghouse Electric Corp. Methods and apparatus for system fault diagnosis and control
US4930071A (en) * 1987-06-19 1990-05-29 Intellicorp, Inc. Method for integrating a knowledge-based system with an arbitrary database system

Also Published As

Publication number Publication date
AU648253B2 (en) 1994-04-21
AU5049590A (en) 1991-01-07
AU648981B2 (en) 1994-05-12
DE69030664T2 (de) 1997-12-11
DE69030815D1 (de) 1997-07-03
CA2057857A1 (en) 1990-12-06
AU5550890A (en) 1991-01-07
EP0475964B1 (de) 1997-05-28
US4967368A (en) 1990-10-30
DE69030664D1 (de) 1997-06-12
EP0481995A1 (de) 1992-04-29
EP0481995A4 (en) 1993-01-27
EP0475964A1 (de) 1992-03-25
CA2012533C (en) 1999-11-30
EP0481995B1 (de) 1997-05-07
CA2012533A1 (en) 1990-12-05
CA2057857C (en) 2000-06-13
WO1990015392A1 (en) 1990-12-13
JPH04505518A (ja) 1992-09-24
WO1990015389A1 (en) 1990-12-13
JPH04505227A (ja) 1992-09-10

Similar Documents

Publication Publication Date Title
DE69030815T2 (de) Apparat und verfahren zur erzeugung von dokumenten
DE3650417T2 (de) Informationsaufzeichnungs- und Wiederauffindungssystem.
DE69530816T2 (de) Textbearbeitungssystem und Verfahren unter Verwendung einer Wissensbasis
DE68928693T2 (de) Verfahren zur Behandlung von digitalen Textdaten
DE3855696T2 (de) Relationelles Datenbanksystem
DE10135445B4 (de) Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage
DE19709968C2 (de) Verfahren und System zum Übersetzen eines Dokumentes
DE60011479T2 (de) Xml-roboter
DE69031078T2 (de) Rechnerunterstützte softwareentwicklungseinrichtung
DE69934371T2 (de) Apparat und Verfahren zum Verarbeiten einer natürlichen Sprache
DE69822687T2 (de) Vorrichtung und Verfahren zur Zusammenfassung
DE10162156B4 (de) Die Benutzernavigation durch Multimedia-Dateiinhalte unterstützendes System und Verfahren
EP1311989B1 (de) Verfahren zur automatischen recherche
DE4216893C2 (de) Dateneingabeverfahren
DE3782447T2 (de) Dokumentverarbeitungsapparat.
DE19705955A1 (de) Verfahren zum Generieren einer Implementierung eines Workflow-Prozessmodells in einer Objektumgebung
DE3485999T2 (de) Hochgeschwindigkeitverarbeitungssystem fuer rechneranlage.
DE69026885T2 (de) Dynamische Selektion von Datenformaten für rekursiv geschachtelte logische Elemente
DE69909614T2 (de) Sich selbst manipulierende bäume verwendende rechenarchitektur
DE19959765B4 (de) Datei-Editor für mehrere Datenuntermengen
EP2425331A1 (de) Verfahren zur erzeugung mindestens einer anwendungsbeschreibung
DE60101668T2 (de) Verfahren und gerät zum erzeugen eines auf einer formatvorlage basierten index für ein strukturiertes dokument
DE69907714T2 (de) Komponentbasiertes quellcodegeneratorverfahren
DE60310881T2 (de) Methode und Benutzerschnittstelle für das Bilden einer Darstellung von Daten mit Meta-morphing
EP1920357A1 (de) Migration und transformation von datenstrukturen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee