/** "dirty" reifications - those with conflicting quadlets - should fail. */ public void testDirtyReification() { Resource R = model.createResource(aURI); model.add(R, RDF.type, RDF.Statement); model.add(R, RDF.subject, S); model.add(R, RDF.subject, P); testDoesNotReify("boo", R); }
/** * Leo Bard spotted a problem whereby removing a reified statement from a model with style * Standard didn't leave the model empty. Here's a test for it. */ public void testLeosBug() { Model A = getModel(); Statement st = statement(A, "pigs fly south"); ReifiedStatement rst = st.createReifiedStatement("eh:pointer"); A.removeReification(rst); assertIsoModels(ModelFactory.createDefaultModel(), A); }
public void testRemoveReificationWorks() { Statement st = SPO; Model m = model; m.createReifiedStatement(aURI, st); assertTrue("st is now reified", st.isReified()); m.removeAllReifications(st); assertFalse("st is no longer reified", st.isReified()); }
public void testStatementListReifiedStatements() { Statement st = SPO; Model m = model; assertEquals( "it's not there yet", empty, GraphTestBase.iteratorToSet(st.listReifiedStatements())); ReifiedStatement rs = m.createReifiedStatement(aURI, st); Set justRS = arrayToSet(new Object[] {rs}); m.add(rs, P, O); assertEquals("it's here now", justRS, GraphTestBase.iteratorToSet(st.listReifiedStatements())); }
public void testRR() { Statement st = SPO; Model m = model; ReifiedStatement rs1 = m.createReifiedStatement(aURI, st); ReifiedStatement rs2 = m.createReifiedStatement(anotherURI, st); m.removeReification(rs1); testNotReifying(m, aURI); assertTrue("st is still reified", st.isReified()); m.removeReification(rs2); assertFalse("st should no longer be reified", st.isReified()); }
public void testListReifiedSpecificStatements() { assertEquals("no statements should match st", empty, getSetRS(model, SPO)); /* */ ReifiedStatement rs = model.createReifiedStatement(aURI, SPO); ReifiedStatement rs2 = model.createReifiedStatement(anotherURI, SPO2); model.add(rs, P, O); // assertEquals( "still no matching statement", empty, getSetRS( m, stOther ) ); /* */ Set justRS2 = arrayToSet(new Object[] {rs2}); model.add(rs2, P, O); assertEquals("now one matching statement", justRS2, getSetRS(model, SPO2)); }
/** * test that listReifiedStatements produces an iterator that contains the right reified * statements. We *don't* test that they're not duplicated, because they might be; disallowing * duplicates could be expensive. */ public void testListReifiedStatements() { assertEquals("initially: no reified statements", empty, getSetRS(model)); ReifiedStatement rs = model.createReifiedStatement(aURI, SPO); // assertEquals( "still: no reified statements", empty, getSetRS( m ) ); /* */ model.add(rs, P, O); Set justRS = arrayToSet(new Object[] {rs}); assertEquals("post-add: one reified statement", justRS, getSetRS(model)); model.add(S, P, rs); assertEquals("post-add: still one reified statement", justRS, getSetRS(model)); /* */ ReifiedStatement rs2 = model.createReifiedStatement(anotherURI, SPO2); Set bothRS = arrayToSet(new Object[] {rs, rs2}); model.add(rs2, P, O); assertEquals("post-add: still one reified statement", bothRS, getSetRS(model)); }
public void testConstructionByURI() { ReifiedStatement rs = model.createReifiedStatement("spoo:handle", SPO); ReifiedStatement rs2 = SPO.createReifiedStatement("spoo:gripper"); assertEquals("recover statement (URI)", SPO, rs.getStatement()); assertEquals("recover URI", "spoo:handle", rs.getURI()); assertEquals("recover URI", "spoo:gripper", rs2.getURI()); }
private void testNotReifying(Model m, String uri) { try { m.createResource(uri).as(ReifiedStatement.class); fail("there should be no reifiedStatement for " + uri); } catch (DoesNotReifyException e) { /* that's what we require */ } }
public void testIsReified() { ReifiedStatement rs = model.createReifiedStatement(aURI, SPO); Resource BS = model.createResource(anchor + "BS"); Property BP = model.createProperty(anchor + "BP"); RDFNode BO = model.createProperty(anchor + "BO"); model.add(rs, P, O); assertTrue("st should be reified now", SPO.isReified()); assertTrue("m should have st reified now", model.isReified(SPO)); assertFalse( "this new statement should not be reified", model.createStatement(BS, BP, BO).isReified()); }
/** * walk down the set of statements (represented as an array), recursing with and without each * statement being present. The mask bits record those statements that are in the model. At the * bottom of the recursion (n == 0), check that R can be reified exactly when all four quad * components are present; the other statements don't matter. */ private void testCombinations(Model m, Resource R, int mask, Object[][] statements, int n) { if (n == 0) { try { // System.err.println( "| hello. mask = " + mask ); ReifiedStatement rs = (ReifiedStatement) R.as(ReifiedStatement.class); // System.err.println( "+ we constructed " + rs ); assertTrue( "should not reify: not all components present [" + mask + "]: " + rs, (mask & 15) == 15); // System.err.println( "+ and we passed the assertion." ); } catch (DoesNotReifyException e) { // System.err.println( "+ we exploded" ); assertFalse("should reify: all components present", mask == 15); } } else { int i = n - 1; Statement s = (Statement) statements[i][0]; int bits = ((Integer) statements[i][1]).intValue(); testCombinations(m, R, mask, statements, i); m.add(s); testCombinations(m, R, mask + bits, statements, i); m.remove(s); } }
public void setUp() { model = getModel(); Resource S2 = model.createResource(anchor + "subject2"); S = model.createResource(anchor + "subject"); P = model.createProperty(anchor + "predicate"); O = model.createLiteral(anchor + "object"); SPO = model.createStatement(S, P, O); SPO2 = model.createStatement(S2, P, O); }
/** * the simplest case: if we assert all the components of a reification quad, we can get a * ReifiedStatement that represents the reified statement. */ public void testBasicReification() { if (model.getReificationStyle() != ModelFactory.Minimal) { Resource R = model.createResource(aURI); model.add(R, RDF.type, RDF.Statement); model.add(R, RDF.subject, S); model.add(R, RDF.predicate, P); model.add(R, RDF.object, O); RDFNode rs = R.as(ReifiedStatement.class); assertEquals("can recover statement", SPO, ((ReifiedStatement) rs).getStatement()); } }
public void testQuintetOfQuadlets() { Resource rs = model.createResource(); rs.addProperty(RDF.type, RDF.Statement); model.createResource().addProperty(RDF.value, rs); rs.addProperty(RDF.subject, model.createResource()); rs.addProperty(RDF.predicate, model.createProperty("http://example.org/foo")); rs.addProperty(RDF.object, model.createResource()); rs.addProperty(RDF.object, model.createResource()); StmtIterator it = model.listStatements(); while (it.hasNext()) { Statement s = it.nextStatement(); assertFalse(s.getObject().equals(s.getSubject())); } }
public void testThisWillBreak() { Resource R = model.createResource(aURI); SPO.createReifiedStatement(aURI); model.add(R, RDF.subject, R); }
/** * check that, from a model with any combination of the statements given, we can convert R into a * ReifiedStatement iff the four components of the quad are in the model. */ public void testReificationCombinations() { Resource RR = model.createResource(aURI), SS = model.createResource(anotherURI); Property PP = (Property) RR.as(Property.class); Object[][] statements = { {model.createStatement(RR, RDF.type, RDF.Statement), new Integer(1)}, {model.createStatement(RR, RDF.subject, SS), new Integer(2)}, {model.createStatement(RR, RDF.predicate, PP), new Integer(4)}, {model.createStatement(RR, RDF.object, O), new Integer(8)}, {model.createStatement(SS, PP, O), new Integer(16)}, {model.createStatement(RR, PP, O), new Integer(32)}, {model.createStatement(SS, RDF.subject, SS), new Integer(64)}, {model.createStatement(SS, RDF.predicate, PP), new Integer(128)}, {model.createStatement(SS, RDF.object, O), new Integer(256)}, {model.createStatement(SS, RDF.type, RDF.Statement), new Integer(512)} }; if (model.getReificationStyle() != ModelFactory.Minimal) testCombinations(model, RR, 0, statements, statements.length); }
public void testDoesNotReifyElsewhere() { final String uri = "spoo:rubbish"; Model m2 = getModel(); model.createReifiedStatement(uri, SPO); testDoesNotReify("blue model should not reify rubbish", m2.createResource(uri)); }
public void testConversion() { final String uri = "spoo:handle"; model.createReifiedStatement(uri, SPO); ReifiedStatement rs2 = (ReifiedStatement) model.createResource(uri).as(ReifiedStatement.class); assertEquals("recover statement", SPO, rs2.getStatement()); }
public void testDoesNotReifyUnknown() { testDoesNotReify("model should not reify rubbish", model.createResource("spoo:rubbish")); }
public void testConstructionFromModels() { testStatementAndModel("fromModel", model.createReifiedStatement(SPO), model, SPO); }
public void testGetAny() { Resource r = model.getAnyReifiedStatement(SPO); assertInstanceOf(ReifiedStatement.class, r); assertEquals("should get me the statement", SPO, ((ReifiedStatement) r).getStatement()); }
/** * this test appeared when TestStatementResources crashed using reified statements as a step-0 * implementation for asSubject()/asObject(). Looks like there was a problem in * modelReifier().getRS(), which we're fixing ... */ public void testListDoesntCrash() { model.createReifiedStatement(SPO); model.createReifiedStatement(SPO2); assertTrue("should be non-empty", model.listReifiedStatements().hasNext()); }
public Set getSetRS(Model m, Statement st) { return GraphTestBase.iteratorToSet(m.listReifiedStatements(st)); }