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 2016/02/01 21:07:36 UTC

[1/4] jena git commit: Print with newline.

Repository: jena
Updated Branches:
  refs/heads/master 7f6e6e5e4 -> f41d74ab3


Print with newline.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/59952d65
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/59952d65
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/59952d65

Branch: refs/heads/master
Commit: 59952d6562de6ac1749a884b643f47c66407d3d0
Parents: 7f6e6e5
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Feb 1 17:47:37 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Feb 1 17:47:37 2016 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/59952d65/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java
index 5995123..cdfc731 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java
@@ -73,5 +73,5 @@ public class QueryIterPlainWrapper extends QueryIter
     
     @Override
     public void output(IndentedWriter out, SerializationContext sCxt)
-    { out.print(Lib.className(this)) ; }
+    { out.println(Lib.className(this)) ; }
 }


[2/4] jena git commit: Tidy up path code.

Posted by an...@apache.org.
Tidy up path code.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6680124c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6680124c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6680124c

Branch: refs/heads/master
Commit: 6680124c2dff0e5baf70748cde46b6404fe014c5
Parents: 59952d6
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Feb 1 17:47:48 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Feb 1 17:47:48 2016 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/path/P_OneOrMore1.java   |   1 +
 .../apache/jena/sparql/path/P_OneOrMoreN.java   |   1 +
 .../org/apache/jena/sparql/path/PathLib.java    | 148 ++++++++-----------
 3 files changed, 60 insertions(+), 90 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6680124c/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMore1.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMore1.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMore1.java
index 19425b1..242bd18 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMore1.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMore1.java
@@ -20,6 +20,7 @@ package org.apache.jena.sparql.path;
 
 import org.apache.jena.sparql.util.NodeIsomorphismMap ;
 
