http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleReArranger.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleReArranger.java
 
b/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleReArranger.java
deleted file mode 100644
index 089ef5d..0000000
--- 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleReArranger.java
+++ /dev/null
@@ -1,348 +0,0 @@
-package mvm.rya.indexing.IndexPlanValidator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
-import mvm.rya.rdftriplestore.inference.DoNotExpandSP;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-
-import org.openrdf.query.algebra.Filter;
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-import com.beust.jcommander.internal.Lists;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.Maps;
-
-
-//A given TupleExpr can be broken up into "join segments", which are sections 
of the TupleExpr where nodes can
-//be freely exchanged.  This class creates a list of permuted TupleExpr from a 
specified TupleExpr by permuting the nodes
-//in each join segment.
-public class TupleReArranger {
-
-    private static Map<Join, List<List<TupleExpr>>> joinArgs;
-    private static Map<Join, List<Filter>> filterArgs;
-
-    
-    public static Iterator<TupleExpr> getPlans(Iterator<TupleExpr> indexPlans) 
{
-
-        final Iterator<TupleExpr> iter = indexPlans;
-
-        return new Iterator<TupleExpr>() {
-
-            private TupleExpr next = null;
-            private boolean hasNextCalled = false;
-            private boolean isEmpty = false;
-            Iterator<TupleExpr> tuples = null;
-
-            @Override
-            public boolean hasNext() {
-
-                if (!hasNextCalled && !isEmpty) {
-                    if (tuples != null && tuples.hasNext()) {
-                        next = tuples.next();
-                        hasNextCalled = true;
-                        return true;
-                    } else {
-                        while (iter.hasNext()) {
-                            tuples = 
getTupleReOrderings(iter.next()).iterator();
-                            if (tuples == null) {
-                                throw new IllegalStateException("Plans cannot 
be null!");
-                            }
-                            next = tuples.next();
-                            hasNextCalled = true;
-                            return true;
-                        }
-                        isEmpty = true;
-                        return false;
-                    }
-                } else if (isEmpty) {
-                    return false;
-                } else {
-                    return true;
-                }
-            }
-
-            @Override
-            public TupleExpr next() {
-
-                if (hasNextCalled) {
-                    hasNextCalled = false;
-                    return next;
-                } else if (isEmpty) {
-                    throw new NoSuchElementException();
-                } else {
-                    if (this.hasNext()) {
-                        hasNextCalled = false;
-                        return next;
-                    } else {
-                        throw new NoSuchElementException();
-                    }
-                }
-            }
-
-            @Override
-            public void remove() {
-                throw new UnsupportedOperationException("Cannot delete from 
iterator!");
-            }
-        };
-    }
-    
-    
-    //Give a TupleExpr, return list of join segment permuted TupleExpr
-    public static List<TupleExpr> getTupleReOrderings(TupleExpr te) {
-
-        joinArgs = Maps.newHashMap();
-        filterArgs = Maps.newHashMap();
-        
-        NodeCollector nc = new NodeCollector();
-        te.visit(nc);
-        joinArgs = nc.getPerms();
-        List<Join> joins = Lists.newArrayList(joinArgs.keySet());
-        
-        return getPlans(getReOrderings(joins), te);
-
-    }
-
-    
-    //iterates through the reOrder maps, and for each reOrder map builds a 
new, reordered tupleExpr
-    private static List<TupleExpr> getPlans(List<Map<Join, List<TupleExpr>>> 
reOrderings, TupleExpr te) {
-
-        List<TupleExpr> queryPlans = Lists.newArrayList();
-        PermInserter pm = new PermInserter();
-
-        for (Map<Join, List<TupleExpr>> order : reOrderings) {
-            TupleExpr clone = te.clone();
-            pm.setReOrderMap(order);
-            clone.visit(pm);
-            queryPlans.add(clone);
-        }
-
-        return queryPlans;
-    }
-
-  
-  
-    //recursive method which produces a list of maps.  Each map associates a 
join with
-    //a list of the non-join arguments below it contained in same join 
segment.  The list 
-    //represents an ordering of the
-    //non-join arguments and creating a TupleExpr from this map yields a new 
TupleExpr
-    //whose non-join arguments are permuted
-    private static List<Map<Join, List<TupleExpr>>> getReOrderings(List<Join> 
joins) {
-        Map<Join, List<TupleExpr>> reOrder = Maps.newHashMap();
-        List<Map<Join, List<TupleExpr>>> reOrderings = Lists.newArrayList();
-        getReOrderings(joins, reOrder, reOrderings);
-        return reOrderings;
-
-    }
-
-    private static void getReOrderings(List<Join> joins, Map<Join, 
List<TupleExpr>> reOrder,
-            List<Map<Join, List<TupleExpr>>> reOrderings) {
-
-        if (joins.isEmpty()) {
-            reOrderings.add(reOrder);
-            return;
-        }
-
-        List<Join> joinsCopy = Lists.newArrayList(joins);
-        Join join = joinsCopy.remove(0);
-        List<List<TupleExpr>> joinArgPerms = joinArgs.get(join);
-        for (List<TupleExpr> tupList : joinArgPerms) {
-            Map<Join, List<TupleExpr>> newReOrder = Maps.newHashMap(reOrder);
-            newReOrder.put(join, tupList);
-            getReOrderings(joinsCopy, newReOrder, reOrderings);
-        }
-        
-        return;
-
-    }
-    
-    
-   //creates a map which associates each first join of a TupleExpr join 
segment with all permutations of
-    //the non-join nodes after it.  More specifically, each join is associated 
with a list of TupleExpr
-    //lists, where each list represents an ordering of the non-join nodes 
following the associated join
-    private static class NodeCollector extends 
QueryModelVisitorBase<RuntimeException> {
-
-        private static List<Filter> filterList;
-
-        public Map<Join, List<List<TupleExpr>>> getPerms() {
-            return joinArgs;
-        }
-
-        @Override
-        public void meet(Join node) {
-
-            filterList = Lists.newArrayList();
-            
-            List<TupleExpr> args = Lists.newArrayList();
-            args = getJoinArgs(node, args);
-            List<List<TupleExpr>> argPerms = 
Lists.newArrayList(Collections2.permutations(args));
-            joinArgs.put(node, argPerms);
-            filterArgs.put(node, filterList);
-
-            for (TupleExpr te : args) {
-                if (!(te instanceof StatementPattern) && !(te instanceof 
ExternalTupleSet)) {
-                    te.visit(this);
-                }
-            }
-
-        }
-
-        
-        //get all non-join nodes below tupleExpr in same join segment
-        private static List<TupleExpr> getJoinArgs(TupleExpr tupleExpr, 
List<TupleExpr> joinArgs) {
-            if (tupleExpr instanceof Join) {
-                if (!(((Join) tupleExpr).getLeftArg() instanceof 
FixedStatementPattern)
-                        && !(((Join) tupleExpr).getRightArg() instanceof 
DoNotExpandSP)) {
-                    Join join = (Join) tupleExpr;
-                    getJoinArgs(join.getLeftArg(), joinArgs);
-                    getJoinArgs(join.getRightArg(), joinArgs);
-                } // assumes all filter occur above first join of segment --
-                  // this should be the state
-                  // after PrecompJoinOptimizer is called
-            } else if (tupleExpr instanceof Filter) {
-                filterList.add((Filter) tupleExpr);
-                getJoinArgs(((Filter) tupleExpr).getArg(), joinArgs);
-            } else {
-                joinArgs.add(tupleExpr);
-            }
-
-            return joinArgs;
-        }
-
-    }
-
-    
-
-    //for a given reOrder map, searches through TupleExpr and places each 
reordered collection
-    //of nodes at appropriate join
-    private static class PermInserter extends 
QueryModelVisitorBase<RuntimeException> {
-
-        private Map<Join, List<TupleExpr>> reOrderMap = Maps.newHashMap();
-
-        public void setReOrderMap(Map<Join, List<TupleExpr>> reOrderMap) {
-            this.reOrderMap = reOrderMap;
-        }
-
-        @Override
-        public void meet(Join node) {
-
-            List<TupleExpr> reOrder = reOrderMap.get(node);
-            if (reOrder != null) {
-                List<Filter> filterList = 
Lists.newArrayList(filterArgs.get(node));
-                node.replaceWith(getNewJoin(reOrder, 
getFilterChain(filterList)));
-
-                for (TupleExpr te : reOrder) {
-                    if (!(te instanceof StatementPattern) && !(te instanceof 
ExternalTupleSet)) {
-                        te.visit(this);
-                    }
-                }
-            }
-            super.meet(node);
-        }
-    }
-   
-
-    // chain filters together and return front and back of chain
-    private static List<TupleExpr> getFilterChain(List<Filter> filters) {
-        List<TupleExpr> filterTopBottom = Lists.newArrayList();
-        Filter filterChainTop = null;
-        Filter filterChainBottom = null;
-
-        for (Filter filter : filters) {
-            if (filterChainTop == null) {
-                filterChainTop = filter.clone();
-            } else if (filterChainBottom == null) {
-                filterChainBottom = filter.clone();
-                filterChainTop.setArg(filterChainBottom);
-            } else {
-                Filter newFilter = filter.clone();
-                filterChainBottom.setArg(newFilter);
-                filterChainBottom = newFilter;
-            }
-        }
-        if (filterChainTop != null) {
-            filterTopBottom.add(filterChainTop);
-        }
-        if (filterChainBottom != null) {
-            filterTopBottom.add(filterChainBottom);
-        }
-        return filterTopBottom;
-    }
-
-    // build newJoin node given remaining joinArgs and chain of filters
-    private static TupleExpr getNewJoin(List<TupleExpr> args, List<TupleExpr> 
filterChain) {
-        TupleExpr newJoin;
-        List<TupleExpr> joinArgs = Lists.newArrayList(args);
-
-        if (joinArgs.size() > 1) {
-            if (filterChain.size() > 0) {
-                TupleExpr finalJoinArg = joinArgs.remove(0).clone();
-                TupleExpr tempJoin;
-                TupleExpr temp = filterChain.get(0);
-
-                if (joinArgs.size() > 1) {
-                    tempJoin = new Join(joinArgs.remove(0).clone(), 
joinArgs.remove(0).clone());
-                    for (TupleExpr te : joinArgs) {
-                        tempJoin = new Join(tempJoin, te.clone());
-                    }
-                } else {
-                    tempJoin = joinArgs.remove(0).clone();
-                }
-
-                if (filterChain.size() == 1) {
-                    ((Filter) temp).setArg(tempJoin);
-                } else {
-                    ((Filter) filterChain.get(1)).setArg(tempJoin);
-                }
-                newJoin = new Join(temp, finalJoinArg);
-            } else {
-                newJoin = new Join(joinArgs.remove(0).clone(), 
joinArgs.remove(0).clone());
-
-                for (TupleExpr te : joinArgs) {
-                    newJoin = new Join(newJoin, te.clone());
-                }
-            }
-        } else if (joinArgs.size() == 1) {
-            if (filterChain.size() > 0) {
-                newJoin = filterChain.get(0);
-                if (filterChain.size() == 1) {
-                    ((Filter) newJoin).setArg(joinArgs.get(0).clone());
-                } else {
-                    ((Filter) 
filterChain.get(1)).setArg(joinArgs.get(0).clone());
-                }
-            } else {
-                newJoin = joinArgs.get(0).clone();
-            }
-        } else {
-            throw new IllegalStateException("JoinArgs size cannot be zero.");
-        }
-        return newJoin;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleValidator.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleValidator.java
 
b/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleValidator.java
deleted file mode 100644
index 4960d78..0000000
--- 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/TupleValidator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package mvm.rya.indexing.IndexPlanValidator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.Iterator;
-
-import org.openrdf.query.algebra.TupleExpr;
-
-public interface TupleValidator {
-
-    public boolean isValid(TupleExpr te);
-    
-    public Iterator<TupleExpr> getValidTuples(Iterator<TupleExpr> tupleList);
-    
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/ValidIndexCombinationGenerator.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/ValidIndexCombinationGenerator.java
 
b/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/ValidIndexCombinationGenerator.java
deleted file mode 100644
index 483457f..0000000
--- 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/ValidIndexCombinationGenerator.java
+++ /dev/null
@@ -1,461 +0,0 @@
-package mvm.rya.indexing.IndexPlanValidator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
-
-import org.openrdf.query.algebra.Filter;
-import org.openrdf.query.algebra.QueryModelNode;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-public class ValidIndexCombinationGenerator {
-
-       private TupleExpr query;
-       private Set<String> invalidCombos = Sets.newTreeSet();
-       private Set<QueryModelNode> spFilterSet;
-
-       public ValidIndexCombinationGenerator(TupleExpr query) {
-               this.query = query;
-               SpFilterCollector sfc = new SpFilterCollector();
-               query.visit(sfc);
-               spFilterSet = sfc.getSpFilterSet();
-       }
-
-       public Iterator<List<ExternalTupleSet>> getValidIndexCombos(
-                       List<ExternalTupleSet> indexSet) {
-
-               Collections.shuffle(indexSet);
-               final List<ExternalTupleSet> list = indexSet;
-               final Iterator<List<Integer>> iter = getValidCombos(list);
-
-               return new Iterator<List<ExternalTupleSet>>() {
-
-                       private List<ExternalTupleSet> next = null;
-                       private List<Integer> nextCombo = null;
-                       private boolean hasNextCalled = false;
-                       private boolean isEmpty = false;
-
-                       @Override
-                       public boolean hasNext() {
-
-                               if (!hasNextCalled && !isEmpty) {
-                                       if (!iter.hasNext()) {
-                                               isEmpty = true;
-                                               return false;
-                                       } else {
-                                               nextCombo = iter.next();
-                                               List<ExternalTupleSet> 
indexCombo = Lists
-                                                               .newArrayList();
-                                               for (Integer i : nextCombo) {
-                                                       
indexCombo.add(list.get(i));
-                                               }
-                                               next = indexCombo;
-                                               hasNextCalled = true;
-                                               return true;
-
-                                       }
-
-                               } else if (isEmpty) {
-                                       return false;
-                               } else {
-                                       return true;
-                               }
-                       }
-
-                       @Override
-                       public List<ExternalTupleSet> next() {
-
-                               if (hasNextCalled) {
-                                       hasNextCalled = false;
-                                       return next;
-                               } else if (isEmpty) {
-                                       throw new NoSuchElementException();
-                               } else {
-                                       if (this.hasNext()) {
-                                               hasNextCalled = false;
-                                               return next;
-                                       } else {
-                                               throw new 
NoSuchElementException();
-                                       }
-                               }
-                       }
-
-                       @Override
-                       public void remove() {
-
-                               throw new UnsupportedOperationException(
-                                               "Cannot delete from iterator!");
-
-                       }
-
-               };
-
-       }
-
-       private Iterator<List<Integer>> getValidCombos(
-                       List<ExternalTupleSet> indexList) {
-
-               final List<ExternalTupleSet> list = indexList;
-               final int indexSize = list.size();
-               final Iterator<List<Integer>> iter = getCombos(indexSize);
-
-               return new Iterator<List<Integer>>() {
-
-                       private List<Integer> next = null;
-                       private boolean hasNextCalled = false;
-                       private boolean isEmpty = false;
-
-                       @Override
-                       public boolean hasNext() {
-                               if (!hasNextCalled && !isEmpty) {
-
-                                       while (iter.hasNext()) {
-                                               List<Integer> tempNext = 
iter.next();
-                                               if (isValid(tempNext, list)) {
-                                                       next = tempNext;
-                                                       hasNextCalled = true;
-                                                       return true;
-                                               }
-
-                                       }
-
-                                       isEmpty = true;
-                                       return false;
-
-                               } else if (isEmpty) {
-                                       return false;
-                               } else {
-                                       return true;
-                               }
-                       }
-
-                       @Override
-                       public List<Integer> next() {
-
-                               if (hasNextCalled) {
-                                       hasNextCalled = false;
-                                       return next;
-                               } else if (isEmpty) {
-                                       throw new NoSuchElementException();
-                               } else {
-                                       if (this.hasNext()) {
-                                               hasNextCalled = false;
-                                               return next;
-                                       } else {
-                                               throw new 
NoSuchElementException();
-                                       }
-
-                               }
-
-                       }
-
-                       @Override
-                       public void remove() {
-
-                               throw new UnsupportedOperationException(
-                                               "Cannot delete from iterator!");
-
-                       }
-
-               };
-       }
-
-       private Iterator<List<Integer>> getCombos(int indexListSize) {
-
-               final int indexSize = indexListSize;
-               final int maxSubListSize = spFilterSet.size() / 2;
-
-               return new Iterator<List<Integer>>() {
-
-                       private List<Integer> next = null;
-                       private boolean hasNextCalled = false;
-                       private boolean isEmpty = false;
-                       private int subListSize = Math.min(maxSubListSize, 
indexSize) + 1;
-                       Iterator<List<Integer>> subList = null;
-
-                       @Override
-                       public boolean hasNext() {
-
-                               if (!hasNextCalled && !isEmpty) {
-                                       if (subList != null && 
subList.hasNext()) {
-                                               next = subList.next();
-                                               hasNextCalled = true;
-                                               return true;
-                                       } else {
-                                               subListSize--;
-                                               if (subListSize == 0) {
-                                                       isEmpty = true;
-                                                       return false;
-                                               }
-                                               subList = 
getCombos(subListSize, indexSize);
-                                               if (subList == null) {
-                                                       throw new 
IllegalStateException(
-                                                                       "Combos 
cannot be null!");
-                                               }
-                                               next = subList.next();
-                                               hasNextCalled = true;
-                                               return true;
-
-                                       }
-                               } else if (isEmpty) {
-                                       return false;
-                               } else {
-                                       return true;
-                               }
-                       }
-
-                       @Override
-                       public List<Integer> next() {
-
-                               if (hasNextCalled) {
-                                       hasNextCalled = false;
-                                       return next;
-                               } else if (isEmpty) {
-                                       throw new NoSuchElementException();
-                               } else {
-                                       if (this.hasNext()) {
-                                               hasNextCalled = false;
-                                               return next;
-                                       } else {
-                                               throw new 
NoSuchElementException();
-                                       }
-
-                               }
-
-                       }
-
-                       @Override
-                       public void remove() {
-                               throw new UnsupportedOperationException(
-                                               "Cannot delete from iterator!");
-                       }
-
-               };
-
-       }
-
-       private Iterator<List<Integer>> getCombos(int subListSize, int 
indexListSize) {
-
-               if (subListSize > indexListSize) {
-                       throw new IllegalArgumentException(
-                                       "Sublist size must be less than or 
equal to list size!");
-               }
-
-               final int subSize = subListSize;
-               final int indexSize = indexListSize;
-
-               return new Iterator<List<Integer>>() {
-
-                       private List<Integer> next = null;
-                       private List<Integer> tempList = Lists.newArrayList();
-                       private boolean calledHasNext = false;
-                       private boolean isEmpty = false;
-
-                       @Override
-                       public boolean hasNext() {
-
-                               if (!calledHasNext && !isEmpty) {
-                                       if (next == null) {
-                                               for (int i = 0; i < subSize; 
i++) {
-                                                       tempList.add(i);
-                                               }
-                                               next = tempList;
-                                               calledHasNext = true;
-                                               return true;
-                                       } else {
-                                               next = getNext(next, indexSize 
- 1);
-                                               if (next == null) {
-                                                       isEmpty = true;
-                                                       return false;
-                                               } else {
-                                                       calledHasNext = true;
-                                                       return true;
-                                               }
-
-                                       }
-                               } else if (isEmpty) {
-                                       return false;
-                               } else {
-                                       return true;
-                               }
-
-                       }
-
-                       @Override
-                       public List<Integer> next() {
-
-                               if (calledHasNext) {
-                                       calledHasNext = false;
-                                       return next;
-                               } else if (isEmpty) {
-                                       throw new NoSuchElementException();
-                               } else {
-                                       if (this.hasNext()) {
-                                               calledHasNext = false;
-                                               return next;
-                                       } else {
-                                               throw new 
NoSuchElementException();
-                                       }
-                               }
-                       }
-
-                       @Override
-                       public void remove() {
-                               throw new UnsupportedOperationException();
-
-                       }
-
-               };
-       }
-
-       private List<Integer> getNext(List<Integer> prev, int maxInt) {
-
-               List<Integer> returnList = Lists.newArrayList();
-               int size = prev.size();
-               int incrementPos = -1;
-               int incrementVal = 0;
-
-               for (int i = 0; i < size; i++) {
-                       if (prev.get(size - (i + 1)) != maxInt - i) {
-                               incrementPos = size - (i + 1);
-                               break;
-                       }
-               }
-
-               if (incrementPos == -1) {
-                       return null;
-               } else {
-
-                       incrementVal = prev.get(incrementPos);
-                       for (int i = 0; i < incrementPos; i++) {
-                               returnList.add(prev.get(i));
-                       }
-
-                       for (int j = incrementPos; j < size; j++) {
-                               returnList.add(++incrementVal);
-                       }
-
-                       return returnList;
-               }
-       }
-
-       private boolean isValid(List<Integer> combo,
-                       List<ExternalTupleSet> indexList) {
-
-               String s1 = Joiner.on("\u0000").join(combo).trim();
-
-               if (invalidCombos.contains(s1)) {
-                       return false;
-               } else {
-                       int valid = indicesDisjoint(combo, indexList);
-
-                       if (valid >= 0) {
-                               String s2 = "";
-                               for (int i = 0; i < valid + 1; i++) {
-                                       if (s2.length() == 0) {
-                                               s2 = s2 + combo.get(i);
-                                       } else {
-                                               s2 = s2 + "\u0000" + 
combo.get(i);
-                                       }
-                               }
-                               invalidCombos.add(s2);
-
-                               for (int i = valid + 1; i < combo.size(); i++) {
-                                       s2 = s2 + "\u0000" + combo.get(i);
-                                       invalidCombos.add(s2);
-                               }
-
-                               return false;
-                       } else {
-                               return true;
-                       }
-               }
-
-       }
-
-       private int indicesDisjoint(List<Integer> combo,
-                       List<ExternalTupleSet> indexList) {
-
-               Set<QueryModelNode> indexNodes = Sets.newHashSet();
-               Set<QueryModelNode> tempNodes;
-               TupleExpr temp;
-
-               int j = 0;
-               for (Integer i : combo) {
-                       temp = indexList.get(i).getTupleExpr();
-                       SpFilterCollector spf = new SpFilterCollector();
-                       temp.visit(spf);
-                       tempNodes = spf.getSpFilterSet();
-                       if (Sets.intersection(indexNodes, tempNodes).size() == 
0) {
-                               indexNodes = Sets.union(indexNodes, tempNodes);
-                               if (indexNodes.size() > spFilterSet.size()) {
-                                       return j;
-                               }
-                       } else {
-                               return j;
-                       }
-                       j++;
-               }
-
-               return -1;
-       }
-
-       private static class SpFilterCollector extends
-                       QueryModelVisitorBase<RuntimeException> {
-
-               private Set<QueryModelNode> spFilterSet = Sets.newHashSet();
-
-               public int getNodeNumber() {
-                       return spFilterSet.size();
-               }
-
-               public Set<QueryModelNode> getSpFilterSet() {
-                       return spFilterSet;
-               }
-
-               @Override
-               public void meet(StatementPattern node) {
-
-                       spFilterSet.add(node);
-                       return;
-
-               }
-
-               @Override
-               public void meet(Filter node) {
-
-                       spFilterSet.add(node.getCondition());
-                       node.getArg().visit(this);
-               }
-
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/VarConstantIndexListPruner.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/VarConstantIndexListPruner.java
 
b/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/VarConstantIndexListPruner.java
deleted file mode 100644
index 577663b..0000000
--- 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexPlanValidator/VarConstantIndexListPruner.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package mvm.rya.indexing.IndexPlanValidator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
-
-import org.openrdf.query.algebra.Filter;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.ValueConstant;
-import org.openrdf.query.algebra.Var;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-
-
-
-public class VarConstantIndexListPruner implements IndexListPruner {
-
-    private Map<String, Integer> queryConstantMap;
-    private int querySpCount;
-    private int queryFilterCount;
-
-    public VarConstantIndexListPruner(TupleExpr te) {
-
-        ConstantCollector cc = new ConstantCollector();
-        te.visit(cc);
-        this.queryConstantMap = cc.getConstantMap();
-        querySpCount = cc.getSpCount();
-        queryFilterCount = cc.getFilterCount();
-    }
-
-    @Override
-       public List<ExternalTupleSet> getRelevantIndices(List<ExternalTupleSet> 
indexList) {
-
-        List<ExternalTupleSet> relIndexSet = new ArrayList<>();
-
-        for (ExternalTupleSet e : indexList) {
-
-            if (isRelevant(e.getTupleExpr())) {
-                relIndexSet.add(e);
-            }
-
-        }
-
-        return relIndexSet;
-    }
-
-    private boolean isRelevant(TupleExpr index) {
-
-        ConstantCollector cc = new ConstantCollector();
-        index.visit(cc);
-
-        Map<String, Integer> indexConstantMap = cc.getConstantMap();
-        int indexSpCount = cc.getSpCount();
-        int indexFilterCount = cc.getFilterCount();
-        Set<String> indexConstants = indexConstantMap.keySet();
-
-        if (indexSpCount > querySpCount || indexFilterCount > queryFilterCount
-                || !Sets.intersection(indexConstants, 
queryConstantMap.keySet()).equals(indexConstants)) {
-            return false;
-        }
-
-        for (String s : indexConstants) {
-            if (indexConstantMap.get(s) > queryConstantMap.get(s)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-
-    private static class ConstantCollector extends 
QueryModelVisitorBase<RuntimeException> {
-
-        private Map<String, Integer> constantMap = Maps.newHashMap();
-        private int spCount = 0;
-        private int filterCount = 0;
-
-
-        @Override
-        public void meet(StatementPattern node) throws RuntimeException {
-
-           spCount++;
-           super.meet(node);
-
-        }
-
-
-        @Override
-        public void meet(Filter node) throws RuntimeException {
-
-           filterCount++;
-           super.meet(node);
-
-        }
-
-
-
-
-        @Override
-        public void meet(Var node) throws RuntimeException {
-
-            if (node.isConstant()) {
-                String key = node.getValue().toString();
-                if(constantMap.containsKey(key)){
-                    int count = constantMap.get(key);
-                    count += 1;
-                    constantMap.put(key, count);
-                } else {
-                    constantMap.put(key, 1);
-                }
-            }
-
-        }
-
-
-        @Override
-               public void meet(ValueConstant node) throws RuntimeException {
-
-            String key = node.getValue().toString();
-
-            if(constantMap.containsKey(key)) {
-                int count = constantMap.get(key);
-                count += 1;
-                constantMap.put(key, count);
-            } else {
-                constantMap.put(key,1);
-            }
-
-        }
-
-
-        public Map<String, Integer> getConstantMap() {
-            return constantMap;
-        }
-
-        public int getSpCount(){
-            return spCount;
-        }
-
-
-        public int getFilterCount() {
-            return filterCount;
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IndexingExpr.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/indexing/IndexingExpr.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/IndexingExpr.java
deleted file mode 100644
index 1d4c4bb..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/IndexingExpr.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.Set;
-
-import org.openrdf.model.URI;
-import org.openrdf.model.Value;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.Var;
-
-import com.google.common.collect.Sets;
-
-public class IndexingExpr {
-
-    private final URI function;
-    private final Value[] arguments;
-    private final StatementPattern spConstraint;
-
-    public IndexingExpr(URI function, StatementPattern spConstraint, Value... 
arguments) {
-        this.function = function;
-        this.arguments = arguments;
-        this.spConstraint = spConstraint;
-    }
-
-    public URI getFunction() {
-        return function;
-    }
-
-    public Value[] getArguments() {
-        return arguments;
-    }
-
-    public StatementPattern getSpConstraint() {
-        return spConstraint;
-    }
-
-
-    public Set<String> getBindingNames() {
-        //resource and match variable for search are already included as 
standard result-bindings
-        Set<String> bindings = Sets.newHashSet();
-
-        for(Var v: spConstraint.getVarList()) {
-            if(!v.isConstant()) {
-                bindings.add(v.getName());
-            }
-        }
-        return bindings;
-    }
-    
-    
-    @Override
-    public boolean equals(Object other) {
-        if (!(other instanceof IndexingExpr)) {
-            return false;
-        }
-        IndexingExpr arg = (IndexingExpr) other;
-        return (this.function.equals(arg.function)) && 
(this.spConstraint.equals(arg.spConstraint))
-                && (this.arguments.equals(arg.arguments));
-    }
-    
-    
-    @Override
-    public int hashCode() {
-        int result = 17;
-        result = 31*result + function.hashCode();
-        result = 31*result + spConstraint.hashCode();
-        result = 31*result + arguments.hashCode();
-        
-        return result;
-    }
-    
-}
-
-    
-

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IndexingFunctionRegistry.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexingFunctionRegistry.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/IndexingFunctionRegistry.java
deleted file mode 100644
index 2f2c486..0000000
--- 
a/extras/indexing/src/main/java/mvm/rya/indexing/IndexingFunctionRegistry.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.openrdf.model.URI;
-import org.openrdf.model.impl.URIImpl;
-import org.openrdf.query.algebra.ValueConstant;
-import org.openrdf.query.algebra.ValueExpr;
-import org.openrdf.query.algebra.Var;
-
-import com.google.common.collect.Maps;
-
-public class IndexingFunctionRegistry {
-
-    
-    private static final Map<URI, FUNCTION_TYPE> SEARCH_FUNCTIONS = 
Maps.newHashMap();
-    
-    static {
-        
-        String TEMPORAL_NS = "tag:rya-rdf.org,2015:temporal#";         
-
-        SEARCH_FUNCTIONS.put(new 
URIImpl(TEMPORAL_NS+"after"),FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"before"), 
FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"equals"), 
FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"beforeInterval"), 
FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"afterInterval"), 
FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"insideInterval"), 
FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"hasBeginningInterval"), 
FUNCTION_TYPE.TEMPORAL);
-        SEARCH_FUNCTIONS.put(new URIImpl(TEMPORAL_NS+"hasEndInterval"), 
FUNCTION_TYPE.TEMPORAL);
-        
-        
-        SEARCH_FUNCTIONS.put(new URIImpl("http://rdf.useekm.com/fts#text";), 
FUNCTION_TYPE.FREETEXT);
-
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_EQUALS, FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_DISJOINT, FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_INTERSECTS, 
FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_TOUCHES, FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_WITHIN, FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_CONTAINS, FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_OVERLAPS, FUNCTION_TYPE.GEO);
-        SEARCH_FUNCTIONS.put(GeoConstants.GEO_SF_CROSSES, FUNCTION_TYPE.GEO);
-
-    }
-    
-    public enum FUNCTION_TYPE {GEO, TEMPORAL, FREETEXT};
-    
-    
-    public static Set<URI> getFunctions() {
-        return SEARCH_FUNCTIONS.keySet();
-    }
-    
-    
-    public static Var getResultVarFromFunctionCall(URI function, 
List<ValueExpr> args) {
-        
-        FUNCTION_TYPE type = SEARCH_FUNCTIONS.get(function);
-        
-        switch(type) {
-        case GEO: 
-            return findBinaryResultVar(args);
-        case FREETEXT:
-            return findLiteralResultVar(args);
-        case TEMPORAL:
-            return findBinaryResultVar(args);
-        default:
-            return null;
-        }
-        
-    }
-    
-    
-    public static FUNCTION_TYPE getFunctionType(URI func) {
-        return SEARCH_FUNCTIONS.get(func);
-    }
-    
-    
-    
-    private static boolean isUnboundVariable(ValueExpr expr) {
-        return expr instanceof Var && !((Var)expr).hasValue();
-    }
-    
-    private static boolean isConstant(ValueExpr expr) {
-        return expr instanceof ValueConstant || (expr instanceof Var && 
((Var)expr).hasValue());
-    }
-    
-    
-    private static Var findBinaryResultVar(List<ValueExpr> args) {
-     
-        if (args.size() >= 2) {
-            ValueExpr arg1 = args.get(0);
-            ValueExpr arg2 = args.get(1);
-            if (isUnboundVariable(arg1) && isConstant(arg2))
-                return (Var) arg1;
-            else if (isUnboundVariable(arg2) && isConstant(arg1))
-                return (Var) arg2;
-        }
-        return null;
-    }
-    
-    
-    private static Var findLiteralResultVar(List<ValueExpr> args) {
-        if (args.size() >= 2) {
-            ValueExpr arg1 = args.get(0);
-            ValueExpr arg2 = args.get(1);
-            if (isUnboundVariable(arg1) && isConstant(arg2))
-                return (Var)arg1;
-        }
-        return null;
-    }
-    
-    
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/IteratorFactory.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/IteratorFactory.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/IteratorFactory.java
deleted file mode 100644
index eb88d99..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/IteratorFactory.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import info.aduna.iteration.CloseableIteration;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.QueryModelNode;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.Var;
-import org.openrdf.query.impl.MapBindingSet;
-
-
-//Given StatementPattern constraint and SearchFunction associated with an 
Indexing Node,
-//creates appropriate StatementConstraints object from StatementPattern 
constraint and
-//binding set and then uses SearchFunction to delegate query to appropriate 
index.
-//Resulting iterator over statements is then converted to an iterator over 
binding sets
-public class IteratorFactory {
-
-    public static CloseableIteration<BindingSet, QueryEvaluationException> 
getIterator(final StatementPattern match, 
-            final BindingSet bindings, final String queryText, final 
SearchFunction searchFunction) {
-        return new CloseableIteration<BindingSet, QueryEvaluationException>() {
-
-            private boolean isClosed = false;
-            private CloseableIteration<Statement, QueryEvaluationException> 
statementIt = null;
-
-            private String subjectBinding = match.getSubjectVar().getName();
-            private String predicateBinding = 
match.getPredicateVar().getName();
-            private String objectBinding = match.getObjectVar().getName();
-            private String contextBinding = null;
-
-            private void performQuery() throws QueryEvaluationException {
-
-                StatementConstraints contraints = new StatementConstraints();
-
-                // get the context (i.e. named graph) of the statement and use 
that in the query
-                QueryModelNode parentNode = 
match.getSubjectVar().getParentNode();
-                if (parentNode instanceof StatementPattern) {
-                    StatementPattern parentStatement = (StatementPattern) 
parentNode;
-                    Var contextVar = parentStatement.getContextVar();
-                    if (contextVar != null) {
-                        contextBinding = contextVar.getName();
-                        Resource context = (Resource) contextVar.getValue();
-                        contraints.setContext(context);
-                    }
-                }
-
-                // get the subject constraint
-                if (match.getSubjectVar().isConstant()) {
-                    // get the subject binding from the filter/statement pair
-                    Resource subject = (Resource) 
match.getSubjectVar().getValue();
-                    contraints.setSubject(subject);
-                } else if (bindings.hasBinding(subjectBinding)) {
-                    // get the subject binding from the passed in bindings (eg 
from other statements/parts of the tree)
-                    Resource subject = (Resource) 
bindings.getValue(subjectBinding);
-                    contraints.setSubject(subject);
-                }
-
-                // get the predicate constraint
-                if (match.getPredicateVar().isConstant()) {
-                    // get the predicate binding from the filter/statement pair
-                    Set<URI> predicates = new 
HashSet<URI>(getPredicateRestrictions(match.getPredicateVar()));
-                    contraints.setPredicates(predicates);
-                } else if (bindings.hasBinding(predicateBinding)) {
-                    // get the predicate binding from the passed in bindings 
(eg from other statements/parts of the tree)
-                    URI predicateUri = (URI) 
bindings.getValue(predicateBinding);
-                    Set<URI> predicates = Collections.singleton(predicateUri);
-                    contraints.setPredicates(predicates);
-                }
-
-                statementIt = searchFunction.performSearch(queryText, 
contraints);
-            }
-
-            @Override
-            public boolean hasNext() throws QueryEvaluationException {
-                if (statementIt == null) {
-                    performQuery();
-                }
-                return statementIt.hasNext();
-            }
-
-            @Override
-            public BindingSet next() throws QueryEvaluationException {
-                if (!hasNext() || isClosed) {
-                    throw new NoSuchElementException();
-                }
-
-                Statement statment = statementIt.next();
-
-                MapBindingSet bset = new MapBindingSet();
-                if (!subjectBinding.startsWith("-const"))
-                    bset.addBinding(subjectBinding, statment.getSubject());
-                if (!predicateBinding.startsWith("-const"))
-                    bset.addBinding(predicateBinding, statment.getPredicate());
-                if (!objectBinding.startsWith("-const"))
-                    bset.addBinding(objectBinding, statment.getObject());
-                if (contextBinding != null && 
!contextBinding.startsWith("-const"))
-                    bset.addBinding(contextBinding, statment.getContext());
-
-                // merge with other bindings.
-                for (String name : bindings.getBindingNames()) {
-                    bset.addBinding(name, bindings.getValue(name));
-                }
-
-                return bset;
-            }
-
-            @Override
-            public void remove() throws QueryEvaluationException {
-                throw new UnsupportedOperationException();
-
-            }
-
-            @Override
-            public void close() throws QueryEvaluationException {
-                if (statementIt != null) {
-                    statementIt.close();
-                }
-                isClosed = true;
-            }
-
-        };
-
-    }
-   
-    public static Collection<URI> getPredicateRestrictions(Var predicate) {
-        if (predicate.hasValue())
-            return Collections.singleton((URI) predicate.getValue());
-        return Collections.emptyList();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/KeyParts.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/indexing/KeyParts.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/KeyParts.java
deleted file mode 100644
index 2dd7a73..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/KeyParts.java
+++ /dev/null
@@ -1,333 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.accumulo.core.data.Value;
-import org.apache.commons.codec.binary.StringUtils;
-import org.apache.hadoop.io.Text;
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.impl.ContextStatementImpl;
-import org.openrdf.model.impl.StatementImpl;
-import org.openrdf.model.impl.URIImpl;
-
-/**
- * Store and format the various temporal index keys.
- * Row Keys are in these two forms, where [x] denotes x is optional:
- *             rowkey = contraintPrefix datetime
- *             rowkey = datetime 0x/00 uniquesuffix
- *             contraintPrefix = 0x/00 hash([subject][predicate])
- *             uniquesuffix = some bytes to make it unique, like 
hash(statement).
- *
- * The instance is in one of two modes depending on the constructor:
- *             storage mode  -- construct with a triple statement, get an 
iterator of keys to store.
- *             query mode        -- construct with a statement and query 
constraints, get the key prefix to search.
- *
- * this has the flavor of an immutable object
- * This is independent of the underlying database engine
- *
- * @author David.Lotts
- *
- */
-public class KeyParts implements Iterable<KeyParts> {
-       private static final String CQ_S_P_AT = "spo";
-       private static final String CQ_P_AT = "po";
-       private static final String CQ_S_AT = "so";
-       private static final String CQ_O_AT = "o";
-       public static final String CQ_BEGIN = "begin";
-       public static final String CQ_END = "end";
-
-        public static final byte[] HASH_PREFIX = new byte[] {0};
-        public static final byte[] HASH_PREFIX_FOLLOWING = new byte[] {1};
-
-               public final Text cf;
-               public final Text cq;
-               public final Text constraintPrefix; // subject and/or predicate
-               final Text storeKey; // subject and/or predicate
-               final private TemporalInstant instant;
-               final private Statement statement;
-               final private boolean queryMode;
-               KeyParts(final Text constraintPrefix, final TemporalInstant 
instant, final String cf, final String cq) {
-                       queryMode = true; // query mode
-                       storeKey = null;
-                       statement = null;
-                       this.constraintPrefix = constraintPrefix;
-                       this.instant = instant;
-                       this.cf = new Text(cf);
-                       this.cq = new Text(cq);
-               }
-
-               /**
-                * this is the value to index.
-                * @return
-                */
-               public Value getValue() {
-                       assert statement!=null;
-                       return new 
Value(StringUtils.getBytesUtf8(StatementSerializer.writeStatement(statement)));
-               }
-
-               public KeyParts(final Statement statement, final 
TemporalInstant instant2) {
-                       queryMode = false; // store mode
-                       storeKey = null;
-                       constraintPrefix = null;
-                       this.statement = statement;
-                       instant = instant2;
-                       cf = null;
-                       cq = null;
-               }
-
-               private KeyParts(final Text keyText, final Text cf, final Text 
cq, final Statement statement) {
-                       queryMode = false; // store mode
-                       constraintPrefix = null;
-                       this.statement = statement;
-                       instant = null;
-                       storeKey = keyText;
-                       this.cf = cf;
-                       this.cq = cq;
-               }
-
-               @Override
-               public Iterator<KeyParts> iterator() {
-                       final String[] strategies = new String[] {
-                                       CQ_O_AT, CQ_S_P_AT, CQ_P_AT, CQ_S_AT
-                               } ;  // CQ_END?
-                       assert !queryMode : "iterator for queryMode is not 
immplemented" ;
-                       if (queryMode) {
-                return null;
-            }
-
-                       // if (!queryMode)
-                       return new Iterator<KeyParts>() {
-                               int nextStrategy = 0;
-
-                               @Override
-                               public boolean hasNext() {
-                                       return nextStrategy < strategies.length;
-                               }
-
-                               @Override
-                               public KeyParts next() {
-                                       assert(statement!=null);
-                                       Text keyText = new Text();
-                                       // increment++ the next strategy AFTER 
getting the value
-                                       switch (nextStrategy++) {
-                                       case 0: // index o+hash(p+s)
-                                               assert 
(CQ_O_AT.equals(strategies[0]));
-                                               keyText = new 
Text(instant.getAsKeyBytes());
-                                               
KeyParts.appendUniqueness(statement, keyText);
-                                               return new KeyParts(keyText, 
new Text(StatementSerializer.writeContext(statement)), new Text(CQ_O_AT), 
statement);
-                                       case 1:// index hash(s+p)+o
-                                               assert 
(CQ_S_P_AT.equals(strategies[1]));
-                                               
KeyParts.appendSubjectPredicate(statement, keyText);
-                                               KeyParts.appendInstant(instant, 
keyText);
-                                               // appendUniqueness -- Not 
needed since it is already unique.
-                                               return new KeyParts(keyText, 
new Text(StatementSerializer.writeContext(statement)), new Text(CQ_S_P_AT), 
statement);
-                                       case 2: // index hash(p)+o
-                                               assert 
(CQ_P_AT.equals(strategies[2]));
-                                               
KeyParts.appendPredicate(statement, keyText);
-                                               KeyParts.appendInstant(instant, 
keyText);
-                                               
KeyParts.appendUniqueness(statement, keyText);
-                                               return new KeyParts(keyText, 
new Text(StatementSerializer.writeContext(statement)), new Text(CQ_P_AT), 
statement);
-                                       case 3: // index hash(s)+o
-                                               assert 
(CQ_S_AT.equals(strategies[3]));
-                                               
KeyParts.appendSubject(statement, keyText);
-                                               KeyParts.appendInstant(instant, 
keyText);
-                                               
KeyParts.appendUniqueness(statement, keyText);
-                                               return new KeyParts(keyText, 
new Text(StatementSerializer.writeContext(statement)), new Text(CQ_S_AT), 
statement);
-                                       }
-                                       throw new Error("Next passed end?  No 
such nextStrategy="+(nextStrategy-1));
-
-                               }
-
-                               @Override
-                               public void remove() {
-                                       throw new Error("Remove not 
Implemented.");
-                               }
-                       };
-               }
-
-               public byte[] getStoreKey() {
-                       assert !queryMode : "must be in store Mode, store keys 
are not initialized.";
-                       return storeKey.copyBytes();
-               }
-
-               /**
-                * Query key is the prefix plus the datetime, but no uniqueness 
at the end.
-                * @return the row key for range queries.
-                */
-       public Text getQueryKey() {
-               return getQueryKey(instant);
-       };
-
-       /**
-        * Query key is the prefix plus the datetime, but no uniqueness at the 
end.
-        *
-        * @return the row key for range queries.
-        */
-       public Text getQueryKey(final TemporalInstant theInstant) {
-               assert queryMode : "must be in query Mode, query keys are not 
initialized.";
-               final Text keyText = new Text();
-               if (constraintPrefix != null) {
-            appendBytes(constraintPrefix.copyBytes(), keyText);
-        }
-               appendInstant(theInstant, keyText);
-               return keyText;
-       };
-
-               @Override
-               public String toString() {
-                       return "KeyParts [contraintPrefix=" + 
toHumanString(constraintPrefix) + ", instant=" + 
toHumanString(instant.getAsKeyBytes()) + ", cf=" + cf + ", cq=" + cq + "]";
-               }
-           private static void appendSubject(final Statement statement, final 
Text keyText) {
-               final Value statementValue = new 
Value(StatementSerializer.writeSubject(statement).getBytes());
-               final byte[] hashOfValue = 
uniqueFromValueForKey(statementValue);
-               appendBytes(HASH_PREFIX, keyText); // prefix the hash with a 
zero byte.
-               appendBytes(hashOfValue, keyText);
-               }
-
-               private static void appendPredicate(final Statement statement, 
final Text keyText) {
-               final Value statementValue = new 
Value(StringUtils.getBytesUtf8(StatementSerializer.writePredicate(statement)));
-               final byte[] hashOfValue = 
uniqueFromValueForKey(statementValue);
-               appendBytes(HASH_PREFIX, keyText); // prefix the hash with a 
zero byte.
-               appendBytes(hashOfValue, keyText);
-               }
-
-               private static void appendInstant(final TemporalInstant 
instant, final Text keyText) {
-                       final byte[] bytes = instant.getAsKeyBytes();
-               appendBytes(bytes, keyText);
-               }
-
-               private static void appendSubjectPredicate(final Statement 
statement, final Text keyText) {
-               final Value statementValue = new 
Value(StringUtils.getBytesUtf8(StatementSerializer.writeSubjectPredicate(statement)));
-               final byte[] hashOfValue = 
uniqueFromValueForKey(statementValue);
-               appendBytes(HASH_PREFIX, keyText); // prefix the hash with a 
zero byte.
-               appendBytes(hashOfValue, keyText);
-               }
-
-               /**
-                * Append any byte array to a row key.
-                * @param bytes append this
-                * @param keyText text to append to
-                */
-               private static void appendBytes(final byte[] bytes, final Text 
keyText) {
-                       keyText.append(bytes, 0, bytes.length);
-               }
-
-               /**
-            * Get a collision unlikely hash string and append to the key,
-            * so that if two keys have the same value, then they will be the 
same,
-            * if two different values that occur at the same time there keys 
are different.
-            * If the application uses a very large number of statements at the 
exact same time,
-            * the md5 value might be upgraded to for example sha-1 to avoid 
collisions.
-            * @param statement
-            * @param keyText
-            */
-           public static void appendUniqueness(final Statement statement, 
final Text keyText) {
-               keyText.append(HASH_PREFIX, 0, 1);   // delimiter
-               final Value statementValue = new 
Value(StringUtils.getBytesUtf8(StatementSerializer.writeStatement(statement)));
-               final byte[] hashOfValue = Md5Hash.md5Binary(statementValue);
-               keyText.append(hashOfValue, 0, hashOfValue.length);
-           }
-           /**
-            * Get a collision unlikely hash string to append to the key,
-            * so that if two keys have the same value, then they will be the 
same,
-            * if two different values that occur at the same time there keys 
are different.
-            * @param value
-            * @return
-            */
-           private static byte[] uniqueFromValueForKey(final Value value) {
-               return Md5Hash.md5Binary(value);
-           }
-
-               /**
-                * List all the index keys to find for any query.  Set the 
strategy via the column qualifier, ex: CQ_S_P_AT.
-                * Column Family (CF) is the context/named-graph.
-                * @param queryInstant
-                * @param contraints
-                * @return
-                */
-               static public List<KeyParts> keyPartsForQuery(final 
TemporalInstant queryInstant, final StatementConstraints contraints) {
-                       final List<KeyParts> keys = new LinkedList<KeyParts>();
-                       final URI urlNull = new URIImpl("urn:null");
-                       final Resource currentContext = contraints.getContext();
-                       final boolean hasSubj = contraints.hasSubject();
-                       if (contraints.hasPredicates()) {
-                               for (final URI nextPredicate : 
contraints.getPredicates()) {
-                                       final Text contraintPrefix  = new 
Text();
-                                       final Statement statement = new 
ContextStatementImpl(hasSubj ? contraints.getSubject() : urlNull, 
nextPredicate, urlNull, contraints.getContext());
-                                       if (hasSubj) {
-                        appendSubjectPredicate(statement, contraintPrefix);
-                    } else {
-                        appendPredicate(statement, contraintPrefix);
-                    }
-                                       keys.add(new KeyParts(contraintPrefix, 
queryInstant, (currentContext==null)?"":currentContext.toString(), 
hasSubj?CQ_S_P_AT:CQ_P_AT  ));
-                               }
-                       }
-                       else if (contraints.hasSubject()) { // and no predicates
-                               final Text contraintPrefix = new Text();
-                               final Statement statement = new 
StatementImpl(contraints.getSubject(), urlNull, urlNull);
-                               appendSubject(statement, contraintPrefix);
-                               keys.add( new KeyParts(contraintPrefix, 
queryInstant, (currentContext==null)?"":currentContext.toString(), CQ_S_AT) );
-                       }
-                       else {
-                               // No constraints except possibly a 
context/named-graph, handled by the CF
-                                keys.add( new KeyParts(null, queryInstant, 
(currentContext==null)?"":currentContext.toString(), CQ_O_AT) );
-                       }
-                       return keys;
-               }
-           /**
-            * convert a non-utf8 byte[] and text and value to string and show 
unprintable bytes as {xx} where x is hex.
-            * @param value
-            * @return Human readable representation.
-            */
-               public static String toHumanString(final Value value) {
-                       return toHumanString(value==null?null:value.get());
-               }
-               public static String toHumanString(final Text text) {
-                       return toHumanString(text==null?null:text.copyBytes());
-               }
-               public static String toHumanString(final byte[] bytes) {
-                       if (bytes==null) {
-                return "{null}";
-            }
-                       final StringBuilder sb = new StringBuilder();
-                       for (final byte b : bytes) {
-                               if ((b > 0x7e) || (b < 32)) {
-                                       sb.append("{");
-                                       sb.append(Integer.toHexString( b & 0xff 
)); // Lop off the sign extended ones.
-                                       sb.append("}");
-                               } else if (b == '{'||b == '}') { // Escape the 
literal braces.
-                                       sb.append("{");
-                                       sb.append((char)b);
-                                       sb.append("}");
-                               } else {
-                    sb.append((char)b);
-                }
-                       }
-                       return sb.toString();
-               }
-
-       }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/Md5Hash.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/indexing/Md5Hash.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/Md5Hash.java
deleted file mode 100644
index 0e83822..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/Md5Hash.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package mvm.rya.indexing;
-
-import org.apache.accumulo.core.data.Value;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.codec.binary.StringUtils;
-import org.apache.commons.codec.digest.DigestUtils;
-
-/**
- * Utility methods for generating hashes. Note that MD5 is 16 bytes, or 32 Hex 
chars. To make it smaller (but still printable), this class
- * Base64 encodes those 16 bytes into 22 chars.
- */
-public class Md5Hash {
-    public static String md5Base64(final byte[] data) {
-        return Base64.encodeBase64URLSafeString(DigestUtils.md5(data));
-    }
-
-    public static String md5Base64(final String string) {
-        return md5Base64(StringUtils.getBytesUtf8(string));
-    }
-
-    public static byte[] md5Binary(final Value value) {
-        return DigestUtils.md5(value.get());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunction.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunction.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunction.java
deleted file mode 100644
index 6a19ee0..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunction.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import info.aduna.iteration.CloseableIteration;
-import org.openrdf.model.Statement;
-import org.openrdf.query.QueryEvaluationException;
-
-/**
- * A function used to perform a search.
- */
-public interface SearchFunction {
-
-    /**
-     * Search the indices for the given terms and return {@link Statement}s 
that meet the {@link StatementConstraints}
-     * 
-     * @param searchTerms
-     *            the search terms
-     * @param contraints
-     *            the constraints on the returned {@link Statement}s
-     * @return
-     * @throws QueryEvaluationException
-     */
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
performSearch(String searchTerms, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunctionFactory.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunctionFactory.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunctionFactory.java
deleted file mode 100644
index 719cc2f..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/SearchFunctionFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.openrdf.model.URI;
-import org.openrdf.query.QueryEvaluationException;
-
-import com.google.common.collect.Maps;
-
-public abstract class SearchFunctionFactory {
-    
-    private static final Logger logger = 
Logger.getLogger(SearchFunctionFactory.class);
-
-    private final Map<URI, SearchFunction> SEARCH_FUNCTION_MAP = 
Maps.newHashMap();
-
-
-    /**
-     * Get a {@link GeoSearchFunction} for a give URI.
-     * 
-     * @param searchFunction
-     * @return
-     */
-    public SearchFunction getSearchFunction(final URI searchFunction) {
-
-        SearchFunction geoFunc = null;
-
-        try {
-            geoFunc = getSearchFunctionInternal(searchFunction);
-        } catch (QueryEvaluationException e) {
-            e.printStackTrace();
-        }
-
-        return geoFunc;
-    }
-
-    private SearchFunction getSearchFunctionInternal(final URI searchFunction) 
throws QueryEvaluationException {
-        SearchFunction sf = SEARCH_FUNCTION_MAP.get(searchFunction);
-
-        if (sf != null) {
-            return sf;
-        } else {
-            throw new QueryEvaluationException("Unknown Search Function: " + 
searchFunction.stringValue());
-        }
-            
-       
-    }
-
-   
-}
-  

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/StatementConstraints.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/StatementConstraints.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/StatementConstraints.java
deleted file mode 100644
index e8f1d4e..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/StatementConstraints.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-
-import java.util.Set;
-
-import org.openrdf.model.Resource;
-import org.openrdf.model.URI;
-
-public class StatementConstraints {
-       private Resource context = null;
-       private Resource subject = null;
-       private Set<URI> predicates = null;
-
-       public StatementConstraints setContext(Resource context) {
-               this.context = context;
-               return this;
-       }
-
-       public StatementConstraints setPredicates(Set<URI> predicates) {
-               this.predicates = predicates;
-               return this;
-       }
-
-       public StatementConstraints setSubject(Resource subject) {
-               this.subject = subject;
-               return this;
-       }
-
-       public Resource getContext() {
-               return context;
-       }
-
-       public Set<URI> getPredicates() {
-               return predicates;
-       }
-
-       public Resource getSubject() {
-               return subject;
-       }
-
-       public boolean hasSubject() {
-               return subject != null;
-       }
-
-       public boolean hasPredicates() {
-               return predicates != null && !predicates.isEmpty();
-       }
-
-       public boolean hasContext() {
-               return context != null;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/StatementSerializer.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/StatementSerializer.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/StatementSerializer.java
deleted file mode 100644
index 107f69d..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/StatementSerializer.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-
-import java.io.IOException;
-import java.util.Set;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.Validate;
-import org.openrdf.model.Literal;
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.Value;
-import org.openrdf.model.ValueFactory;
-import org.openrdf.model.impl.ContextStatementImpl;
-import org.openrdf.model.impl.StatementImpl;
-import org.openrdf.model.impl.ValueFactoryImpl;
-
-/**
- * A set of Utilities to serialize {@link Statement}s to/from {@link String}s.
- */
-public class StatementSerializer {
-    private static String SEP = "\u0000";
-
-    private static ValueFactory VALUE_FACTORY = new ValueFactoryImpl();
-
-    /**
-     * Read a {@link Statement} from a {@link String}
-     * 
-     * @param in
-     *            the {@link String} to parse
-     * @return a {@link Statement}
-     */
-    public static Statement readStatement(String in) throws IOException {
-        String[] parts = in.split(SEP);
-        
-        if (parts.length != 4) {
-            throw new IOException("Not a valid statement: " + in);
-        }
-        
-        String contextString = parts[0];
-        String subjectString = parts[1];
-        String predicateString = parts[2];
-        String objectString = parts[3];
-        return readStatement(subjectString, predicateString, objectString, 
contextString);
-    }
-
-    public static Statement readStatement(String subjectString, String 
predicateString, String objectString) {
-        return readStatement(subjectString, predicateString, objectString, "");
-    }
-
-    public static Statement readStatement(String subjectString, String 
predicateString, String objectString, String contextString) {
-        Resource subject = createResource(subjectString);
-        URI predicate = VALUE_FACTORY.createURI(predicateString);
-
-        boolean isObjectLiteral = objectString.startsWith("\"");
-
-        Value object = null;
-        if (isObjectLiteral) {
-            object = parseLiteral(objectString);
-        } else {
-            object = createResource(objectString);
-        }
-
-        if (contextString == null || contextString.isEmpty()) {
-            return new StatementImpl(subject, predicate, object);
-        } else {
-            Resource context = VALUE_FACTORY.createURI(contextString);
-            return new ContextStatementImpl(subject, predicate, object, 
context);
-        }
-    }
-
-    private static Resource createResource(String str) {
-        if (str.startsWith("_")) {
-            return VALUE_FACTORY.createBNode(str.substring(2));
-        }
-        return VALUE_FACTORY.createURI(str);
-
-    }
-
-    private static Literal parseLiteral(String fullLiteralString) {
-        Validate.notNull(fullLiteralString);
-        Validate.isTrue(fullLiteralString.length() > 1);
-
-        if (fullLiteralString.endsWith("\"")) {
-            String fullLiteralWithoutQuotes = fullLiteralString.substring(1, 
fullLiteralString.length() - 1);
-            return VALUE_FACTORY.createLiteral(fullLiteralWithoutQuotes, 
(String) null);
-        } else {
-
-            // find the closing quote
-            int labelEnd = fullLiteralString.lastIndexOf("\"");
-
-            String label = fullLiteralString.substring(1, labelEnd);
-
-            String data = fullLiteralString.substring(labelEnd + 1);
-
-            if (data.startsWith("@")) {
-                // the data is "language"
-                String lang = data.substring(1);
-                return VALUE_FACTORY.createLiteral(label, lang);
-            } else if (data.startsWith("^^<")) {
-                // the data is a "datatype"
-                String datatype = data.substring(3, data.length() - 1);
-                URI datatypeUri = VALUE_FACTORY.createURI(datatype);
-                return VALUE_FACTORY.createLiteral(label, datatypeUri);
-            }
-        }
-        return null;
-
-    }
-
-    public static String writeSubject(Statement statement) {
-        return statement.getSubject().toString();
-    }
-
-    public static String writeObject(Statement statement) {
-        return statement.getObject().toString();
-    }
-
-    public static String writePredicate(Statement statement) {
-        return statement.getPredicate().toString();
-    }
-
-    public static String writeSubjectPredicate(Statement statement) {
-        Validate.notNull(statement);
-        Validate.notNull(statement.getSubject());
-        Validate.notNull(statement.getPredicate());
-        return statement.getSubject().toString() + SEP + 
statement.getPredicate().toString();
-    }
-
-    public static String writeContext(Statement statement) {
-        if (statement.getContext() == null) {
-            return "";
-        }
-        return statement.getContext().toString();
-    }
-
-    /**
-     * Write a {@link Statement} to a {@link String}
-     * 
-     * @param statement
-     *            the {@link Statement} to write
-     * @return a {@link String} representation of the statement
-     */
-    public static String writeStatement(Statement statement) {
-        Resource subject = statement.getSubject();
-        Resource context = statement.getContext();
-        URI predicate = statement.getPredicate();
-        Value object = statement.getObject();
-
-        Validate.notNull(subject);
-        Validate.notNull(predicate);
-        Validate.notNull(object);
-
-        String s = "";
-        if (context == null) {
-            s = SEP + subject.toString() + SEP + predicate.toString() + SEP + 
object.toString();
-        } else {
-            s = context.toString() + SEP + subject.toString() + SEP + 
predicate.toString() + SEP + object.toString();
-        }
-        return s;
-    }
-
-    /**
-     * Creates a Regular Expression to match serialized statements meeting 
these constraints. A <code>null</code> or empty parameters imply
-     * no constraint. A <code>null</code> return value implies no constraints.
-     * 
-     * @param context
-     *            context constraint
-     * @param subject
-     *            subject constraint
-     * @param predicates
-     *            list of predicate constraints
-     * @return a regular expression that can be used to match serialized 
statements. A <code>null</code> return value implies no
-     *         constraints.
-     */
-    public static String createStatementRegex(StatementConstraints contraints) 
{
-        Resource context = contraints.getContext();
-        Resource subject = contraints.getSubject();
-        Set<URI> predicates = contraints.getPredicates();
-        if (context == null && subject == null && (predicates == null || 
predicates.isEmpty())) {
-            return null;
-        }
-
-        // match on anything but a separator
-        String anyReg = "[^" + SEP + "]*";
-
-        // if context is empty, match on any context
-        String contextReg = (context == null) ? anyReg : context.stringValue();
-
-        // if subject is empty, match on any subject
-        String subjectReg = (subject == null) ? anyReg : subject.stringValue();
-
-        // if the predicates are empty, match on any predicate. Otherwise, 
"or" the predicates.
-        String predicateReg = "";
-        if (predicates == null || predicates.isEmpty()) {
-            predicateReg = anyReg;
-        } else {
-            predicateReg = "(" + StringUtils.join(predicates, "|") + ")";
-        }
-
-        return "^" + contextReg + SEP + subjectReg + SEP + predicateReg + SEP 
+ ".*";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/TemporalIndexer.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/mvm/rya/indexing/TemporalIndexer.java 
b/extras/indexing/src/main/java/mvm/rya/indexing/TemporalIndexer.java
deleted file mode 100644
index 3f6858c..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/TemporalIndexer.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package mvm.rya.indexing;
-
-import org.openrdf.model.Statement;
-import org.openrdf.query.QueryEvaluationException;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-import info.aduna.iteration.CloseableIteration;
-import mvm.rya.api.persist.index.RyaSecondaryIndexer;
-
-/**
- * A repository to store, index, and retrieve {@link Statement}s based on time.
- * Instants:
- *         Instant {before, equals, after} Instant
- *         Instant {before, after, inside} Interval
- *         Instant {hasBeginning, hasEnd}  Interval
- *
- * OWL-Time provides the interval relations:
- * <pre>
- *             intervalEquals,
- *             intervalBefore,
- *             intervalMeets,
- *             intervalOverlaps,
- *             intervalStarts,
- *             intervalDuring,
- *             intervalFinishes,
- *
- * and their reverse interval relations:
- *             intervalAfter,
- *             intervalMetBy,
- *             intervalOverlappedBy,
- *             intervalStartedBy,
- *             intervalContains,
- *             intervalFinishedBy.
- *
- * from Allen paper in 1983
- *
- * Relation    Y Symbol Inverse Y
- * before    Y < > X
- * equal     Y = = X
- * meets     Y m mi X
- * overlaps  Y o oi X
- * during    Y d di X
- * starts    Y s si X
- * finishes  Y f fi X
- * </pre>
- *
- */
-
-public interface TemporalIndexer extends RyaSecondaryIndexer {
-
-    /* consider ParseException here */
-
-    /*-
-     *
-     *    And Now, what you you've all been waiting for, the queries:
-     *    the instant versions:
-     *    format:   x {relation} y
-     *    read:  Given literal y, find all statements where the date object x 
is ( x relation y )
-     *         Instant {before, equals, after} Instant
-     *         Instant {before, after, inside} Interval
-     *         Instant {hasBeginning, hasEnd}  Interval
-     *
-     *    the Allen interval relations, as described above.
-     *         intervalEquals,
-     *                 intervalBefore,
-     *                 intervalMeets,
-     *                 intervalOverlaps,
-     *                 intervalStarts,
-     *                 intervalDuring,
-     *                 intervalFinishes
-     *    and then the inverses, including after.
-     */
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantEqualsInstant(
-            TemporalInstant queryInstant, StatementConstraints contraints)
-            throws QueryEvaluationException;;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantBeforeInstant(
-            TemporalInstant queryInstant, StatementConstraints contraints)
-            throws QueryEvaluationException;;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantAfterInstant(
-            TemporalInstant queryInstant, StatementConstraints contraints)
-            throws QueryEvaluationException;;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantBeforeInterval(
-            TemporalInterval givenInterval, StatementConstraints contraints)
-            throws QueryEvaluationException;;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantAfterInterval(
-            TemporalInterval givenInterval, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantInsideInterval(
-            TemporalInterval givenInterval, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantHasBeginningInterval(
-            TemporalInterval queryInterval, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryInstantHasEndInterval(
-            TemporalInterval queryInterval, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-    /**
-     * Returns statements that contain a time instance that is equal to the
-     * queried time and meet the {@link StatementConstraints}.
-     *
-     * @param query
-     *            the queried time instance
-     * @param contraints
-     *            the {@link StatementConstraints}
-     * @return
-     * @throws QueryEvaluationException
-     */
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryIntervalEquals(
-            TemporalInterval query, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-    /**
-     * Returns statements that contain a time instances that are before the
-     * queried {@link TemporalInterval} and meet the {@link 
StatementConstraints}
-     *
-     * @param query
-     *            the queried time instance
-     * @param contraints
-     *            the {@link StatementConstraints}
-     * @return
-     */
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryIntervalBefore(
-            TemporalInterval query, StatementConstraints contraints)
-            throws QueryEvaluationException;
-
-    /**
-     * Returns statements that contain a time instance that is after the 
queried {@link TemporalInterval} and meet the {@link StatementConstraints}.
-     *
-     * @param query
-     *            the queried time instance
-     * @param contraints
-     *            the {@link StatementConstraints}
-     * @return
-     */
-    public abstract CloseableIteration<Statement, QueryEvaluationException> 
queryIntervalAfter(
-            TemporalInterval query, StatementConstraints contraints)
-            throws QueryEvaluationException;
-}

Reply via email to