|
From: Bryan T. <tho...@us...> - 2007-04-19 19:13:50
|
Update of /cvsroot/cweb/bigdata-rdf/src/test/com/bigdata/rdf/inf In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv3033/src/test/com/bigdata/rdf/inf Modified Files: TestRuleRdfs11.java TestRuleRdf01.java Log Message: Optimization for Rule rdf1. Index: TestRuleRdfs11.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/test/com/bigdata/rdf/inf/TestRuleRdfs11.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestRuleRdfs11.java 18 Apr 2007 17:29:06 -0000 1.2 --- TestRuleRdfs11.java 19 Apr 2007 19:13:46 -0000 1.3 *************** *** 51,56 **** import org.openrdf.vocabulary.RDFS; - import com.bigdata.rdf.TempTripleStore; - import com.bigdata.rdf.inf.Rule.Stats; import com.bigdata.rdf.model.OptimizedValueFactory._URI; --- 51,54 ---- *************** *** 76,79 **** --- 74,80 ---- } + /** + * Simple test verifies inference of a subclassof entailment. + */ public void test_rdfs11() { Index: TestRuleRdf01.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/test/com/bigdata/rdf/inf/TestRuleRdf01.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestRuleRdf01.java 19 Apr 2007 12:27:38 -0000 1.1 --- TestRuleRdf01.java 19 Apr 2007 19:13:46 -0000 1.2 *************** *** 48,51 **** --- 48,56 ---- package com.bigdata.rdf.inf; + import org.openrdf.model.URI; + import org.openrdf.vocabulary.RDF; + + import com.bigdata.rdf.model.OptimizedValueFactory._URI; + /** * Test suite for {@link RuleRdf01}. *************** *** 75,86 **** /** ! * FIXME write test of basic rule semantics and then write another test that ! * can be used to verify that we are doing an efficient scan for the ! * distinct predicates (key prefix scan). */ public void test_rdf01() { ! fail("write test"); } --- 80,151 ---- /** ! * Basic of rule semantics. */ public void test_rdf01() { ! URI A = new _URI("http://www.foo.org/A"); ! URI B = new _URI("http://www.foo.org/B"); ! URI C = new _URI("http://www.foo.org/C"); ! ! URI rdfType = new _URI(RDF.TYPE); ! URI rdfProperty = new _URI(RDF.PROPERTY); ! ! store.addStatement(A, B, C); ! ! assertTrue(store.containsStatement(A, B, C)); ! assertFalse(store.containsStatement(B, rdfType, rdfProperty )); ! ! applyRule(store.rdf1, 1/* numComputed */, 1/* numCopied */); ! ! /* ! * validate the state of the primary store. ! */ ! assertTrue(store.containsStatement(A, B, C)); ! assertTrue(store.containsStatement(B, rdfType, rdfProperty )); ! ! } ! ! /** ! * Test that can be used to verify that we are doing an efficient scan for ! * the distinct predicates (distinct key prefix scan). ! */ ! public void test_rdf01_distinctPrefixScan() { + URI A = new _URI("http://www.foo.org/A"); + URI B = new _URI("http://www.foo.org/B"); + URI C = new _URI("http://www.foo.org/C"); + URI D = new _URI("http://www.foo.org/D"); + URI E = new _URI("http://www.foo.org/E"); + + URI rdfType = new _URI(RDF.TYPE); + URI rdfProperty = new _URI(RDF.PROPERTY); + + /* + * Three statements that will trigger the rule, but two statements share + * the same predicate. When it does the minimum amount of work, the rule + * will fire for each distinct predicate in the KB -- for this KB that + * is only twice. + */ + store.addStatement(A, B, C); + store.addStatement(C, B, D); + store.addStatement(A, E, C); + + assertTrue(store.containsStatement(A, B, C)); + assertTrue(store.containsStatement(C, B, D)); + assertTrue(store.containsStatement(A, E, C)); + assertFalse(store.containsStatement(B, rdfType, rdfProperty )); + assertFalse(store.containsStatement(E, rdfType, rdfProperty )); + + applyRule(store.rdf1, 2/* numComputed */, 2/* numCopied */); + + /* + * validate the state of the primary store. + */ + assertTrue(store.containsStatement(A, B, C)); + assertTrue(store.containsStatement(C, B, D)); + assertTrue(store.containsStatement(A, E, C)); + assertTrue(store.containsStatement(B, rdfType, rdfProperty )); + assertTrue(store.containsStatement(E, rdfType, rdfProperty )); + } |