+/** One or more - unique results */
 public class P_OneOrMore1 extends P_Path1
 {
     public P_OneOrMore1(Path path)

http://git-wip-us.apache.org/repos/asf/jena/blob/6680124c/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMoreN.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMoreN.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMoreN.java
index d411700..a162d1c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMoreN.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/P_OneOrMoreN.java
@@ -20,6 +20,7 @@ package org.apache.jena.sparql.path;
 
 import org.apache.jena.sparql.util.NodeIsomorphismMap ;
 
+/** One or more - all results */
 public class P_OneOrMoreN extends P_Path1
 {
     public P_OneOrMoreN(Path path)

http://git-wip-us.apache.org/repos/asf/jena/blob/6680124c/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
index 465f359..63b433e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
@@ -45,80 +45,62 @@ import org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
 import org.apache.jena.sparql.engine.iterator.QueryIterYieldN ;
 import org.apache.jena.sparql.mgt.Explain ;
 import org.apache.jena.sparql.path.eval.PathEval ;
-import org.apache.jena.sparql.pfunction.PropertyFunction ;
 import org.apache.jena.sparql.pfunction.PropertyFunctionFactory ;
 import org.apache.jena.sparql.pfunction.PropertyFunctionRegistry ;
 import org.apache.jena.sparql.util.graph.GraphUtils ;
 
 public class PathLib
 {
-    /** Convert any paths of exactly one predicate to a triple pattern */ 
-    public static Op pathToTriples(PathBlock pattern)
-    {
-        BasicPattern bp = null ;
-        Op op = null ;
+    /** Convert any paths of exactly one predicate to a triple pattern */
+    public static Op pathToTriples(PathBlock pattern) {
+        BasicPattern bp = null;
+        Op op = null;
 
-        for ( TriplePath tp : pattern )
-        {
-            if ( tp.isTriple() )
-            {
+        for ( TriplePath tp : pattern ) {
+            if ( tp.isTriple() ) {
                 if ( bp == null )
-                    bp = new BasicPattern() ;
-                bp.add(tp.asTriple()) ;
-                continue ;
+                    bp = new BasicPattern();
+                bp.add(tp.asTriple());
+                continue;
             }
             // Path form.
-            op = flush(bp, op) ;
-            bp = null ;
+            op = flush(bp, op);
+            bp = null;
 
-            OpPath opPath2 = new OpPath(tp) ;
-            op = OpSequence.create(op, opPath2) ;
-            continue ;
+            OpPath opPath2 = new OpPath(tp);
+            op = OpSequence.create(op, opPath2);
+            continue;
         }
 
-        // End.  Finish off any outstanding BGP.
-        op = flush(bp, op) ;
-        return op ;
+        // End. Finish off any outstanding BGP.
+        op = flush(bp, op);
+        return op;
     }
     
-    static private Op flush(BasicPattern bp, Op op)
-    {
+    static private Op flush(BasicPattern bp, Op op) {
         if ( bp == null || bp.isEmpty() )
-            return op ;
-        
-        OpBGP opBGP = new OpBGP(bp) ;
-        op = OpSequence.create(op, opBGP) ;
-        return op ;
+            return op;
+
+        OpBGP opBGP = new OpBGP(bp);
+        op = OpSequence.create(op, opBGP);
+        return op;
     }
-    
+
     /** Install a path as a property function in the global property function registry */
     public static void install(String uri, Path path)
     { install(uri, path, PropertyFunctionRegistry.get()) ; }
 
     /** Install a path as a property function in a given registry */
-    public static void install(String uri, final Path path, PropertyFunctionRegistry registry)
-    {
-        PropertyFunctionFactory pathPropFuncFactory = new PropertyFunctionFactory()
-        {
-            @Override
-            public PropertyFunction create(String uri)
-            {
-                return new PathPropertyFunction(path) ;
-            }
-        }; 
-        
+    public static void install(String uri, final Path path, PropertyFunctionRegistry registry) {
+        PropertyFunctionFactory pathPropFuncFactory = (u) -> new PathPropertyFunction(path) ;
         registry.put(uri, pathPropFuncFactory) ;
     }
 
-    public static QueryIterator execTriplePath(Binding binding, TriplePath triplePath, ExecutionContext execCxt)
-    {
-        if ( triplePath.isTriple() )
-        {
-            // Fake it.  This happens only for API constructed situations. 
-            Path path = new P_Link(triplePath.getPredicate()) ;
-            triplePath = new TriplePath(triplePath.getSubject(),
-                                        path,
-                                        triplePath.getObject()) ;
+    public static QueryIterator execTriplePath(Binding binding, TriplePath triplePath, ExecutionContext execCxt) {
+        if ( triplePath.isTriple() ) {
+            // Fake it. This happens only for API constructed situations.
+            Path path = new P_Link(triplePath.getPredicate());
+            triplePath = new TriplePath(triplePath.getSubject(), path, triplePath.getObject());
         }
         
         return execTriplePath(binding, 
@@ -128,48 +110,39 @@ public class PathLib
                               execCxt) ;
     }
     
-    public static QueryIterator execTriplePath(Binding binding, 
-                                               Node s, Path path, Node o,
-                                               ExecutionContext execCxt)
-    {
+    public static QueryIterator execTriplePath(Binding binding, Node s, Path path, Node o, ExecutionContext execCxt) {
         Explain.explain(s, path, o, execCxt.getContext()) ;
-        
         s = Var.lookup(binding, s) ;
         o = Var.lookup(binding, o) ;
         Iterator<Node> iter = null ;
         Node endNode = null ;
         Graph graph = execCxt.getActiveGraph() ;
-        
-        if ( Var.isVar(s) && Var.isVar(o) )
-        {
+
+        // Both variables.
+        if ( Var.isVar(s) && Var.isVar(o) ) {
             if ( s.equals(o) )
-                return ungroundedPathSameVar(binding, graph, Var.alloc(s), path, execCxt) ;
+                return execUngroundedPathSameVar(binding, graph, Var.alloc(s), path, execCxt);
             else
-                return ungroundedPath(binding, graph, Var.alloc(s), path, Var.alloc(o), execCxt) ;
+                return execUngroundedPath(binding, graph, Var.alloc(s), path, Var.alloc(o), execCxt);
         }
 
-        if ( ! Var.isVar(s) && ! Var.isVar(o) )
-            return groundedPath(binding, graph, s, path, o, execCxt) ;
-        
-        if ( Var.isVar(s) )
-        {
+        // Both constants.
+        if ( !Var.isVar(s) && !Var.isVar(o) )
+            return evalGroundedPath(binding, graph, s, path, o, execCxt);
+
+        // One variable, one constant
+        if ( Var.isVar(s) ) {
             // Var subject, concrete object - do backwards.
-            iter = PathEval.evalReverse(graph, o, path, execCxt.getContext()) ;
-            endNode = s ;
-        } 
-        else
-        {
-            iter = PathEval.eval(graph, s, path, execCxt.getContext()) ;
-            endNode = o ;
+            iter = PathEval.evalReverse(graph, o, path, execCxt.getContext());
+            endNode = s;
+        } else {
+            iter = PathEval.eval(graph, s, path, execCxt.getContext());
+            endNode = o;
         }
-        return _execTriplePath(binding, iter, endNode, execCxt) ;
+        return evalGroundedOneEnd(binding, iter, endNode, execCxt);
     }
     
-    private static QueryIterator _execTriplePath(Binding binding, 
-                                                 Iterator<Node> iter,
-                                                 Node endNode,
-                                                 ExecutionContext execCxt)
-    {
+    private static QueryIterator evalGroundedOneEnd(Binding binding, Iterator<Node> iter, Node endNode, ExecutionContext execCxt) {
         List<Binding> results = new ArrayList<>() ;
         
         if (! Var.isVar(endNode))
@@ -177,8 +150,7 @@ public class PathLib
         
         Var var = Var.alloc(endNode) ;
         // Assign.
-        for (; iter.hasNext();)
-        {
+        for (; iter.hasNext();) {
             Node n = iter.next() ;
             results.add(BindingFactory.binding(binding, var, n)) ;
         }
@@ -186,9 +158,9 @@ public class PathLib
     }
 
     // Subject and object are nodes.
-    private static QueryIterator groundedPath(Binding binding, Graph graph, Node subject, Path path, Node object,
-                                              ExecutionContext execCxt)
-    {
+    private static QueryIterator evalGroundedPath(Binding binding, 
+                                                  Graph graph, Node subject, Path path, Node object,
+                                                  ExecutionContext execCxt) {
         Iterator<Node> iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ;
         // Now count the number of matches.
         
@@ -204,9 +176,7 @@ public class PathLib
     }
 
     // Brute force evaluation of a TriplePath where neither subject nor object are bound 
-    private static QueryIterator ungroundedPath(Binding binding, Graph graph, Var sVar, Path path, Var oVar,
-                                                ExecutionContext execCxt)
-    {
+    private static QueryIterator execUngroundedPath(Binding binding, Graph graph, Var sVar, Path path, Var oVar, ExecutionContext execCxt) {
         Iterator<Node> iter = GraphUtils.allNodes(graph) ;
         QueryIterConcat qIterCat = new QueryIterConcat(execCxt) ;
         
@@ -215,14 +185,13 @@ public class PathLib
             Node n = iter.next() ;
             Binding b2 = BindingFactory.binding(binding, sVar, n) ;
             Iterator<Node> pathIter = PathEval.eval(graph, n, path, execCxt.getContext()) ;
-            QueryIterator qIter = _execTriplePath(b2, pathIter, oVar, execCxt) ;
+            QueryIterator qIter = evalGroundedOneEnd(b2, pathIter, oVar, execCxt) ;
             qIterCat.add(qIter) ;
         }
         return qIterCat ;
     }
     
-    private static QueryIterator ungroundedPathSameVar(Binding binding, Graph graph, Var var, Path path, ExecutionContext execCxt)
-    {
+    private static QueryIterator execUngroundedPathSameVar(Binding binding, Graph graph, Var var, Path path, ExecutionContext execCxt) {
         // Try each end, grounded  
         // Slightly more efficient would be to add a per-engine to do this.
         Iterator<Node> iter = GraphUtils.allNodes(graph) ;
@@ -242,8 +211,7 @@ public class PathLib
         return qIterCat ; 
     }
     
-    private static int existsPath(Graph graph, Node subject, Path path, final Node object, ExecutionContext execCxt)
-    {
+    private static int existsPath(Graph graph, Node subject, Path path, final Node object, ExecutionContext execCxt) {
         if ( ! subject.isConcrete() || !object.isConcrete() )
             throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;
         Iterator<Node> iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ;


[3/4] jena git commit: Change name of loggers to agree with documentation.

Posted by an...@apache.org.
Change name of loggers to agree with documentation.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/7734fe3e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/7734fe3e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/7734fe3e

Branch: refs/heads/master
Commit: 7734fe3e79a015b5534f7bb408221201bccb11b3
Parents: 6680124
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Feb 1 17:50:21 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Feb 1 17:50:21 2016 +0000

----------------------------------------------------------------------
 jena-arq/src/main/java/org/apache/jena/query/ARQ.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/7734fe3e/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
index 646e824..98bdc77 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
@@ -61,13 +61,13 @@ public class ARQ
     // 2/ stageGenerator constant must be set before the call to ARQ.init.
 
     /** Name of the execution logger */
-    public static final String logExecName = "com.hp.hpl.jena.arq.exec" ;
+    public static final String logExecName = "org.apache.jena.arq.exec" ;
     
     /** Name of the information logger */
-    public static final String logInfoName = "com.hp.hpl.jena.arq.info" ;
+    public static final String logInfoName = "org.apache.jena.arq.info" ;
     
     /** Name of the logger for remote HTTP requests */
-    public static final String logHttpRequestName = "com.hp.hpl.jena.arq.service" ;
+    public static final String logHttpRequestName = "org.apache.jena.arq.service" ;
     
     private static final Logger logExec = LoggerFactory.getLogger(logExecName) ;
     private static final Logger logInfo = LoggerFactory.getLogger(logInfoName) ;
@@ -93,7 +93,7 @@ public class ARQ
     /** Get the currently global execution logging setting */  
     public static Explain.InfoLevel getExecutionLogging() { return (Explain.InfoLevel)ARQ.getContext().get(ARQ.symLogExec) ; }
     
-    /** Set execution logging - logging is to logger "com.hp.hpl.jena.arq.exec" at level INFO.
+    /** Set execution logging - logging is to logger "org.apache.jena.arq.exec" at level INFO.
      *  An appropriate logging configuration is also required.
      */
     public static void setExecutionLogging(Explain.InfoLevel infoLevel)


[4/4] jena git commit: JENA-1127: Seed the start of :predicate+ better.

Posted by an...@apache.org.
JENA-1127: Seed the start of :predicate+ better.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f41d74ab
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f41d74ab
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f41d74ab

Branch: refs/heads/master
Commit: f41d74ab342332ab79511765cfcad2547bc13db7
Parents: 7734fe3
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Feb 1 18:56:25 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Feb 1 20:07:15 2016 +0000

----------------------------------------------------------------------
 .../org/apache/jena/sparql/path/PathLib.java    | 38 +++++++++++++++++---
 .../apache/jena/sparql/path/eval/PathEval.java  |  4 +--
 2 files changed, 35 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/f41d74ab/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
index 63b433e..a6e8e6d 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
@@ -27,6 +27,7 @@ import java.util.function.Predicate;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.Triple ;
 import org.apache.jena.sparql.ARQInternalErrorException ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.op.OpBGP ;
@@ -165,8 +166,7 @@ public class PathLib
         // Now count the number of matches.
         
         int count = 0 ;
-        for ( ; iter.hasNext() ; )
-        {
+        for ( ; iter.hasNext() ; ) {
             Node n = iter.next() ;
             if ( n.sameValueAs(object) )
                 count++ ;
@@ -177,7 +177,8 @@ public class PathLib
 
     // Brute force evaluation of a TriplePath where neither subject nor object are bound 
     private static QueryIterator execUngroundedPath(Binding binding, Graph graph, Var sVar, Path path, Var oVar, ExecutionContext execCxt) {
-        Iterator<Node> iter = GraphUtils.allNodes(graph) ;
+        // Starting points.
+        Iterator<Node> iter = determineUngroundedStartingSet(graph, path, execCxt) ;
         QueryIterConcat qIterCat = new QueryIterConcat(execCxt) ;
         
         for ( ; iter.hasNext() ; )
@@ -192,9 +193,9 @@ public class PathLib
     }
     
     private static QueryIterator execUngroundedPathSameVar(Binding binding, Graph graph, Var var, Path path, ExecutionContext execCxt) {
-        // Try each end, grounded  
+        // Try each end, ungrounded.
         // Slightly more efficient would be to add a per-engine to do this.
-        Iterator<Node> iter = GraphUtils.allNodes(graph) ;
+        Iterator<Node> iter = determineUngroundedStartingSet(graph, path, execCxt) ;
         QueryIterConcat qIterCat = new QueryIterConcat(execCxt) ;
         
         for ( ; iter.hasNext() ; )
@@ -211,6 +212,33 @@ public class PathLib
         return qIterCat ; 
     }
     
+    private static Iterator<Node> determineUngroundedStartingSet(Graph graph, Path path, ExecutionContext execCxt) {
+        // Find a better set of seed values than "everything"
+        //    (:p+) and (^:p)+
+        //  :p* need everything because it is always the case that "<x> :p* <x>" 
+        if ( path instanceof P_OneOrMore1 || path instanceof P_OneOrMoreN ) {
+            Path subPath = ((P_Path1)path).getSubPath() ;
+            if ( subPath instanceof P_Link ) {
+                // :predicate+
+                P_Link link = (P_Link)subPath ;
+                Iterator<Triple> sIter = graph.find(null, link.getNode(), null) ;
+                return Iter.iter(sIter).distinctAdjacent().map(Triple::getSubject).distinct() ;
+            } else {
+                if ( subPath instanceof P_Inverse ) {
+                    P_Inverse pInv = (P_Inverse)subPath ;
+                    if ( pInv.getSubPath() instanceof P_Link ) {
+                        //  (^:predicate)+
+                        P_Link link = (P_Link)(pInv.getSubPath()) ;
+                        Iterator<Triple> sIter = graph.find(null, link.getNode(), null) ;
+                        return Iter.iter(sIter).distinctAdjacent().map(Triple::getObject).distinct() ;
+                    }
+                }
+            }
+        }
+        // No idea - everything.
+        return GraphUtils.allNodes(graph) ;
+    }
+    
     private static int existsPath(Graph graph, Node subject, Path path, final Node object, ExecutionContext execCxt) {
         if ( ! subject.isConcrete() || !object.isConcrete() )
             throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/f41d74ab/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEval.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEval.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEval.java
index 2d42323..e290e2e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEval.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEval.java
@@ -65,13 +65,13 @@ public class PathEval
     }
 
     /** Evaluate a path */
-    static void eval$(Graph graph, Node node, Path path, PathEngine engine, Collection<Node> acc) {
+    /*package*/ static void eval$(Graph graph, Node node, Path path, PathEngine engine, Collection<Node> acc) {
         PathEvaluator evaluator = new PathEvaluator(graph, node, acc, engine) ;
         path.visit(evaluator) ;
     }
 
     /** Evaluate a path */
-    static Iter<Node> eval$(Graph graph, Node node, Path path, PathEngine engine) {
+    /*package*/ static Iter<Node> eval$(Graph graph, Node node, Path path, PathEngine engine) {
         Collection<Node> acc = new ArrayList<>() ;
         eval$(graph, node, path, engine, acc); 
         return Iter.iter(acc) ;