Class Library Implementation of an Open Architecture Knowledge Support System

Brian R. Gaines
Knowledge Science Institute
University of Calgary
Alberta, Canada T2N 1N4
gaines@cpsc.ucalgary.ca

Abstract

Object-oriented class libraries offer the potential for individual researchers to manage the large bodies of code generated in the experimental development of complex interactive systems. This article analyzes the structure of such a class library that supports the rapid prototyping of a wide range of systems including collaborative networking, shared documents, hypermedia, machine learning, knowledge acquisition and knowledge representation, and various combinations of these technologies. The overall systems architecture is presented in terms of a heterogeneous collection of systems providing a wide range of application functionalities. Examples are given of group writing, multimedia and knowledge-based systems which are based on combining these functionalities. The detailed design issues of the knowledge representation server component of the system are analyzed in terms of requirements, current state-of-the-art, and the underlying theoretical principles that lead to an effective object-oriented implementation. It is shown that modeling the server through intensional algebraic semantics leads naturally to an open-architecture class library into which new data types may be plugged in as required without change to the basic deductive engine. It is concluded that the development of a principled class library targeted on complex interactive applications does empower the individual researcher in the rapid prototyping of experimental systems. However, it is noted that much of the power of the approach stems from the cumulative evolution of the class library through successive applications, and hence the results may not generalize to team projects where greater rigidity is required in the class library in order to facilitate project management and inter-member coordination.

1 Introduction

One of the most difficult problems that faces researchers experimenting with complex interactive systems for real-world applications is the management of the large bodies of code generated in developing the systems. Personal computer users now commonly experience rich, multi-functional networked environments involving the integration of a wide range of applications. As the scope and functionality of such environments increase, it is becoming problematic to experiment with innovative applications since the development effort required can be very substantial while the utility of the research may be uncertain until empirical studies can be undertaken with a prototype system.

The object-oriented programming paradigm has been presented in the literature as providing capabilities for managing large bodies of code through structured modular decomposition that simplifies code generation and maximizes the possibilities for reuse (Booch, 1991). However, the effectiveness of the paradigm in providing support for large-scale software development through modularity and reuse has not yet been proven (Biggerstaff and Perlis, 1989a,b). It is to be expected that an object-oriented approach alone will not make a major difference to the problems of managing large-scale software development involving many people. The human factors of such projects often dominates the technological factors in determining factors critical to success, and it is now generally accepted that technology can only be used effectively when a high level of human process management has been achieved (Humphrey, 1989). For researchers, however, different questions apply since the development resources available are generally small and the requirement is for powerful tools to support the individual researcher in rapidly prototyping complex systems that have to be sufficiently stable for purposes of experiment but do not, initially at least, require the full support of a commercial product.

This article describes experience in the application of the object-oriented paradigm to the development of knowledge support systems involving a wide range of complex, interactive technologies. The results suggest that a researcher, or small research team, can develop a class library that supports the rapid prototyping of a very wide range of systems including collaborative networking, shared documents, hypermedia, machine learning, knowledge acquisition and knowledge representation, and various combinations of these technologies. That is, the class library approach to development does empower the individual researcher and enable complex systems to be developed rapidly for purposes of experimental testing.

The following section gives an overview of the types of system that have been developed around the class library described, and the remainder of the paper focuses on one major application, that of the development of a principled, open architecture knowledge representation server (KRS) used to support many of the other applications. The server development is of particular interest because it demonstrates the links between the underlying theory of an application and its object-oriented implementation. It also exemplifies a technology that is of widespread application in many knowledge-based interactive systems.

2 Knowledge Support Systems

Expert systems, intelligent tutoring systems, knowledge acquisition systems, and a range of other knowledge-based systems, are examples of technologies supporting human knowledge processes. So are many other more routine technologies, such as electronic mail and desktop publishing. In system development we are moving towards the integration of a wide variety of such knowledge support systems developed by different research communities (Gaines, 1990b), for example:

Each of these research communities has its own major specialties, conferences, literature and deliverables, and yet from a knowledge support systems perspective they are all closely interrelated in providing support of human knowledge processes. Moreover, from a user perspective the systems developed that provide services in each of the specialist sub-disciplines are complementary tools to which access should be provide through an integrated environment. One requirement of the research program of which the work described in this article is part has been to provide a software environment for research on knowledge support systems spanning the range of applications listed above, and their various combinations.

Figure 1 shows the architecture of the family of knowledge support systems for the Apple Macintosh supported by the class library discussed in this paper. It is shown as a 'jigsaw puzzle' of loosely coupled components because that is the way the individual major sub-components have been designed, implemented and used. That is, in terms of overall functionality the system consists of a number of relatively independent applications that operate effectively as stand-alone programs, but can also be coupled together through inter-application protocols in various forms of integrated system. Underlying all the applications is a common class library with modules that are reused in different ways in various applications. The class library provides all user interface functionality and hence supports the provision of a uniform style of access to all applications. It also provides filing, networking, inter-application communication protocols, and the wide range of data structures required by the different applications, and hence it exemplifies the possibility of factoring out common modules from many different applications and reusing them in apparently distinct implementations.

Figure 1 Architecture of a general knowledge support system

