From e7d930734632cd8160f312f5ae9f8f57da1e93d2 Mon Sep 17 00:00:00 2001 From: michielrogissart-cognizone Date: Wed, 6 Sep 2023 09:29:46 +0200 Subject: [PATCH] T18011 JenaUtils.read support jsonld --- .../zone/cogni/libs/jena/utils/JenaUtils.java | 30 +++++++---------- .../java/zone/cogni/sem/jena/JenaUtils.java | 33 ++++++++----------- 2 files changed, 24 insertions(+), 39 deletions(-) diff --git a/cogni-libs/src/main/java/zone/cogni/libs/jena/utils/JenaUtils.java b/cogni-libs/src/main/java/zone/cogni/libs/jena/utils/JenaUtils.java index ab12b0f5..6d09e396 100644 --- a/cogni-libs/src/main/java/zone/cogni/libs/jena/utils/JenaUtils.java +++ b/cogni-libs/src/main/java/zone/cogni/libs/jena/utils/JenaUtils.java @@ -37,6 +37,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -49,6 +50,14 @@ public class JenaUtils { private static final Logger log = LoggerFactory.getLogger(JenaUtils.class); + private static final Map extensionToLanguageMap = Collections.synchronizedMap(new HashMap<>()); + + static { + extensionToLanguageMap.put("nt", "N-TRIPLE"); + extensionToLanguageMap.put("n3", "N3"); + extensionToLanguageMap.put("ttl", "TURTLE"); + extensionToLanguageMap.put("jsonld", "JSONLD"); + } private JenaUtils() { } @@ -237,26 +246,9 @@ private static RDFReader getReaderByRdfSyntax(Model model, String language) { private static String getRdfSyntax(org.springframework.core.io.Resource resource) { String extension = StringUtils.lowerCase(StringUtils.substringAfterLast(resource.getFilename(), ".")); - if ("owl".equals(extension) || "rdf".equals(extension)) { - // .rdf is extension for application/rdf+xml and is default syntax in Jena - // .owl is here for legacy reasons, but it is often RDF XML because it is the Protégé default - return null; - } - if ("nt".equals(extension)) { - // .nt is extension for application/n-triples - return "N-TRIPLE"; - } - if ("n3".equals(extension)) { - // .n3 is extension for text/n3 - return "N3"; - } - if ("ttl".equals(extension)) { - // .ttl is extension for text/turtle - return "TURTLE"; - } - // any other extension falls back to RDF XML - return null; + // when return value is null, fall back to RDF/XML + return extensionToLanguageMap.getOrDefault(extension, null); } public static void write(Model model, File file) { diff --git a/cogni-sem/src/main/java/zone/cogni/sem/jena/JenaUtils.java b/cogni-sem/src/main/java/zone/cogni/sem/jena/JenaUtils.java index bb71d144..6dfab664 100644 --- a/cogni-sem/src/main/java/zone/cogni/sem/jena/JenaUtils.java +++ b/cogni-sem/src/main/java/zone/cogni/sem/jena/JenaUtils.java @@ -38,6 +38,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -50,8 +51,17 @@ import java.util.function.Supplier; import java.util.stream.Collectors; +@Deprecated public class JenaUtils { private static final Logger log = LoggerFactory.getLogger(JenaUtils.class); + private static final Map extensionToLanguageMap = Collections.synchronizedMap(new HashMap<>()); + + static { + extensionToLanguageMap.put("nt", "N-TRIPLE"); + extensionToLanguageMap.put("n3", "N3"); + extensionToLanguageMap.put("ttl", "TURTLE"); + extensionToLanguageMap.put("jsonld", "JSONLD"); + } private JenaUtils() { } @@ -253,28 +263,11 @@ private static RDFReader getReaderByRdfSyntax(Model model, String language) { } } - private static String getRdfSyntax(Resource resource) { + private static String getRdfSyntax(org.springframework.core.io.Resource resource) { String extension = StringUtils.lowerCase(StringUtils.substringAfterLast(resource.getFilename(), ".")); - if ("owl".equals(extension) || "rdf".equals(extension)) { - // .rdf is extension for application/rdf+xml and is default syntax in Jena - // .owl is here for legacy reasons, but it is often RDF XML because it is the Protégé default - return null; - } - if ("nt".equals(extension)) { - // .nt is extension for application/n-triples - return "N-TRIPLE"; - } - if ("n3".equals(extension)) { - // .n3 is extension for text/n3 - return "N3"; - } - if ("ttl".equals(extension)) { - // .ttl is extension for text/turtle - return "TURTLE"; - } - // any other extension falls back to RDF XML - return null; + // when return value is null, fall back to RDF/XML + return extensionToLanguageMap.getOrDefault(extension, null); } public static void write(Model model, File file) {