@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { return VariableUtils.getVars(_atom); }
@Override public Collection<AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { return VariableUtils.getVars(_atom); }
@Override public Collection<AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { return VariableUtils.getVars(_atom); }
@Override public Collection<AtomVariable> getBindableVars(final Collection<AtomVariable> bound) { return VariableUtils.getVars(_pattern); }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { return VariableUtils.getVars(_atom); }
@Override public Collection<AtomVariable> getBindableVars(final Collection<AtomVariable> bound) { return VariableUtils.getVars(_pattern); }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { final Collection<AtomVariable> vars = VariableUtils.getVars(_atom); vars.removeAll(getBindableVars(bound)); return vars; }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { final Collection<AtomVariable> vars = VariableUtils.getVars(_atom); vars.removeAll(getBindableVars(bound)); return vars; }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { final Collection<AtomVariable> vars = VariableUtils.getVars(_atom); vars.removeAll(getBindableVars(bound)); return vars; }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { final Collection<AtomVariable> vars = VariableUtils.getVars(_atom); vars.removeAll(getBindableVars(bound)); return vars; }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { final Collection<AtomVariable> vars = VariableUtils.getVars(_atom); vars.removeAll(getBindableVars(bound)); return vars; }
@Override public Collection<? extends AtomVariable> getPrerequisiteVars(final Collection<AtomVariable> bound) { final Collection<AtomVariable> vars = VariableUtils.getVars(_atom); vars.removeAll(getBindableVars(bound)); return vars; }
@Override public Collection<? extends AtomVariable> getBindableVars(final Collection<AtomVariable> bound) { if (!isApplicable(bound)) return Collections.emptySet(); return SetUtils.difference(VariableUtils.getVars(_atom), bound); }
@Override public Collection<? extends AtomVariable> getBindableVars(final Collection<AtomVariable> bound) { if (!isApplicable(bound)) return Collections.emptySet(); return SetUtils.difference(VariableUtils.getVars(_atom), bound); }
/** * Returns a string explaining why a rule cannot be used for reasoning, or <code>null</code> if the rule can be used for reasoning * * @param rule rule to check * @return a string explaining why a rule cannot be used for reasoning, or <code>null</code> if the rule can be used for reasoning */ public static String explainNotUsable(final Rule rule) { final Set<AtomVariable> bodyVars = new HashSet<>(); for (final RuleAtom atom : rule.getBody()) { final String notUsableExplanation = bodyFilter.explainNotUsable(atom); if (notUsableExplanation != null) return notUsableExplanation; bodyVars.addAll(VariableUtils.getVars(atom)); } for (final RuleAtom atom : rule.getHead()) { if (!bodyVars.containsAll(VariableUtils.getVars(atom))) return "Head atom " + atom + " contains variables not found in body."; final String notUsableExplanation = headFilter.explainNotUsable(atom); if (notUsableExplanation != null) return notUsableExplanation; } return null; }
/** * Returns a string explaining why a rule cannot be used for reasoning, or <code>null</code> if the rule can be used for reasoning * * @param rule rule to check * @return a string explaining why a rule cannot be used for reasoning, or <code>null</code> if the rule can be used for reasoning */ public static String explainNotUsable(final Rule rule) { final Set<AtomVariable> bodyVars = new HashSet<>(); for (final RuleAtom atom : rule.getBody()) { final String notUsableExplanation = bodyFilter.explainNotUsable(atom); if (notUsableExplanation != null) return notUsableExplanation; bodyVars.addAll(VariableUtils.getVars(atom)); } for (final RuleAtom atom : rule.getHead()) { if (!bodyVars.containsAll(VariableUtils.getVars(atom))) return "Head atom " + atom + " contains variables not found in body."; final String notUsableExplanation = headFilter.explainNotUsable(atom); if (notUsableExplanation != null) return notUsableExplanation; } return null; }
public Collection<BindingHelper> getHelpers(final Rule rule) { final Collection<BindingHelper> helpers = new ArrayList<>(); final BodyAtomVisitor bodyVisitor = new BodyAtomVisitor(); for (final RuleAtom atom : rule.getBody()) { atom.accept(bodyVisitor); if (bodyVisitor.getTester() != null) helpers.add(new FilterHelper(bodyVisitor.getTester(), VariableUtils.getVars(atom))); } return helpers; }
public Collection<BindingHelper> getHelpers(final Rule rule) { final Collection<BindingHelper> helpers = new ArrayList<>(); final BodyAtomVisitor bodyVisitor = new BodyAtomVisitor(); for (final RuleAtom atom : rule.getBody()) { atom.accept(bodyVisitor); if (bodyVisitor.getTester() != null) helpers.add(new FilterHelper(bodyVisitor.getTester(), VariableUtils.getVars(atom))); } return helpers; }
public void testVariableUtils1() { final AtomIVariable var1 = new AtomIVariable("var1"), var2 = new AtomIVariable("var2"); final RuleAtom atom = new SameIndividualAtom(var1, var2); assertIteratorValues(VariableUtils.getVars(atom).iterator(), new Object[] { var1, var2 }); }
public void testVariableUtils2() { final ATermAppl p = term("p"); final AtomIVariable var1 = new AtomIVariable("var1"), var2 = new AtomIVariable("var2"); final RuleAtom atom = new IndividualPropertyAtom(p, var1, var2); assertIteratorValues(VariableUtils.getVars(atom).iterator(), new Object[] { var1, var2 }); }