From d7c38e5c8d3a4a7be48a2db50dd19e2460174a4f Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Mon, 5 Jan 2026 14:09:14 +1000 Subject: [PATCH 1/8] #657: Clarified that members of list must be literals/IRIs and the same order is kept --- shacl12-node-expr/index.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 05399eb0..e520d9cd 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -1073,13 +1073,14 @@

List Expressions

- The first member of the list. + The first member of the list, must be a literal or IRI. rdf:rest - Must be a well-formed SHACL list. + Must be a well-formed SHACL list where all members + are literals or IRIs. The rest of the list, e.g. rdf:nil. @@ -1092,7 +1093,8 @@

List Expressions

EVALUATION OF LIST EXPRESSIONS

- The output nodes of a list expression are the members of the SHACL list. + The output nodes of a list expression are the members of the list expression, + in the same order as in the list.

The remainder of this section is informative.

From 1e07baa23fbbc76ba2509ebefb81f6ec99f6a51e Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Tue, 6 Jan 2026 09:00:12 +1000 Subject: [PATCH 2/8] Update shacl12-node-expr/index.html Co-authored-by: Ted Thibodeau Jr --- shacl12-node-expr/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index e520d9cd..73d2b26f 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -1073,7 +1073,7 @@

List Expressions

- The first member of the list, must be a literal or IRI. + The first member of the list. From 3eed32abc0fcf3a61a464b85afc0d3ab1a7ac229 Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Tue, 6 Jan 2026 09:00:20 +1000 Subject: [PATCH 3/8] Update shacl12-node-expr/index.html Co-authored-by: Ted Thibodeau Jr --- shacl12-node-expr/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 73d2b26f..c7329794 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -1071,6 +1071,7 @@

List Expressions

rdf:first + MUST be literal or an IRI. The first member of the list. From 43a88c7a2517468f313052d10d2fd293da24036d Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Tue, 6 Jan 2026 11:54:48 +1000 Subject: [PATCH 4/8] Switched from ex:concat to sparql:concat --- shacl12-node-expr/index.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 547cadb9..569038c2 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -896,8 +896,9 @@

List Parameter Functions

However, these may produce more than one output nodes, and also accept lists as input nodes.

- The following example uses multiple (imaginary) list parameter functions — - ex:coalesce and ex:concat — to compute the ex:displayName + The following example uses two list parameter functions — + the (hypothetical)ex:coalesce and the SPARQL-based sparql:concat — + to compute the ex:displayName of a person as either the value of ex:fullName or (if that doesn't exist) as a concatenation of ex:firstName, a space, and ex:lastName.

@@ -917,7 +918,7 @@

List Parameter Functions

shnex:pathValues ex:fullName ; ] [ - ex:concat ( + sparql:concat ( [ shnex:pathValues ex:firstName ] # Path values expression with at most one value " " # A constant literal expression [ shnex:pathValues ex:lastName ] # Path values expression with at most one value From 510a288a9396049dff8f5b8475d0db8bf1cfee97 Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Wed, 7 Jan 2026 09:59:29 +1000 Subject: [PATCH 5/8] Apply suggestions from code review Co-authored-by: Ted Thibodeau Jr --- shacl12-node-expr/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 569038c2..4b6f0491 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -893,13 +893,13 @@

List Parameter Functions

Note that some named parameter functions — such as shnex:IntersectionExpression — also use a SHACL list as an object of the key parameter, similar to list parameter functions which always have a SHACL list as the object of their list parameter property. - However, these may produce more than one output nodes, and also accept lists as input nodes. + However, these may produce more than one output node, and also accept lists as input nodes.

The following example uses two list parameter functions — - the (hypothetical)ex:coalesce and the SPARQL-based sparql:concat — + the (hypothetical) ex:coalesce and the SPARQL-based sparql:concat — to compute the ex:displayName - of a person as either the value of ex:fullName or (if that doesn't exist) + of a person either as the value of ex:fullName or (if that doesn't exist) as a concatenation of ex:firstName, a space, and ex:lastName.

@@ -920,7 +920,7 @@

List Parameter Functions

[ sparql:concat ( [ shnex:pathValues ex:firstName ] # Path values expression with at most one value - " " # A constant literal expression + " " # A constant literal expression [ shnex:pathValues ex:lastName ] # Path values expression with at most one value ) ] From 594634dac31d1fc823edae88b7bcb0cb3b649f9c Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Wed, 7 Jan 2026 10:25:06 +1000 Subject: [PATCH 6/8] Update shacl12-node-expr/index.html Co-authored-by: Ted Thibodeau Jr --- shacl12-node-expr/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 4b6f0491..3c19095b 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -1085,7 +1085,7 @@

List Expressions

are literals or IRIs. - The rest of the list, e.g. rdf:nil. + The rest of the list, e.g., rdf:nil. From 390d99159e2108794b8831f012b52c48abccdaa9 Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Wed, 7 Jan 2026 10:25:14 +1000 Subject: [PATCH 7/8] Update shacl12-node-expr/index.html Co-authored-by: Ted Thibodeau Jr --- shacl12-node-expr/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 3c19095b..3a84c027 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -1072,7 +1072,7 @@

List Expressions

rdf:first - MUST be literal or an IRI. + MUST be a literal or an IRI. The first member of the list. From a41cb614f1e300042b1d78f84627914880d169a2 Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Wed, 7 Jan 2026 11:35:50 +1000 Subject: [PATCH 8/8] Update shacl12-node-expr/index.html Co-authored-by: Ted Thibodeau Jr --- shacl12-node-expr/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shacl12-node-expr/index.html b/shacl12-node-expr/index.html index 3a84c027..57fcf610 100644 --- a/shacl12-node-expr/index.html +++ b/shacl12-node-expr/index.html @@ -1081,8 +1081,8 @@

List Expressions

rdf:rest - Must be a well-formed SHACL list where all members - are literals or IRIs. + Must be a well-formed SHACL list, where each member + is either a literal or an IRI. The rest of the list, e.g., rdf:nil.