@prefix delta: <https://ontology.inferal.com/modules/rdf-delta/> .
@prefix ex: <https://example.com/rdf-delta/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sd: <http://www.w3.org/ns/sparql-service-description#> .
@prefix ss: <https://ontology.inferal.com/modules/scoped-statements/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# A continuing, potentially mutable dataset identity is not a delta endpoint.
ex:liveDataset
    a sd:Dataset ;
    rdfs:label "current catalog dataset"@en .

# Each endpoint is an immutable PROV entity specializing that continuing identity.
ex:dataset-v1
    a prov:Entity, sd:Dataset ;
    prov:specializationOf ex:liveDataset ;
    prov:generatedAtTime "2026-07-22T12:00:00Z"^^xsd:dateTime ;
    rdfs:label "catalog dataset v1"@en .

ex:dataset-v2
    a prov:Entity, sd:Dataset ;
    prov:specializationOf ex:liveDataset ;
    prov:generatedAtTime "2026-07-23T12:00:00Z"^^xsd:dateTime ;
    rdfs:label "catalog dataset v2"@en .

# Exact targets do not assert the described quads in this metadata graph.
ex:old-label-quad
    a ss:QuadTarget ;
    ss:subjectTerm ex:item ;
    ss:predicateTerm rdfs:label ;
    ss:objectLiteralValue "Old label"@en ;
    ss:graphTerm ex:catalog-graph .

ex:new-label-quad
    a ss:QuadTarget ;
    ss:subjectTerm ex:item ;
    ss:predicateTerm rdfs:label ;
    ss:objectLiteralValue "New label"@en ;
    ss:graphTerm ex:catalog-graph .

ex:v1-v2-delta
    a delta:DatasetDelta ;
    delta:baselineDataset ex:dataset-v1 ;
    delta:resultDataset ex:dataset-v2 ;
    delta:hasChange ex:remove-old-label .

# This change demonstrates the inverse membership direction.
ex:add-new-label
    a delta:Addition ;
    delta:inDelta ex:v1-v2-delta ;
    delta:changeTarget ex:new-label-quad .

ex:remove-old-label
    a delta:Removal ;
    delta:changeTarget ex:old-label-quad .

# A complete comparison may legitimately report no structural changes.
ex:v2-v2-identity-delta
    a delta:DatasetDelta ;
    delta:baselineDataset ex:dataset-v2 ;
    delta:resultDataset ex:dataset-v2 .
