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)