PowerLoom® Release Notes

Below are summaries of user-visible changes for each major PowerLoom release. More recent releases are described first. More detailed code-level change documentation can be found in the files .../sources/powerloom/ChangeLog and .../sources/stella/ChangeLog that are shipped with each release.

PowerLoom 4.0.0.beta

Release date: Oct 18, 2010.
General:
- now includes Java-based PowerLoom GUI
- now includes Ontosaurus KB browser
- now ships with PowerLoom HTTP server backend which is available in
  Java and certain Lisps and which can be installed as a Tomcat Webapp
- now includes simple SOAP API to invoke PowerLoom commands remotely
- extended recording of inference justifications for forward inference
  and materialized queries (`assert-from-query') for improved explanation
- new support for long integer constants in KIF
- various new command line options, use `powerloom --help' to list
  them all
- many bug fixes

PowerLoom commands:
- `retrieve' takes a variety of new options such as :sort-by to sort
  retrieved results, :all-proofs? to force the generation of all
  proofs for a query and :check-variables? to force checking of
  correspondence between unbound query variables and output
  variables.  `retrieve' now existentially quantifies any open
  variables not listed as an output variable which is convenient for
  large queries with only a small number of output variables.  The
  check-variables? option can be used in case the user wants to check
  the exact correspondence of open and output variables.
- `assert-from-query' now takes a :record-justifications? option in
  case the user wants to record justifications for each asserted result.
- `all-facts-of' now accepts function terms
- new `print-facts' command which is similar to `all-facts-of' but
  prints its results a bit more readably
- new `start-powerloom-server', `stop-powerloom-server', `start-ontosaurus',
  `stop-ontosaurus', `start-powerloom-gui',  `stop-powerloom-gui'
  commands to control the PowerLoom server, Ontosaurus and the GUI.
- new `load-directory' and `load-cmd-line-files' to load all PowerLoom
  files in a directory or listed on the command line.
- STELLA functions `push-world' and `pop-world' are now commands that
  can be called to introduce anonymous hypothetical worlds in PowerLoom

PL-KERNEL-KB built-ins:
- new accessors `proposition-relation', `proposition-argument',
  `proposition-arguments' and `proposition-arity' to deconstruct
  propositions.
- new inference level control relations `assertion-query',
  `shallow-query', `subsumption-query', `backtracking-query',
  `normal-query' and `refutation-query'.  These are more efficient than
  calling `query' for this, since they don't involve the construction of
  a full-fledged query iterator.
- new collection relations `collect-into-list',
  `collect-into-ordered-set', `collect-into-ascending-set' and
  `collect-into-descending-set'.
- new generic collection accessors `minimum-element' and
  `maximum-element' that find the min or max in a collection of elements
  based on an arbitrary sort-by relation.
- new `first-element', `second-element', `third-element',
  `fourth-element', `fifth-element', `nth-element', `nth-head',
  `nth-rest', `insert-element' and `list-concatenate' for list access
  and de/construction.
- `absolute-value' and `negate' are now functions.
- generalized `string-concatenate' to use a variable number of
  arguments and to automatically coerce them to strings;  this is very
  useful for creating names on the fly.
- `name-to-object' now coerces its name argument to a string.
- `different' now properly handles `(not (different ...))'

STELLA updates:
- now uses STELLA 3.5.20

PowerLoom 3.2.0

Release date: May 27, 2006.
General:
- now released under a flexible open-source licensing scheme and all STELLA
  source code included
- now ships with PowerLoom Extensions system which supports powerful reasoning
  with units and dimensions and simple temporal reasoning with time points and
  durations
- new scripts to conveniently invoke PowerLoom's C++ and/or Java versions
  under Unix, MacOS and Windows
- consistently renamed all KB and demo files to use a `.plm' extension
- many bug fixes

PowerLoom commands:
- the PowerLoom command loop now prints the current module with the prompt
- new `list-modules' command lists modules currently defined in the system
- new `powerloom-information' displays version information of loaded systems
- new `reset-powerloom' resets PowerLoom to its initial state
- new `clear-caches' clears cached query results and memoization tables (this
  is occasionally useful for debugging or profiling)
- `load' and `demo' now support a file load path where files can be specified
  without directory and extension information as long as they can be found in
  the current file load path
- new commands `set-load-path', `get-load-path', `push-load-path',
  `pop-load-path', `add-load-path' and `drop-load-path' to manipulate the file
  load path
- new `time-command' to measure the execution time of a PowerLoom command

PL-KERNEL-KB built-ins:
- new `object-name' function to map a PowerLoom object onto its namestring
- new `name-to-object' function to find or create a PowerLoom object given a
  namestring.
- new `absolute-value' and `negate' relations for numbers
- the relation argument type for `instance-of', `type-of', `domain', `range',
  `nth-domain', `range-type', `qualified-range-min-cardinality',
  `qualified-range-max-cardinality', `qualified-range-cardinality' and 
  `refutation-disjoint' has been generalized from `concept' to `collection' to
  allow the use of unnamed collections defined via `setofall' or `kappa'.
- `holds' specialist: generalized to provide an `all-facts-of'-style result in
  case the relation variable is unbound.  For example, 
  `(retrieve all (holds ?r a ?x))' will return all binary relations ?r that
  have been asserted with `a' as their first and ?x as their second argument.

PLI:
- new `list-modules' function to list all modules currently defined in the system
- new `get-operator' function to yield the interned operator representation of
  operators such as "AND", "OR", "<=>", etc.
- new `is-inconsistent' function to test for inconsistent truth values
- name-to-object mapping in the following functions has been changed:
  - `get-object, `get-concept', `get-relation', `create-object', `create-function',
    `create-relation', `create-function'
  - now the name string is interpreted to be the print name of a STELLA
    symbol the way it would be spelled when typing a PowerLoom command in the
    command loop.  For example, `(get-object "PL-USER/|foo bar|")'.  This
    allows the use of fully qualified names and the use of names that come
    from different name spaces.
  - this change is PARTIALLY INCOMPATIBLE with previous releases.  For
    unqualified symbols that don't contain any special characters, there is no
    change; for names that do contain special characters, existing code needs
    to be adapted to include the appropriate escape characters.
- INCOMPATIBLE CHANGES to the `get-name' series of functions as follows:
  - `get-name' changed to always return a fully qualified name.
  - new `get-short-name' added to return only the name portion.
  - new `get-name-in-module' added to provide new access to a name that will be
    what is needed to access the named object from the given module.
- INCOMPATIBLE CHANGES to `get-nth-value' and friends to take module and
  environment arguments. These are needed to properly get values from
  proposition arguments that are skolems bound to values.
- New functions `get-keyword', `get-symbol', `create-keyword', `create-symbol'.
- `get-concept-instances', `get-concept-direct-instances': Make these use
  inference when not in an assertion environment, to give more complete results.

STELLA updates:
- now uses STELLA 3.4.0
- support for various new Common Lisps such as CLisp and SBCL (see manual)
- support for MinGW g++ under Windows which allows the generation of
  standalone C++ Windows executables
- Lisp version uses struct translation by default for improved speed

PowerLoom 3.0.2.beta

Release date: Oct 29, 2003.
PLI updates: 
- INCOMPATIBLE CHANGES:
  - `load' now takes an environment argument to be consistent 
    with other PLI functions.
  - Return type of `change-module' and `s-change-module' now is
    MODULE instead of OBJECT.
  - The type of all environment arguments is now ENVIRONMENT
    instead of OBJECT.
- New `create-module' and `s-create-module' functions.
- New `load-stream' and `load-native-stream' functions.
- `initialize' can now be called multiple times without harm.
- `s-ask' and `s-retrieve' now unstringify their arguments in 
  the correct module.  Also clarified their behavior with respect
  to top-level parentheses around their arguments - see manual.
- `generate-unique-name' now upcases its prefix for non-case-sensitive
  modules.  This is a temporary patch which should eventually be
  replaced with a "correct" fix.

PowerLoom updates:
- Fixed `retract' to work correctly for function propositions whose
  output value is shared by at least one other function proposition.
- Fixed `unassert' to work correctly on function propositions.
- Improved handling of truth-value clashes by marking offending propositions
  as inconsistent.
- Extended `unassert' to allow retraction of inconsistent propositions 
  (this only makes sense for propositions that were explicitly asserted 
  as inconsistent).
- Improved `member-of' evaluator to check whether an asserted member
  clashes with an enumerated set as in, for example,
     (member-of pink (setof red blue green))
  This improves handling of concepts that were defined via an enumerated set.
- Moved demo KB `business.ploom' into its own module.
- Printing of QUERY-ITERATOR objects now obeys the STELLA `*printlength*'
  variable.

STELLA updates:
- Now uses STELLA 3.3.2
- New Lisp switch `cl-user::*use-stella-hash-tables?*' now allows one to
  force the use of STELLA hash tables instead of native Lisp hash tables.
  This works around a reoccuring problem in Allegro-CL that causes performance
  problems with large hash tables.  This has been fixed by Franz various times
  but seems to crop up again and again.  Now we always use STELLA hash tables
  with Allegro-CL.

PowerLoom 3.0.1.beta

Release date: Oct-1, 2003.

Initial beta release of version 3.0. Be aware that this is a beta release, i.e., most likely you will encounter bugs, inconsistencies, missing features, etc.


Information Sciences Institute PowerLoom Home Page
PowerLoom is a registered trademark of the University of Southern California.
Last modified: Oct 18, 2010