@Override public void visit(P_Inverse path) { result = path.getSubPath(); }
@Override public Path transform(P_Inverse path, Path subPath) { Path result = path.getSubPath() == subPath ? path : new P_Inverse(subPath) ; return result; }
public static Path pathInverse(Path path) { return new P_Inverse(path) ; } public static Path pathMod(Path path, long min, long max) { return new P_Mod(path, min, max) ; }
@Override public int hashCode() { return getSubPath().hashCode() ^ hashInverse; }
@Override public void visit(P_Inverse path) { Path newSubPath = apply(path.getSubPath()); result = path.getSubPath() == newSubPath ? path : new P_Inverse(newSubPath) ; }
@Override public boolean equalTo(Path path2, NodeIsomorphismMap isoMap) { if ( !(path2 instanceof P_Inverse) ) return false; P_Inverse other = (P_Inverse)path2; return getSubPath().equalTo(other.getSubPath(), isoMap); }
@Override public void visit(P_Inverse inversePath) { inversePath.getSubPath().visit(this); push(new P_Inverse(pop())); }
@Override public Path transform(P_Shortest path, Path subPath) { Path result = new P_Shortest(new P_Inverse(subPath)); return result; }
@Override public void visit(P_Inverse path) { Path subPath = path.getSubPath(); result = PathVisitorInvert.apply(subPath); } }
@Override public void visit(P_Inverse inversePath) { inversePath.getSubPath().visit(this); push(new P_Inverse(pop())); }
@Override public Path transform(P_Distinct path, Path subPath) { Path result = new P_Distinct(new P_Inverse(subPath)); return result; }
/** * Constructs a PathEvaluator for an arbitrary SPARQL path (except single forward properties). * @param path the path * @param shapesModel the shapes Model */ public PathEvaluator(Path path, Model shapesModel) { this.jenaPath = path; isInverse = jenaPath instanceof P_Inverse && ((P_Inverse)jenaPath).getSubPath() instanceof P_Link; if(isInverse) { P_Link link = (P_Link) ((P_Inverse)jenaPath).getSubPath(); predicate = shapesModel.getProperty(link.getNode().getURI()); } }
@Override public Path transform(P_ZeroOrOne path, Path subPath) { Path result = new P_ZeroOrOne(new P_Inverse(subPath)); return result; }
@Override public void visit(P_Inverse inversePath) { out.print("^") ; Path p = inversePath.getSubPath() ; boolean parens = true ; if ( p instanceof P_Link ) parens = false ; visitPath(p, parens) ; } }
@Override public Path transform(P_Multi path, Path subPath) { Path result = new P_Multi(new P_Inverse(subPath)); return result; }
@Override public void visit(P_Inverse path) { before(path); if (path.getSubPath() != null) { path.getSubPath().visit(this); } proc.visit(path); after(path); }
@Override public Path transform(P_Mod path, Path subPath, long min, long max) { Path result = new P_Mod(new P_Inverse(subPath), min, max); return result; }
@Override public void visit(P_Inverse inversePath) { PathTransform pt = new PathTransform(object, subject) ; inversePath.getSubPath().visit(pt) ; result = pt.getResult() ; }