|
Hello, I have a project requirement that the individuals in my model/ontology can be edited in an application. Therefore, I have to have versioning and information on who made the changes, and that it would be possible to revert to any previous version of a set of triples. How is this typically handled in the Semantic Web world? Are there some patterns that have proven to be very useful and practical? Thanks, Alex |
|
You might want to look into Talis's changesets which allow you to describe diffs, or TimBL's article on diffs in RDF. I used a slightly different approach for a project of mine: I wrote an ontology based on SIOC and the MusicBrainz editing and moderation system. Here each change a user performs creates an Edit. You can have a moderation system for approving or declining Edits (in the latter case their changes will not actually be applied). Versioning can then be done through named graphs: The main data in its current state (with all approved edits applied) is in one graph. The edits and the changes they describe are in other graphs. You could then roll back edits to undo changes on the main graph. Since this is a complex system which shouldn't be implemented over and over again by everyone I hope that triple stores will provide something like that automatically in the future (maybe some already do). |
|
Please have a look at the final report of the Provenance XG and track the deliverables of the Provenance Interchange WG. Edit: re. change propagation, deltas etc. the Dataset Dynamics group (see also) might be interesting |
|
I store versioning as a property of the NAMED GRAPH. This would require you design an approach that affords you the level of granularity you need, it would probably not work that great if every assertion was in its own NAMED GRAPH. Since you are using Virtuoso you should be aware of their support for graph groups. |

