diff --git a/src/main/java/fr/inria/corese/core/next/api/base/model/AbstractIRI.java b/src/main/java/fr/inria/corese/core/next/api/base/model/AbstractIRI.java
index be3fe895a..ba4e58153 100644
--- a/src/main/java/fr/inria/corese/core/next/api/base/model/AbstractIRI.java
+++ b/src/main/java/fr/inria/corese/core/next/api/base/model/AbstractIRI.java
@@ -73,7 +73,7 @@ public int compareTo(IRI o) {
public boolean equals(Object o) {
if (this == o)
return true;
- if (o == null || getClass() != o.getClass())
+ if (! (o instanceof IRI))
return false;
AbstractIRI that = (AbstractIRI) o;
return this.stringValue().equals(that.stringValue());
diff --git a/src/main/java/fr/inria/corese/core/next/api/io/serialization/RDFSerializer.java b/src/main/java/fr/inria/corese/core/next/api/io/serialization/RDFSerializer.java
index 929acfa58..1e1501e4f 100644
--- a/src/main/java/fr/inria/corese/core/next/api/io/serialization/RDFSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/api/io/serialization/RDFSerializer.java
@@ -29,4 +29,18 @@ public interface RDFSerializer {
* process
*/
void write(final Writer writer) throws SerializationException;
+
+ /**
+ * Returns the format name for error messages and logging.
+ *
+ * @return the format name (e.g., "TriG", "Turtle").
+ */
+ default String getFormatName() {
+ return getRDFFormat().getName();
+ };
+
+ /**
+ * Gets the RDF format that this serializer generates.
+ */
+ RDFFormat getRDFFormat();
}
\ No newline at end of file
diff --git a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/FOAF.java b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/FOAF.java
new file mode 100644
index 000000000..c45fcf186
--- /dev/null
+++ b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/FOAF.java
@@ -0,0 +1,37 @@
+package fr.inria.corese.core.next.impl.common.vocabulary;
+
+import fr.inria.corese.core.next.api.IRI;
+import fr.inria.corese.core.next.impl.common.BasicIRI;
+
+public enum FOAF implements Vocabulary {
+ ;
+
+ private final IRI iri;
+
+ FOAF(String localName) {
+ this.iri = new BasicIRI(getNamespace(), localName);
+ }
+
+ @Override
+ public IRI getIRI() {
+ return this.iri;
+ }
+
+ @Override
+ public String getNamespace() {
+ return getVocabularyNamespace(); // Referencing the directly defined static NS
+ }
+
+ @Override
+ public String getPreferredPrefix() {
+ return getVocabularyPreferredPrefix();
+ }
+
+ public static String getVocabularyNamespace() {
+ return "http://xmlns.com/foaf/0.1/";
+ }
+
+ public static String getVocabularyPreferredPrefix() {
+ return "foaf";
+ }
+}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/OWL.java b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/OWL.java
index 7ea0283ca..88360f476 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/OWL.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/OWL.java
@@ -51,8 +51,6 @@ public enum OWL implements Vocabulary {
private final IRI iri;
- public static final String NS = "http://www.w3.org/2002/07/owl#";
-
OWL(String localName) {
this.iri = new BasicIRI(getNamespace(), localName);
}
@@ -64,11 +62,19 @@ public IRI getIRI() {
@Override
public String getNamespace() {
- return NS; // Referencing the directly defined static NS
+ return getVocabularyNamespace(); // Referencing the directly defined static NS
}
@Override
public String getPreferredPrefix() {
+ return getVocabularyPreferredPrefix();
+ }
+
+ public static String getVocabularyNamespace() {
+ return "http://www.w3.org/2002/07/owl#";
+ }
+
+ public static String getVocabularyPreferredPrefix() {
return "owl";
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDF.java b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDF.java
index eaf569ddd..123b9e156 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDF.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDF.java
@@ -52,11 +52,19 @@ public IRI getIRI() {
@Override
public String getNamespace() {
- return "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ return getVocabularyNamespace();
}
@Override
public String getPreferredPrefix() {
+ return getVocabularyPreferredPrefix();
+ }
+
+ public static String getVocabularyNamespace() {
+ return "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ }
+
+ public static String getVocabularyPreferredPrefix() {
return "rdf";
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDFS.java b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDFS.java
index 06e9545cd..00872986c 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDFS.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/RDFS.java
@@ -87,7 +87,7 @@ public enum RDFS implements Vocabulary {
@Override
public String getNamespace() {
- return "http://www.w3.org/2000/01/rdf-schema#";
+ return getVocabularyNamespace();
}
@Override
@@ -97,6 +97,14 @@ public IRI getIRI() {
@Override
public String getPreferredPrefix() {
+ return getVocabularyPreferredPrefix();
+ }
+
+ public static String getVocabularyNamespace() {
+ return "http://www.w3.org/2000/01/rdf-schema#";
+ }
+
+ public static String getVocabularyPreferredPrefix() {
return "rdfs";
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/Vocabulary.java b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/Vocabulary.java
index 5d862c57b..b64200467 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/Vocabulary.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/Vocabulary.java
@@ -21,4 +21,12 @@ public interface Vocabulary {
* @return the preferred prefix of this vocabulary
*/
String getPreferredPrefix();
+
+ static String getVocabularyNamespace() {
+ throw new RuntimeException("Unimplemented function");
+ }
+
+ static String getVocabularyPreferredPrefix() {
+ throw new RuntimeException("Unimplemented function");
+ }
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/XSD.java b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/XSD.java
index da2477ba4..a9765cab7 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/XSD.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/common/vocabulary/XSD.java
@@ -208,11 +208,19 @@ public IRI getIRI() {
@Override
public String getNamespace() {
- return "http://www.w3.org/2001/XMLSchema#";
+ return getVocabularyNamespace();
}
@Override
public String getPreferredPrefix() {
+ return getVocabularyPreferredPrefix();
+ }
+
+ public static String getVocabularyNamespace() {
+ return "http://www.w3.org/2001/XMLSchema#";
+ }
+
+ public static String getVocabularyPreferredPrefix() {
return "xsd";
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/exception/SerializationException.java b/src/main/java/fr/inria/corese/core/next/impl/exception/SerializationException.java
index d5ba83d8e..28bf2180d 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/exception/SerializationException.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/exception/SerializationException.java
@@ -14,6 +14,8 @@ public class SerializationException extends CoreseException {
private final int lineNumber;
private final int columnNumber;
+ public static final String DEFAULT_FORMAT = "unknown";
+
public SerializationException(String message, String formatName) {
this(message, formatName, -1, -1, null);
}
@@ -27,7 +29,7 @@ public SerializationException(String message, String formatName) {
* the {@link #getMessage()} method).
* @param formatName the name of the RDF format being processed when the error
* occurred.
- * Use "unknown" if the format is not applicable or cannot be
+ * Use DEFAULT_FORMAT if the format is not applicable or cannot be
* determined.
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method).
@@ -71,7 +73,7 @@ public SerializationException(String message, String formatName, int lineNumber,
*/
private static String buildMessage(String base, String format, int line, int col) {
StringBuilder sb = new StringBuilder(base);
- if (!"unknown".equals(format)) {
+ if (!DEFAULT_FORMAT.equals(format)) {
sb.append(" [Format: ").append(format).append("]");
}
if (line > 0) {
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/common/IOConstants.java b/src/main/java/fr/inria/corese/core/next/impl/io/common/IOConstants.java
new file mode 100644
index 000000000..2e97653fc
--- /dev/null
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/common/IOConstants.java
@@ -0,0 +1,70 @@
+package fr.inria.corese.core.next.impl.io.common;
+
+import fr.inria.corese.core.util.Property;
+
+/**
+ * Shared constants between serializers and parsers
+ */
+public class IOConstants {
+
+ protected IOConstants() {
+
+ }
+
+ // Generic characters
+
+ public static final String POINT = ".";
+
+ public static final String SEMICOLON = ";";
+
+ public static final String COMMA = ",";
+
+ public static final String COLON = ":";
+
+ public static final String SPACE = " ";
+
+ public static final String TAB = "\t";
+
+ public static final String LINE_FEED = "\n";
+
+ public static final String HASH = "#";
+
+ public static final String CARRIAGE_RETURN = "\r";
+
+ public static final String SLASH = "/";
+
+ public static final String QUOTE = "\"";
+
+ public static final String AT = "@";
+
+ public static final String LT = "<"; // Less than
+
+ public static final String GT = ">"; // Greater than
+
+ // RDF-specific characters
+
+ /**
+ * The blank node prefix.
+ */
+ public static final String BLANK_NODE_PREFIX = "_:";
+
+ public static final String IRI_START = "<";
+
+ public static final String IRI_END = ">";
+
+ public static final String RDF_TYPE_SHORTCUT = "a";
+
+ /**
+ * Returns the configured default base URI for IRI resolution.
+ * The value is configurable via {@code Property.Value.DEFAULT_BASE_URI}.
+ *
+ * @return the default base URI from configuration, or null if not set
+ */
+ public static String getDefaultBaseURI() {
+ String configuredValue = Property.getStringValue(Property.Value.DEFAULT_BASE_URI);
+ if (configuredValue == null || configuredValue.isEmpty()) {
+ return "http://example.org/";
+ }
+ return configuredValue;
+ }
+}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/option/JSONLDProcessorOptions.java b/src/main/java/fr/inria/corese/core/next/impl/io/common/JSONLDOptions.java
similarity index 95%
rename from src/main/java/fr/inria/corese/core/next/impl/io/option/JSONLDProcessorOptions.java
rename to src/main/java/fr/inria/corese/core/next/impl/io/common/JSONLDOptions.java
index c8f4a640b..bf7f88443 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/option/JSONLDProcessorOptions.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/common/JSONLDOptions.java
@@ -1,4 +1,4 @@
-package fr.inria.corese.core.next.impl.io.option;
+package fr.inria.corese.core.next.impl.io.common;
import java.net.URI;
import java.time.Duration;
@@ -18,7 +18,7 @@
* @see JsonLdOptions
*/
-public class JSONLDProcessorOptions extends AbstractIOOptions
+public class JSONLDOptions extends AbstractIOOptions
implements BaseIRIOptions {
private final Builder builder;
@@ -28,7 +28,7 @@ public class JSONLDProcessorOptions extends AbstractIOOptions
*
* @param builder the builder containing the options for this processor
*/
- protected JSONLDProcessorOptions(Builder builder) {
+ protected JSONLDOptions(Builder builder) {
this.builder = builder;
}
@@ -141,18 +141,18 @@ public String getBaseIRI() {
}
/**
- * Builder for creating instances of JSONLDProcessorOptions.
+ * Builder for creating instances of JSONLDOptions.
* This nested static class provides a fluent API for configuring the
* various options before building the final
- * {@code JSONLDProcessorOptions} object.
+ * {@code JSONLDOptions} object.
*/
- public static class Builder extends AbstractIOOptions.Builder {
+ public static class Builder extends AbstractIOOptions.Builder {
private final JsonLdOptions options = new JsonLdOptions();
@Override
- public JSONLDProcessorOptions build() {
- return new JSONLDProcessorOptions(this);
+ public JSONLDOptions build() {
+ return new JSONLDOptions(this);
}
/**
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/parser/common/AbstractTurtleTriGListener.java b/src/main/java/fr/inria/corese/core/next/impl/io/parser/common/AbstractTurtleTriGListener.java
index b6fa44004..1faea3780 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/parser/common/AbstractTurtleTriGListener.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/parser/common/AbstractTurtleTriGListener.java
@@ -97,7 +97,7 @@ public String resolveIRI(String raw) {
try {
raw = raw.trim();
- if (raw.equals(ParserConstants.A)) {
+ if (raw.equals(ParserConstants.RDF_TYPE_SHORTCUT)) {
return RDF.type.getIRI().stringValue();
}
@@ -234,7 +234,7 @@ public String buildURI(String scheme, String authority, String path, String quer
result.append(ParserConstants.QUERY_MARK).append(query);
}
if (fragment != null) {
- result.append(ParserConstants.FRAGMENT).append(fragment);
+ result.append(ParserConstants.HASH).append(fragment);
}
return normalizeURI(result.toString());
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParser.java b/src/main/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParser.java
index 9048a9d7d..b6d085762 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParser.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParser.java
@@ -24,7 +24,7 @@
import fr.inria.corese.core.next.impl.common.literal.XSD;
import fr.inria.corese.core.next.impl.common.util.IRIUtils;
import fr.inria.corese.core.next.impl.exception.ParsingErrorException;
-import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
/**
* Parser for JSON-LD RDF files. This parser is based on the Titanium JSON-LD library.
@@ -43,7 +43,7 @@ public class JSONLDParser extends AbstractRDFParser {
* @param factory the value factory used to create RDF values
*/
public JSONLDParser(Model model, ValueFactory factory) {
- this(model, factory, new JSONLDProcessorOptions.Builder().build());
+ this(model, factory, new JSONLDOptions.Builder().build());
}
/**
@@ -96,8 +96,8 @@ public void parse(Reader reader, String baseURI) {
private void parseJSONLDDocument(Document document, String baseURI) {
try {
JsonLdOptions options = new JsonLdOptions();
- if(this.getConfig() instanceof JSONLDProcessorOptions) {
- options = ((JSONLDProcessorOptions) this.getConfig()).getJsonLdOptions();
+ if(this.getConfig() instanceof JSONLDOptions) {
+ options = ((JSONLDOptions) this.getConfig()).getJsonLdOptions();
}
if(baseURI != null && !baseURI.isEmpty()) {
options.setBase(URI.create(baseURI));
@@ -148,7 +148,7 @@ public RdfQuadConsumer quad(String subject, String predicate, String object, Str
} else if(IRIUtils.isStandardIRI(object)) {
objValue = getValueFactory().createIRI(object);
} else {
- throw new RdfConsumerException("Invalid object: " + object);
+ throw new ParsingErrorException("Invalid object: " + object);
}
// Graph
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLUtils.java b/src/main/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLUtils.java
index 07b1f1fc2..7ac142784 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLUtils.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLUtils.java
@@ -4,6 +4,7 @@
import fr.inria.corese.core.next.impl.common.literal.XSD;
import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
import fr.inria.corese.core.next.impl.exception.IncorrectFormatException;
+import fr.inria.corese.core.next.impl.exception.ParsingErrorException;
import fr.inria.corese.core.next.impl.io.parser.util.ParserConstants;
import org.xml.sax.*;
import java.util.List;
@@ -104,7 +105,7 @@ public static String resolveAgainstBase(String iri, String baseURI) {
try {
return new java.net.URI(baseURI).resolve(iri).toString();
} catch (Exception e) {
- throw new IncorrectFormatException("Failed to resolve IRI: " + iri + " against base: " + baseURI, e);
+ throw new ParsingErrorException("Failed to resolve IRI: " + iri + " against base: " + baseURI, e);
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGListerner.java b/src/main/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGListerner.java
index 83dcfc7d0..505c9f311 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGListerner.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGListerner.java
@@ -444,7 +444,7 @@ private Resource extractLabelOrSubject(TriGParser.LabelOrSubjectContext ctx) {
*/
private IRI extractVerb(TriGParser.VerbContext ctx) {
String verbText = ctx.getText();
- if (verbText.equals(ParserConstants.A)) {
+ if (verbText.equals(ParserConstants.RDF_TYPE_SHORTCUT)) {
return delegate.createIRI(RDF.type.getIRI().stringValue());
}
return delegate.createIRI(delegate.resolveIRI(verbText));
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/parser/util/ParserConstants.java b/src/main/java/fr/inria/corese/core/next/impl/io/parser/util/ParserConstants.java
index 172369287..a60a53de8 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/parser/util/ParserConstants.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/parser/util/ParserConstants.java
@@ -1,5 +1,6 @@
package fr.inria.corese.core.next.impl.io.parser.util;
+import fr.inria.corese.core.next.impl.io.common.IOConstants;
import fr.inria.corese.core.util.Property;
/**
@@ -7,15 +8,13 @@
* used in the TriG parser. Centralizing these values helps in
* maintaining the code and improves readability.
*/
-public final class ParserConstants {
+public final class ParserConstants extends IOConstants {
public static final String BASE = "@base";
public static final String PREFIX = "@prefix";
- public static final String POINT = ".";
-
public static final String DOUBLE_DOT = "..";
public static final String SPARQL_BASE = "BASE";
@@ -24,61 +23,33 @@ public final class ParserConstants {
public static final String GRAPH = "GRAPH";
- public static final String A = "a";
-
public static final String EMPTY_STRING = "";
public static final String E = "e";
// --- Delimiters and Punctuation ---
- public static final String COLON = ":";
-
- public static final String SEMICOLON = ";";
-
- public static final String COMMA = ",";
-
public static final String DOT = ".";
public static final String EMPTY_SQUARE_BRACKET = "[]";
// --- IRI and Literal Delimiters ---
- public static final String IRI_START = "<";
-
- public static final String IRI_END = ">";
-
- public static final String QUOTE = "\"";
-
public static final String APOSTROPHE = "'";
public static final String TRIPLE_QUOTE = "\"\"\"";
public static final String TRIPLE_APOSTROPHE = "'''";
- public static final String SLASH = "/";
-
public static final String DOUBLE_SLASH = "//";
-
- public static final String AT = "@";
- /**
- * The blank node prefix.
- */
- public static final String BLANK_NODE_PREFIX = "_:";
-
public static final String FILE_PROTOCOL_SIMPLE = "file:/";
public static final String FILE_PROTOCOL_TRIPLE_SLASH = "file:///";
public static final String FILE_PROTOCOL = "file://";
public static final String PNAME_NS_PATTERN = "^[A-Za-z_][A-Za-z0-9_-]*$";
public static final String MINUS = "-";
- public static final String SPACE = " ";
- public static final String TAB = "\t";
- public static final String LINE_FEED = "\n";
- public static final String CARRIAGE_RETURN = "\r";
- public static final String FRAGMENT = "#";
public static final String QUERY_MARK = "?";
public static final String PLUS = "+";
@@ -86,17 +57,4 @@ public final class ParserConstants {
private ParserConstants() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}
- /**
- * Returns the configured default base URI for IRI resolution.
- * The value is configurable via {@code Property.Value.DEFAULT_BASE_URI}.
- *
- * @return the default base URI from configuration, or null if not set
- */
- public static String getDefaultBaseURI() {
- String configuredValue = Property.getStringValue(Property.Value.DEFAULT_BASE_URI);
- if (configuredValue == null || configuredValue.isEmpty()) {
- return "http://example.org/";
- }
- return configuredValue;
- }
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/DefaultSerializerFactory.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/SerializerFactory.java
similarity index 86%
rename from src/main/java/fr/inria/corese/core/next/impl/io/serialization/DefaultSerializerFactory.java
rename to src/main/java/fr/inria/corese/core/next/impl/io/serialization/SerializerFactory.java
index 4c3cc94e2..ee8086166 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/DefaultSerializerFactory.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/SerializerFactory.java
@@ -5,22 +5,21 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.IOOptions;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
import fr.inria.corese.core.next.impl.io.serialization.canonical.RDFC10Canonicalizer;
-import fr.inria.corese.core.next.impl.io.serialization.canonical.RDFC10Options;
+import fr.inria.corese.core.next.impl.io.serialization.canonical.RDFC10SerializerOptions;
import fr.inria.corese.core.next.impl.io.serialization.canonical.RDFC10Serializer;
import fr.inria.corese.core.next.impl.io.serialization.nquads.NQuadsSerializerOptions;
import fr.inria.corese.core.next.impl.io.serialization.nquads.NQuadsSerializer;
import fr.inria.corese.core.next.impl.io.serialization.ntriples.NTriplesSerializerOptions;
import fr.inria.corese.core.next.impl.io.serialization.ntriples.NTriplesSerializer;
-import fr.inria.corese.core.next.impl.io.serialization.rdfxml.XMLSerializerOption;
-import fr.inria.corese.core.next.impl.io.serialization.rdfxml.XMLSerializer;
+import fr.inria.corese.core.next.impl.io.serialization.rdfxml.RDFXMLSerializerOption;
+import fr.inria.corese.core.next.impl.io.serialization.rdfxml.RDFXMLSerializer;
import fr.inria.corese.core.next.impl.io.serialization.trig.TriGSerializerOptions;
import fr.inria.corese.core.next.impl.io.serialization.trig.TriGSerializer;
import fr.inria.corese.core.next.impl.io.serialization.turtle.TurtleSerializerOptions;
import fr.inria.corese.core.next.impl.io.serialization.turtle.TurtleSerializer;
import fr.inria.corese.core.next.impl.io.serialization.jsonld.JSONLDSerializer;
-import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +31,7 @@
import java.util.function.BiFunction;
/**
- * Default implementation of {@link SerializerFactory}.
+ * Default implementation of {@link fr.inria.corese.core.next.api.io.serialization.SerializerFactory}.
* This factory is responsible for creating instances of {@link RDFSerializer}
* based on the requested {@link RDFFormat}. It uses a registry pattern
* to map each format to its corresponding serializer constructor,
@@ -45,15 +44,15 @@
* to default configurations if an incompatible type is provided.
*
*/
-public class DefaultSerializerFactory implements SerializerFactory {
+public class SerializerFactory implements fr.inria.corese.core.next.api.io.serialization.SerializerFactory {
- private static final Logger logger = LoggerFactory.getLogger(DefaultSerializerFactory.class);
+ private static final Logger logger = LoggerFactory.getLogger(SerializerFactory.class);
private final Map> registry;
private final ValueFactory coreseValueFactory;
/**
- * Constructs a {@code DefaultSerializerFactory} and populates its registry
+ * Constructs a {@code SerializerFactory} and populates its registry
* with constructors for all known {@link RDFFormat} implementations.
* Each constructor attempts to cast the generic {@link IOOptions} to
* the
@@ -61,7 +60,7 @@ public class DefaultSerializerFactory implements SerializerFactory {
* possible,
* it falls back to the format's default configuration.
*/
- public DefaultSerializerFactory() {
+ public SerializerFactory() {
this.coreseValueFactory = new CoreseAdaptedValueFactory();
Map> tempRegistry = new HashMap<>();
@@ -108,28 +107,28 @@ public DefaultSerializerFactory() {
});
tempRegistry.put(RDFFormat.RDFXML, (model, genericConfig) -> {
- if (genericConfig instanceof XMLSerializerOption specificConfig) {
- return new XMLSerializer(model, specificConfig);
+ if (genericConfig instanceof RDFXMLSerializerOption specificConfig) {
+ return new RDFXMLSerializer(model, specificConfig);
} else {
logger.warn("Provided config for RDFXML is not RDFXmlConfig (was {}). Using default RDFXmlConfig.",
genericConfig.getClass().getSimpleName());
- return new XMLSerializer(model, XMLSerializerOption.defaultConfig());
+ return new RDFXMLSerializer(model, RDFXMLSerializerOption.defaultConfig());
}
});
tempRegistry.put(RDFFormat.JSONLD, (model, genericConfig) -> {
- if (genericConfig instanceof JSONLDProcessorOptions specificConfig) {
+ if (genericConfig instanceof JSONLDOptions specificConfig) {
return new JSONLDSerializer(model, specificConfig);
} else {
logger.warn(
"Provided config for JSONLD is not TitaniumJSONLDProcessorOption (was {}). Using default TitaniumJSONLDProcessorOption.",
genericConfig.getClass().getSimpleName());
- return new JSONLDSerializer(model, new JSONLDProcessorOptions.Builder().build());
+ return new JSONLDSerializer(model, new JSONLDOptions.Builder().build());
}
});
tempRegistry.put(RDFFormat.RDFC_1_0, (model, genericConfig) -> {
- if (genericConfig instanceof RDFC10Options specificConfig) {
+ if (genericConfig instanceof RDFC10SerializerOptions specificConfig) {
RDFC10Canonicalizer canonicalizer = new RDFC10Canonicalizer(
specificConfig.getHashAlgorithm(),
specificConfig.getPermutationLimit(),
@@ -139,7 +138,7 @@ public DefaultSerializerFactory() {
} else {
logger.warn("Provided config for RDFC_1_0 is not CanonicalOption (was {}). Using default CanonicalOption.",
genericConfig != null ? genericConfig.getClass().getSimpleName() : "null");
- RDFC10Options defaultConfig = RDFC10Options.defaultConfig();
+ RDFC10SerializerOptions defaultConfig = RDFC10SerializerOptions.defaultConfig();
RDFC10Canonicalizer canonicalizer = new RDFC10Canonicalizer(
defaultConfig.getHashAlgorithm(),
defaultConfig.getPermutationLimit(),
@@ -151,13 +150,13 @@ public DefaultSerializerFactory() {
tempRegistry.put(RDFFormat.JSONLD, (model, genericConfig) -> {
- if (genericConfig instanceof JSONLDProcessorOptions specificConfig) {
+ if (genericConfig instanceof JSONLDOptions specificConfig) {
return new JSONLDSerializer(model, specificConfig);
} else {
logger.warn(
"Provided config for JSONLD is not TitaniumJSONLDProcessorOption (was {}). Using default TitaniumJSONLDProcessorOption.",
genericConfig.getClass().getSimpleName());
- return new JSONLDSerializer(model, new JSONLDProcessorOptions.Builder().build());
+ return new JSONLDSerializer(model, new JSONLDOptions.Builder().build());
}
});
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractGraphSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractGraphSerializer.java
index 12a72c708..a7801bd36 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractGraphSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractGraphSerializer.java
@@ -20,6 +20,8 @@
import java.util.TreeMap;
import java.util.stream.Collectors;
+import fr.inria.corese.core.next.impl.common.vocabulary.*;
+import fr.inria.corese.core.next.impl.exception.ParsingErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,7 +32,6 @@
import fr.inria.corese.core.next.api.Statement;
import fr.inria.corese.core.next.api.Value;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.impl.common.literal.RDF;
import fr.inria.corese.core.next.impl.exception.SerializationException;
import fr.inria.corese.core.next.impl.io.serialization.option.AbstractSerializerOption;
import fr.inria.corese.core.next.impl.io.serialization.option.AbstractTFamilyOption;
@@ -89,12 +90,12 @@ protected AbstractGraphSerializer(Model model, AbstractSerializerOption option)
* This should be called before accessing any methods specific to AbstractTFamilyConfig.
*
* @return The config cast to AbstractTFamilyConfig.
- * @throws IllegalStateException if the config is not an instance of AbstractTFamilyConfig.
+ * @throws SerializationException if the config is not an instance of AbstractTFamilyConfig.
*/
private AbstractTFamilyOption getTFamilyOption() {
if (!(option instanceof AbstractTFamilyOption)) {
- throw new IllegalStateException("Current serializer configuration is not an instance of AbstractTFamilyOption. " +
- "Features like prefixes, compact syntax, and pretty-printing are only available for T-Family formats.");
+ throw new SerializationException("Current serializer configuration is not an instance of AbstractTFamilyOption. " +
+ "Features like prefixes, compact syntax, and pretty-printing are only available for T-Family formats.", this.getFormatName());
}
return (AbstractTFamilyOption) option;
}
@@ -134,13 +135,6 @@ public void write(Writer writer) throws SerializationException {
}
}
- /**
- * Returns the format name for error messages and logging.
- *
- * @return the format name (e.g., "TriG", "Turtle").
- */
- protected abstract String getFormatName();
-
/**
* Abstract method for the main statement writing,
* to be implemented by subclasses to handle format-specific details.
@@ -287,7 +281,7 @@ protected void writeStatement(Writer writer, Statement stmt) throws IOException
*/
protected void writePredicate(Writer writer, Value predicate) throws IOException {
AbstractTFamilyOption tFamilyConfig = getTFamilyOption();
- if (tFamilyConfig.useRdfTypeShortcut() && predicate.stringValue().equals(SerializationConstants.RDF_TYPE)) {
+ if (tFamilyConfig.useRdfTypeShortcut() && predicate.equals(RDF.type.getIRI())) {
writer.write(SerializationConstants.RDF_TYPE_SHORTCUT);
} else {
writeValue(writer, predicate);
@@ -315,7 +309,7 @@ protected void writeValue(Writer writer, Value value) throws IOException {
Resource bNode = (Resource) value;
if (currentlyWritingBlankNodes.contains(bNode)) {
- writer.write(SerializationConstants.BNODE_PREFIX + bNode.stringValue());
+ writer.write(SerializationConstants.BLANK_NODE_PREFIX + bNode.stringValue());
return;
}
@@ -343,13 +337,12 @@ protected void writeValue(Writer writer, Value value) throws IOException {
}
if (!handled) {
- writer.write(SerializationConstants.BNODE_PREFIX + bNode.stringValue());
+ writer.write(SerializationConstants.BLANK_NODE_PREFIX + bNode.stringValue());
}
currentlyWritingBlankNodes.remove(bNode);
} else {
- throw new IllegalArgumentException("Unsupported value type for " + getFormatName() +
- " serialization: " + value.getClass().getName());
+ throw new SerializationException("Unsupported value type serialization: " + value.getClass().getName(), this.getFormatName());
}
}
@@ -405,9 +398,9 @@ protected void writeLiteral(Writer writer, Literal literal) throws IOException {
literal.getLanguage().ifPresent(lang -> {
try {
- writer.write(SerializationConstants.AT_SIGN + lang);
+ writer.write(SerializationConstants.AT + lang);
} catch (IOException e) {
- throw new UncheckedIOException("Error writing language tag to stream", e);
+ throw new SerializationException("Error writing language tag to stream", this.getFormatName(), e);
}
});
@@ -446,7 +439,7 @@ protected boolean shouldWriteDatatype(Literal literal) {
}
return option.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.ALWAYS_TYPED ||
- (!datatype.stringValue().equals(SerializationConstants.XSD_STRING) &&
+ (!datatype.equals(XSD.xsdString.getIRI()) &&
option.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.MINIMAL);
}
@@ -468,8 +461,8 @@ protected void writeInlineBlankNode(Writer writer, List properties) t
boolean firstProperty = true;
for (Statement stmt : properties) {
- if (stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_FIRST) ||
- stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_REST)) {
+ if (stmt.getPredicate().equals(RDF.first.getIRI()) ||
+ stmt.getPredicate().equals(RDF.rest.getIRI())) {
continue;
}
@@ -598,12 +591,12 @@ protected boolean writeRDFList(Writer writer, Resource listHead) throws IOExcept
}
Optional first = statements.stream()
- .filter(stmt -> stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_FIRST))
+ .filter(stmt -> stmt.getPredicate().equals(RDF.first.getIRI()))
.map(Statement::getObject)
.findFirst();
Optional rest = statements.stream()
- .filter(stmt -> stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_REST))
+ .filter(stmt -> stmt.getPredicate().equals(RDF.rest.getIRI()))
.map(Statement::getObject)
.findFirst();
@@ -614,7 +607,7 @@ protected boolean writeRDFList(Writer writer, Resource listHead) throws IOExcept
items.add(first.get());
- if (rest.get().stringValue().equals(SerializationConstants.RDF_NIL)) {
+ if (rest.get().equals(RDF.nil.getIRI())) {
current = null;
} else if (rest.get().isBNode()) {
current = (Resource) rest.get();
@@ -679,8 +672,8 @@ protected Set precomputeInlineBlankNodesAndLists() {
.toList();
boolean isPartOfList = properties.stream().anyMatch(s ->
- s.getPredicate().stringValue().equals(SerializationConstants.RDF_FIRST) ||
- s.getPredicate().stringValue().equals(SerializationConstants.RDF_REST)
+ s.getPredicate().equals(RDF.first.getIRI()) ||
+ s.getPredicate().equals(RDF.rest.getIRI())
);
boolean usedAsTopLevelSubject = model.stream()
@@ -720,12 +713,12 @@ private Set detectListNodes(Resource head) {
}
Optional first = props.stream()
- .filter(s -> s.getPredicate().stringValue().equals(SerializationConstants.RDF_FIRST))
+ .filter(s -> s.getPredicate().equals(RDF.first.getIRI()))
.map(Statement::getObject)
.findFirst();
Optional rest = props.stream()
- .filter(s -> s.getPredicate().stringValue().equals(SerializationConstants.RDF_REST))
+ .filter(s -> s.getPredicate().equals(RDF.rest.getIRI()))
.map(Statement::getObject)
.findFirst();
@@ -733,7 +726,7 @@ private Set detectListNodes(Resource head) {
return Collections.emptySet();
}
- if (rest.get().stringValue().equals(SerializationConstants.RDF_NIL)) {
+ if (rest.get().equals(RDF.nil.getIRI())) {
current = null;
} else if (rest.get().isBNode()) {
current = (Resource) rest.get();
@@ -753,14 +746,14 @@ private Set detectListNodes(Resource head) {
protected boolean isRDFListHead(Resource bNode) {
boolean hasFirstAndRest = model.stream()
.filter(stmt -> stmt.getSubject().equals(bNode))
- .anyMatch(stmt -> stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_FIRST))
+ .anyMatch(stmt -> stmt.getPredicate().equals(RDF.first.getIRI()))
&&
model.stream()
.filter(stmt -> stmt.getSubject().equals(bNode))
- .anyMatch(stmt -> stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_REST));
+ .anyMatch(stmt -> stmt.getPredicate().equals(RDF.rest.getIRI()));
boolean isObjectOfRest = model.stream()
- .filter(stmt -> stmt.getPredicate().stringValue().equals(SerializationConstants.RDF_REST))
+ .filter(stmt -> stmt.getPredicate().equals(RDF.rest.getIRI()))
.anyMatch(stmt -> stmt.getObject().equals(bNode));
return hasFirstAndRest && !isObjectOfRest;
@@ -854,11 +847,11 @@ protected String getPrefixedName(String iriString) {
* @return A suggested prefix, or null if suggestion is not possible.
*/
protected String getSuggestedPrefix(String namespace) {
- if (namespace.equals(SerializationConstants.RDF_NS)) return "rdf";
- if (namespace.equals(SerializationConstants.RDFS_NS)) return "rdfs";
- if (namespace.equals(SerializationConstants.XSD_NS)) return "xsd";
- if (namespace.equals(SerializationConstants.OWL_NS)) return "owl";
- if (namespace.equals(SerializationConstants.FOAF_NS)) return "foaf";
+ if (namespace.equals(RDF.getVocabularyNamespace())) return RDF.getVocabularyPreferredPrefix();
+ if (namespace.equals(RDFS.getVocabularyNamespace())) return RDFS.getVocabularyPreferredPrefix();
+ if (namespace.equals(XSD.getVocabularyNamespace())) return XSD.getVocabularyPreferredPrefix();
+ if (namespace.equals(OWL.getVocabularyNamespace())) return OWL.getVocabularyPreferredPrefix();
+ if (namespace.equals(FOAF.getVocabularyNamespace())) return FOAF.getVocabularyPreferredPrefix();
String base = namespace;
if (base.endsWith(SerializationConstants.HASH) || base.endsWith(SerializationConstants.SLASH)) {
@@ -923,12 +916,12 @@ protected String getSuggestedPrefix(String namespace) {
* Called only if strictMode is enabled.
*
* @param value The {@link Value} to validate.
- * @throws IllegalArgumentException if the value is null or invalid according to strict rules.
+ * @throws SerializationException if the value is null or invalid according to strict rules.
*/
protected void validateValue(Value value) {
if (value == null) {
logger.warn("Null value encountered where a non-null value was expected for {} serialization. This will lead to an IllegalArgumentException if strict mode is enabled.", getFormatName());
- throw new IllegalArgumentException("Value cannot be null in {} format when strictMode is enabled." + getFormatName());
+ throw new SerializationException("Value cannot be null in {} format when strictMode is enabled.", getFormatName());
}
if (option.isStrictMode() && value.isLiteral()) {
@@ -942,21 +935,21 @@ protected void validateValue(Value value) {
* Called only if strictMode is enabled.
*
* @param literal The {@link Literal} to validate.
- * @throws IllegalArgumentException if the literal is invalid (e.g., language tag with wrong datatype,
+ * @throws SerializationException if the literal is invalid (e.g., language tag with wrong datatype,
* or rdf:langString literal without language tag).
*/
protected void validateLiteral(Literal literal) {
IRI datatype = literal.getDatatype();
if (literal.getLanguage().isPresent()) {
- if (datatype == null || !datatype.stringValue().equals(RDF.LANGSTRING.getIRI().stringValue())) {
- throw new IllegalArgumentException(
- "A literal with a language tag must use the rdf:langString datatype. Found: " + (datatype != null ? datatype.stringValue() : "null"));
+ if (datatype == null || !datatype.equals(RDF.langString.getIRI())) {
+ throw new SerializationException(
+ "A literal with a language tag must use the rdf:langString datatype. Found: " + (datatype != null ? datatype.stringValue() : "null"), this.getFormatName());
}
} else {
- if (datatype != null && datatype.stringValue().equals(RDF.LANGSTRING.getIRI().stringValue())) {
- throw new IllegalArgumentException(
- "An rdf:langString literal must have a language tag.");
+ if (datatype != null && datatype.equals(RDF.langString.getIRI())) {
+ throw new SerializationException(
+ "An rdf:langString literal must have a language tag.", this.getFormatName());
}
}
}
@@ -968,7 +961,7 @@ protected void validateLiteral(Literal literal) {
* Called only if strictMode and validateURIs are enabled.
*
* @param iri The {@link IRI} to validate.
- * @throws IllegalArgumentException if the IRI contains invalid characters.
+ * @throws SerializationException if the IRI contains invalid characters.
*/
protected void validateIRI(IRI iri) {
String iriString = iri.stringValue();
@@ -977,7 +970,7 @@ protected void validateIRI(IRI iri) {
iriString.contains(SerializationConstants.QUOTE) ||
iriString.contains(SerializationConstants.LT) ||
iriString.contains(SerializationConstants.GT)) {
- throw new IllegalArgumentException("IRI contains illegal characters (space, quotes, angle brackets) for the unescaped form of " + getFormatName() + ": " + iriString);
+ throw new SerializationException("IRI contains illegal characters (space, quotes, angle brackets) for the unescaped form : " + iriString, this.getFormatName());
}
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractLineBasedSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractLineBasedSerializer.java
index f0af2a595..48081413f 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractLineBasedSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/base/AbstractLineBasedSerializer.java
@@ -8,6 +8,7 @@
import java.util.Objects;
import java.util.Set;
+import fr.inria.corese.core.next.impl.common.literal.XSD;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,11 +77,6 @@ public void write(Writer writer) throws SerializationException {
}
}
- /**
- * Returns the name of the format for error messages.
- */
- protected abstract String getFormatName();
-
/**
* Handles writing the context part of a statement.
* This is where N-Triples and N-Quads differ.
@@ -132,7 +128,7 @@ private void writeStatement(Writer writer, Statement stmt) throws IOException {
* @param writer the {@link Writer} to which the value will be written.
* @param value the {@link Value} to write.
* @throws IOException if an I/O error occurs.
- * @throws IllegalArgumentException if the provided value is null or an unsupported type.
+ * @throws SerializationException if the provided value is null or an unsupported type.
*/
protected void writeValue(Writer writer, Value value) throws IOException {
validateValue(value);
@@ -145,10 +141,10 @@ protected void writeValue(Writer writer, Value value) throws IOException {
} else if (value.isBNode()) {
writeBlankNode(writer, (Resource) value);
} else {
- throw new IllegalArgumentException("Unsupported resource type for " + getFormatName() + " serialization: " + value.getClass().getName());
+ throw new SerializationException("Unsupported resource type for serialization: " + value.getClass().getName(), this.getFormatName());
}
} else {
- throw new IllegalArgumentException("Unsupported value type for " + getFormatName() + " serialization: " + value.getClass().getName());
+ throw new SerializationException("Unsupported value type for serialization: " + value.getClass().getName(), this.getFormatName());
}
}
@@ -167,16 +163,16 @@ protected void writeLiteral(Writer writer, Literal literal) throws IOException {
literal.getLanguage().ifPresent(lang -> {
try {
- writer.write(SerializationConstants.AT_SIGN + lang);
+ writer.write(SerializationConstants.AT + lang);
} catch (IOException e) {
- throw new UncheckedIOException("Error writing language tag to stream", e);
+ throw new SerializationException("Error writing language tag to stream", this.getFormatName(), e);
}
});
IRI datatype = literal.getDatatype();
if (!literal.getLanguage().isPresent() && datatype != null &&
(config.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.ALWAYS_TYPED ||
- (config.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.MINIMAL && !datatype.stringValue().equals(SerializationConstants.XSD_STRING)))) {
+ (config.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.MINIMAL && !datatype.equals(XSD.STRING.getIRI())))) {
writer.write(SerializationConstants.DATATYPE_SEPARATOR);
writeIRI(writer, datatype);
}
@@ -190,7 +186,6 @@ protected void writeLiteral(Writer writer, Literal literal) throws IOException {
* @param writer the {@link Writer} to which the IRI will be written.
* @param iri the {@link IRI} to write.
* @throws IOException if an I/O error occurs.
- * @throws IllegalArgumentException if the IRI is invalid (e.g., contains spaces) and strict mode/URI validation is enabled.
*/
protected void writeIRI(Writer writer, IRI iri) throws IOException {
if (config.isStrictMode() && config.validateURIs()) {
@@ -210,7 +205,7 @@ protected void writeIRI(Writer writer, IRI iri) throws IOException {
* @throws IOException if an I/O error occurs.
*/
protected void writeBlankNode(Writer writer, Resource blankNode) throws IOException {
- writer.write(SerializationConstants.BNODE_PREFIX);
+ writer.write(SerializationConstants.BLANK_NODE_PREFIX);
writer.write(blankNode.stringValue());
}
@@ -230,7 +225,7 @@ protected String escapeIRI(String iri) {
iri.contains(SerializationConstants.LT) ||
iri.contains(SerializationConstants.GT)) {
- throw new IllegalArgumentException("Invalid IRI for " + getFormatName() + " (contains illegal characters inside '<>'): " + iri);
+ throw new SerializationException("Invalid IRI (contains illegal characters inside '<>'): " + iri, this.getFormatName());
}
return config.escapeUnicode() ? escapeUnicodeString(iri) : iri;
@@ -325,7 +320,7 @@ protected String escapeUnicodeString(String value) {
protected void validateValue(Value value) {
if (value == null) {
logger.warn("Encountered a null value where a non-null value was expected for " + getFormatName() + " serialization. This will result in an IllegalArgumentException if strict mode is enabled.");
- throw new IllegalArgumentException("Value cannot be null in " + getFormatName() + " format when strictMode is enabled.");
+ throw new SerializationException("Value cannot be null in " + getFormatName() + " format when strictMode is enabled.", this.getFormatName());
}
if (value.isLiteral()) {
@@ -341,7 +336,7 @@ protected void validateValue(Value value) {
* Only called if strictMode is enabled.
*
* @param literal The {@link Literal} to validate.
- * @throws IllegalArgumentException if the literal is invalid (e.g., language tag with wrong datatype,
+ * @throws SerializationException if the literal is invalid (e.g., language tag with wrong datatype,
* or rdf:langString literal missing a language tag).
*/
protected void validateLiteral(Literal literal) {
@@ -349,13 +344,13 @@ protected void validateLiteral(Literal literal) {
if (literal.getLanguage().isPresent()) {
if (datatype == null || !datatype.stringValue().equals(RDF.LANGSTRING.getIRI().stringValue())) {
- throw new IllegalArgumentException(
- "Literal with language tag must use rdf:langString datatype. Found: " + (datatype != null ? datatype.stringValue() : "null"));
+ throw new SerializationException(
+ "Literal with language tag must use rdf:langString datatype. Found: " + (datatype != null ? datatype.stringValue() : "null"), this.getFormatName());
}
} else {
if (datatype != null && datatype.stringValue().equals(RDF.LANGSTRING.getIRI().stringValue())) {
- throw new IllegalArgumentException(
- "rdf:langString literal must have a language tag.");
+ throw new SerializationException(
+ "rdf:langString literal must have a language tag.", this.getFormatName());
}
}
}
@@ -367,7 +362,7 @@ protected void validateLiteral(Literal literal) {
* Only called if strictMode and validateURIs are enabled.
*
* @param iri The {@link IRI} to validate.
- * @throws IllegalArgumentException if the IRI contains invalid characters.
+ * @throws SerializationException if the IRI contains invalid characters.
*/
protected void validateIRI(IRI iri) {
String iriString = iri.stringValue();
@@ -375,7 +370,7 @@ protected void validateIRI(IRI iri) {
iriString.contains(SerializationConstants.QUOTE) ||
iriString.contains(SerializationConstants.LT) ||
iriString.contains(SerializationConstants.GT)) {
- throw new IllegalArgumentException("IRI contains illegal characters (space, quote, angle brackets) for " + getFormatName() + " unescaped form: " + iriString);
+ throw new SerializationException("IRI contains illegal characters (space, quote, angle brackets) unescaped form: " + iriString, this.getFormatName());
}
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Canonicalizer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Canonicalizer.java
index 9187697c0..c78d70144 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Canonicalizer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Canonicalizer.java
@@ -20,7 +20,7 @@
*/
public class RDFC10Canonicalizer {
- private final RDFC10Options.HashAlgorithm hashAlgorithm;
+ private final RDFC10SerializerOptions.HashAlgorithm hashAlgorithm;
private final int maxCallsHashNDegreeQuads;
private final StatementUtils statementUtils;
private int callsHashNDegreeQuads = 0;
@@ -34,7 +34,7 @@ public class RDFC10Canonicalizer {
* @param valueFactory The factory for creating RDF values, used by StatementUtils for
* blank node replacement and serialization.
*/
- public RDFC10Canonicalizer(RDFC10Options.HashAlgorithm hashAlgorithm, int maxCalls, ValueFactory valueFactory) {
+ public RDFC10Canonicalizer(RDFC10SerializerOptions.HashAlgorithm hashAlgorithm, int maxCalls, ValueFactory valueFactory) {
this.hashAlgorithm = Objects.requireNonNull(hashAlgorithm, "Hash algorithm cannot be null");
this.maxCallsHashNDegreeQuads = maxCalls;
this.statementUtils = new StatementUtils(valueFactory);
@@ -390,7 +390,7 @@ private List replaceBlankNodesAndSort(List statements, Map
*/
private String hash(String data) {
try {
- String algorithm = hashAlgorithm == RDFC10Options.HashAlgorithm.SHA_384 ?
+ String algorithm = hashAlgorithm == RDFC10SerializerOptions.HashAlgorithm.SHA_384 ?
SerializationConstants.SHA_384 : SerializationConstants.SHA_256;
MessageDigest digest = MessageDigest.getInstance(algorithm);
byte[] hash = digest.digest(data.getBytes(StandardCharsets.UTF_8));
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Serializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Serializer.java
index 6ec01ad27..87c19afd5 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Serializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Serializer.java
@@ -35,14 +35,14 @@ public class RDFC10Serializer extends AbstractLineBasedSerializer {
* @param config The configuration options for the canonicalization process.
* @param canonicalizer The canonicalizer component to use.
*/
- public RDFC10Serializer(Model model, RDFC10Options config, RDFC10Canonicalizer canonicalizer) {
+ public RDFC10Serializer(Model model, RDFC10SerializerOptions config, RDFC10Canonicalizer canonicalizer) {
super(model, config);
this.canonicalizer = Objects.requireNonNull(canonicalizer);
}
@Override
- public String getFormatName() {
- return RDFFormat.RDFC_1_0.getName();
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.RDFC_1_0;
}
/**
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Options.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerOptions.java
similarity index 86%
rename from src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Options.java
rename to src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerOptions.java
index 19395fec0..afc6ef596 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10Options.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerOptions.java
@@ -11,7 +11,7 @@
* Use the {@link Builder} class to create instances of {@code CanonicalOption}.
* A predefined default configuration is available via {@link #defaultConfig()}.
*/
-public class RDFC10Options extends AbstractSerializerOption {
+public class RDFC10SerializerOptions extends AbstractSerializerOption {
/**
* Enumeration for the supported hashing algorithms.
@@ -32,7 +32,7 @@ public enum HashAlgorithm {
*
* @param builder The builder instance containing the desired configuration values.
*/
- protected RDFC10Options(Builder builder) {
+ protected RDFC10SerializerOptions(Builder builder) {
super(builder);
this.hashAlgorithm = builder.hashAlgorithm;
this.depthFactor = builder.depthFactor;
@@ -70,7 +70,7 @@ public int getPermutationLimit() {
}
/**
- * Public Builder for {@link RDFC10Options}.
+ * Public Builder for {@link RDFC10SerializerOptions}.
* Provides a fluent API for constructing {@code CanonicalOption} instances with default values
* specific to the Canonical RDF format.
*/
@@ -88,13 +88,13 @@ public Builder() {
}
/**
- * Builds a new {@link RDFC10Options} instance with the configured values.
+ * Builds a new {@link RDFC10SerializerOptions} instance with the configured values.
*
* @return A new instance of {@code CanonicalOption}.
*/
@Override
- public RDFC10Options build() {
- return new RDFC10Options(this);
+ public RDFC10SerializerOptions build() {
+ return new RDFC10SerializerOptions(this);
}
}
@@ -103,7 +103,7 @@ public RDFC10Options build() {
*
* @return A new {@code CanonicalOption} with default settings.
*/
- public static RDFC10Options defaultConfig() {
+ public static RDFC10SerializerOptions defaultConfig() {
return new Builder().build();
}
@@ -113,7 +113,7 @@ public static RDFC10Options defaultConfig() {
*
* @return A new {@code Builder} instance.
*/
- public static RDFC10Options.Builder builder() {
- return new RDFC10Options.Builder();
+ public static RDFC10SerializerOptions.Builder builder() {
+ return new RDFC10SerializerOptions.Builder();
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializer.java
index 9e637ac1d..ef4b03477 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializer.java
@@ -5,10 +5,11 @@
import com.apicatalog.jsonld.api.FromRdfApi;
import com.apicatalog.jsonld.document.RdfDocument;
import fr.inria.corese.core.next.api.Model;
+import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
import fr.inria.corese.core.next.api.io.IOOptions;
import fr.inria.corese.core.next.impl.exception.SerializationException;
-import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
import java.io.IOException;
import java.io.Writer;
@@ -38,7 +39,7 @@ public JSONLDSerializer(Model model, IOOptions config) {
* @param model
*/
public JSONLDSerializer(Model model) {
- this(model, new JSONLDProcessorOptions.Builder().build());
+ this(model, new JSONLDOptions.Builder().build());
}
@Override
@@ -47,7 +48,7 @@ public void write(Writer writer) throws SerializationException {
try {
FromRdfApi fromRdfApi = JsonLd.fromRdf(RdfDocument.of(adapter));
- if(this.config instanceof JSONLDProcessorOptions options) {
+ if(this.config instanceof JSONLDOptions options) {
fromRdfApi.options(options.getJsonLdOptions());
}
@@ -57,4 +58,9 @@ public void write(Writer writer) throws SerializationException {
throw new SerializationException("Error during serialization", "JSONLD", e);
}
}
+
+ @Override
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.JSONLD;
+ }
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/TitaniumRDFDatasetSerializationAdapter.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/TitaniumRDFDatasetSerializationAdapter.java
index 15eced66d..085446c98 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/TitaniumRDFDatasetSerializationAdapter.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/TitaniumRDFDatasetSerializationAdapter.java
@@ -1,7 +1,5 @@
package fr.inria.corese.core.next.impl.io.serialization.jsonld;
-import static fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants.DEFAULT_GRAPH_IRI;
-
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.Duration;
@@ -38,6 +36,7 @@
import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.exception.SerializationException;
+import fr.inria.corese.core.next.impl.io.common.IOConstants;
import fr.inria.corese.core.next.impl.io.parser.util.ParserConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -109,7 +108,7 @@ public Optional getGraph(RdfResource graphName) {
@Override
public boolean contains(RdfTriple triple) {
Resource graphResource = null;
- if (graphName != null && !graphName.getValue().equals(DEFAULT_GRAPH_IRI)) {
+ if (graphName != null && !graphName.getValue().equals(IOConstants.getDefaultBaseURI())) {
graphResource = toResource(graphName);
}
return model.contains(toResource(triple.getSubject()), toIRI(triple.getPredicate()), toValue(triple.getObject()), graphResource);
@@ -119,7 +118,7 @@ public boolean contains(RdfTriple triple) {
public List toList() {
List result = new ArrayList<>();
Resource graphResource = null;
- if (graphName != null && !graphName.getValue().equals(DEFAULT_GRAPH_IRI)) {
+ if (graphName != null && !graphName.getValue().equals(IOConstants.getDefaultBaseURI())) {
graphResource = toResource(graphName);
}
model.getStatements(null, null, null, graphResource).forEach(statement -> result.add(toRdfNQuad(statement)));
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializer.java
index 2995af81c..5de866837 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializer.java
@@ -50,13 +50,13 @@ public NQuadsSerializer(Model model, NQuadsSerializerOptions config) {
}
/**
- * Returns the format name for error messages and logging.
+ * Retrieves the RDF format supported by this serializer, which is N-Quads.
*
- * @return "N-Quads"
+ * @return {@link RDFFormat#NQUADS}.
*/
@Override
- protected String getFormatName() {
- return RDFFormat.NQUADS.getName();
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.NQUADS;
}
/**
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializer.java
index 41024dd61..d4b1370e7 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializer.java
@@ -48,15 +48,14 @@ public NTriplesSerializer(Model model, NTriplesSerializerOptions config) {
super(model, config);
Objects.requireNonNull(config, "NTriplesConfig cannot be null");
}
-
/**
- * Returns the format name for error messages and logging.
+ * Retrieves the RDF format supported by this serializer, which is N-TRIPLES.
*
- * @return "N-Triples"
+ * @return {@link RDFFormat#NTRIPLES}.
*/
@Override
- protected String getFormatName() {
- return RDFFormat.NTRIPLES.getName();
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.NTRIPLES;
}
/**
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializer.java
similarity index 94%
rename from src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializer.java
rename to src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializer.java
index 6e1097eb9..5e794fa24 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializer.java
@@ -15,6 +15,8 @@
import java.util.Set;
import java.util.stream.Collectors;
+import fr.inria.corese.core.next.api.base.io.RDFFormat;
+import fr.inria.corese.core.next.impl.common.vocabulary.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,12 +48,12 @@
* Advanced features such as handling XML schemata, specific RDF/XML graph structures (e.g., rdf:Bag, rdf:Seq, rdf:Alt),
* and full blank node syntax optimization are simplified in this version.
*/
-public class XMLSerializer implements RDFSerializer {
+public class RDFXMLSerializer implements RDFSerializer {
- private static final Logger logger = LoggerFactory.getLogger(XMLSerializer.class);
+ private static final Logger logger = LoggerFactory.getLogger(RDFXMLSerializer.class);
private final Model model;
- private final XMLSerializerOption config;
+ private final RDFXMLSerializerOption config;
private final Map iriToPrefixMapping;
private final Map prefixToIriMapping;
private final Map blankNodeIds;
@@ -60,23 +62,23 @@ public class XMLSerializer implements RDFSerializer {
/**
* Constructs a new {@code XmlSerializer} instance with the specified model and default configuration.
- * The default configuration is obtained from {@link XMLSerializerOption#defaultConfig()}.
+ * The default configuration is obtained from {@link RDFXMLSerializerOption#defaultConfig()}.
*
* @param model the {@link Model} to serialize. Must not be null.
* @throws NullPointerException if the provided model is null.
*/
- public XMLSerializer(Model model) {
- this(model, XMLSerializerOption.defaultConfig());
+ public RDFXMLSerializer(Model model) {
+ this(model, RDFXMLSerializerOption.defaultConfig());
}
/**
* Constructs a new {@code XmlSerializer} instance with the specified model and custom configuration.
*
* @param model the {@link Model} to serialize. Must not be null.
- * @param config the {@link XMLSerializerOption} to use for serialization. Must not be null.
+ * @param config the {@link RDFXMLSerializerOption} to use for serialization. Must not be null.
* @throws NullPointerException if the provided model or configuration is null.
*/
- public XMLSerializer(Model model, XMLSerializerOption config) {
+ public RDFXMLSerializer(Model model, RDFXMLSerializerOption config) {
this.model = Objects.requireNonNull(model, "Model cannot be null");
this.config = Objects.requireNonNull(config, "Configuration cannot be null");
this.iriToPrefixMapping = new HashMap<>();
@@ -117,6 +119,11 @@ public void write(Writer writer) throws SerializationException {
}
}
+ @Override
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.RDFXML;
+ }
+
/**
* Writes the XML declaration at the beginning of the document.
*
@@ -169,8 +176,8 @@ private void writeRdfRootElement(Writer writer) throws IOException {
* @throws IOException if an I/O error occurs.
*/
private void writeNamespaceAttributes(Writer writer) throws IOException {
- if (!iriToPrefixMapping.containsKey(SerializationConstants.RDF_NS)) {
- addPrefixMapping(SerializationConstants.RDF_NS, "rdf");
+ if (!iriToPrefixMapping.containsKey(RDF.getVocabularyNamespace())) {
+ addPrefixMapping(RDF.getVocabularyNamespace(), RDF.getVocabularyPreferredPrefix());
}
List prefixes = new ArrayList<>(prefixToIriMapping.keySet());
@@ -437,7 +444,7 @@ private boolean shouldWriteDatatype(Literal literal) {
}
return config.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.ALWAYS_TYPED ||
- (!datatype.stringValue().equals(SerializationConstants.XSD_STRING) &&
+ (!datatype.equals(XSD.xsdString.getIRI()) &&
config.getLiteralDatatypePolicy() == LiteralDatatypePolicyEnum.MINIMAL);
}
@@ -474,11 +481,11 @@ private String getNamespace(String iriString) {
*/
private String getSuggestedPrefix(String namespace) {
- if (namespace.equals(SerializationConstants.RDF_NS)) return "rdf";
- if (namespace.equals(SerializationConstants.RDFS_NS)) return "rdfs";
- if (namespace.equals(SerializationConstants.XSD_NS)) return "xsd";
- if (namespace.equals(SerializationConstants.OWL_NS)) return "owl";
- if (namespace.equals(SerializationConstants.FOAF_NS)) return "foaf";
+ if (namespace.equals(RDF.getVocabularyNamespace())) return RDF.getVocabularyPreferredPrefix();
+ if (namespace.equals(RDFS.getVocabularyNamespace())) return RDFS.getVocabularyPreferredPrefix();
+ if (namespace.equals(XSD.getVocabularyNamespace())) return XSD.getVocabularyPreferredPrefix();
+ if (namespace.equals(OWL.getVocabularyNamespace())) return OWL.getVocabularyPreferredPrefix();
+ if (namespace.equals(FOAF.getVocabularyNamespace())) return FOAF.getVocabularyPreferredPrefix();
String base = namespace;
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializerOption.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializerOption.java
similarity index 92%
rename from src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializerOption.java
rename to src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializerOption.java
index 119d7702f..bf35b0372 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializerOption.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializerOption.java
@@ -1,5 +1,9 @@
package fr.inria.corese.core.next.impl.io.serialization.rdfxml;
+import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.option.AbstractSerializerOption;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.PrefixOrderingEnum;
@@ -18,7 +22,7 @@
* Use the {@link Builder} class to create instances of {@code XmlConfig}.
* A predefined default configuration is available via {@link #defaultConfig()}.
*/
-public class XMLSerializerOption extends AbstractSerializerOption {
+public class RDFXMLSerializerOption extends AbstractSerializerOption {
/**
* Whether prefix declarations (e.g., `xmlns:prefix="uri"`) should be used for compact IRIs.
@@ -78,7 +82,7 @@ public class XMLSerializerOption extends AbstractSerializerOption {
*
* @param builder The builder instance containing the desired configuration values.
*/
- protected XMLSerializerOption(Builder builder) {
+ protected RDFXMLSerializerOption(Builder builder) {
super(builder);
this.usePrefixes = builder.usePrefixes;
@@ -186,7 +190,7 @@ public boolean useMultilineLiterals() {
/**
- * Public Builder for {@link XMLSerializerOption}.
+ * Public Builder for {@link RDFXMLSerializerOption}.
* Provides a fluent API for constructing {@code XmlConfig} instances with default values
* specific to the RDF/XML format.
*/
@@ -213,10 +217,10 @@ public Builder() {
stableBlankNodeIds(true); // Good for reproducible RDF/XML outputs
escapeUnicode(false); // Usually direct UTF-8 for RDF/XML, not unicode escapes
- addCustomPrefix("rdf", SerializationConstants.RDF_NS);
- addCustomPrefix("rdfs", SerializationConstants.RDFS_NS);
- addCustomPrefix("xsd", SerializationConstants.XSD_NS);
- addCustomPrefix("owl", SerializationConstants.OWL_NS);
+ addCustomPrefix(RDF.getVocabularyPreferredPrefix(), RDF.getVocabularyNamespace());
+ addCustomPrefix(RDFS.getVocabularyPreferredPrefix(), RDFS.getVocabularyNamespace());
+ addCustomPrefix(XSD.getVocabularyPreferredPrefix(), XSD.getVocabularyNamespace());
+ addCustomPrefix(OWL.getVocabularyPreferredPrefix(), OWL.getVocabularyNamespace());
}
@@ -350,13 +354,13 @@ public Builder useMultilineLiterals(boolean useMultilineLiterals) {
}
/**
- * Builds and returns a new {@link XMLSerializerOption} instance with the current builder settings.
+ * Builds and returns a new {@link RDFXMLSerializerOption} instance with the current builder settings.
*
* @return A new {@code XmlConfig} instance.
*/
@Override
- public XMLSerializerOption build() {
- return new XMLSerializerOption(this);
+ public RDFXMLSerializerOption build() {
+ return new RDFXMLSerializerOption(this);
}
}
@@ -367,7 +371,7 @@ public XMLSerializerOption build() {
*
* @return A {@code XmlConfig} instance with default settings.
*/
- public static XMLSerializerOption defaultConfig() {
+ public static RDFXMLSerializerOption defaultConfig() {
return new Builder().build();
}
}
\ No newline at end of file
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializer.java
index 9378dc8e8..7177757b6 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializer.java
@@ -14,6 +14,7 @@
import fr.inria.corese.core.next.api.Model;
import fr.inria.corese.core.next.api.Resource;
import fr.inria.corese.core.next.api.Statement;
+import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.impl.io.serialization.base.AbstractGraphSerializer;
import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
@@ -65,16 +66,6 @@ public TriGSerializer(Model model, TriGSerializerOptions config) {
Objects.requireNonNull(config, "TriGConfig cannot be null");
}
- /**
- * Returns the format name for error messages and logging.
- *
- * @return "TriG"
- */
- @Override
- protected String getFormatName() {
- return "TriG";
- }
-
/**
* Helper method to safely cast the generic config to TriGConfig.
* This should be called before accessing any methods specific to TriGConfig.
@@ -292,4 +283,13 @@ protected String escapeMultilineLiteralString(String value) {
SerializationConstants.BACK_SLASH + SerializationConstants.QUOTE +
SerializationConstants.BACK_SLASH + SerializationConstants.QUOTE);
}
+ /**
+ * Retrieves the RDF format supported by this serializer, which is Trig.
+ *
+ * @return {@link RDFFormat#TRIG}.
+ */
+ @Override
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.TRIG;
+ }
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptions.java
index 8ecd8b9aa..a1a63e06f 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptions.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptions.java
@@ -1,5 +1,9 @@
package fr.inria.corese.core.next.impl.io.serialization.trig;
+import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.option.AbstractTFamilyOption;
import fr.inria.corese.core.next.impl.io.serialization.option.BlankNodeStyleEnum;
import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
@@ -41,10 +45,10 @@ public Builder() {
useCollections(false);
Map commonTriGPrefixes = new HashMap<>();
- commonTriGPrefixes.put("rdf", SerializationConstants.RDF_NS);
- commonTriGPrefixes.put("rdfs", SerializationConstants.RDFS_NS);
- commonTriGPrefixes.put("xsd", SerializationConstants.XSD_NS);
- commonTriGPrefixes.put("owl", SerializationConstants.OWL_NS);
+ commonTriGPrefixes.put(RDF.getVocabularyPreferredPrefix(), RDF.getVocabularyNamespace());
+ commonTriGPrefixes.put(RDFS.getVocabularyPreferredPrefix(), RDFS.getVocabularyNamespace());
+ commonTriGPrefixes.put(XSD.getVocabularyPreferredPrefix(), XSD.getVocabularyNamespace());
+ commonTriGPrefixes.put(OWL.getVocabularyPreferredPrefix(), OWL.getVocabularyNamespace());
addCustomPrefixes(commonTriGPrefixes);
}
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializer.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializer.java
index 963042bff..917c4f664 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializer.java
@@ -4,6 +4,7 @@
import java.io.Writer;
import java.util.Objects;
+import fr.inria.corese.core.next.api.base.io.RDFFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,15 +61,14 @@ public TurtleSerializer(Model model, TurtleSerializerOptions config) {
super(model, config);
Objects.requireNonNull(config, "TurtleConfig cannot be null");
}
-
/**
- * Returns the format name for error messages and logging.
+ * Retrieves the RDF format supported by this serializer, which is Turtle
*
- * @return "Turtle"
+ * @return {@link RDFFormat#TURTLE}.
*/
@Override
- protected String getFormatName() {
- return "Turtle";
+ public RDFFormat getRDFFormat() {
+ return RDFFormat.TURTLE;
}
/**
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptions.java
index cc9561b2e..80aecf81b 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptions.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptions.java
@@ -1,5 +1,9 @@
package fr.inria.corese.core.next.impl.io.serialization.turtle;
+import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.option.AbstractTFamilyOption;
import fr.inria.corese.core.next.impl.io.serialization.option.BlankNodeStyleEnum;
import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
@@ -42,10 +46,10 @@ public Builder() {
blankNodeStyle(BlankNodeStyleEnum.ANONYMOUS);
Map commonTurtlePrefixes = new HashMap<>();
- commonTurtlePrefixes.put("rdf", SerializationConstants.RDF_NS);
- commonTurtlePrefixes.put("rdfs", SerializationConstants.RDFS_NS);
- commonTurtlePrefixes.put("xsd", SerializationConstants.XSD_NS);
- commonTurtlePrefixes.put("owl", SerializationConstants.OWL_NS);
+ commonTurtlePrefixes.put(RDF.getVocabularyPreferredPrefix(), RDF.getVocabularyNamespace());
+ commonTurtlePrefixes.put(RDFS.getVocabularyPreferredPrefix(), RDFS.getVocabularyNamespace());
+ commonTurtlePrefixes.put(XSD.getVocabularyPreferredPrefix(), XSD.getVocabularyNamespace());
+ commonTurtlePrefixes.put(OWL.getVocabularyPreferredPrefix(), OWL.getVocabularyNamespace());
addCustomPrefixes(commonTurtlePrefixes);
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/SerializationConstants.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/SerializationConstants.java
index 6e4ae0098..9c4d08c6d 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/SerializationConstants.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/SerializationConstants.java
@@ -1,10 +1,7 @@
package fr.inria.corese.core.next.impl.io.serialization.util;
-import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
-import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
-import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
-import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
+import fr.inria.corese.core.next.impl.io.common.IOConstants;
/**
* Provides common constants used throughout the RDF serialization process.
@@ -12,63 +9,20 @@
* as well as various special characters and strings used in serialization formats
* like Turtle, N-Triples, and N-Quads.
*/
-public final class SerializationConstants {
+public final class SerializationConstants extends IOConstants {
private SerializationConstants() {
+ super();
// Private constructor to prevent instantiation
}
- // --- Standard RDF/RDFS/XSD/OWL URIs ---
- public static final String RDF_NS = RDF.HTML.getNamespace();
- public static final String RDF_TYPE = RDF.type.getIRI().stringValue();
- public static final String RDF_FIRST = RDF.first.getIRI().stringValue();
- public static final String RDF_REST = RDF.rest.getIRI().stringValue();
- public static final String RDF_NIL = RDF.nil.getIRI().stringValue();
-
-
- public static final String RDFS_NS = RDFS.Resource.getNamespace();
-
- public static final String XSD_NS = XSD.xsdString.getNamespace();
-
- public static final String OWL_NS = OWL.NS;
-
- public static final String XSD_STRING = XSD_NS + "string";
- public static final String XSD_INTEGER = XSD_NS + "integer";
- public static final String XSD_DECIMAL = XSD_NS + "decimal";
- public static final String XSD_DOUBLE = XSD_NS + "double";
- public static final String XSD_BOOLEAN = XSD_NS + "boolean";
- public static final String XSD_DATETIME = XSD_NS + "dateTime";
-
- // Nouveau namespace FOAF
- public static final String FOAF_NS = "http://xmlns.com/foaf/0.1/";
-
-
// --- Common Delimiters and Special Characters in Serialization ---
- public static final String SPACE = " ";
- public static final String TAB = "\t";
- public static final String LINE_FEED = "\n";
- public static final String CARRIAGE_RETURN = "\r";
public static final String NEWLINE = LINE_FEED;
-
- public static final String POINT = ".";
- public static final String SEMICOLON = ";";
- public static final String COMMA = ",";
- public static final String AT_SIGN = "@";
public static final String CARET = "^";
- public static final String LT = "<"; // Less than
- public static final String GT = ">"; // Greater than
- public static final String QUOTE = "\"";
- public static final String COLON = ":";
public static final String BACK_SLASH = "\\";
- // Nouveaux délimiteurs
- public static final String HASH = "#";
- public static final String SLASH = "/";
-
// Turtle-specific
- public static final String RDF_TYPE_SHORTCUT = "a";
- public static final String BNODE_PREFIX = "_:";
public static final String DATATYPE_SEPARATOR = "^^";
public static final String BLANK_NODE_START = "[";
public static final String BLANK_NODE_END = "]";
@@ -105,8 +59,6 @@ private SerializationConstants() {
public static final String QUOT_ENTITY = """;
public static final String APOS_ENTITY = "'";
- public static final String DEFAULT_GRAPH_IRI = "http://ns.inria.fr/corese/default-graph";
-
public static final String C14N = "c14n";
public static final String CANONICAL_BNODE_PLACEHOLDER = "<>";
@@ -114,7 +66,7 @@ private SerializationConstants() {
public static final String CANONICAL_BNODE_PREFIX = "_:b";
- // Algorithmes de hachage
+ // Hash algorithm
public static final String SHA_256 = "SHA-256";
public static final String SHA_384 = "SHA-384";
diff --git a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/StatementUtils.java b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/StatementUtils.java
index 6d385f238..9e48ba392 100644
--- a/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/StatementUtils.java
+++ b/src/main/java/fr/inria/corese/core/next/impl/io/serialization/util/StatementUtils.java
@@ -107,7 +107,7 @@ public static String getBlankNodeId(Value value) {
if (value == null) return null;
if (isBlankNode(value)) {
String str = value.stringValue();
- if (str.startsWith(SerializationConstants.BNODE_PREFIX)) {
+ if (str.startsWith(SerializationConstants.BLANK_NODE_PREFIX)) {
return str.substring(2);
}
return str;
@@ -155,7 +155,7 @@ public static String serializeForComparison(Value value) {
* @return The serialized blank node string.
*/
private static String serializeBNode(BNode bnode) {
- return SerializationConstants.BNODE_PREFIX + bnode.getID();
+ return SerializationConstants.BLANK_NODE_PREFIX + bnode.getID();
}
/**
@@ -183,7 +183,7 @@ private static String serializeLiteral(Literal literal) {
sb.append(SerializationConstants.DATATYPE_SEPARATOR).append(serializeForComparison(literal.getDatatype()));
}
} else if (literal.getLanguage() != null) {
- sb.append(SerializationConstants.AT_SIGN).append(literal.getLanguage());
+ sb.append(SerializationConstants.AT).append(literal.getLanguage());
}
return sb.toString();
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/option/JSONLDProcessorOptionsTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/option/JSONLDOptionsTest.java
similarity index 74%
rename from src/test/java/fr/inria/corese/core/next/impl/io/option/JSONLDProcessorOptionsTest.java
rename to src/test/java/fr/inria/corese/core/next/impl/io/option/JSONLDOptionsTest.java
index b2f382992..5288511b6 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/option/JSONLDProcessorOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/option/JSONLDOptionsTest.java
@@ -1,6 +1,7 @@
package fr.inria.corese.core.next.impl.io.option;
import com.apicatalog.jsonld.JsonLdVersion;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
import org.junit.jupiter.api.Test;
import java.time.Duration;
@@ -11,9 +12,9 @@
/**
* Tests to check that values are properly set
*/
-class JSONLDProcessorOptionsTest {
+class JSONLDOptionsTest {
- private JSONLDProcessorOptions optionAllTrue = new JSONLDProcessorOptions.Builder().base("http://example.org/AllTrue")
+ private fr.inria.corese.core.next.impl.io.common.JSONLDOptions optionAllTrue = new fr.inria.corese.core.next.impl.io.common.JSONLDOptions.Builder().base("http://example.org/AllTrue")
.extractAllScripts(true)
.compactToRelative(true)
.compactArrays(true)
@@ -22,7 +23,7 @@ class JSONLDProcessorOptionsTest {
.useNativeTypes(true)
.build();
- private JSONLDProcessorOptions optionAllFalse = new JSONLDProcessorOptions.Builder().base("http://example.org/AllFalse")
+ private fr.inria.corese.core.next.impl.io.common.JSONLDOptions optionAllFalse = new fr.inria.corese.core.next.impl.io.common.JSONLDOptions.Builder().base("http://example.org/AllFalse")
.extractAllScripts(false)
.compactArrays(false)
.compactToRelative(false)
@@ -57,15 +58,15 @@ void isOrdered() {
@Test
void getProcessingMode() {
- JSONLDProcessorOptions option10 = new JSONLDProcessorOptions.Builder().processingMode(JsonLdVersion.V1_0).build();
- JSONLDProcessorOptions option11 = new JSONLDProcessorOptions.Builder().processingMode(JsonLdVersion.V1_1).build();
+ fr.inria.corese.core.next.impl.io.common.JSONLDOptions option10 = new fr.inria.corese.core.next.impl.io.common.JSONLDOptions.Builder().processingMode(JsonLdVersion.V1_0).build();
+ fr.inria.corese.core.next.impl.io.common.JSONLDOptions option11 = new fr.inria.corese.core.next.impl.io.common.JSONLDOptions.Builder().processingMode(JsonLdVersion.V1_1).build();
assertEquals(JsonLdVersion.V1_0, option10.getProcessingMode());
assertEquals(JsonLdVersion.V1_1, option11.getProcessingMode());
}
@Test
void getTimeout() {
- JSONLDProcessorOptions option10seconds = new JSONLDProcessorOptions.Builder().timeout(Duration.of(10, ChronoUnit.SECONDS)).build();
+ fr.inria.corese.core.next.impl.io.common.JSONLDOptions option10seconds = new JSONLDOptions.Builder().timeout(Duration.of(10, ChronoUnit.SECONDS)).build();
assertNull(optionAllTrue.getTimeout());
assertEquals(Duration.of(10, ChronoUnit.SECONDS), option10seconds.getTimeout());
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDCircularTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDCircularTest.java
index 77beb89f7..c510f8514 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDCircularTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDCircularTest.java
@@ -8,6 +8,7 @@
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -20,10 +21,8 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
-import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
import org.slf4j.Logger;
@@ -46,9 +45,9 @@ class JSONLDCircularTest {
private static final Logger logger = LoggerFactory.getLogger(JSONLDCircularTest.class);
private ValueFactory valueFactory;
- private SerializerFactory serializerFactory;
+ private fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
private ParserFactory parserFactory;
- private JSONLDProcessorOptions defaultConfig;
+ private JSONLDOptions defaultConfig;
// Test data constants
private static final String EXAMPLE_NS = "http://example.org/";
@@ -70,9 +69,9 @@ class JSONLDCircularTest {
@BeforeEach
void setUp() {
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
- defaultConfig = new JSONLDProcessorOptions.Builder()
+ defaultConfig = new JSONLDOptions.Builder()
.build();
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParserTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParserTest.java
index 3662a2146..383ac42a1 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParserTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/jsonld/JSONLDParserTest.java
@@ -9,7 +9,7 @@
import java.io.Reader;
import java.io.StringReader;
-import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
import org.junit.jupiter.api.Test;
import fr.inria.corese.core.next.api.BNode;
@@ -47,7 +47,7 @@ void constructorNullModelAndValueFactoryThrowsTest() {
@Test
void constructorConfigNoThrowsTest() {
- assertDoesNotThrow(() -> new JSONLDParser(new CoreseModel(), valueFactory, new JSONLDProcessorOptions.Builder().build()));
+ assertDoesNotThrow(() -> new JSONLDParser(new CoreseModel(), valueFactory, new JSONLDOptions.Builder().build()));
}
@Test
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/nquads/NQuadsCircularTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/nquads/NQuadsCircularTest.java
index 0bf3cf90a..ad9327d46 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/nquads/NQuadsCircularTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/nquads/NQuadsCircularTest.java
@@ -20,9 +20,8 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.serialization.nquads.NQuadsSerializerOptions;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
@@ -42,7 +41,7 @@
class NQuadsCircularTest {
private ValueFactory valueFactory;
- private SerializerFactory serializerFactory;
+ private fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
private ParserFactory parserFactory;
private NQuadsSerializerOptions defaultConfig;
@@ -66,7 +65,7 @@ class NQuadsCircularTest {
@BeforeEach
void setUp() {
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
defaultConfig = NQuadsSerializerOptions.defaultConfig();
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/ntriples/NTriplesCircularTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/ntriples/NTriplesCircularTest.java
index a31407834..c98fbb1b3 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/ntriples/NTriplesCircularTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/ntriples/NTriplesCircularTest.java
@@ -20,9 +20,8 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.serialization.ntriples.NTriplesSerializerOptions;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
@@ -39,7 +38,7 @@
class NTriplesCircularTest {
private ValueFactory valueFactory;
- private SerializerFactory serializerFactory;
+ private fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
private ParserFactory parserFactory;
private NTriplesSerializerOptions defaultConfig;
@@ -61,7 +60,7 @@ class NTriplesCircularTest {
@BeforeEach
void setUp() {
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
defaultConfig = NTriplesSerializerOptions.defaultConfig();
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLCircularTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLCircularTest.java
index ef7c939cf..ddb393d1b 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLCircularTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/rdfxml/RDFXMLCircularTest.java
@@ -8,6 +8,7 @@
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -20,10 +21,8 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
-import fr.inria.corese.core.next.impl.io.serialization.rdfxml.XMLSerializerOption;
+import fr.inria.corese.core.next.impl.io.serialization.rdfxml.RDFXMLSerializerOption;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
@@ -49,9 +48,9 @@
class RDFXMLCircularTest {
private ValueFactory valueFactory;
- private SerializerFactory serializerFactory;
+ private fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
private ParserFactory parserFactory;
- private XMLSerializerOption defaultConfig;
+ private RDFXMLSerializerOption defaultConfig;
// Test data constants
private static final String EXAMPLE_NS = "http://example.org/";
@@ -71,9 +70,9 @@ class RDFXMLCircularTest {
@BeforeEach
void setUp() {
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
- defaultConfig = XMLSerializerOption.defaultConfig();
+ defaultConfig = RDFXMLSerializerOption.defaultConfig();
}
/**
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGCircularTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGCircularTest.java
index e741576e3..9cdbbe15d 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGCircularTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGCircularTest.java
@@ -20,9 +20,8 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.serialization.trig.TriGSerializerOptions;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
@@ -42,7 +41,7 @@
class TriGCircularTest {
private ValueFactory valueFactory;
- private SerializerFactory serializerFactory;
+ private fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
private ParserFactory parserFactory;
private TriGSerializerOptions defaultConfig;
@@ -66,7 +65,7 @@ class TriGCircularTest {
@BeforeEach
void setUp() {
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
defaultConfig = TriGSerializerOptions.defaultConfig();
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/parser/turtle/TurtleCircularTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/parser/turtle/TurtleCircularTest.java
index ee71d36a7..86aa34e7c 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/parser/turtle/TurtleCircularTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/parser/turtle/TurtleCircularTest.java
@@ -20,9 +20,8 @@
import fr.inria.corese.core.next.api.base.io.RDFFormat;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.serialization.turtle.TurtleSerializerOptions;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
@@ -39,7 +38,7 @@
class TurtleCircularTest {
private ValueFactory valueFactory;
- private SerializerFactory serializerFactory;
+ private fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
private ParserFactory parserFactory;
private TurtleSerializerOptions defaultConfig;
@@ -61,7 +60,7 @@ class TurtleCircularTest {
@BeforeEach
void setUp() {
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
defaultConfig = TurtleSerializerOptions.defaultConfig();
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/DefaultSerializerFactoryTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/SerializerFactoryTest.java
similarity index 94%
rename from src/test/java/fr/inria/corese/core/next/impl/io/serialization/DefaultSerializerFactoryTest.java
rename to src/test/java/fr/inria/corese/core/next/impl/io/serialization/SerializerFactoryTest.java
index 014015738..673e5e3bb 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/DefaultSerializerFactoryTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/SerializerFactoryTest.java
@@ -20,25 +20,25 @@
import fr.inria.corese.core.next.impl.io.serialization.canonical.RDFC10Serializer;
import fr.inria.corese.core.next.impl.io.serialization.nquads.NQuadsSerializer;
import fr.inria.corese.core.next.impl.io.serialization.ntriples.NTriplesSerializer;
-import fr.inria.corese.core.next.impl.io.serialization.rdfxml.XMLSerializer;
+import fr.inria.corese.core.next.impl.io.serialization.rdfxml.RDFXMLSerializer;
import fr.inria.corese.core.next.impl.io.serialization.trig.TriGSerializer;
import fr.inria.corese.core.next.impl.io.serialization.turtle.TurtleSerializer;
/**
- * Unit tests for the {@link DefaultSerializerFactory} class.
+ * Unit tests for the {@link SerializerFactory} class.
* This class verifies that the factory correctly creates instances of
* various {@link RDFSerializer} implementations based on the provided
* {@link RDFFormat} and handles null inputs gracefully.
*/
-class DefaultSerializerFactoryTest {
+class SerializerFactoryTest {
- private DefaultSerializerFactory factory;
+ private SerializerFactory factory;
private Model mockModel;
private IOOptions mockConfig;
@BeforeEach
void setUp() {
- factory = new DefaultSerializerFactory();
+ factory = new SerializerFactory();
mockModel = mock(Model.class);
mockConfig = mock(IOOptions.class);
}
@@ -98,11 +98,11 @@ void createSerializer_shouldReturnTriGSerializer_forTriGFormat() {
@Test
@DisplayName("createSerializer should return XmlSerializer for RDFXML format")
void createSerializer_shouldReturnXmlSerializer_forRdfXmlFormat() {
- try (MockedConstruction mockedConstruction = mockConstruction(XMLSerializer.class)) {
+ try (MockedConstruction mockedConstruction = mockConstruction(RDFXMLSerializer.class)) {
RDFSerializer serializer = factory.createSerializer(RDFFormat.RDFXML, mockModel, mockConfig);
assertNotNull(serializer);
- assertTrue(serializer instanceof XMLSerializer);
+ assertTrue(serializer instanceof RDFXMLSerializer);
assertEquals(1, mockedConstruction.constructed().size(), "XmlSerializer constructor should be called once");
}
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10OptionsTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerOptionsTest.java
similarity index 88%
rename from src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10OptionsTest.java
rename to src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerOptionsTest.java
index 7d829c1b3..59d8f9d03 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10OptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerOptionsTest.java
@@ -6,16 +6,16 @@
import static org.junit.jupiter.api.Assertions.*;
/**
- * Unit tests for the {@link RDFC10Options} class.
+ * Unit tests for the {@link RDFC10SerializerOptions} class.
* This class verifies the default configuration and the builder functionality
* for the Canonical RDF serialization options.
*/
-class RDFC10OptionsTest {
+class RDFC10SerializerOptionsTest {
@Test
@DisplayName("defaultConfig should return an instance with expected default values")
void defaultConfig_shouldReturnExpectedValues() {
- RDFC10Options config = RDFC10Options.defaultConfig();
+ RDFC10SerializerOptions config = RDFC10SerializerOptions.defaultConfig();
assertNotNull(config, "Default config should not be null");
assertTrue(config.isStrictMode(), "Default strictMode should be true for canonicalization");
@@ -28,7 +28,7 @@ void defaultConfig_shouldReturnExpectedValues() {
@Test
@DisplayName("builder should allow setting custom options")
void builder_shouldAllowCustomOptions() {
- RDFC10Options customConfig = RDFC10Options.builder()
+ RDFC10SerializerOptions customConfig = RDFC10SerializerOptions.builder()
.strictMode(false)
.validateURIs(false)
.escapeUnicode(false)
@@ -47,7 +47,7 @@ void builder_shouldAllowCustomOptions() {
@Test
@DisplayName("builder should use default values for un-set options")
void builder_shouldUseDefaultValues_forUnsetOptions() {
- RDFC10Options config = RDFC10Options.builder()
+ RDFC10SerializerOptions config = RDFC10SerializerOptions.builder()
.strictMode(false)
.build();
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerTest.java
index a18bc0418..564ef29cf 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/canonical/RDFC10SerializerTest.java
@@ -6,7 +6,7 @@
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
import fr.inria.corese.core.next.impl.exception.SerializationException;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
import org.junit.jupiter.api.BeforeEach;
@@ -82,12 +82,12 @@ class RDFC10SerializerTest {
private RDFC10Serializer serializer;
- private RDFC10Options defaultConfig;
+ private RDFC10SerializerOptions defaultConfig;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
- defaultConfig = RDFC10Options.defaultConfig();
+ defaultConfig = RDFC10SerializerOptions.defaultConfig();
setupBasicMocks();
@@ -341,11 +341,11 @@ private String serializeToRdfCanonical(String resourcePath) {
fail("Failed to parse resource: " + resourcePath + " - " + e.getMessage());
}
- DefaultSerializerFactory serializerFactory = new DefaultSerializerFactory();
+ SerializerFactory serializerFactory = new SerializerFactory();
RDFSerializer serializer = serializerFactory.createSerializer(
RDFFormat.RDFC_1_0,
model,
- RDFC10Options.defaultConfig()
+ RDFC10SerializerOptions.defaultConfig()
);
StringWriter writer = new StringWriter();
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializerTest.java
index c1f93d429..0a758c136 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/jsonld/JSONLDSerializerTest.java
@@ -3,7 +3,7 @@
import com.apicatalog.jsonld.json.JsonLdComparison;
import fr.inria.corese.core.next.api.*;
import fr.inria.corese.core.next.api.io.serialization.RDFSerializer;
-import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;
+import fr.inria.corese.core.next.impl.io.common.JSONLDOptions;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import fr.inria.corese.core.next.impl.temp.CoreseModel;
import jakarta.json.Json;
@@ -50,7 +50,7 @@ public void smallModelTest() {
// IRI IRI LangLiteral
this.model.add(iriNode, iriPred, langLiteral);
- RDFSerializer serializer = new JSONLDSerializer(this.model, (new JSONLDProcessorOptions.Builder()).ordered(true).build());
+ RDFSerializer serializer = new JSONLDSerializer(this.model, (new JSONLDOptions.Builder()).ordered(true).build());
StringWriter writer = new StringWriter();
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializerTest.java
index 008afb910..1aae46771 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/nquads/NQuadsSerializerTest.java
@@ -165,7 +165,7 @@ void writeShouldThrowOnNullSubjectValue() {
StringWriter writer = new StringWriter();
SerializationException thrown = assertThrows(SerializationException.class, () -> nQuadsSerializer.write(writer));
- assertEquals("Invalid N-Quads data: Value cannot be null in N-Quads format when strictMode is enabled. [Format: N-Quads]", thrown.getMessage());
+ assertEquals("Value cannot be null in N-Quads format when strictMode is enabled. [Format: N-Quads]", thrown.getMessage());
}
@Test
@@ -180,7 +180,7 @@ void writeShouldThrowOnNullPredicateValue() {
StringWriter writer = new StringWriter();
SerializationException thrown = assertThrows(SerializationException.class, () -> nQuadsSerializer.write(writer));
- assertEquals("Invalid N-Quads data: Value cannot be null in N-Quads format when strictMode is enabled. [Format: N-Quads]", thrown.getMessage());
+ assertEquals("Value cannot be null in N-Quads format when strictMode is enabled. [Format: N-Quads]", thrown.getMessage());
}
@Test
@@ -194,7 +194,7 @@ void writeShouldThrowOnNullObjectValue() {
StringWriter writer = new StringWriter();
SerializationException thrown = assertThrows(SerializationException.class, () -> nQuadsSerializer.write(writer));
- assertEquals("Invalid N-Quads data: Value cannot be null in N-Quads format when strictMode is enabled. [Format: N-Quads]", thrown.getMessage());
+ assertEquals("Value cannot be null in N-Quads format when strictMode is enabled. [Format: N-Quads]", thrown.getMessage());
}
@Test
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializerTest.java
index f199fe54b..68a0c3ca3 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/ntriples/NTriplesSerializerTest.java
@@ -169,7 +169,7 @@ void writeShouldThrowOnNullSubjectValue() {
StringWriter writer = new StringWriter();
SerializationException thrown = assertThrows(SerializationException.class, () -> nTriplesSerializer.write(writer));
- assertEquals("Invalid N-Triples data: Value cannot be null in N-Triples format when strictMode is enabled. [Format: N-Triples]", thrown.getMessage());
+ assertEquals("Value cannot be null in N-Triples format when strictMode is enabled. [Format: N-Triples]", thrown.getMessage());
}
@Test
@@ -184,7 +184,7 @@ void writeShouldThrowOnNullPredicateValue() {
StringWriter writer = new StringWriter();
SerializationException thrown = assertThrows(SerializationException.class, () -> nTriplesSerializer.write(writer));
- assertEquals("Invalid N-Triples data: Value cannot be null in N-Triples format when strictMode is enabled. [Format: N-Triples]", thrown.getMessage());
+ assertEquals("Value cannot be null in N-Triples format when strictMode is enabled. [Format: N-Triples]", thrown.getMessage());
}
@Test
@@ -198,7 +198,7 @@ void writeShouldThrowOnNullObjectValue() {
StringWriter writer = new StringWriter();
SerializationException thrown = assertThrows(SerializationException.class, () -> nTriplesSerializer.write(writer));
- assertEquals("Invalid N-Triples data: Value cannot be null in N-Triples format when strictMode is enabled. [Format: N-Triples]", thrown.getMessage());
+ assertEquals("Value cannot be null in N-Triples format when strictMode is enabled. [Format: N-Triples]", thrown.getMessage());
}
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializerTest.java
similarity index 88%
rename from src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializerTest.java
index b4ee7dd15..ef79f532f 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XMLSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/RDFXMLSerializerTest.java
@@ -2,10 +2,10 @@
import fr.inria.corese.core.next.api.Model;
import fr.inria.corese.core.next.api.Statement;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.TestStatementFactory;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.PrefixOrderingEnum;
-import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
import fr.inria.corese.core.next.impl.exception.SerializationException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
@@ -23,11 +23,11 @@
/**
* Unit tests for the XmlSerializer class.
*/
-class XMLSerializerTest {
+class RDFXMLSerializerTest {
@Mock
private Model mockModel;
- XMLSerializerOption mockConfig;
+ RDFXMLSerializerOption mockConfig;
private TestStatementFactory factory;
private StringWriter writer;
@@ -38,7 +38,7 @@ void setUp() {
writer = new StringWriter();
factory = new TestStatementFactory();
- mockConfig = XMLSerializerOption.defaultConfig();
+ mockConfig = RDFXMLSerializerOption.defaultConfig();
}
@@ -53,7 +53,7 @@ void shouldSerializeSimpleIriTriple() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.autoDeclarePrefixes(true)
.usePrefixes(true)
.addCustomPrefix("foaf", "http://xmlns.com/foaf/0.1/")
@@ -61,7 +61,7 @@ void shouldSerializeSimpleIriTriple() throws SerializationException {
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
@@ -88,13 +88,13 @@ void shouldHandleBlankNodeSubject() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.stableBlankNodeIds(true)
.addCustomPrefix("foaf", "http://xmlns.com/foaf/0.1/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -121,13 +121,13 @@ void shouldHandleBlankNodeObject() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.stableBlankNodeIds(true)
.addCustomPrefix("dc", "http://purl.org/dc/elements/1.1/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
@@ -149,18 +149,18 @@ void shouldSerializeLiteralWithStringDatatypeMinimalPolicy() throws Serializatio
Statement stmt = factory.createStatement(
factory.createIRI("http://example.org/person"),
factory.createIRI("http://xmlns.com/foaf/0.1/name"),
- factory.createLiteral("John Doe", factory.createIRI(SerializationConstants.XSD_STRING), null)
+ factory.createLiteral("John Doe", XSD.xsdString.getIRI(), null)
);
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.literalDatatypePolicy(LiteralDatatypePolicyEnum.MINIMAL)
.addCustomPrefix("foaf", "http://xmlns.com/foaf/0.1/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -180,19 +180,19 @@ void shouldSerializeLiteralWithCustomDatatypeMinimalPolicy() throws Serializatio
Statement stmt = factory.createStatement(
factory.createIRI("http://example.org/data"),
factory.createIRI("http://example.org/vocabulary/value"),
- factory.createLiteral("123", factory.createIRI(SerializationConstants.XSD_INTEGER), null)
+ factory.createLiteral("123", fr.inria.corese.core.next.impl.common.vocabulary.XSD.xsdInteger.getIRI(), null)
);
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.literalDatatypePolicy(LiteralDatatypePolicyEnum.MINIMAL)
.addCustomPrefix("ex", "http://example.org/vocabulary/")
.addCustomPrefix("xsd", "http://www.w3.org/2001/XMLSchema#")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -217,12 +217,12 @@ void shouldSerializeLiteralWithLanguage() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.addCustomPrefix("dc", "http://purl.org/dc/elements/1.1/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -254,14 +254,14 @@ void shouldRespectPrefixOrderingDefault() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt1, stmt2));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.addCustomPrefix("exorg", "http://ex.org/")
.addCustomPrefix("excom", "http://ex.com/")
.prefixOrdering(PrefixOrderingEnum.USAGE_ORDER)
.sortSubjects(false)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String actual = writer.toString();
@@ -296,13 +296,13 @@ void shouldSortSubjectsAlphabetically() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt1, stmt2));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.sortSubjects(true)
.addCustomPrefix("ex", "http://ex.org/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -332,11 +332,11 @@ void shouldEscapeXmlAttributeValues() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -362,14 +362,14 @@ void shouldEscapeXmlContentValues() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.literalDatatypePolicy(LiteralDatatypePolicyEnum.ALWAYS_TYPED)
.addCustomPrefix("ex", "http://example.org/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -396,13 +396,13 @@ void shouldNotAutoDeclarePrefixesIfDisabled() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.autoDeclarePrefixes(false)
.usePrefixes(true)
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -428,13 +428,13 @@ void shouldNotUsePrefixesIfDisabled() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.usePrefixes(false)
.autoDeclarePrefixes(true)
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
@@ -466,14 +466,14 @@ void shouldNotGenerateStableBlankNodeIds() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.of(stmt1, stmt2));
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.stableBlankNodeIds(false)
.sortSubjects(true)
.addCustomPrefix("ex", "http://example.org/")
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
@@ -497,11 +497,11 @@ void shouldNotGenerateStableBlankNodeIds() throws SerializationException {
void shouldHandleEmptyModel() throws SerializationException {
when(mockModel.stream()).thenReturn(Stream.empty());
- XMLSerializerOption testConfig = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption testConfig = new RDFXMLSerializerOption.Builder()
.prefixOrdering(PrefixOrderingEnum.ALPHABETICAL)
.build();
- XMLSerializer serializer = new XMLSerializer(mockModel, testConfig);
+ RDFXMLSerializer serializer = new RDFXMLSerializer(mockModel, testConfig);
serializer.write(writer);
String expected = """
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XmlConfigTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XmlConfigTest.java
index 5a80780c4..fa4d4932a 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XmlConfigTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/rdfxml/XmlConfigTest.java
@@ -1,5 +1,9 @@
package fr.inria.corese.core.next.impl.io.serialization.rdfxml;
+import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.PrefixOrderingEnum;
import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
@@ -12,7 +16,7 @@
import static org.junit.jupiter.api.Assertions.*;
/**
- * Unit tests for the {@link XMLSerializerOption} class.
+ * Unit tests for the {@link RDFXMLSerializerOption} class.
* These tests verify the default configuration settings and the functionality
* of the builder pattern for customizing RDF/XML serialization options.
*/
@@ -21,7 +25,7 @@ class XmlConfigTest {
@Test
@DisplayName("defaultConfig() should return a config with expected RDF/XML defaults")
void defaultConfig_shouldReturnExpectedDefaults() {
- XMLSerializerOption config = XMLSerializerOption.defaultConfig();
+ RDFXMLSerializerOption config = RDFXMLSerializerOption.defaultConfig();
assertNotNull(config, "Default config should not be null");
@@ -30,10 +34,10 @@ void defaultConfig_shouldReturnExpectedDefaults() {
assertEquals(PrefixOrderingEnum.ALPHABETICAL, config.getPrefixOrdering(), "Default prefixOrdering should be ALPHABETICAL for XML");
Map expectedPrefixes = new HashMap<>();
- expectedPrefixes.put("rdf", SerializationConstants.RDF_NS);
- expectedPrefixes.put("rdfs", SerializationConstants.RDFS_NS);
- expectedPrefixes.put("xsd", SerializationConstants.XSD_NS);
- expectedPrefixes.put("owl", SerializationConstants.OWL_NS);
+ expectedPrefixes.put(RDF.getVocabularyPreferredPrefix(), RDF.getVocabularyNamespace());
+ expectedPrefixes.put(RDFS.getVocabularyPreferredPrefix(), RDFS.getVocabularyNamespace());
+ expectedPrefixes.put(XSD.getVocabularyPreferredPrefix(), XSD.getVocabularyNamespace());
+ expectedPrefixes.put(OWL.getVocabularyPreferredPrefix(), OWL.getVocabularyNamespace());
assertEquals(expectedPrefixes.size(), config.getCustomPrefixes().size(), "Default custom prefixes size mismatch");
assertTrue(config.getCustomPrefixes().entrySet().containsAll(expectedPrefixes.entrySet()), "Default custom prefixes should contain common RDF prefixes");
@@ -54,7 +58,7 @@ void defaultConfig_shouldReturnExpectedDefaults() {
@Test
@DisplayName("Builder should allow overriding usePrefixes")
void builder_shouldAllowOverridingUsePrefixes() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.usePrefixes(false)
.build();
assertFalse(config.usePrefixes(), "usePrefixes should be overridden to false");
@@ -63,7 +67,7 @@ void builder_shouldAllowOverridingUsePrefixes() {
@Test
@DisplayName("Builder should allow overriding autoDeclarePrefixes")
void builder_shouldAllowOverridingAutoDeclarePrefixes() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.autoDeclarePrefixes(false)
.build();
assertFalse(config.autoDeclarePrefixes(), "autoDeclarePrefixes should be overridden to false");
@@ -72,7 +76,7 @@ void builder_shouldAllowOverridingAutoDeclarePrefixes() {
@Test
@DisplayName("Builder should allow overriding prefixOrdering")
void builder_shouldAllowOverridingPrefixOrdering() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.prefixOrdering(PrefixOrderingEnum.USAGE_ORDER)
.build();
assertEquals(PrefixOrderingEnum.USAGE_ORDER, config.getPrefixOrdering(), "prefixOrdering should be overridden to USAGE_ORDER");
@@ -83,7 +87,7 @@ void builder_shouldAllowOverridingPrefixOrdering() {
void builder_shouldAllowAddingCustomPrefixes() {
String customPrefix = "my";
String customNamespace = "http://my.example.org/";
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.addCustomPrefix(customPrefix, customNamespace)
.build();
@@ -96,7 +100,7 @@ void builder_shouldAllowAddingCustomPrefixes() {
@Test
@DisplayName("Builder should allow overriding prettyPrint")
void builder_shouldAllowOverridingPrettyPrint() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.prettyPrint(false)
.build();
assertFalse(config.prettyPrint(), "prettyPrint should be overridden to false");
@@ -106,7 +110,7 @@ void builder_shouldAllowOverridingPrettyPrint() {
@DisplayName("Builder should allow overriding indent")
void builder_shouldAllowOverridingIndent() {
String customIndent = "\t";
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.indent(customIndent)
.build();
assertEquals(customIndent, config.getIndent(), "indent should be overridden to custom value");
@@ -116,7 +120,7 @@ void builder_shouldAllowOverridingIndent() {
@DisplayName("Builder should allow overriding maxLineLength")
void builder_shouldAllowOverridingMaxLineLength() {
int customLength = 120;
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.maxLineLength(customLength)
.build();
assertEquals(customLength, config.getMaxLineLength(), "maxLineLength should be overridden to custom value");
@@ -125,7 +129,7 @@ void builder_shouldAllowOverridingMaxLineLength() {
@Test
@DisplayName("Builder should allow overriding sortSubjects")
void builder_shouldAllowOverridingSortSubjects() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.sortSubjects(true)
.build();
assertTrue(config.sortSubjects(), "sortSubjects should be overridden to true");
@@ -134,7 +138,7 @@ void builder_shouldAllowOverridingSortSubjects() {
@Test
@DisplayName("Builder should allow overriding sortPredicates")
void builder_shouldAllowOverridingSortPredicates() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.sortPredicates(true)
.build();
assertTrue(config.sortPredicates(), "sortPredicates should be overridden to true");
@@ -143,7 +147,7 @@ void builder_shouldAllowOverridingSortPredicates() {
@Test
@DisplayName("Builder should allow overriding useMultilineLiterals")
void builder_shouldAllowOverridingUseMultilineLiterals() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.useMultilineLiterals(false)
.build();
assertFalse(config.useMultilineLiterals(), "useMultilineLiterals should be overridden to false");
@@ -152,7 +156,7 @@ void builder_shouldAllowOverridingUseMultilineLiterals() {
@Test
@DisplayName("Builder should allow overriding strictMode")
void builder_shouldAllowOverridingStrictMode() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.strictMode(false)
.build();
assertFalse(config.isStrictMode(), "strictMode should be overridden to false");
@@ -161,7 +165,7 @@ void builder_shouldAllowOverridingStrictMode() {
@Test
@DisplayName("Builder should allow overriding escapeUnicode")
void builder_shouldAllowOverridingEscapeUnicode() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.escapeUnicode(true)
.build();
assertTrue(config.escapeUnicode(), "escapeUnicode should be overridden to true");
@@ -170,7 +174,7 @@ void builder_shouldAllowOverridingEscapeUnicode() {
@Test
@DisplayName("Builder should allow overriding literalDatatypePolicy")
void builder_shouldAllowOverridingLiteralDatatypePolicy() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.literalDatatypePolicy(LiteralDatatypePolicyEnum.MINIMAL)
.build();
assertEquals(LiteralDatatypePolicyEnum.MINIMAL, config.getLiteralDatatypePolicy(), "literalDatatypePolicy should be overridden to MINIMAL");
@@ -180,7 +184,7 @@ void builder_shouldAllowOverridingLiteralDatatypePolicy() {
@DisplayName("Builder should allow setting baseIRI")
void builder_shouldAllowSettingBaseIRI() {
String testBaseIRI = "http://example.org/base/";
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.baseIRI(testBaseIRI)
.build();
assertEquals(testBaseIRI, config.getBaseIRI(), "baseIRI should be set correctly");
@@ -190,7 +194,7 @@ void builder_shouldAllowSettingBaseIRI() {
@DisplayName("Builder should allow overriding lineEnding")
void builder_shouldAllowOverridingLineEnding() {
String customLineEnding = "\r\n";
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.lineEnding(customLineEnding)
.build();
assertEquals(customLineEnding, config.getLineEnding(), "lineEnding should be overridden to custom value");
@@ -199,7 +203,7 @@ void builder_shouldAllowOverridingLineEnding() {
@Test
@DisplayName("Builder should allow overriding validateURIs")
void builder_shouldAllowOverridingValidateURIs() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.validateURIs(true)
.build();
assertTrue(config.validateURIs(), "validateURIs should be overridden to true");
@@ -208,7 +212,7 @@ void builder_shouldAllowOverridingValidateURIs() {
@Test
@DisplayName("Builder should allow overriding stableBlankNodeIds")
void builder_shouldAllowOverridingStableBlankNodeIds() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.stableBlankNodeIds(false)
.build();
assertFalse(config.stableBlankNodeIds(), "stableBlankNodeIds should be overridden to false");
@@ -217,7 +221,7 @@ void builder_shouldAllowOverridingStableBlankNodeIds() {
@Test
@DisplayName("Builder should allow overriding includeContext")
void builder_shouldAllowOverridingIncludeContext() {
- XMLSerializerOption config = new XMLSerializerOption.Builder()
+ RDFXMLSerializerOption config = new RDFXMLSerializerOption.Builder()
.includeContext(true)
.build();
assertTrue(config.includeContext(), "includeContext should be overridden to true");
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptionsTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptionsTest.java
index 03855e848..7a9c58499 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerOptionsTest.java
@@ -1,5 +1,9 @@
package fr.inria.corese.core.next.impl.io.serialization.trig;
+import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.option.BlankNodeStyleEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.PrefixOrderingEnum;
@@ -31,10 +35,10 @@ void defaultConfig_shouldReturnExpectedDefaults() {
assertFalse(config.useCollections(), "Default useCollections should be false for TriG");
Map expectedPrefixes = new HashMap<>();
- expectedPrefixes.put("rdf", SerializationConstants.RDF_NS);
- expectedPrefixes.put("rdfs", SerializationConstants.RDFS_NS);
- expectedPrefixes.put("xsd", SerializationConstants.XSD_NS);
- expectedPrefixes.put("owl", SerializationConstants.OWL_NS);
+ expectedPrefixes.put(RDF.getVocabularyPreferredPrefix(), RDF.getVocabularyNamespace());
+ expectedPrefixes.put(RDFS.getVocabularyPreferredPrefix(), RDFS.getVocabularyNamespace());
+ expectedPrefixes.put(XSD.getVocabularyPreferredPrefix(), XSD.getVocabularyNamespace());
+ expectedPrefixes.put(OWL.getVocabularyPreferredPrefix(), OWL.getVocabularyNamespace());
assertEquals(expectedPrefixes.size(), config.getCustomPrefixes().size(), "Default custom prefixes size mismatch");
assertTrue(config.getCustomPrefixes().entrySet().containsAll(expectedPrefixes.entrySet()), "Default custom prefixes should contain common RDF prefixes");
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerTest.java
index ba0c206c1..bf9b41582 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/trig/TriGSerializerTest.java
@@ -4,6 +4,7 @@
import fr.inria.corese.core.next.api.Model;
import fr.inria.corese.core.next.api.Statement;
import fr.inria.corese.core.next.impl.common.literal.RDF;
+import fr.inria.corese.core.next.impl.common.literal.XSD;
import fr.inria.corese.core.next.impl.io.serialization.TestStatementFactory;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
@@ -95,7 +96,7 @@ void testRdfTypeShortcut() throws SerializationException, IOException {
Statement mockStatement = factory.createStatement(
factory.createIRI("http://example.org/ns/person1"),
- factory.createIRI(SerializationConstants.RDF_TYPE),
+ fr.inria.corese.core.next.impl.common.vocabulary.RDF.type.getIRI(),
factory.createIRI("http://xmlns.com/foaf/0.1/Person"),
null
);
@@ -189,7 +190,7 @@ void testLiteralWithLanguageTag() throws SerializationException, IOException {
*/
@Test
void testLiteralWithExplicitXsdStringType() throws SerializationException, IOException {
- IRI mockDatatype = factory.createIRI(SerializationConstants.XSD_STRING);
+ IRI mockDatatype = XSD.STRING.getIRI();
Statement mockStatement = factory.createStatement(
factory.createIRI("http://example.org/data/book2"),
factory.createIRI("http://purl.org/dc/elements/1.1/creator"),
@@ -348,7 +349,7 @@ void testStrictModeInvalidLiteral() throws SerializationException {
assertEquals("TriG", thrown.getFormatName());
- assertEquals("Invalid data for format TriG: An rdf:langString literal must have a language tag. [Format: TriG]", thrown.getMessage());
+ assertEquals("An rdf:langString literal must have a language tag. [Format: TriG]", thrown.getMessage());
}
/**
@@ -384,7 +385,7 @@ void testStrictModeInvalidIRICharacters() throws SerializationException {
assertEquals("TriG", thrown.getFormatName());
- assertEquals("Invalid data for format TriG: IRI contains illegal characters (space, quotes, angle brackets) for the unescaped form of TriG: http://example.org/invalid iri [Format: TriG]", thrown.getMessage());
+ assertEquals("IRI contains illegal characters (space, quotes, angle brackets) for the unescaped form : http://example.org/invalid iri [Format: TriG]", thrown.getMessage());
}
/**
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptionsTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptionsTest.java
index ce554d6ba..06c4e5f0d 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerOptionsTest.java
@@ -1,5 +1,9 @@
package fr.inria.corese.core.next.impl.io.serialization.turtle;
+import fr.inria.corese.core.next.impl.common.vocabulary.OWL;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDF;
+import fr.inria.corese.core.next.impl.common.vocabulary.RDFS;
+import fr.inria.corese.core.next.impl.common.vocabulary.XSD;
import fr.inria.corese.core.next.impl.io.serialization.option.BlankNodeStyleEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.option.PrefixOrderingEnum;
@@ -30,10 +34,10 @@ void defaultConfig_shouldReturnExpectedDefaults() {
assertEquals(BlankNodeStyleEnum.ANONYMOUS, config.getBlankNodeStyle(), "Default blankNodeStyle should be ANONYMOUS for Turtle");
Map expectedPrefixes = new HashMap<>();
- expectedPrefixes.put("rdf", SerializationConstants.RDF_NS);
- expectedPrefixes.put("rdfs", SerializationConstants.RDFS_NS);
- expectedPrefixes.put("xsd", SerializationConstants.XSD_NS);
- expectedPrefixes.put("owl", SerializationConstants.OWL_NS);
+ expectedPrefixes.put(RDF.getVocabularyPreferredPrefix(), RDF.getVocabularyNamespace());
+ expectedPrefixes.put(RDFS.getVocabularyPreferredPrefix(), RDFS.getVocabularyNamespace());
+ expectedPrefixes.put(XSD.getVocabularyPreferredPrefix(), XSD.getVocabularyNamespace());
+ expectedPrefixes.put(OWL.getVocabularyPreferredPrefix(), OWL.getVocabularyNamespace());
assertEquals(expectedPrefixes.size(), config.getCustomPrefixes().size(), "Default custom prefixes size mismatch");
assertTrue(config.getCustomPrefixes().entrySet().containsAll(expectedPrefixes.entrySet()), "Default custom prefixes should contain common RDF prefixes");
diff --git a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerTest.java b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerTest.java
index dd16ec354..ee495ed38 100644
--- a/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/impl/io/serialization/turtle/TurtleSerializerTest.java
@@ -1,10 +1,10 @@
package fr.inria.corese.core.next.impl.io.serialization.turtle;
import fr.inria.corese.core.next.api.*;
-import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.common.literal.RDF;
+import fr.inria.corese.core.next.impl.common.literal.XSD;
import fr.inria.corese.core.next.impl.io.parser.ParserFactory;
-import fr.inria.corese.core.next.impl.io.serialization.DefaultSerializerFactory;
+import fr.inria.corese.core.next.impl.io.serialization.SerializerFactory;
import fr.inria.corese.core.next.impl.io.serialization.TestStatementFactory;
import fr.inria.corese.core.next.impl.io.serialization.option.LiteralDatatypePolicyEnum;
import fr.inria.corese.core.next.impl.io.serialization.util.SerializationConstants;
@@ -98,7 +98,7 @@ void testRdfTypeShortcut() throws SerializationException, IOException {
Statement mockStatement = factory.createStatement(
factory.createIRI("http://example.org/ns/person1"),
- factory.createIRI(SerializationConstants.RDF_TYPE),
+ fr.inria.corese.core.next.impl.common.vocabulary.RDF.type.getIRI(),
factory.createIRI("http://xmlns.com/foaf/0.1/Person"),
null
);
@@ -200,7 +200,7 @@ void testLiteralWithLanguageTag() throws SerializationException, IOException {
@DisplayName("Should serialize literal with xsd:string datatype (minimal policy)")
void testLiteralWithExplicitXsdStringType() throws SerializationException, IOException {
- IRI mockDatatype = factory.createIRI(SerializationConstants.XSD_STRING);
+ IRI mockDatatype = XSD.STRING.getIRI();
Statement mockStatement = factory.createStatement(
factory.createIRI("http://example.org/data/book2"),
factory.createIRI("http://purl.org/dc/elements/1.1/creator"),
@@ -314,14 +314,14 @@ void testBlankNodeSerializarionWithoutId() {
Logger logger = LoggerFactory.getLogger(TurtleSerializerTest.class);
ValueFactory valueFactory;
- SerializerFactory serializerFactory;
+ fr.inria.corese.core.next.api.io.serialization.SerializerFactory serializerFactory;
ParserFactory parserFactory;
TurtleSerializerOptions defaultConfig;
String EXAMPLE_NS = "http://example.org/";
String PREDICATE_KNOWS = EXAMPLE_NS + "knows";
valueFactory = new CoreseAdaptedValueFactory();
- serializerFactory = new DefaultSerializerFactory();
+ serializerFactory = new SerializerFactory();
parserFactory = new ParserFactory();
defaultConfig = TurtleSerializerOptions.defaultConfig();
@@ -489,7 +489,7 @@ void testStrictModeInvalidLiteral() throws SerializationException {
assertEquals("Turtle", thrown.getFormatName());
- assertEquals("Invalid data for format Turtle: An rdf:langString literal must have a language tag. [Format: Turtle]", thrown.getMessage());
+ assertEquals("An rdf:langString literal must have a language tag. [Format: Turtle]", thrown.getMessage());
}
/**
@@ -525,7 +525,7 @@ void testStrictModeInvalidIRICharacters() throws SerializationException {
assertEquals("Turtle", thrown.getFormatName());
- assertEquals("Invalid data for format Turtle: IRI contains illegal characters (space, quotes, angle brackets) for the unescaped form of Turtle: http://example.org/invalid iri [Format: Turtle]", thrown.getMessage());
+ assertEquals("IRI contains illegal characters (space, quotes, angle brackets) for the unescaped form : http://example.org/invalid iri [Format: Turtle]", thrown.getMessage());
}
/**