The Near Future

I am hoping that version 1.2 will have the ability to seek data from a URL automatically. Also a new inference method which will extract sub-strings from a longer one (such as from a down-loaded web page).

I am hoping that version 1.3 will have simple actions, that will be instigated when e.g. all goals in a list become answered.

Version 1.12 - November 1999

# Various Bug Fixes.

# Inference input mechanism (asking the user questions) has been revamped. It had been rather complex, leading to a couple of esoteric bugs. Rationalised, it is now free from those bugs.

# The server log messages have been changed slightly. Especially, when a KB is removed it reports how many questions the client answered and whether of not the session was finished. So that we can know what sort of use it gets.

# Server version now retains the original value of the question in forms so that if the user restarts then all their question answers are retained.

# Client of server version can now start inference without reset. This allows a 'default' KB to be provided in which the knowledgeable user need only alter a few questions by resetting them.

# Lists Panel has been tidied up a bit with better wording, and has had an extra selection criterion added: 'Those in List'. This allows you, in effect, to perform a relational Intersection or Minus of two lists (list A is source, then select list B as InList, then the resulting list can be of either those things in both A and B, or those things in A that are not in B, depending on the setting of the selection bar).

# Panel fonts and gadget sizes now respond a little better to size and resolution of screen; but don't get too excited yet!

Version 1.11 - October 1999 - The Knowledge Server

I am issuing a version 1.11 because of a bug I have found in version 1.1 of the Knowledge Server that could be rather a trouble, though in my version it seems to have been harmless. And another wee bug in the Weights Panel that was a nuisance. I have taken the opportunity of making some other changes that make things rather more useful. The changes since version 1.1 are:

Version 1.1 - September 1999 - The Knowledge Server

The major update to previous versions, and one that makes this 1.1 rather than merely 1.093, is the addition of an interface to the Internet so that Istar can act as a Knowledge Server. It still acts as a visual programming toolkit, but has a mode in which instead of seeking questions from a local user it does so over Internet connections to a user's browser. This should enable its KBs to be available worldwide.

In addition, a number of other changes have been made that affect ordinary use by the knowledge engineer as well as as a server, the most visible first:

Version 1.092 - Feb 1999

# ResetValues. The main change in version 1.092 is the addition of Reset Values to attributes. These are values stored with each attribute that are used when the attribute is asked as a question, either singly or on a form. If the attribute has such a Reset Value then it is used to set the value gadget on user input. Previously the attribute took the value it had when last used. Now it can either take that value, or can take a Reset Value every time. The Reset Value is set on the Attribute Details Panel with two new gadgets next to the User Supplied button: If the checkbox is ticked when the user hits the OK button, then whatever value is found in the Reset Value gadget is stored at the attribute's Reset Value. If the checkbox is blank then any Reset Value that the attribute might have had is deleted. Attributes normally start without a Reset Value, and the gadget takes the value currently found in the attribute's value. At present, only one Reset Value is allowed, but in future you should be able to provide any number, each for a different purpose or context of use.

# Fixed a bug introduced into version 1.09, in which item instances were not linked to their boxgroups.

# All known Enforcer Hits has been removed. Four were found: a read of location 0 when bringing up file requester for first time, a read of location 0 when the main easel of a KB was being displayed, and a couple which wrote to locations 0x20, 0x28 when creating a new KB.

Version 1.091 - Jan 1999

# Document screen now longer (4 times depth of control screen).

# Document easelpiece now extends almost across whole window.

# Document easel now activated on being shown.

# Fixed the bug that made slider digits switch to same font as question text.

# You can now set the Show button on attributes in item types, and then when you create an item instance of that type, those attributes whose values can be shown (bayesian, boolean, etc.) will be created with value lines. However, a slight bug: these lines do not appear visibly until the boxgroup is redrawn, such as by moving it a fraction. (Up to version 1.09 you could not switch on the Show button; if you did errors occurred.)

# Reduced vertical spacing of form gadgets to allow more per form.

Version 1.09 - Dec 1998 (and unpublished versions 1.087, 1.0871, 1.0872 - Oct, Nov, Dec 1998)

