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 2026/03/18 11:07:48 UTC
(jena) 06/18: GH-3790: Plain RDF/XML output: write triple terms and text dir
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
commit e53c632a80710ce4571ec131e1a97aeadf343ef5
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Sun Mar 8 21:31:09 2026 +0000
GH-3790: Plain RDF/XML output: write triple terms and text dir
---
.../jena/rdf/model/impl/StatementTermImpl.java | 8 ++++
.../jena/rdfxml/xmloutput/impl/RDFXML_Basic.java | 49 +++++++++++++++++-----
2 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementTermImpl.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementTermImpl.java
index f914a41ddf..b76d3a1df4 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementTermImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementTermImpl.java
@@ -112,4 +112,12 @@ public class StatementTermImpl extends EnhNode implements StatementTerm {
return this;
return new StatementTermImpl(statement, (ModelCom)m);
}
+
+ @Override
+ public String toString() {
+ return "<<( " + statement.getSubject().toString()
+ + " " + statement.getPredicate().toString()
+ + " " + statement.getObject()
+ +" )>>";
+ }
}
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/RDFXML_Basic.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/RDFXML_Basic.java
index 152b552811..27da13563e 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/RDFXML_Basic.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/RDFXML_Basic.java
@@ -96,7 +96,7 @@ public class RDFXML_Basic extends BaseXMLWriter {
}
protected void writePredicate(Statement stmt, final PrintWriter writer)
- {
+ {
final Property predicate = stmt.getPredicate();
final RDFNode object = stmt.getObject();
@@ -106,16 +106,25 @@ public class RDFXML_Basic extends BaseXMLWriter {
SplitRDFXML.namespace(predicate),
SplitRDFXML.localname(predicate)));
- if (object instanceof Resource) {
- writer.print(" ");
- writeResourceReference(((Resource) object), writer);
- writer.println("/>");
- } else {
- writeLiteral((Literal) object, writer);
- writer.println(
- "</"
- + endElementTag(SplitRDFXML.namespace(predicate), SplitRDFXML.localname(predicate))
- + ">");
+ switch(object) {
+ case Resource resource ->{
+ writer.print(" ");
+ writeResourceReference(resource, writer);
+ writer.println("/>");
+ }
+ case Literal literal ->{
+ writeLiteral(literal, writer);
+ writer.println("</"+ endElementTag(SplitRDFXML.namespace(predicate), SplitRDFXML.localname(predicate)) + ">");
+ }
+ case StatementTerm triple ->{
+ writeTripleTerm(triple, writer);
+ writer.print(space);
+ writer.print(space);
+ writer.println("</"+ endElementTag(SplitRDFXML.namespace(predicate), SplitRDFXML.localname(predicate)) + ">");
+ }
+ default->{
+ throw new JenaException("Bad object: "+object);
+ }
}
}
@@ -184,4 +193,22 @@ public class RDFXML_Basic extends BaseXMLWriter {
writer.print( Util.substituteEntitiesInElementContent( form ) );
}
+ protected void writeTripleTerm(StatementTerm triple, PrintWriter writer) {
+ writer.print(" " + rdfAt("parseType") + "=" + attributeQuoted( "Triple" )+">");
+ writer.println();
+ Statement stmt = triple.getStatement();
+ Resource subject = stmt.getSubject();
+ writer.print(space);
+ writer.print(space);
+ writeDescriptionHeader( subject, writer );
+
+ writer.print(space);
+ writer.print(space);
+ writePredicate( stmt, writer );
+
+ writer.print(space);
+ writer.print(space);
+ writeDescriptionTrailer( subject, writer );
+ }
+
}