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
MaillPierre marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package fr.inria.corese.core.next.api.base.io.parser;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.util.Objects;

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.AbstractIOOptions;
import fr.inria.corese.core.next.api.io.IOOptions;
import fr.inria.corese.core.next.api.io.common.BaseIRIOptions;
import fr.inria.corese.core.next.api.io.parser.RDFParser;

/**
Expand Down Expand Up @@ -38,13 +42,14 @@ public void setConfig(IOOptions config) {

/**
* Constructor for AbstractRDFParser that initializes the model and value
* factory.
* factory. Ths created object will use an empty AbstractIOOptions object as configuration
*
* @param model the model to be populated by the parser
* @param factory the value factory used to create RDF values
*/
protected AbstractRDFParser(Model model, ValueFactory factory) {
this(model, factory, null);
this(model, factory, new AbstractIOOptions() {
});
}

/**
Expand All @@ -58,19 +63,30 @@ protected AbstractRDFParser(Model model, ValueFactory factory) {
protected AbstractRDFParser(Model model, ValueFactory factory, IOOptions config) {
Objects.requireNonNull(model);
Objects.requireNonNull(factory);
Objects.requireNonNull(config);
this.model = model;
this.valueFactory = factory;
this.config = config;
}

@Override
public void parse(InputStream in) {
parse(in, null);
if(getConfig() instanceof BaseIRIOptions baseIRIOptions) {
String baseIRI = baseIRIOptions.getBaseIRI();
parse(new InputStreamReader(in, StandardCharsets.UTF_8), baseIRI);
} else {
parse(new InputStreamReader(in, StandardCharsets.UTF_8), null);
}
}
Comment thread
MaillPierre marked this conversation as resolved.

@Override
public void parse(Reader reader) {
parse(reader, null);
if(getConfig() instanceof BaseIRIOptions baseIRIOptions) {
String baseIRI = baseIRIOptions.getBaseIRI();
parse(reader, baseIRI);
} else {
parse(reader, null);
}
}
Comment thread
MaillPierre marked this conversation as resolved.

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package fr.inria.corese.core.next.api.io.common;

import fr.inria.corese.core.next.api.io.IOOptions;
Comment thread
MaillPierre marked this conversation as resolved.

/**
* Options for RDF parsers and serializers that support a base IRI.
*/
public interface BaseIRIOptions {

/**
* @return the base IRI used to resolve relative IRIs
*/
String getBaseIRI();
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
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.IOOptions;

/**
* A factory for creating RDF parsers.
Expand All @@ -27,6 +28,6 @@ public interface RDFParserFactory {
* @param config The configuration to use for parsing.
* @return A new instance of an RDF parser for the specified format and model.
*/
RDFParser createRDFParser(RDFFormat format, Model model, ValueFactory factory, RDFParserOptions config);
RDFParser createRDFParser(RDFFormat format, Model model, ValueFactory factory, IOOptions config);

}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

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.IOOptions;

/**
* Factory interface for creating {@link RDFSerializer} instances.
* This interface defines a contract for classes that are responsible
* for providing appropriate RDF serializers based on the desired
* {@link RDFFormat}, a {@link Model} to be serialized, and
* {@link SerializationOption}.
* {@link IOOptions}.
* Implementations of this factory can manage the instantiation
* and configuration of various RDF serializers, promoting
* loose coupling and extensibility in the serialization process.
Expand All @@ -20,10 +21,10 @@ public interface SerializerFactory {
*
* @param format The {@link RDFFormat} to use for serialization.
* @param model The {@link Model} to be serialized.
* @param config The {@link SerializationOption} configuration to use for
* @param config The {@link IOOptions} configuration to use for
* serialization.
* @return A new instance of an RDF serializer for the specified format and
* model.
*/
RDFSerializer createSerializer(RDFFormat format, Model model, SerializationOption config);
RDFSerializer createSerializer(RDFFormat format, Model model, IOOptions config);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

import fr.inria.corese.core.next.api.IRI;
import fr.inria.corese.core.next.api.base.io.AbstractIOOptions;
import fr.inria.corese.core.next.api.io.parser.RDFParserBaseIRIOptions;
import fr.inria.corese.core.next.api.io.serialization.SerializationOption;
import fr.inria.corese.core.next.api.io.common.BaseIRIOptions;
import fr.inria.corese.core.next.impl.io.parser.util.ParserConstants;

