Yes, this is the way each of our use cases works. Our data only flows in one direction -- from the sources of truth to the caches on the services using the data. We periodically rebuild the graph data, then send the updated data to the graph consumers. We don't have a mechanism for recreating an NFBuildGraph from an NFCompressedGraph.
I can see how this would be a useful addition for some use cases, and shouldn't be too difficult to implement: I imagine we'll instantiate a new NFBuildGraph with the same NFGraphSpec from the NFCompressedGraph, then iterate over each type, each node, and each property, filling the NFBuildGraph with the connections in the NFCompressedGraph.
In order to get this to work, I think we'll need the ability to get the NFGraphSpec out of an existing NFGraph, and the max ordinal for a given type. We also need a way to determine if a node actually contains any data or not (whether the node pointer != -1).
I think it would be a valuable addition -- I can add it to my wish list, but can't make any promises about the timing. Alternatively, if you need it sooner than I can get to it, I'll be more than happy to review a pull request if you add it yourself!
Thanks for the feedback!
Drew.