@Override public synchronized VariableGenerator getVariableGenerator() { if (variableGenerator == null) variableGenerator = coreUtilsFactory.createVariableGenerator(tree.getKnownVariables()); return variableGenerator; }
public ImmutableSet<Variable> getKnownVariables() { return definition.getTree().getKnownVariables(); }
private IQTree optimize(IQTree tree) { QueryMergingTransformer transformer = createTransformer(tree.getKnownVariables()); return tree.acceptTransformer(transformer); }
@Override public ImmutableSet<Variable> getKnownVariables() { if (knownVariables == null) knownVariables = Stream.concat( getRootNode().getLocalVariables().stream(), getChildren().stream() .flatMap(c -> c.getKnownVariables().stream())) .collect(ImmutableCollectors.toSet()); return knownVariables; }
private IQ appendSuffixToVariableNames(IQ query, int suffix) { Map<Variable, Variable> substitutionMap = query.getTree().getKnownVariables().stream() .collect(Collectors.toMap( v -> v, v -> termFactory.getVariable(v.getName()+"m"+suffix))); QueryRenamer queryRenamer = transformerFactory.createRenamer(substitutionFactory.getInjectiveVar2VarSubstitution(substitutionMap)); return queryRenamer.transform(query); } }
private Variable createFreshVariable(IQ assertion, IntensionalQueryMerger intensionalQueryMerger, Variable formerVariable) { VariableGenerator variableGenerator = coreUtilsFactory.createVariableGenerator( Sets.union( assertion.getTree().getKnownVariables(), intensionalQueryMerger.getKnownVariables()).immutableCopy()); return variableGenerator.generateNewVariableFromVar(formerVariable); }
VariableGenerator variableGenerator = coreUtilsFactory.createVariableGenerator(firstDefinition.getTree().getKnownVariables()); variableGenerator, def.getTree().getKnownVariables());
/** * Does NOT look for intensional data nodes inside the definitions * */ private IQTree replaceIntensionalData(IntensionalDataNode dataNode, IQ definition) { InjectiveVar2VarSubstitution renamingSubstitution = substitutionFactory.generateNotConflictingRenaming( variableGenerator, definition.getTree().getKnownVariables()); IQ renamedIQ; if(renamingSubstitution.isEmpty()){ renamedIQ = definition; } else { QueryRenamer queryRenamer = transformerFactory.createRenamer(renamingSubstitution); renamedIQ = queryRenamer.transform(definition); } ImmutableSubstitution<VariableOrGroundTerm> descendingSubstitution = extractSubstitution( renamingSubstitution.applyToDistinctVariableOnlyDataAtom(renamedIQ.getProjectionAtom()), dataNode.getProjectionAtom()); return renamedIQ.getTree() .applyDescendingSubstitution(descendingSubstitution, Optional.empty()) .liftBinding(variableGenerator); }