You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/03/09 22:33:51 UTC

svn commit: r1299059 - in /incubator/jena/Jena2/ARQ/trunk/src: main/java/com/hp/hpl/jena/sparql/ main/java/com/hp/hpl/jena/sparql/algebra/optimize/ main/java/com/hp/hpl/jena/sparql/expr/ main/java/com/hp/hpl/jena/sparql/path/ main/java/com/hp/hpl/jena/...

Author: andy
Date: Fri Mar  9 21:33:50 2012
New Revision: 1299059

URL: http://svn.apache.org/viewvc?rev=1299059&view=rev
Log:
Property paths: support for + and *, {+} and {*}
Complete syntax support for experimental SHORTEST

Added:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore1.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMoreN.java
      - copied, changed from r1291428, incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_Shortest.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore1.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMoreN.java
      - copied, changed from r1291428, incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorBase.java
Removed:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval_ARQ.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/eval/PathEval_OLD.java
Modified:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQNotImplemented.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/RegexXerces.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathBase.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathCompiler.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathFactory.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitor.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorByType.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathWriter.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
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterPath.java
    incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath.java
    incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath2.java

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQNotImplemented.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQNotImplemented.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQNotImplemented.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/ARQNotImplemented.java Fri Mar  9 21:33:50 2012
@@ -28,4 +28,12 @@ public class ARQNotImplemented extends Q
     public ARQNotImplemented() { super() ; }
     public ARQNotImplemented (String msg) { super(msg) ; }
     public ARQNotImplemented (String msg, Throwable cause) { super(msg, cause) ; }
+    
+    @Override
+    public String toString()
+    {
+        if ( super.getMessage() != null ) 
+            return "Not implemented: "+super.getMessage() ;
+        return "Not implemented" ;
+    }
 }

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java Fri Mar  9 21:33:50 2012
@@ -95,20 +95,18 @@ public class TransformPathFlatternStd ex
         return new OpUnion(left, right) ;
     }
     
-    static class PathTransform implements PathVisitor
+    static class PathTransform extends PathVisitorBase
     {
         private final Node subject ;
         private final Node object ;
-        private Op result ;
-        Op getResult()
-        {
-            return result ;
-        }
+        private Op result = null ;
+        Op getResult() { return result ; }
         
         public PathTransform(Node subject, Node object)
         {
             this.subject = subject ;
             this.object = object ;
+            this.result = null ;
         }
         
         @Override
@@ -215,41 +213,6 @@ public class TransformPathFlatternStd ex
         }
         
         @Override