(Versions 1.087, 1.0871 have some of these below; 1.0872 is same as 1.09, just renumbered.)

# Documents: Making up a document is now becoming simpler. Has own panel, complete with ability to export it. The facility is still rather limited, and so is not within the main documentation; it is to be found in a separate page.

# Preferences. Before, altering the fonts for questions had no direct effect on font actually used; now does. Also, altering font for document was ok - until you zoomed it, then font reverted to main easel font. Now OK.

# Exporting the main easel is now done via the Easel panel.

# Questions asked of user are now logged. At present, the log file is ram:QnLog, which is rather inflexible and you have to copy that file to disk if you wish to retain it. Reason for ram: is because we don't want to keep a disk file open for lengthy periods.

# Also, question text now in black rather than white, to enhance readability.

# A User Texts facility has been introduced which extends the range of user texts available. This is accessible either from the Attribute Details Panel via the 'User Texts' button, or from the User Question panel via the Att button. We now have multiple help texts and also a separate Form text, which gives a short text for use on forms.

# Multiple Help Texts. The main change is that you can give up to 8 different Help texts, labelled on the User Question Panel 'Help' and '1' to '7'. These can be used for different kinds of Help, such as 'What does this question mean?', 'What is the implication of answering this in certain ways?', 'What if I say 'unknown'?' and so on. You can use them as you wish - only, remember to tell your users.

# (An internal change that you should know about.) New SysAtt Identifier for the main Help text. If you have an attribute with help text entered under a KB earlier than 1.087, then it will NOT show up when the user presses Help. But, from version 1.0872, you can copy it to the new help identifier (that does show up) by entering the User Texts Panel, and using the Temporary 'T' Text and the T Buttons. You will find the old help text is the Temporary Text. (Version 1.0871 did not have this concept of temporary text, and the only way you could make use of the old text was to reply Yes to a special question of whether to convert it to new help or not.)

# Topics: Now have three columns and up to 30 shown.

# The Meaning Bar is no longer obscured by large panels, as it was (with Attribute Details, Relationship Instance Details, Preferences, Postscript parameters, user question value, user form, help screen, etc. (Some smaller ones still place themselves over it, but you can move them.)

# Question text length. Was restricted to 256 chars; updated now to 512. I've also confined the question box so it does not mess up the value gadget.

# Attribute action panel has been made a little safer. Not only has the crash been fixed, but it will not allow you to run up two parallel inference sessions with the same attribute! It warns you so.

# Bugfix: During an inference session with a goal list, if user hit 'ResetQ', then only those questions asked during the current goal in the goal list were shown. This has now been fixed, so that all questions of the session are shown.

# Bugfix: Chooser. If first ante was boolean then Istar would not backward chain up the correct one, and would report being unable to answer the attribute. This has now been fixed; see next point.

# Activity of Chooser has been extended beyond integers and booleans in the first ante. If the first ante is boolean or some other truth-valued attribute then if false it will take the next (2nd) ante and if true the 3rd. (Truth-valued att = boolean, bayesian, probability and odds.) If not a truth-valued att, then it tries to convert it to integer and takes it as an integer.

# Bugfix: Used to Crash when you remove Attribute Action Panel during an inference run. Now, during an inference run or overriding you cannot remove the panel.

Version 1.086 - March 1998

This is a small update, mainly to correct a couple of bugs that got in the way of our research work, plus one bit of tidying up.

# Bugfix: If you had an ORDINAL or ENUM antecedent e.g. Weekdays and tried to set the unary operator to EqualTo, then it would not do so. Now it does. (The bug only affected ORDINALs and ENUMs.) A reason for doing this is to convert an enum to a boolean saying e.g. 'It is Wednesday'.

# When you set the archive flag in the KBInfo panel, so it renames the original file on saving, the name the archive received was a clumsy datestamp. I replaced this with a TimesSaved number. Shorter and nicer.

# Bugfixes: Inferencing FirstKnown did not allow CONTROL unary operator to work. Also, string concatenation and chooser did not work. Also, HowManyIsIn inference did not work for strings. These have been fixed.

