Versioning model based on time


What is the best way to achieve a “versioned” model for data which is changing over time? The goal is to have (be able to retrieve) a “snapshot” of the graph (model) at a specific time in the past. Something like source control. Are there any guidelines / recommendations about how this can be modeled in the schema?

Thank you