class SimpleCatalogUtilsService implements CatalogUtilsService {

    @Override
    public Difference getRevisionChanges(Resource commitId, RepositoryConnection conn) {
        Revision revision = getRevision(commitId, conn);

        IRI additionsGraph = revision.getAdditions().orElseThrow(() ->
                new IllegalStateException("Additions not set on Commit " + commitId));
        IRI deletionsGraph = revision.getDeletions().orElseThrow(() ->
                new IllegalStateException("Deletions not set on Commit " + commitId));

        Model addModel = RepositoryResults.asModel(conn.getStatements(null, null, null, additionsGraph), mf);
        Model deleteModel = RepositoryResults.asModel(conn.getStatements(null, null, null, deletionsGraph), mf);

        revision.getGraphRevision().forEach(graphRevision -> {
            IRI adds = graphRevision.getAdditions().orElseThrow(() ->
                    new IllegalStateException("Additions not set on GraphRevision for Commit " + commitId));
            IRI dels = graphRevision.getDeletions().orElseThrow(() ->
                    new IllegalStateException("Deletions not set on GraphRevision for Commit " + commitId));

            conn.getStatements(null, null, null, adds).forEach(addModel::add);
            conn.getStatements(null, null, null, dels).forEach(deleteModel::add);
        });

        return new Difference.Builder()
                .additions(addModel)
                .deletions(deleteModel)
                .build();
    }

}