.../sources/stella/ChangeLogthat are shipped with each release.
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
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
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.
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.