Algernon 6.1 15 Feb 2007
- Modified AlgernonProtegeFrameListener to handle frames
with embedded spaces in their names.
- Added :COUNT-PATHS command similar to :COUNT.
- Fixed bug in :DIRECT-INSTANCE that would not return the
correct value if it failed when TRACE was :NORMAL or :SILENT.
- Added :SEARCH-ALL to do a global search of the KB.
- Requires adding "apis/search/search-api.jar" to the
classpath in the protege.lax file.
- Added result count in the title area of the result table in the AlgernonTab.
- Adding :SEARCH
- Updated documentation for new :SEARCH and :SEARCH-ALL commands.
Algernon 6.0 23 Jan 2005
- Recompiled with Protege 3.0 beta, Build 124
- Algernon rules now recognize and respond to changes
made in the Protege GUI. If you change the value
of a slot via the Protege GUI, any relevant Algernon
forward-chaining rules will fire.
- Modified Processor.activateClosures() to accept
a null kbSet argument. If it is null, it uses
the result of algernon.getKbSet() as its KBSet.
- Added CollectionUtil.last() method.
- Added some get/set methods to AlgernonCompiler.
- Modified AlgernonProtegeKb.convertToAlgernon to return a String
in the default case rather than returning the input object.
The non-Algernon object causes errors later in processing.
Bug reported by mfeblowitz.
Algernon 5.0.1 03 Jan 2005
- Linked in correct version of Jatha (2.4.0).
- Updated version to 5.0.1 for release.
Algernon 5.0 02 Jan 2005
- Fixed bug in documentation of :LIMIT.
- Fixed error in Processor.tryToInstantiate(). IF condition had
an extra clause and thus rule failures were handled incorrectly
unless :VERBOSE tracing was turned on. (Thanks for the detailed
error report from Alan Lockett.)
- The String.concatenate() function changed in the last version
of Jatha, but the Algernon code was not updated to reflect this.
Also, there was a problem passing the first argument to the
concatenate function. I fixed this in Jatha and fixed the
5 calls to concatenate in the Algernon code.
- Due to the above fixes, Backward chaining rules now work
again in Algernon.
Algernon 4.9 10 Aug 2004
- Fixed a problem with reloading rules inside the AlgernonTab
in Protege. The loaded rules weren't being compiled and thus
weren't executing.
- Updated the LISP backend to Jatha 2.1, which includes new
functions for String processing, including:
string string-upcase
string-downcase string-capitalize
nstring-upcase nstring-downcase
nstring-capitalize string-equal
string= string/=
string< string-lessp
string> string-greaterp
string<= string>=
string-not-lessp string-not-greaterp
string-ends-with string-starts-with
string-trim string-left-trim
string-right-trim position
- Fixed class loading utility routines used in JavaAPIKB.
From Java 1.4.2_04 to 1.4.2_05, Java is now enforcing
the restriction that path names should be '.' separated
and '/' characters are not allowed.
- Fixed a problem in the class loader where the file URL
to a jar file contained escaped characters (such as spaces).
The jar file name is now decoded using URLDecoder before
being passed to the file system.
- Fixed problem where the counted variable in :COUNT was
incorrectly assumed to be globally accessible by the compiler.
Algernon 4.8 26 Jul 2004
- The output table on in the Algernon Protege tab was
editable in Java 1.4.2. I made it uneditable. The
user can click once on a frame name in the output table
in order to display the frame using Protege's display API.
- Fixed problem where variables used in part of :ADD-INSTANCE
were not substituted by their bound values. Also fixed the
same problem in :ADD-CLASS.
- Fixed a problem with scanning for unbound variables in :OR
statements. Algernon was not finding unbound variables.
- Updated Jatha library to Jatha 2.0.
- Compiled with Protege 2.1.1 build 239.
Algernon 4.7 24 Jun 2004
- Recompiled with Jatha 1.9 and Protege 2.1.1 build 239.
Jatha 1.8 and previous versions contained an error in
the floating-point divide routine.
Algernon 4.6 7 Jun 2004
- Recompiled with Jatha 1.8.0 and Protege 2.1 build 232.
- Made trace statements conditional so they don't create the
output string for the trace if the trace message will not
be printed. This makes Algernon run faster and eliminates
the possibility of some stack overflows.
Algernon 4.5 28 May 2004
- Fixed a rare NullPointerException in the Algernon Compiler.
- Recompiled with Protege 2.1 beta.
- Created a Protege plugin in the new directory structure
preferred by Protege 2.1.
Algernon 4.4 07 May 2004
- Fixed a problem in the Algernon compiler where it would
sometimes not correctly handle a frame with a space in
its name.
Algernon 4.3 02 May 2004
- Fixed a problem in Processor.activateClosures that was caused by
copying code in during the v4.2 fixes and not changing the
variable name used in the code.
- Catch a Protege exception when trying to create an instance with
the same name as another frame. Now the code tacks on a numeric
suffix to the name and tries to create it with that name. Suffixes
start at "-2" and increase until an acceptable name is found.
Algernon 4.2 30 April 2004
- Fixed a problem with in ActivateBCRules where it would incorrectly
say that a string type slot name was not a valid name of a slot.
- Changed an ERROR message in Algernon.isInstance to a WARNING.
It now optionally prints if the debug level is high enough, rather
than printing all the time.
Algernon 4.1 13 Feb 2004
- Compiled with Protege 2.0 final, build 160.
- Promoted a couple of new forms of the lookupInstance method
up to the AlgernonKB interface.
- Altered the DirectInstance opcode to use a new version of lookupInstance.
- Fixed the lookupInstance method in HibernateKB to use the correct HQL form.
- Implemented hasDirectInstance and hasInstance in JavaAPIClass.
- AlgernonCompiler: added more trace messages, added an API call to turn
low-level trace messages on/off, fixed a possible null pointer exception
in the type binding methods.
- Added an option to the :TRACE command to turn compiler tracing on/off.
Use (:TRACE :DEBUG-COMPILER-ON) and (:TRACE :DEBUG-COMPILER-OFF).
- Modified :INSTANCE, :DIRECT-INSTANCE and :CHILD to accept the
form: (command class instance variable) so that
you can verify a relationship and assign the instance to a variable if
the relationship is true. For example: (:DIRECT-INSTANCE Dogs Rover ?rover).
- Fixed JavaAPIRelation.getArgumentTypes() when dealing with Java methods as slots.
- Removed an extraneous constructor in AlgernonTab used only for debugging that
used a deprecated and recently-removed constructor deep inside Protege's Tab classes.
- Recompiled with latest Protege. Previous versions of Algernon 4.0 beta
appear to have been compiled with both the Protege 2.0beta and Protege 1.9beta
jar files on the classpath, leading to clean compiles but anomalous behavior at runtime.
- Hack to AlgernonProtegeFrame.getName() to get around Protege 2.0 "feature" of
returning "slot not set" for the name of frames without browser text. Ray F.
says he will fix this in Protege 2.1.
- In AlgernonCompiler.implicitTypeRestrict, use the method toStringSimple in both
arguments of the call to generalIsa, not just in the first argument. Not sure
why this worked before.
- Fixed a couple of Protege calls that are now deprecated in Protege 2.0.
- Added the mini-Mycin example to the example/ directory in the source tree.
This was contributed by Mor Peleg.
Algernon 3.7.6, 4.0.2beta 25 Dec 2003
- Examples
- new top-level examples directory. Currently has the historical
"flu" example from Algernon. I split it into two versions, flu1.txt
and flu2.txt, which illustrate two different methods of implementing
the example.
- AlgernonProtegeKB:
- In constructor, it now creates a new, empty KB
if you send in null for the kbName (String) argument.
- In query, store and verify, it now returns FAILURE if you
try to store a negated clause. It used to return null
which caused an AlgernonDataException to be thrown.
- Processor: Added more trace messages.
- AlgernonCompiler:
- Fixed compilation of the ALL-PATHS command when compiled in a rule.
- Changed branch to SUCCEED to correctly branch to FAIL in ALL-PATHS.
- Added more trace messages.
- Changed rule compiler to correctly copy in existing binding lists.
- Opcodes:
- Ask: Changed format of questions asked.
- Branch: New trace messages to display activations.
- ConjunctiveBranch: New trace messages to display activations
- Query: Modified trace message to display the number of results.
- Select: New trace message to print ID of activation selected.
- ShowCode: Print binding list of code version.
- Subroutine: New trace messages.
- Trace: Added a new :STEP mode to aid in debugging. Use (:TRACE :STEP)
to enter step mode and (:TRACE :RUN)
to exist step mode.
- Activation: Store pointer to Algernon and give each activation a unique ID.
- BindingSet: Fixed unify() so that it looks up frames if given a symbol or string.
- AlgernonProtegeFrame: Modified getPossibleValues to handle non-frame values.
- Web site:
- Improved explanation of :ALL-PATHS.
- Updated documentation for :TRACE to include the new :STEP command.
- Updated Jatha library to v1.5.6.
Algernon 4.0.0beta 16 Dec 2003
- (mh) Recompiled with Protege 2.0 beta. Use 4.x version with Protege 2.0.
- (mh) Minor change in the error message printed when an input file can't be found.
Algernon 3.7.4 15 Dec 2003
- Removed lines erroneously inserted into AlgernonProtegeKB.isSimpleType.
Algernon 3.7.2 12 Dec 2003
!!! ----- WARNING: NON-BACKWARD-COMPATIBLE CHANGE ------------ !!!
- Changed method name of getOwnSlotValues on the interface AlgernonFrame
getOwnRelationValues to match Algernon's preference for 'relation' over 'slot'.
!!! ----- end of non-backward-compatible changes ------------ !!!
- Deactivated debug messages accidentally left activated
in AlgernonCompiler.java
- The SELECT opcode prints the value of the activation register
if the trace level is DETAIL or higher. However, it was
converting the activation list to a String whether
or not it printed it. This caused a StackOverflowError
when the activation list was large. Now it only
turns the value to a string if it is going to print it.
A list length larger than 3000 will cause a stack overflow.
- Removed some extra trace statements inadvertently left in.
- Enhanced AlgernonProtegeKB.convertToAlgernon to be able
to convert Long values, which had been inadvertently left out.
- Added the utility class org.algernon.util.ReflectionUtil containing
static methods for dealing with classes and methods.
- Renamed some methods on CollectionUtil that had been inadvertently capitalized.
- In Algernon.relationIsFull, don't retrieve the relation values
unless the relation has a limited maximum cardinality.
- Added code to AlgernonCompiler.typeEQ to accept types that
are a descendant of the type being requested. Not sure why
this wasn't in there years ago.
- Fixed problem in the compiler when compiling backward-chaining
rules. It now uses the correct classes of the arguments
in the clauses.
- First release of a KB backend that accesses data via a Java API.
org.pharmgen.kb.api.JavaAPIKB, JavaAPIClass, JavaAPIInstance, etc.
- Rewrote org.pharmgen.kb.agent.google.GoogleKB to use JavaAPIKB.
- Rewrote org.pharmgen.kg.agent.hibernate.HibernateKB to use JavaAPIKB.
Algernon 3.7 4 Nov 2003
- Algernon now supports the CLASS type for slots in Protege.
It also supports :ANY and :INSTANCE, although :INSTANCE
is hidden - when a relation is created with a range that
is a class in the KB, the slot is created with the
type of (:INSTANCE, class).
To use the CLASS type, specify 'class' (without the quotes)
as the range of a slot. If you use :CLASS, Algernon gets
confused because that is the name of a System class in Protege.
- Initial beta release of Java2Protege, an application that
converts a Java API to a Protege ontology.
- Released Algernon on SourceForge as Algernon-J.
Algernon 3.6.6 24 Oct 2003
- Fixed erroneous CardinalityException in AlgernonProtegeKB.
Should have been a generic StorageException.
- Made variables non-static in Algernon that were accidentally
left out of the changes in v3.6.3.
Algernon 3.6.5 08 Oct 2003
- Final fixes to handle Value Types correctly.
- Fixed condition where a DisplayName could get
added to the DisplayName slot more than once.
- Fixed incorrect call to set the range of a relation.
setTemplateFacetValue -> setTemplateFacetValues.
Algernon 3.6.4 06 Oct 2003
- Minor fix to initialize a variable correctly in
the Algernon tab.
Algernon 3.6.3 03 Oct 2003
- Major restructuring so that each AlgernonFrame knows which
instance of Algernon it belongs to. This facilitates running
multiple Algernons at the same time in the same memory space.
- Major changes due to changes in the Jatha LISP subsystem
similar to the changes described above.
- Fixed a few minor bugs found during testing after the
major changes above.
Algernon 3.6.2 29 Sep 2003
- Modified behavior of :COUNT to conform to the documentation.
It no longer branches and it always succeeds, binding the
result variable to zero if there are no values.
- Added :FOR command. Similar to :COUNT except that it
kind of iterates over the values. Always succeeds.
Creates N branches, one for each value (may be zero).
Algernon 3.6.1 24 Sep 2003
- Added :TEMPLATE-RELATION as a user-level command
to retrieve template slots of classes, or to
verify that a slot is a template slot of a class.
- Internal restructuring of command datatypes
so that the compiler code is cleaner.
- Activated type restriction code in Algernon Compiler.
A clause such as (:INSTANCE ?variable)
will cause the type of ?variable to become
if it is legal to do so (the new class must be a
subclass of the original type of ?variable). This
works for the Algernon commands :INSTANCE and :CLASS,
as well as the Protege slots :DIRECT-SUPERCLASSES and
:DIRECT-CLASS. Usually you will want to use :INSTANCE.
Algernon 3.6.0 12 Sep 2003
- Fixed compiler bug that caused it to reject some legal
slot value assignments.
- Added getTemplateRelations() to AlgernonClass.
- Compiled with J2SE 1.4.1_01-69.1 on Mac OS X 10.2.6
Updated to Protege 1.9 (build 1120)
Algernon 3.5.6 24 Jul 2003
- :ADD-RELATION in the Protege backend now allows slots to
be overridden on different classes, i.e. to reuse a slot
name with a different signature (domain and range).
Algernon 3.5.5 21 Jul 2003
- Extended the :ADD-RELATION command to be able to specify
:MIN-CARDINALITY, :MAX-CARDINALITY, :DEFAULT and :INVERSE.
Algernon 3.5.4 16 Jul 2003
- Fixed off-by-one errors which sometimes caused the wrong
rule continuation to be instantiated or checked at runtime.
- Fixed problem where rules would unnecessarily be recompiled
at runtime.
- Fixed problem where multiple Algernon menus would appear
in the Protege Algernon Tab when multiple tabs are configured.
- Fixed problem with activating backward chaining rules
that broke while fixing activation of forward chaining rules.
- Added optional :INCLUSIVE argument to :CHILD, :CLASS,
:DIRECT-CLASS, :DIRECT-INSTANCE, :DIRECT-SUBCLASS,
:DIRECT-SUPERCLASS, :INSTANCE, :LEAF-CLASS, :PARENT, :ROOT-CLASS,
:SUBCLASS, and :SUPERCLASS.
Algernon 3.5.3 10 Jul 2003
- Fixed problem where rule continuations would fire
when they shouldn't. The bindings stored with the
continuation were not being applied to the key clause
before the key was unified with the relation that activated
the rule. (Reported by Joe V)
Algernon 3.5.2 07 Jul 2003
- Removed one last remaining static initializer in
the rule compilation code that was causing a problem
in recognizing rules properly when Algernon was instantiated
twice. (Reported by Joe V and Aaron V)
Algernon 3.5.1 05 Jul 2003
- Fixed pervasive error where structure-traversing
commands like :CHILD and :DIRECT-INSTANCE would
succeed when they should actually fail.
- Removed extraneous debug message about the RULE Register.
(Reported by Joe V)
Algernon 3.5.0 02 Jul 2003
- Fixed error in compiling the :DELETE command. It wasn't
creating a Clause instance from the clause.
- Assertions no longer generate a visible exception when
the assertion would have exceeded the maximum cardinality
of a slot. The assertion now correctly fails and generates
a trace message if :VERBOSE trace mode or higher is enabled.
- Slight enhancement to trace messages for ASSERT and QUERY.
(Reported by Aaron VonderHaar.)
Algernon 3.4.9 30 Jun 2003
- Removed extraneous debug message during compilation.
- Fixed slot lookup (again). Wasn't working in some
cases where the slot type wasn't known ahead of time.
- Improved error message when an error occurs when calling
out to the LISP subsystem.
- Reported by Steven Wartik.
Algernon 3.4.8 19 Jun 2003
- Fixed type inferencing when value type is Instance and
slot is redefined in a different class. Implementation was
incomplete after v3.4.7 changes.
- Thanks to Steven Wartik for providing a detailed error report.
Algernon 3.4.7 10 Jun 2003
- Modified AlgernonCompiler to do type inference
when a variable is introduced in a :CHILD, :DIRECT-INSTANCE,
:DIRECT-SUBCLASS, :INSTANCE, :LEAF-CLASS, or :SUBCLASS
command.
- Modified slot type lookup to look up slot types at the class,
if that information is available. Protege allows slot value
types to be overridden in different classes, so the Protege
backend needs to look up the type specifically for that class,
not for the slot in general.
- Fixed external Java evaluator to correctly recognize Boolean
false values other than Boolean.FALSE.
- Thanks to Cindy Moncsko at SAS for pointing these problems out.
Algernon 3.4.1 23 May 2003
- Modified AlgernonProtegeFrame.getName() to call getBrowserText().
- Fixed behavior of :CHILD and :PARENT commands to match the documentation.
Algernon 3.4.0 16 May 2003
- Added code to prevent Algernon from printing output
when (:TRACE :SILENT) is set. Also added a "-s" command
line argument to set silent mode from the command line.
- Fixed call of load() to pass in current trace level
instead of :NORMAL.
Algernon 3.3.9 23 April 2003
- Finished implementing the :ALL-PATHS command.
- Fixed bug in compiler that only showed up when executing
the :ALL-PATHS command.
- Fixed handling of results from nested subroutines, such
as in (:FAIL (:ALL-PATHS ...)).
- Used setValueChecking/getValueChecking in Protege KB backend.
Algernon now requires Protege 1.8 final when using the Protege
backend (which is currently the only available KB backend).
Algernon 3.3.8 15 April 2003
- Added Algernon.getBinding() and Algernon.getAlgernonBinding()
for users who want to parse the Result returned by Algernon.
- Implemented opcodes ConjunctiveClear and ConjunctiveBranch
which are used in ALL-PATHS.
- Fixed bug in Clause.getVariableArguments that was causing the
compiler to sometimes incorrectly compile wrapped clauses (e.g. (:FAIL clause)
and (:NO-CONTINUATION clause)) in query mode rather than assert mode.
- Fixed bug in the SUBSTITUTE opcode which caused a ClassCastException
if there was no binding list on the stack. This was preventing some
:TAXONOMY statements from executing.
- Changed JavaEvaluator so that it converts arguments to Java objects
before looking up the method name and passing the arguments to the
method. Previously the arguments were instances of LispValue.
This affects (:BIND ?x (:JAVA ...)) and (:EVAL (:JAVA ...)).
THIS MODIFICATION IS NOT BACKWARD-COMPATIBLE.
- Fixed errors when compiling and running the :ANY command.
- Clarified compiler messages and HTML documentation for :NO-CONTINUATION.
:NO-CONTINUATION takes one and only one argument.
Algernon 3.3.5 07 April 2003
- Trapped an exception in the :FAIL opcode that was generated
by a user input syntax error.
- Added Algernon Tab menu item to Clear Query History.
- Fixed bug in compiling :NO-CONTINUATION clause.
- Added trace messages to better explain why backward
chaining rules didn't fire.
- Fixed bug in Query History. It wasn't correctly clearing
the query history when :CLEAR-RELATION was called.
Algernon 3.3.3 03 April 2003
- Set the name of the Algernon tab during initialization so it
can be accessed via protegeView.getTab("Algernon").
- Added a getAlgernon() method to AlgernonTab.
- Updated documentation.
- Fixed bug related to storing values in slots whose name starts with a colon.
- Implemented the :FIRE command, which allows the user to fire forward-chaining
rules as if a clause had been asserted. Useful if there is already data
in the KB that should have fired one or more rules.
Algernon 3.3.0 02 April 2003
- Fixed a problem with verify not working on String values.
- released as v3.3.0, first non-beta version
Algernon 3.2.9 (beta) 18 March 2003
02 Apr 2003 (mh)
- Initial version of AlgernonServer, using code contributed
by Emilio Remolina. The AlgernonTab has a "Server..." menu
item. Once the server is started, a client can contact
it and send Algernon commands (paths) to be executed by
the Algernon.tell() method. The ask() method is not supported
at this time.
01 Apr 2003 (mh)
- Finalized support for loading rules from frames.
The frames must be instances of a class specified by the user.
There can be multiple sets of frames in the KB at the same
time.
25 Mar 2003 (mh)
- Added Algernon tab command to load rules from the KB.
Rules are found as instances of a frame called :ALGERNON-RULE.
In the future, alternative locations will be supported.
17 Mar 2003 (mh)
- Added support for Protege "Cls"-type slots, which had been
inadvertently left out.
- Added some more user-level debugging statements (see the :TRACE command).
- Debug level is now set correctly when the trace level is set
inside a rule.
07 Mar 2003 (mh)
- Finished a major retooling of the Protege tab display.
- Added keyboard shortcuts for common commands.
- Added an Algernon menu in the Protege menu bar.
05 Mar 2003 (mh)
- Can now click on frames in the Algernon results table
to display the frame.
04 Mar 2003 (mh)
- Redesigned the Protege tab GUI.
03 Mar 2003 (mh)
- Fixed problem where adding a new tab in Protege re-initializes
Algernon and everything stops working. Reworked static vars
in AlgernonCompiler and changed the way that Algernon calls
LispParser.
Algernon 3.2.8 (beta) 25 February 2003
25 Feb 2003 (mh)
- Further modifications to Protege plugin interface.
Added input and output history and got rid of the
"variables to display" window, which nobody seems to use.
24 Feb 2003 (mh)
- Changed AlgernonProtegeKB to check cardinality of slots
before storing data in them.
- Modified Protege tab to display output in a table.
21 Feb 2003 (mh)
- Added CLEAR and LOAD buttons to Algernon Protege tab.
- Adjusted font size and color of labels on the tab page.
20 Feb 2003 (mh)
- Adjusted output format when results are printed.
Indent was off by one on first line.
- Removed unneeded classes in the Google backend.
Now only has GoogleKB.
Algernon 3.2.7 (beta) 19 February 2003
19 Feb 2003 (mh)
- Fixed bug in :NAME. (:NAME ?x "foo") now correctly retrieves
all frames with the name "foo".
- Added code to Processor.process() so that it reports runtime
errors in the ErrorSet passed in, and so that it correctly
reports FAILURE if the number of errors is > 0.
- Modified the Protege plugin so that it correctly reports
runtime errors in the output window.
Algernon 3.2.6 (beta) 18 February 2003
18 Feb 2003 (mh)
- Compiler, when called on-the-fly to compile a rule,
would eat the code if the rule had a warning or error
in it. Modified the compiler to print the error(s)
and allow the rule to execute.
- Protege backend now correctly supports :BOOLEAN, :FLOAT,
:INTEGER, :SYMBOL and :STRING types. Use :TRUE and :FALSE
for boolean values when using the :BOOLEAN type.
- Added more test cases, for rules and slot definitions.
Algernon 3.2.5 (beta) 12 February 2003
11 Feb 2003 (mh)
- Made compiler smarter about assigning types
in special forms like :ADD-CLASS and :ADD-INSTANCE.
- Changed Protege backend to send in null for
the new frame name when the user specified NIL.
NIL didn't work for some reason.
- Compiler now knows that the new frame variable
is bound in the tail of an :ADD-CLASS or
:ADD-INSTANCE form.
10 Feb 2003 (mh)
- Increased size of input window in Protege plugin.
- Added deployment and jar creation scripts.
- Incremented version number to 3.2.5.
- Fixed problem in assertion where the system
was too aggressive about turning strings and symbols
into frames.
Algernon 3.2.4 (beta) 10 February 2003
09 Feb 2003 (mh)
- Eradicated a bug in returning results that showed up
when executing the form (:FAIL (:TEST ...)).
08 Feb 2003 (mh)
- Fixed a couple of places in the Algernon compiler where
it was losing code that was passed into a specialty
compilation method.
- Simplified MiscellanyTest test program.
- Added trace messages to Create and Delete opcodes that
previously didn't print anything when VERBOSE trace mode
was turned on.
- Fixed case where Test-Succeed was erronously removing
a result set.
- The Return opcode now uses Processor.SUCCESS instead of LispValue.T.
- TestSucceed now correctly handles some obscure return cases.
- Fixed ADD-CLASS, ADD-INSTANCE, FORC-CLASS, FORC-INSTANCE,
THE-CLASS, THE-INSTANCE which were not correctly compiling
the optional path at the end of the clause.
- Changed Protege backend so that it doesn't rename a frame
if the new name is the same as the old name.
Protege 1.8 build 1026 incorrectly thinks that this causes
a duplicate name conflict and changes the name of the frame.
- :OR opcode is now implemented.
- Added check in CreateRules for a non-existent class.
- Added part of Tutorial #3.
Algernon 3.2.3 (beta) 05 February 2003
05 Feb 2003 (mh)
- Fixed type checking in the compiler.
- Fixed DELETE operations to have them place a result
in the RESULTS register.
- Modified the way that Relations return the parameter
types they expect. Now supports multiple domains and ranges.
Algernon 3.2.2 (beta) 04 February 2003
04 Feb 2003 (mh)
- Changed look of Protege tab plugin. No functional change.
- Results now correctly show when an operation failed.
- Note: type checking does not work correctly in the
Algernon compiler in this version.
Algernon 3.2.1beta 03 February 2003
03 Feb 2003 (mh)
- Fixed case where Algernon was stripping the leading ':'
from Protege slot names when looking up frames and relations by name.
- Fixed :DIRECT-CLASS to correctly get the immediate superclass rather
than acting the same as :CLASS.
- Fixed test case in SpecialTest testing program.
Algernon 3.2.0beta 03 February 2003
03 Feb 2003 (mh)
- Released 3.2.0beta.
02 Feb 2003 (mh)
- Tweaked results output format.
- Protege tab: Added list of variables to print.
- Modified Protege tab to have separate Ask and Tell buttons.
- Fixed assertions when value is not a frame.
01 Feb 2003 (mh)
- Added :USE-KB command to load KBs at runtime.
- Finished rudimentary Protege plugin.
31 Jan 2003 (mh)
- Added web site and documentation to the CVS archive.
- Moved Protege plugin to org.algernon.kb.okbc.protege.plugins
- Added org.algernon.Algernon.main() method for running Algernon from the command line.
28 Jan 2003 (mh)
- Implemented :LEAST-COMMON-SUPERCLASS macro.
- Implemented :BRANCH macro.
22 Jan 2003 (mh)
- Implemented :LIMIT macro.
- Implemented :COUNT macro.
- Modified compilation of :BIND so that it doesn't
substitute bindings for the variable to be bound.
This lets the programmer rebind a variable that has
already been bound before.
- Added new :SUBSTITUTE1 internal opcode to be used
with :BIND.
21 Jan 2003 (mh)
- Revised frame/relation lookup. Now, when a clause
is presented the relation is found in the KBSet and the
frame and value are found in the KB of the relation.
This facilitates using multiple KBs at the same time.
Went through all opcodes and fixed all calls.
- Finished :ASK implementation.
- Added AlgernonFrame.getPossibleRelationValues(AlgernonRelation)
and implemented it in the AlgernonProtegeFrame class.
- Fixed error-handling in various places.
16 Jan 2003 (mh)
- Implemented :DATE
15 Jan 2003 (mh)
- Implemented :TAXONOMY.
- Implemented AlgernonProtegeKB.createClass.
- Bug fixes in BindingSet management, eliminating
spurious reasoning branches.
13 Jan 2003 (mh)
- Fixed bug in Protege backend that was allowing
duplicate slot values.
- Added :PRINTLN command.
09 Jan 2003 (mh)
- Added new commands Child and Parent, and method
LeastCommonSuperclass.
- Added :TRACE command.
08 Jan 2003 (mh)
- Added Class, Subclass, Superclass, Instance, DirectSubclass,
DirectSuperclass, LeafClass, RootClass, DirectInstance commands.
- Verified all test programs.
03 Jan 2003 (mh)
- Added isClass, isFacet, isInstance, etc. methods.
File created 01 January 2003