Class AbstractSelfJoinSimplifier<C extends FunctionalDependency>
- java.lang.Object
-
- it.unibz.inf.ontop.iq.optimizer.impl.AbstractSelfJoinSimplifier<C>
-
- Direct Known Subclasses:
ArgumentTransferInnerJoinFDIQOptimizer.SelfJoinFDSimplifier,SelfJoinUCIQOptimizerImpl.SelfJoinUCSimplifier
public abstract class AbstractSelfJoinSimplifier<C extends FunctionalDependency> extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractSelfJoinSimplifier.DeterminantGroupEvaluationprotected static classAbstractSelfJoinSimplifier.NormalizationBeforeUnificationprotected static classAbstractSelfJoinSimplifier.OptimizationStateIf extensional data nodes are empty, insert an EmptyNode
-
Field Summary
Fields Modifier and Type Field Description protected IntermediateQueryFactoryiqFactoryprotected SubstitutionFactorysubstitutionFactoryprotected TermFactorytermFactoryprotected ImmutableUnificationToolsunificationTools
-
Constructor Summary
Constructors Constructor Description AbstractSelfJoinSimplifier(CoreSingletons coreSingletons)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract booleancanEliminateNodes()protected abstract Optional<AbstractSelfJoinSimplifier.DeterminantGroupEvaluation>evaluateDeterminantGroup(it.unibz.inf.ontop.com.google.common.collect.ImmutableList<VariableOrGroundTerm> determinants, Collection<ExtensionalDataNode> dataNodes, C constraint)protected abstract Stream<C>extractConstraints(RelationDefinition relationDefinition)protected abstract booleanhasConstraint(ExtensionalDataNode node)protected AbstractSelfJoinSimplifier.NormalizationBeforeUnificationnormalizeDataNodes(Collection<ExtensionalDataNode> dataNodes, C constraint)TODO: we don't need to remove the functional terms for the determinantsprotected AbstractSelfJoinSimplifier.OptimizationStateoptimizeExtensionalDataNodes(RelationDefinition relationDefinition, Collection<ExtensionalDataNode> dataNodes)Optional<IQTree>transformInnerJoin(InnerJoinNode rootNode, it.unibz.inf.ontop.com.google.common.collect.ImmutableList<IQTree> children, it.unibz.inf.ontop.com.google.common.collect.ImmutableSet<Variable> projectedVariables)Returns an empty result to indicate that no optimization has been appliedprotected Optional<ImmutableUnificationTools.ArgumentMapUnification>unifyDataNodes(Stream<ExtensionalDataNode> dataNodes, Function<ExtensionalDataNode,it.unibz.inf.ontop.com.google.common.collect.ImmutableMap<Integer,? extends VariableOrGroundTerm>> argumentMapSelector)
-
-
-
Field Detail
-
iqFactory
protected final IntermediateQueryFactory iqFactory
-
termFactory
protected final TermFactory termFactory
-
unificationTools
protected final ImmutableUnificationTools unificationTools
-
substitutionFactory
protected final SubstitutionFactory substitutionFactory
-
-
Constructor Detail
-
AbstractSelfJoinSimplifier
public AbstractSelfJoinSimplifier(CoreSingletons coreSingletons)
-
-
Method Detail
-
transformInnerJoin
public Optional<IQTree> transformInnerJoin(InnerJoinNode rootNode, it.unibz.inf.ontop.com.google.common.collect.ImmutableList<IQTree> children, it.unibz.inf.ontop.com.google.common.collect.ImmutableSet<Variable> projectedVariables)
Returns an empty result to indicate that no optimization has been applied
-
canEliminateNodes
protected abstract boolean canEliminateNodes()
-
hasConstraint
protected abstract boolean hasConstraint(ExtensionalDataNode node)
-
optimizeExtensionalDataNodes
protected AbstractSelfJoinSimplifier.OptimizationState optimizeExtensionalDataNodes(RelationDefinition relationDefinition, Collection<ExtensionalDataNode> dataNodes)
-
extractConstraints
protected abstract Stream<C> extractConstraints(RelationDefinition relationDefinition)
-
evaluateDeterminantGroup
protected abstract Optional<AbstractSelfJoinSimplifier.DeterminantGroupEvaluation> evaluateDeterminantGroup(it.unibz.inf.ontop.com.google.common.collect.ImmutableList<VariableOrGroundTerm> determinants, Collection<ExtensionalDataNode> dataNodes, C constraint)
-
unifyDataNodes
protected Optional<ImmutableUnificationTools.ArgumentMapUnification> unifyDataNodes(Stream<ExtensionalDataNode> dataNodes, Function<ExtensionalDataNode,it.unibz.inf.ontop.com.google.common.collect.ImmutableMap<Integer,? extends VariableOrGroundTerm>> argumentMapSelector)
-
normalizeDataNodes
protected AbstractSelfJoinSimplifier.NormalizationBeforeUnification normalizeDataNodes(Collection<ExtensionalDataNode> dataNodes, C constraint)
TODO: we don't need to remove the functional terms for the determinants
-
-