Priorities for Algernon Development
This is a prioritized list of Algernon development tasks
divided into categories.
Critical Tasks
- Fix :FORC-CLASS and :FORC-INSTANCE.
- Use Protege's Listener interface to activate Algernon rules
based on changes made by hand in the Protege GUI.
- Add agenda control. At least the ability to set depth-first versus breadth-first modes.
Possibly add full-scale agenda control as in the BB1 blackboard system.
- Access KBs by name For example,
(:KB :MY-KB ?kb)
- Restrict slot/frame access by KB:
(Ensembl:Gene gene1 ?value), (Google:EstimatedtotalResultsCount ?result ?numHits)
- Additional KB functions: (:CLOSE-KB :KB-1), (:IS-OPEN :KB-1)
.
- Set Preferences at runtime: (:PREFERENCE :FORWARD-CHAINING :ON), (:SHOW-PREFERENCES :GLOBAL)
.
- Use Protege Frame Listeners to implement calculated slot values.
.
- Add missing method: Frame.getRelations()
Non-critical tasks
- Add an About Box.
- Add a settings menu so people can adjust settings on the fly.
- Automatically add :ALGERNON-RULE as a system class when the tab starts up.
- Add a rule editor, with context-sensitive help like the PAL editor.
- Load Algernon properties from a property file.
What is the LAX system that Protege uses? Or should
Algernon just use the Java Properties package? Also, it
should be able to load a properties file from the Algernon Tab.
- Add a :NEW-KB command to create a KB.
- Support file operations in Algernon.
Perhaps :FPRINT and :FPRINTLN, along with :OPEN-FILE and :CLOSE-FILE.
- Create a new Algernon language.
Use ideas from Flex, OQL, LOREL and InfoMaster.
- Copy frames from one KB to another.
Extend the Algernon syntax to more easily copy
a whole frame from one KB to another.
Major projects
- Design a backend for Algernon that can interact with data
interact directly with a database.
- Contribute the Google backend to the Protege project.
- Finish implementing a trivially simple KB backend so that Algernon
is not totally dependent on Protege.
- Transparently handle relations with arity > 2 in systems
(like Protege) that only support binary relations.
Documentation
- Write a paper comparing Algernon, Jess, PAL and other similar languages.
Author: Micheal Hewett
Last Updated: Thursday, June 06, 2005