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 ));
+
}
|