PORK: CLOS-based Support for Modeling


PORK is an object system which brings a conventional object-oriented language closer to the requirements of frame-based programming. It only provides a very limited set of features (on top of the base object system itself), and aims to achieve seamless integration with conventional programming. The design of PORK draws from experience with frame systems like CRL and KEE, and from the insight into frame system design gained during the BEEF project.

PORK is implemented as a portable metalevel extension of the Common Lisp Object System (CLOS). It extends CLOS by adding the following concepts:

Frame systems, in comparison to object-oriented programming systems (OOPSs), often lack facilities for data hiding and support of encapsulation. OOPSs typically support encapsulation, allowing object manipulation through a well-defined function interface. Frame systems seldom restrict slot access in any way. As opposed to object-oriented programming systems, frame systems are usually designed for representing knowledge, with the programming aspect not necessarily considered very important. Object-oriented programming systems in general are not adequate for knowledge-based systems programming (see, for example, [Lassila 90]). Many attempts have been made to bring frame-based programming closer to mainstream programming by adding object-oriented programming features. PORK brings some of the features of frame systems into the realm of mainstream object-oriented programming. PORK achieves this by adding some useful features from frame systems into a standard object-oriented programming language.

PORK was originally developed to address the object system needs of DITOPS, a CLOS-based toolkit and class library for scheduling system development.


Platform Requirements

PORK stands for "Programmable Objects for Representing Knowledge". PORK was earlier called "Parsifal". In some sense, PORK is the long-awaited Well-Done BEEF (go figure...).
Jump to --> ICL Lab home page | Project home page
Ora Lassila <ora@cs.cmu.edu>