All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aksw.jena_sparql_api.utils.ModelDiff Maven / Gradle / Ivy

The newest version!
package org.aksw.jena_sparql_api.utils;

import org.aksw.commons.collections.diff.Diff;

import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Statement;

/**
 * @author Claus Stadler
 *
 *         Date: 7/12/11
 *         Time: 10:54 PM
 */
public class ModelDiff
    extends Diff
{
    public ModelDiff() {
        super(
                ModelFactory.createDefaultModel(),
                ModelFactory.createDefaultModel(),
                ModelFactory.createDefaultModel());
    }

    public ModelDiff(Model added, Model removed, Model retained) {
        super(added, removed,retained);
    }

    /**
     * Basically adds a statement to the set of added items.
     * However, if the statement is marked as removed, it is
     * removed from the removal-set, but not added to added-set.
     *
     * @param stmt
     */
    public void add(Statement stmt) {
        if(getRemoved().contains(stmt)) {
            getRemoved().remove(stmt);
        } else {
            getRemoved().remove(stmt);
            getAdded().add(stmt);
        }
    }


    /**
     * Adds an item to the set of removed items, unless an equal statement is
     * contained in the added-set. In this case the statement is removed from the
     * added set.
     *
     * @param stmt
     */
    public void remove(Statement stmt) {
        getAdded().remove(stmt);
        getRemoved().add(stmt);
    }

    public void add(Model model) {
        for(Statement stmt : model.listStatements().toList()) {
            add(stmt);
        }
    }

    public void remove(Model model) {
        for(Statement stmt : model.listStatements().toList()) {
            remove(stmt);
        }
    }

    public void clear() {
        getAdded().removeAll();
        getRemoved().removeAll();
    }


    public boolean isEmpty() {
        boolean result = getAdded().isEmpty() && getRemoved().isEmpty();
        return result;
    }

    /*
    public void add(Statement stmt) {
        getRemoved().remove(stmt);
        getAdded().add(stmt);
    }

    public void remove(Statement stmt) {
        getAdded().remove(stmt);
        getRemoved().add(stmt);
    }

    public void add(Model model) {
        getRemoved().remove(model);
        getAdded().add(model);
    }

    public void remove(Model model) {
        getAdded().remove(model);
        getRemoved().add(model);
    }

    public void clear() {
        getAdded().removeAll();
        getRemoved().removeAll();
    }*/

    public static ModelDiff create(Model a, Model b) {
        ModelDiff result = new ModelDiff();

        result.getAdded().add(b);
        result.getAdded().remove(a);

        result.getRemoved().add(a);
        result.getRemoved().remove(b);

        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy