You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rya.apache.org by pu...@apache.org on 2015/12/04 17:46:26 UTC
[14/49] incubator-rya git commit: RYA-7 POM and License Clean-up for
Apache Move
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ExternalMultipleBindingSetsIterator.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ExternalMultipleBindingSetsIterator.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ExternalMultipleBindingSetsIterator.java
deleted file mode 100644
index ce9adaa..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ExternalMultipleBindingSetsIterator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import info.aduna.iteration.CloseableIteration;
-import info.aduna.iteration.LookAheadIteration;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-
-/**
- */
-public class ExternalMultipleBindingSetsIterator extends LookAheadIteration<BindingSet, QueryEvaluationException> {
-
- private final ParallelEvaluationStrategyImpl strategy;
- private final CloseableIteration leftIter;
- private ExternalBatchingIterator stmtPtrn;
- private CloseableIteration<BindingSet, QueryEvaluationException> iter;
- //TODO: configurable
- private int batchSize = 1000;
-
- public ExternalMultipleBindingSetsIterator(ParallelEvaluationStrategyImpl strategy, TupleExpr leftArg, ExternalBatchingIterator stmtPattern, BindingSet bindings)
- throws QueryEvaluationException {
- this.strategy = strategy;
- leftIter = strategy.evaluate(leftArg, bindings);
- this.stmtPtrn = stmtPattern;
- initIter();
- }
-
- public ExternalMultipleBindingSetsIterator(ParallelEvaluationStrategyImpl strategy, CloseableIteration leftIter, ExternalBatchingIterator stmtPattern, BindingSet bindings)
- throws QueryEvaluationException {
- this.strategy = strategy;
- this.leftIter = leftIter;
- this.stmtPtrn = stmtPattern;
- initIter();
- }
-
- protected void initIter() throws QueryEvaluationException {
- try {
- Collection<BindingSet> sets = new ArrayList<BindingSet>();
- int i = 0;
- while (leftIter.hasNext()) {
- //default to 1K for the batch size
- if (i >= batchSize) {
- break;
- }
- sets.add((BindingSet) leftIter.next());
- i++;
- }
- if (iter != null) iter.close();
- iter = stmtPtrn.evaluate(sets);
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-
- protected BindingSet getNextElement()
- throws QueryEvaluationException {
- try {
- while (true) {
- if (iter.hasNext()) {
- return iter.next();
- }
-
- if (leftIter.hasNext()) {
- initIter();
- } else
- return null;
- }
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-
- protected void handleClose()
- throws QueryEvaluationException {
- try {
- super.handleClose();
- leftIter.close();
- iter.close();
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/FilterRangeVisitor.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/FilterRangeVisitor.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/FilterRangeVisitor.java
deleted file mode 100644
index f2ac8c6..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/FilterRangeVisitor.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.api.domain.RangeURI;
-import mvm.rya.api.domain.RangeValue;
-import org.openrdf.model.Value;
-import org.openrdf.model.impl.BooleanLiteralImpl;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.*;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static mvm.rya.api.RdfCloudTripleStoreConstants.RANGE;
-
-/**
- * Class FilterTimeIndexVisitor
- * Date: Apr 11, 2011
- * Time: 10:16:15 PM
- */
-public class FilterRangeVisitor extends QueryModelVisitorBase {
-
- private RdfCloudTripleStoreConfiguration conf;
- private Map<Var, RangeValue> rangeValues = new HashMap<Var, RangeValue>();
-
- public FilterRangeVisitor(RdfCloudTripleStoreConfiguration conf) {
- this.conf = conf;
- }
-
- @Override
- public void meet(Filter node) throws Exception {
- super.meet(node);
-
- ValueExpr arg = node.getCondition();
- if (arg instanceof FunctionCall) {
- FunctionCall fc = (FunctionCall) arg;
- if (RANGE.stringValue().equals(fc.getURI())) {
- //range(?var, start, end)
- List<ValueExpr> valueExprs = fc.getArgs();
- if (valueExprs.size() != 3) {
- throw new QueryEvaluationException("mvm:range must have 3 parameters: variable, start, end");
- }
- Var var = (Var) valueExprs.get(0);
- ValueConstant startVc = (ValueConstant) valueExprs.get(1);
- ValueConstant endVc = (ValueConstant) valueExprs.get(2);
- Value start = startVc.getValue();
- Value end = endVc.getValue();
- rangeValues.put(var, new RangeValue(start, end));
- node.setCondition(new ValueConstant(BooleanLiteralImpl.TRUE));
- }
- }
- }
-
- @Override
- public void meet(StatementPattern node) throws Exception {
- super.meet(node);
-
- Var subjectVar = node.getSubjectVar();
- RangeValue subjRange = rangeValues.get(subjectVar);
- Var predVar = node.getPredicateVar();
- RangeValue predRange = rangeValues.get(predVar);
- Var objVar = node.getObjectVar();
- RangeValue objRange = rangeValues.get(objVar);
- if(subjRange != null) {
- subjectVar.setValue(new RangeURI(subjRange));//Assumes no blank nodes can be ranges
- }
- if(predRange != null) {
- predVar.setValue(new RangeURI(predRange));
- }
- if(objRange != null) {
- objVar.setValue(objRange);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/MultipleBindingSetsIterator.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/MultipleBindingSetsIterator.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/MultipleBindingSetsIterator.java
deleted file mode 100644
index d1c5641..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/MultipleBindingSetsIterator.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import info.aduna.iteration.CloseableIteration;
-import info.aduna.iteration.LookAheadIteration;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- */
-public class MultipleBindingSetsIterator extends LookAheadIteration<BindingSet, QueryEvaluationException> {
-
- private final ParallelEvaluationStrategyImpl strategy;
- private final CloseableIteration leftIter;
- private StatementPattern stmtPtrn;
- private CloseableIteration<BindingSet, QueryEvaluationException> iter;
- //TODO: configurable
- private int batchSize = 1000;
-
- public MultipleBindingSetsIterator(ParallelEvaluationStrategyImpl strategy, TupleExpr leftArg, StatementPattern stmtPattern, BindingSet bindings)
- throws QueryEvaluationException {
- this.strategy = strategy;
- leftIter = strategy.evaluate(leftArg, bindings);
- this.stmtPtrn = stmtPattern;
- initIter();
- }
-
- public MultipleBindingSetsIterator(ParallelEvaluationStrategyImpl strategy, CloseableIteration leftIter, StatementPattern stmtPattern, BindingSet bindings)
- throws QueryEvaluationException {
- this.strategy = strategy;
- this.leftIter = leftIter;
- this.stmtPtrn = stmtPattern;
- initIter();
- }
-
- protected void initIter() throws QueryEvaluationException {
- try {
- Collection<BindingSet> sets = new ArrayList<BindingSet>();
- int i = 0;
- while (leftIter.hasNext()) {
- //default to 1K for the batch size
- if (i >= batchSize) {
- break;
- }
- sets.add((BindingSet) leftIter.next());
- i++;
- }
- if (iter != null) iter.close();
- iter = strategy.evaluate(stmtPtrn, sets);
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-
- protected BindingSet getNextElement()
- throws QueryEvaluationException {
- try {
- while (true) {
- if (iter.hasNext()) {
- return iter.next();
- }
-
- if (leftIter.hasNext()) {
- initIter();
- } else
- return null;
- }
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-
- protected void handleClose()
- throws QueryEvaluationException {
- try {
- super.handleClose();
- leftIter.close();
- iter.close();
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelEvaluationStrategyImpl.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelEvaluationStrategyImpl.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelEvaluationStrategyImpl.java
deleted file mode 100644
index 667b712..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelEvaluationStrategyImpl.java
+++ /dev/null
@@ -1,280 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import info.aduna.iteration.CloseableIteration;
-import info.aduna.iteration.ConvertingIteration;
-import info.aduna.iteration.EmptyIteration;
-import info.aduna.iteration.Iteration;
-import info.aduna.iteration.IteratorIteration;
-import info.aduna.iteration.LimitIteration;
-import info.aduna.iteration.OffsetIteration;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.api.RdfCloudTripleStoreUtils;
-import mvm.rya.api.utils.NullableStatementImpl;
-import mvm.rya.rdftriplestore.RdfCloudTripleStoreConnection;
-import mvm.rya.rdftriplestore.inference.InferenceEngine;
-import mvm.rya.rdftriplestore.inference.InferenceEngineException;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-import mvm.rya.rdftriplestore.utils.TransitivePropertySP;
-
-import org.apache.log4j.Logger;
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.Value;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.Dataset;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.Filter;
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.QueryRoot;
-import org.openrdf.query.algebra.Slice;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.ValueExpr;
-import org.openrdf.query.algebra.Var;
-import org.openrdf.query.algebra.evaluation.QueryBindingSet;
-import org.openrdf.query.algebra.evaluation.ValueExprEvaluationException;
-import org.openrdf.query.algebra.evaluation.impl.EvaluationStrategyImpl;
-import org.openrdf.query.algebra.evaluation.iterator.FilterIterator;
-import org.openrdf.query.algebra.evaluation.iterator.JoinIterator;
-import org.openrdf.query.algebra.evaluation.util.QueryEvaluationUtil;
-
-import com.google.common.collect.Lists;
-
-/**
- */
-public class ParallelEvaluationStrategyImpl extends EvaluationStrategyImpl {
- private static Logger logger = Logger.getLogger(ParallelEvaluationStrategyImpl.class);
-
- private int numOfThreads = 10;
- private boolean performant = true;
- private boolean displayQueryPlan = false;
- private ExecutorService executorService;
- private InferenceEngine inferenceEngine;
-
- public ParallelEvaluationStrategyImpl(RdfCloudTripleStoreConnection.StoreTripleSource tripleSource, InferenceEngine inferenceEngine,
- Dataset dataset, RdfCloudTripleStoreConfiguration conf) {
- super(tripleSource, dataset);
- Integer nthreads = conf.getNumThreads();
- this.numOfThreads = (nthreads != null) ? nthreads : this.numOfThreads;
- Boolean val = conf.isPerformant();
- this.performant = (val != null) ? val : this.performant;
- val = conf.isDisplayQueryPlan();
- this.displayQueryPlan = (val != null) ? val : this.displayQueryPlan;
- this.executorService = Executors.newFixedThreadPool(this.numOfThreads);
- this.inferenceEngine = inferenceEngine;
- }
-
- @Override
- public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(Join join, BindingSet bindings) throws QueryEvaluationException {
- if (performant) {
- TupleExpr buffer = join.getLeftArg();
- if (join.getRightArg() instanceof StatementPattern) {
- TupleExpr stmtPat = join.getRightArg();
-// if(buffer instanceof StatementPattern && !(stmtPat instanceof StatementPattern)){
-// buffer = stmtPat;
-// stmtPat = join.getLeftArg();
-// }
-
- return new MultipleBindingSetsIterator(this, buffer, (StatementPattern) stmtPat, bindings);
- } else if (join.getRightArg() instanceof ExternalBatchingIterator) {
- TupleExpr stmtPat = join.getRightArg();
-
- return new ExternalMultipleBindingSetsIterator(this, buffer, (ExternalBatchingIterator) stmtPat, bindings);
- } else if (join.getRightArg() instanceof Filter) {
- //add performance for the filter too
- Filter filter = (Filter) join.getRightArg();
- TupleExpr filterChild = filter.getArg();
- if (filterChild instanceof StatementPattern) {
- return new FilterIterator(filter, new MultipleBindingSetsIterator(this, buffer, (StatementPattern) filterChild, bindings), this);
- } else if (filterChild instanceof Join) {
- Join filterChildJoin = (Join) filterChild;
- TupleExpr fcj_left = filterChildJoin.getLeftArg();
- TupleExpr fcj_right = filterChildJoin.getRightArg();
- //TODO: Should be a better way, maybe reorder the filter?
- //very particular case filter(join(stmtPat, stmtPat))
- if (fcj_left instanceof StatementPattern && fcj_right instanceof StatementPattern) {
- return new FilterIterator(filter, new MultipleBindingSetsIterator(this, new Join(buffer, fcj_left), (StatementPattern) fcj_right, bindings), this);
- }
- }
- //TODO: add a configuration flag for ParallelJoinIterator
- return new JoinIterator(this, join, bindings);
- } else {
- //TODO: add a configuration flag for ParallelJoinIterator
- return new JoinIterator(this, join, bindings);
- }
- } else {
- return super.evaluate(join, bindings);
- }
- }
-
- @Override
- public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(StatementPattern sp, BindingSet bindings) throws QueryEvaluationException {
- //TODO: Wonder if creating a Collection here hurts performance
- Set<BindingSet> bs = Collections.singleton(bindings);
- return this.evaluate(sp, bs);
- }
-
- public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(final StatementPattern sp, Collection<BindingSet> bindings)
- throws QueryEvaluationException {
-
- final Var subjVar = sp.getSubjectVar();
- final Var predVar = sp.getPredicateVar();
- final Var objVar = sp.getObjectVar();
- final Var cntxtVar = sp.getContextVar();
-
- List<Map.Entry<Statement, BindingSet>> stmts = new ArrayList<Map.Entry<Statement, BindingSet>>();
-
- Iteration<? extends Map.Entry<Statement, BindingSet>, QueryEvaluationException> iter;
- if (sp instanceof FixedStatementPattern) {
- Collection<Map.Entry<Statement, BindingSet>> coll = Lists.newArrayList();
- for (BindingSet binding : bindings) {
- Value subjValue = getVarValue(subjVar, binding);
- Value predValue = getVarValue(predVar, binding);
- Value objValue = getVarValue(objVar, binding);
- Resource contxtValue = (Resource) getVarValue(cntxtVar, binding);
- for (Statement st : ((FixedStatementPattern) sp).statements) {
- if (!((subjValue != null && !subjValue.equals(st.getSubject())) ||
- (predValue != null && !predValue.equals(st.getPredicate())) ||
- (objValue != null && !objValue.equals(st.getObject())))) {
- coll.add(new RdfCloudTripleStoreUtils.CustomEntry<Statement, BindingSet>(st, binding));
- }
- }
- }
- iter = new IteratorIteration(coll.iterator());
- } else if (sp instanceof TransitivePropertySP &&
- ((subjVar != null && subjVar.getValue() != null) ||
- (objVar != null && objVar.getValue() != null)) &&
- sp.getPredicateVar() != null) {
- //if this is a transitive prop ref, we need to make sure that either the subj or obj is not null
- //TODO: Cannot handle a open ended transitive property where subj and obj are null
- //TODO: Should one day handle filling in the subj or obj with bindings and working this
- //TODO: a lot of assumptions, and might be a large set returned causing an OME
- Set<Statement> sts = null;
- try {
- sts = inferenceEngine.findTransitiveProperty((Resource) getVarValue(subjVar),
- (URI) getVarValue(predVar), getVarValue(objVar), (Resource) getVarValue(cntxtVar));
- } catch (InferenceEngineException e) {
- throw new QueryEvaluationException(e);
- }
- Collection<Map.Entry<Statement, BindingSet>> coll = new ArrayList();
- for (BindingSet binding : bindings) {
- for (Statement st : sts) {
- coll.add(new RdfCloudTripleStoreUtils.CustomEntry<Statement, BindingSet>(st, binding));
- }
- }
- iter = new IteratorIteration(coll.iterator());
- } else {
- for (BindingSet binding : bindings) {
- Value subjValue = getVarValue(subjVar, binding);
- Value predValue = getVarValue(predVar, binding);
- Value objValue = getVarValue(objVar, binding);
- Resource contxtValue = (Resource) getVarValue(cntxtVar, binding);
- if ((subjValue != null && !(subjValue instanceof Resource)) ||
- (predValue != null && !(predValue instanceof URI))) {
- continue;
- }
- stmts.add(new RdfCloudTripleStoreUtils.CustomEntry<Statement, BindingSet>(
- new NullableStatementImpl((Resource) subjValue, (URI) predValue, objValue, contxtValue), binding));
- }
- if (stmts.size() == 0) {
- return new EmptyIteration();
- }
-
- iter = ((RdfCloudTripleStoreConnection.StoreTripleSource) tripleSource).getStatements(stmts);
- }
- return new ConvertingIteration<Map.Entry<Statement, BindingSet>, BindingSet, QueryEvaluationException>(iter) {
-
- @Override
- protected BindingSet convert(Map.Entry<Statement, BindingSet> stbs) throws QueryEvaluationException {
- Statement st = stbs.getKey();
- BindingSet bs = stbs.getValue();
- QueryBindingSet result = new QueryBindingSet(bs);
- if (subjVar != null && !result.hasBinding(subjVar.getName())) {
- result.addBinding(subjVar.getName(), st.getSubject());
- }
- if (predVar != null && !result.hasBinding(predVar.getName())) {
- result.addBinding(predVar.getName(), st.getPredicate());
- }
- if (objVar != null && !result.hasBinding(objVar.getName())) {
- result.addBinding(objVar.getName(), st.getObject());
- }
- if (cntxtVar != null && !result.hasBinding(cntxtVar.getName()) && st.getContext() != null) {
- result.addBinding(cntxtVar.getName(), st.getContext());
- }
- return result;
- }
- };
- }
-
- @Override
- public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(TupleExpr expr, BindingSet bindings) throws QueryEvaluationException {
- if (expr instanceof QueryRoot) {
- if (displayQueryPlan) {
-// System.out.println("Tables: ");
-// System.out.println("--SPO: \t" + RdfCloudTripleStoreConstants.TBL_SPO);
-// System.out.println("--PO: \t" + RdfCloudTripleStoreConstants.TBL_PO);
-// System.out.println("--OSP: \t" + RdfCloudTripleStoreConstants.TBL_OSP);
- logger.info("=================== Rya Query ===================");
- for (String str : expr.toString().split("\\r?\\n")) {
- logger.info(str);
- }
- logger.info("================= End Rya Query =================");
- }
- }
- return super.evaluate(expr, bindings);
- }
-
- public CloseableIteration evaluate(Slice slice, BindingSet bindings)
- throws QueryEvaluationException {
- CloseableIteration result = evaluate(slice.getArg(), bindings);
- if (slice.hasOffset()) {
- result = new OffsetIteration(result, slice.getOffset());
- }
- if (slice.hasLimit()) {
- result = new LimitIteration(result, slice.getLimit());
- }
- return result;
- }
-
- protected Value getVarValue(Var var) {
- if (var == null)
- return null;
- else
- return var.getValue();
- }
-
- public void shutdown() {
- executorService.shutdownNow();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelJoinIterator.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelJoinIterator.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelJoinIterator.java
deleted file mode 100644
index 0b74c3b..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ParallelJoinIterator.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import info.aduna.iteration.CloseableIteration;
-import info.aduna.iteration.LookAheadIteration;
-
-import java.util.NoSuchElementException;
-import java.util.Queue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.evaluation.EvaluationStrategy;
-import org.openrdf.query.impl.EmptyBindingSet;
-
-/**
- */
-public class ParallelJoinIterator extends LookAheadIteration<BindingSet, QueryEvaluationException> {
-
- public static final EmptyBindingSet EMPTY_BINDING_SET = new EmptyBindingSet();
-
- private final EvaluationStrategy strategy;
- private final Join join;
- private final CloseableIteration<BindingSet, QueryEvaluationException> leftIter;
-
- private ExecutorService executorService;
- private Queue<ParallelIteratorWork> workQueue = new LinkedBlockingQueue<ParallelIteratorWork>();
- private ParallelIteratorWork currentWork;
- private int batch;
-
- public ParallelJoinIterator(EvaluationStrategy strategy, Join join, BindingSet bindings, ExecutorService executorService, int batch)
- throws QueryEvaluationException {
- this.strategy = strategy;
- this.join = join;
- leftIter = strategy.evaluate(join.getLeftArg(), bindings);
-
- this.executorService = executorService;
- this.batch = batch;
- }
-
-
- @Override
- protected BindingSet getNextElement() throws QueryEvaluationException {
-
- try {
- while (leftIter.hasNext() || !workQueue.isEmpty() || currentWork != null) {
- if (!workQueue.isEmpty() && currentWork == null) {
- currentWork = workQueue.poll();
- }
-
- if (currentWork != null) {
- BindingSet bindingSet = currentWork.queue.poll();
- if (EMPTY_BINDING_SET.equals(bindingSet)) {
- currentWork = null;
- continue;
- } else if (bindingSet == null) {
- continue;
- }
- return bindingSet;
- }
-
- try {
- for (int i = 0; i < batch; i++) {
- if (leftIter.hasNext()) {
- ParallelIteratorWork work = new ParallelIteratorWork((BindingSet) leftIter.next(), join.getRightArg());
- workQueue.add(work);
- executorService.execute(work);
- } else
- break;
- }
- } catch (NoSuchElementException ignore) {
- }
- }
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- return null;
- }
-
- @Override
- protected void handleClose() throws QueryEvaluationException {
- try {
- super.handleClose();
- leftIter.close();
-// rightIter.close();
- } catch (Exception e) {
- throw new QueryEvaluationException(e);
- }
- }
-
- private class ParallelIteratorWork implements Runnable {
-
- private BindingSet leftBindingSet;
- private TupleExpr rightTupleExpr;
- public LinkedBlockingQueue<BindingSet> queue = new LinkedBlockingQueue<BindingSet>();
-
- private ParallelIteratorWork(BindingSet leftBindingSet, TupleExpr rightTupleExpr) {
- this.leftBindingSet = leftBindingSet;
- this.rightTupleExpr = rightTupleExpr;
- }
-
- @Override
- public void run() {
- try {
- CloseableIteration<BindingSet, QueryEvaluationException> iter = strategy.evaluate(rightTupleExpr, leftBindingSet);
- while (iter.hasNext()) {
- queue.add(iter.next());
- }
- queue.add(EMPTY_BINDING_SET);
- iter.close();
- } catch (QueryEvaluationException e) {
- throw new RuntimeException(e);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/PushJoinDownVisitor.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/PushJoinDownVisitor.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/PushJoinDownVisitor.java
deleted file mode 100644
index 163f167..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/PushJoinDownVisitor.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-/**
- * Class ReorderJoinVisitor
- * Date: Apr 11, 2011
- * Time: 10:16:15 PM
- */
-public class PushJoinDownVisitor extends QueryModelVisitorBase {
- @Override
- public void meet(Join node) throws Exception {
- super.meet(node);
-
- TupleExpr leftArg = node.getLeftArg();
- TupleExpr rightArg = node.getRightArg();
-
- /**
- * if join(join(1, 2), join(3,4))
- * should be:
- * join(join(join(1,2), 3), 4)
- */
- if (leftArg instanceof Join && rightArg instanceof Join) {
- Join leftJoin = (Join) leftArg;
- Join rightJoin = (Join) rightArg;
- TupleExpr right_LeftArg = rightJoin.getLeftArg();
- TupleExpr right_rightArg = rightJoin.getRightArg();
- Join inner = new Join(leftJoin, right_LeftArg);
- Join outer = new Join(inner, right_rightArg);
- node.replaceWith(outer);
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinOptimizer.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinOptimizer.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinOptimizer.java
deleted file mode 100644
index 69eb4e1..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinOptimizer.java
+++ /dev/null
@@ -1,283 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.Dataset;
-import org.openrdf.query.algebra.*;
-import org.openrdf.query.algebra.evaluation.QueryOptimizer;
-import org.openrdf.query.algebra.evaluation.impl.EvaluationStatistics;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-import org.openrdf.query.algebra.helpers.StatementPatternCollector;
-
-import java.util.*;
-
-/**
- * A query optimizer that re-orders nested Joins.
- *
- * @author Arjohn Kampman
- * @author James Leigh
- */
-public class QueryJoinOptimizer implements QueryOptimizer {
-
- protected final EvaluationStatistics statistics;
-
- public QueryJoinOptimizer() {
- this(new EvaluationStatistics());
- }
-
- public QueryJoinOptimizer(EvaluationStatistics statistics) {
- this.statistics = statistics;
- }
-
- /**
- * Applies generally applicable optimizations: path expressions are sorted
- * from more to less specific.
- *
- * @param tupleExpr
- */
- public void optimize(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings) {
- tupleExpr.visit(new JoinVisitor());
- }
-
- protected class JoinVisitor extends QueryModelVisitorBase<RuntimeException> {
-
- Set<String> boundVars = new HashSet<String>();
-
- @Override
- public void meet(LeftJoin leftJoin) {
- leftJoin.getLeftArg().visit(this);
-
- Set<String> origBoundVars = boundVars;
- try {
- boundVars = new HashSet<String>(boundVars);
- boundVars.addAll(leftJoin.getLeftArg().getBindingNames());
-
- leftJoin.getRightArg().visit(this);
- } finally {
- boundVars = origBoundVars;
- }
- }
-
- @Override
- public void meet(Join node) {
- Set<String> origBoundVars = boundVars;
- try {
- boundVars = new HashSet<String>(boundVars);
-
- // Recursively get the join arguments
- List<TupleExpr> joinArgs = getJoinArgs(node, new ArrayList<TupleExpr>());
-
- // Build maps of cardinalities and vars per tuple expression
- Map<TupleExpr, Double> cardinalityMap = new HashMap<TupleExpr, Double>();
-// Map<TupleExpr, List<Var>> varsMap = new HashMap<TupleExpr, List<Var>>();
-// Map<Var, Double> varCardinalityMap = new HashMap<Var, Double>();
-
- for (TupleExpr tupleExpr : joinArgs) {
- double cardinality = statistics.getCardinality(tupleExpr);
-// List<Var> statementPatternVars = getStatementPatternVars(tupleExpr);
-
- cardinalityMap.put(tupleExpr, cardinality);
-// varsMap.put(tupleExpr, statementPatternVars);
- }
-
- // Build map of var frequences
-// Map<Var, Integer> varFreqMap = new HashMap<Var, Integer>();
-// for (List<Var> varList : varsMap.values()) {
-// getVarFreqMap(varList, varFreqMap);
-// }
-
- // Reorder the (recursive) join arguments to a more optimal sequence
- List<TupleExpr> orderedJoinArgs = new ArrayList<TupleExpr>(joinArgs.size());
- while (!joinArgs.isEmpty()) {
- TupleExpr tupleExpr = selectNextTupleExpr(joinArgs, cardinalityMap
- );
- if (tupleExpr == null) {
- break;
- }
-
- joinArgs.remove(tupleExpr);
- orderedJoinArgs.add(tupleExpr);
-
- // Recursively optimize join arguments
- tupleExpr.visit(this);
-
- boundVars.addAll(tupleExpr.getBindingNames());
- }
-
- // Build new join hierarchy
- // Note: generated hierarchy is right-recursive to help the
- // IterativeEvaluationOptimizer to factor out the left-most join
- // argument
- int i = 0;
- TupleExpr replacement = orderedJoinArgs.get(i);
- for (i++; i < orderedJoinArgs.size(); i++) {
- replacement = new Join(replacement, orderedJoinArgs.get(i));
- }
-
- // Replace old join hierarchy
- node.replaceWith(replacement);
- } finally {
- boundVars = origBoundVars;
- }
- }
-
- protected <L extends List<TupleExpr>> L getJoinArgs(TupleExpr tupleExpr, L joinArgs) {
- if (tupleExpr instanceof Join) {
- Join join = (Join) tupleExpr;
- getJoinArgs(join.getLeftArg(), joinArgs);
- getJoinArgs(join.getRightArg(), joinArgs);
- } else {
- joinArgs.add(tupleExpr);
- }
-
- return joinArgs;
- }
-
- protected List<Var> getStatementPatternVars(TupleExpr tupleExpr) {
- List<StatementPattern> stPatterns = StatementPatternCollector.process(tupleExpr);
- List<Var> varList = new ArrayList<Var>(stPatterns.size() * 4);
- for (StatementPattern sp : stPatterns) {
- sp.getVars(varList);
- }
- return varList;
- }
-
- protected <M extends Map<Var, Integer>> M getVarFreqMap(List<Var> varList, M varFreqMap) {
- for (Var var : varList) {
- Integer freq = varFreqMap.get(var);
- freq = (freq == null) ? 1 : freq + 1;
- varFreqMap.put(var, freq);
- }
- return varFreqMap;
- }
-
- /**
- * Selects from a list of tuple expressions the next tuple expression that
- * should be evaluated. This method selects the tuple expression with
- * highest number of bound variables, preferring variables that have been
- * bound in other tuple expressions over variables with a fixed value.
- */
- protected TupleExpr selectNextTupleExpr(List<TupleExpr> expressions,
- Map<TupleExpr, Double> cardinalityMap
-// ,Map<TupleExpr, List<Var>> varsMap,
-// Map<Var, Integer> varFreqMap, Set<String> boundVars
- ) {
- double lowestCardinality = Double.MAX_VALUE;
- TupleExpr result = expressions.get(0);
-
- for (TupleExpr tupleExpr : expressions) {
- // Calculate a score for this tuple expression
-// double cardinality = getTupleExprCardinality(tupleExpr, cardinalityMap, varsMap, varFreqMap, boundVars);
- double cardinality = cardinalityMap.get(tupleExpr);
-// List<Var> vars = varsMap.get(tupleExpr);
-// List<Var> distinctUnboundVars = getUnboundVars(vars);
-// if (distinctUnboundVars.size() >= 2) {
-// cardinality *= (distinctUnboundVars.size() + 1);
-// }
-
- if (cardinality < lowestCardinality) {
- // More specific path expression found
- lowestCardinality = cardinality;
- result = tupleExpr;
- }
- }
-
- return result;
- }
-
- protected double getTupleExprCardinality(TupleExpr tupleExpr, Map<TupleExpr, Double> cardinalityMap,
- Map<TupleExpr, List<Var>> varsMap, Map<Var, Integer> varFreqMap, Set<String> boundVars) {
- double cardinality = cardinalityMap.get(tupleExpr);
-
- List<Var> vars = varsMap.get(tupleExpr);
-
- // Compensate for variables that are bound earlier in the evaluation
- List<Var> unboundVars = getUnboundVars(vars);
- List<Var> constantVars = getConstantVars(vars);
- int nonConstantVarCount = vars.size() - constantVars.size();
- if (nonConstantVarCount > 0) {
- double exp = (double) unboundVars.size() / nonConstantVarCount;
- cardinality = Math.pow(cardinality, exp);
- }
-
- if (unboundVars.isEmpty()) {
- // Prefer patterns with more bound vars
- if (nonConstantVarCount > 0) {
- cardinality /= nonConstantVarCount;
- }
- } else {
- // Prefer patterns that bind variables from other tuple expressions
- int foreignVarFreq = getForeignVarFreq(unboundVars, varFreqMap);
- if (foreignVarFreq > 0) {
- cardinality /= foreignVarFreq;
- }
- }
-
- // Prefer patterns that bind more variables
- List<Var> distinctUnboundVars = getUnboundVars(new
- HashSet<Var>(vars));
- if (distinctUnboundVars.size() >= 2) {
- cardinality /= distinctUnboundVars.size();
- }
-
- return cardinality;
- }
-
- protected List<Var> getConstantVars(Iterable<Var> vars) {
- List<Var> constantVars = new ArrayList<Var>();
-
- for (Var var : vars) {
- if (var.hasValue()) {
- constantVars.add(var);
- }
- }
-
- return constantVars;
- }
-
- protected List<Var> getUnboundVars(Iterable<Var> vars) {
- List<Var> unboundVars = new ArrayList<Var>();
-
- for (Var var : vars) {
- if (!var.hasValue() && !this.boundVars.contains(var.getName())) {
- unboundVars.add(var);
- }
- }
-
- return unboundVars;
- }
-
- protected int getForeignVarFreq(List<Var> ownUnboundVars, Map<Var, Integer> varFreqMap) {
- int result = 0;
-
- Map<Var, Integer> ownFreqMap = getVarFreqMap(ownUnboundVars, new HashMap<Var, Integer>());
-
- for (Map.Entry<Var, Integer> entry : ownFreqMap.entrySet()) {
- Var var = entry.getKey();
- int ownFreq = entry.getValue();
- result += varFreqMap.get(var) - ownFreq;
- }
-
- return result;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinSelectOptimizer.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinSelectOptimizer.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinSelectOptimizer.java
deleted file mode 100644
index 0c7ba2c..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/QueryJoinSelectOptimizer.java
+++ /dev/null
@@ -1,259 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 - 2015 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.api.persist.joinselect.SelectivityEvalDAO;
-import mvm.rya.rdftriplestore.inference.DoNotExpandSP;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.Dataset;
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.evaluation.QueryOptimizer;
-import org.openrdf.query.algebra.evaluation.impl.EvaluationStatistics;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-public class QueryJoinSelectOptimizer implements QueryOptimizer {
-
- private final EvaluationStatistics statistics;
- private final SelectivityEvalDAO eval;
- private final RdfCloudTripleStoreConfiguration config;
-
- public QueryJoinSelectOptimizer(EvaluationStatistics statistics, SelectivityEvalDAO eval) {
- System.out.println("Entering join optimizer!");
- this.statistics = statistics;
- this.eval = eval;
- this.config = eval.getConf();
- }
-
- /**
- * Applies generally applicable optimizations: path expressions are sorted from more to less specific.
- *
- * @param tupleExpr
- */
- public void optimize(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings) {
- tupleExpr.visit(new JoinVisitor());
- }
-
- protected class JoinVisitor extends QueryModelVisitorBase<RuntimeException> {
-
- @Override
- public void meet(Join node) {
-
- try {
- if (node.getLeftArg() instanceof FixedStatementPattern && node.getRightArg() instanceof DoNotExpandSP) {
- return;
- }
-
- TupleExpr partialQuery = null;
- List<TupleExpr> joinArgs = getJoinArgs(node, new ArrayList<TupleExpr>());
- Map<TupleExpr,Double> cardinalityMap = new HashMap<TupleExpr,Double>();
-
- for (TupleExpr tupleExpr : joinArgs) {
- double cardinality = statistics.getCardinality(tupleExpr);
- cardinalityMap.put(tupleExpr, cardinality);
-
- }
-
- while (!joinArgs.isEmpty()) {
- TePairCost tpc = getBestTupleJoin(partialQuery, joinArgs);
- List<TupleExpr> tePair = tpc.getTePair();
- if (partialQuery == null) {
- if (tePair.size() != 2) {
- throw new IllegalStateException();
- }
- if (!(tePair.get(0) instanceof Join)) {
- tePair.get(0).visit(this);
- }
- if (!(tePair.get(1) instanceof Join)) {
- tePair.get(1).visit(this);
- }
- if (tePair.get(1) instanceof Join) {
- partialQuery = new Join(tePair.get(0), ((Join) tePair.get(1)).getLeftArg());
- partialQuery = new Join(partialQuery, ((Join) tePair.get(1)).getRightArg());
- joinArgs.remove(tePair.get(0));
- joinArgs.remove(tePair.get(1));
- } else {
- partialQuery = new Join(tePair.get(0), tePair.get(1));
- joinArgs.remove(tePair.get(0));
- joinArgs.remove(tePair.get(1));
- }
- } else {
- if (tePair.size() != 1) {
- throw new IllegalStateException();
- }
- if (!(tePair.get(0) instanceof Join)) {
- tePair.get(0).visit(this);
- }
-
- if (tePair.get(0) instanceof Join) {
- partialQuery = new Join(partialQuery, ((Join) tePair.get(0)).getLeftArg());
- partialQuery = new Join(partialQuery, ((Join) tePair.get(0)).getRightArg());
- joinArgs.remove(tePair.get(0));
-
- } else {
- partialQuery = new Join(partialQuery, tePair.get(0));
- joinArgs.remove(tePair.get(0));
- }
- }
-
- }
-
- // Replace old join hierarchy
- node.replaceWith(partialQuery);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- protected <L extends List<TupleExpr>> L getJoinArgs(TupleExpr tupleExpr, L 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);
- } else {
- joinArgs.add(tupleExpr);
- }
- } else {
- joinArgs.add(tupleExpr);
- }
-
- return joinArgs;
- }
-
- public TePairCost getBestTupleJoin(TupleExpr partialQuery, List<TupleExpr> teList) throws Exception {
-
- double tempCost = 0;
- double bestCost = Double.MAX_VALUE;
- List<TupleExpr> bestJoinNodes = new ArrayList<TupleExpr>();
-
- if (partialQuery == null) {
-
- double jSelect = 0;
- double card1 = 0;
- double card2 = 0;
- TupleExpr teMin1 = null;
- TupleExpr teMin2 = null;
- double bestCard1 = 0;
- double bestCard2 = 0;
-
- for (int i = 0; i < teList.size(); i++) {
- for (int j = i + 1; j < teList.size(); j++) {
- jSelect = eval.getJoinSelect(config, teList.get(i), teList.get(j));
- card1 = statistics.getCardinality(teList.get(i));
- card2 = statistics.getCardinality(teList.get(j));
- tempCost = card1 + card2 + card1 * card2 * jSelect;
-// System.out.println("Optimizer: TempCost is " + tempCost + " cards are " + card1 + ", " + card2 + ", selectivity is "
-// + jSelect + ", and nodes are "
-// + teList.get(i) + " and " + teList.get(j));
-
- // TODO this generates a nullpointer exception if tempCost = Double.Max
- if (bestCost > tempCost) {
-
- teMin1 = teList.get(i);
- teMin2 = teList.get(j);
- bestCard1 = card1;
- bestCard2 = card2;
- bestCost = tempCost;
-
- if (bestCost == 0) {
- bestJoinNodes.add(teMin1);
- bestJoinNodes.add(teMin2);
- return new TePairCost(0.0, bestJoinNodes);
- }
- }
- }
- }
-
- if (bestCard1 < bestCard2) {
-
- bestJoinNodes.add(teMin1);
- bestJoinNodes.add(teMin2);
-
- } else {
- bestJoinNodes.add(teMin2);
- bestJoinNodes.add(teMin1);
- }
- //System.out.println("Optimizer: Card1 is " + card1 + ", card2 is " + card2 + ", selectivity is " + jSelect + ", and best cost is" + bestCost);
- return new TePairCost(bestCost, bestJoinNodes);
-
- } else {
- double card1 = statistics.getCardinality(partialQuery);
- TupleExpr bestTe = null;
- double card2 = 0;
- double select = 0;
-
- for (TupleExpr te : teList) {
- select = eval.getJoinSelect(config, partialQuery, te);
- card2 = statistics.getCardinality(te);
- tempCost = card1 + card2 + card1 * card2 * select;
-// System.out.println("Optimizer: TempCost is " + tempCost + " cards are " + card1 + ", " + card2 + ", selectivity is "
-// + select + ", and nodes are "
-// + partialQuery + " and " + te);
-
-
- if (bestCost > tempCost) {
- bestTe = te;
- bestCost = tempCost;
- }
-
- }
- List<TupleExpr> teList2 = new ArrayList<TupleExpr>();
- teList2.add(bestTe);
- //System.out.println("Optimizer: Card1 is " + card1 + ", card2 is " + card2 + ", selectivity is " + select + ", and best cost is" + bestCost);
- return new TePairCost(bestCost, teList2);
- }
-
- }
-
- // **************************************************************************************
- public class TePairCost {
-
- private double cost;
- private List<TupleExpr> tePair;
-
- public TePairCost(double cost, List<TupleExpr> tePair) {
- this.cost = cost;
- this.tePair = tePair;
-
- }
-
- public double getCost() {
- return cost;
- }
-
- public List<TupleExpr> getTePair() {
- return tePair;
- }
-
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreEvaluationStatistics.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreEvaluationStatistics.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreEvaluationStatistics.java
deleted file mode 100644
index 4ae8fcb..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreEvaluationStatistics.java
+++ /dev/null
@@ -1,280 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import static com.google.common.base.Preconditions.checkNotNull;
-//import static RdfCloudTripleStoreUtils.getTtlValueConverter;
-
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.api.persist.RdfEvalStatsDAO;
-import mvm.rya.api.persist.RdfEvalStatsDAO.CARDINALITY_OF;
-import mvm.rya.rdftriplestore.inference.DoNotExpandSP;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.Value;
-import org.openrdf.model.vocabulary.RDF;
-import org.openrdf.query.algebra.BinaryTupleOperator;
-import org.openrdf.query.algebra.Filter;
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.Projection;
-import org.openrdf.query.algebra.Slice;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.TupleExpr;
-import org.openrdf.query.algebra.UnaryTupleOperator;
-import org.openrdf.query.algebra.Var;
-import org.openrdf.query.algebra.evaluation.impl.EvaluationStatistics;
-
-/**
- * Class RdfCloudTripleStoreEvaluationStatistics
- * Date: Apr 12, 2011
- * Time: 1:31:05 PM
- */
-public class RdfCloudTripleStoreEvaluationStatistics extends EvaluationStatistics {
-
- private RdfCloudTripleStoreConfiguration conf;
- private RdfEvalStatsDAO rdfEvalStatsDAO;
- protected boolean pushEmptyRdfTypeDown = true;
- protected boolean useCompositeCardinalities = true;
-
- public RdfCloudTripleStoreEvaluationStatistics(RdfCloudTripleStoreConfiguration conf, RdfEvalStatsDAO rdfEvalStatsDAO) {
- checkNotNull(conf);
- checkNotNull(rdfEvalStatsDAO);
- try {
- this.conf = conf;
- this.rdfEvalStatsDAO = rdfEvalStatsDAO;
- pushEmptyRdfTypeDown = conf.isStatsPushEmptyRdftypeDown();
- useCompositeCardinalities = conf.isUseCompositeCardinality();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- public double getCardinality(TupleExpr expr) {
- if (expr instanceof Filter) {
- Filter f = (Filter) expr;
- // filters must make sets smaller
- return super.getCardinality(f.getArg()) / 10;
- }
- return super.getCardinality(expr);
- }
-
- @Override
- protected CardinalityCalculator createCardinalityCalculator() {
- return new RdfCloudTripleStoreCardinalityCalculator(this);
- }
-
- public RdfEvalStatsDAO getRdfEvalStatsDAO() {
- return rdfEvalStatsDAO;
- }
-
- public void setRdfEvalStatsDAO(RdfEvalStatsDAO rdfEvalStatsDAO) {
- this.rdfEvalStatsDAO = rdfEvalStatsDAO;
- }
-
- public class RdfCloudTripleStoreCardinalityCalculator extends CardinalityCalculator {
- private RdfCloudTripleStoreEvaluationStatistics statistics;
- protected Map<Var, Collection<Statement>> fspMap;
-
- public RdfCloudTripleStoreCardinalityCalculator(RdfCloudTripleStoreEvaluationStatistics statistics) {
- this.statistics = statistics;
- }
-
-
- @Override
- protected double getCardinality(StatementPattern sp) {
- Var subjectVar = sp.getSubjectVar();
- Resource subj = (Resource) getConstantValue(subjectVar);
- Var predicateVar = sp.getPredicateVar();
- URI pred = (URI) getConstantValue(predicateVar);
- Var objectVar = sp.getObjectVar();
- Value obj = getConstantValue(objectVar);
- Resource context = (Resource) getConstantValue(sp.getContextVar());
-
- // set rdf type to be a max value (as long as the object/subject aren't specified) to
- if (pred != null) {
- if (statistics.pushEmptyRdfTypeDown && RDF.TYPE.equals(pred) && subj == null && obj == null) {
- return Double.MAX_VALUE;
- }
- }
-
- // FixedStatementPattern indicates that this is when backward chaining reasoning is being used
- if (sp instanceof FixedStatementPattern) {
- //no query here
- FixedStatementPattern fsp = (FixedStatementPattern) sp;
- //TODO: assume that only the subject is open ended here
- Var fspSubjectVar = fsp.getSubjectVar();
- if (fspSubjectVar != null && fspSubjectVar.getValue() == null) {
- if (fspMap == null) {
- fspMap = new HashMap<Var, Collection<Statement>>();
- }
- fspMap.put(fspSubjectVar, fsp.statements);
- }
- return fsp.statements.size();
- }
-
- /**
- * Use the output of the FixedStatementPattern to determine more information
- */
- if (fspMap != null && sp instanceof DoNotExpandSP) {
- //TODO: Might be a better way than 3 map pulls
- RdfEvalStatsDAO.CARDINALITY_OF cardinality_of = null;
- Collection<Statement> statements = null;
- // TODO unsure of how to incorporate additional cardinalities here
- if (objectVar != null && objectVar.getValue() == null) {
- statements = fspMap.get(objectVar);
- cardinality_of = RdfEvalStatsDAO.CARDINALITY_OF.OBJECT;
- }
- if (statements == null && predicateVar != null && predicateVar.getValue() == null) {
- statements = fspMap.get(predicateVar);
- cardinality_of = RdfEvalStatsDAO.CARDINALITY_OF.PREDICATE;
- }
- if (statements == null && subjectVar != null && subjectVar.getValue() == null) {
- statements = fspMap.get(subjectVar);
- cardinality_of = RdfEvalStatsDAO.CARDINALITY_OF.SUBJECT;
- }
- if (statements != null) {
- double fspCard = 0;
- for (Statement statement : statements) {
- List<Value> values = new ArrayList<Value>();
- values.add(statement.getSubject());
- fspCard += rdfEvalStatsDAO.getCardinality(conf, cardinality_of, values, context);
- }
- return fspCard;
- }
- }
-
- /**
- * We put full triple scans before rdf:type because more often than not
- * the triple scan is being joined with something else that is better than
- * asking the full rdf:type of everything.
- */
- double cardinality = Double.MAX_VALUE - 1;
- try {
- if (subj != null) {
- List<Value> values = new ArrayList<Value>();
- CARDINALITY_OF card = RdfEvalStatsDAO.CARDINALITY_OF.SUBJECT;
- values.add(subj);
- if (useCompositeCardinalities){
- if (pred != null){
- values.add(pred);
- card = RdfEvalStatsDAO.CARDINALITY_OF.SUBJECTPREDICATE;
- }
- else if (obj != null){
- values.add(obj);
- card = RdfEvalStatsDAO.CARDINALITY_OF.SUBJECTOBJECT;
- }
- }
- double evalCard = evalCard = rdfEvalStatsDAO.getCardinality(conf, card, values, context);
- // the cardinality will be -1 if there was no value found (if the index does not exist)
- if (evalCard >= 0) {
- cardinality = Math.min(cardinality, evalCard);
- } else {
- cardinality = 1;
- }
- }
- else if (pred != null) {
- List<Value> values = new ArrayList<Value>();
- CARDINALITY_OF card = RdfEvalStatsDAO.CARDINALITY_OF.PREDICATE;
- values.add(pred);
- if (useCompositeCardinalities){
- if (obj != null){
- values.add(obj);
- card = RdfEvalStatsDAO.CARDINALITY_OF.PREDICATEOBJECT;
- }
- }
- double evalCard = evalCard = rdfEvalStatsDAO.getCardinality(conf, card, values, context);
- if (evalCard >= 0) {
- cardinality = Math.min(cardinality, evalCard);
- } else {
- cardinality = 1;
- }
- }
- else if (obj != null) {
- List<Value> values = new ArrayList<Value>();
- values.add(obj);
- double evalCard = rdfEvalStatsDAO.getCardinality(conf, RdfEvalStatsDAO.CARDINALITY_OF.OBJECT, values, context);
- if (evalCard >= 0) {
- cardinality = Math.min(cardinality, evalCard);
- } else {
- cardinality = 1;
- }
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- return cardinality;
- }
-
- @Override
- protected void meetUnaryTupleOperator(UnaryTupleOperator node) {
- if (node instanceof Projection) {
- cardinality += -1.0;
- }
- super.meetUnaryTupleOperator(node);
- }
-
- @Override
- protected void meetBinaryTupleOperator(BinaryTupleOperator node) {
- node.getLeftArg().visit(this);
- double leftArgCost = cardinality;
- node.getRightArg().visit(this);
- cardinality += leftArgCost;
- }
-
- // TODO Is this sufficient for add capability of slice node?
- @Override
- public void meet(Slice node) {
- cardinality = node.getLimit();
- }
-
-
- @Override
- public void meet(Join node) {
- node.getLeftArg().visit(this);
- double leftArgCost = cardinality;
- node.getRightArg().visit(this);
- if (leftArgCost > cardinality) {
- cardinality = leftArgCost; //TODO: Is this ok?
- }
- }
-
- protected Value getConstantValue(Var var) {
- if (var != null)
- return var.getValue();
- else
- return null;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreSelectivityEvaluationStatistics.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreSelectivityEvaluationStatistics.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreSelectivityEvaluationStatistics.java
deleted file mode 100644
index b9c6669..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/RdfCloudTripleStoreSelectivityEvaluationStatistics.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 - 2015 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.api.persist.RdfEvalStatsDAO;
-import mvm.rya.api.persist.joinselect.SelectivityEvalDAO;
-import mvm.rya.rdftriplestore.inference.DoNotExpandSP;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.StatementPattern;
-
-public class RdfCloudTripleStoreSelectivityEvaluationStatistics extends RdfCloudTripleStoreEvaluationStatistics {
-
- // allows access to join selectivity and extending RdfCloudTripleStoreEvaluationStatistics allows for use of prospector
- private SelectivityEvalDAO selectEvalStatsDAO; // TODO redundancy here as RdfCloudTripleStoreEvalStats object contains
- // RdfEvalStatsDAO object
-
- protected double filterCard;
- RdfCloudTripleStoreConfiguration config; // TODO redundancy here as RdfCloudTripleStoreEvalStats object contains conf as well
-
- public RdfCloudTripleStoreSelectivityEvaluationStatistics(RdfCloudTripleStoreConfiguration conf,
- RdfEvalStatsDAO<RdfCloudTripleStoreConfiguration> prospector, SelectivityEvalDAO selectEvalStatsDAO) {
-
- super(conf, prospector);
- checkNotNull(selectEvalStatsDAO);
-
- try {
- this.selectEvalStatsDAO = selectEvalStatsDAO;
- this.config = conf; // TODO fix this!
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- protected CardinalityCalculator createCardinalityCalculator() {
- try {
- return new SelectivityCardinalityCalculator(this);
- } catch (Exception e) {
- System.out.println(e);
- throw new RuntimeException(e);
- }
- }
-
- public class SelectivityCardinalityCalculator extends RdfCloudTripleStoreCardinalityCalculator {
-
- public SelectivityCardinalityCalculator(RdfCloudTripleStoreSelectivityEvaluationStatistics statistics) {
- super(statistics);
- }
-
- @Override
- public void meet(Join node) {
- node.getLeftArg().visit(this);
- double leftArgCost = cardinality;
- // System.out.println("Left cardinality is " + cardinality);
- node.getRightArg().visit(this);
-
- if (node.getLeftArg() instanceof FixedStatementPattern && node.getRightArg() instanceof DoNotExpandSP) {
- return;
- }
-
- try {
- double selectivity = selectEvalStatsDAO.getJoinSelect(config, node.getLeftArg(), node.getRightArg());
-// System.out.println("CardCalc: left cost of " + node.getLeftArg() + " is " + leftArgCost + " right cost of "
-// + node.getRightArg() + " is " + cardinality);
-// System.out.println("Right cardinality is " + cardinality);
- cardinality += leftArgCost + leftArgCost * cardinality * selectivity;
-// System.out.println("CardCalc: Cardinality is " + cardinality);
-// System.out.println("CardCalc: Selectivity is " + selectivity);
- // System.out.println("Join cardinality is " + cardinality);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
-
-
-
- @Override
- public double getCardinality(StatementPattern node) {
-
- cardinality = super.getCardinality(node);
-
- // If sp contains all variables or is EmptyRDFtype, assign
- // cardinality
- // equal to table size
- if (cardinality == Double.MAX_VALUE || cardinality == Double.MAX_VALUE - 1) {
- try {
- cardinality = selectEvalStatsDAO.getTableSize(config);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- return cardinality;
- }
-
-
-
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ReorderJoinVisitor.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ReorderJoinVisitor.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ReorderJoinVisitor.java
deleted file mode 100644
index 916aff0..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/ReorderJoinVisitor.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-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;
-
-/**
- * Class ReorderJoinVisitor
- * Date: Apr 11, 2011
- * Time: 10:16:15 PM
- */
-public class ReorderJoinVisitor extends QueryModelVisitorBase {
- @Override
- public void meet(Join node) throws Exception {
- super.meet(node);
-
- TupleExpr leftArg = node.getLeftArg();
- TupleExpr rightArg = node.getRightArg();
-
- /**
- * if join(stmtPattern1, join(stmtPattern2, anything)
- * Should be
- * join(join(stmtPattern1, stmtPattern2), anything)
- */
- if (leftArg instanceof StatementPattern && rightArg instanceof Join) {
- Join rightJoin = (Join) rightArg;
- //find the stmtPattern in the right side
- TupleExpr right_LeftArg = rightJoin.getLeftArg();
- TupleExpr right_rightArg = rightJoin.getRightArg();
- if (right_LeftArg instanceof StatementPattern || right_rightArg instanceof StatementPattern) {
- StatementPattern stmtPattern = null;
- TupleExpr anything = null;
- if (right_LeftArg instanceof StatementPattern) {
- stmtPattern = (StatementPattern) right_LeftArg;
- anything = right_rightArg;
- } else {
- stmtPattern = (StatementPattern) right_rightArg;
- anything = right_LeftArg;
- }
-
- Join inner = new Join(leftArg, stmtPattern);
- Join outer = new Join(inner, anything);
- node.replaceWith(outer);
- }
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/SeparateFilterJoinsVisitor.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/SeparateFilterJoinsVisitor.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/SeparateFilterJoinsVisitor.java
deleted file mode 100644
index e1757e4..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/evaluation/SeparateFilterJoinsVisitor.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package mvm.rya.rdftriplestore.evaluation;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import org.openrdf.query.algebra.*;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-/**
- * TODO: This might be a very bad thing. It may force all AND and not allow ORs?. Depends on how they do the bindings.
- * Class SeparateFilterJoinsVisitor
- * Date: Apr 11, 2011
- * Time: 10:16:15 PM
- */
-public class SeparateFilterJoinsVisitor extends QueryModelVisitorBase {
- @Override
- public void meet(Filter node) throws Exception {
- super.meet(node);
-
- ValueExpr condition = node.getCondition();
- TupleExpr arg = node.getArg();
- if (!(arg instanceof Join)) {
- return;
- }
-
- Join join = (Join) arg;
- TupleExpr leftArg = join.getLeftArg();
- TupleExpr rightArg = join.getRightArg();
-
- if (leftArg instanceof StatementPattern && rightArg instanceof StatementPattern) {
- Filter left = new Filter(leftArg, condition);
- Filter right = new Filter(rightArg, condition);
- node.replaceWith(new Join(left, right));
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/AbstractInferVisitor.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/AbstractInferVisitor.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/AbstractInferVisitor.java
deleted file mode 100644
index a7badec..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/AbstractInferVisitor.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package mvm.rya.rdftriplestore.inference;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-import mvm.rya.rdftriplestore.utils.TransitivePropertySP;
-import mvm.rya.rdftriplestore.utils.FixedStatementPattern;
-import mvm.rya.rdftriplestore.utils.TransitivePropertySP;
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.Union;
-import org.openrdf.query.algebra.Var;
-import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Class AbstractInferVisitor
- * Date: Mar 14, 2012
- * Time: 5:33:01 PM
- */
-public class AbstractInferVisitor extends QueryModelVisitorBase {
-
- static Var EXPANDED = new Var("infer-expanded");
-
- boolean include = true;
-
- RdfCloudTripleStoreConfiguration conf;
- InferenceEngine inferenceEngine;
-
- public AbstractInferVisitor(RdfCloudTripleStoreConfiguration conf, InferenceEngine inferenceEngine) {
- checkNotNull(conf, "Configuration cannot be null");
- checkNotNull(inferenceEngine, "Inference Engine cannot be null");
- this.conf = conf;
- this.inferenceEngine = inferenceEngine;
- }
-
- @Override
- public void meet(StatementPattern sp) throws Exception {
- if (!include) {
- return;
- }
- if (sp instanceof FixedStatementPattern || sp instanceof TransitivePropertySP || sp instanceof DoNotExpandSP) {
- return; //already inferred somewhere else
- }
- final Var predVar = sp.getPredicateVar();
- //we do not let timeRange preds be inferred, not good
- if (predVar == null || predVar.getValue() == null
-// || RdfCloudTripleStoreUtils.getTtlValueConverter(conf, (URI) predVar.getValue()) != null
- ) {
- return;
- }
- meetSP(sp);
- }
-
- protected void meetSP(StatementPattern sp) throws Exception {
-
- }
-
- @Override
- public void meet(Union node) throws Exception {
-// if (!(node instanceof InferUnion))
- super.meet(node);
- }
-
- @Override
- public void meet(Join node) throws Exception {
- if (!(node instanceof InferJoin)) {
- super.meet(node);
- }
- }
-
- public RdfCloudTripleStoreConfiguration getConf() {
- return conf;
- }
-
- public void setConf(RdfCloudTripleStoreConfiguration conf) {
- this.conf = conf;
- }
-
- public InferenceEngine getInferenceEngine() {
- return inferenceEngine;
- }
-
- public void setInferenceEngine(InferenceEngine inferenceEngine) {
- this.inferenceEngine = inferenceEngine;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/DoNotExpandSP.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/DoNotExpandSP.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/DoNotExpandSP.java
deleted file mode 100644
index 457087f..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/DoNotExpandSP.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package mvm.rya.rdftriplestore.inference;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import org.openrdf.query.algebra.StatementPattern;
-import org.openrdf.query.algebra.Var;
-
-/**
- * Class DoNotExpandSP
- * Date: Mar 15, 2012
- * Time: 9:39:45 AM
- */
-public class DoNotExpandSP extends StatementPattern{
- public DoNotExpandSP() {
- }
-
- public DoNotExpandSP(Var subject, Var predicate, Var object) {
- super(subject, predicate, object);
- }
-
- public DoNotExpandSP(Scope scope, Var subject, Var predicate, Var object) {
- super(scope, subject, predicate, object);
- }
-
- public DoNotExpandSP(Var subject, Var predicate, Var object, Var context) {
- super(subject, predicate, object, context);
- }
-
- public DoNotExpandSP(Scope scope, Var subjVar, Var predVar, Var objVar, Var conVar) {
- super(scope, subjVar, predVar, objVar, conVar);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferConstants.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferConstants.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferConstants.java
deleted file mode 100644
index 4d2a753..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package mvm.rya.rdftriplestore.inference;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-/**
- * Interface InferConstants
- * Date: Apr 16, 2011
- * Time: 7:30:47 AM
- */
-public interface InferConstants {
-
- public static final String INFERRED = "inferred";
- public static final String TRUE = "true";
- public static final String FALSE = "false";
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferJoin.java
----------------------------------------------------------------------
diff --git a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferJoin.java b/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferJoin.java
deleted file mode 100644
index 6d7be93..0000000
--- a/sail/rya.sail.impl/src/main/java/mvm/rya/rdftriplestore/inference/InferJoin.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package mvm.rya.rdftriplestore.inference;
-
-/*
- * #%L
- * mvm.rya.rya.sail.impl
- * %%
- * Copyright (C) 2014 Rya
- * %%
- * Licensed 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.
- * #L%
- */
-
-import org.openrdf.query.algebra.Join;
-import org.openrdf.query.algebra.TupleExpr;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Class InferJoin
- * Date: Apr 16, 2011
- * Time: 7:29:40 AM
- */
-public class InferJoin extends Join {
-
- private Map<String, String> properties = new HashMap<String, String>();
-
- public InferJoin() {
- }
-
- public InferJoin(TupleExpr leftArg, TupleExpr rightArg) {
- super(leftArg, rightArg);
- }
-
- public Map<String, String> getProperties() {
- return properties;
- }
-
-}