Skip to content

Commit 7cfebab

Browse files
committed
GH-4622 preserve blank node IDs with shacl validation reports from remote repository
1 parent 078af89 commit 7cfebab

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

core/http/client/src/main/java/org/eclipse/rdf4j/http/client/shacl/RemoteValidation.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,12 @@
1616

1717
import org.eclipse.rdf4j.common.annotation.InternalUseOnly;
1818
import org.eclipse.rdf4j.model.Model;
19+
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
20+
import org.eclipse.rdf4j.rio.ParserConfig;
1921
import org.eclipse.rdf4j.rio.RDFFormat;
2022
import org.eclipse.rdf4j.rio.Rio;
23+
import org.eclipse.rdf4j.rio.helpers.BasicParserSettings;
24+
import org.eclipse.rdf4j.rio.helpers.ParseErrorLogger;
2125

2226
@InternalUseOnly
2327
class RemoteValidation {
@@ -37,7 +41,9 @@ class RemoteValidation {
3741
Model asModel() {
3842
if (model == null) {
3943
try {
40-
model = Rio.parse(stringReader, baseUri, format);
44+
ParserConfig parserConfig = new ParserConfig().set(BasicParserSettings.PRESERVE_BNODE_IDS, true);
45+
model = Rio.parse(stringReader, baseUri, format, parserConfig, SimpleValueFactory.getInstance(),
46+
new ParseErrorLogger());
4147
} catch (IOException e) {
4248
throw new RuntimeException(e);
4349
}

tools/server-spring/src/main/java/org/eclipse/rdf4j/http/server/ProtocolExceptionResolver.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,14 @@ public ModelAndView resolveException(HttpServletRequest request, HttpServletResp
7878

7979
StringWriter stringWriter = new StringWriter();
8080

81-
// We choose NQUADS because we want to support streaming in the future, and because there could be a use for
82-
// different graphs in the future
83-
Rio.write(validationReportModel, stringWriter, RDFFormat.NQUADS);
81+
// We choose RDFJSON because this format doesn't rename blank nodes.
82+
Rio.write(validationReportModel, stringWriter, RDFFormat.RDFJSON);
8483

8584
statusCode = HttpServletResponse.SC_CONFLICT;
8685
errMsg = stringWriter.toString();
8786

8887
Map<String, String> headers = new HashMap<>();
89-
headers.put("Content-Type", "application/shacl-validation-report+n-quads");
88+
headers.put("Content-Type", "application/shacl-validation-report+rdf+json");
9089
model.put(SimpleResponseView.CUSTOM_HEADERS_KEY, headers);
9190
}
9291

0 commit comments

Comments
 (0)