Ken Webb 2013-04-02T16:18:35Z
I'm using this page to jot down and tentatively organize some recent ideas, many of which have to do with graphs. By graph I mean nodes and connections between nodes. These notes are probably pretty cryptic to anyone else reading them. For now, they are mostly just to help me get my thoughts together.
Graph databases are one flavor of NoSQL databases. Graph database products include Neo4j, Blueprints, and Gremlin. I've been able to get these to work with Xholon. Other interesting NoSQL types include XML databases, Object databases, Key/Value databases, ???
Xholon is based on trees. A tree is just a type of graph, and is a way of structuring a graph. There's no incompatibility between tree-based and graph-based thinking. A typically Xholon model/app is a tree with numerous specialized subtrees, and with various graphs embedded within the tree.
Trees and Graphs [Jan 13, 2013]
Are trees real? Maybe they're only necessary when we try to capture graphs in a finite medium. A tree is a graph that somehow turns in on itself. A tree provides a shorter path between nodes, thus increasing the connectivity of nodes in the same subtree. A tree is an approach to clustering.
It's difficult/impossible for humans to specify a graph textually (without drawing lines) without repeating the names of nodes; hence the use of edge nodes, XPath, etc. GraphML is a good example of a text-based tool for specifying graphs. We can specify a graph graphically, which has its own difficulties.
Krishna's universal form in the Bagavad Gita (ch 11) is about the impossiblity of comprehending a large graph all at the same time. See for example Bhagavad Gita and Vishvarupa.
Xholon tries to acknowledge the huge graph, and make it work (make it more manageable) at the user domain level, at the software developer level, and at the runtime level, by using the same approach throughout.
Trees and cycles are somehow related.
There's a lot more in my notebook.
The Breakpoint [Jan 14]
The software developer's breakpoint is where everything comes together. The here and now of the breakpoint puts me somewhere in the object graph, at some line of code.
Graph structures
Hierarchy must be the most common addition to a plain graph structure. It's basically just a labeling of graph edges; one or more label types. What other common edge labelings are out there? Is there such a thing as an edge schema? GraphML has 3 advanced features: Nested Graphs, Hyperedges, Ports.
Network motif [Jan 14/15]
queryframework is "a Java library to detect complex mofifs (patterns) in networks". See associated paper: "Scalable Motif Detection and Aggregation". See Network motif "recurrent and statistically significant sub-graphs or patterns".
Strange Networks [Jan 15]
A large number of strange networks (SN) are possible. Typically these are subtrees that are unknown to the main tree. For example, the root node of a subtree might point to a node in the main tree, but no node in the tree points anywhere in the subtree. How would the subtree be able to run, and how would it not get garbage collected?
One example of an SN are my Xholon Tween Trees.
Another type of SN would be a subtree that lives inside an object of some other JVM language. For example, a JavaScript node with embedded JavaScript objects and properties (JSON or JSON-like).
There could be subtrees that live only inside a Xholon Message that's being sent from one node to another.
There could be nodes or subtrees that live in different threads.
Xholon already has the ability for nodes in different applications to interact. In my climate model, separately developed Carbon Dioxide and Energy Balance models optionally interact, each model continuously updating a separate wikipedia SVG graphic.
Some Graph products and libraries [Jan 15/17]
Boost C++ libraries Boost Graph Library (BGL)
NetworkX python library
Sage an attempt "to make a complete list of existing graph theory software"
TouchGraph is a commercial Java product to visualize the web, using nodes and edges.
Tom Sawyer Software is a Java graph layout SDK.
Graph Interface Library (GINY) is an open-source Java library, used by Cytoscape.
Cytoscape is an "open-source bioinformatics software platform for visualizing ... networks"
Query Languages [Apr 2]
There are numerous query languages for tables, XML, graphs, etc. These include SQL, jQuery, XPath, Gremlin, etc. Having a query language available indicates existence of a connected structure (a graph).
Terminology
Possible names for this approach: Graph based, Node based