I'm contemplating an Emacs app that would offer basic graph database capabilities to org-mode. I'd like to write the code myself, a roll your own graph data app. Can anyone direct me to data structures, algorithms for such an undertaking? I know little about graph theory, just the basics. For my endeavor I'd like to store both the org-mode headings inside a single org-mode file as vertices, but also have the option to store a whole org-mode file as single vertex. Each file, each heading vertex will have a unique UUID number in an org-mode PROPERTIES "drawer," which can be understood as a struct for each heading. Edges might be RFD-ish -- essentially "predicate" vertices used as edges. Making a wild guess, I'd say graphs are stored as adjacency lists and not adjacency matrices? Some form of querying should be possible as well.
Any advice appreciated.