@Override public void visit(P_NegPropSet path) { List<Node> newFwdNodes = path.getFwdNodes(); List<Node> newBwdNodes = path.getBwdNodes(); Path newPath = pathTransform.transform(path, newFwdNodes, newBwdNodes); stack.push(newPath); }
@Override public Path transform(P_NegPropSet path, List<Node> fwdNodes, List<Node> bwdNodes) { Path result = path.getFwdNodes() == fwdNodes && path.getBwdNodes() == bwdNodes ? path : createNegPropSet(fwdNodes, bwdNodes) ; return result; }
public static PredicateClass toPredicateClass(P_NegPropSet path) { // If the set of nodes is empty, the valueset gets positive polarity, otherwise its negative ValueSet<Node> f = ValueSet.create(path.getFwdNodes().isEmpty(), path.getFwdNodes()); ValueSet<Node> b = ValueSet.create(path.getBwdNodes().isEmpty(), path.getBwdNodes()); PredicateClass result = new PredicateClass(f, b); return result; }
@Override protected void doNegatedPropertySet(P_NegPropSet pathNotOneOf, Node node, Collection<Node> output) { // X !(:a|:b|^:c|^:d) Y = { X !(:a|:b) Y } UNION { Y !(:c|:d) X } if ( pathNotOneOf.getFwdNodes().size() > 0 ) { Iterator<Node> nodes1 = stepExcludeForwards(node, pathNotOneOf.getFwdNodes()) ; fill(nodes1, output) ; } if ( pathNotOneOf.getBwdNodes().size() > 0 ) { Iterator<Node> nodes2 = stepExcludeBackwards(node, pathNotOneOf.getBwdNodes()) ; fill(nodes2, output) ; } }
@Override protected void doNegatedPropertySet(P_NegPropSet pathNotOneOf, Node node, Collection<Node> output) { // X !(:a|:b|^:c|^:d) Y = { X !(:a|:b) Y } UNION { Y !(:c|:d) X } if ( pathNotOneOf.getFwdNodes().size() > 0 ) { Iterator<Node> nodes1 = stepExcludeForwards(node, pathNotOneOf.getFwdNodes()) ; fillUnique(nodes1, output) ; } if ( pathNotOneOf.getBwdNodes().size() > 0 ) { Iterator<Node> nodes2 = stepExcludeBackwards(node, pathNotOneOf.getBwdNodes()) ; fillUnique(nodes2, output) ; } }
@Override protected void doNegatedPropertySet(P_NegPropSet pathNotOneOf, Node node, Collection<Node> output) { List<Node> fwdSteps = pathNotOneOf.getFwdNodes(); List<Node> bwkSteps = pathNotOneOf.getBwdNodes(); // Flip lists processed - flips calls of stepExcludeForwards/stepExcludeBackwards if ( ! forwardMode ) { List<Node> tmp = fwdSteps; fwdSteps = bwkSteps; bwkSteps = tmp; } if ( fwdSteps.size() > 0 ) { Iterator<Node> nodes1 = stepExcludeForwards(node, fwdSteps) ; fill(nodes1, output) ; } if ( bwkSteps.size() > 0 ) { Iterator<Node> nodes2 = stepExcludeBackwards(node, bwkSteps) ; fill(nodes2, output) ; } }
@Override public void visit(P_NegPropSet path) { if(!path.getFwdNodes().isEmpty()) { Expr expr = new E_NotOneOf(new ExprVar(Vars.p), ExprListUtils.nodesToExprs(path.getFwdNodes())); rsb.nav(expr, reverse); } if(!path.getBwdNodes().isEmpty()) { Expr expr = new E_NotOneOf(new ExprVar(Vars.p), ExprListUtils.nodesToExprs(path.getBwdNodes())); rsb.nav(expr, !reverse); } }
@Override public void visit(P_NegPropSet path) { P_NegPropSet tmp = new P_NegPropSet(); for(Node node : path.getFwdNodes()) { tmp.add(new P_ReverseLink(node)); } for(Node node : path.getBwdNodes()) { tmp.add(new P_Link(node)); } result = tmp; }