I didn't notice they had a product. I read it like I would a tutorial without code on the net.
The data structures I copied from Buckland. I got rid of all the C++ junk, and added hashing for the nodes and edges.
I assume SQL can do a lot more, but this is all I need.
/* Every node has an index. A valid index is >= 0 */
/* Node string goes here */
#define GRAPH_NODE_INVALID_INDEX UINT32_MAX
/* An edge connects two nodes. */
uint32_t From, To;
/* Edge relationship code */
/* The cost of traversing this edge */
* If this edge intersects with an object,
* such as a door or lift,
* then this is that object's Id.
/* Is this to be used as a database? */
/* Is this a directed graph? */
/* Each node gets a unique id */
/* The nodes that comprise this graph */
* Nodes are hashed by Pos for pathfinding,
* or by ExtraInfo for database.
* Each edge is hashed
* using its parent node's From index
/* Stores node or edge ptrs found by hash queries. */
array FoundArray1, FoundArray2;