DatasetDynamics/ChangeDescriptionVocabulary
Change Description Vocabulary Proposals
The vocabulary to be applied to express the semantics of a change depends on the perspective: certain use cases require triple-level notification, i.e., what triples have been added and/or removed. Other use cases require resource-level information, i.e., what has happened to which resource at what time. Graph-level notification makes sense when major data updates occur.
A triple-centric view on changes
The Talis Changeset vocabulary applies such a triple-centric view and considers the triple as the subject of change. In the following example, we assume that the biography (dbpedia:abstract) about the resource http://dbpedia.org/resource/Green_Day has changed.
:cset1 rdf:type cs:ChangeSet ; cs:precedingChangeSet :cset0 ; cs:subjectOfChange: <http://dbpedia.org/resource/Green_Day> ; cs:createdDate "2008-01-12T00:00:00Z" ; cs:changeReason "Change of title" ; cs:removal [ rdf:type rdf:Statement ; rdf:subject <http://dbpedia.org/resource/Green_Day> ; rdf:predicate <http://dbpedia.org/ontology/abstract> ; rdf:object "...old abstract text...." ; ] cs:addition [ rdf:type rdf:Statement ; rdf:subject <http://dbpedia.org/resource/Green_Day> ; rdf:predicate <http://dbpedia.org/ontology/abstract> ; rdf:object "...new abstract text...." ; ]
A resource-centric view on changes
Taking the above example, a resource-centric description of a change would look as follows when using the DSNotify Eventset Vocabulary:
:eds1 rdf:type dsNotify:Eventset ; dsNotify:hasEvent :change1 ; dsNotify:sourceDataset <http://dbpedia.org> ; dsNotify:targetDataset <http://dbpedia.org> . :change1 rdf:type dsNotify:UpdateEvent ; dsNotify:targetResource <http://dbpedia.org/resource/Green_Day> ; lode:atTime "2008-01-12T00:00:00Z"^^^xsd:dataTime .
The combination of both
There is of course a connection between these views: a high-level change on a resource has a sequence of of triple-level changes as consequence. Vice versa we can say that in many cases multiple atomic triple-level changes represent a high-level change on resources. If the client wishes to receive change information on both levels, the server could deliver this data as as follows:
:eds1 rdf:type dsNotify:Eventset ; dsNotify:hasEvent :change1 ; dsNotify:sourceDataset <http://dbpedia.org> ; dsNotify:targetDataset <http://dbpedia.org> . :change1 rdf:type dsNotify:UpdateEvent ; dsNotify:targetResource <http://dbpedia.org/resource/Green_Day> ; lode:atTime "2008-01-12T00:00:00Z"^^^xsd:dataTime ; dsNotify:hasAffectedTriples :cset1 .