Network obsessions

Graph theory is the study of networks (or is it?)

Networks are the most generic tool to model information (or are they?)

Networks/graphs and databases

SQL is a language to query relational databases (i.e. graphs?) however the relational part is not expressive enough to allow complex multi-relational queries. Graph databases such as neo4j address that problem, but introduce a whole new language of data retrieval that has its own inefficiencies. Is there a graph query language extension to SQL ?

Some people are hubs

Ever notice how some people seem to be spending their time getting different people together? These are the hubs of our social network. 2 people that the hub introduces to each other can form their own relationship excluding the hub - indeed the relationship between the hub and the 2 people can become inactive, freeing the hub to seek and form new relationships of the same type - where it acts as a go-between.

Nodes in the network have a maximum individual fan-out that determines their capacity at maintaining simultaneous relationships.

How to model the hub in the graph?

Given existing relationships to nodes A and B, the hub H will create a 2-step relationship A-H-B that can then mutate into AB or not. AHB is of relatively short time compared to AH and BH. The cost of each relationship can be expressed as the geometric distance between nodes in the graph.

A geometric triangle is actually a graph of 3 nodes and their relationships. Graphs subsume geometry.

Viewing node behaviour

We need a dynamic graph animator that allows to zoom on a certain node or region of the graph and animate it: display the graph at successive intervals of time, given that the state of the relationships in the graph had been recorded at these timestamps. In this manner, the behaviour of nodes could be observed and analyzed. Of course, we need to agree first that there is behaviour to be observed.

Multiple information stores

Modern applications need to store their information in multiple stores. Today, we use mostly two: the database and the file system. The emergence of specialized information stores such as graph databases, document databases, etc. means that some kinds of information are best stored in specific data structures, for which dedicated stores are created - allowing more efficient access, higher-level functions, etc. In one single application, we might be dealing with information that encompasses several patterns, and hence for which several stores would be needed.

Concretely, an information system such as Drupal would benefit from being fitted with a multiple-datastore backed that allows to write to MySQL and neo4j simultaneously. Different parts of the information would live in each store: entity attributes would mostly live in MySQL while most relationships would be stored and computed in neo4j for more efficient processing. For example, Drupal is commonly used in social networking applications. Social queries that typically involve multipartite relationships are undoubtedly more suited to graph databases. The question is how to present a unified and consistent API that allows flexibility in specifiying how nodes and other objects are mapped and manipulated across data stores.