/**
* Wrapper around the JsonLdOptions class for the Titanium JSONLD parser and
Expand All @@ -18,8 +18,8 @@
* @see <a href=
* "https://javadoc.io/doc/com.apicatalog/titanium-json-ld/latest/com/apicatalog/jsonld/JsonLdOptions.html">JsonLdOptions</a>
*/
public class TitaniumJSONLDProcessorOption extends AbstractIOOptions
implements RDFParserBaseIRIOptions, SerializationOption {
public class JSONLDProcessorOptions extends AbstractIOOptions
implements BaseIRIOptions {

private final Builder builder;

Expand All @@ -28,7 +28,7 @@ public class TitaniumJSONLDProcessorOption extends AbstractIOOptions
*
* @param builder the builder containing the options for this processor
*/
protected TitaniumJSONLDProcessorOption(Builder builder) {
protected JSONLDProcessorOptions(Builder builder) {
this.builder = builder;
}

Expand Down Expand Up @@ -133,23 +133,26 @@ public JsonLdOptions getJsonLdOptions() {
}

@Override
public String getBase() {
public String getBaseIRI() {
if(this.builder.options.getBase() == null) {
return ParserConstants.getDefaultBaseURI();
}
return this.builder.options.getBase().toString();
}

/**
* Builder for creating instances of TitaniumJSONLDProcessorOption.
* Builder for creating instances of JSONLDProcessorOptions.
* This nested static class provides a fluent API for configuring the
* various options before building the final
* {@code TitaniumJSONLDProcessorOption} object.
* {@code JSONLDProcessorOptions} object.
*/
public static class Builder extends AbstractIOOptions.Builder<TitaniumJSONLDProcessorOption> {
public static class Builder extends AbstractIOOptions.Builder<JSONLDProcessorOptions> {

private final JsonLdOptions options = new JsonLdOptions();

@Override
public TitaniumJSONLDProcessorOption build() {
return new TitaniumJSONLDProcessorOption(this);
public JSONLDProcessorOptions build() {
return new JSONLDProcessorOptions(this);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
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.base.io.parser.AbstractRDFParserFactory;
import fr.inria.corese.core.next.api.io.IOOptions;
import fr.inria.corese.core.next.api.io.parser.RDFParser;
import fr.inria.corese.core.next.api.io.parser.RDFParserOptions;
import fr.inria.corese.core.next.impl.io.parser.jsonld.JSONLDParser;
import fr.inria.corese.core.next.impl.io.parser.nquads.ANTLRNQuadsParser;
import fr.inria.corese.core.next.impl.io.parser.ntriples.ANTLRNTriplesParser;
import fr.inria.corese.core.next.impl.io.parser.nquads.NQuadsParser;
import fr.inria.corese.core.next.impl.io.parser.ntriples.NTriplesParser;
import fr.inria.corese.core.next.impl.io.parser.rdfxml.RDFXMLParser;
import fr.inria.corese.core.next.impl.io.parser.turtle.ANTLRTurtleParser;
import fr.inria.corese.core.next.impl.io.parser.trig.ANTLRTrigParser;
import fr.inria.corese.core.next.impl.io.parser.turtle.TurtleParser;
import fr.inria.corese.core.next.impl.io.parser.trig.TriGParser;

/**
* Factory class for creating RDF parsers. Generates according to the RDFFormat provided.
Expand All @@ -37,19 +37,21 @@ public ParserFactory() {
* @return An RDF parser for the given format, model, value factory, and configuration.
*/
@Override
public RDFParser createRDFParser(RDFFormat format, Model model, ValueFactory factory, RDFParserOptions config) {
public RDFParser createRDFParser(RDFFormat format, Model model, ValueFactory factory, IOOptions config) {
if (format == RDFFormat.JSONLD) {
return new JSONLDParser(model, factory, config);
} else if (format == RDFFormat.TURTLE) {
return new ANTLRTurtleParser(model, factory, config);
return new TurtleParser(model, factory, config);
} else if (format == RDFFormat.NTRIPLES) {
return new ANTLRNTriplesParser(model, factory, config);
return new NTriplesParser(model, factory, config);
} else if (format == RDFFormat.NQUADS) {
return new ANTLRNQuadsParser(model, factory, config);
return new NQuadsParser(model, factory, config);
} else if (format == RDFFormat.RDFXML) {
return new RDFXMLParser(model, factory, config);
} else if (format == RDFFormat.TRIG) {
return new ANTLRTrigParser(model, factory, config);
return new TriGParser(model, factory, config);
} else if(format == RDFFormat.RDFC_1_0) {
return new NQuadsParser(model, factory, config);
}
throw new IllegalArgumentException("Unsupported format: " + format);
}
Expand All @@ -66,15 +68,15 @@ public RDFParser createRDFParser(RDFFormat format, Model model, ValueFactory fac
if (format == RDFFormat.JSONLD) {
return new JSONLDParser(model, factory);
} else if (format == RDFFormat.TURTLE) {
return new ANTLRTurtleParser(model, factory);
return new TurtleParser(model, factory);
} else if (format == RDFFormat.NTRIPLES) {
return new ANTLRNTriplesParser(model, factory);
return new NTriplesParser(model, factory);
} else if (format == RDFFormat.NQUADS) {
return new ANTLRNQuadsParser(model, factory);
return new NQuadsParser(model, factory);
} else if (format == RDFFormat.RDFXML) {
return new RDFXMLParser(model, factory);
} else if (format == RDFFormat.TRIG) {
return new ANTLRTrigParser(model, factory);
return new TriGParser(model, factory);
}
throw new IllegalArgumentException("Unsupported format: " + format);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.TitaniumJSONLDProcessorOption;
import fr.inria.corese.core.next.impl.io.option.JSONLDProcessorOptions;

/**
* Parser for JSON-LD RDF files. This parser is based on the Titanium JSON-LD library.
Expand All @@ -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) {
super(model, factory, new TitaniumJSONLDProcessorOption.Builder().build());
this(model, factory, new JSONLDProcessorOptions.Builder().build());
}

/**
Expand Down Expand Up @@ -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 TitaniumJSONLDProcessorOption) {
options = ((TitaniumJSONLDProcessorOption) this.getConfig()).getJsonLdOptions();
if(this.getConfig() instanceof JSONLDProcessorOptions) {
options = ((JSONLDProcessorOptions) this.getConfig()).getJsonLdOptions();
}
if(baseURI != null && !baseURI.isEmpty()) {
options.setBase(URI.create(baseURI));
Expand Down
Loading