Marmotta offers a versioning service that keeps track of triple updates in configurable graphs. Versioning is transaction based, i.e. every time a transaction is committed successfully, a new version entry is created by the versioning services. Marmotta currently supports listing versions (timemap) as well as inspecting snapshots (mementos) (i.e. going back in time) for resources. To give a smooth web access to timemaps and snapshots, Marmottas Versioning module implements the Memento protocol (RFC 7089).
To make use of the versioning service you have to insert the dependency to marmotta-versioning module in the pom.xml file of the Marmotta plattform like this:
<dependency> <groupId>org.apache.marmotta</groupId> <artifactId>marmotta-versioning</artifactId> <version>3.3.0</version> </dependency>
After starting the server the module appears in the administration interface. The Memento protocol aims to bring time-based access to web resources using common web standards. The whole description of the protocol with several examples of resource access and browsing can be found on the webpage of the Memento project. Nevertheless we give a short introduction to the topic.
Memento decides between resources (URI-R), timegates (URI-G) and mementos (URI-Mx).
Resources are the original resources. When requesting such resources, the HTTP response include links to the timemap (a list of all versions of the resource) and the timegate (where you can request the resource with Accept-Datetime header).
The underlying system is able to simulate the triplestore at all datetimes in the past. In future versions, the Memento protocol will be extended to snapshot access to the whole triplestore (via SPARQL and LDPath).