Get it from: http://sourceforge.net/projects/e4graph/ Home page at: http://www.e4graph.com/e4graph/ e4graph 1.0a7 is out. Get it from the above URLs! e4Graph is a C++, Tcl and Java library that allows programs to store graph-like data persistently and to access and manipulate that data efficiently. With e4Graph, you can arrange your data in the most natural form that reflects the relationships between its parts, rather than having to force it into a table-like format. The e4Graph library also allows you to concentrate on the relationships you want to represent, and not on how to store them in a database. You can modify data items, and add and remove connections and relationships between pieces of data on the fly. e4Graph allows you to represent an unlimited number of different connections between pieces of data, and your program can selectively manipulate the data according to the relationships it cares about, not having to know about other connections represented in the data set. [[Cool things: swappable, even scriptable, back end, at least architecturally. Arbitrary data stores. Conceptual power. Embeddability. Portability of data and source. Screaming performance. ...]] ---- e4Graph makes a prominent appearance in a [developerWorks] article [http://www-106.ibm.com/developerworks/xml/library/x-hipersis.html?loc=dwmain] on high-performance XML (which subject, incidentally, ought also focus attention on [tDOM]. ''28sep02 [jcw] - The above link to the article appears to be broken, unfortunately...'' -- Dot in the wrong place [SC] ---- 27Sep02 [Jacob Levy] e4Graph has a very powerful XML binding, it is able to store XML natively and allow natural manipulation of XML data as tree structured data. It also has an excellent Tcl binding, and provides an extensible object model where Tcl procedures can be stored inside the graph and extend the functionality of nodes. Here's an example of this idea: % load tgraph (1) % set s [tgraph::open foo.db] (2) % set r [$x root] (3) % $r add bar last hello (4) % $r method square {x} { (5) return [expr $x * $x] } % $r call square 5 (6) => 25 Explanation: line 1 loads the tgraph library, which contains the Tcl binding for e4Graph. Line 2 opens the storage 'foo.db' and stores the result in 's'. Line 3 makes 'r' refer to the root node of this storage. Line 4 adds a new vertex named 'bar' as the last vertex with the string value 'hello'. Line 5 defines the method 'square' which takes one argument, a number, and returns the square of it. Finally, line 6 invokes the method to compute the square of 5. ---- [Category Package]