package net.fortytwo.sesametools.deduplication; import junit.framework.TestCase; import org.openrdf.model.Statement; import org.openrdf.model.IRI; import org.openrdf.model.ValueFactory; import org.openrdf.model.vocabulary.RDF; import org.openrdf.model.vocabulary.RDFS; import org.openrdf.sail.Sail; import org.openrdf.sail.SailConnection; import org.openrdf.sail.memory.MemoryStore; import java.util.Set; /** * @author Joshua Shinavier (http://fortytwo.net) */ public class DuplicateStatementFinderTest extends TestCase { private static final String NS = "http://example.org/test/"; private Sail sail; private ValueFactory valueFactory; public void setUp() throws Exception { sail = new MemoryStore(); sail.initialize(); valueFactory = sail.getValueFactory(); } public void tearDown() throws Exception { sail.shutDown(); } public void testSimple() throws Exception { SailConnection sc = sail.getConnection(); sc.begin(); IRI ctx1 = valueFactory.createIRI(NS + "ctx1"); IRI ctx2 = valueFactory.createIRI(NS + "ctx2"); // Not a duplicate. sc.addStatement(RDF.NIL, RDF.TYPE, RDF.LIST, ctx1); // Duplicate: two non-null contexts. sc.addStatement(RDF.TYPE, RDF.TYPE, RDF.PROPERTY, ctx1); sc.addStatement(RDF.TYPE, RDF.TYPE, RDF.PROPERTY, ctx2); // Duplicate: null and non-null context. sc.addStatement(RDF.PROPERTY, RDF.TYPE, RDFS.CLASS, ctx1); sc.addStatement(RDF.PROPERTY, RDF.TYPE, RDFS.CLASS); Set<Statement> dups = DuplicateStatementFinder.findDuplicateStatements(sc); assertEquals(2, dups.size()); //... sc.rollback(); sc.close(); } }