Conceptual Graph Toolkit Demonstration ====================================== The conceptual graph toolkit is designed to sit between Fril and an artificial intelligence application. It (currently) includes routines to read and print graphs in "linear form", and to manipulate graphs using the canonical formation rules of conceptual graphs. The toolkit can be used at two levels : either interactively from the keyboard (as is simulated in this demo), or by embedded calls from within Fril applications. The toolkit environment uses a prompt "C-Graph >", and a recursive descent input parser that enables graphs to be entered in a free format, and commands to be specified using a natural language instruction style. ;;; For example, loading a conceptual graph directly from the keyboard: ;;; > [eat] - > (agnt) -> [monkey] > (obj) -> [walnut:*x] > (inst) -> [spoon] -> (matr) -> [shell] <- (part) <- [walnut:*x]. The "." terminates the definition and initiates translation into internal form. ;;; The graph can now be printed back to the screen, starting from any specified concept or relation node. ;;; Alternatively, graphs can be entered in linear form into a text file using a standard editor, and then loaded into the conceptual graph environment using the "gload" command. To illustrate some of the graph features supported by the toolkit, a number of graphs will be loaded and displayed. ;;; The type hierarchy lattice should be defined as Fril relation "sub", or as a set of clauses "sub"; and it may be reloaded from an appropriate file. ;;; Now for some examples of the canonical formation rules; for this purpose a new set of graphs will be loaded. ;;; First, copy a complete graph. ;;; Second, restrict a specified concept in a graph. ;;; Now join the two (restricted) graphs at the common concept. ;;; Note that this operation has not removed redundant conceptual relations. That is done by the remaining canonical rule - "simplify". ;;; Another example of the use of join can be seen in this example, where a schema for a bus is joined to an occurrence of [bus] in another graph. ;;; Alternatively, the maximal join of bus and John can be obtained. ;;; Type expansions (as opposed to schematic joins) are performed by the "expand" command. A different set of graphs will be used to show this. ;;; First, an example of type expansion: ;;; Finally an example of actor expansion: ;;; This graph is a dataflow representation of the operations required to evaluate factorial 3. The "?" mark in the referent of [number:*a?] implies goal-directed computation - future versions of the graph toolkit will implement evaluation of actors under a formal "firing" algorithm. ;;; The toolkit is currently being extended to include the support logic aspects of fril within the context of conceptual graphs. For example, fuzzy referents such as [height:@>=5ft] or [weight:@~120kg] ("~" means approximately) will be supported in the unification algorithm. This will enable a "support pair" to be associated with the "join" of two concepts, and hence the global maximal join of two conceptual graphs to be evaluated using a graph matching algorithm. This measure of the support for two graphs being the same is the starting point for conceptual graph inference and machine learning algorithms based on conceptual graphs. End of demonstration. Type "run cg" to enter conceptual graph environment or "run demo" to execute this demo again' ;;;