/******************************************************************************* * Copyright (c) 2007 Cambridge Semantics Incorporated. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * File: $Source$ * Created by: Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com </a>) * Created on: Sep 1, 2007 * Revision: $Id$ * * Contributors: * Cambridge Semantics Incorporated - initial API and implementation *******************************************************************************/ package org.openanzo.rdf; import static org.openanzo.rdf.query.QueryEncoder.encodeForQuery; import info.aduna.collections.iterators.Iterators; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import junit.framework.TestCase; import org.openanzo.exceptions.AnzoRuntimeException; import org.openanzo.exceptions.ExceptionConstants; import org.openanzo.glitter.query.QueryResults; import org.openanzo.rdf.vocabulary.RDF; /** * Coverage test for quadstore * * @author Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com </a>) * */ public class QuadStoreTest extends TestCase { /** * Speed test for quadstore operations * * @throws Exception */ public void i_testQuadStoreSpeed() throws Exception { MemQuadStore quadStore = new MemQuadStore(); URI typeA = Constants.valueFactory.createURI("http://test/type/a"); URI typeB = Constants.valueFactory.createURI("http://test/type/b"); URI typeC = Constants.valueFactory.createURI("http://test/type/c"); URI typeD = Constants.valueFactory.createURI("http://test/type/d"); URI typeE = Constants.valueFactory.createURI("http://test/type/e"); URI link1 = Constants.valueFactory.createURI("http://test/type/link1"); URI link2 = Constants.valueFactory.createURI("http://test/type/link2"); URI link3 = Constants.valueFactory.createURI("http://test/type/link3"); URI link4 = Constants.valueFactory.createURI("http://test/type/link4"); for (int i = 0; i < 20; i++) { URI ng = Constants.valueFactory.createURI("http://test/namedgraph/" + i); for (int j = 0; j < 400; j++) { URI a = Constants.valueFactory.createURI("http://test/subject/1" + j); URI b = Constants.valueFactory.createURI("http://test/subject/b" + j); URI c = Constants.valueFactory.createURI("http://test/subject/c" + j); URI d = Constants.valueFactory.createURI("http://test/subject/d" + j); URI e = Constants.valueFactory.createURI("http://test/subject/e" + j); URI f = Constants.valueFactory.createURI("http://test/subject/f" + j); quadStore.add(Constants.valueFactory.createStatement(a, RDF.TYPE, typeA, ng)); quadStore.add(Constants.valueFactory.createStatement(b, RDF.TYPE, typeB, ng)); quadStore.add(Constants.valueFactory.createStatement(c, RDF.TYPE, typeC, ng)); quadStore.add(Constants.valueFactory.createStatement(d, RDF.TYPE, typeD, ng)); quadStore.add(Constants.valueFactory.createStatement(e, RDF.TYPE, typeE, ng)); quadStore.add(Constants.valueFactory.createStatement(f, RDF.TYPE, typeE, ng)); quadStore.add(Constants.valueFactory.createStatement(a, link1, b, ng)); quadStore.add(Constants.valueFactory.createStatement(c, link1, d, ng)); quadStore.add(Constants.valueFactory.createStatement(a, link2, e, ng)); quadStore.add(Constants.valueFactory.createStatement(c, link3, f, ng)); quadStore.add(Constants.valueFactory.createStatement(e, link4, f, ng)); } } String query = "select ?a where {" + " ?a " + encodeForQuery(RDF.TYPE) + " " + encodeForQuery(typeA) + ". " //1 + " ?a " + encodeForQuery(link1) + " ?b."//2 + " ?b " + encodeForQuery(RDF.TYPE) + " " + encodeForQuery(typeB) + "."//3 + " ?c " + encodeForQuery(RDF.TYPE) + " " + encodeForQuery(typeC) + "."//4 + " ?c " + encodeForQuery(link1) + " ?d."//5 + " ?d " + encodeForQuery(RDF.TYPE) + " " + encodeForQuery(typeD) + "."//6 + " ?e " + encodeForQuery(RDF.TYPE) + " " + encodeForQuery(typeE) + "."//7 + " ?a " + encodeForQuery(link2) + " ?e."//8 + " ?f " + encodeForQuery(RDF.TYPE) + " " + encodeForQuery(typeE) + "."//8 + " ?c " + encodeForQuery(link3) + " ?f."//9 + " ?e " + encodeForQuery(link4) + " ?f.}";//10 for (int i = 0; i < 20; i++) { long start = System.currentTimeMillis(); URI ng1 = Constants.valueFactory.createURI("http://test/namedgraph/" + i); QueryResults results = quadStore.executeQuery(Collections.<URI> singleton(ng1), Collections.<URI> singleton(ng1), null, query, null); System.err.println("Size=" + results.getSelectResults().size() + ":" + (System.currentTimeMillis() - start)); } System.err.println("Done queries"); /* assertNotNull(last); long end = System.nanoTime(); System.err.println("AddAll:" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size = find(quadStore, null, RDF.TYPE, Constants.valueFactory.createURI("http://type/0"), (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindTypes(" + size + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size1 = find(quadStore, last.getSubject(), null, null, (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt1(" + size1 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size2 = find(quadStore, null, last.getPredicate(), null, (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt2(" + size2 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size3 = find(quadStore, last.getSubject(), last.getPredicate(), null, (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt3(" + size3 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size4 = find(quadStore, null, null, last.getObject(), (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt4(" + size4 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size5 = find(quadStore, last.getSubject(), null, last.getObject(), (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt5(" + size5 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size6 = find(quadStore, null, last.getPredicate(), last.getObject(), (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt6(" + size6 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size7 = find(quadStore, last.getSubject(), last.getPredicate(), last.getObject(), (URI[]) null).size(); end = System.nanoTime(); System.err.println("FindStmt7(" + size7 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size8 = find(quadStore, null, null, null, last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt8(" + size8 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size9 = find(quadStore, last.getSubject(), null, null, last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt9(" + size9 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size10 = find(quadStore, null, last.getPredicate(), null, last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt10(" + size10 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size11 = find(quadStore, last.getSubject(), last.getPredicate(), null, last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt11(" + size11 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size12 = find(quadStore, null, null, last.getObject(), last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt12(" + size12 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size13 = find(quadStore, last.getSubject(), null, last.getObject(), last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt13(" + size13 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size14 = find(quadStore, null, last.getPredicate(), last.getObject(), last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt14(" + size14 + "):" + ((end - start) / 1000000) + ":" + (end - start)); start = System.nanoTime(); int size15 = find(quadStore, last.getSubject(), last.getPredicate(), last.getObject(), last.getNamedGraphUri()).size(); end = System.nanoTime(); System.err.println("FindStmt15(" + size15 + "):" + ((end - start) / 1000000) + ":" + (end - start)); */ } static Statement stmt2 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri2"), Constants.valueFactory.createURI("http://testPred2"), Constants.valueFactory.createURI("http://testObj2"), Constants.valueFactory.createURI("http://testNg")); static Statement stmt3 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri3"), Constants.valueFactory.createURI("http://testPred3"), Constants.valueFactory.createURI("http://testObj3"), Constants.valueFactory.createURI("http://testNg3")); /** * Test adding and deleting statements from a quadstore * * @throws Exception */ @SuppressWarnings("null") public void testAddDelete() throws Exception { MemQuadStore quadStore = new MemQuadStore(); AnzoRuntimeException e = null; Statement stmt = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri"), Constants.valueFactory.createURI("http://testPred"), Constants.valueFactory.createURI("http://testObj")); try { quadStore.add(stmt); } catch (AnzoRuntimeException are) { e = are; } assertNotNull(e); assertEquals(ExceptionConstants.CLIENT.URI_NOT_NULL, e.getErrorCode()); try { quadStore.remove(stmt); } catch (AnzoRuntimeException are) { e = are; } assertNotNull(e); assertEquals(ExceptionConstants.CLIENT.URI_NOT_NULL, e.getErrorCode()); quadStore.clear(); assertEquals(0, quadStore.size()); assertTrue(quadStore.isEmpty()); quadStore.add(); assertEquals(0, quadStore.size()); assertTrue(quadStore.isEmpty()); quadStore.add(stmt2, stmt3); assertEquals(2, quadStore.size()); assertFalse(quadStore.isEmpty()); assertEquals(2, quadStore.getNamedGraphUris().size()); quadStore.remove(stmt2); assertEquals(1, quadStore.size()); assertFalse(quadStore.isEmpty()); quadStore.remove(stmt3); assertEquals(0, quadStore.size()); assertTrue(quadStore.isEmpty()); quadStore.remove(); } /** * Coverage test for quadstore contains operations * * @throws Exception */ public void testContains() throws Exception { Statement stmt4 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri4"), Constants.valueFactory.createURI("http://testPred4"), Constants.valueFactory.createURI("http://testObj4"), Constants.valueFactory.createURI("http://testNg4")); MemQuadStore quadStore = new MemQuadStore(); assertFalse(quadStore.contains(stmt4)); quadStore.add(stmt2); assertTrue(quadStore.contains(null, stmt2.getPredicate(), null, stmt2.getNamedGraphUri())); quadStore.add(stmt3); assertTrue(quadStore.contains(stmt2)); assertTrue(quadStore.contains(stmt3)); assertFalse(quadStore.contains(stmt4)); assertTrue(quadStore.contains(null, null, null, (URI[]) null)); assertTrue(quadStore.contains(stmt2.getSubject(), null, null, (URI[]) null)); assertTrue(quadStore.contains(null, stmt2.getPredicate(), null, (URI[]) null)); assertTrue(quadStore.contains(stmt2.getSubject(), stmt2.getPredicate(), null, (URI[]) null)); assertTrue(quadStore.contains(null, null, stmt2.getObject(), (URI[]) null)); assertTrue(quadStore.contains(stmt2.getSubject(), null, stmt2.getObject(), (URI[]) null)); assertTrue(quadStore.contains(null, stmt2.getPredicate(), stmt2.getObject(), (URI[]) null)); assertTrue(quadStore.contains(stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), (URI[]) null)); assertTrue(quadStore.contains(null, null, null, stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), null, null, stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(null, stmt2.getPredicate(), null, stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), stmt2.getPredicate(), null, stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(null, null, stmt2.getObject(), stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), null, stmt2.getObject(), stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(null, stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri())); assertTrue(quadStore.contains(null, null, null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), null, null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(null, stmt2.getPredicate(), null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), stmt2.getPredicate(), null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(null, null, stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), null, stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(null, stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertTrue(quadStore.contains(stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri())); assertFalse(quadStore.contains(stmt4.getSubject(), null, null, (URI[]) null)); assertFalse(quadStore.contains(null, stmt4.getPredicate(), null, (URI[]) null)); assertFalse(quadStore.contains(stmt4.getSubject(), stmt4.getPredicate(), null, (URI[]) null)); assertFalse(quadStore.contains(stmt4.getSubject(), stmt3.getPredicate(), null, (URI[]) null)); assertFalse(quadStore.contains(null, null, stmt4.getObject(), (URI[]) null)); assertFalse(quadStore.contains(stmt4.getSubject(), null, stmt4.getObject(), (URI[]) null)); assertFalse(quadStore.contains(null, stmt4.getPredicate(), stmt4.getObject(), (URI[]) null)); assertFalse(quadStore.contains(null, stmt3.getPredicate(), stmt4.getObject(), (URI[]) null)); assertFalse(quadStore.contains(stmt4.getSubject(), stmt4.getPredicate(), stmt4.getObject(), (URI[]) null)); assertFalse(quadStore.contains(null, null, null, stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(stmt4.getSubject(), null, null, stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(null, stmt4.getPredicate(), null, stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(stmt4.getSubject(), stmt4.getPredicate(), null, stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(null, null, stmt4.getObject(), stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(stmt4.getSubject(), null, stmt4.getObject(), stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(null, stmt4.getPredicate(), stmt4.getObject(), stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(stmt4.getSubject(), stmt4.getPredicate(), stmt4.getObject(), stmt4.getNamedGraphUri())); assertFalse(quadStore.contains(stmt4.getSubject(), stmt4.getPredicate(), stmt4.getObject(), stmt4.getNamedGraphUri(), stmt3.getNamedGraphUri())); } /** * Coverage test for quadstore find operations * * @throws Exception */ public void testfind() throws Exception { Statement stmt4 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri4"), Constants.valueFactory.createURI("http://testPred4"), Constants.valueFactory.createURI("http://testObj4"), Constants.valueFactory.createURI("http://testNg4")); Statement stmt5 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri5"), Constants.valueFactory.createURI("http://testPred5"), Constants.valueFactory.createURI("http://testObj5"), Constants.valueFactory.createURI("http://testNg5")); Statement stmt6 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri5"), Constants.valueFactory.createURI("http://testPred5"), Constants.valueFactory.createURI("http://testObj5"), Constants.valueFactory.createURI("http://testNg6")); Statement stmt7 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri7"), Constants.valueFactory.createURI("http://testPred7"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt8 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri7"), Constants.valueFactory.createURI("http://testPred8"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt9 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri7"), Constants.valueFactory.createURI("http://testPred9"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt10 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri8"), Constants.valueFactory.createURI("http://testPred10"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt11 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri9"), Constants.valueFactory.createURI("http://testPred10"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt12 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri10"), Constants.valueFactory.createURI("http://testPred10"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt13 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri11"), Constants.valueFactory.createURI("http://testPred11"), Constants.valueFactory.createURI("http://testObj8"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt14 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri11"), Constants.valueFactory.createURI("http://testPred11"), Constants.valueFactory.createURI("http://testObj9"), Constants.valueFactory.createURI("http://testNg7")); Statement stmt15 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri11"), Constants.valueFactory.createURI("http://testPred11"), Constants.valueFactory.createURI("http://testObj10"), Constants.valueFactory.createURI("http://testNg7")); MemQuadStore quadStore = new MemQuadStore(); assertFalse(quadStore.contains(stmt4)); quadStore.add(stmt2, stmt3, stmt5, stmt6); assertEquals(4, find(quadStore, null, null, null, (URI[]) null).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), null, null, (URI[]) null).size()); assertEquals(1, find(quadStore, null, stmt2.getPredicate(), null, (URI[]) null).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), null, (URI[]) null).size()); assertEquals(1, find(quadStore, null, null, stmt2.getObject(), (URI[]) null).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), null, stmt2.getObject(), (URI[]) null).size()); assertEquals(1, find(quadStore, null, stmt2.getPredicate(), stmt2.getObject(), (URI[]) null).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), (URI[]) null).size()); assertEquals(1, find(quadStore, null, null, null, stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), null, null, stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, stmt2.getPredicate(), null, stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), null, stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, null, stmt2.getObject(), stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), null, stmt2.getObject(), stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri()).size()); assertEquals(2, find(quadStore, null, null, null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), null, null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, stmt2.getPredicate(), null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), null, stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, null, stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), null, stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), stmt2.getNamedGraphUri(), stmt3.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, null, null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt2.getSubject(), null, null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, stmt2.getPredicate(), null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, null, stmt2.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt2.getSubject(), null, stmt2.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, stmt2.getPredicate(), stmt2.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), stmt2.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt5.getSubject(), null, null, stmt5.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, stmt5.getPredicate(), null, stmt5.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt5.getSubject(), stmt5.getPredicate(), null, stmt5.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, null, stmt5.getObject(), stmt5.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt5.getSubject(), null, stmt5.getObject(), stmt5.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, null, stmt5.getPredicate(), stmt5.getObject(), stmt5.getNamedGraphUri()).size()); assertEquals(1, find(quadStore, stmt5.getSubject(), stmt5.getPredicate(), stmt5.getObject(), stmt5.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), null, null, (URI[]) null).size()); assertEquals(0, find(quadStore, null, stmt4.getPredicate(), null, (URI[]) null).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), stmt4.getPredicate(), null, (URI[]) null).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), stmt3.getPredicate(), null, (URI[]) null).size()); assertEquals(0, find(quadStore, null, null, stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), null, stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, stmt3.getSubject(), null, stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, null, stmt4.getPredicate(), stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, null, stmt3.getPredicate(), stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), stmt4.getPredicate(), stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, stmt2.getSubject(), stmt4.getPredicate(), stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, stmt2.getSubject(), stmt2.getPredicate(), stmt4.getObject(), (URI[]) null).size()); assertEquals(0, find(quadStore, null, null, null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), null, null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, stmt4.getPredicate(), null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), stmt4.getPredicate(), null, stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, null, stmt4.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), null, stmt4.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, null, stmt4.getPredicate(), stmt4.getObject(), stmt4.getNamedGraphUri()).size()); assertEquals(0, find(quadStore, stmt4.getSubject(), stmt4.getPredicate(), stmt4.getObject(), stmt4.getNamedGraphUri()).size()); quadStore.add(stmt7, stmt8, stmt9, stmt10, stmt11, stmt12, stmt13, stmt14, stmt15); assertEquals(1, find(quadStore, stmt7.getSubject(), stmt7.getPredicate(), stmt7.getObject()).size()); assertEquals(1, find(quadStore, stmt10.getSubject(), stmt10.getPredicate(), stmt10.getObject()).size()); assertEquals(1, find(quadStore, stmt13.getSubject(), stmt13.getPredicate(), stmt13.getObject()).size()); assertEquals(1, find(quadStore, stmt10.getSubject(), null, stmt10.getObject()).size());//o assertEquals(1, find(quadStore, stmt10.getSubject(), null, stmt10.getObject(), stmt10.getNamedGraphUri()).size());//o assertEquals(1, find(quadStore, stmt10.getSubject(), null, stmt10.getObject(), stmt10.getNamedGraphUri(), stmt2.getNamedGraphUri()).size());//o assertEquals(1, find(quadStore, stmt13.getSubject(), null, stmt13.getObject(), stmt13.getNamedGraphUri()).size());//o assertEquals(1, find(quadStore, stmt13.getSubject(), null, stmt13.getObject(), stmt13.getNamedGraphUri(), stmt2.getNamedGraphUri()).size());//s } private Collection<Statement> find(MemQuadStore quadStore, Resource subj, URI prop, Value obj, URI... namedGraphUris) { Iterable<Statement> stmts = quadStore.find(subj, prop, obj, namedGraphUris); ArrayList<Statement> list = new ArrayList<Statement>(); Iterators.addAll(stmts.iterator(), list); return list; } /** * Test remove with wildcards * * @throws Exception */ public void testWildCardRemove() throws Exception { Statement stmt4 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri4"), Constants.valueFactory.createURI("http://testPred4"), Constants.valueFactory.createURI("http://testObj4"), Constants.valueFactory.createURI("http://testNg4")); Statement stmt5 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri5"), Constants.valueFactory.createURI("http://testPred5"), Constants.valueFactory.createURI("http://testObj5"), Constants.valueFactory.createURI("http://testNg5")); Statement stmt6 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri5"), Constants.valueFactory.createURI("http://testPred5"), Constants.valueFactory.createURI("http://testObj5"), Constants.valueFactory.createURI("http://testNg6")); Statement stmt7 = Constants.valueFactory.createStatement(Constants.valueFactory.createURI("http://testUri7"), Constants.valueFactory.createURI("http://testPred7"), Constants.valueFactory.createURI("http://testObj7"), Constants.valueFactory.createURI("http://testNg7")); MemQuadStore store = new MemQuadStore(); store.add(stmt4); store.add(stmt5); store.add(stmt6); store.add(stmt7); assertEquals(4, store.size()); store.remove(null, null, Constants.valueFactory.createURI("http://testObj5"), (URI[]) null); assertEquals(2, store.size()); } }