http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/92ddfa59/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/entity/AccumuloDocIndexerTest.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/entity/AccumuloDocIndexerTest.java
 
b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/entity/AccumuloDocIndexerTest.java
new file mode 100644
index 0000000..0bf2a21
--- /dev/null
+++ 
b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/entity/AccumuloDocIndexerTest.java
@@ -0,0 +1,2105 @@
+package mvm.rya.indexing.accumulo.entity;
+
+import info.aduna.iteration.CloseableIteration;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+import mvm.rya.accumulo.AccumuloRdfConfiguration;
+import mvm.rya.accumulo.RyaTableMutationsFactory;
+import mvm.rya.api.RdfCloudTripleStoreConstants;
+import mvm.rya.api.domain.RyaStatement;
+import mvm.rya.api.domain.RyaType;
+import mvm.rya.api.domain.RyaURI;
+import mvm.rya.api.layout.TablePrefixLayoutStrategy;
+import mvm.rya.api.resolver.RyaToRdfConversions;
+import mvm.rya.api.resolver.RyaTripleContext;
+import mvm.rya.indexing.accumulo.ConfigUtils;
+
+import org.apache.accumulo.core.client.BatchWriter;
+import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.mock.MockInstance;
+import org.apache.accumulo.core.data.Mutation;
+import org.apache.hadoop.conf.Configuration;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.Value;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.model.impl.ValueFactoryImpl;
+import org.openrdf.model.vocabulary.XMLSchema;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.QueryEvaluationException;
+import org.openrdf.query.algebra.StatementPattern;
+import org.openrdf.query.algebra.TupleExpr;
+import org.openrdf.query.algebra.evaluation.QueryBindingSet;
+import org.openrdf.query.algebra.helpers.StatementPatternCollector;
+import org.openrdf.query.parser.ParsedQuery;
+import org.openrdf.query.parser.sparql.SPARQLParser;
+
+import com.google.common.collect.Lists;
+
+public class AccumuloDocIndexerTest {
+
+    
+    private Connector accCon;
+    AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration();
+    ValueFactory vf = new ValueFactoryImpl();
+    
+    private static final String tableName = "EntityCentric_entity";
+    
+    
+    @Before
+    public void init() throws Exception {
+        
+        accCon = new MockInstance("instance").getConnector("root", 
"".getBytes());
+        
+        if(accCon.tableOperations().exists(tableName)) {
+                accCon.tableOperations().delete(tableName);
+        } 
+        
+        accCon.tableOperations().create(tableName);
+        
+        
+        Configuration config = new Configuration();
+        config.set(ConfigUtils.CLOUDBASE_AUTHS, "U");
+        config.set(ConfigUtils.CLOUDBASE_INSTANCE, "instance");
+        config.set(ConfigUtils.CLOUDBASE_USER, "root");
+        config.set(ConfigUtils.CLOUDBASE_PASSWORD, "");
+       
+        conf = new AccumuloRdfConfiguration(config);
+        conf.set(ConfigUtils.USE_MOCK_INSTANCE, "true");
+        conf.setAdditionalIndexers(EntityCentricIndex.class);
+
+    }
+    
+    
+    
+    
+    @Test
+    public void testNoContext1()  throws Exception {
+
+      BatchWriter bw = null;
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+      conf.setTablePrefix("EntityCentric_");
+      
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+         
+          
+          for (int i = 0; i < 20; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf1"), new RyaType(XMLSchema.STRING, "cq1"));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"));
+                    RyaStatement rs3 = null;
+                    RyaStatement rs4 = null;
+                   
+                    if(i == 5 || i == 15) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)));
+                        rs4 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.STRING,Integer.toString(i)));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = null;
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    if(rs4 != null) {
+                        serialize4 = rtm.serialize(rs4);
+                    }
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    if (serialize4 != null) {
+                        Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+                        for (Mutation m : m4) {
+                            bw.addMutation(m);
+                        }
+                    }
+         
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> 5 ."//
+                  +  "}";
+          
+          
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1  ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> \"15\" ."//
+                  +  "}";
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                TupleExpr te2 = pq2.getTupleExpr();
+
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+
+                StarQuery sq1 = new StarQuery(spList1);
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                List<BindingSet> bsList = Lists.newArrayList();
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("******************Test 
1************************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(1, results);
+                
+                
System.out.println("************************************************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                
+                Assert.assertEquals(1, results);
+                
+                
+                
+                adi.close();
+                
+                
+                
+                
+
+
+    }
+    
+    
+    
+    
+    
+    
+    @Test
+    public void testNoContext2() throws Exception {
+
+      BatchWriter bw = null;
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+          conf.setTablePrefix("EntityCentric_");
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"));
+                    RyaStatement rs3 = null;
+                  
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+//                QueryBindingSet b1 = (new QueryBindingSet());
+//                b1.addBinding("X", vf.createURI("uri:5"));
+//                QueryBindingSet b2 = (new QueryBindingSet());
+//                b2.addBinding("X", vf.createURI("uri:15"));
+//                QueryBindingSet b3 = (new QueryBindingSet());
+//                b3.addBinding("X", vf.createURI("uri:25"));
+//                bsList.add(b1);
+//                bsList.add(b2);
+//                bsList.add(b3);
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
2***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(5, results);
+                
+                
+                adi.close();
+                   
+
+
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    @Test
+    public void testNoContextCommonVarBs() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf1"), new RyaType(XMLSchema.STRING, "cq1"));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"));
+                    RyaStatement rs3 = null;
+                  
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("X", vf.createURI("uri:5"));
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("X", vf.createURI("uri:15"));
+                QueryBindingSet b3 = (new QueryBindingSet());
+                b3.addBinding("X", vf.createURI("uri:25"));
+                bsList.add(b1);
+                bsList.add(b2);
+                bsList.add(b3);
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
3***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(3, results);
+                
+                
+                adi.close();
+                   
+
+
+    }
+    
+
+
+    
+    
+    @Test
+    public void testNoContextUnCommonVarBs() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf1"), new RyaType(XMLSchema.STRING, "cq1"));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"));
+                    RyaStatement rs3 = null;
+                    
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                Value v1 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(5)));
+                Value v2 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(25)));
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("Y3", v1);
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("Y3", v2);
+                bsList.add(b1);
+                bsList.add(b2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
4***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(2, results);
+                
+                
+                adi.close();
+                   
+
+
+    }
+    
+    
+    
+    @Test
+    public void testNoContextCommonVarBs2() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"));
+                    RyaStatement rs3 = null;
+                  
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("X", vf.createURI("uri:5"));
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("X", vf.createURI("uri:15"));
+                QueryBindingSet b3 = (new QueryBindingSet());
+                b3.addBinding("X", vf.createURI("uri:25"));
+                bsList.add(b1);
+                bsList.add(b2);
+                bsList.add(b3);
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
5***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(3, results);
+                
+                
+                adi.close();
+                   
+
+
+    }
+    
+    
+    
+    
+    
+    @Test
+    public void testNoContextUnCommonVarBs2() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"));
+                    RyaStatement rs3 = null;
+                  
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("X", vf.createURI("uri:5"));
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("X", vf.createURI("uri:15"));
+                QueryBindingSet b3 = (new QueryBindingSet());
+                b3.addBinding("X", vf.createURI("uri:25"));
+                bsList.add(b1);
+                bsList.add(b2);
+                bsList.add(b3);
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
6***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(3, results);
+                
+                
+                adi.close();
+                   
+
+
+    }
+    
+    
+    
+
+    
+    
+    
+    @Test
+    public void testContext2() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ), new RyaURI("uri:joe"));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:joe"));
+                    RyaStatement rs3 = null;
+                    
+                    RyaStatement rs4 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ), new RyaURI("uri:hank"));
+                    RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+                    RyaStatement rs6 = null;
+                  
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                        rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    if(rs6 != null) {
+                        serialize6 = rtm.serialize(rs6);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+                    for (Mutation m : m4) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+                    for (Mutation m : m5) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                        for (Mutation m : m6) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:joe> { " //
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+//                QueryBindingSet b1 = (new QueryBindingSet());
+//                b1.addBinding("X", vf.createURI("uri:5"));
+//                QueryBindingSet b2 = (new QueryBindingSet());
+//                b2.addBinding("X", vf.createURI("uri:15"));
+//                QueryBindingSet b3 = (new QueryBindingSet());
+//                b3.addBinding("X", vf.createURI("uri:25"));
+//                bsList.add(b1);
+//                bsList.add(b2);
+//                bsList.add(b3);
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
7***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(5, results);
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
7***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(10, results);
+                
+                
+                adi.close();
+                   
+
+
+    }
+    
+    
+    
+    
+    
+    
+    @Test
+    public void testContextUnCommonVarBs2() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+                      
+              
+                    RyaStatement rs1 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ), new RyaURI("uri:joe"));
+                    RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:joe"));
+                    RyaStatement rs3 = null;
+                    
+                    RyaStatement rs4 = new RyaStatement(new RyaURI("uri:cq1"), 
new RyaURI("uri:cf1"), new RyaURI("uri:" + i ), new RyaURI("uri:hank"));
+                    RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i 
), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+                    RyaStatement rs6 = null;
+                  
+                   
+                    if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                        rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                        rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+                    }
+        
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+                    Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+                   
+                    
+                    if(rs3 != null) {
+                        serialize3 = rtm.serialize(rs3);
+                    }
+                    
+                    if(rs6 != null) {
+                        serialize6 = rtm.serialize(rs6);
+                    }
+                    
+                    
+                    
+                    Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+                    for (Mutation m : m1) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+                    for (Mutation m : m2) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                        for (Mutation m : m3) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+                    for (Mutation m : m4) {
+                        bw.addMutation(m);
+                    }
+                    Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+                    for (Mutation m : m5) {
+                        bw.addMutation(m);
+                    }
+                    if (serialize3 != null) {
+                        Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                        for (Mutation m : m6) {
+                            bw.addMutation(m);
+                        }
+                    }
+                    
+                    
+                    
+                    
+
+          }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:joe> { " //
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?Y1 <uri:cf1> ?X ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("X", vf.createURI("uri:5"));
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("X", vf.createURI("uri:15"));
+                QueryBindingSet b3 = (new QueryBindingSet());
+                b3.addBinding("X", vf.createURI("uri:25"));
+                bsList.add(b1);
+                bsList.add(b2);
+                bsList.add(b3);
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
8***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(3, results);
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
8***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(6, results);
+                
+                
+                adi.close();
+                   
+
+
+
+    }
+    
+    
+    @Test
+    public void testContext1() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+              
+              
+              RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"),  new RyaURI("uri:joe"));
+              RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new RyaURI("uri:joe"));
+              RyaStatement rs3 = null;
+              
+              RyaStatement rs4 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"), new RyaURI("uri:hank"));
+              RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+              RyaStatement rs6 = null;
+            
+             
+              if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                  rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                  rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+              }
+  
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+             
+              
+              if(rs3 != null) {
+                  serialize3 = rtm.serialize(rs3);
+              }
+              
+              if(rs6 != null) {
+                  serialize6 = rtm.serialize(rs6);
+              }
+              
+              
+              
+              Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+              for (Mutation m : m1) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+              for (Mutation m : m2) {
+                  bw.addMutation(m);
+              }
+              if (serialize3 != null) {
+                  Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                  for (Mutation m : m3) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+              for (Mutation m : m4) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+              for (Mutation m : m5) {
+                  bw.addMutation(m);
+              }
+              if (serialize6 != null) {
+                  Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                  for (Mutation m : m6) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              
+              
+              
+
+    }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:hank> { " //
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+//                Value v1 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(5)));
+//                Value v2 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(25)));
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+//                QueryBindingSet b1 = (new QueryBindingSet());
+//                b1.addBinding("Y3", v1);
+//                QueryBindingSet b2 = (new QueryBindingSet());
+//                b2.addBinding("Y3", v2);
+//                bsList.add(b1);
+//                bsList.add(b2);
+//                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
10***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(10, results);
+                
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
10***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(5, results);
+                
+                
+                adi.close();
+                   
+
+
+
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    @Test
+    public void testContextUnCommonVarBs1() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+              
+              
+              RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"),  new RyaURI("uri:joe"));
+              RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new RyaURI("uri:joe"));
+              RyaStatement rs3 = null;
+              
+              RyaStatement rs4 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"), new RyaURI("uri:hank"));
+              RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+              RyaStatement rs6 = null;
+            
+             
+              if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                  rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                  rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+              }
+  
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+             
+              
+              if(rs3 != null) {
+                  serialize3 = rtm.serialize(rs3);
+              }
+              
+              if(rs6 != null) {
+                  serialize6 = rtm.serialize(rs6);
+              }
+              
+              
+              
+              Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+              for (Mutation m : m1) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+              for (Mutation m : m2) {
+                  bw.addMutation(m);
+              }
+              if (serialize3 != null) {
+                  Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                  for (Mutation m : m3) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+              for (Mutation m : m4) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+              for (Mutation m : m5) {
+                  bw.addMutation(m);
+              }
+              if (serialize6 != null) {
+                  Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                  for (Mutation m : m6) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              
+              
+              
+
+    }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:hank> { " //
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                Value v1 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(5)));
+                Value v2 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(25)));
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("Y3", v1);
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("Y3", v2);
+                bsList.add(b1);
+                bsList.add(b2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
11***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(4, results);
+                
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
11***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(2, results);
+                
+                
+                adi.close();
+                   
+
+
+
+    }
+    
+    
+    
+    
+    
+
+
+    
+    
+    
+    @Test
+    public void testContextCommonVarBs1() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+              
+              
+              RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"),  new RyaURI("uri:joe"));
+              RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new RyaURI("uri:joe"));
+              RyaStatement rs3 = null;
+              
+              RyaStatement rs4 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"), new RyaURI("uri:hank"));
+              RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+              RyaStatement rs6 = null;
+            
+             
+              if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                  rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                  rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+              }
+  
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+             
+              
+              if(rs3 != null) {
+                  serialize3 = rtm.serialize(rs3);
+              }
+              
+              if(rs6 != null) {
+                  serialize6 = rtm.serialize(rs6);
+              }
+              
+              
+              
+              Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+              for (Mutation m : m1) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+              for (Mutation m : m2) {
+                  bw.addMutation(m);
+              }
+              if (serialize3 != null) {
+                  Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                  for (Mutation m : m3) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+              for (Mutation m : m4) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+              for (Mutation m : m5) {
+                  bw.addMutation(m);
+              }
+              if (serialize6 != null) {
+                  Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                  for (Mutation m : m6) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              
+              
+              
+
+    }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:hank> { " //
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                Value v1 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(5)));
+                Value v2 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(25)));
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = (new QueryBindingSet());
+                b1.addBinding("X", vf.createURI("uri:5"));
+                QueryBindingSet b2 = (new QueryBindingSet());
+                b2.addBinding("X", vf.createURI("uri:15"));
+                QueryBindingSet b3 = (new QueryBindingSet());
+                b3.addBinding("X", vf.createURI("uri:25"));
+                bsList.add(b1);
+                bsList.add(b2);
+                bsList.add(b3);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
12***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(6, results);
+                
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
12***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(3, results);
+                
+                
+                adi.close();
+                   
+
+
+
+    }
+    
+    
+    
+    
+    @Test
+    public void testContextCommonAndUnCommonVarBs1() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+              
+              
+              RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"),  new RyaURI("uri:joe"));
+              RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new RyaURI("uri:joe"));
+              RyaStatement rs3 = null;
+              
+              RyaStatement rs4 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"), new RyaURI("uri:hank"));
+              RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+              RyaStatement rs6 = null;
+              
+              RyaStatement rs7 = null;
+              RyaStatement rs8 = null;
+            
+             
+              if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                  rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                  rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+                  rs7 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(100+i)), new 
RyaURI("uri:joe"));
+                  rs8 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(100+i)), new 
RyaURI("uri:hank"));
+              }
+  
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize7 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize8 = null;
+              
+              if(rs3 != null) {
+                  serialize3 = rtm.serialize(rs3);
+              }
+              
+              if(rs6 != null) {
+                  serialize6 = rtm.serialize(rs6);
+              }
+              
+              if(rs7 != null) {
+                  serialize7 = rtm.serialize(rs7);
+              }
+              
+              if(rs8 != null) {
+                  serialize8 = rtm.serialize(rs8);
+              }
+              
+              
+              Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+              for (Mutation m : m1) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+              for (Mutation m : m2) {
+                  bw.addMutation(m);
+              }
+              if (serialize3 != null) {
+                  Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                  for (Mutation m : m3) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+              for (Mutation m : m4) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+              for (Mutation m : m5) {
+                  bw.addMutation(m);
+              }
+              if (serialize6 != null) {
+                  Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                  for (Mutation m : m6) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              if (serialize7 != null) {
+                  Collection<Mutation> m7 = 
EntityCentricIndex.createMutations(rs7);
+                  for (Mutation m : m7) {
+                      bw.addMutation(m);
+                  }
+              }
+              if (serialize8 != null) {
+                  Collection<Mutation> m8 = 
EntityCentricIndex.createMutations(rs8);
+                  for (Mutation m : m8) {
+                      bw.addMutation(m);
+                  }
+              }
+                   
+
+    }
+         
+          String q1 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          String q2 = "" //
+                  + "SELECT ?X ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:hank> { " //
+                  +  "?X <uri:cf1> ?Y1 ."//
+                  +  "?X <uri:cf2> ?Y2 ."//
+                  +  "?X <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+                Value v1 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(105)));
+                Value v2 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(125)));
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+                QueryBindingSet b1 = new QueryBindingSet();
+                b1.addBinding("X", vf.createURI("uri:5"));
+                b1.addBinding("Y3", v1);
+                QueryBindingSet b2 = new QueryBindingSet();
+                b2.addBinding("X", vf.createURI("uri:25"));
+                b2.addBinding("Y3", v2);
+                bsList.add(b1);
+                bsList.add(b2);
+                
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
13***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(4, results);
+                
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
13***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(2, results);
+                
+                
+                adi.close();
+                   
+
+
+
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    @Test
+    public void testContextConstantCommonVar() throws Exception {
+
+      BatchWriter bw = null;
+      conf.setTablePrefix("EntityCentric_");
+      RyaTableMutationsFactory rtm = new 
RyaTableMutationsFactory(RyaTripleContext.getInstance(conf));
+      
+
+          bw = accCon.createBatchWriter(tableName, 500L * 1024L * 1024L, 
Long.MAX_VALUE, 30);
+
+         
+          
+          for (int i = 0; i < 30; i++) {
+              
+              
+              RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"),  new RyaURI("uri:joe"));
+              RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new RyaURI("uri:joe"));
+              RyaStatement rs3 = null;
+              
+              RyaStatement rs4 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf1"), new RyaURI("uri:cq1"), new RyaURI("uri:hank"));
+              RyaStatement rs5 = new RyaStatement(new RyaURI("uri:" + i ), new 
RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2"), new 
RyaURI("uri:hank"));
+              RyaStatement rs6 = null;
+            
+             
+              if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) {
+                  rs3 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:joe"));
+                  rs6 = new RyaStatement(new RyaURI("uri:" +i ), new 
RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i)), new 
RyaURI("uri:hank"));
+              }
+  
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize1 = rtm.serialize(rs1);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize2 = rtm.serialize(rs2);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize3 = null;
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize4 = rtm.serialize(rs4);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize5 = rtm.serialize(rs5);
+              Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, 
Collection<Mutation>> serialize6 = null;
+             
+              
+              if(rs3 != null) {
+                  serialize3 = rtm.serialize(rs3);
+              }
+              
+              if(rs6 != null) {
+                  serialize6 = rtm.serialize(rs6);
+              }
+              
+              
+              
+              Collection<Mutation> m1 = 
EntityCentricIndex.createMutations(rs1);
+              for (Mutation m : m1) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m2 = 
EntityCentricIndex.createMutations(rs2);
+              for (Mutation m : m2) {
+                  bw.addMutation(m);
+              }
+              if (serialize3 != null) {
+                  Collection<Mutation> m3 = 
EntityCentricIndex.createMutations(rs3);
+                  for (Mutation m : m3) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              Collection<Mutation> m4 = 
EntityCentricIndex.createMutations(rs4);
+              for (Mutation m : m4) {
+                  bw.addMutation(m);
+              }
+              Collection<Mutation> m5 = 
EntityCentricIndex.createMutations(rs5);
+              for (Mutation m : m5) {
+                  bw.addMutation(m);
+              }
+              if (serialize6 != null) {
+                  Collection<Mutation> m6 = 
EntityCentricIndex.createMutations(rs6);
+                  for (Mutation m : m6) {
+                      bw.addMutation(m);
+                  }
+              }
+              
+              
+              
+              
+
+    }
+         
+          String q1 = "" //
+                  + "SELECT ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  +  "<uri:5> <uri:cf1> ?Y1 ."//
+                  +  "<uri:5> <uri:cf2> ?Y2 ."//
+                  +  "<uri:5> <uri:cf3> ?Y3 ."//
+                  +  "}";
+          
+          
+          
+          String q2 = "" //
+                  + "SELECT ?Y1 ?Y2 ?Y3 " //
+                  + "{"//
+                  + " GRAPH <uri:hank> { " //
+                  +  "<uri:5> <uri:cf1> ?Y1 ."//
+                  +  "<uri:5> <uri:cf2> ?Y2 ."//
+                  +  "<uri:5> <uri:cf3> ?Y3 ."//
+                  + " } "//
+                  +  "}";
+          
+          
+               
+          
+                SPARQLParser parser = new SPARQLParser();
+
+                ParsedQuery pq1 = parser.parseQuery(q1, null);
+
+                TupleExpr te1 = pq1.getTupleExpr();
+                
+                List<StatementPattern> spList1 = 
StatementPatternCollector.process(te1);
+                
+                String rowString = 
spList1.get(0).getSubjectVar().getValue().stringValue();
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList1));
+               
+                StarQuery sq1 = new StarQuery(spList1);
+               
+                AccumuloDocIdIndexer adi = new AccumuloDocIdIndexer(conf);
+                
+//                Value v1 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(5)));
+//                Value v2 = RyaToRdfConversions.convertValue(new 
RyaType(XMLSchema.INTEGER,Integer.toString(25)));
+                
+                List<BindingSet> bsList = Lists.newArrayList();
+//                QueryBindingSet b1 = (new QueryBindingSet());
+//                b1.addBinding("X", vf.createURI("uri:5"));
+//                QueryBindingSet b2 = (new QueryBindingSet());
+//                b2.addBinding("X", vf.createURI("uri:15"));
+//                QueryBindingSet b3 = (new QueryBindingSet());
+//                b3.addBinding("X", vf.createURI("uri:25"));
+//                bsList.add(b1);
+//                bsList.add(b2);
+//                bsList.add(b3);
+                
+                
+//                BatchScanner bs = accCon.createBatchScanner(tablename + 
"doc_partitioned_index", new Authorizations("U"), 15);
+//                bs.setRanges(Collections.singleton(new Range(rowString)));
+//                Iterator<Entry<Key,org.apache.accumulo.core.data.Value>> 
bsIt = bs.iterator();
+//                while(bsIt.hasNext()) {
+//                    String otherRowString = 
bsIt.next().getKey().getRow().toString();
+//                    if(rowString.equals(otherRowString)) {
+//                        System.out.println(otherRowString);
+//                    }
+//                    
+//                }
+                
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol1 
= adi.queryDocIndex(sq1, bsList);
+                
+                System.out.println("**********************TEST 
14***********************");
+                int results = 0;
+                while(sol1.hasNext()) {
+                    System.out.println(sol1.next());
+                    results++;
+                }
+                Assert.assertEquals(2, results);
+                
+                
+                
+                
+                ParsedQuery pq2 = parser.parseQuery(q2, null);
+
+                TupleExpr te2 = pq2.getTupleExpr();
+                
+                List<StatementPattern> spList2 = 
StatementPatternCollector.process(te2);
+                
+                Assert.assertTrue(StarQuery.isValidStarQuery(spList2));
+               
+                StarQuery sq2 = new StarQuery(spList2);
+                
+                
+                CloseableIteration<BindingSet, QueryEvaluationException> sol2 
= adi.queryDocIndex(sq2, bsList);
+                
+                System.out.println("**********************TEST 
14***********************");
+                results = 0;
+                while(sol2.hasNext()) {
+                    System.out.println(sol2.next());
+                    results++;
+                }
+                Assert.assertEquals(1, results);
+                
+                
+                adi.close();
+                   
+
+
+
+    }
+    
+    
+    
+    
+    
+    
+
+}

Reply via email to