-        public void visit(P_Distinct pathDistinct)
-        {
-            // No change.
-            result = null ;
-        }
-        
-        @Override
-        public void visit(P_Multi pathMulti)
-        {
-            // No change.
-            result = null ;
-        }
-
-        @Override
-        public void visit(P_ZeroOrOne path)
-        {
-            // No change.
-            result = null ;
-        }
-        
-        @Override
-        public void visit(P_ZeroOrMore path)
-        {
-            // No change.
-            result = null ;
-        }
-        
-        @Override
-        public void visit(P_OneOrMore path)
-        {
-            // No change.
-            result = null ;
-        }
-        
-        @Override
         public void visit(P_Alt pathAlt)
         {
             Op op1 = transformPath(null, subject, pathAlt.getLeft() , object) ;

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/RegexXerces.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/RegexXerces.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/RegexXerces.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/RegexXerces.java Fri Mar  9 21:33:50 2012
@@ -41,7 +41,7 @@ public class RegexXerces implements Rege
         // Input : only  m s i x
         // Check/modify flags.
         // Always "u", never patternStr
-        //x: Rmove whitespace characters (#x9, #xA, #xD and #x20) unless in [] classes
+        //x: Remove whitespace characters (#x9, #xA, #xD and #x20) unless in [] classes
         try { return new RegularExpression(patternStr, flags) ; }
         catch (ParseException pEx)
         { throw new ExprException("Regex: Pattern exception: "+pEx) ; }

Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore1.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore1.java?rev=1299059&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore1.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore1.java Fri Mar  9 21:33:50 2012
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.path;
+
+import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
+
+public class P_OneOrMore1 extends P_Path1
+{
+    public P_OneOrMore1(Path path)
+    {
+        super(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)  ;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return hashOneOrMore1 ^ getSubPath().hashCode() ;
+    }
+
+    @Override
+    public void visit(PathVisitor visitor)
+    { visitor.visit(this) ; }
+}

Copied: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMoreN.java (from r1291428, incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMoreN.java?p2=incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMoreN.java&p1=incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore.java&r1=1291428&r2=1299059&rev=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMore.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_OneOrMoreN.java Fri Mar  9 21:33:50 2012
@@ -20,9 +20,9 @@ package com.hp.hpl.jena.sparql.path;
 
 import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
 
-public class P_OneOrMore extends P_Path1
+public class P_OneOrMoreN extends P_Path1
 {
-    public P_OneOrMore(Path path)
+    public P_OneOrMoreN(Path path)
     {
         super(path) ;
     }
@@ -30,15 +30,15 @@ public class P_OneOrMore extends P_Path1
     @Override
     public boolean equalTo(Path path2, NodeIsomorphismMap isoMap)
     {
-        if ( ! ( path2 instanceof P_OneOrMore ) ) return false ;
-        P_OneOrMore other = (P_OneOrMore)path2 ;
+        if ( ! ( path2 instanceof P_OneOrMoreN ) ) return false ;
+        P_OneOrMoreN other = (P_OneOrMoreN)path2 ;
         return getSubPath().equalTo(other.getSubPath(), isoMap)  ;
     }
 
     @Override
     public int hashCode()
     {
-        return hashOneOrMore ^ getSubPath().hashCode() ;
+        return hashOneOrMoreN ^ getSubPath().hashCode() ;
     }
 
     @Override

Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_Shortest.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_Shortest.java?rev=1299059&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_Shortest.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_Shortest.java Fri Mar  9 21:33:50 2012
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.path;
+
+import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
+
+public class P_Shortest extends P_Path1
+{
+    public P_Shortest(Path p)
+    {
+         super(p) ;
+    }
+    
+    @Override
+    public void visit(PathVisitor visitor)
+    { visitor.visit(this) ; }
+    
+    @Override
+    public boolean equalTo(Path path2, NodeIsomorphismMap isoMap)
+    {
+        if ( ! ( path2 instanceof P_Shortest ) ) return false ;
+        P_Shortest other = (P_Shortest)path2 ;
+        return getSubPath().equalTo(other.getSubPath(), isoMap)  ;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return getSubPath().hashCode() ^ hashShortest ;
+    }
+
+   
+
+}

Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore1.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore1.java?rev=1299059&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore1.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore1.java Fri Mar  9 21:33:50 2012
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.path;
+
+import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
+
+public class P_ZeroOrMore1 extends P_Path1
+{
+    public P_ZeroOrMore1(Path path)
+    {
+        super(path) ;
+    }
+
+    @Override
+    public boolean equalTo(Path path2, NodeIsomorphismMap isoMap)
+    {
+        if ( ! ( path2 instanceof P_ZeroOrMore1 ) ) return false ;
+        P_ZeroOrMore1 other = (P_ZeroOrMore1)path2 ;
+        return getSubPath().equalTo(other.getSubPath(), isoMap)  ;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return hashZeroOrMoreN ^ getSubPath().hashCode() ;
+    }
+
+    @Override
+    public void visit(PathVisitor visitor)
+    { visitor.visit(this) ; }
+}

Copied: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMoreN.java (from r1291428, incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMoreN.java?p2=incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMoreN.java&p1=incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore.java&r1=1291428&r2=1299059&rev=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMore.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/P_ZeroOrMoreN.java Fri Mar  9 21:33:50 2012
@@ -20,9 +20,9 @@ package com.hp.hpl.jena.sparql.path;
 
 import com.hp.hpl.jena.sparql.util.NodeIsomorphismMap ;
 
-public class P_ZeroOrMore extends P_Path1
+public class P_ZeroOrMoreN extends P_Path1
 {
-    public P_ZeroOrMore(Path path)
+    public P_ZeroOrMoreN(Path path)
     {
         super(path) ;
     }
@@ -30,15 +30,15 @@ public class P_ZeroOrMore extends P_Path
     @Override
     public boolean equalTo(Path path2, NodeIsomorphismMap isoMap)
     {
-        if ( ! ( path2 instanceof P_ZeroOrMore ) ) return false ;
-        P_ZeroOrMore other = (P_ZeroOrMore)path2 ;
+        if ( ! ( path2 instanceof P_ZeroOrMoreN ) ) return false ;
+        P_ZeroOrMoreN other = (P_ZeroOrMoreN)path2 ;
         return getSubPath().equalTo(other.getSubPath(), isoMap)  ;
     }
 
     @Override
     public int hashCode()
     {
-        return hashZeroOrMore ^ getSubPath().hashCode() ;
+        return hashZeroOrMoreN ^ getSubPath().hashCode() ;
     }
 
     @Override

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathBase.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathBase.java Fri Mar  9 21:33:50 2012
@@ -30,12 +30,17 @@ public abstract class PathBase implement
     protected static final int hashNegPropClass = 0x194 ;
     protected static final int hashLink         = 0x195 ;
     protected static final int hashRevLink      = 0x196 ;
-    protected static final int hashZeroOrMore   = 0x197 ;
-    protected static final int hashOneOrMore    = 0x198 ;
-    protected static final int hashZeroOrOne    = 0x199 ;
-    protected static final int hashFixedLength  = 0x200 ;
-    protected static final int hashDistinct     = 0x201 ;
-    protected static final int hashMulti        = 0x202 ;
+    
+    protected static final int hashZeroOrMore1  = 0x197 ;
+    protected static final int hashOneOrMore1   = 0x198 ;
+    protected static final int hashZeroOrMoreN  = 0x199 ;
+    protected static final int hashOneOrMoreN   = 0x200 ;
+    
+    protected static final int hashZeroOrOne    = 0x201 ;
+    protected static final int hashFixedLength  = 0x202 ;
+    protected static final int hashDistinct     = 0x203 ;
+    protected static final int hashMulti        = 0x204 ;
+    protected static final int hashShortest     = 0x205 ;
 
     
     @Override

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathCompiler.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathCompiler.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathCompiler.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathCompiler.java Fri Mar  9 21:33:50 2012
@@ -160,7 +160,7 @@ public class PathCompiler
                 Path p2 ;
                 
                 if ( pMod.getMax() < 0 )
-                    p2 = PathFactory.pathZeroOrMore(pMod.getSubPath()) ;
+                    p2 = PathFactory.pathZeroOrMoreN(pMod.getSubPath()) ;
                 else
                 {
                     long len2 = pMod.getMax()-pMod.getMin() ;

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathFactory.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathFactory.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathFactory.java Fri Mar  9 21:33:50 2012
@@ -37,15 +37,12 @@ public class PathFactory
     public static Path pathSeq(Path path1, Path path2)  { return new P_Seq(path1, path2) ; }
     
     public static Path pathZeroOrOne(Path path)         { return new P_ZeroOrOne(path) ; }
-    public static Path pathZeroOrMore(Path path)        { return new P_ZeroOrMore(path) ; }
-    public static Path pathOneOrMore(Path path)         { return new P_OneOrMore(path) ; }
+
+    public static Path pathZeroOrMore1(Path path)        { return new P_ZeroOrMore1(path) ; }
+    public static Path pathOneOrMore1(Path path)         { return new P_OneOrMore1(path) ; }
+    public static Path pathZeroOrMoreN(Path path)        { return new P_ZeroOrMoreN(path) ; }
+    public static Path pathOneOrMoreN(Path path)         { return new P_OneOrMoreN(path) ; }
     
     // UNFINISHED
-    public static Path pathZeroOrMore1(Path path)        { return new P_ZeroOrMore(path) ; }
-    public static Path pathOneOrMore1(Path path)         { return new P_OneOrMore(path) ; }
-    public static Path pathZeroOrMoreN(Path path)        { return new P_ZeroOrMore(path) ; }
-    public static Path pathOneOrMoreN(Path path)         { return new P_OneOrMore(path) ; }
-    
-    // VERY UNFINISHED
     public static Path pathShortest(Path path)           { throw new ARQNotImplemented("Not implemented: SHORTEST") ; }
 }

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitor.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitor.java Fri Mar  9 21:33:50 2012
@@ -30,9 +30,14 @@ public interface PathVisitor
     public void visit(P_FixedLength pFixedLength) ;
     public void visit(P_Distinct pathDistinct) ;
     public void visit(P_Multi pathMulti) ;
+    public void visit(P_Shortest pathShortest) ;
     public void visit(P_ZeroOrOne path) ;
-    public void visit(P_ZeroOrMore path) ;
-    public void visit(P_OneOrMore path) ;
+    
+    public void visit(P_ZeroOrMore1 path) ;
+    public void visit(P_ZeroOrMoreN path) ;
+    
+    public void visit(P_OneOrMore1 path) ;
+    public void visit(P_OneOrMoreN path) ;
 
     public void visit(P_Alt pathAlt) ;
     public void visit(P_Seq pathSeq) ;

Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorBase.java?rev=1299059&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorBase.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorBase.java Fri Mar  9 21:33:50 2012
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.path;
+
+public class PathVisitorBase implements PathVisitor
+{
+    @Override public void visit(P_Link pathNode)              {}
+    @Override public void visit(P_ReverseLink pathNode)       {}
+    
+    @Override public void visit(P_NegPropSet pathNotOneOf)    {}
+
+    @Override public void visit(P_Inverse inversePath)        {}
+    @Override public void visit(P_Mod pathMod)                {}
+    @Override public void visit(P_FixedLength pFixedLength)   {}
+    @Override public void visit(P_Distinct pathDistinct)      {}
+    @Override public void visit(P_Multi pathMulti)            {}
+    @Override public void visit(P_Shortest pathShortest)      {}
+    @Override public void visit(P_ZeroOrOne path)             {}
+    
+    @Override public void visit(P_ZeroOrMore1 path)           {}
+    @Override public void visit(P_ZeroOrMoreN path)           {}
+    
+    @Override public void visit(P_OneOrMore1 path)            {}
+    @Override public void visit(P_OneOrMoreN path)            {}
+
+    @Override public void visit(P_Alt pathAlt)                {}
+    @Override public void visit(P_Seq pathSeq)                {}
+}

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorByType.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorByType.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorByType.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathVisitorByType.java Fri Mar  9 21:33:50 2012
@@ -40,7 +40,16 @@ public abstract class PathVisitorByType 
 
     @Override
     public void visit(P_Mod pathMod)                { visit1(pathMod) ; }
-
+    
+    @Override
+    public void visit(P_Distinct path)              { visit1(path) ; }
+    
+    @Override
+    public void visit(P_Multi pathMod)              { visit1(pathMod) ; }
+    
+    @Override
+    public void visit(P_Shortest pathMod)           { visit1(pathMod) ; }
+    
     @Override
     public void visit(P_FixedLength pFixedLength)   { visit1(pFixedLength) ; }
 
@@ -48,10 +57,16 @@ public abstract class PathVisitorByType 
     public void visit(P_ZeroOrOne path)             { visit1(path) ; }
 
     @Override
-    public void visit(P_ZeroOrMore path)            { visit1(path) ; }
+    public void visit(P_ZeroOrMore1 path)           { visit1(path) ; }
+
+    @Override
+    public void visit(P_ZeroOrMoreN path)           { visit1(path) ; }
+
+    @Override
+    public void visit(P_OneOrMore1 path)            { visit1(path) ; }
 
     @Override
-    public void visit(P_OneOrMore path)             { visit1(path) ; }
+    public void visit(P_OneOrMoreN path)            { visit1(path) ; }
 
     @Override
     public void visit(P_Alt pathAlt)                { visit2(pathAlt) ; }

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathWriter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathWriter.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathWriter.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/path/PathWriter.java Fri Mar  9 21:33:50 2012
@@ -258,17 +258,33 @@ public class PathWriter
         }
 
         @Override
+        public void visit(P_Shortest path)
+        {
+            out.print("SHORTEST(") ;
+            path.getSubPath().visit(this) ;
+            out.print(")") ;
+        }
+
+        @Override
         public void visit(P_ZeroOrOne path)
         { printPathMod("?", path.getSubPath()) ; }
 
         @Override
-        public void visit(P_ZeroOrMore path)
+        public void visit(P_ZeroOrMore1 path)
         { printPathMod("*", path.getSubPath()) ; }
 
         @Override
-        public void visit(P_OneOrMore path)
+        public void visit(P_ZeroOrMoreN path)
+        { printPathMod("{*}", path.getSubPath()) ; }
+
+        @Override
+        public void visit(P_OneOrMore1 path)
         { printPathMod("+", path.getSubPath()) ; }
 
+        @Override
+        public void visit(P_OneOrMoreN path)
+        { printPathMod("{+}", path.getSubPath()) ; }
+
         private void printPathMod(String mod, Path path)
         {
             boolean doParens = ( needParens || alwaysInnerParens ) ;

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=1299059&r1=1299058&r2=1299059&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 Fri Mar  9 21:33:50 2012
@@ -23,13 +23,11 @@ import java.util.Iterator ;
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.path.Path ;
-import com.hp.hpl.jena.sparql.path.PathFactory ;
 
 /** Path evaluation - public interface */
 
 public class PathEval
 {
-
     /** Evaluate a path */ 
     static public Iterator<Node> eval(Graph graph, Node node, Path path)
     {
@@ -39,8 +37,7 @@ public class PathEval
     /** Evaluate a path : unique results */ 
     static public Iterator<Node> eval1(Graph graph, Node node, Path path)
     {
-        path = PathFactory.pathDistinct(path) ;
-        return PathEvaluator.eval(graph, node, path, new PathEngineN(graph, true)) ;
+        return PathEvaluator.eval(graph, node, path, new PathEngine1(graph, true)) ;
     }
 
     /** Evaluate a path */ 
@@ -52,7 +49,6 @@ public class PathEval
     /** Evaluate a path : unique results */ 
     static public Iterator<Node> evalReverse1(Graph graph, Node node, Path path)
     {
-        path = PathFactory.pathDistinct(path) ;
-        return PathEvaluator.eval(graph, node, path, new PathEngineN(graph, false)) ;
+        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=1299059&r1=1299058&r2=1299059&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 Fri Mar  9 21:33:50 2012
@@ -28,21 +28,9 @@ import org.openjena.atlas.iterator.Iter 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
-import com.hp.hpl.jena.sparql.path.P_Alt ;
-import com.hp.hpl.jena.sparql.path.P_Distinct ;
-import com.hp.hpl.jena.sparql.path.P_FixedLength ;
-import com.hp.hpl.jena.sparql.path.P_Inverse ;
-import com.hp.hpl.jena.sparql.path.P_Link ;
-import com.hp.hpl.jena.sparql.path.P_Mod ;
-import com.hp.hpl.jena.sparql.path.P_Multi ;
-import com.hp.hpl.jena.sparql.path.P_NegPropSet ;
-import com.hp.hpl.jena.sparql.path.P_OneOrMore ;
-import com.hp.hpl.jena.sparql.path.P_ReverseLink ;
-import com.hp.hpl.jena.sparql.path.P_Seq ;
-import com.hp.hpl.jena.sparql.path.P_ZeroOrMore ;
-import com.hp.hpl.jena.sparql.path.P_ZeroOrOne ;
-import com.hp.hpl.jena.sparql.path.Path ;
-import com.hp.hpl.jena.sparql.path.PathVisitor ;
+import com.hp.hpl.jena.sparql.ARQNotImplemented ;
+import com.hp.hpl.jena.sparql.path.* ;
+import com.hp.hpl.jena.sparql.sse.writers.WriterPath ;
 
 final class PathEvaluator implements PathVisitor
 {
@@ -165,17 +153,41 @@ final class PathEvaluator implements Pat
     }
     
     @Override
-    public void visit(P_ZeroOrMore path)
+    public void visit(P_ZeroOrMore1 path)
     {
+        // Regardless of engine, do distinct. 
+        PathEngine engine2 = engine ;
+        if ( engine instanceof PathEngineN )
+            engine = new PathEngine1(graph, engine.direction()) ;
         engine.doZeroOrMore(path.getSubPath(), node, output) ;
+        engine = engine2 ;
     }
     
     @Override
-    public void visit(P_OneOrMore path)
+    public void visit(P_ZeroOrMoreN path)
     {
+        // Do as per engine.
+        engine.doZeroOrMore(path.getSubPath(), node, output) ;
+    }
+    
+
+    @Override
+    public void visit(P_OneOrMore1 path)
+    {
+        // Regardless of engine, do distinct. 
+        PathEngine engine2 = engine ;
+        if ( engine instanceof PathEngineN )
+            engine = new PathEngine1(graph, engine.direction()) ;
         engine.doOneOrMore(path.getSubPath(), node, output) ;
+        engine = engine2 ;
     }
     
+    @Override
+    public void visit(P_OneOrMoreN path)
+    {
+        // Do as per engine.
+        engine.doOneOrMore(path.getSubPath(), node, output) ;
+    }
     
     
 //    protected abstract void doZero(Path pathStep, Node node, Collection<Node> output) ;
@@ -191,9 +203,15 @@ final class PathEvaluator implements Pat
     @Override
     public void visit(P_Distinct pathDistinct)
     {
+        doDistinct(pathDistinct.getSubPath()) ;
+    }
+    
+    protected void doDistinct(Path path)
+    {
         PathEngine engine2 = engine ;
-        engine = new PathEngine1(graph, engine.direction()) ;
-        engine.eval(graph, pathDistinct.getSubPath(), node, output) ;
+        if ( engine instanceof PathEngineN )
+            engine = new PathEngine1(graph, engine.direction()) ;
+        engine.eval(graph, path, node, output) ;
         engine = engine2 ;
     }
 
@@ -201,12 +219,19 @@ final class PathEvaluator implements Pat
     public void visit(P_Multi pathMulti)
     {
         PathEngine engine2 = engine ;
-        engine = new PathEngineN(graph, engine.direction() ) ;
+        if ( engine instanceof PathEngine1 )
+            engine = new PathEngineN(graph, engine.direction()) ;
         engine.eval(graph, pathMulti.getSubPath(), node, output) ;
         engine = engine2 ;
     }
 
     @Override
+    public void visit(P_Shortest path)
+    {
+        throw new ARQNotImplemented(WriterPath.asString(path)) ;
+    }
+
+    @Override
     public void visit(P_Seq pathSeq)
     {
         engine.doSeq(pathSeq.getLeft(), pathSeq.getRight(), node, output) ;

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java Fri Mar  9 21:33:50 2012
@@ -91,12 +91,15 @@ public class Tags
     public static final String tagPathAlt       = "alt" ;
     public static final String tagPathMod       = "mod" ;
     
-    public static final String tagPathZeroOrMore    = "path*" ;
-    public static final String tagPathOneOrMore     = "path+" ;
+    public static final String tagPathZeroOrMore1   = "path*" ;
+    public static final String tagPathZeroOrMoreN   = "pathN*" ;
+    public static final String tagPathOneOrMore1    = "path+" ;
+    public static final String tagPathOneOrMoreN    = "pathN+" ;
     public static final String tagPathZeroOrOne     = "path?" ;
     public static final String tagPathFixedLength   = "pathN" ;
     public static final String tagPathDistinct      = "distinct" ;
     public static final String tagPathMulti         = "multi" ;
+    public static final String tagPathShortest      = "shortest" ;
     
     public static final String tagPathReverse       = "reverse" ;
     public static final String tagPathRev           = "rev" ;

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java Fri Mar  9 21:33:50 2012
@@ -67,9 +67,12 @@ public class BuilderPath
         dispatch.put(Tags.tagPathFixedLength,   buildFixedLength) ;
         dispatch.put(Tags.tagPathDistinct,      buildDistinct) ;
         dispatch.put(Tags.tagPathMulti,         buildMulti) ;
-        dispatch.put(Tags.tagPathZeroOrMore,    buildZeroOrMore) ;
+        dispatch.put(Tags.tagPathShortest,      buildShortest) ;
         dispatch.put(Tags.tagPathZeroOrOne,     buildZeroOrOne) ;
-        dispatch.put(Tags.tagPathOneOrMore,     buildOneOrMore) ;
+        dispatch.put(Tags.tagPathZeroOrMore1,   buildZeroOrMore1) ;
+        dispatch.put(Tags.tagPathZeroOrMoreN,   buildZeroOrMoreN) ;
+        dispatch.put(Tags.tagPathOneOrMore1,    buildOneOrMore1) ;
+        dispatch.put(Tags.tagPathOneOrMoreN,    buildOneOrMoreN) ;
         
         dispatch.put(Tags.tagPathReverse,  buildReverse) ;
         dispatch.put(Tags.tagPathRev,      buildRev) ;
@@ -234,17 +237,40 @@ public class BuilderPath
         }
     } ;
 
-    final protected Build buildZeroOrMore = new Build()
+    final protected Build buildShortest = new Build()
     {
         @Override
         public Path make(ItemList list)
         {
-            BuilderLib.checkLength(2, 2, list, "path ZeroOrMore: wanted 1 argument") ;
+            BuilderLib.checkLength(2, 2, list, "path shortest : wanted 1 argument") ;
             Path path  = build(list, 1) ;
-            return new P_ZeroOrMore(path) ;
+            return new P_Shortest(path) ;
+        }
+    } ;
+
+    final protected Build buildZeroOrMore1 = new Build()
+    {
+        @Override
+        public Path make(ItemList list)
+        {
+            BuilderLib.checkLength(2, 2, list, "path ZeroOrMore1: wanted 1 argument") ;
+            Path path  = build(list, 1) ;
+            return new P_ZeroOrMore1(path) ;
+        }
+    } ;
+    
+    final protected Build buildZeroOrMoreN = new Build()
+    {
+        @Override
+        public Path make(ItemList list)
+        {
+            BuilderLib.checkLength(2, 2, list, "path ZeroOrMoreN: wanted 1 argument") ;
+            Path path  = build(list, 1) ;
+            return new P_ZeroOrMoreN(path) ;
         }
     } ;
     
+
     final protected Build buildZeroOrOne = new Build()
     {
         @Override
@@ -256,14 +282,25 @@ public class BuilderPath
         }
     } ;
     
-    final protected Build buildOneOrMore = new Build()
+    final protected Build buildOneOrMore1 = new Build()
+    {
+        @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) ;
+        }
+    } ;
+    
+    final protected Build buildOneOrMoreN = new Build()
     {
         @Override
         public Path make(ItemList list)
         {
             BuilderLib.checkLength(2, 2, list, "path OneOrMore: wanted 1 argument") ;
             Path path  = build(list, 1) ;
-            return new P_OneOrMore(path) ;
+            return new P_OneOrMoreN(path) ;
         }
     } ;
     

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterPath.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterPath.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterPath.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/writers/WriterPath.java Fri Mar  9 21:33:50 2012
@@ -231,21 +231,39 @@ public class WriterPath
         }
 
         @Override
+        public void visit(P_Shortest path)
+        {
+            writePath(Tags.tagPathShortest, path.getSubPath()) ;
+        }
+
+        @Override
         public void visit(P_ZeroOrOne path)
         { 
             writePath(Tags.tagPathZeroOrOne, path.getSubPath()) ;
         }
 
         @Override
-        public void visit(P_ZeroOrMore path)
+        public void visit(P_ZeroOrMore1 path)
+        { 
+            writePath(Tags.tagPathZeroOrMore1, path.getSubPath()) ;
+        }
+
+        @Override
+        public void visit(P_ZeroOrMoreN path)
         { 
-            writePath(Tags.tagPathZeroOrMore, path.getSubPath()) ;
+            writePath(Tags.tagPathZeroOrMoreN, path.getSubPath()) ;
         }
 
         @Override
-        public void visit(P_OneOrMore path)
+        public void visit(P_OneOrMore1 path)
+        { 
+            writePath(Tags.tagPathOneOrMore1, path.getSubPath()) ;
+        }
+        
+        @Override
+        public void visit(P_OneOrMoreN path)
         { 
-            writePath(Tags.tagPathOneOrMore, path.getSubPath()) ;
+            writePath(Tags.tagPathOneOrMoreN, path.getSubPath()) ;
         }
         
         private void writeOneLiner(Path path)

Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath.java Fri Mar  9 21:33:50 2012
@@ -206,9 +206,10 @@ public class TestPath
 
     @Test public void path_30()   { test(graph1, n1,   ":p*",       n1,n2,n3,n4) ; }
     @Test public void path_31()   { test(graph2, n1,   ":p*",       n1,n2,n3) ; }
-    @Test public void path_32()   { test(graph3, n1,   ":p*",       n1,n2,n3,n4,n4) ; }
-    @Test public void path_33()   { test(graph3, n1,   "distinct(:p*)",       n1,n2,n3,n4) ; }
-    @Test public void path_34()   { test(graph3, n1,   "distinct(:p+)",       n2,n3,n4) ; }
+    @Test public void path_32()   { test(graph3, n1,   ":p{*}",       n1,n2,n3,n4,n4) ; }
+    @Test public void path_33()   { test(graph3, n1,   ":p*",       n1,n2,n3,n4) ; }
+    @Test public void path_34()   { test(graph3, n1,   ":p+",       n2,n3,n4) ; }
+    @Test public void path_35()   { test(graph3, n1,   ":p{+}",       n2,n3,n4,n4) ; }
 
     // ----
     private static void test(Graph graph, Node start, String string, Node... expectedNodes)

Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath2.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath2.java?rev=1299059&r1=1299058&r2=1299059&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath2.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/path/TestPath2.java Fri Mar  9 21:33:50 2012
@@ -30,10 +30,7 @@ import org.openjena.atlas.lib.StrUtils ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.sparql.path.Path ;
-import com.hp.hpl.jena.sparql.path.PathFactory ;
 import com.hp.hpl.jena.sparql.path.eval.PathEval ;
-import com.hp.hpl.jena.sparql.path.eval.PathEval_OLD ;
 import com.hp.hpl.jena.sparql.sse.SSE ;
 
 public class TestPath2 extends BaseTest
@@ -88,21 +85,24 @@ public class TestPath2 extends BaseTest
 	@Test public void path_10() { test(x, "(notoneof (rev :Z))",  ":z") ; } 
 	@Test public void path_11() { test(x, "(notoneof :q (rev :p))",      ":y2", ":y1", ":a", ":y") ; } 
 	@Test public void path_12() { test(x, "(notoneof :q (rev :Z))",      ":y2", ":y1", ":a", ":y", ":z") ; } 
-	@Test public void path_13() { test(x, "(path* :p)",           ":x", ":a", ":y", ":z") ; } 
-	@Test public void path_14() { test(x, "(path+ :p)",           ":a", ":y", ":z", ":x", ":a") ; } 
-	@Test public void path_15() { test(x, "(mod 0 2 :q)",         ":x", ":y2", ":z", ":y1", ":z") ; } 
-	@Test public void path_16() { test(x, "(mod 0 1 :q)",         ":x", ":y2", ":y1") ; } 
-	@Test public void path_17() { test(x, "(mod 0 1 :r)",         ":x", ":y2", ":y1") ; } 
-	@Test public void path_18() { test(x, "(mod 0 3 :r)",         ":x", ":y2", ":z", ":a2", ":a1", ":y1", ":z", ":a2", ":a1") ; } 
-	@Test public void path_19() { test(x, "(mod 0 99 :r)",        ":x", ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
-	@Test public void path_20() { test(x, "(path+ :r)",           ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
-	@Test public void path_21() { test(x, "(mod 0 2 :q)",         ":x", ":y2", ":z", ":y1", ":z") ; } 
-	@Test public void path_22() { test(x, "(pathN 2 :p)",         ":z") ; } 
-	@Test public void path_23() { test(x, "(pathN 2 :q)",         ":z", ":z") ; } 
-	@Test public void path_24() { test(x, "(path* :p)",           ":x", ":a", ":y", ":z") ; } 
-	@Test public void path_25() { test(x, "(path+ :p)",           ":a", ":y", ":z", ":x", ":a") ; } 
-	@Test public void path_26() { test(x, "(path* :r)",           ":x", ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
-	@Test public void path_27() { test(x, "(path+ :r)",           ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
+	@Test public void path_13() { test(x, "(mod 0 2 :q)",         ":x", ":y2", ":z", ":y1", ":z") ; } 
+	@Test public void path_14() { test(x, "(mod 0 1 :q)",         ":x", ":y2", ":y1") ; } 
+	@Test public void path_15() { test(x, "(mod 0 1 :r)",         ":x", ":y2", ":y1") ; } 
+	@Test public void path_16() { test(x, "(mod 0 3 :r)",         ":x", ":y2", ":z", ":a2", ":a1", ":y1", ":z", ":a2", ":a1") ; } 
+	@Test public void path_17() { test(x, "(mod 0 99 :r)",        ":x", ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
+    @Test public void path_18() { test(x, "(mod 0 2 :q)",         ":x", ":y2", ":z", ":y1", ":z") ; } 
+	@Test public void path_19() { test(x, "(pathN 2 :p)",         ":z") ; } 
+	@Test public void path_20() { test(x, "(pathN 2 :q)",         ":z", ":z") ; } 
+    @Test public void path_21() { test(x, "(distinct(pathN 2 :q))",         ":z") ; } 
+
+	@Test public void path_30() { test(x, "(path* :p)",           ":x", ":a", ":y", ":z") ; }
+    @Test public void path_31() { test(x, "(pathN* :p)",          ":x", ":a", ":y", ":z") ; } 
+    @Test public void path_32() { test(x, "(path+ :p)",           ":a", ":y", ":z", ":x") ; } 
+    @Test public void path_33() { test(x, "(pathN+ :p)",          ":a", ":y", ":z", ":x", ":a") ; } 
+    @Test public void path_34() { test(x, "(path+ :r)",           ":y2", ":z", ":a2", ":b", ":a1", ":y1") ; } 
+    @Test public void path_35() { test(x, "(pathN+ :r)",          ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
+	@Test public void path_36() { test(x, "(path* :r)",           ":x", ":y2", ":z", ":a2", ":b", ":a1", ":y1") ; } 
+	@Test public void path_37() { test(x, "(pathN* :r)",          ":x", ":y2", ":z", ":a2", ":b", ":a1", ":b", ":y1", ":z", ":a2", ":b", ":a1", ":b") ; } 
 	
 //	static int i = 0 ;
 	
@@ -118,7 +118,6 @@ public class TestPath2 extends BaseTest
         for ( String n : results )
             expected.add(parse(n)) ;
         List<Node> expected1 = Iter.iter(expected).distinct().toList() ;
-        
 
         // Generate the tests!
 //        i++ ;
@@ -138,13 +137,6 @@ public class TestPath2 extends BaseTest
         
         assertSameArray(expected, nodes2) ;
         assertSameArray(expected1, nodes1) ;
-
-        // Check against old code.
-        List<Node> nodes3 = Iter.toList(PathEval_OLD.eval(graph, start, path)) ;
-        List<Node> nodes4 = Iter.iter(nodes3).distinct().toList() ;
-
-        assertSameArray(expected, nodes3) ;
-        assertSameArray(expected1, nodes4) ;
     }
         
 	private static void assertSameArray(List<Node> expected, List<Node> actual)