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 762cd45cde GH-2932: Fix for NodeFmtLib.strNT and added variants for
Triple and Quad.
762cd45cde is described below
commit 762cd45cde95f2528d8b06e558edbf2f41246308
Author: Claus Stadler <[email protected]>
AuthorDate: Wed Jan 8 23:55:33 2025 +0100
GH-2932: Fix for NodeFmtLib.strNT and added variants for Triple and Quad.
---
.../java/org/apache/jena/riot/out/NodeFmtLib.java | 28 ++++++++++++-
.../org/apache/jena/riot/out/TestNodeFmtLib.java | 46 +++++++++++++++++++++-
2 files changed, 72 insertions(+), 2 deletions(-)
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java
b/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java
index 87c22208d4..8ef332292a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/out/NodeFmtLib.java
@@ -76,6 +76,32 @@ public class NodeFmtLib
return strNodesTTL(q.getGraph(), q.getSubject(), q.getPredicate(),
q.getObject());
}
+ /** Format a triple as N-Triples. */
+ public static String strNT(Triple triple) {
+ return strNQ(triple.getSubject(), triple.getPredicate(),
triple.getObject(), null);
+ }
+
+ /** Format a quad as N-Quads. */
+ public static String strNQ(Quad quad) {
+ return strNQ(quad.getSubject(), quad.getPredicate(), quad.getObject(),
quad.getGraph());
+ }
+
+ /** Format the components of a quad as N-Quads. The graph component may be
null. */
+ public static String strNQ(Node s, Node p, Node o, Node g) {
+ StringBuilder result = new StringBuilder();
+ result.append(strNT(s));
+ result.append(" ");
+ result.append(strNT(p));
+ result.append(" ");
+ result.append(strNT(o));
+ if (g != null && !Quad.isDefaultGraph(g)) {
+ result.append(" ");
+ result.append(strNT(g));
+ }
+ result.append(" .");
+ return result.toString();
+ }
+
/** With Turtle abbreviation for literals, no prefixes of base URI */
public static String strTTL(Node node) {
return strNode(node, ttlFormatter);
@@ -83,7 +109,7 @@ public class NodeFmtLib
/** Format in N-triples style. */
public static String strNT(Node node) {
- return strNode(node, ttlFormatter);
+ return strNode(node, ntFormatter);
}
/** Format in N-triples style. */
diff --git
a/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmtLib.java
b/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmtLib.java
index f9691dae60..36715e49ed 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmtLib.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/out/TestNodeFmtLib.java
@@ -21,6 +21,10 @@ package org.apache.jena.riot.out;
import static org.junit.Assert.assertEquals;
import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.sse.SSE;
import org.apache.jena.sparql.util.NodeFactoryExtra ;
import org.apache.jena.sys.JenaSystem;
import org.apache.jena.vocabulary.RDF ;
@@ -65,7 +69,7 @@ public class TestNodeFmtLib
@Test public void fmtNode_00() { testNT ("<a>", "<a>") ; }
@Test public void fmtNode_11() { testNT ("<"+RDF.getURI()+"type>",
"<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>") ; }
- @Test public void fmtNode_12() { testNT ("'123'^^xsd:integer", "123") ; }
+ @Test public void fmtNode_12() { testNT ("'123'^^xsd:integer",
"\"123\"^^<http://www.w3.org/2001/XMLSchema#integer>") ; }
@Test public void fmtNode_13() { testNT ("'abc'^^xsd:integer",
"\"abc\"^^<http://www.w3.org/2001/XMLSchema#integer>") ; }
// NB - Not 'a' which is position sensitive.
@@ -103,4 +107,44 @@ public class TestNodeFmtLib
assertEquals(output, x) ;
}
+ @Test
+ public void strNT_triple() {
+ Triple triple = SSE.parseTriple("(<urn:s> rdf:type <urn:o>)");
+ assertEquals(
+ "<urn:s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <urn:o>
.",
+ NodeFmtLib.strNT(triple));
+ }
+
+ @Test
+ public void strNT_triple_bnode() {
+ // Note that <_:abc> actually parses as a blank node and preserves its
label.
+ Triple triple = SSE.parseTriple("(<_:abc> rdf:type <urn:o>)");
+ assertEquals(
+ "_:Babc <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <urn:o>
.",
+ NodeFmtLib.strNT(triple));
+ }
+
+ @Test
+ public void strNT_triple_int() {
+ Triple triple = SSE.parseTriple("(<urn:s> <urn:value> 1)");
+ assertEquals(
+ "<urn:s> <urn:value>
\"1\"^^<http://www.w3.org/2001/XMLSchema#integer> .",
+ NodeFmtLib.strNT(triple));
+ }
+
+ @Test
+ public void strNQ_quad_namedGraph() {
+ Quad quad = SSE.parseQuad("(<urn:g> <urn:s> rdf:type <urn:o>)");
+ assertEquals(
+ "<urn:s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <urn:o>
<urn:g> .",
+ NodeFmtLib.strNQ(quad));
+ }
+
+ @Test
+ public void strNQ_quad_defaultGraph() {
+ Quad quad = SSE.parseQuad("(_ <urn:s> rdf:type <urn:o>)");
+ assertEquals(
+ "<urn:s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <urn:o>
.",
+ NodeFmtLib.strNQ(quad));
+ }
}