public static Path pathOneOrMore1(Path path) { return new P_OneOrMore1(path) ; } public static Path pathZeroOrMoreN(Path path) { return new P_ZeroOrMoreN(path) ; }
@Override public int hashCode() { return hashOneOrMore1 ^ getSubPath().hashCode() ; }
@Override public void visit(P_ZeroOrMore1 p) { new P_OneOrMore1(p.getSubPath()).visit(this); List<Rule> rules = result; Predicate oneOrMorePred = resultMainPredicate; Predicate newpred = new Predicate(idpPredicateGen.createNewVariable(), 2); VariableExpr x = new VariableExpr("X"); VariableExpr y = new VariableExpr("Y"); rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(new Predicate(Rule.BUILT_IN_EQUAL, 2), x, y))); rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(oneOrMorePred, x, y))); result = rules; resultMainPredicate = newpred; }
@Override public Path make(ItemList list) { BuilderLib.checkLength(2, 2, list, "path OneOrMore: wanted 1 argument") ; Path path = build(list, 1) ; return new P_OneOrMore1(path) ; } } ;
@Override public boolean equalTo(Path path2, NodeIsomorphismMap isoMap) { if ( ! ( path2 instanceof P_OneOrMore1 ) ) return false ; P_OneOrMore1 other = (P_OneOrMore1)path2 ; return getSubPath().equalTo(other.getSubPath(), isoMap) ; }
triplePath = new TriplePath(var.asNode(), new P_ZeroOrMore1(new P_Link(NodeFactory.createURI(strippedPathExpression))), id.asNode()); } else if (pathExpression.contains("+")) { triplePath = new TriplePath(var.asNode(), new P_OneOrMore1(new P_Link(NodeFactory.createURI(strippedPathExpression))), id.asNode()); } else { throw new IllegalStateException("Only ZeroOrMorePath(*), OneOrMorePath(+) path selectors are currently supported.");
@Override public void visit(P_OneOrMore1 path) { engine.doOneOrMore(path.getSubPath(), node, output) ; }
@Override public void visit(P_OneOrMore1 path) { writePath(Tags.tagPathOneOrMore1, path.getSubPath()) ; }
@Override public void visit(P_OneOrMore1 path) { printPathMod("+", path.getSubPath()) ; }
@Override public void visit(P_OneOrMore1 p) { p.getSubPath().visit(this); List<Rule> rules = result; Predicate basePred = resultMainPredicate; Predicate newpred = new Predicate(idpPredicateGen.createNewVariable(), 2); VariableExpr x = new VariableExpr("X"); VariableExpr y = new VariableExpr("Y"); VariableExpr z = new VariableExpr("Z"); rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(basePred, x, y))); if (rightRecursion) { rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(basePred, x, z), new AtomicFormula(newpred, z, y) )); } else { rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(newpred, z, y), new AtomicFormula(basePred, x, z))); } result = rules; resultMainPredicate = newpred; }