INFO: This is a very basic implementation of a SemanticTree I had to do as an homework. Anyway it should be not too difficult to extend it. You can run the Java WebApplet Demo to see what it can do. (The Webapplet does not allow loading and saving of datafiles and does not show node images) EXAMPLE TUTORIAL: Lets assume you want to represent some knowledge about the domain of cars. Click on "new Root", in the popup window enter "car". Now a node labeled "car" should show up in the left panel. Click on the node to see its representation in the upper right panel. You see a TextArea listing the slots of the node - at the moment none. Lets change this by clicking on "add/change/overwrite feature". In the dialog enter "has_wheels:yes" Now lets add a subclass: Click on "add subclass" and enter "Fiat" Unfortunately the tree collapses when you add nodes, but after a click on the "car" node you will see the new "Fiat" node. Finally lets add an instance - Click on the "Fiat" node and then on "add instance", in the dialog enter "Oldtimer". Gone so far lets pose some questions to the system. In order to do that enter the question in the TextField above the button "ask above question to the system", afterwards click that button. Try: "Is my Oldtimer a car?" : 'OLDTIMER IS AN INSTANCE OF CAR.' "Has my Oldtimer wheels?" : 'YES, OLDTIMER HAS WHEELS.' Now lets change the facts a little by adding two slots to the "Oldtimer" node: "has_wheels:no" "is-damaged:yes" Lets ask again: "Has my Oldtimer wheels?" : 'NO, OLDTIMER HAS NOT WHEELS.' "Oh no, is my oldtimer damaged then?" : 'YES, OLDTIMER IS DAMAGED.'