[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Introduction

This document describes the PowerLoom knowledge representation and reasoning system. PowerLoom is the successor to the Loom knowledge representation system. It provides a language and environment for constructing intelligent, knowledge-based applications. PowerLoom uses a fully expressive, logic-based representation language (a variant of KIF). It uses a natural deduction inference engine that combines forward and backward chaining to derive what logically follows from the facts and rules asserted in the knowledge base. While PowerLoom is not a description logic, it does have a description classifier which uses technology derived from the Loom classifier to classify descriptions expressed in full first order predicate calculus. PowerLoom uses modules as a structuring device for knowledge bases, and ultra-lightweight worlds to support hypothetical reasoning.

To implement PowerLoom we developed a new programming language called STELLA, which is a Strongly Typed, Lisp-like LAnguage that can be translated into Lisp, Java, and C++. STELLA tries to preserve those features of Lisp that facilitate symbolic programming and rapid prototyping, while still allowing translation into readable as well as efficient Java and C++ code. Because PowerLoom in written STELLA, we are able to deliver it in all three languages.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Powerloom Features

PowerLoom is a full-function, logic-based knowledge representation and reasoning system, that supports all aspects of knowledge-based applications. It allows the representation of complex knowledge in a declarative, logic-based language, supports a variety of reasoning mechanisms to make implicit knowledge explicit, has a powerful query engine to retrieve what has been asserted and logically follows from the KB, provides file-based and RDBMS-based storage of knowledge bases, has a context and module system to effectively partition and organize large knowledge bases, and has an extensive API in multiple language to allow easy and effective integration into knowledge-based applications.

PowerLoom’s focus is on expressivity of its representation language while still providing good scalability to large ontologies and knowledge bases. In general, PowerLoom takes a pragmatic stance where usability is more important than theoretical "neatness" and expressivity is more important than inferential completeness. From our point of view, there is nothing magical about logic, it is just another programming language (with difficult to understand semantics), so it should help you to solve the task at hand as best as possible and not hinder you by forcing you to work around restrictions of the logic. Of course, PowerLoom cannot completely escape the straight-jacket of logic, but it tries to push the boundaries as much as possible.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Powerloom History

<to be written>

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 Running PowerLoom

The easiest way to run PowerLoom on a variety of platforms is to use the ‘powerloom’ or ‘powerloom.bat’ scripts in the top-level PowerLoom directory. If you have Java installed on your system, these scripts should run out of the box without any further installation requirements. If you want to use the Lisp version of PowerLoom, simply load the file load-powerloom.lisp into your Common Lisp. If you want to use the C++ version, you have to compile it first. See the Installation section in this manual for more details on how to install the Lisp, C++ or Java version of PowerLoom See section Installation.

Under Unix or MacOS X, open a shell window somewhere to run PowerLoom. For example,

% powerloom
Running Java version of PowerLoom...
Initializing STELLA...
Initializing PowerLoom...

    Welcome to PowerLoom 4.0.0

Copyright (C) USC Information Sciences Institute, 1997-2010.
PowerLoom comes with ABSOLUTELY NO WARRANTY!
Type `(copyright)' for detailed copyright information.
Type `(help)' for a list of available commands.
Type `(demo)' for a list of example applications.
Type `bye', `exit', `halt', `quit', or `stop', to exit.


Under Windows, you can do something similar by running a Command Prompt window and executing the ‘powerloom.bat’ script. You can also simply double click on the script which will run PowerLoom and bring up a Command Prompt window for you.

Once the |= prompt has come up you can type in PowerLoom commands and see their results. The string preceding the prompt indicates the "current module" relative to which commands are interpreted. For example, type the demo command to see a menu of available demos. Step through one or more of them to get familiar with PowerLoom.

Starting with version 4.0 PowerLoom also ships with an experimental PowerLoom GUI and the Ontosaurus browser which can additionally be used to edit and browse knowledge bases.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3.1 Command-Line Options

There are a few command-line options that can be supplied to the ‘powerloom’ script.

powerloom [--c++|--java|--gui|--gui-only]
          [{-e|--eval} STELLA-EXPRESSION]
          [more options...]

The first optional argument determines what version to run if both C++ and Java versions are installed. If no specific version is specified, the C++ version will be run if it is installed, otherwise, the Java version will be run (see section PowerLoom GUI for a description of the GUI options).


Specifies a STELLA expression that should be run just before the PowerLoom command loop gets initialized. This expression has to be a known command (such as the various PowerLoom commands), since the STELLA evaluator cannot (yet) evaluate arbitrary STELLA code. For example, powerloom -e '(demo "equations" FALSE)' will run a particular demo before anything else. You will need to appropriately quote special characters interpreted by the shell or the Command Prompt window.


Runs PowerLoom in batch mode without running an interactive command loop. This can be useful in conjunction with the --eval option to execute a single command or load a PowerLoom script via the load command.


Prints a list of all currently supported command-line options.

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Hans Chalupsky on October 16, 2010 using texi2html 1.82.