DatasetDynamics/ChangeDescriptionVocabulary

From W3C Wiki

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 .