Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6081798
Johnson , ; et al.
June 27, 2000
Title
Object oriented case-based reasoning framework mechanism
Abstract
A framework for use with object-oriented programming systems provides a case-based reasoning (CBR) system shell that permits a framework user to develop a case base having case histories and generates a case-based reasoning system that receives user requests for query solutions and produces a query solution that can be incorporated into the case base. The framework includes a Session component that controls processing of the CBR system, a Control Flow component that manages the extension of the categories and classes of the OO framework, a Data Store component that stores persistent case structure definitions, case instances, and a change log, a Presentation component that manages the user interface to the CBR system user, and a Query Engine that evaluates a received query against the case base. The case definitions and case base descriptions comprise a set of object oriented classes that are organized into an inheritance hierarchy. Also disclosed is a case-based reasoning system that permits dynamic adjustment of property weights in either object oriented programming implementations or procedural programming implementations. This permits users to control which properties and weights are used and whether missing items should penalize case matching.
Inventors:
Johnson; Verlyn Mark
(Wykoff,
MN
)
, Koski; Dennis Dale
(Rochester,
MN
)
, Shore; Thomas Alan
(Rochester,
MN
)
Assignee:
International Business Machines Corp.
(Armonk,
NY
)
Appl. No.:
639322
Filed:
April 24, 1996
Current U.S. Class:
706/54
706/60
706/53
Field of Search:
395/75,50,62,76,51 706/54,59,60,53
U.S. Patent Documents
4531186
July 1985
Knapman
4943932
July 1990
Lark et al.
5020019
May 1991
Ogawa
5057996
October 1991
Cutler et al.
5101364
March 1992
Davenport et al.
5119469
June 1992
Alkon et al.
5119475
June 1992
Smith et al.
5181162
January 1993
Smith et al.
5195172
March 1993
Elad et al.
5222195
June 1993
Alkon et al.
5226161
July 1993
Khoyi et al.
5247693
September 1993
Bristol
5249270
September 1993
Stewart et al.
5251131
October 1993
Masand et al.
5257384
October 1993
Farrand et al.
5261080
November 1993
Khoyi et al.
5263159
November 1993
Mitsui
5274572
December 1993
O'Neill et al.
5276775
January 1994
Meng
5287447
February 1994
Miller et al.
5289563
February 1994
Nomoto et al.
5293470
March 1994
Birch et al.
5297283
March 1994
Kelly, Jr. et al.
5315703
May 1994
Matheny et al.
5317677
May 1994
Dolan et al.
5367633
November 1994
Matheny et al.
5369766
November 1994
Nakano et al.
5377309
December 1994
Sonobe et al.
5379430
January 1995
Nguyen
5388264
February 1995
Tobias, II et al.
5390325
February 1995
Miller
5396626
March 1995
Nguyen
5398336
March 1995
Tantry et al.
5404514
April 1995
Kageneck et al.
5412756
May 1995
Bauman et al.
5418951
May 1995
Damashek
5555201
September 1996
Dangelo et al.
5555370
September 1996
Li et al.
Foreign Patent Documents
94305866
Aug., 1994
EP
Other References
T Yamaguti et al., "Legal Knowledge Acquisition Using Case-Based Reasoning and Model Inference," Proceedings of the Fourth International Conference on Artificial Intelligence and Law, Dec. 1993, pp. 212-217. .
R. Bergmann et al., "Explanation-based Similarity for Case Retrieval and Adaptation and its Application to Diagnosis and Planning Tasks," European Workshop on Case-Based Reasoning, Springer, Dec. 1993, pp. 182-196. .
Text of IBM Technical Disclosure Bulletin, vol. 37, DeBinder et al., Feb. 1994, "Results Folder Framework", pp. 431-432. .
Text of IBM Technical Disclosure Bulletin, vol. 36, Coskun, N., Jun. 1993, "Persistent Framework Independent Record/Playback Framework", pp. 261-264. .
Text of IBM Technical Disclosure Bulletin, Baker et al., Oct. 1991, "Model View Schema", pp. 321-322. .
Text of IBM Technical Disclosure Bulletin, Baker et al., Oct. 1991, "Office Container Class", pp. 309-310. .
Text of IBM Technical Disclosure Bulletin, Cavendish et al., Jul. 1991, "Icon Pane Class", pp. 118-119. .
Text of IBM Technical Disclosure Bulletin, Baker et al., Jun. 1991, "Distribution List Class", p. 159. .
Text of IBM Technical Disclosure Bulletin, Cavendish et al., Jun. 1991, "Object-Oriented Documentation Tool", pp. 50-51. .
Text of IBM Technical Disclosure Bulletin, Allard et al., Feb. 1990, "Object-Oriented Programming in C--the Linnaeus System", pp. 437-439. .
Text of IBM Technical Disclosure Bulletin, vol. 38, No. 1, Jan. 1995, pp. 411-414, J. Knapman "Generating Specific Server Programs in Distributed Object-Oriented Customer Information Control System". .
Text of IBM Technical Disclosure Bulletin, vol. 37, No. 12, Dec. 1994, pp. 19-20, Al-Karmi et al., "Events Set for Event Tracing in Distributed Object-Oriented Systems". .
Text of IBM Technical Disclosure Bulletin, vol. 37, No. 12, Dec. 1994, pp. 375-378, Acker et al., "Automatically Generating Formatted Documentation for Object-Oriented Class Libraries". .
Text of IBM Technical Disclosure Bulletin, vol. 37, No. 11, Nov. 1994, pp. 71-72, Behrs et al., "Device Support Framework to Support ISO DPA 10175 and POSIX 1387.4". .
Text of IBM Technical Disclosure Bulletin, vol. 37, No. 7, Jul. 1994, pp. 145-146, Banda et al., "Exception Management Algorithm for Multi-Threaded Method Invocation". .
Text of IBM Technical Disclosure Bulletin, vol. 37, No. 6B, Jun. 1994, pp. 553-556, Gest et al., "Portable Object-Oriented Event Manager". .
Abstract for WIPO Patent Application No. WO 95/04966, F.T. Nguyen, Feb. 16, 1995, "Automatic Management of Components in Object-Oriented System". .
Abstract for U.S. Patent No. 5,388,264, Milne et al., Feb. 7, 1995, "Object-Oriented Framework System for Enabling Multimedia Presentations with Routing and Editing of MIDI Information". .
Abstract for WIPO Patent Application No. WO 94/23364, Heninger et al., Oct. 13, 1994, "Framework Processing Apparatus for Application Software". .
Abstract for U.S. Patent No. 5,369,766, Heninger et al., Nov. 29, 1994, "Object Oriented Application Processing Apparatus". .
Abstract for WIPO Patent Application No. 94/19752, Anderson et al., Sep. 1, 1994, "Concurrent Framework Processing Apparatus For Two or More Users". .
Abstract for WIPO Patent Application No. 94/19751, Anderson et al., Sep. 1, 1994, "Concurrent Framework Processing Apparatus For Application Users". .
Abstract for WIPO Patent Application No. 94/19740, Goldsmith et al., Sep. 1, 1994 "Framework Processor of Object-Oriented Application". .
Abstract for WIPO Patent Application No. 94/15286, Goldsmith et al., Jul. 7, 1994, "Object-Oriented Framework for Object Operating System". .
Abstract for WIPO Patent Application No. 94/15282, Anderson et al., Jul. 7, 1994, "Dialog System Object-Oriented System Software Platform". .
Abstract for WIPO Patent Application No. 94/15281, Anderson et al., Jul. 7, 1994, "Atomic Command Object-Oriented System Software Platform". .
Abstract from WIPO Patent Application No. WO 9415285, Jul. 7, 1994, "Object-Oriented Notification Framework System", D.R. Anderson et al. .
Abstract for U.S. Patent No. 5,119,475, Schoen et al., Jun. 2, 1992, "Object-Oriented Framework for Menu Definition". .
Abstract for WIPO Patent Application No. 95/01610, Koko et al., Jan. 12, 1995, "Object Oriented Product Structure Management in Computer-Aided Product Design". .
Abstract for WIPO Patent Application No. 95/02219, Helgeson et al., Jan. 19, 1995, "Distributed Computation Based on Movement, Execution and Insertion of Processes in Network". .
Abstract for EPO Patent No. 619544, S. Danforth, Oct. 12, 1994, "Language-Neutral Object-Oriented Programming". .
Inspec Abstract No. C9504-7460-043, Sells et al., Jul. 1994, "Implementation of the Architecture for a Time-Domain Dynamical System Simulation in a Very High-Level Pictorial Object-Oriented". .
Inspec Abstract No. C9504-7460-042, Coleman et al., Jul. 1994, "An End-To-End Simulation of A Surveillance System Employing Architecture Independence, Variable Fidelity Components and Software Reuse". .
Inspec Abstract No. C9503-6140D-045, Satoh et al., Nov. 1994, "Process Algebra Semantics for a Real Time Object Oriented Programming Language". .
Inspec Abstract No. C9501-7160-020, C. Le Pape, Nov. 1993, "The Cost of Genericity: Experiments With Constraint-Based Representations of Time-Tables". .
Inspec Abstract No. C9501-6140D005, S. Vinoski, Sep. 1994, "Mapping CORBA IDL Into C++". .
Inspec Abstract No. C9501-7330-007, Salminen et al., Oct. 1994, "Modeling Trees Using an Object-Oriented Scheme". .
Inspec Abstract No. C9412-6110B-221, Berghel et al., Mar. 1992, "A Generic Object-Oriented Concurrency Mechanism for Extensibility and Reuse of Synchronization Components". .
Inspec Abstract No. B9412-6210Q-016, from Qingzhong et al., Mar. 1992, "An Object-Oriented Model for Intelligent Networks". .
Inspec Abstract No. C9412-7810-003, from Jung et al., Oct. 1993, "Development of an Object-Oriented Anthropometric Database for an Ergonomic Man Model". .
Inspec Abstract No. C9412-6110J-014 from Griss et al., Nov. 1994, "Object-Oriented Reuse". .
Inspec Abstract No. C9411-6130B-108, from Mili et al., Aug. 1992, "Building a Graphical Interface for a Reuse-Oriented CASE Tool". .
Inspec Abstract No. C9411-7100-029 from C. Le Pape, Dec. 1994, "Implementation of Resource Constraints in ILOG Schedule: A Library for the Development of Constraint-Based Scheduling Systems". .
Inspec Abstract No. C9411-6115-035 from Mili et al., Jul. 1991, "SoftClass: An Object-Oriented Tool for Software-Reuse". .
Inspec Abstract No. C9410-6180G-015, from Eichelberg et al., Sep. 1993, "Integrating Interactive 3D-Graphics into an Object-Oriented Application Framework". .
Inspec Abstract No. B9409-6210M-025, from Hellemans et al., Apr. 1994, "An Object-Oriented Approach to Dynamic Service Descriptions". .
Inspec Abstract No. C9409-6180-059, from Wang et al., Aug. 1993, "A Framework for User Customization". .
Inspec Abstract No. C9408-6110B-016, from Chen et al., May 1994, "An .
Experimental Study of Using Reusable Software Design Frameworks to Achieve Software Reuse". .
Inspec Abstract No. C9408-7420-021, from Pirklbauer et al., May 1994, "Object-Oriented Process Control Software". .
Inspect Abstract No. C9408-6110J-011 from Gyu-Chung, Hau, et al., Dec. 1993, "System Methodologies of Object-Oriented Programs". .
Inspec Abstract No. C9407-7420D-045, from Desai et al., Mar. 1994, "Controller Structure Definition Via Intelligent Process Control". .
Inspec Abstract No. C9407-6140D-014, from Satoh et al., May 1994, "Semantics for a Real-Time Object-Oriented Programming Language". .
Inspec Abstract No. C9406-6150N-015, from Schmidt et al., Mar. 1994, "The Service Configurator Framework: An Extensible Architecture for Dynamically Configuring Concurrent, Multi-Service Network Daemons". .
Inspec Abstract No. C9405-6180G-031, from Woyak et al., Mar. 1993, "A Motif-Like Object-Oriented Interface Framework Using PHIGS". .
Inspec Abstract No. C9504-6130B-049, from A. van Dam, Oct. 1993, "VR as a Forcing Function: Software Implications of a New Paradigm". .
Inspec Abstract No. C9504-6140D-024, from Sheffler et al., Feb. 1995, "An Object-Oriented Approach to Nested Data Parallelism". .
Inspec Abstract No. C9503-6110B-045, from Rosiene et al., Mar. 1994, "A Data Modeling Framework for Queueing Network Models". .
Inspec Abstract No. B9503-8110B-023, from Mautref et al., Sep. 1994, "An Object-Oriented Framework for the Development of Interactive Decision Support Systems". .
Inspec Abstract No. C9502-7160-026, from Menga et al., Oct. 1994, "An Object-Oriented Framework for Enterprise Modelling". .
Inspec Abstract No. C9502-6130G-006, "Support for Enterprise Modelling in CSCW", P. Hennessy et al., Aug. 1994. .
Inspec Abstract No. C9502-7810C-058, from Lin et al., Dec. 1993, "Can CAL Software Be More Like Computer Games?". .
Inspec Abstract No. C9501-6115-039, from Elia et al., Nov. 1993, "G++: An Object Oriented Environment for Developing Distributed Applications". .
Inspec Abstract No. C9412-7330-186 from Righter et al., Oct. 1994, "An Object-Oriented Characterization of Spatial Ecosystem Information". .
Inspec Abstract No. C9412-6160J-025 from J. Iivari, Dec. 1994, "Object-Oriented Information Systems Analysis: A Comparison of Six Object-Oriented Analysis Methods". .
Inspec Abstract No. C9412-6110J-006, from Lau et al., Oct. 1993, "Using SOM for Tool Integration". .
Inspec Abstract No. C9411-6160J-001, from Odberg et al., Sep. 1992, "A Framework for Managing Schema Versioning in Object-Oriented Databases". .
Inspec Abstract No. C9406-6115-048, Aug. 1993, "Constructing Multi-View Editing Environments Using MViews". .
Inspec Abstract No.4664213, "Maintaining Information about Persistent Replicated Objects in a Distributed System"., 1993 IEEE Conference on Distributed Computing Systems, May 1993. .
Inspec Abstract No. C9406-6110J-029, "A Comparison of Object-Oriented Analysis and Design Methods,", Proceedings of C++ World 1993, Feb. 1993. .
Inspec Abstract No. C9406-0310F-011, 1993, "Cost-Benefit Analysis of Object-Oriented Technology", Feb. 1993. .
Inspec Abstract No. C9406-6110J-009, from, J.D. Grimes, "Objects 101--An Implementation View", Proceedings of Compcon '94, Feb. 1994. .
Inspec Abstract No. 4647921, from Uhorchak et al., Mar. 1993, "An Object-Oriented Class Library for Creating Engineering Graphs Using PHIGS". .
Inspec Abstract No. 4642214, from, Marshall et al., May 1992, "Using VDM Within an Object-Oriented Framework". .
Inspec Abstract No. 4626386, from Arora et al., Nov. 1993, "Building Diverse Environments with PCTE Workbench". .
Inspec Abstract No. 4622794, from Campbell et al., Dec. 1993, "A Technique for Documenting the Framework on an Object-Oriented System". .
Inspec Abstract No. 4618974, from Bowers, Dec. 1993, "Some Principles for the Encapsulation of the Behaviour of Aggregate Objects". .
Inspec Abstract No. 461931, from, Islam et al., Sep. 1993, "Uniform Co-Scheduling Using Object-Oriented Design Techniques". .
Inspec Abstract No. 4613481, from Thieme et al., Jun. 1993, "Schema Integration in Object-Oriented Databases". .
Inspec Abstract No. 4603430, from G. Booch, Feb. 1994, "Designing an Application Framework". .
Inspec Abstract No. 4596323, from Frank et al., Mar. 1993, "An Integrated Environment for Designing Object-Oriented Enterprise Models". .
Inspec Abstract No. 4593721, Periyasamy et al, Oct. 1993, "A Formal Framework for Design and Verification of Robotic Agents". .
Inspec Abstract No. 4588839, from L. Fisher, Oct. 1992, "Constructing a Class Library for Microsoft Windows". .
Inspec Abstract No. 4588834, from G. Olander, Oct. 1992, "Chembench: Redesign of a Large Commercial Application Using Object-Oriented Techniques". .
Inspec Abstract No. 4566447, from J. Rossazza, Nov. 1992, "An Object-Centered Fuzzy Representation". .
Inspec Abstract No. 4565630, from Karpovich et al., Jul. 1993, "A Parallel Object-Oriented Framework for Stencil Algorithms". .
Inspec Abstract No. C9402-6150G-002, from Bruegge et al., Sep. 1993, "A Framework for Dynamic Program Analyzers". .
Inspec Abstract No. 4550414, from Parrish et al., Nov. 1993, "Automated Flow Graph-Based Testing of Object-Oriented Software Modules". .
Inspec Abstract No. 4540729, from Bailes et al., "The ecology of Class Refinement", Jan. 1991. .
Inspec Abstract No. 4534334, from Campbell et al., Sep. 1992, "A Technique from Documenting the Framework of an Object-Oriented System". .
Inspec Abstract No. 4534330, from Istavrinos et al., Sep. 1992, "Experiences with an Object-Oriented Mapper for Coherent Distributed Shared Memory". .
Inspec Abstract No. 4528985, from Beneventano et al., Dec. 1993, "Taxonomic Reasoning with Cycles in LOGIDATA+". .
Inspec Abstract No. 4525743, from Hakimzadeh et al., Dec. 1993, "Instance Variable Access Locking for Object-Oriented Databases". .
Inspec Abstract No. 4512593, from H. Sakai, Jun. 1993, "A Method for Contract Design and Delegation in Object Behavior Modeling". .
Inspec Abstract No. B9310-6210L-099, "Templates, Types and Classes in Open Distributed Processing", Rudkin, S., Jul. 1993. .
Inspec Abstract No. 4459325, from Kesim et al., Jun. 1992, "On the Evolution of Objects in a Logic Programming Framework". .
Inspec Abstract No. 4447153, from Klein et al., Nov. 1992, "An Object-Oriented Framework for Curves and Surfaces". .
Inspec Abstract No. 4426852, from Benveniste et al., Dec. 1992, "Concurrent Programming Notations in the Object-Oriented Language Arche". .
Inspec Abstract No. 4425343, from Demurjian et al., Feb. 1993, "Programming Versus Databases in Object-Oriented Paradigm". .
Inspec Abstract No. 4417604, from Kraiem et al., Jun. 1992, "Mapping of Conceptual Specifications Into Object-Oriented Programs". .
Inspec Abstract No. 4417563, from E. Maim, Jun. 1992, "Recognizing Objects from Constraints". .
Inspec Abstract No. 4411998, from Yi Deng et al., Jun. 1992, "Unifying Multi-Paradigms in Software System Design". .
Inspec Abstract No. 4408394, from Allen et al., Jun. 1992, "GEM: Global Event Management in CAD Frameworks". .
Inspec Abstract No. 4400350, from Y. Shoham, Mar. 1993, "Agent-Oriented Programming". .
Inspec Abstract No. 4395549, from Hogstrom et al., Mar. 1992, "Portability and Data Structures in Scientific Computing-Object-Oriented Design of Utility Routines in Fortran". .
Inspec Abstract No. 4391388, from Thomas et al., Mar. 1992, "A Generic Object-Oriented Concurrency Mechanism for Extensibility and Reuse of Synchronization Components". .
Inspec Abstract No. 4387201, from Chu et al., Jun. 1992, "A Pattern Based Approach of Integrating Data and Knowledge to Support Cooperative Query Answering". .
Inspec Abstract No. 4366189, from Holt, et al., Apr. 1992, "A Framework for Using Formal Methods in Object-Oriented Software Development". .
Inspec Abstract No. 4356300, from Bertino et al., Feb. 1993, "Path-Index: An Approach to the Efficient Execution of Object-Oriented Queries". .
Inspec Abstract No. 4341376, from Bertino et al., Feb. 1992, "Optimization of Object-Oriented Queries Using Path Indices". .
Inspec Abstract No. 4331060, from Lau et al., Jun. 1992, "An Object-Oriented Class Library for Scalable Parallel Heuristic Search". .
Inspec Abstract No. 4318465, from P. Madany, Jun. 1992, "Object-Oriented Framework for File Systems.". .
Inspec Abstract No. 4302722, from Eggenschwiler et al., Oct. 1992, "ET++SwapsManager: Using Object Technology in the Financial Engineering Domain". .
Inspec Abstract No. 4298324, form S. Nichol, Nov. 1992, "Extending Turbo Vision". .
Inspec Abstract No. 4297404, from Tanaka et al., Apr. 1992, "Two-Level Schemata and Generalized Links for Hypertext Database Models". .
Inspec Abstract No. 4287814, from Natarajan et al., Sep. 1992, "Issues in Building Dynamic Real-Time Systems". .
Inspec Abstract No. 4281362, from Marshall et al., Oct. 1991, "Using VDM within an Object-Oriented Framework". .
Inspec Abstract No. 4275707, from Tsukamoto et al., Dec. 1991, "DOT: A Term Representation Using DOT Algebra for Knowledge-Bases". .
Inspec Abstract No. 4275698, from Van den Bussche et al., Dec. 1991, "Evaluation and Optimization of Complex Object Selections". .
Inspec Abstract No. 4275693, from Giannotti et al., Dec. 1991, "Non-Determinism in Deductive Databases". .
Inspec Abstract No. 4270361, from Artale et al., Oct. 1991, "Introducing Knowledge Representation Techniques in Database Models". .
Inspec Abstract No. 4270125, from Becker et al., Oct. 1991, "Reusable Object-Oriented Specifications for Decision Support Systems". .
Inspec Abstract No. 4258492, from M. Ball, Sep. 1992, "Inside Templates: Implementing C++ Strategies". .
Inspec Abstract No. 4258051, from Rundensteiner et al., Aug. 1992, "Set Operations in Object-Based Data Models". .
Inspec Abstract No. 4244023, from George et al., Aug. 1991, "An Object-Oriented Data Model to Represent Uncertainty in Coupled Artificial Intelligence-Database Systems". .
Inspec Abstract No. 4234438, from Madany et al., Dec. 1991, "Organizing and Typing Persistent Objects Within an Object-Oriented Framework". .
Inspec Abstract No. 4152687, from M. Wolczko, Mar. 1992, "Encapsulation, Delegation and Inheritance in Object-Oriented Languages". .
Inspec Abstract No. 4117514, from Wuwongse et al., May 1991, "An Object-Oriented Approach to Model Management". .
Inspec Abstract No. C94204-6110J-017, "Choices Frameworks and Refinement", R.H. Campbell et al., Dec. 1991. .
Inspec Abstract No. 4090970, from P. Kougiouris, May 1991, "Device Management Framework for an Object-Oriented Operating System". .
Inspec Abstract No. 4077440, from A. Mahler, Jan. 1991, "Organizing Tools in a Uniform Environment Framework". .
Inspec Abstract No. 4067033, from Shaw et al., Jun. 1990, "Experience with the ET++ Application Framework". .
Inspec Abstract No. 4060084, from Muller et al., Jun. 1984, "ODICE: Object-Oriented Hardware Description in CAD environment". .
Inspec Abstract No. 4050569, from Di Giovanni et al., Jun. 1990, "HOOD Nets". .
Inspec Abstract No. C91072815, from Holtkamp et al., Oct. 1990, "DEMOM-A Description Based Media Object Data Model". .
Inspec Abstract No. C91072016, from A. Lane, Jul. 1991, "/DOS/C++--Application Frameworks". .
Inspec Abstract No. C91072574, from Hemery et al., "An Analysis of Communication and Multiprogramming in the Helios Operating System", Sep. 1991. .
Inspec Abstract No. C91064787, from Madany et al., Jul. 1989, "A Class Hierarchy for Building Stream-Oriented File Systems". .
Inspec Abstract No. C91064580, from Gamma et al., Jul. 1989, "Integration of a Programming Environment Into ET++--A Case Study". .
Inspec Abstract No. C91058815, from Menga et al., Mar. 1990, "G++: An Environment for Object Oriented Analysis and Prototyping". .
Inspec Abstract No. B91052096, from Cusack et al., May 1990, "Object-Oriented Specification in LOTOS and Z, or My Cat Really is Object-Oriented!". .
Inspec Abstract No. C91053475, from Queinnec et al., Jul. 1998, "An Open Ended Data Representation Model for EU-LISP". .
Inspec Abstract No. C91053151, from E. Cusack, Apr. 1991, "Refinement, Conformance and Inheritance". .
Inspec Abstract No. C91042802, from T. Yokoyama, May 1990, "An Object-Oriented and Constraint-Based Knowledge Representation System for Design Object Modeling". .
Inspec Abstract No. C91041980, from Choi et al., Jan. 1991, "Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming". .
Inspec Abstract No. C91042655, from Q. Li, Mar. 1991, "Extending Semantic Object Model; Towards More Unified View of Information Objects". .
Inspec Abstract No. C91024852, from Pierra et al., Sep. 1990, "An Object Oriented Approach to Ensure Portability of CAD Standard Parts Libraries". .
Inspec Abstract No. C91010951, from T. Helton, Nov. 1990, "Level5 Object". .
Inspec Abstract No. B90075006, from Gossain et al., Nov. 1984, "Designing a Class Hierarchy for Domain Representation and Reusability". .
Inspec Abstract No. C91003997, from J. Muys-Vasovic, Nov. 1989, "MacApp: An Object-Oriented Application Framework". .
Inspec Abstract No. C91004708, from Bertino et al., Mar. 1990, "Optimization of Queries Using Nested Indices". .
Inspec Abstract No. C90052277, from I. Tervonen, Jan. 1990, "Object-Oriented Development as a Multiview Software Construction Methodology". .
Inspec Abstract No. C90052627, from Schrefl et al., Jul. 1988, "A Knowledge-Based Approach to Overcome Structural Differences in Object Oriented Database Integration". .
Inspec Abstract No. C90047457, from Yokoyama et al., Dec. 1990, "A Constraint-Based and Object-Oriented Knowledge Representation". .
Inspec Abstract No. C90034818, from Q. Chen, Apr. 1988, "Extending the Object-Oriented Paradigm for Supporting Complex Objects". .
Inspec Abstract no. C90030609, from Forde et al., Dec. 1990, "Object-Oriented Finite Element Analysis". .
Inspec Abstract No. C90007733, from Weinand et al., Dec. 1989, "Design and Implementation of ET++, A Seamless Object-Oriented Application Framework". .
Inspec Abstract No. C89062837, from Pasquier-Boltuck et al., Aug. 1988, "Prototyping an Interactive Electronic Book System Using an Object-Oriented Approach". .
Inspec Abstract No. C89056727, from Campbell et al., Apr. 1984, "Principles of Object-Oriented Operating System Design". .
Inspec Abstract No. C89056859, from Hull et al., May 1989, "On Accessing Object-Oriented Databases: Expressive Power, Complexity, and Restrictions". .
Inspec Abstract No. C89049257, from Madany et al., Apr. 1984, "Class Hierarchy for Building Stream-Oriented File Systems". .
Inspec Abstract No. C89039001, from Brophy et al., Jan. 1989, "A Framework for Multiple, Concurrent Graphical Representation". .
Inspec Abstract No. C89033226, from Corradi et al., Sep. 1988, "PO: An Object Model to Express Parallelism". .
Inspec Abstract No. C89014870, from R. King, Oct. 1988, "Semantic and Object-Oriented Database Support for Software Environments". .
Inspec Abstract No. 89003142, from Tanma et al., Oct. 1986, "A System for Generating Language-Oriented Editors". .
Inspec Abstract No. C88013915, from Woelk et al., Sep. 1987, "Multimedia Information Management in an Object-Oriented Database System". .
Inspec Abstract No. C88007447, from P. Allen, Feb. 1987, "A Framework for Implementing Multisensor Robotic Tasks". .
Inspec Abstract No. C87007043, from Whitted et al., May 1986, "Exploiting Classes in Modeling and Display Software". .
Inspec Abstract No. C86039588, from K. Fukunaga,, Aug. 1985, "Prompter: A Knowledge Based Support Tool for Code Understanding". .
Inspec Abstract No. C86024804, from Greenspan et al., Dec. 1986, "A Requirements Modeling Language and Its Logic". .
Inspec Abstract No. C84005713, from Meyer et al., Sep. 1982, "Towards a Two-Dimensional Programming Environment". .
Inspec Abstract No. C81005505, from Mylopoulos et al., Oct. 1980, "Some Features of the TAXIS Data Model". .
R. Bergmann, et al., "Explanation-based Similarity: A Unifying Approach for Integrating Domain Knowledge into Case-based Reasoning for Diagnosis and Planning Tasks," European Workshop on Case-Based Reasoning, Springer, pp. 182-196, Dec. 1993. .
L. Becker and T. Guay, "Knowledge reusability in diagnostic environments," J. of Intelligent Manufacturing, pp. 137-154, Dec. 1991. .
K. Becker and F. Bodart, "Reusable Object-Oriented Specifications for Decision Support Systems," Object Oriented Approach in Information Systems, pp. 137-155, Oct. 1991. .
E. Simoudis, et al., "Automated support for developing retrieve-and-propose systems," Proc. SPIE, Applications of Artificial Intelligence 1993: Knowledge-Based Systems in Aerospace and Industry, vol. 1963, pp. 285-292, Apr. 1993. .
J. Kolodner, Case-Based Reasoning, Morgan Kaufmann Pub., Inc., pp. 16-23, 346-368, Dec. 1993. .
A. Aamodt, "A Knowledge Representation System for Integration of General and Case-Specific Knowledge," Proc. Sixth Int'l. Conf. on Tools with Artificial Intelligence, pp. 836-839, Nov. 1994. .
J.P. Burke, "ART
Primary Examiner:
Downs; Robert W.
Attorney, Agent or Firm:
Martin & Associates L.L.C. Martin; Derek P.
Claims
We claim:
1. A computer system comprising:
a central processing unit;
a user interface; and
a main memory having an operating system that supports an object oriented programming environment containing framework that provides an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include property objects, value objects, and attributes.
2. A computer system as defined in claim 1, wherein the framework permits a user to provide a case structure definition class that specifies an inheritance data structure for the case instance objects.
3. A computer system as defined in claim 1, wherein the case instance objects have a data structure and behavior specified by a case structure definition class having property objects and corresponding property value attributes.
4. A computer system as defined in claim 3, wherein the property objects include simple value objects and compound value objects.
5. A computer system as defined in claim 3, wherein the case instance objects further include weight instance objects that assign weight attribute values to each of the property objects.
6. A computer system as defined in claim 1, wherein the framework permits a user to provide an action prompt definition class of objects that specify computer system prompts that are displayed to a user and, upon a received user response, initiate a computer system action.
7. A computer system as defined in claim 1, wherein the framework permits a user to provide an index definition class of objects that specify a subset of the case instance object properties and in which the properties are included, thereby comprising an index to the case instance objects.
8. A computer system as defined in claim 1, wherein the query object includes a pattern of attributes and property objects and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object.
9. A computer system as defined in claim 8, wherein the match scoring operation comprises a dynamically weighted operation in which weight multiplier values are applied to designated properties of the query object and the case instance object, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective query object and case instance object.
10. A computer system as defined in claim 9, wherein the weight multiplier values are received from the user and are then applied to the query and case instance properties.
11. A computer system as defined in claim 10, wherein one or more of the weight multiplier values are zero, such that a zero weight multiplier value is designated for properties that are not to be penalized in the computation of a match score if unspecified.
12. A computer system as defined in claim 8, wherein the match scoring operation comprises a dynamically weighted operation in which relative usage factors are applied to designated properties of the query object and case instance object by multiplying each designated property weight of the query object and case instance object by a corresponding respective query usage scaling factor or case instance usage scaling factor.
13. A computer system as defined in claim 12, wherein the relative usage factors are received from the user and are then applied to the property weights of the query and case instance properties.
14. A computer system as defined in claim 1, wherein the framework permits a user to store the query object into the case set class, whereupon the stored query object can then be retrieved from the case set as the solution to a newly defined query object.
15. A computer system as defined in claim 1, wherein the framework permits a user to specify an incident class of objects into which a query object can be stored or later retrieval and further processing.
16. A computer system comprising:
a central processing unit;
a user interface; and
a main memory having an operating system that supports an object oriented programming environment containing a framework that provides an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properities of a
query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include property objects, value objects, and attributes;
the framework permits a user to provide a case structure definition class that specifies an inheritance data structure for the case instance objects; and
wherein a user may change the case structure definition class and the computer system, in response, records the change in a change log.
17. A computer system as defined in claim 16, wherein the change log is an object oriented programming class of objects.
18. A computer system comprising:
a central processing unit;
a user interface; and
a main memory having an operating system that supports an object oriented programming environment containing a framework that provides an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include property objects, value objects, and attributes; and
wherein the framework permits a user to provide a tracking definition class of objects that specify a case instance attribute status condition that is to be detected and upon which a tracking count is incremented.
19. A computer system comprising:
a central processing unit;
a user interface; and
a main memory having an operating system that supports an object oriented programming environment containing a framework that provides an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include property objects, value objects, and attributes; and
wherein the framework permits a user to provide a parsing definition class of objects that specify a parsing scheme to be used in a parsing operation on text or property values in a query object.
20. A computer system as defined in claim 19, wherein the text parsing operation includes token parsing for language translation.
21. A computer system comprising:
central processing unit;
a user interface; and
a main memory having an operating system that supports an object oriented programming environment containing a framework that provides an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include property objects value objects, and attributes;
wherein the query object includes a pattern of attributes and property objects and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object; and
wherein the match scoring operation comprises calculating a raw match score indicative of the similarity between the properties of the query object and the case instance object and multiplying the raw match score by a delta factor that is a function of property ranking values that indicate an importance ranking of each property relative to the other properties of the respective query object and case instance object, and the delta factor is defined as ##EQU3## where the ignored ranking values comprise properties that are not specified in a query or case instance and the additional ranking values comprise the remaining properties, and the summation symbols indicate the sum of the corresponding ranking values.
22. A computer system as defined in claim 21, wherein the ranking values are scalar numbers that specify a relative numerical ranking of each property relative to the others in a case definition.
23. An object oriented framework for use in a computer system having an operating system that supports an object oriented programming environment that defines a case set class having case instance objects that include property objects, value objects, and attributes comprising case instance descriptions and provides an extensible case-based reasoning system that evaluates a user query by determining a set of the case instance objects that most closely match a query object corresponding to the user query and thereby produces a solution to the user query.
24. An object oriented framework as defined in claim 23, wherein the framework permits a user to provide a case structure definition class that specifies an inheritance data structure for the case instance objects.
25. An object oriented framework as defined in claim 23, wherein the case instance objects have a data structure and behavior specified by a case structure definition class having property objects and corresponding property value attributes.
26. An object oriented framework as defined in claim 25, wherein the property objects include simple value objects and compound value objects.
27. An object oriented framework as defined in claim 25, wherein the case instance objects further include weight instance objects that assign weight attribute values to each of the property objects.
28. An object oriented framework as defined in claim 23, wherein the framework permits a user to provide an action prompt definition class of objects that specify computer system prompts that are displayed to a user and, upon a received user response, initiate a computer system action.
29. An object oriented framework as defined in claim 23, wherein the framework permits a user to provide an index definition class of objects that specify a subset of the case instance object properties and in which the properties are included, thereby comprising an index to the case instance objects.
30. An object oriented framework as defined in claim 23, wherein the query object includes a pattern of attributes and property and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object.
31. An object oriented framework system as defined in claim 30, wherein the match scoring operation comprises a dynamically weighted operation in which weight multiplier values are applied to designated properties of the query object and the case instance object, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective query object and case instance object.
32. An object oriented framework as defined in claim 31, wherein the weight multiplier values are received from the user and are then applied to the query and case instance properties.
33. An object oriented framework as defined in claim 31, wherein one or more of the weight multiplier values are zero, such that a zero weight multiplier value is designated for properties that are not to be penalized in the computation of a match score if unspecified.
34. An object oriented framework as defined in claim 30, wherein the match scoring operation comprises a dynamically weighted operation in which relative usage factors are applied to designated properties of the query object and case instance object by multiplying each designated property weight of the query object and case instance object by a corresponding respective query usage scaling factor or case instance usage scaling factor.
35. An object oriented framework as defined in claim 34, wherein the relative usage factors are received from the user and are then applied to the property weights of the query and case instance properties.
36. An object oriented framework as defined in claim 23, wherein the framework permits a user to store the query object into the case set class, whereupon the stored query object can then be retrieved from the case set as the solution to a newly defined query object.
37. An object oriented framework as defined in claim 23, wherein the framework permits a user to specify an incident class of objects into which a query object can be stored for later retrieval and further processing.
38. An object oriental framework for use in a computer system having an operating system that supports an object oriented programming environment that defines a case set class having case instance objects that include property objects, value objects, and attributes comprising case instance descriptions and provides an extensible case-based reasoning system that evaluates a user query by determining a set of the case instance objects that most closely match a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the framework permits a user to provide a case structure definition class that specifies an inheritance data structure for the case instance objects; and
wherein a user may change the case structure definition class and the computer system, in response, records the change in a change log.
39. An object oriented framework as defined in claim 38, wherein the change log is an object oriented programming class of objects.
40. An object oriented framework for use in a computer system having an operating system that supports an object oriented programming environment that defines a case set class having case instance objects that include property objects, value objects, and attributes comprising case instance descriptions and provides an extensible case-based reasoning system that evaluates a user query by determining a set of the case instance objects that most closely match a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the framework permits a user to provide a tracking definition class of objects that specify a case instance attribute status condition that is to be detected and upon which a tracking count is incremented.
41. An object oriented framework for use in a computer system having an operating system that supports an object oriented programming environment that defines a case set class having case instance objects that include property objects, value objects, and attributes comprising case instance descriptions and provides an extensible case-based reasoning system that evaluates a user query by determining a set of the case instance objects that most closely match a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the framework permits a user to provide a parsing definition class of objects that specify a parsing scheme to be used in a parsing operation on text or property values in a query object.
42. An object oriented framework as defined in claim 41, wherein the text parsing operation includes token parsing for language translation.
43. An object oriented framework for use in a computer system having an operating system that supports an object oriented programming environment that defines a case set class having case instance objects that include property objects, value objects, and attributes comprising case instance descriptions and provides an extensible case-based reasoning system that evaluates a user query by determining a set of the case instance objects that most closely match a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the query object includes a pattern of attributes and property and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object; and
wherein the match scoring operation comprises calculating a raw match score indicative of the similarity between the properties of the query object and the case instance object and multiplying the raw match score by a delta factor that is a function of property ranking values that indicate an importance ranking of each property relative to the other properties of the respective query object and case instance object, and the delta factor is defined as ##EQU4## where the ignored ranking values comprise properties that are not specified in a query or case instance and the additional ranking values comprise the remaining properties, and the summation symbols indicate the sum of the corresponding ranking values.
44. An object oriented framework as defined in claim 43, wherein the ranking values are scalar numbers that specify a relative numerical ranking of each property relative to the others in a case definition.
45. A program product for use in a computer system having an operating system that supports an object-oriented programming environment, the program product comprising:
a signal bearing media; and
a framework recorded on the signal bearing media, the framework providing
an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects.
46. A program product as defined in claim 45, wherein the framework permits a user to provide a case structure definition class that specifies an inheritance data structure for the case instance objects.
47. A program product as defined in claim 45, wherein the case instance objects have a data structure and behavior specified by a case structure definition class having property objects and corresponding property value attributes.
48. A program product as defined in claim 47, wherein the property objects include simple value objects and compound value objects.
49. A program product as defined in claim 47, wherein the case instance objects further include weight instance objects that assign weight attribute values to each of the property objects.
50. A program product as defined in claim 45, wherein the framework permits a user to provide an action prompt definition class of objects that specify computer system prompts that are displayed to a user and, upon a received user response, initiate a computer system action.
51. A program product as defined in claim 45, wherein the framework permits a user to provide an index definition class of objects that specify a subset of the case instance object properties and in which the properties are included, thereby comprising an index to the case instance objects.
52. A program product as defined in claim 45, wherein the query object includes a pattern of attributes and property and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object.
53. A program product as defined in claim 52, wherein the match scoring operation comprises a dynamically weighted operation in which weight multiplier values are applied to designated properties of the query object and the case instance object, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective query object and case instance object.
54. A program product as defined in claim 53, wherein the weight multiplier values are received from the user and are then applied to the query and case instance properties.
55. A program product as defined in claim 53, wherein one or more of the weight multiplier values are zero, such that a zero weight multiplier value is designated for properties that are not to be penalized in the computation of a match score if unspecified.
56. A program product as defined in claim 53, wherein the match scoring operation comprises a dynamically weighted operation in which relative usage factors are applied to designated properties of the query object and case instance object by multiplying each designated property weight of the query object and case instance object by a corresponding respective query usage scaling factor or case instance usage scaling factor.
57. A program product as defined in claim 56, wherein the relative usage factors are received from the user and are then applied to the property weights of the query and case instance properties.
58. A program product as defined in claim 45, wherein the framework permits a user to store the query object into the case set class, whereupon the stored query object can then be retrieved from the case set as the solution to a newly defined query object.
59. A program product as defined in claim 45, wherein the framework permits a user to specify an incident class of objects into which a query object can be stored for later retrieval and further processing.
60. A program product as defined in claim 45, wherein the signal bearing media comprises recordable media.
61. A program product as defined in claim 45, wherein the signal bearing media comprises transmission media.
62. A program product for use in a computer system having an operating system that supports an object-oriented programming environment, the program product comprising:
a signal bearing media; and
a framework recorded on the signal bearing media, the framework providing an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects; and
wherein the framework permits a user to provide a case structure definition class that specifies an inheritance data structure for the case instance objects;
wherein a user may change the case structure definition class and the computer system, in response, records the change in a change log.
63. A program product as defined in claim 62, wherein the change log is an object oriented programming class of objects.
64. A program product for use in a computer system having an operating system that supports an object-oriented programming environment, the programming product comprising:
a signal bearing media; and
a framework recorded on the signal bearing media, the framework providing an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects; and
wherein the framework permits a user to provide a tracking definition class of objects that specify a case instance attribute status condition that is to be detected and upon which a tracking count is incremented.
65. A program product for use in a computer system having an operating system that supports an object-oriented programming environment, the program product comprising:
a signal bearing media; and
a framework recorded on the signal bearing media, the framework providing an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects; and
wherein the framework permits a user to provide a parsing definition class of objects that specify a parsing scheme to be used in a parsing operation on text or property values in a query object.
66. A program product as defined in claim 65, wherein the text parsing operation of the framework includes token parsing for language translation.
67. A program product for use in a computer system having an operating system that supports an object-oriented programming environment, the program product comprising:
a signal bearing media; and
a framework recorded on the signal bearing media, the framework providing an extensible case-based reasoning system that evaluates a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects;
wherein the query object includes a pattern of attributes and property and value objects corresponding to the attributes, property objects, and value objects of the ease instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object;
wherein the match scoring operation comprises a dynamically weighted operated in which weight multiplier values are applied to designated properties of the query object and the ease instance object, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective query object and case instance object; and
wherein the match scoring operation comprises calculating a raw match score indicative of the similarity between the properties of the query object and the case instance object and multiplying the raw match score by a delta factor that is a function of property ranking values that indicate an importance ranking of each property relative to the other properties of the respective query object and case instance object, and the delta factor is defined as ##EQU5## where the ignored ranking values comprise properties that are not specified in a query or case instance and the additional ranking values comprise the remaining properties, and the summation symbols indicate the sum of the corresponding ranking values.
68. A program product as defined in claim 67, wherein the ranking values are scalar numbers that specify a relative numerical ranking of each property relative to the others in a case definition.
69. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports an object oriented programming environment, the method comprising the steps of:
providing an object oriented framework that provides an extensible case-based reasoning system; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions of the provided object oriented framework comprise an object oriented programming case set class having case instance object that include attributes, property objects, and value objects.
70. A method as defined in claim 69, wherein the provided framework permits a user to provide a case structure definition class that specifics an inheritance data structure for the case instance objects.
71. A method as defined in claim 69, wherein the case instance objects have a data structure and behavior specified by a case structure definition class having property objects and corresponding property value attributes.
72. A method as defined in claim 71, wherein the property objects include simple value objects and compound value objects.
73. A method as defined in claim 71, wherein the case instance objects further include weight instance objects that assign weight attribute values to each of the property objects.
74. A method as defined in claim 69, wherein the provided framework permits a user to provide an action prompt definition class of objects that specify computer system prompts that are displayed to a user and, upon a received user response, initiate a computer system action.
75. A method as defined in claim 69, wherein the provided framework permits a user to provide an index definition class of objects that specify a subset of the case instance object properties and in which the properties are included, thereby comprising an index to the case instance objects.
76. A method as defined in claim 69, wherein the query object includes a pattern of attributes and property objects and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object.
77. A method as defined in claim 76, wherein the match scoring operation of the provided framework comprises a dynamically weighted operation in which weight multiplier values are applied to designated properties of the query object and the case instance object, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective query object and case instance object.
78. A method as defined in claim 77, wherein the weight multiplier values are received from the user and are then applied to the query and case instance properties.
79. A method as defined in claim 78, wherein one or more of the weight multiplier values are zero, such that a zero weight multiplier value is designated for properties that are not to be penalized in the computation of a match score if unspecified.
80. A method as defined in claim 76, wherein the match scoring operation of the provided framework comprises a dynamically weighted operation in which
relative usage factors are applied to designated properties of the query object and case instance object by multiplying each designated property weight of the query object and case instance object by a corresponding respective query usage scaling factor or case instance usage scaling factor.
81. A method as defined in claim 80, wherein the relative usage factors are received from the user and are then applied to the property weights of the query and case instance properties.
82. A method as defined in claim 69, wherein the provided framework permits a user to store the query object into the case set class, whereupon the stored query object can then be retrieved from the case set as the solution to a newly defined query object.
83. A method as defined in claim 69, wherein the provided framework permits a user to specify an incident class of objects into which a query object can be stored for later retrieval and further processing.
84. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports an object oriented programming environment, the method comprising the steps of:
providing an object oriented framework that provides an extensible case-based reasoning system; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions of the provided object oriented framework comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects;
wherein the provided framework permits a user to provide a case structure definition class that specifies and inheritance data structure for the case instance objects; and
wherein a user may change the case structure definition class and the computer system, in response, records the change in a change log.
85. A method as defined in claim 84, wherein the change log is an object oriented programming class of objects.
86. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports an object oriented programming environment, the method comprising the steps of:
providing an object oriented framework that provides an extensible case-based reasoning system; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding, to the user query and thereby produces a solution to the user query;
wherein the user instance descriptions of the provided object oriented framework comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects; and
wherein the provided framework permits a user to provide a tracking definition class of objects that specify a case instance attribute status condition that is to be detected and upon which a tracking count is incremented.
87. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports an object oriented programming environment, the method comprising the steps of:
providing an object oriented framework that provides an extensible case-based reasoning system; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions of the provided object oriented framework comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects; and
wherein the provided framework permits a user to provide a parsing definition class of objects that specify a parsing scheme to be used in a parsing operation on text or property values in a query object.
88. A method as defined in claim 87, wherein the text parsing operation of the provided framework includes token parsing for language translation.
89. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports an object oriented programming environment, the method comprising the steps of:
providing an object oriented framework that provides an extensible case-based reasoning system; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a query object corresponding to the user query and thereby produces a solution to the user query;
wherein the case instance descriptions of the provided object oriented framework comprise an object oriented programming case set class having case instance objects that include attributes, property objects, and value objects;
wherein the query object includes a pattern of attributes and property objects and value objects corresponding to the attributes, property objects, and value objects of the case instance class of objects, and is evaluated in a match scoring operation that compares the attributes, properties, and values of the query object with the corresponding attributes, properties, and values of a case instance object and computes a match score indicating the similarity of the query object and the case instance object; and
wherein the match scoring operation of the provided framework comprises calculating a raw match score indicative of the similarity between the properties of the query object and the case instance object and multiplying the raw match score by a delta factor that is a function of property ranking values that indicate an importance ranking of each property relative to the other properties of the respective query object and case instance object, and the delta factor is defined as ##EQU6## where the ignored ranking values comprise properties that are not specified in a query or case instance and the additional ranking values comprise the remaining properties, and the summation symbol indicate the sum of the corresponding ranking values.
90. A method as defined in claim 89, wherein the ranking values are scalar numbers that specify a relative numerical ranking of each property relative to the others in a case definition.
91. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports a programming environment, the method comprising the steps of:
providing a case-based reasoning system that operates in the programming environment; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a user query and thereby produces a solution to the user query; wherein:
the case instances comprise data structures that include properties, values, and attributes;
the user query specifies a pattern of properties, values, and attributes, and is evaluated in a match scoring operation that compares the properties, values, and attributes of the user query with the corresponding properties, values, and attributes of a case instance and computes a match score indicating the similarity of the user query and the case instance; and
the match scoring operation comprises a dynamically weighted operation in which weight multiplier values are applied to designated properties of the user query and the case instance, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective user query and case instance.
92. A method as defined in claim 91, wherein the weight multiplier values are received from the user and are then applied to the user query and case instance properties.
93. A method as defined in claim 92, wherein one or more of the weight multiplier values are zero, such that a zero weight multiplier value is designated for properties that are not to be penalized in the computation of a match score if unspecified.
94. A method as defined in claim 93, wherein the match scoring operation comprises a dynamically weighted operation in which relative usage factors are applied to designated properties of the user query and case instance by multiplying each designated property weight of the user query and case instance by a corresponding respective query usage scaling factor or case instance usage scaling factor.
95. A computer system as defined in claim 94, wherein the relative usage factors are received from the user and are then applied to the property weights of the user query and case instance properties.
96. A method of executing an application program in a computer system having a central processing unit that controls processing in the computer system, a user interface, and a main memory having an operating system that supports a programming environment, the method comprising the steps of:
providing a case-based reasoning system that operates in the programming environment; and
evaluating a user query by determining a set of case instance descriptions that most closely match properties of a user query and thereby produces a solution to the user query; wherein:
the case instances comprise data structures that include properties, values, and attributes;
the user query specifies a pattern of properties, values, and attributes, and is evaluated in a match scoring operation that compares the properties, values, and attributes of the user query with the corresponding properties, values, and attributes of a case instance and computes a match score indicating the similarity of the user query and the instance; and
the match scoring operation comprises a dynamically weighted operation in which weight multiplier values are applied to designated properties of the user query and the case instance, wherein each weight multiplier value indicates an importance ranking of the designated property relative to the other properties of the respective user query and case instance;
wherein the match scoring operation comprises calculating a raw match score indicative of the similarity between the properties of the user query and the case instance and multiplying the raw match score by a delta factor that is a function of property ranking values that indicate an importance ranking of each property relative to the other properties of the respective user query and case instance, and the delta factor is defined as ##EQU7## where the ignored ranking values comprise properties that are not specified in a user query or case instance and the additional ranking values comprise the remaining properties, and the summation symbols indicate the sum of the corresponding ranking values.
97. A method as defined in claim 96, wherein the ranking values are scalar numbers that specify a relative numerical ranking of each property relative to the others in a case instance.
98. A method as defined in claim 96, wherein the step of providing a case-based reasoning system comprises providing an object oriented framework that provides an extensible case-based reasoning system and the case instance descriptions and user query are object oriented programming objects.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to data processing and, more specifically, to object-oriented programming systems and processes.
2. Description of the Related Art
The phrase "case-based reasoning" (CBR) generally refers to a computer process that finds solutions to current problems by examining descriptions of similar, previously encountered problems and their associated solutions, matching the novel problems to the closest previously encountered problems, and using the associated solutions to produce a solution to the current problem. In a CBR system, problem-solution descriptions are stored in a database called a case base. Weights assigned to different properties of each case are used in scoring cases for similarity against a current problem. The CBR system receives a description of a current problem. retrieves the closest matching cases from the case base using a query engine processor, and iteratively prompts the user for additional descriptive information until the retrieved case or cases are sufficiently close (similar) to be considered a solution to the current problem. The produced solution is then validated through a variety of means, such as user feedback or automatic validation. A validated solution can be added to the case base and used in future problem solving, if appropriate.
CBR systems permit experience gained from solving problems to be applied to a much larger number of problem situations than could possibly be remembered by any one individual with substantially reduced chance of providing erroneous or inconsistent solutions. Validation of problem solutions provides an additional safeguard. Finally, updating the case base permits continuous expansion of the case base against which problems are matched, reducing the likelihood that a satisfactory problem solution cannot be produced. In practical terms, CBR systems are gaining use in computer-assisted and automated help-desk and customer service systems and in computer help programs.
The construction of the case base and the way in which stored cases are matched and retrieved can vary greatly from CBR system to CBR system. For example, the case base can comprise problem-solution descriptions stored as plain language text, data records having predefined fields, or semantic networks. Case matching and retrieval processing by the query engine can comprise implementation of nearest-neighbor algorithms, decision trees, or associative memories. The user interface also must be part of the CBR system development process, including construction of the user input and solution presentation mechanisms. The development of each CBR system therefore can require much time, effort, and expense in making such data representation and processing, decisions and implementing them.
Many CBR systems are tailored for each particular subject matter application and are developed using conventional procedure-oriented programming languages, such as FORTRAN, Pascal, and C. Many lines of computer programming code must be created for each application. For example, even if the same type of case-matching, query engine processing is used for different CBR systems, the query engine must be adapted to work with the problem-solution description being used. Some code can be modified from other versions, or deleted and replaced with different instructions for different applications, which still can require much analysis and design effort. The development of CBR systems would be easier, less expensive, and less time consuming if the user interface could be more consistent, representation of the problem-solution descriptions standardized, development of the case base made simpler, and the query engine made interchangeable from application to application.
As CBR systems become more widely distributed, more users of CBR systems will be novice users who might be unfamiliar with the case base and with CBR search techniques generally. With current CBR search implementations, search techniques employed by novice users can easily be relatively ineffective. For example, CBR systems typically use weighted matching techniques to find the cases in the case base that are the closest match to a set of specified search criteria. Cases are defined by a set of properties and cases are deemed more closely matched to a search query if they have more properties in common. Conventional weighting techniques can be said to penalize cases that are more completely defined (have more properties in their definition) because searches that leave many properties unspecified result in fewer completely-defined cases being deemed a match. Novice users are especially prone to leaving search properties unspecified.
Many CBR search techniques also penalize cases that are under-defined, or that have fewer properties defined than are defined in the search query. Users of the CBR system have no control over the way in which the system deals with unspecified properties. Some systems attempt to reduce such problems by assigning different weights to properties and thereby properly accommodate case properties that are not specified in a search, case properties that are unmatched to a search, or search properties that are unmatched to a case. Specifying the case base can become relatively complicated, as case base developers struggle to assign weights. Moreover, different weights might be advisable, depending on the specific search. The CBR system either becomes unresponsive to different searches or case definition becomes too complex.
In addition, it would be advantageous to permit both case base developers and CBR system users to include their knowledge about the relative importance of properties for each search query and to adjust the match scoring approach. That is, a CBR system user should not be forced to use the weight set specified by the case base developer. Unfortunately, a CBR system that also supports input of weight values for each search query has not been available.
From the discussion above, it should be apparent that there is a need for a case-based reasoning system development mechanism tool that provides a basis for more rapid, less expensive, and simpler development of case-based reasoning systems with greater user flexibility. The present invention satisfies this need.
SUMMARY OF THE INVENTION
In accordance with the present invention, a reusable object oriented (OO) framework for use with object oriented programming systems comprises a case-based reasoning (CBR) shell that permits a framework user to use a case set comprising a set of case instance descriptions and generates a case-based reasoning system that receives user requests for query solutions and produces a query solution that can be incorporated into the set of case instance descriptions. The object oriented framework includes a Control Flow component that controls processing of the CBR system, a Data Store component that manages all persistent data associated with the system, and a Presentation component that manages interface to users of the CBR system. After the OO operating environment is established, the CBR system user can engage in operations such as query processing, building case history definitions, and modifying operating parameters, according to the object definitions. Thus, the case history descriptions and search queries comprise a set of object oriented classes that are organized into an inheritance hierarchy. In this way, a single framework can be used to generate, update, and use many different case histories and evaluate search queries with reduced development time. The extended framework thereby quickly and efficiently provides a variety of case-based reasoning systems.
In addition, the present invention permits dynamic, user adjustment of property weights used in specifying a search query and in specifying a case set from which a solution will be retrieved. Such dynamic weighting can be applied to a case-based reasoning system implemented in an object oriented environment or in a procedural environment.
In one aspect of the invention, the CBR system developer uses the framework to provide a set of case definitions, property definitions, and case base descriptions for the CBR system under development. The framework provides the CBR system shell having the Control Flow component, Presentation component, Data Store component, and a Query Engine component. The extended framework provides a CBR system that includes the case base and receives a current problem query, matches the current query description to the closest case history description in the case base, and produces a solution to the current query. The produced solution is validated and, if appropriate, is added to the case base. In this way, a CBR system developer can more quickly integrate a case base with a query engine and user interface to provide an operable CBR system.
In another aspect of the present invention, property weights assigned to cases in the case base are dynamically adjusted during search and property weights are also assigned to the search query. In this way, users specifying searches can control which properties are used, what combinations of weights are used, and whether or not missing properties should penalize the case history matching.
For the case base, cases are stored as sets of property/value pairs and each property is assigned an importance rank value relative to the other properties of the case. The rank values are normalized, so that unspecified properties in a query that ordinarily would result in a lower match score instead can be compared in relative terms. Also, only properties specified in a query are considered in calculating the normalized rank score, so that unspecified properties do not skew the scoring. In a similar fashion, search queries are specified as property/value pairs and each property is assigned a normalized importance rank relative to the other properties of the search query and a match score is computed considering only the defined properties of the query. In this way, unspecified properties in a search query do not result in lower match scoring.
Other features and advantages of the present invention should be apparent from the following description of the preferred embodiment, which illustrates, by way of example, the principles of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a category diagram of an exemplary Zoo Administration framework that illustrates the principles implemented by the system of the present invention.
FIG. 2, 3, 4, 5, and 6 are class diagrams for the exemplary Zoo Administration framework of FIG. 1.
FIG. 7 is an object diagram for the exemplary framework of FIGS. 1 through 6.
FIG. 8 is a functional block diagram of a computer processing system constructed in accordance with the present invention.
FIG. 9 is a flow diagram that illustrates the processing steps performed by the framework mechanism of the computer processing system illustrated in FIG. 8.
FIG. 10 is a low diagram that illustrates the processing steps performed by the extended framework mechanism of the computer processing system in executing the build case structure definition step of FIG. 9.
FIG. 11 is a flow diagram that illustrates the processing steps performed by the extended framework mechanism of the computer processing system in executing the construct properties, values, and weight set processing step of FIG. 10.
FIG. 12 is a flow diagram that illustrates the processing steps performed by the extended framework mechanism of the computer processing system in executing the build case instance definitions processing step of FIG. 9.
FIG. 13 is a flow diagram that illustrates the processing steps performed by the extended framework mechanism of the computer processing system illustrated in FIG. 8 in producing a solution to a query.
FIG. 14 is a category diagram representation of the framework mechanism of the computer processing system illustrated in FIG. 8.
FIG. 15 is a class diagram representation of the CBR Session category implemented by the computer processing system illustrated in FIG. 8.
FIG. 16 is a class diagram representation of the CBR Base category implemented by the computer processing system illustrated in FIG. 8.
FIG. 17 is a class diagram representation of classes related to a case
structure definition for the CBR system as implemented by the computer processing system illustrated in FIG. 8.
FIG. 18 is a class diagram representation that shows the functions implemented by the CaseDefinition category shown in FIG. 17.
FIG. 19 is a class diagram representation of the CaseDefinition category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 20 is a class diagram representation of the PropertyDefinition category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 21 is a class diagram representation of the CaseSet category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 22 is a class diagram representation of classes related to a case history instance as implemented by the computer processing system illustrated in FIG. 8.
FIG. 21 is a class diagram representation of the Case category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 24 is a class diagram representation of the Value category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 25 is a class diagram representation of the CaseInstance category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 26 is a class diagram representation of classes related to a case query as implemented by the computer processing system illustrated in FIG. 8.
FIG. 27 is a class diagram representation of the CBRQuery category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 28 is a class diagram representation of the Pattern category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 29 is a class diagram representation of the DataStoreComponent category and related classes implemented by the computer processing, system illustrated in FIG. 8.
FIG. 30 is a class diagram representation of the ControlFlowComponent category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 31 is a class diagram representation of the PresentationPart category and related classes implemented by the computer processing system illustrated in FIG. 8.
FIG. 32 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a CaseDefinition is created.
FIG. 33 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when Property. Value, and WeightSet objects are constructed.
FIG. 34 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when ActionPrompt, Tracking, and IndexDefinition objects are constructed.
FIG. 35 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when Pattern objects are constructed.
FIG. 36 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a ParseDefinition object is updated.
FIG. 37 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a CaseDefinition object is stored.
FIG. 38 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a CaseInstance Definition object is created.
FIG. 39 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 for selection of a CaseDefinition object.
FIG. 40 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a PropertyInstance object is created.
FIG. 41 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when PropertInstance and Value objects are built.
FIG. 42 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when ActionPrompt objects are created and Audit methods are performed.
FIG. 43 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when IndexDefinition objects are refreshed and a CaseInstance object is stored.
FIG. 44 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a single CBR Query is received from a user.
FIG. 45 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when building a pattern for the CBR Query.
FIG. 46 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a received CBR Query is evaluated.
FIG. 47 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a CaseMatch Set is built.
FIG. 48 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a PropertyMatch Set is built.
FIG. 49 is a scenario diagram representation of the processing steps executed by the host processor illustrated in FIG. 8 when a Query solution is evaluated.
DESCRIPTION OF THE PREFERRED EMBODIMENT
Overview--Object Oriented Technology
The present invention was developed using Object-Oriented (OO) framework technology. The preferred embodiment is implemented in an object oriented programming environment. Therefore, an exemplary OO system will be described next. Individuals skilled in the art of OO framework technology may wish to proceed to the Detailed Description section of this specification. However, those individuals who are new to framework technology, or new to OO technology in general, should read this overview section in order to best understand the benefits and advantages of the present invention.
Object-oriented Technology v. Procedural Technology
Though the present invention relates to a particular OO technology (i.e., OO framework technology), the reader must first understand that, in general, OO technology is significantly different than conventional, process-based technology (often called procedural technology). While both technologies can be used to solve the same problem, the ultimate solutions to the problem are always quite different. This difference stems from the fact that the design focus of procedural technology is wholly different than that of OO technology. The focus of process-based design is on the overall process that solves the problem; whereas, the focus of OO design is on how the problem can be broken down into a set of autonomous entities that can work together to provide a solution. The autonomous entities of OO technology are called objects. Stated another way, OO technology is significantly different from procedural technology because problems are broken down into sets of cooperating objects instead of into hierarchies of nested computer programs or procedures. That is, procedural technology defines a system in terms of data variables and process functions whereas OO technology defines a system in terms of objects and classes.
The Term "Framework"
There has been an evolution of terms and phrases which have particular meaning to those skilled in the art of OO design. However, the reader should note that one of the most loose definitions in the OO art is the definition of the word "framework." The word framework means different things to different people. Therefore, when comparing the characteristics of two supposed OO frameworks, the reader should take care to ensure that the comparison is indeed one of "apples to apples." As will become more clear in the forthcoming paragraphs, the term framework is used in this specification to describe an OO technology system that has been designed to have core function and extensible function. The core function is that part of the framework that is not subject to modification by the framework purchaser. The extensible function, on the other hand, is that part of the framework that has been explicitly designed to be customized and extended by the framework purchaser as part of its implementation.
OO Framework
While in general terms an OO framework can be properly characterized as a type of OO solution to a programming problem, there is nevertheless a fundamental difference between a framework and a basic OO programming solution. The difference is that frameworks are designed in a way that permits and promotes customization and extension of certain aspects of the OO solution, whereas a basic OO solution can be said to comprise a particular collection, or library, of classes and objects. In other words, frameworks provide an OO programming solution that can be customized and extended to address individualized requirements that change over time. Of course, the customization/extension quality of frameworks is extremely valuable to purchasers (referred to herein as framework consumers) because the cost of customizing or extending a framework is much less than the cost of replacing or reworking an existing program solution.
Therefore, when framework designers set out to solve a particular problem, they should do more than merely design individual objects and specify how those objects interrelate. They should also design the core function of the framework (i.e., that part of the framework that is not to be subject to potential customization and extension by the framework consumer) and the extensible function of the framework (i.e., that part of the framework that is to be subject to potential customization and extension). In the end, the ultimate worth of a framework rests not only on the quality of the object design, but also on the design choices involving which aspects of the framework represent core function and which aspects represent extensible function.
ZAF--An Illustrative Framework
While those skilled in the art appreciate that framework design is necessarily an intertwined and iterative process, example design choices for a simplistic framework are set forth in the paragraphs that follow. It should be understood, though, that this is only an example framework that is being used in this specification to illustrate and best explain frameworks such that the reader can better understand and appreciate the benefits and advantages of the present invention.
Framework designers determine what objects are needed for a framework mechanism by selecting objects from what is called the problem domain. The problem domain is an abstract view of the specific problem at hand. The example problem domain chosen for the illustrative framework is that of zoo administration. The specific problem presented is that of designing a framework that assists zoo keepers in the care and feeding of zoo animals. In the example, which will be referred to as a Zoo Administration Framework (ZAF), an OO framework designer would look to the zoological problem domain and decide that any ZAF would of necessity involve an abstraction that represents the relationship between zoo keepers and animals (i.e., represents how zoo keepers care for animals). The framework designer would also likely recognize that zoo animals usually live in cages, pens, tanks, and other sorts of containment units. Therefore, the framework designer also would start with the idea that the framework would have to involve abstractions or mechanisms that represent all of these fundamental entities and relationships.
How ZAF is Designed
To begin the design process, the framework designer would likely begin with what is called a category diagram. Category diagrams are used to describe frameworks at a high level and to define how the framework components relate to one another. FIG. 1 is a category diagram for the example framework ZAF. The notation used in FIG. 1, and that used in the other figures of this specification, is explained in detail in the Notation section at the end of this portion of the specification. Each entity, or icon, in a category diagram represents groupings of data objects that perform a particular function. For the purposes of illustration, assume that the framework designer decides that ZAF should be made up of four components that, at a high level perspective, will be referred to as mechanisms: a Zoo Administration mechanism, a Zoo Keeper mechanism, an Animal mechanism, and a Containment Unit mechanism.
As shown in FIG. 1, the Zoo Administration mechanism has been designed to use the Zoo Keeper mechanism to administer the zoo. The Zoo Administration mechanism is therefore said to have a "using" relationship with the Zoo Keeper mechanism. (Again, please refer to the notation section of this specification for an explanation of this relationship and the other notation used in this specification.)
As discussed above, the Zoo Administration mechanism has been designed to have responsibility for overall control of ZAF. Accordingly, the Zoo Administration mechanism is responsible for scheduling the operation of the Zoo Keeper mechanism. Note also that the framework designer has designed the Zoo Administration mechanism to be a core function of ZAF, which means that it has been designed such that it will not be subject to potential customization and extension. The upper case block letter "C" in the category box for the Zoo Administration mechanism denotes this fact. Note further that the "uses" relationship between the Zoo Administration mechanism and the Zoo Keeper mechanism also has been designed as a core function such that it is not available for ultimate customization by the framework consumer.
The Zoo Keeper mechanism has been designed to be generally responsible for the care and feeding of the zoo animals. Accordingly, it uses the Animal and Containment Unit mechanisms to perform its tasks. Unlike the design of the Zoo Administration mechanism, however, the framework designer has designed the Zoo Keeper mechanism to be an extensible function, which again means that the Zoo Keeper mechanism has been designed to be available for modification and/or extension by the framework consumer to address future care and feeding requirements. This fact is denoted by the upper case block letter "E" in the Zoo Keeper mechanism category box.
The framework designer has designed the Animal mechanism to represent the animal side of the interaction between zoo animals and zoo keepers. Since the animal population in the zoo is something that changes on a regular basis, the Animal mechanism has similarly been designed as an extensible function. The Containment Unit mechanism interacts with the Zoo Keeper mechanism by representing individual containment units such as pens, tanks, and cages. Like the Animal mechanism, the Containment Unit mechanism has been designed as an extensible function such that it can handle future customization and extension requirements. Please note here, however, that even though the Zoo Keeper, Animal, and Containment Unit mechanisms have all been designed as extensible functions, the relationships between the mechanisms have been designed to be a core function of ZAF. In other words, even though it is desirable to give ZAF's consumers flexibility relative to the Zoo Keeper, Animal, and Containment Unit mechanisms, it is not desirable to allow ZAF's consumers to change how these mechanisms relate to one another.
The framework designer next designs the classes and relationships that make up the mechanisms shown on FIG. 1. A class is a definition of a set of like objects. As such, a class can be thought of as an abstraction of the
objects or as a definition of a type of object. From the view of a computer system, a single object represents an encapsulated set of data and the operation or a group of operations that are performed by a computer system upon that data. In fact, in a secure computer system, the only access to the information controlled by an object is via the object itself. This is why the information contained in an object is said to be encapsulated by the object.
Each class definition comprises data definitions that define the information controlled by the object and operation definitions that define the operation or operations performed by objects on the data that each object controls. In other words, a class definition defines how an object acts and reacts to other objects by defining an operation or set of operations that is/are performed on the defined data. (Please note that operations are sometimes called methods, method programs, and/or member functions.) When taken together, the defined operation(s) and data are said to be the behavior of the object. In essence, then, a class definition defines the behavior of its member object or objects.
FIG. 2 is an OO class diagram that shows the fundamental classes that the framework designer has designed for ZAF. Each class representation indicates its relationship to the mechanisms shown on FIG. 1. For example, the Zoo Keepers class is denoted as being from the Zoo Keeper mechanism. The fundamental classes of ZAF include: the Zoo Administrator class, which is part of the Zoo Administration mechanism; the Zoo Keeper Registry class, which is also part of the Zoo Administration mechanism; the Animal Registry class, which is part of the Zoo Keeper mechanism, the Zoo Keepers class, which is also part of the Zoo Keeper mechanism; the Containment Unit Registry class, which is also part of the Zoo Keeper mechanism; the Animals class, which is part of the Animal mechanism; and the Containment Unit class, which is part of the Containment Unit mechanism. It should be noted that the relationships between the classes have been designed as core functions of ZAF such that they are not available for ultimate modification by ZAF's consumers.
The Zoo Administrator class is the definition of the object that is responsible for the overall control of ZAF. Again, OO classes only define the objects that interact to provide a solution to the problem. However, it is by exploring the characteristics of the class definitions that one is able to understand how the objects of the framework mechanism have been designed to provide a living solution that can be customized and/or extended to address future requirements.
The Zoo Administration class has been designed to have a "uses" relationship with the Zoo Keeper Registry class. The framework designer has designed the Zoo Administration and Zoo Registry classes to be a core function of ZAF because the designer has decided that ZAF's consumers should not be allowed to modify the behavior of objects that are members of these class definitions. The Zoo Keeper Registry, which has what is called a "contains by reference" relationship with the Zoo Keepers class, is simply a class that defines an object that is a container for all zoo keeper objects. Accordingly, the Zoo Keeper Registry includes a definition for a list.sub.-- zoo.sub.-- keeps() operation. As will be described later, this operation is responsible for providing a list of Zoo Keepers objects to other objects that request such a list.
FIG. 3 shows a lower level view of the Zoo Administrator class. Because objects of type zoo administrator have responsibility for overall control of ZAF, the Zoo Administrator class has been designed to include operations that perform tasks oriented towards zoo administration. The class definition includes the following five operations: 5.sub.-- minute.sub.-- timer(), add/delete.sub.-- animal(), add/delete.sub.-- containment.sub.-- unit(), add/delete.sub.-- zoo.sub.-- keeper(), and start zoo.sub.-- admin().
The start.sub.-- zoo.sub.-- admin() operation is responsible for starting ZAF. That is, a user or system administrator will interact with the start.sub.-- zoo.sub.-- admin() operation to begin administration of a zoo via ZAF. The start.sub.-- zoo.sub.-- admin() operation has been designed to initiate the 5.sub.-- minute.sub.-- timer() operation such that, every five minutes, the 5.sub.-- minute.sub.-- timer() operation instructs the Zoo Keepers objects to go out and check on the zoo animals. The add/delete.sub.-- zoo.sub.-- keeper() operation is responsible for interacting with users of ZAF to define additional zoo keepers (i.e., additional Zoo Keepers classes), to add additional zoo keepers (i.e., Zoo Keepers objects), and to remove Zoo Keeper classes and/or objects. As will become clear in the forthcoming paragraphs, each of the Zoo Keepers objects is responsible for performing a particular zoo task. Therefore, it is natural that a user of ZAF might well want to add a Zoo Keepers definition and object to handle an additional zoo task or to remove a definition or object that is no longer needed. The ZAF framework designer has provided this flexibility by designing the Zoo Keeper mechanism as an extensible function.
Like the add/delete.sub.-- zoo.sub.-- keeper() operation, the add/delete.sub.-- animal() operation is responsible for interacting with users to define additional zoo animal classes and objects and also to remove classes and objects that are no longer needed. Again, it is quite natural for a zoo to need to add and remove animals. The add/delete.sub.-- containment.sub.-- unit() operation is responsible for the definition of new Containment Unit classes and objects and for removal of classes and/or objects that are no longer necessary. Again, the framework designer has provided such flexibility by designing the Animal and Containment Unit mechanisms as extensible functions.
Referring back to FIG. 2, the Zoo Keepers class definition has a "uses" relationship with the Animal Registry, Animals, Containment Unit Registry, and Containment Unit classes. Since the value of ZAF is enhanced by allowing ZAF's consumers to customize and extend the Zoo Keepers, Animals, and Containment Unit classes, the ZAF framework designer has designed these classes as extensible functions. However, changing the behavior of the Animals and Containment Unit Registry classes would disrupt the basic operation of ZAF. Therefore, the framework designer has designed these classes to be core functions of ZAF.
FIG. 4 is a class diagram of the Zoo Keepers class. However, before describing the details of FIG. 4, it is worthwhile to point out that the class definitions shown on FIG. 4 are ranked in a very simple ordering called a class hierarchy. A class, like the Zoo Keepers class, that represents the most (generalized/abstract class in a class hierarchy is referred to as the base class of the hierarchy. The ordering of classes in a class hierarchy goes from most general to least general (i.e., from general to specific), less general classes (e.g., the Feeder class) are said to inherit characteristics from the more general class or classes (i.e., the Zoo Keepers class in this case). As such, class definitions Feeder, Veterinarian, and Temperature Controller are said to be subclasses of the Zoo Keepers class. Inheritance mechanisms will be explored in more detail in the discussion associated with FIG. 5.
As shown on FIG. 4, the Zoo Keepers class definition contains a single operation definition, the check.sub.-- animals() operation definition. The reader should also note that the Zoo Keepers class definition is marked as being an abstract class. Abstract classes are not designed to have objects created as their members, but are instead used to define a common interface/protocol for their subclasses. A class is said to be an abstract class when at least one of its operation definitions is a pure virtual operation definition. Pure virtual operation definitions are designed for the sole purpose of defining a common interface for subclass definition of that operation. In other words, the design of the actual behavior (i.e., the data and operations) is left to the subclasses themselves. In the case of the Zoo Keepers class definition, the Feeder, Veterinarian, and Temperature Controller subclasses define specific implementations of the pure virtual check.sub.-- animals() operation definition that is contained in the Zoo Keepers class. An operation is marked as a pure virtual operation when it is set equal to 0.
It is important to note, though, that the common interface of a pure virtual operation definition must be honored by all subclasses such that requesting objects (called client objects) can use subclass member objects (called server objects) without needing to know the particular subclass of the server object. For examples whenever the object defined by the Zoo Administrator class needs a particular action performed, it interacts with a Zoo Keepers object. Because the interface to these objects was defined in abstract, base class Zoo Keepers and preserved in the subclass definitions for the check.sub.-- animals() operation, the Zoo Administrator object need not have special knowledge about the subclasses of any of the server objects. This has the effect of decoupling the need for the action (i.e., on the part of the zoo administrator object) from the way in which the action is carried out (i.e., by one of the objects of the Zoo Keepers subclasses). Designs (such as the ZAF design) that take advantage of the characteristics of abstract classes are said to be polymorphic.
Polymorphism is extremely important to OO framework design because it