Time dimension on static graph

I have a graph, where each node and edge can be 'measured', as in a semantic measurement exists on them for some time, t.
the graph has 180 nodes and 250 edges.

I am now wondering how to implement this time dimension on the graph.

I could
A:
For each timestamp create a timestamp pointer node, that points to the nodes with the values in the variables at some time t. That means that the network is 'duplicated' for every timestamp in the time series. (For data every 5 minutes, this might not be too much data.)

B:
Create one static network where the time series are stored as properties on the nodes and edges. The key to any measurement could be '-, such as "power-2024-08-01T01:00:00".

I later want to run algorithms on the network per time slice, so the performance and the simplicity to query is what I am out for.

What do you think? Are there maybe any other ways for how to structure the time series onto a graph?

Would appreciate your input.

Would adding a timestamp property on the nodes not work? As in each measurement becomes a node (in your example "Power") and you could even add the timestamp as the identifier/primary-key for these "Power" nodes with the value of the power being another property.

You say you have 180 Nodes - do you mean 180 distinct Node labels?

Interesting, haven't thought that way.

So then I wouldn't duplicate the network, but add new nodes, containing the measurements and then either store the timestamp to that measurement on the edge referring to the node, or the measurement node itself.

But does it make sense, to branch out that far?
Intuitively, I thought the longer the relations the more time to fetch them. So going to node and then into its property might be faster than going to node, the node containing the measurement at some time for that node and then into property.

I could give it a shot.
Thank you.

Yes ~180 distinct node labels.

Navigating relationships in Neo4j is fast - it's not like joining tables in a relational DB :slight_smile: