From ab035ff0fb8a0aaba7b6a70eaf35b1817f98fd79 Mon Sep 17 00:00:00 2001 From: Olaf Hartig Date: Thu, 20 Nov 2025 10:01:10 +0100 Subject: [PATCH 1/4] remove unnecessary comment in definition of ALP (addresses #314) --- spec/index.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/index.html b/spec/index.html index 3f4f020..7822ad3 100644 --- a/spec/index.html +++ b/spec/index.html @@ -9968,12 +9968,10 @@

Property Path Patterns

when starting at RDF term x. ALP(x:term, ppe) = - Let V = empty set + Let V = empty set of nodes ALP(x:term, ppe, V) return is V - # V is the set of nodes visited - ALP(x:term, ppe, V:set of RDF terms) = if ( x in V ) return add x to V From b0a6719d2e0ac2a826b2d1f5411811405b0d7796 Mon Sep 17 00:00:00 2001 From: Olaf Hartig Date: Thu, 20 Nov 2025 10:06:17 +0100 Subject: [PATCH 2/4] renames the auxiliary function used in the definition of ALP from ALP to ALP' --- spec/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/index.html b/spec/index.html index 7822ad3..726cdce 100644 --- a/spec/index.html +++ b/spec/index.html @@ -9969,15 +9969,15 @@

Property Path Patterns

ALP(x:term, ppe) = Let V = empty set of nodes - ALP(x:term, ppe, V) + ALP'(x:term, ppe, V) return is V - ALP(x:term, ppe, V:set of RDF terms) = + ALP'(x:term, ppe, V:set of RDF terms) = if ( x in V ) return add x to V X = reachableTerms(x, ppe) For n:term in X - ALP(n, ppe, V) + ALP'(n, ppe, V) End @@ -10013,7 +10013,7 @@

Property Path Patterns

Let X = reachableTerms(x, ppe) Let V = the empty multiset For n in X - ALP(n, ppe, V) + ALP'(n, ppe, V) End result is V From dc6d0719caf0a71e02252f685d668a0fd6c838e4 Mon Sep 17 00:00:00 2001 From: Olaf Hartig Date: Thu, 20 Nov 2025 17:08:20 +0100 Subject: [PATCH 3/4] 'empty set of nodes' --> 'empty set of terms' Co-authored-by: Peter F. Patel-Schneider --- spec/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/index.html b/spec/index.html index 726cdce..8cd625e 100644 --- a/spec/index.html +++ b/spec/index.html @@ -9968,7 +9968,7 @@

Property Path Patterns

when starting at RDF term x. ALP(x:term, ppe) = - Let V = empty set of nodes + Let V = empty set of terms ALP'(x:term, ppe, V) return is V From a1f48b3fc03d70774aa820d63a083761378215f6 Mon Sep 17 00:00:00 2001 From: Olaf Hartig Date: Fri, 28 Nov 2025 09:45:56 +0100 Subject: [PATCH 4/4] renames ALP' to ALP_recurse and adapts the anchors accordingly --- spec/index.html | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/index.html b/spec/index.html index 8cd625e..adcf053 100644 --- a/spec/index.html +++ b/spec/index.html @@ -9948,7 +9948,7 @@

Property Path Patterns

either (yn in nodes(G) and xn = yn) or {(X, xn), (Y, yn)} in ppeval(X, ppe, Y) } -

We define an auxiliary function, ALP, used in the definitions of ZeroOrMorePath and +

We define an auxiliary function, ALP, used in the definitions of ZeroOrMorePath and OneOrMorePath. Note that the algorithm given here serves to specify the feature. An implementor is free to implement evaluation by any method that produces the same results for the query overall. The ZeroOrMorePath and OneOrMorePath forms return matches based on @@ -9960,24 +9960,24 @@

Property Path Patterns

a node has been visited for the path under consideration, it is not a candidate for another step.

-

Definition: Function ALP

+

Definition: Function ALP

 Let ppe be an algebraic property path expression.
 Let reachableTerms(x:term, ppe) be the set of RDF terms
  reached by repeated matches of ppe,
  when starting at RDF term x.
 
-  ALP(x:term, ppe) = 
+  ALP(x:term, ppe) =
       Let V = empty set of terms
-      ALP'(x:term, ppe, V)
+      ALP_recurse(x:term, ppe, V)
       return is V
 
-  ALP'(x:term, ppe, V:set of RDF terms) =
+  ALP_recurse(x:term, ppe, V:set of RDF terms) =
       if ( x in V ) return 
       add x to V
       X = reachableTerms(x, ppe)
       For n:term in X
-          ALP'(n, ppe, V)
+          ALP_recurse(n, ppe, V)
           End
 
@@ -9987,7 +9987,7 @@

Property Path Patterns

Let G be the active graph.

 ppeval(X:term, ZeroOrMorePath(ppe), vy:var) =
-    { { (vy, n) } | n in ALP(X, ppe) }
+    { { (vy, n) } | n in ALP(X, ppe) }
 
 ppeval(vx:var, ZeroOrMorePath(ppe), vy:var) =
     { { (vx, t), (vy, n) } |  
@@ -10013,7 +10013,7 @@ 

Property Path Patterns

Let X = reachableTerms(x, ppe) Let V = the empty multiset For n in X - ALP'(n, ppe, V) + ALP_recurse(n, ppe, V) End result is V @@ -12725,7 +12725,7 @@

Changes between SPARQL 1.1 Query Language and SPARQL 1.2 Query Language

in from eval to ppeval.
  • Rename the function used within the definition of - the ALP function + the ALP function from eval to reachableTerms.
  • Add section about SPARQL expression evaluation errors.
  • Rename section "Filter evaluation" as .
  • @@ -12743,7 +12743,7 @@

    Changes between SPARQL 1.1 Query Language and SPARQL 1.2 Query Language

  • clarification-query-1: Fix explanation of IN and NOT IN in and
  • clarification-query-2: Remove unneeded reference to the semantics above in
  • clarification-query-3: Rephrase equality definition in
  • -
  • errata-query-1: Let V be an empty set instead of empty multiset in Function ALP definition
  • +
  • errata-query-1: Let V be an empty set instead of empty multiset in Function ALP definition
  • errata-query-2: Fix grammar of PropertyListPathNotEmpty in
  • errata-query-4: Fix CONCAT definition for zero and one argument in
  • errata-query-5: Mention illegal nesting of aggregates in