
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:
- Named
objects -
these simplify debugging (easier instance reference, easier instance
identification) and linked frame model construction. Collections of
named objects (called "namespaces") can also be used as a low-level
implementation vehicle for knowledge bases.
- References
to
nonexisting named objects - programs can manipulate objects that
have not yet been created. This greatly simplifies definition of
complex linked frame models with circular references.
- Slots
with multiple
values - and a mechanism for defining an access interface to these.
- Automatic
updating
of inverse slots - (these are similar to CRL's inverse slots.)
Otherwise PORK behaves exactly like standard CLOS, thus allowing PORK
and CLOS code to be freely mixed. PORK also has a metaobject protocol
to allow the system to be extended.
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
- Macintosh Common Lisp 2.0 (or newer)
- Lucid Common Lisp 4.1
- Franz Allegro Common Lisp 4.1, 4.2
- any CLtL2 or X3J13-compatible Common
Lisp -
with possibly some porting effort (typically package configurations are
different)
|
|
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...).
back to top
|