From b15111c99e94cd0bef2ffa3ba0a2dbc86cca7962 Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Tue, 9 Jun 2026 14:42:51 +1000 Subject: [PATCH 1/2] #929: Added test cases for all SPARQL functions --- .../tests/node-expr/manifest.ttl | 1 + .../tests/node-expr/shnex-sparql/abs.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/bnode.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/bound.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/ceil.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/coalesce.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/concat.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/contains.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/datatype.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/day.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/divide.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/encode.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/equals.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/floor.ttl | 29 +++++++ .../shnex-sparql/greater-than-or-equal.ttl | 29 +++++++ .../node-expr/shnex-sparql/greater-than.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/hasLang.ttl | 29 +++++++ .../node-expr/shnex-sparql/hasLangdir.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/hours.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/if.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/iri.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/isBlank.ttl | 41 ++++++++++ .../tests/node-expr/shnex-sparql/isIRI.ttl | 29 +++++++ .../node-expr/shnex-sparql/isLiteral.ttl | 29 +++++++ .../node-expr/shnex-sparql/isNumeric.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/isTriple.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/isURI.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/lang.ttl | 29 +++++++ .../node-expr/shnex-sparql/langMatches.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/langdir.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/lcase.ttl | 29 +++++++ .../shnex-sparql/less-than-or-equal.ttl | 29 +++++++ .../node-expr/shnex-sparql/less-than.ttl | 29 +++++++ .../node-expr/shnex-sparql/logical-and.ttl | 29 +++++++ .../node-expr/shnex-sparql/logical-not.ttl | 29 +++++++ .../node-expr/shnex-sparql/logical-or.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/manifest.ttl | 82 +++++++++++++++++++ .../tests/node-expr/shnex-sparql/md5.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/minutes.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/month.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/multiply.ttl | 29 +++++++ .../node-expr/shnex-sparql/not-equals.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/object.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/plus.ttl | 29 +++++++ .../node-expr/shnex-sparql/predicate.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/regex.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/replace.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/round.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/sameTerm.ttl | 29 +++++++ .../node-expr/shnex-sparql/sameValue.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/seconds.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/sha1.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/sha256.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/sha384.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/sha512.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/str.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/strafter.ttl | 29 +++++++ .../node-expr/shnex-sparql/strbefore.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/strdt.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/strends.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/strlang.ttl | 29 +++++++ .../node-expr/shnex-sparql/strlangdir.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/strlen.ttl | 29 +++++++ .../node-expr/shnex-sparql/strstarts.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/struuid.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/subject.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/substr.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/subtract.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/timezone.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/triple.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/tz.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/ucase.ttl | 29 +++++++ .../node-expr/shnex-sparql/unary-minus.ttl | 29 +++++++ .../node-expr/shnex-sparql/unary-plus.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/uri.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/uuid.ttl | 29 +++++++ .../tests/node-expr/shnex-sparql/year.ttl | 29 +++++++ shacl12-vocabularies/shnex-sparql.ttl | 27 +++--- 78 files changed, 2285 insertions(+), 12 deletions(-) create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/abs.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/bnode.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/bound.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/ceil.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/coalesce.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/concat.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/contains.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/datatype.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/day.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/divide.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/encode.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/equals.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/floor.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than-or-equal.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/hasLang.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/hasLangdir.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/hours.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/if.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/iri.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/isBlank.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/isIRI.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/isLiteral.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/isNumeric.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/isTriple.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/isURI.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/lang.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/langMatches.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/langdir.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/lcase.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/less-than-or-equal.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/less-than.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/logical-and.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/logical-not.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/logical-or.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/manifest.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/md5.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/minutes.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/month.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/multiply.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/not-equals.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/object.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/plus.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/predicate.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/regex.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/replace.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/round.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/sameTerm.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/sameValue.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/seconds.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/sha1.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/sha256.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/sha384.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/sha512.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/str.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strafter.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strbefore.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strdt.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strends.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strlang.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strlangdir.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strlen.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/strstarts.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/struuid.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/subject.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/substr.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/subtract.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/timezone.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/triple.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/tz.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/ucase.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/unary-minus.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/unary-plus.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/uri.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/uuid.ttl create mode 100644 shacl12-test-suite/tests/node-expr/shnex-sparql/year.ttl diff --git a/shacl12-test-suite/tests/node-expr/manifest.ttl b/shacl12-test-suite/tests/node-expr/manifest.ttl index 99c54fc66..fef3989a8 100644 --- a/shacl12-test-suite/tests/node-expr/manifest.ttl +++ b/shacl12-test-suite/tests/node-expr/manifest.ttl @@ -6,4 +6,5 @@ a mf:Manifest ; mf:include ; mf:include ; + mf:include ; . \ No newline at end of file diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/abs.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/abs.ttl new file mode 100644 index 000000000..47902ad5f --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/abs.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:abs expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:abs ( -42 ) ; + ] ; + ] ; + mf:result ( 42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/bnode.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/bnode.ttl new file mode 100644 index 000000000..d9cb25823 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/bnode.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:bnode expression, checking whether it produces a blank node" ; + mf:action [ + sht:nodeExpr [ + sparql:isBlank ( [ sparql:bnode () ] ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/bound.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/bound.ttl new file mode 100644 index 000000000..6d410e510 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/bound.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:bound expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:bound ( [ shnex:var "var" ] ) ; + ] ; + ] ; + mf:result ( false ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/ceil.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/ceil.ttl new file mode 100644 index 000000000..8ac5c097e --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/ceil.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:ceil expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:ceil ( 3.2 ) ; + ] ; + ] ; + mf:result ( 4.0 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/coalesce.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/coalesce.ttl new file mode 100644 index 000000000..e99295e18 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/coalesce.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:coalesce expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:coalesce ( [ shnex:var "optionalValue" ] "default" ) ; + ] ; + ] ; + mf:result ( "default" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/concat.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/concat.ttl new file mode 100644 index 000000000..9d8e93228 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/concat.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:concat expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:concat ( "hello" " " "world" ) ; + ] ; + ] ; + mf:result ( "hello world" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/contains.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/contains.ttl new file mode 100644 index 000000000..9003d576e --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/contains.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:contains expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:contains ( "hello world" "lo wo" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/datatype.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/datatype.ttl new file mode 100644 index 000000000..dc520d07d --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/datatype.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:datatype expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:datatype ( "42"^^xsd:integer ) ; + ] ; + ] ; + mf:result ( xsd:integer ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/day.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/day.ttl new file mode 100644 index 000000000..822cabee6 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/day.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:day expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:day ( "2023-12-25T10:30:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( 25 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/divide.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/divide.ttl new file mode 100644 index 000000000..82f038209 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/divide.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:divide expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:divide ( 84 2 ) ; + ] ; + ] ; + mf:result ( 42.0 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/encode.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/encode.ttl new file mode 100644 index 000000000..19b4fccd4 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/encode.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:encode expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:encode ( "hello world" ) ; + ] ; + ] ; + mf:result ( "hello%20world" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/equals.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/equals.ttl new file mode 100644 index 000000000..ccde52d72 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/equals.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:equals expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:equals ( "hello" "hello" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/floor.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/floor.ttl new file mode 100644 index 000000000..9c6ba94a2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/floor.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:floor expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:floor ( 3.8 ) ; + ] ; + ] ; + mf:result ( 3.0 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than-or-equal.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than-or-equal.ttl new file mode 100644 index 000000000..ab659cfcc --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than-or-equal.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:greater-than-or-equal expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:greater-than-or-equal ( 10 10 ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than.ttl new file mode 100644 index 000000000..acba542ba --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/greater-than.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:greater-than expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:greater-than ( 10 5 ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/hasLang.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/hasLang.ttl new file mode 100644 index 000000000..96e7df5eb --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/hasLang.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:hasLang expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:hasLang ( "hello"@en "en" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/hasLangdir.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/hasLangdir.ttl new file mode 100644 index 000000000..814cd0340 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/hasLangdir.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:hasLangdir expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:hasLangdir ( "hello"@en--ltr ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/hours.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/hours.ttl new file mode 100644 index 000000000..91d003788 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/hours.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:hours expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:hours ( "2023-12-25T10:30:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( 10 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/if.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/if.ttl new file mode 100644 index 000000000..7f7b153d7 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/if.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:if expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:if ( [ sparql:greater-than ( 10 5 ) ] "big" "small" ) ; + ] ; + ] ; + mf:result ( "big" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/iri.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/iri.ttl new file mode 100644 index 000000000..fc6c556cd --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/iri.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:iri expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:iri ( "http://example.com/ns#resource" ) ; + ] ; + ] ; + mf:result ( ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/isBlank.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/isBlank.ttl new file mode 100644 index 000000000..2157abe99 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/isBlank.ttl @@ -0,0 +1,41 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isBlank expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:isBlank ( [ sparql:bnode () ] ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isBlank with a literal argument" ; + mf:action [ + sht:nodeExpr [ + sparql:isBlank ( 42 ) ; + ] ; + ] ; + mf:result ( false ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/isIRI.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/isIRI.ttl new file mode 100644 index 000000000..44be5733b --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/isIRI.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isIRI expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:isIRI ( ex:resource ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/isLiteral.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/isLiteral.ttl new file mode 100644 index 000000000..4e8df2608 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/isLiteral.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isLiteral expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:isLiteral ( "hello world" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/isNumeric.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/isNumeric.ttl new file mode 100644 index 000000000..c96288a44 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/isNumeric.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isNumeric expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:isNumeric ( 42 ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/isTriple.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/isTriple.ttl new file mode 100644 index 000000000..3330b64bc --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/isTriple.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isTriple expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:isTriple ( <<( ex:s ex:p ex:o )>> ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/isURI.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/isURI.ttl new file mode 100644 index 000000000..13ca030f2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/isURI.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:isURI expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:isURI ( ex:resource ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/lang.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/lang.ttl new file mode 100644 index 000000000..67ca247cc --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/lang.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:lang expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:lang ( "hello"@en ) ; + ] ; + ] ; + mf:result ( "en" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/langMatches.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/langMatches.ttl new file mode 100644 index 000000000..92af8549c --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/langMatches.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:langMatches expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:langMatches ( "en-US" "en" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/langdir.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/langdir.ttl new file mode 100644 index 000000000..fc1dd7b1f --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/langdir.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:langdir expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:langdir ( "hello"@en--ltr ) ; + ] ; + ] ; + mf:result ( "ltr" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/lcase.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/lcase.ttl new file mode 100644 index 000000000..7fe589f52 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/lcase.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:lcase expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:lcase ( "HELLO" ) ; + ] ; + ] ; + mf:result ( "hello" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/less-than-or-equal.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/less-than-or-equal.ttl new file mode 100644 index 000000000..268e7feb5 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/less-than-or-equal.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:less-than-or-equal expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:less-than-or-equal ( 5 5 ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/less-than.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/less-than.ttl new file mode 100644 index 000000000..c444b52e2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/less-than.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:less-than expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:less-than ( 5 10 ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-and.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-and.ttl new file mode 100644 index 000000000..042c3ba48 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-and.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:logical-and expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:logical-and ( true true ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-not.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-not.ttl new file mode 100644 index 000000000..e63fa3613 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-not.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:logical-not expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:logical-not ( true ) ; + ] ; + ] ; + mf:result ( false ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-or.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-or.ttl new file mode 100644 index 000000000..27c29dba7 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/logical-or.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:logical-or expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:logical-or ( true false ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/manifest.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/manifest.ttl new file mode 100644 index 000000000..8d0d558b3 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/manifest.ttl @@ -0,0 +1,82 @@ +@prefix mf: . +@prefix rdfs: . +@prefix sht: . + +<> + a mf:Manifest ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + mf:include ; + . \ No newline at end of file diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/md5.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/md5.ttl new file mode 100644 index 000000000..c3c551054 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/md5.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:md5 expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:md5 ( "hello" ) ; + ] ; + ] ; + mf:result ( "5d41402abc4b2a76b9719d911017c592" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/minutes.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/minutes.ttl new file mode 100644 index 000000000..53a46051f --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/minutes.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:minutes expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:minutes ( "2023-12-25T10:30:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( 30 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/month.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/month.ttl new file mode 100644 index 000000000..b3192d1e4 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/month.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:month expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:month ( "2023-12-25T10:30:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( 12 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/multiply.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/multiply.ttl new file mode 100644 index 000000000..0f0ccb3f7 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/multiply.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:multiply expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:multiply ( 6 7 ) ; + ] ; + ] ; + mf:result ( 42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/not-equals.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/not-equals.ttl new file mode 100644 index 000000000..60eadd437 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/not-equals.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:not-equals expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:not-equals ( "hello" "world" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/object.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/object.ttl new file mode 100644 index 000000000..de72d4ad8 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/object.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:object expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:object ( <<( ex:s ex:p ex:o )>> ) ; + ] ; + ] ; + mf:result ( ex:o ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/plus.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/plus.ttl new file mode 100644 index 000000000..a37027f78 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/plus.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:plus expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:plus ( 38 4 ) ; + ] ; + ] ; + mf:result ( 42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/predicate.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/predicate.ttl new file mode 100644 index 000000000..520c764db --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/predicate.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:predicate expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:predicate ( <<( ex:s ex:p ex:o )>> ) ; + ] ; + ] ; + mf:result ( ex:p ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/regex.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/regex.ttl new file mode 100644 index 000000000..23eacb3d0 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/regex.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:regex expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:regex ( "hello123" "[0-9]+" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/replace.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/replace.ttl new file mode 100644 index 000000000..93fb07465 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/replace.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:replace expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:replace ( "hello world" "world" "universe" ) ; + ] ; + ] ; + mf:result ( "hello universe" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/round.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/round.ttl new file mode 100644 index 000000000..262202d35 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/round.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:round expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:round ( 3.7 ) ; + ] ; + ] ; + mf:result ( 4.0 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/sameTerm.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/sameTerm.ttl new file mode 100644 index 000000000..1fc4bc300 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/sameTerm.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:sameTerm expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:sameTerm ( "hello" "hello" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/sameValue.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/sameValue.ttl new file mode 100644 index 000000000..e9814b7a4 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/sameValue.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:sameValue expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:sameValue ( 42 "42"^^xsd:integer ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/seconds.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/seconds.ttl new file mode 100644 index 000000000..850799cdd --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/seconds.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:seconds expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:seconds ( "2023-12-25T10:30:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( "00"^^xsd:decimal ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/sha1.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha1.ttl new file mode 100644 index 000000000..41c340dd5 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha1.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:sha1 expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:sha1 ( "hello" ) ; + ] ; + ] ; + mf:result ( "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/sha256.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha256.ttl new file mode 100644 index 000000000..d0db1812b --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha256.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:sha256 expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:sha256 ( "hello" ) ; + ] ; + ] ; + mf:result ( "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/sha384.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha384.ttl new file mode 100644 index 000000000..f6ab74612 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha384.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:sha384 expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:sha384 ( "hello" ) ; + ] ; + ] ; + mf:result ( "59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa90125a3c79f90397bdf5f6a13de828684f" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/sha512.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha512.ttl new file mode 100644 index 000000000..64d75921f --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/sha512.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:sha512 expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:sha512 ( "hello" ) ; + ] ; + ] ; + mf:result ( "9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/str.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/str.ttl new file mode 100644 index 000000000..e4bd5a723 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/str.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:str expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:str ( 42 ) ; + ] ; + ] ; + mf:result ( "42" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strafter.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strafter.ttl new file mode 100644 index 000000000..6299ecbc2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strafter.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strafter expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strafter ( "hello world" " " ) ; + ] ; + ] ; + mf:result ( "world" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strbefore.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strbefore.ttl new file mode 100644 index 000000000..1ceffbc6e --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strbefore.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strbefore expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strbefore ( "hello world" " " ) ; + ] ; + ] ; + mf:result ( "hello" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strdt.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strdt.ttl new file mode 100644 index 000000000..925c887a2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strdt.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strdt expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strdt ( "42" xsd:integer ) ; + ] ; + ] ; + mf:result ( 42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strends.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strends.ttl new file mode 100644 index 000000000..30fe0af18 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strends.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strends expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strends ( "hello world" "world" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strlang.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strlang.ttl new file mode 100644 index 000000000..95aac0110 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strlang.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strlang expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strlang ( "hello" "en" ) ; + ] ; + ] ; + mf:result ( "hello"@en ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strlangdir.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strlangdir.ttl new file mode 100644 index 000000000..6da06d62e --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strlangdir.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strlangdir expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strlangdir ( "hello" "en" "ltr" ) ; + ] ; + ] ; + mf:result ( "hello"@en--ltr ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strlen.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strlen.ttl new file mode 100644 index 000000000..4c454ae77 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strlen.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strlen expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strlen ( "hello" ) ; + ] ; + ] ; + mf:result ( 5 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/strstarts.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/strstarts.ttl new file mode 100644 index 000000000..2563fcdc5 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/strstarts.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:strstarts expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:strstarts ( "hello world" "hello" ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/struuid.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/struuid.ttl new file mode 100644 index 000000000..0d22fa7e6 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/struuid.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:uuid expression to ensure it returns a literal" ; + mf:action [ + sht:nodeExpr [ + sparql:isLiteral ( [ sparql:struuid () ] ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/subject.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/subject.ttl new file mode 100644 index 000000000..8e48311af --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/subject.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:subject expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:subject ( <<( ex:s ex:p ex:o )>> ) ; + ] ; + ] ; + mf:result ( ex:s ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/substr.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/substr.ttl new file mode 100644 index 000000000..afaa4e231 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/substr.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:substr expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:substr ( "hello world" 2 5 ) ; + ] ; + ] ; + mf:result ( "ello " ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/subtract.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/subtract.ttl new file mode 100644 index 000000000..2927946be --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/subtract.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:subtract expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:subtract ( 47 5 ) ; + ] ; + ] ; + mf:result ( 42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/timezone.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/timezone.ttl new file mode 100644 index 000000000..3fcc5c3d2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/timezone.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:timezone expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:timezone ( "2023-12-25T10:30:00+02:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( "PT2H"^^xsd:dayTimeDuration ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/triple.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/triple.ttl new file mode 100644 index 000000000..ca46593e2 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/triple.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:triple expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:triple ( ex:s ex:p ex:o ) ; + ] ; + ] ; + mf:result ( <<( ex:s ex:p ex:o )>> ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/tz.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/tz.ttl new file mode 100644 index 000000000..e31af417e --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/tz.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:tz expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:tz ( "2023-12-25T10:30:00+02:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( "+02:00" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/ucase.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/ucase.ttl new file mode 100644 index 000000000..d5d823e7e --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/ucase.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:ucase expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:ucase ( "hello" ) ; + ] ; + ] ; + mf:result ( "HELLO" ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/unary-minus.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/unary-minus.ttl new file mode 100644 index 000000000..0817b091f --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/unary-minus.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:unary-minus expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:unary-minus ( 42 ) ; + ] ; + ] ; + mf:result ( -42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/unary-plus.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/unary-plus.ttl new file mode 100644 index 000000000..1fa5eecad --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/unary-plus.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:unary-plus expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:unary-plus ( 42 ) ; + ] ; + ] ; + mf:result ( 42 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/uri.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/uri.ttl new file mode 100644 index 000000000..b056f4f3a --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/uri.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:uri expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:uri ( "http://example.com/ns#resource" ) ; + ] ; + ] ; + mf:result ( ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/uuid.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/uuid.ttl new file mode 100644 index 000000000..fe4e4f722 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/uuid.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:uuid expression to ensure it returns a URI" ; + mf:action [ + sht:nodeExpr [ + sparql:isURI ( [ sparql:uuid () ] ) ; + ] ; + ] ; + mf:result ( true ) ; + mf:status sht:approved ; +. diff --git a/shacl12-test-suite/tests/node-expr/shnex-sparql/year.ttl b/shacl12-test-suite/tests/node-expr/shnex-sparql/year.ttl new file mode 100644 index 000000000..c1b310b44 --- /dev/null +++ b/shacl12-test-suite/tests/node-expr/shnex-sparql/year.ttl @@ -0,0 +1,29 @@ +@prefix ex: . +@prefix mf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix shnex: . +@prefix sht: . +@prefix sparql: . +@prefix xsd: . + +<> + rdf:type mf:Manifest ; + mf:entries ( + + ) ; +. + + + rdf:type sht:EvalNodeExpr ; + rdfs:label "Test of a sparql:year expression based on the shnex-sparql:example" ; + mf:action [ + sht:nodeExpr [ + sparql:year ( "2023-12-25T10:30:00"^^xsd:dateTime ) ; + ] ; + ] ; + mf:result ( 2023 ) ; + mf:status sht:approved ; +. diff --git a/shacl12-vocabularies/shnex-sparql.ttl b/shacl12-vocabularies/shnex-sparql.ttl index b67cf5581..96d57b050 100644 --- a/shacl12-vocabularies/shnex-sparql.ttl +++ b/shacl12-vocabularies/shnex-sparql.ttl @@ -2,7 +2,7 @@ ## https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document ## -------- -# W3C SHACL Node Expressions Vocabulary +# W3C SHACL Node Expressions SPARQL Vocabulary # THIS VERSION IS UNDER DEVELOPMENT BY THE DATA-SHAPES (SHACL 1.2) WG @@ -20,8 +20,8 @@ shnex-sparql: a owl:Ontology ; owl:imports ; owl:versionIRI shnex-sparql:1.2 ; - rdfs:label "W3C SHACL SPARQL Extensions Vocabulary"@en ; - rdfs:comment "This vocabulary defines terms used in the SHACL SPARQL specification."@en ; + rdfs:label "W3C SHACL Node Expressions SPARQL Vocabulary"@en ; + rdfs:comment "This vocabulary defines SPARQL functions supported by the SHACL Node Expressions specification."@en ; schema:creator "W3C Data Shapes Working Group" ; # schema:dateCreated ""^^xsd:date ; # schema:dateIssued ""^^xsd:date ; @@ -32,8 +32,11 @@ shnex-sparql: sh:prefix "shnex-sparql" ; sh:namespace "http://www.w3.org/ns/shacl-node-expr-sparql#"^^xsd:anyURI ; ] ; -. - + sh:declare [ + sh:prefix "sparql" ; + sh:namespace "http://www.w3.org/ns/sparql#"^^xsd:anyURI ; + ] ; + . shnex-sparql:category a rdf:Property ; @@ -316,7 +319,7 @@ sparql:isBlank rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "other" ; - shnex-sparql:example "[ sparql:isBlank ( _:blankNode ) ]" ; + shnex-sparql:example "[ sparql:isBlank ( [ sparql:bnode () ] ) ]" ; . sparql:isLiteral @@ -503,7 +506,7 @@ sparql:substr sparql:ucase a sh:ListParameterExpressionFunction ; rdfs:label "ucase"@en ; - rdfs:comment "This function transforms all alphabetic characters in the input string to uppercase, following Unicode case-folding conventions."@en ; + rdfs:comment "This function transforms all alphabetic characters in the input string to uppercase, following Unicode case-folding conventions"@en ; rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "string" ; @@ -746,7 +749,7 @@ sparql:seconds sparql:timezone a sh:ListParameterExpressionFunction ; rdfs:label "timezone"@en ; - rdfs:comment "This function returns the timezone component as an xsd:dayTimeDuration for an xsd:dateTime value with a specified time zone, or an empty value if none."@en ; + rdfs:comment "This function returns the timezone component as a dayTimeDuration for an xsd:dateTime value with a specified time zone, or an empty value if none."@en ; rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "date" ; @@ -781,7 +784,7 @@ sparql:subject rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "other" ; - shnex-sparql:example "[ sparql:subject ( << ex:s ex:p ex:o >> ) ]" ; + shnex-sparql:example "[ sparql:subject ( <<( ex:s ex:p ex:o )>> ) ]" ; . sparql:predicate @@ -791,7 +794,7 @@ sparql:predicate rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "other" ; - shnex-sparql:example "[ sparql:predicate ( << ex:s ex:p ex:o >> ) ]" ; + shnex-sparql:example "[ sparql:predicate ( <<( ex:s ex:p ex:o )>> ) ]" ; . sparql:object @@ -801,7 +804,7 @@ sparql:object rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "other" ; - shnex-sparql:example "[ sparql:object ( << ex:s ex:p ex:o >> ) ]" ; + shnex-sparql:example "[ sparql:object ( <<( ex:s ex:p ex:o )>> ) ]" ; . sparql:isTriple @@ -811,7 +814,7 @@ sparql:isTriple rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "other" ; - shnex-sparql:example "[ sparql:isTriple ( << ex:s ex:p ex:o >> ) ]" ; + shnex-sparql:example "[ sparql:isTriple ( <<( ex:s ex:p ex:o )>> ) ]" ; . # Hash functions From 057dab02bd15703c08cc2bed725a24f369da9f1c Mon Sep 17 00:00:00 2001 From: Holger Knublauch Date: Tue, 9 Jun 2026 14:51:39 +1000 Subject: [PATCH 2/2] Restored overwritten edits --- shacl12-vocabularies/shnex-sparql.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shacl12-vocabularies/shnex-sparql.ttl b/shacl12-vocabularies/shnex-sparql.ttl index 96d57b050..2add01c17 100644 --- a/shacl12-vocabularies/shnex-sparql.ttl +++ b/shacl12-vocabularies/shnex-sparql.ttl @@ -506,7 +506,7 @@ sparql:substr sparql:ucase a sh:ListParameterExpressionFunction ; rdfs:label "ucase"@en ; - rdfs:comment "This function transforms all alphabetic characters in the input string to uppercase, following Unicode case-folding conventions"@en ; + rdfs:comment "This function transforms all alphabetic characters in the input string to uppercase, following Unicode case-folding conventions."@en ; rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "string" ; @@ -749,7 +749,7 @@ sparql:seconds sparql:timezone a sh:ListParameterExpressionFunction ; rdfs:label "timezone"@en ; - rdfs:comment "This function returns the timezone component as a dayTimeDuration for an xsd:dateTime value with a specified time zone, or an empty value if none."@en ; + rdfs:comment "This function returns the timezone component as an xsd:dayTimeDuration for an xsd:dateTime value with a specified time zone, or an empty value if none."@en ; rdfs:isDefinedBy ; rdfs:subClassOf sh:ListParameterExpression ; shnex-sparql:category "date" ;