# Ordinal can now be converted to Proportion, Probability and (the probability part of) Bayesian as long as it has a Limit that is non-zero. The result is (OrdVal - 1)/(Limit - 1). The reverse cannot work, however.

Version 1.085 - February 1998

In the past if you selected a GoalList, saved the KB and re-got it again, the goal list had to be re-selected. Now the KB keeps note of current goal list. Note: On some old KBs you will see a rubbish block in the goal list slot of the KB Panel.

There has been quite a lot of work on inference and unary operators in particular, to give the following changes.

The relationship explanation facility has not been made more accurate, hopefully now addressing the whole range of possibilities.

Added unary operators of EqualTo, GreaterThan, etc. which returns a boolean result of how the ante value compares with the one on the weight.

Now CONTROL type links are not restricted to Boolean antecedents, but can take anything that can convert to a BOOL, namely Probability, Bayesian and Odds.

In bayesian inference, if you have an Odds antecedent, then it will be used directly as the odds multiplier; in this way you can exercise direct control over bayesian mechanism if you wish. This gives slightly different behaviour from previous versions, in the rare occasions in which Odds antecedents were used for bayesian inference.

You can now have the ProbAnd and ProbOr unary operators on links for which the antecedent is Boolean, in which case the link weight is a Probability (or Proportion) and this type is used in the inference. With ProbAnd, if the ante is true, then the value used in inference is a probability equal to the link weight, but if the ante is false then the value used is 0. With ProbOr, the link weight is applied if the ante is false, and if true the value used is unity.

The bug in which the NEGATE unary operator did not work for booleans and probabilities involved in bayesian accumulation, now works. In fact, for bayesian inference, NEGATE and INVERT are the same.

The Relationship Instance Panel now puts up the correct type of gadget for the weight - but if you change unary operator then you must 'OK' and bring it up again to get the new gadget type.

Fixed a rare crash: if you tried to save an easel as IFF and did not have iff.library in libs: then it would crash - fixed.

Version 1.084 February 1998, but never published

Found yet another bug that had crept in: if you drew a link in inverse direction it looked like inverse, but acted as normal. The bug crept in when I tidied up BA module in October 97. Fixed.

The Attribute Action Panel now activates the main easel once inferencing has completed. It was a nuisance that it did not before.

Version 1.083, February 1998

Unfortunately, version 1.08 went out with a few bugs in it, that crept in while I was tidying some internals up. So I am bringing out this version in which they have been corrected; they include:

I've also added a couple of things that enhance Istar's usability when creating KBs:

I removed the Undo button from the User Question Panel since it didn't work properly and was not really needed; hit the newly-labelled ResetQ button instead (was 'Review').

Version 1.08, December 1997

Since the last version, which never got put out properly, I diverted work to the Annotator, which allows historians, space scientists etc. to annotate digitized pictures and form a database of their contents for analysis. Much of the same software base is used, but in a slightly different way, with more emphasis on standard items of a semantic net form, and less of free attributes. A lot of things were changed and made more flexible, and I have taken some of them back across to Istar.

Warning: Check your version

Unfortunately I released version 1.08 with a couple of unexpected bugs around Christmas 1997 - I wanted to give a present! I've now corrected them and you should have the version compiled 3 Jan 1998. Check the version you have with the CLI command VERSION Istar and it should say: Istar 1.08 Jan 3 1998. If it gives an earlier date, download the new version.

Documents in HTML

The documentation has been rewritten in HTML, with many cross references.


In previous versions if you created a new inference relationship between attributes they retained their original values. Now it automatically recalculates the value of the destination attribute and propagates it. Also, if you redirect a link it recalculates and propagates the values of both the original and the new.


(Not to be confused with Panel lists, below.)

Lists are ordered sets of things in the knowledge base, and you can use them for various purposes, and in future even more purposes. They are created via the Lists Panel, which is brought up when you hit the Lists button on the KB Panel. Database-aware people will see they are like 'relations' in a relational database, that are produced as a result of a relational operation. (NOTE: In that sentence 'relation' has almost *nothing* to do with relationship! It is a jargon term of the database community.) The purposes for which you might use a List include:

Lists are formed via the Lists Panel, in a two-step operation which is shown on the panel as two long cycle buttons, the width of the panel, and various detail gadgets below them:


