[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
1.1 Powerloom Features | ||
1.2 Powerloom History | ||
1.3 Running PowerLoom |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
holds
sentences, modal assertions (sentences about
sentences), cross-context assertions via ist
to represent lifting
axioms, defaults (still experimental), and others. The goal is to
provide a highly expressive representation language, since KR failures
or awkward models are often due to "we could not express X in language
L". The theoretical undecidability and intractability of such an
expressive language is counteracted by providing limited, "pragmatic"
reasoning services that cover commonly encountered situations. For
example, reasoning with second-order sentences that quantify over
relations is undecidable and leads to very unfocused search; however,
such sentences are very useful to describe axiom schemata that can be
cheaply run in forward direction to create regular first-order rules (in
a process not unlike macro expansion).
ask
(for true/false questions) and
retrieve
(for Wh-questions). PowerLoom uses a natural deduction
system to answer queries but also has a large number of specialized
reasoning procedures to efficiently handle concept and relation
hierarchies, sets, frame predicates, search control, etc. The
specialist architecture is extensible to allow users to plug-in their
own reasoners or computed predicates. PowerLoom also supports
hypothetical reasoning, equality reasoning, arithmetic and reasoning
with inequalities. While PowerLoom is not a description logic,
it does have a classifier that can classify concept and relation
hierarchies and instances defined using the full expressive power of
first-order logic. The classifier does not provide any additional
inferences, but allows PowerLoom to eagerly pre-compute and cache
subsumption relationships which can then be utilized over and over
without having to re-derive them. PowerLoom also provides some
experimental abductive and partial-match reasoning to handle incomplete
knowledge bases.
unknown
if it cannot prove or
disprove a question. However, concepts and relations can be selectively
marked as closed to support selective closed-world reasoning. PowerLoom
also has a fail
predicate (in addition to true negation via
not
) to implement closed-world negation-as-failure which can be
useful in certain situations.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<to be written>
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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. PL-USER |= |
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.
1.3.1 Command-Line Options |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] [--batch] [--help] [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 January 6, 2023 using texi2html 1.82.