Author: andy
Date: Tue Apr 24 18:23:29 2012
New Revision: 1329912

URL: http://svn.apache.org/viewvc?rev=1329912&view=rev
Log:
Some tidying up in preparation for a new evaluator with the latest SPARQL 
semantics.

Modified:
    
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine.java
    
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine1.java
    
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngineN.java
    
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval.java
    
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEvaluator.java

Modified: 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine.java
URL: 
http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine.java?rev=1329912&r1=1329911&r2=1329912&view=diff
==============================================================================
--- 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine.java
 (original)
+++ 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine.java
 Tue Apr 24 18:23:29 2012
@@ -32,7 +32,6 @@ import com.hp.hpl.jena.sparql.path.P_Neg
 import com.hp.hpl.jena.sparql.path.Path ;
 import com.hp.hpl.jena.sparql.path.eval.PathEvaluator.FilterExclude ;
 
-
 abstract public class PathEngine {
     
     protected abstract void doNegatedPropertySet(P_NegPropSet pathNotOneOf, 
Node node, Collection<Node> output) ;
@@ -84,8 +83,6 @@ abstract public class PathEngine {
 
     protected abstract void doMultiLengthPath(Path pathStep, Node node, long 
min, long max, Collection<Node> output) ;
 
-    //protected abstract void doArbitaryLengthPath(Path pathStep, Node node, 
Collection<Node> output) ;
-
     protected abstract void doAlt(Path pathStepLeft, Path pathStepRight, Node 
node, Collection<Node> output) ;
 
     protected abstract void doSeq(Path pathStepLeft, Path pathStepRight, Node 
node, Collection<Node> output) ;

Modified: 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine1.java
URL: 
http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine1.java?rev=1329912&r1=1329911&r2=1329912&view=diff
==============================================================================
--- 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine1.java
 (original)
+++ 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngine1.java
 Tue Apr 24 18:23:29 2012
@@ -29,7 +29,11 @@ import com.hp.hpl.jena.sparql.path.P_Mod
 import com.hp.hpl.jena.sparql.path.P_NegPropSet ;
 import com.hp.hpl.jena.sparql.path.Path ;
 
-/** Path evaluation visitor that provide distinct nodes visited, */ 
+/** Path evaluation visitor that provide distinct nodes visited only.
+ * This is NOT SPARQL semantics.
+ * This class exists for experimentation.
+ * It is written to get the right results - not necessarily with maximum 
efficiency.
+ */
 final class PathEngine1 extends PathEngine
 {
     private final Graph graph ;
@@ -43,7 +47,9 @@ final class PathEngine1 extends PathEngi
     
     // Choose the underlying impl - different choice for debugging.
     @Override
-    protected Collection<Node> collector() { return new ArrayList<Node>()  ; }
+    protected Collection<Node> collector() 
+    { return new ArrayList<Node>()  ; }
+    //{ return new HashSet<Node>()  ; }
     
     @Override
     protected void flipDirection()

Modified: 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngineN.java
URL: 
http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngineN.java?rev=1329912&r1=1329911&r2=1329912&view=diff
==============================================================================
--- 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngineN.java
 (original)
+++ 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEngineN.java
 Tue Apr 24 18:23:29 2012
@@ -35,9 +35,11 @@ import com.hp.hpl.jena.sparql.path.Path 
 
 // ----
 /** Path evaluator that produces duplicates.
- *  This is the algorithm in the SPARQL 1.1 spec.  
- * 
+ * This is NOT SPARQL semantics.
+ * This class exists for experimentation.
+ * It is written to get the right results - not necessarily with maximum 
efficiency.
  */
+
 final class PathEngineN extends PathEngine
 {
     private final Graph graph ;
@@ -87,7 +89,7 @@ final class PathEngineN extends PathEngi
     }
 
     @Override
-    public void doSeq(Path pathStepLeft, Path pathStepRight, Node node, 
Collection<Node> output)
+    protected void doSeq(Path pathStepLeft, Path pathStepRight, Node node, 
Collection<Node> output)
     {
         Path part1 = forwardMode ? pathStepLeft : pathStepRight ;
         Path part2 = forwardMode ? pathStepRight : pathStepLeft ;

Modified: 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval.java
URL: 
http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval.java?rev=1329912&r1=1329911&r2=1329912&view=diff
==============================================================================
--- 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval.java
 (original)
+++ 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval.java
 Tue Apr 24 18:23:29 2012
@@ -28,25 +28,40 @@ import com.hp.hpl.jena.sparql.path.Path 
 
 public class PathEval
 {
-    /** Evaluate a path */ 
+    /** Evaluate a path : SPARQL semantics */ 
     static public Iterator<Node> eval(Graph graph, Node node, Path path)
     {
+        //return PathEvaluator.eval(graph, node, path, new 
PathEngineSPARQL(graph, true)) ;
         return PathEvaluator.eval(graph, node, path, new PathEngineN(graph, 
true)) ;
     }
 
-    /** Evaluate a path : unique results */ 
-    static public Iterator<Node> eval1(Graph graph, Node node, Path path)
+    /** Evaluate a path */ 
+    static public Iterator<Node> evalReverse(Graph graph, Node node, Path path)
     {
-        return PathEvaluator.eval(graph, node, path, new PathEngine1(graph, 
true)) ;
+        //return PathEvaluator.eval(graph, node, path, new 
PathEngineSPARQL(graph, false)) ;
+        return PathEvaluator.eval(graph, node, path, new PathEngineN(graph, 
false)) ;
     }
 
-    /** Evaluate a path */ 
-    static public Iterator<Node> evalReverse(Graph graph, Node node, Path path)
+    
+    /** Evaluate a path : counting semantics */ 
+    static public Iterator<Node> evalN(Graph graph, Node node, Path path)
+    {
+        return PathEvaluator.eval(graph, node, path, new PathEngineN(graph, 
true)) ;
+    }
+
+    /** Evaluate a path : counting semantics */ 
+    static public Iterator<Node> evalReverseN(Graph graph, Node node, Path 
path)
     {
         return PathEvaluator.eval(graph, node, path, new PathEngineN(graph, 
false)) ;
     }
 
     /** Evaluate a path : unique results */ 
+    static public Iterator<Node> eval1(Graph graph, Node node, Path path)
+    {
+        return PathEvaluator.eval(graph, node, path, new PathEngine1(graph, 
true)) ;
+    }
+
+    /** Evaluate a path : unique results */ 
     static public Iterator<Node> evalReverse1(Graph graph, Node node, Path 
path)
     {
         return PathEvaluator.eval(graph, node, path, new PathEngine1(graph, 
false)) ;

Modified: 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEvaluator.java
URL: 
http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEvaluator.java?rev=1329912&r1=1329911&r2=1329912&view=diff
==============================================================================
--- 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEvaluator.java
 (original)
+++ 
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEvaluator.java
 Tue Apr 24 18:23:29 2012
@@ -133,10 +133,10 @@ final class PathEvaluator implements Pat
             engine.doFixedLengthPath(pathMod.getSubPath(), node, 
pathMod.getFixedLength(), output) ;
         else
             engine.doMultiLengthPath(pathMod.getSubPath(),
-                              node,
-                              pathMod.getMin(),
-                              pathMod.getMax(), 
-                              output) ;
+                                     node,
+                                     pathMod.getMin(),
+                                     pathMod.getMax(), 
+                                     output) ;
     }
 
     @Override
@@ -157,8 +157,7 @@ final class PathEvaluator implements Pat
     {
         // Regardless of engine, do distinct. 
         PathEngine engine2 = engine ;
-        if ( engine instanceof PathEngineN )
-            engine = new PathEngine1(graph, engine.direction()) ;
+        engine = new PathEngine1(graph, engine.direction()) ;
         engine.doZeroOrMore(path.getSubPath(), node, output) ;
         engine = engine2 ;
     }
@@ -166,8 +165,14 @@ final class PathEvaluator implements Pat
     @Override
     public void visit(P_ZeroOrMoreN path)
     {
-        // Do as per engine.
+        // TEMP: Do as engine.
         engine.doZeroOrMore(path.getSubPath(), node, output) ;
+        
+//        // Regardless of engine, do counting. 
+//        PathEngine engine2 = engine ;
+//        engine = new PathEngineN(graph, engine.direction()) ;
+//        engine.doZeroOrMore(path.getSubPath(), node, output) ;
+//        engine = engine2 ;
     }
     
 
@@ -176,8 +181,7 @@ final class PathEvaluator implements Pat
     {
         // Regardless of engine, do distinct. 
         PathEngine engine2 = engine ;
-        if ( engine instanceof PathEngineN )
-            engine = new PathEngine1(graph, engine.direction()) ;
+        engine = new PathEngine1(graph, engine.direction()) ;
         engine.doOneOrMore(path.getSubPath(), node, output) ;
         engine = engine2 ;
     }
@@ -185,8 +189,13 @@ final class PathEvaluator implements Pat
     @Override
     public void visit(P_OneOrMoreN path)
     {
-        // Do as per engine.
+        // TEMP Do as engine.
         engine.doOneOrMore(path.getSubPath(), node, output) ;
+        
+//        PathEngine engine2 = engine ;
+//        engine = new PathEngineN(graph, engine.direction()) ;
+//        engine.doOneOrMore(path.getSubPath(), node, output) ;
+//        engine = engine2 ;
     }
     
     
@@ -203,15 +212,9 @@ final class PathEvaluator implements Pat
     @Override
     public void visit(P_Distinct pathDistinct)
     {
-        doDistinct(pathDistinct.getSubPath()) ;
-    }
-    
-    protected void doDistinct(Path path)
-    {
         PathEngine engine2 = engine ;
-        if ( engine instanceof PathEngineN )
-            engine = new PathEngine1(graph, engine.direction()) ;
-        engine.eval(graph, path, node, output) ;
+        engine = new PathEngine1(graph, engine.direction()) ;
+        engine.eval(graph, pathDistinct.getSubPath(), node, output) ;
         engine = engine2 ;
     }
 
@@ -219,8 +222,7 @@ final class PathEvaluator implements Pat
     public void visit(P_Multi pathMulti)
     {
         PathEngine engine2 = engine ;
-        if ( engine instanceof PathEngine1 )
-            engine = new PathEngineN(graph, engine.direction()) ;
+        engine = new PathEngineN(graph, engine.direction()) ;
         engine.eval(graph, pathMulti.getSubPath(), node, output) ;
         engine = engine2 ;
     }


Reply via email to