@Override public void visit(ConstructionNode constructionNode) { if (query.getChildren(constructionNode).size() != 1) { throw new InvalidIntermediateQueryException("CONSTRUCTION node " + constructionNode + " must have ONE and ONLY ONE child.\n" + query); } ImmutableSet<Variable> requiredChildVariables = constructionNode.getChildVariables(); for (QueryNode child : query.getChildren(constructionNode)) { ImmutableSet<Variable> childProjectedVariables = query.getVariables(child); if (!childProjectedVariables.containsAll(requiredChildVariables)) { throw new InvalidIntermediateQueryException("This child " + child + " does not project all the variables " + "required by the CONSTRUCTION node (" + requiredChildVariables + ")\n" + query); } } }
@Override public void visit(ConstructionNode constructionNode) { if (query.getChildren(constructionNode).size() != 1) { throw new InvalidIntermediateQueryException("CONSTRUCTION node " + constructionNode + " must have ONE and ONLY ONE child.\n" + query); } ImmutableSet<Variable> requiredChildVariables = constructionNode.getChildVariables(); for (QueryNode child : query.getChildren(constructionNode)) { ImmutableSet<Variable> childProjectedVariables = query.getVariables(child); if (!childProjectedVariables.containsAll(requiredChildVariables)) { throw new InvalidIntermediateQueryException("This child " + child + " does not project all the variables " + "required by the CONSTRUCTION node (" + requiredChildVariables + ")\n" + query); } } }
ImmutableSet<Variable> unionVariables = newRootNode.getChildVariables(); UnionNode newUnionNode = iqFactory.createUnionNode(unionVariables);
freshHeadAtom = generateProjectionAtom(parentNode.get().getChildVariables()); } else { freshHeadAtom = generateProjectionAtom(((UnionNode) node).getVariables());