You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by mi...@apache.org on 2016/10/15 20:06:46 UTC

[26/69] [abbrv] [partial] incubator-rya git commit: RYA-198 Renaming Files

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