Hi, i am considering how to capture the "date/time" dimension efficiently 
in a graph.  The bigger idea being able to query on the exact status of my 
graph in any point in time (history) .. this includes when nodes are 
created ,  modified and also when relations are created and modified 

Since i would like to query the information and the graph can become huge i 
do not want to store time based events in attributes.. it guess it must be 
in relations to allow for the graph traversal to work fast and prevent a 
lot of attribute lookups

Following some samples i found in the "Graph Databases" book and some 
samples Peter provided before one could make a "timeline"  and    link the 
nodes from your graph to the nodes of this "timeline" 

The "timeline" itself (if would like to go down to he "seconds" level) 
looks like a giant tree having one node for each year, 12 nodes per year 
for each month , 28/29/30 or 31 days for each month , 25 hours per day , 60 
minutes per hour and 60 secs per minute.. each related top down... and 
horizontal with a NEXT / PREV relation.. 

So far so good.

When a node is created one could give it a :CREATED relation to the 
(seconds) node representing the time at that moment. So every node will 
have at least one link to the "timeline" when created.  If attributes 
change on an node actually one would have to duplicate the node and set 
some relations again to the "timeline" to indicate the change and between 
the nodes itself to indicate which is the "NEXT" instance.


Although it cam become messy this would allow for some queries where you 
could really see the state at some point in time .. or between or before 
some point in time.


NOW the main point of my question ... ... if i also want to know "timeline" 
based info on  when RELATIONS between nodes are created / changed / 
removed  etc i wonder how to do that optimally in a huge graph ??

Actually i think that the relation that exists between 2 nodes maybe must 
be replaced by a "node" representing the relation.. 

so    (a)-[:KNOWS]->(b)

becomes

(a)-[:KNOWS]->(likes)-[:KNOWS]->(b)

which allows  for the linking of the "relation" node (likes) to the 
timeline too so that you also can see (and mainly efficiently query on) 
exactly when a relation is set

So ... has anyone experience with this way of working ?  Would that somehow 
be manageable in a really huge graph ?

Other ideas ?   I made the assumption that the time dimension must be 
captured in relations iso attributes since that is what a graph is good at


thx for any addl ideas 

reg koen 







-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to