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 7588c3896c35c257e0c9cbbb97c306de67ec70e5 Author: Andy Seaborne <[email protected]> AuthorDate: Thu Jul 10 12:37:29 2025 +0100 GH-3303: Deal with bad URIs as namespaces when writing RDF/XML --- jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java | 2 +- .../java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java | 7 +++++++ .../src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java index b65fe3de88..5ddcdca52b 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java @@ -271,6 +271,6 @@ public class RDFFormat { public String toString() { if ( variant == null ) return lang.getName() ; - return lang.getName() + "/" + variant ; + return lang.getName() + "_" + variant ; } } diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java index 07eac7411e..045e168658 100644 --- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java +++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java @@ -221,6 +221,13 @@ abstract public class BaseXMLWriter implements RDFXMLWriterI { String value = e.getValue(); String already = this.getPrefixFor(value); if ( already == null ) { + try { + checkURI(value); + } catch(IRIException ex) { + // If it is a bad URI, skip don't use it. + // j.N may be generated. + continue; + } this.setNsPrefix(model.getNsURIPrefix(value), value); if ( writingAllModelPrefixNamespaces ) { this.addNameSpace(value); diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java index c274db9422..099a6afea9 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java @@ -338,7 +338,7 @@ public class ActionLib { * One of {@code lang} and {@code fmt} maybe null and will be calculated. * {@code actualContentType} maybe null in which case the standard content type for the syntax is used. */ - private static void writeResponse(HttpAction action, BiConsumer<OutputStream, RDFFormat> writeAction,RDFFormat fmt, String actualContentType) { + private static void writeResponse(HttpAction action, BiConsumer<OutputStream, RDFFormat> writeAction, RDFFormat fmt, String actualContentType) { String ct = actualContentType; Lang lang = fmt.getLang(); if ( ct == null ) @@ -356,7 +356,7 @@ public class ActionLib { writeAction.accept(bout, fmt); bytes = bout.toByteArray(); } catch (JenaException ex) { - // Problems formatting. + // Problems formatting in RDF/XML. action.log.warn(format("[%d] Failed to produce %s: %s", action.id, lang.getLabel(), ex.getMessage())); ServletOps.error(HttpSC.NOT_ACCEPTABLE_406); return;
