I've been tinkering with a redesign of GrapheNet implementation
In do doing so I rewrote the core of GrapheNet in Nemerle
(~370 Lines Of Code, spread over 4 class and 1 module.)
This redesign allows for a more fluent style of coding, when using it.

Since Nemerle is based on .Net, it can interoperate with the other .net languages (like vb.net,c#)

Core Types

GrapheNet is built around 4 core types.

Graph(Of N,E) A graphNode(of N,E) A node.Edge(Of N,E) An Edge between nodes.Path(Of N,E) The Path between Nodes, following edges.
+Module of Extension Methods.

Graph(Of String,Integer)( Bi As Boolean)Graph(Of String,Integer)( Bi As Boolean, Node As IEnumerable(Of Node(Of String,Integer))
Note: The library uses generic parameters, so the types of the Node Values and Edge Values, can be anything. I'll be use String and Integer.

Dim g As New Graph(Of String,Integer)(False) ' Edges are directional.

Note: Bi-Directional Edge has not be implemented yet.

Add A Node

g.Add("A")
g.Add("B").Add("C") ' fluent style.

Adding an Edge

g["A"].AddEdgeTo("B",2).AddEdgeTo("C",4) ' A->B A->C (Not A->B B->C )

Note: The fluent style above is left-most node dominant.
So it defines two edge.
A -> B
A -> C