From 27ce7d6098024b98ce3f1210c21f9c9fed201596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=CC=8Avard=20Ottestad?= Date: Wed, 20 Mar 2024 14:51:12 +0100 Subject: [PATCH] GH-3654 reverted removal of generalized rdf --- .../config/AbstractRepositoryImplConfig.java | 6 +++++- .../eclipse/rdf4j/rio/jsonld/JSONLDSettings.java | 15 +++++++++++++++ .../eclipse/rdf4j/rio/jsonld/JSONLDWriter.java | 2 ++ .../rdf4j/rio/ndjsonld/NDJSONLDWriter.java | 11 ++--------- .../rio/jsonld/JSONLDWriterBackgroundTest.java | 1 + .../rdf4j/rio/jsonld/JSONLDWriterTest.java | 1 + .../rdf4j/rio/ndjsonld/NDJSONLDWriterTest.java | 6 ++++-- 7 files changed, 30 insertions(+), 12 deletions(-) diff --git a/core/repository/api/src/main/java/org/eclipse/rdf4j/repository/config/AbstractRepositoryImplConfig.java b/core/repository/api/src/main/java/org/eclipse/rdf4j/repository/config/AbstractRepositoryImplConfig.java index a6f3c9dcce0..27891d4a5d2 100644 --- a/core/repository/api/src/main/java/org/eclipse/rdf4j/repository/config/AbstractRepositoryImplConfig.java +++ b/core/repository/api/src/main/java/org/eclipse/rdf4j/repository/config/AbstractRepositoryImplConfig.java @@ -14,6 +14,9 @@ import static org.eclipse.rdf4j.model.util.Values.literal; import static org.eclipse.rdf4j.repository.config.RepositoryConfigSchema.REPOSITORYTYPE; +import java.util.Arrays; +import java.util.Set; + import org.eclipse.rdf4j.model.BNode; import org.eclipse.rdf4j.model.Literal; import org.eclipse.rdf4j.model.Model; @@ -112,7 +115,8 @@ public static RepositoryImplConfig create(Model model, Resource resource) throws RepositoryFactory factory = RepositoryRegistry.getInstance() .get(typeLit.getLabel()) .orElseThrow(() -> new RepositoryConfigException( - "Unsupported repository type: " + typeLit.getLabel())); + "Unsupported repository type: '" + typeLit.getLabel() + "' supported types are: " + + Arrays.toString(RepositoryRegistry.getInstance().getKeys().toArray()))); RepositoryImplConfig implConfig = factory.getConfig(); implConfig.parse(model, resource); diff --git a/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDSettings.java b/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDSettings.java index 548b255cc3c..2103104b0a8 100644 --- a/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDSettings.java +++ b/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDSettings.java @@ -112,6 +112,21 @@ public class JSONLDSettings { public static final RioSetting HIERARCHICAL_VIEW = new BooleanRioSetting( "org.eclipse.rdf4j.rio.jsonld.hierarchical_view", "Hierarchical representation of the JSON", Boolean.FALSE); + /** + * If set to true, the JSON-LD processor may emit blank nodes for triple predicates, otherwise they will be omitted. + *

+ * Note: the use of blank node identifiers to label properties is obsolete, and may be removed in a future version + * of JSON-LD, + *

+ * Defaults to false. + *

+ * Can be overridden by setting system property {@code org.eclipse.rdf4j.rio.jsonld.produce_generalized_rdf}. + * + * @see JSONLD Data Structures + */ + public static final RioSetting PRODUCE_GENERALIZED_RDF = new BooleanRioSetting( + "org.eclipse.rdf4j.rio.jsonld.produce_generalized_rdf", "Produce generalized RDF", Boolean.FALSE); + /** * Private default constructor. */ diff --git a/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriter.java b/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriter.java index 07d369cd32b..3f644468bf5 100644 --- a/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriter.java +++ b/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriter.java @@ -156,6 +156,7 @@ public void endRDF() throws RDFHandlerException { opts.setCompactArrays(writerConfig.get(JSONLDSettings.COMPACT_ARRAYS)); opts.setUseRdfType(writerConfig.get(JSONLDSettings.USE_RDF_TYPE)); opts.setUseNativeTypes(writerConfig.get(JSONLDSettings.USE_NATIVE_TYPES)); + opts.setProduceGeneralizedRdf(writerConfig.get(JSONLDSettings.PRODUCE_GENERALIZED_RDF)); opts.setUriValidation(false); opts.setExceptionOnWarning(writerConfig.get(JSONLDSettings.EXCEPTION_ON_WARNING)); @@ -393,6 +394,7 @@ public Collection> getSupportedSettings() { result.add(JSONLDSettings.JSONLD_MODE); result.add(JSONLDSettings.USE_RDF_TYPE); result.add(JSONLDSettings.USE_NATIVE_TYPES); + result.add(JSONLDSettings.PRODUCE_GENERALIZED_RDF); result.add(JSONLDSettings.EXCEPTION_ON_WARNING); return result; diff --git a/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriter.java b/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriter.java index 147e4ed6ca3..d5061c5ecfa 100644 --- a/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriter.java +++ b/core/rio/jsonld/src/main/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriter.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.io.StringWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.Arrays; @@ -126,14 +127,6 @@ public RDFFormat getRDFFormat() { @Override public Collection> getSupportedSettings() { - Collection> result = new HashSet<>(Arrays.asList( - BasicWriterSettings.BASE_DIRECTIVE, - JSONLDSettings.COMPACT_ARRAYS, - JSONLDSettings.HIERARCHICAL_VIEW, - JSONLDSettings.JSONLD_MODE, - JSONLDSettings.USE_RDF_TYPE, - JSONLDSettings.USE_NATIVE_TYPES - )); - return result; + return new JSONLDWriter(new StringWriter()).getSupportedSettings(); } } diff --git a/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterBackgroundTest.java b/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterBackgroundTest.java index 8514783fa6c..c3d5c70b7d1 100644 --- a/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterBackgroundTest.java +++ b/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterBackgroundTest.java @@ -121,6 +121,7 @@ protected RioSetting[] getExpectedSupportedSettings() { BasicWriterSettings.PRETTY_PRINT, JSONLDSettings.COMPACT_ARRAYS, JSONLDSettings.JSONLD_MODE, + JSONLDSettings.PRODUCE_GENERALIZED_RDF, JSONLDSettings.USE_RDF_TYPE, JSONLDSettings.USE_NATIVE_TYPES, JSONLDSettings.EXCEPTION_ON_WARNING diff --git a/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterTest.java b/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterTest.java index 5a94b391a6c..8bb4794ab90 100644 --- a/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterTest.java +++ b/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/jsonld/JSONLDWriterTest.java @@ -245,6 +245,7 @@ protected RioSetting[] getExpectedSupportedSettings() { BasicWriterSettings.PRETTY_PRINT, JSONLDSettings.COMPACT_ARRAYS, JSONLDSettings.JSONLD_MODE, + JSONLDSettings.PRODUCE_GENERALIZED_RDF, JSONLDSettings.USE_RDF_TYPE, JSONLDSettings.USE_NATIVE_TYPES, JSONLDSettings.EXCEPTION_ON_WARNING diff --git a/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriterTest.java b/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriterTest.java index 0ff931c2278..c235db52acb 100644 --- a/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriterTest.java +++ b/core/rio/jsonld/src/test/java/org/eclipse/rdf4j/rio/ndjsonld/NDJSONLDWriterTest.java @@ -52,11 +52,13 @@ protected void setupParserConfig(ParserConfig config) { protected RioSetting[] getExpectedSupportedSettings() { return new RioSetting[] { BasicWriterSettings.BASE_DIRECTIVE, + BasicWriterSettings.PRETTY_PRINT, JSONLDSettings.COMPACT_ARRAYS, - JSONLDSettings.HIERARCHICAL_VIEW, JSONLDSettings.JSONLD_MODE, + JSONLDSettings.PRODUCE_GENERALIZED_RDF, JSONLDSettings.USE_RDF_TYPE, - JSONLDSettings.USE_NATIVE_TYPES + JSONLDSettings.USE_NATIVE_TYPES, + JSONLDSettings.EXCEPTION_ON_WARNING }; } }