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 2021/08/20 15:39:57 UTC

[jena] branch main updated: JENA-2144: Print nodeKind in long form

This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new c1c5bc9  JENA-2144: Print nodeKind in long form
     new d32eb62  Merge pull request #1047 from afs/jena2144-shaclc
c1c5bc9 is described below

commit c1c5bc96b8b12d9ea0c5874413a91188adb813ea
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Thu Aug 12 19:11:55 2021 +0100

    JENA-2144: Print nodeKind in long form
---
 .../shacl/compact/reader/ShaclcParseException.java |  1 +
 .../jena/shacl/compact/writer/CompactOut.java      |  4 +-
 .../engine/constraint/NodeKindConstraint.java      |  7 +++-
 .../files/local/shaclc-syntax/nodeParam-bad-01.shc |  8 ++++
 .../test/files/local/shaclc-syntax/nodeParams.shc  | 14 +++++++
 .../files/local/shaclc-syntax/propertyParams.shc   | 17 ++++++++
 .../org/apache/jena/shacl/compact/TS_Compact.java  |  1 +
 ...terShaclCompact.java => TestCompactSyntax.java} | 45 ++++++++++++++--------
 .../compact/TestReaderWriterShaclCompact.java      |  2 +-
 9 files changed, 78 insertions(+), 21 deletions(-)