As in version 1.07. Second column of KB Panel, in the middle, there is a three-part gadget which has the name of the current goal list in its middle. Left wee button allows you to select a new goal list from among the lists currently in the KB. Right wee 'S' button will bring up the goal lists's Item Details Panel so you can peruse and, if needed, reorder, the goals in the list. Hitting the ResetGoals and InferGoals buttons operate of the current goal list.


These are similar to Goal Lists, but while Goal Lists normally comprise attributes to the right hand side of the Easel, Volunteer Lists comprise questions and other attributes to the left and Override Lists comprise attributes from the middle. They are actually treated all the same as far as Istar is concerned, it is just that to the knowledge engineer and user they have slightly different purposes:

To operate a Volunteer or Override List, select it as current goal list and hit ResetGoals and InferGoals.


You can now, albeit clumsily, alter the colours of the main easel. Hit the Easel button down the left of the KB Panel.


You can now change the colour of boxes and arrows. Also the line pattern. And, for boxes, also the size.

On the Attribute Details, Item Details and Relationship Instance panels you will find a new line of gadgets giving pens and pattern and, maybe, size. Also DSAP of the EaselPiece concerned. (Note: In the Item Details Panel, the pens are for the item's own box, which might not be displayed. These will NOT affect the colour of the attribute box of a free attribute.)

You can also now change the sizes, which are in 1/256ths of an inch as on a 14 inch screen (or tenths of a millimetre to within 1%). Also on the ItemType and Relationship Type and Attribute Type Panels.


In previous versions when you ran an inference process, the user would be asked a number of questions in a synchronous manner. That is, they would be asked the first question and answer it, then the second, and so on. Now you make a question asynchronous, in that a panel will be put up for the user to give a value for the question, but the backward chaining does not stop there. Instead, it searches for the next question, which might be a normal synchronous question (at which it will wait) or another asynchronous one. The user can elect to answer the asynchronous questions at any time. This gives a kind of multi-threading flavour to the inference process.

The reason behind this is to get ready for obtaining information across the internet. When this happens you want to post a request for the information, but not have to wait for its arrival.


If there is no question text when an attribute value is sought, then it will seek meaning text first, then label.


(Not to be confused with Lists facility, above.)

Many panel lists, especially of types, attributes and related things, have been standardised and made more flexible. In general, each list now comes with a set of small buttons surrounding it, to allow the moving of things up and down the list, going to see the selected thing in the list, getting rid of a thing in the list, and creating a new thing in the list. In some lists some buttons are missing for e.g. safety reasons.

This provides extra flexibility. For instance, you can now re-order the item and relationship types if you wish, and also the attributes of an item.


In older versions you could not (easily) add an attribute to an item after it was created; you could only add one to its item type and then create a new instance. Now you can add any attribute to any item - instance as well as type - at any time. And it should take care of its visual appearance.

What this means is that some instances of a given type might have extra attributes (and some have less). This can be useful when you might have e.g. sub-types emerging during your analysis.


Relationships instances can now be given attributes, in addition to the normal weight. For this the RelInst Panel has an 'As Item' button which brings up an Item Details Panel treating the Relationship as an Item. There you may add attributes.


The creation and subsequent manipulation of attribute types has been made easier, and the old Attribute Types Panel has been made into two or three. The Attribute Types Panel itself is merely a list of attribute types, available when you hit the Att Types button on the KB Panel, and you can hit its See or the New or Rid buttons.

When you hit the See button an Attribute Type (singular) Panel comes up, which has name, meaning, visual appearance gadgets as above, and list of value names for ENUMs and ORDINALs.

To create a new attribute type, a small panel comes up, showing steps the user must go through - give it a value type, give it a name and a meaning. Then the Attribute Type Panel appears (sometimes) for you to enter more details.


These have been moved internally. What this means is that any KBs in which they are active (which be very few) will find them no longer active and they will have to set them again.

Version 1.07, March 1997

# LISTS FACILITY. I plan, next version, to have a Lists facility which will allow you to form lists of items, atts, relationships according to various selection criteria, including manual addition, and then to use any list as a goal list, and to perform simple relational-database-like operations with lists, such as selection, union, intersection, join.

# Goal Lists. In previous versions you had precisely one goal list. Now you can make up any number of goal lists, using the lists facility above, so that, for instance, you can have a main goal list plus several override lists on which you can do common what-if queries.

# Better file handling. With previous versions when you asked for an ascii dump of a KB, the default file to which it would output the ascii was the KB file itself !!. Danger of losing all your work! Problem was that there was only one file requester allocated for all file output. I've now got different requesters for:

# VGA screens. Previous versions of Istar gave a PAL screen regardless of Workbench. Now its screen mode is that of WorkBench. (However, in VGA mode some of the control screen panels are a bit odd-sized; this will be fixed soon.)

VERSION 1.06, February 1997

# Attribute Details Panel: If you change the value of a Constant attribute then it sets the value to answered and propagates it when you hit OK. It used not to do this, and that meant that sometimes the new value would not take effect immediately.

# Keys. First, you can now show the consequent fan/net as well as the antecedent one. Press 'C' over a box for the consequent and 'A' for antecedent.

# Keys. Second, it will now show all kinds of relationship in the antecedent and consequent fans, not just inference.

# Keys. Third, I've changed the keys used. For two reasons. One is that when used on a CD32 with SX32 keyboard there are no keys around the numeric keypad and the other is that I could never remember which keys were used. So I now use alphabetic keys that bear some resemblance to the action needed:

# Minimize/Maximize box size. A new facility. Some boxes are of little intrinsic meaning, merely being minor variants on the meaning of others. Often you get a local bunch of antecedents that merely set the value for a more important box. So now you can minimize these less important boxes by hitting the 'M' key when the mouse is over them. This turns them into little squares, quarter of an inch square and with not label - a bunch of these starts to look like a bunch of blackcurrants. Their meaning still shows, however, and you can do all the normal things to them. Then, if you hit 'M' again over a minimized box it expands to its normal size.

# In Attribute Details panel, if att is a Const in derivation and you alter the value then it is set to answered. And the result is propagated. Because it is assumed that you are altering it for a purpose.

# On using a large KB (ca. 800 boxes and 400 arrows) and a goal list about 100 long it took around 3 seconds to reset all the goals on a basic Amiga 1200. (Because all the consequent fans of all reset attributes have to be traversed.) A noticeable delay, though not unreasonable for a KB of this size and complexity. I investigated the time taken (3.3 seconds on basic Amiga 1200 and 1.4 seconds on Amiga 1200 with 50MHz 68030) and checked that the algorithm was working OK and not doing more work than it need to (it was OK). There might be ways of speeding it up slightly. But at present it is not high priority; 1.4 seconds delay seems perfectly reasonably for a KB this size when the subsequent question sequence is around 40 questions long.

# Bug in Chooser was fixed. It now resets attribute to unanswered every time.

# Wee Bugfix. When you added an attribute to an item that had an att with shown value it didnae do it right - placing the 2nd on top of the first. It now does it right.

VERSION 1.05, January 1997

# (It's rather nice: The better Istar becomes, the smaller it becomes!)

# Instituted an initial dynamic document facility. You create Document items and the document is created dynamically from 'Text Item' items whose 'Include' attributes are true. See Item Details Panel. The facility is at present very crude, just so you can start to try it out. See the new 'Dynamic Documents' file.

# Found bug that stopped Istar being used on the 4000 and 3000 - and corrected it.

# You can now add new attributes to existing item instances (you could add to item types before, but not instances). e.g. if the standard 'Cat' item type has attributes of Name, Has-Whiskers, Colour and Sound-Made, and you make instance 'Susie', with attributes: Has-Whiskers = TRUE, Colour = Grey, Sound-Made = Miaow, before, that was all you could record about Susie. But now you can add any new attributes you like without affecting the item type. So you can enter Number-Of-Legs = 3 (she got run over!).

# You can also re-order attributes now in both item types and item instances.

# You can now read and write preferences files.

# I went through all the modules with a fine tooth comb, making some internal changes (specifically, replacing rbDataAddr() with ikDataAddr(), etc.). In particular, some of the old code made the wrong tests after a routine returns a C pointer. Took the opportunity to rationalize the error handling and error messages.

VERSION 1.041, November 1996

# Found a bug had crept into Version 1.04 that prevented changing value types in Attributes Details panel. So corrected it.

# Also, internal changes to the way text of labels is displayed.

VERSION 1.04, November 1996

# Added the CONTROL Unary Operator. See 'Using Istar'. This allows attributes to be made 'not applicable' if another one is answered with False. See new version of 'Using Istar' document.

# Lots of work allowing you to set Preferences ...

# Will now read IstarSys:IstarPrefs, if available, when starting up to set various preferences. An IstarPrefs_LowMem is supplied.

# Can now change fonts for the main easel, the user questions and the document. (Note: document facility still not available.)

# The Preferences panel now has KB and font information as well as Easel info, and it only sets the sizes for new KBs, not the existing one. (Scroll amount is set for all KBs and Easels, though.) This makes it easier to prepare for a low memory situation.

# Added facility to switch tracing on in the command line.

# Changing the size of a currently displayed Easel is now done from a new 'Easel' button on the KB Panel, not from the Preferences panel.

# A wee change: Before, on hitting 'Quit' it would first ask "Do you want to quit?" and then ask for each KB "Do you want to get rid of it?" Now it asks about all the KBs first, and then "Quit?" This allows you to clear out all the KBs but not quit the program, so to start other KBs again.

# A button on KB panel 'See Easel' will bring the easel of that KB to the front; useful when you have several KBs up.

# Tidied up all panel handling. Users shouldn't see any difference, but it makes a bit smaller.

# New documentation file, KBs, which outlines all manipulation of whole knowledge bases, and IstarPrefs file.

# Resizing of a KB is now possible, but occasionally fragile; see Bugs and Limitations.

# When saving a KB you can now have automatic backups made of the file: see KBs document. The old file is not overwritten, but has date and time appended to it.

# Slight improvements to the Explanation of Relationship Instances.

VERSION 1.03, September 1996

# Made Istar more usable for drawing semantic networks. Two main facilities:

# Added facility to alter the visual appearance of item boxes, in a limited way. Pen 1 gives the text colour for the label, Pen 2 and Pattern give the appearance of the box outline. This meant new gadgets added to the Item Type Panel.

# Added facility to define, for an item type box, which types of relationship will be drawn when user starts drawing from left or right edge.

# Added KB Area panel, showing some details of the KB area, and allowing you to alter some.

# Tidied up the mechanism for handling several KBs. Removed one or two bugs that had crept in, such as referring to certain things in KB1 when KB2 was active.

# Added facility to record the Control Screen Parking position.

# Hopefully more tolerant when it doesn't find the fonts it wants.

# Cured one or two bugs encountered when linking items or moving links.

# Tidied up Preferences (but still too few), and cured the problems that happened when setting them without a KB.

# Removed the crash/inf loop when hitting the meaning-bar right hand gadgets when there is no KB. (As I never told users about them, this should not have been a problem.)

VERSION 1.02, July 1996

# Placed on Aminet first as /misc/misc without install script, and then with proper install script and updated docs in /biz/misc.

# Istar will now process more than one KB.

# It meant replacing the separate Select Item Type, Select Relationship Type and Goal List panels with a single single KB panel. Each knowledge base has its own KB panel.

# It also meant some internal changes to the structure of the modules management, ES module operations, and other things, which are not described here. (They are described in my Logs.)

# I also put the backward and forward chaining on a sounder footing. Normally it worked OK but some funnies happened with overridden attributes.

# When resetting an attribute for backward chaining, all its antecedents were reset OK, but the other consequents of those were not reset. Now they are.

# Implemented facility to define new relationship types. This enables us to move towards a semantic net builder.

# Added RANDOM unary operator.

# Proper implementation of limits on ordinals and enums.

VERSION 1.01, June 1996

This was the first version released. It was a development of the KBTools software that came out of the INCA project, with a year spent on making its code more robust and generalized. Istar works fairly well and robustly as an inference net builder. But it can only process one KB at a time.

Copyright (c) Andrew Basden 6 February 1998.