At the center of Figure 1 is the implementation of knowledge support systems serving specific user communities and each operating through a particular integration system that draws upon the services of the surrounding application sub-systems. A wide variety of knowledge support systems can be created with comparatively little effort by programming different integration systems. All of the application systems are themselves programmable through the Apple high-level object event protocol (Apple, 1993a), can be driven by any of the scripting languages in Apple's open scripting architecture such as AppleScript (Goodman, 1993), Frontier (Winer, 1992) and TCL (Ousterhout, 1994), and can themselves run scripts from within the application. The development of a specific knowledge support system generally involving writing scripts to provide the required functionality by drawing upon existing application sub-systems. Highly innovative applications may require the existing applications to be extended or new ones to be written using the underlying C++ class library, and sometimes this may involve enhancement of the class library itself. However, as the family of application sub-systems has grown during the past four years, the prototyping of new experimental knowledge support systems has become increasingly a matter of writing a relatively small integration system as a script.

Reading around Figure 1 clockwise from the lower left corner, the major application systems are:

Networking and Electronic Mail System

The networking and mail sub-system supports both local and wide area networks through protocols such as AppleTalk and TCP/IP (Hunt, 1992). It also implements the Unix protocols (Krol, 1992) for telnet, ftp, smtp, gopher and world-wide web http, to allow integration with networked information retrieval and mail systems (Quarterman, 1990). An example application of this system is RepGrid-Net, a group knowledge elicitation and modeling tool that integrates knowledge elicitation methodologies with electronic mail (Shaw and Gaines, 1993).

Agent System

The agent sub-system supports independent light-weight processes across the network that can perform specific tasks such as transport of data for processing through specialist facilities at remote sites. It also implements the protocols for inter-agent communication such as Apple object events (Apple, 1993a) and KQML (Finin, Weber, Wiederhold, Genesereth, Fritzson, McKay, McGuire, Shapiro and Beck, 1992). An example application of this system is Mediator, a networked enterprise integration tool for coordinating the product life cycle in intelligent manufacturing systems (Gaines and Norrie, 1994).

Active Document and Group Writing System

The active document and group writing sub-system supports the production and editing of documents with full typography and embedded pictorial material. It provides word processing and page layout features comparable with those of commercial applications. The documents are active in that they support embedded panes from other applications, and they are versioned at the paragraph and document levels to support collaborative writing. Example applications of this system are KWrite, a multi-media document preparation system (Gaines and Shaw, 1993c) which also supports embedded knowledge bases and hence can be used to run expert systems (Gaines and Shaw, 1992), and GroupWrite a collaborative writing system (Gaines and Malcolm, 1993).

Hypermedia System

The hypermedia sub-system supports the acquisition, editing, linking and navigation of multimedia materials both within the computer and through control of external systems such as videodisks. An example application of this system are studies of the relative efficacies of books and hypermedia in the presentation of knowledge-structures for sports coaching material (Vickers and Gaines, 1988).

Text Analysis System

The text analysis sub-system supports the analysis of text through a variety of tools for lexical analysis, assignment of parts of speech, assignment of affective loading (Whissel, 1989), and collocation analysis (Reed, 1984). An example application of this system is the Texan concept extraction and clustering tool used as a front-end to knowledge elicitation (Shaw and Gaines, 1987), and to model the conceptual structure of documents specifying the objectives of collaborative communities (Gaines and Shaw, 1994).

Knowledge Elicitation System

The knowledge elicitation sub-system supports the development of conceptual structures through interaction with human experts using extended repertory grids. An example application of this system is the suite of knowledge elicitation tools comprising KSS0 (Gaines and Shaw, 1993b).

Conceptual Induction System

The conceptual induction sub-system supports the development of conceptual structures through empirical induction from datasets of cases using the Induct algorithm (Gaines, 1989). It can derive a variety of structures including rules with exceptions such as Compton's ripple-down rules (Compton, Edwards, Kang, Lazarus, Malor, Preston and Srinivasan, 1992). An example application of this system is the modeling of a large data set of some 47,000 medical cases comprising ten years data from a thyroid treatment clinic (Gaines and Compton, 1993).

Visual Language System

The visual language sub-system supports the specification and application of arbitrary visual languages comprising graphs of nodes and links with a wide variety of node and link types available. It enables a system developer or an end-user to create customized tools for concept mapping, semantic networks, bond graphs, Petrinets, and so on, without having to develop code. Example application of this system are the KDraw semantic network tool (Gaines, 1991b) and the KMap concept mapping tool (Gaines and Shaw, 1993d).

Knowledge Representation and Inference System

The knowledge representation and inference sub-system supports knowledge bases and object-oriented and deductive databases. An example application of this system is the solution of the Sisyphus room allocation problem (Gaines, 1994).


1 Introduction, 2 Knowledge Support Systems, 3 Examples of Implemented Systems, 4 Knowledge Representation, 5 Knowledge Representation Server, 6 Implementation Architecture, 7 Theoretical Basis, 8 Constraint Algebras, 9 Set-Theoretic Constraint Algebras, 10 Roles as Indices, 11 Implementation of CLASSIC, 12 Concrete Example, 13 Plug-in Data Types, 14 Conclusions, References,