diff --git a/jena-shacl/src/main/java/org/apache/jena/shacl/compact/reader/ShaclcParseException.java b/jena-shacl/src/main/java/org/apache/jena/shacl/compact/reader/ShaclcParseException.java
index cd87d06..8cbebb4 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/compact/reader/ShaclcParseException.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/compact/reader/ShaclcParseException.java
@@ -21,6 +21,7 @@ package org.apache.jena.shacl.compact.reader;
 import org.apache.jena.shacl.ShaclException;
 
 public class ShaclcParseException extends ShaclException {
+    // Not a "ShaclParseException", which refers to errors in the RDF graph of SHACL shapes.
     private int line ;
     private int column ;
 
diff --git a/jena-shacl/src/main/java/org/apache/jena/shacl/compact/writer/CompactOut.java b/jena-shacl/src/main/java/org/apache/jena/shacl/compact/writer/CompactOut.java
index ed6c0f9..19b8490 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/compact/writer/CompactOut.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/compact/writer/CompactOut.java
@@ -70,7 +70,7 @@ public class CompactOut {
     public static void compactArrayString(IndentedWriter out, NodeFormatter nodeFmt, String param, Collection<String> values) {
         out.print(param);
         out.print("=");
-        out.print("(");
+        out.print("[");
         boolean first = true;
         for ( String str : values ) {
             if ( ! first )
@@ -78,7 +78,7 @@ public class CompactOut {
             printQuotedString(out, str);
             first = false;
         }
-        out.print(")");
+        out.print("]");
     }
 
     private static void printQuotedString(IndentedWriter out, String str) {
diff --git a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/NodeKindConstraint.java b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/NodeKindConstraint.java
index f58c1ed..c233c08 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/NodeKindConstraint.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/NodeKindConstraint.java
@@ -18,6 +18,7 @@
 
 package org.apache.jena.shacl.engine.constraint;
 
+import static org.apache.jena.shacl.compact.writer.CompactOut.compact;
 import static org.apache.jena.shacl.lib.ShLib.displayStr;
 
 import java.util.Objects;
@@ -77,8 +78,10 @@ public class NodeKindConstraint extends ConstraintTerm {
 
     @Override
     public void printCompact(IndentedWriter out, NodeFormatter nodeFmt) {
-        String s = getKind().getLocalName();
-        out.print(s);
+        compact(out, nodeFmt, "nodeKind", getKind());
+        // Property context only.
+//        String s = getKind().getLocalName();
+//        out.print(s);
     }
 
     @Override
diff --git a/jena-shacl/src/test/files/local/shaclc-syntax/nodeParam-bad-01.shc b/jena-shacl/src/test/files/local/shaclc-syntax/nodeParam-bad-01.shc
new file mode 100644
index 0000000..b5bb620
--- /dev/null
+++ b/jena-shacl/src/test/files/local/shaclc-syntax/nodeParam-bad-01.shc
@@ -0,0 +1,8 @@
+PREFIX : <http://example/>
+PREFIX ex:      <http://example.org/test#>
+PREFIX sh:      <http://www.w3.org/ns/shacl#>
+
+shapeClass ex:TestBadNodeParam {
+   # Property sytax in the node position.
+   IRI .
+}
diff --git a/jena-shacl/src/test/files/local/shaclc-syntax/nodeParams.shc b/jena-shacl/src/test/files/local/shaclc-syntax/nodeParams.shc
new file mode 100644
index 0000000..0ff31ef
--- /dev/null
+++ b/jena-shacl/src/test/files/local/shaclc-syntax/nodeParams.shc
@@ -0,0 +1,14 @@
+PREFIX : <http://example/>
+PREFIX ex:      <http://example.org/test#>
+PREFIX sh:      <http://www.w3.org/ns/shacl#>
+
+shapeClass ex:TestNodeParams {
+   nodeKind=sh:IRI .
+   datatype=xsd:double .
+   pattern="^.*$" .
+   languageIn=["en" "fr"] .
+   minLength=3 . 
+   maxLength=5 .
+   minExclusive="fred" .
+   in=[2 4 6] .
+}
diff --git a/jena-shacl/src/test/files/local/shaclc-syntax/propertyParams.shc b/jena-shacl/src/test/files/local/shaclc-syntax/propertyParams.shc
new file mode 100644
index 0000000..614d690
--- /dev/null
+++ b/jena-shacl/src/test/files/local/shaclc-syntax/propertyParams.shc
@@ -0,0 +1,17 @@
+PREFIX : <http://example/>
+PREFIX ex:      <http://example.org/test#>
+PREFIX sh:      <http://www.w3.org/ns/shacl#>
+
+shapeClass ex:TestPropertyParams {
+   :prop1  nodeKind=sh:IRI .
+   :prop2  datatype=xsd:double .
+   :prop3  pattern="^.*$" .
+   :prop4  languageIn=["en" "fr"] .
+   :prop5  minLength=3 . 
+   :prop6  maxLength=5 .
+   :prop7  minExclusive="fred" .
+   :prop8  in=[2 4 6] .
+   ## Short forms
+   :propA  BlankNode .
+   :propB  xsd:integer .
+}
diff --git a/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TS_Compact.java b/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TS_Compact.java
index ae072b0..fd6e672 100644
--- a/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TS_Compact.java
+++ b/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TS_Compact.java
@@ -26,5 +26,6 @@ import org.junit.runners.Suite;
     TestReadShaclCompact.class
     , TestWriteShaclCompact.class
     , TestReaderWriterShaclCompact.class
+    , TestCompactSyntax.class
 })
 public class TS_Compact {}
diff --git a/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java b/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestCompactSyntax.java
similarity index 61%
copy from jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java
copy to jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestCompactSyntax.java
index b721720..1a77768 100644
--- a/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java
+++ b/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestCompactSyntax.java
@@ -23,21 +23,38 @@ import static org.junit.Assert.assertTrue;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 
-import org.apache.jena.atlas.lib.IRILib;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.riot.Lang;
 import org.apache.jena.riot.RDFDataMgr;
+import org.apache.jena.shacl.compact.reader.ShaclcParseException;
 import org.apache.jena.sparql.graph.GraphFactory;
+import org.junit.Test;
 
-/** RIOT reader-writer tests for SHACL Compact Syntax */
-public class TestReaderWriterShaclCompact  extends AbstractTestShaclCompact{
+/**
+ * Test compact reading and writing by round-tripping. Unlike
+ * AbstractTestShaclCompact, this test suite is concerned with
+ * round-trip of compact syntax.
+ */
+public class TestCompactSyntax {
+    protected final String DIR = "src/test/files/local/shaclc-syntax/";
 
-    @Override
-    protected void runTest(String fn, String ttl, String fileBaseName) {
-        String uri = IRILib.filenameToIRI(fn);
+    @Test public void roundTrip_01() {
+        rttTest("nodeParams.shc");
+    }
 
-        Graph graph1 = GraphFactory.createDefaultGraph();
-        RDFDataMgr.read(graph1, uri, BASE, Lang.SHACLC);
+    @Test public void roundTrip_02() {
+        rttTest("propertyParams.shc");
+    }
+
+    @Test(expected=ShaclcParseException.class)
+    public void badSyntax_01() {
+        badSyntax("nodeParam-bad-01.shc");
+    }
+
+    private void rttTest(String fn) {
+        fn = DIR+fn;
+        //String uri = IRILib.filenameToIRI(fn);
+        Graph graph1 = RDFDataMgr.loadGraph(fn);
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         RDFDataMgr.write(bout, graph1, Lang.SHACLC);
 
@@ -45,16 +62,12 @@ public class TestReaderWriterShaclCompact  extends AbstractTestShaclCompact{
         RDFDataMgr.read(graph2, new ByteArrayInputStream(bout.toByteArray()), Lang.SHACLC);
 
         assertTrue(graph1.isIsomorphicWith(graph2));
+    }
 
-        Graph graph0 = RDFDataMgr.loadGraph(ttl);
-//        RDFDataMgr.write(System.out, graph1, Lang.SHACLC);
-//        System.out.println("----");
-//        RDFDataMgr.write(System.out, graph0, Lang.SHACLC);
-//        System.out.println("----");
-        assertTrue(graph0.isIsomorphicWith(graph2));
-
+    private void badSyntax(String fn) {
+        fn = DIR+fn;
+        RDFDataMgr.loadGraph(fn);
     }
 
 
 }
-
diff --git a/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java b/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java
index b721720..9fe9402 100644
--- a/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java
+++ b/jena-shacl/src/test/java/org/apache/jena/shacl/compact/TestReaderWriterShaclCompact.java
@@ -30,7 +30,7 @@ import org.apache.jena.riot.RDFDataMgr;
 import org.apache.jena.sparql.graph.GraphFactory;
 
 /** RIOT reader-writer tests for SHACL Compact Syntax */
-public class TestReaderWriterShaclCompact  extends AbstractTestShaclCompact{
+public class TestReaderWriterShaclCompact  extends AbstractTestShaclCompact {
 
     @Override
     protected void runTest(String fn, String ttl, String fileBaseName) {