Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Comment thread
remiceres marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@ public class RDFFormat extends FileFormat {
true,
true);

public static final RDFFormat RDFC_1_0 = new RDFFormat(
"RDFC-1.0",
List.of("nq"),
List.of("application/n-quads", "application/n-quads"),
false,
true);

/**
* Constructs a new RDF format.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package fr.inria.corese.core.next.impl.io.serialization;

import fr.inria.corese.core.next.api.Model;
import fr.inria.corese.core.next.api.ValueFactory;
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.serialization.SerializationOption;
import fr.inria.corese.core.next.api.io.serialization.SerializerFactory;
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.Rdfc10Serializer;
import fr.inria.corese.core.next.impl.io.serialization.nquads.NQuadsOption;
import fr.inria.corese.core.next.impl.io.serialization.nquads.NQuadsSerializer;
import fr.inria.corese.core.next.impl.io.serialization.ntriples.NTriplesOption;
Expand All @@ -15,6 +19,7 @@
import fr.inria.corese.core.next.impl.io.serialization.trig.TriGSerializer;
import fr.inria.corese.core.next.impl.io.serialization.turtle.TurtleOption;
import fr.inria.corese.core.next.impl.io.serialization.turtle.TurtleSerializer;
import fr.inria.corese.core.next.impl.temp.CoreseAdaptedValueFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -40,6 +45,7 @@ public class DefaultSerializerFactory implements SerializerFactory {
private static final Logger logger = LoggerFactory.getLogger(DefaultSerializerFactory.class);

private final Map<RDFFormat, BiFunction<Model, SerializationOption, RDFSerializer>> registry;
private final ValueFactory coreseValueFactory;

/**
* Constructs a {@code DefaultSerializerFactory} and populates its registry
Expand All @@ -49,6 +55,8 @@ public class DefaultSerializerFactory implements SerializerFactory {
* it falls back to the format's default configuration.
*/
public DefaultSerializerFactory() {
this.coreseValueFactory = new CoreseAdaptedValueFactory();

Map<RDFFormat, BiFunction<Model, SerializationOption, RDFSerializer>> tempRegistry = new HashMap<>();

tempRegistry.put(RDFFormat.TURTLE, (model, genericConfig) -> {
Expand Down Expand Up @@ -101,6 +109,28 @@ public DefaultSerializerFactory() {
}
});

tempRegistry.put(RDFFormat.RDFC_1_0, (model, genericConfig) -> {
if (genericConfig instanceof Rdfc10Options specificConfig) {
Rdfc10Canonicalizer canonicalizer = new Rdfc10Canonicalizer(
specificConfig.getHashAlgorithm(),
specificConfig.getPermutationLimit(),
coreseValueFactory
);
return new Rdfc10Serializer(model, specificConfig, canonicalizer);
} 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();
Rdfc10Canonicalizer canonicalizer = new Rdfc10Canonicalizer(
defaultConfig.getHashAlgorithm(),
defaultConfig.getPermutationLimit(),
coreseValueFactory
Comment thread
remiceres marked this conversation as resolved.
);
return new Rdfc10Serializer(model, defaultConfig, canonicalizer);
}
});


this.registry = Collections.unmodifiableMap(tempRegistry);
}

Expand Down Expand Up @@ -129,4 +159,4 @@ public RDFSerializer createSerializer(RDFFormat format, Model model, Serializati

return constructor.apply(model, config);
}
}
}
Loading