diff --git a/src/main/java/fr/inria/corese/core/next/query/AbstractQueryParser.java b/src/main/java/fr/inria/corese/core/next/query/AbstractQueryParser.java deleted file mode 100644 index 104b8ec5e..000000000 --- a/src/main/java/fr/inria/corese/core/next/query/AbstractQueryParser.java +++ /dev/null @@ -1,55 +0,0 @@ -package fr.inria.corese.core.next.query; - -/** - * Base implementation of the {@link QueryParser} interface. - * - *
This abstract class provides common configuration handling logic - * for concrete query parser implementations. It stores and manages - * a {@link QueryOptions} instance that controls parsing behavior - * (e.g., base IRI resolution, strict mode, error handling strategy).
- * - *Subclasses are responsible for implementing the actual parsing - * logic for the supported query language (e.g., SPARQL) and producing - * - *
This class centralizes configuration management so that all - * parser implementations share consistent option handling behavior.
- * - * @see QueryParser - * @see QueryOptions - */ -public abstract class AbstractQueryParser implements QueryParser { - - /** - * The current configuration used by this parser. - */ - private QueryOptions config; - - /** - * Constructs a new parser with the given configuration. - * - * @param config the initial parsing configuration - */ - protected AbstractQueryParser(QueryOptions config) { - this.config = config; - } - - /** - * Sets the configuration options for this parser. - * - * @param options the parsing configuration - */ - @Override - public void setConfig(QueryOptions options) { - this.config = options; - } - - /** - * Returns the current configuration options of this parser. - * - * @return the parsing configuration - */ - @Override - public QueryOptions getConfig() { - return config; - } -} diff --git a/src/main/java/fr/inria/corese/core/next/query/api/base/io/AbstractQueryParser.java b/src/main/java/fr/inria/corese/core/next/query/api/base/io/AbstractQueryParser.java deleted file mode 100644 index 4197061cc..000000000 --- a/src/main/java/fr/inria/corese/core/next/query/api/base/io/AbstractQueryParser.java +++ /dev/null @@ -1,58 +0,0 @@ -package fr.inria.corese.core.next.query.api.base.io; - -import fr.inria.corese.core.next.query.api.io.parser.QueryOptions; -import fr.inria.corese.core.next.query.api.io.parser.QueryParser; - -/** - * Base implementation of the {@link QueryParser} interface. - * - *This abstract class provides common configuration handling logic - * for concrete query parser implementations. It stores and manages - * a {@link QueryOptions} instance that controls parsing behavior - * (e.g., base IRI resolution, strict mode, error handling strategy).
- * - *Subclasses are responsible for implementing the actual parsing - * logic for the supported query language (e.g., SPARQL) and producing - * - *
This class centralizes configuration management so that all - * parser implementations share consistent option handling behavior.
- * - * @see QueryParser - * @see QueryOptions - */ -public abstract class AbstractQueryParser implements QueryParser { - - /** - * The current configuration used by this parser. - */ - private QueryOptions config; - - /** - * Constructs a new parser with the given configuration. - * - * @param config the initial parsing configuration - */ - protected AbstractQueryParser(QueryOptions config) { - this.config = config; - } - - /** - * Sets the configuration options for this parser. - * - * @param options the parsing configuration - */ - @Override - public void setConfig(QueryOptions options) { - this.config = options; - } - - /** - * Returns the current configuration options of this parser. - * - * @return the parsing configuration - */ - @Override - public QueryOptions getConfig() { - return config; - } -} diff --git a/src/main/java/fr/inria/corese/core/next/query/api/base/io/ResultFormat.java b/src/main/java/fr/inria/corese/core/next/query/api/io/ResultFormat.java similarity index 79% rename from src/main/java/fr/inria/corese/core/next/query/api/base/io/ResultFormat.java rename to src/main/java/fr/inria/corese/core/next/query/api/io/ResultFormat.java index bf07aca97..bbb9c3235 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/base/io/ResultFormat.java +++ b/src/main/java/fr/inria/corese/core/next/query/api/io/ResultFormat.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query.api.base.io; +package fr.inria.corese.core.next.query.api.io; import fr.inria.corese.core.next.data.api.base.io.FileFormat; @@ -7,7 +7,7 @@ import java.util.Optional; /** - * Describes the SPARQL results serialization formats. Defines the static constants representing the standard formats for result representation. + * Describes the standard SPARQL result serialization formats. */ public class ResultFormat extends FileFormat { @@ -65,10 +65,10 @@ public static OptionalImplementations of this interface define parser-specific options - * that influence how a query is parsed and validated. Examples of such - * options may include:
- * - *This interface does not define any methods directly. It serves as - * a common supertype for all query parsing configuration classes.
- * - * @see QueryParser - */ -public interface QueryOptions { -} diff --git a/src/main/java/fr/inria/corese/core/next/query/api/io/parser/QueryParser.java b/src/main/java/fr/inria/corese/core/next/query/api/io/parser/QueryParser.java deleted file mode 100644 index e27e88275..000000000 --- a/src/main/java/fr/inria/corese/core/next/query/api/io/parser/QueryParser.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.inria.corese.core.next.query.api.io.parser; - -import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst; - -import java.io.InputStream; -import java.io.Reader; - -/** - * A parser for SPARQL queries. - * - *This interface defines methods for parsing SPARQL queries from - * various input sources (InputStream, Reader, or String) and producing - * a {@link QueryAst} representation.
- * - *Implementations may support configurable parsing behavior via - * {@link QueryOptions}, such as base IRI handling, strict mode, - * or error handling strategy.
- */ -public interface QueryParser { - - /** - * Sets the configuration options used by this parser. - * - * @param options the parsing configuration - */ - void setConfig(QueryOptions options); - - /** - * Returns the current configuration options used by this parser. - * - * @return the parsing configuration - */ - QueryOptions getConfig(); - - /** Parse a SPARQL query from an InputStream (UTF-8) */ - QueryAst parse(InputStream in); - - /** Parse a SPARQL query from an InputStream with a base IRI */ - QueryAst parse(InputStream in, String baseIRI); - - /** Parse a SPARQL query from a Reader */ - QueryAst parse(Reader reader); - - /** Parse a SPARQL query from a Reader with a base IRI */ - QueryAst parse(Reader reader, String baseIRI); - - /** Parse a SPARQL string query */ - QueryAst parse(String queryString); - - /** Parse a SPARQL string with a base IRI */ - QueryAst parse(String queryString, String baseIRI); -} diff --git a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/BooleanResultSerializer.java b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/BooleanResultSerializer.java index 3ecbfa7c1..8b43c124e 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/BooleanResultSerializer.java +++ b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/BooleanResultSerializer.java @@ -1,4 +1,5 @@ package fr.inria.corese.core.next.query.api.io.serializer; +/** Serializes the boolean result of a SPARQL ASK query. */ public interface BooleanResultSerializer extends ResultSerializer { } diff --git a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializer.java b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializer.java index 4242cf534..84eadc70e 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializer.java +++ b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializer.java @@ -3,6 +3,4 @@ import fr.inria.corese.core.next.data.api.io.serializer.Serializer; public interface ResultSerializer extends Serializer { - - } diff --git a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/IResultSerializerFactory.java b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializerFactory.java similarity index 64% rename from src/main/java/fr/inria/corese/core/next/query/api/io/serializer/IResultSerializerFactory.java rename to src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializerFactory.java index bd528f225..7d045f6cd 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/IResultSerializerFactory.java +++ b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/ResultSerializerFactory.java @@ -1,14 +1,13 @@ package fr.inria.corese.core.next.query.api.io.serializer; import fr.inria.corese.core.next.data.api.io.IOOptions; -import fr.inria.corese.core.next.data.api.io.serializer.Serializer; -import fr.inria.corese.core.next.query.api.base.io.ResultFormat; +import fr.inria.corese.core.next.query.api.io.ResultFormat; import fr.inria.corese.core.next.query.api.result.TupleQueryResult; /** - * Factory interface for creating {@link ResultSerializer} instances. This interface defines functions to create serializer based on the given result {@link fr.inria.corese.core.kgram.core.Mappings} and the desired {@link ResultFormat} + * Creates serializers for SPARQL tuple and boolean results. */ -public interface IResultSerializerFactory { +public interface ResultSerializerFactory { /** * Creates a serializer for the given {@link TupleQueryResult} results in the given {@link ResultFormat format} @@ -16,16 +15,16 @@ public interface IResultSerializerFactory { * @param results The {@link TupleQueryResult} results to be serialized * @return a new instance of {@link ResultSerializer} with default configuration. */ - ResultSerializer createSerializer(ResultFormat format, TupleQueryResult results); + ResultSerializer createTupleSerializer(ResultFormat format, TupleQueryResult results); /** * Creates a serializer for the given boolean result in the given {@link ResultFormat format} * * @param format The {@link ResultFormat} to use for serialization. - * @param results The boolean result to be serialized + * @param result The boolean result to be serialized * @return a new instance of {@link ResultSerializer} with default configuration. */ - Serializer createBooleanSerializer(ResultFormat format, boolean results); + BooleanResultSerializer createBooleanSerializer(ResultFormat format, boolean result); /** * Creates a serializer for the given {@link TupleQueryResult} results in the given {@link ResultFormat format} @@ -34,15 +33,21 @@ public interface IResultSerializerFactory { * @param options Options to configure the serialization * @return a new instance of {@link ResultSerializer} with default configuration. */ - ResultSerializer createSerializer(ResultFormat format, TupleQueryResult results, IOOptions options); + ResultSerializer createTupleSerializer( + ResultFormat format, + TupleQueryResult results, + IOOptions options); /** * Creates a serializer for the given boolean result in the given {@link ResultFormat format} * * @param format The {@link ResultFormat} to use for serialization. - * @param results The boolean result to be serialized + * @param result The boolean result to be serialized * @param options Options to configure the serialization * @return a new instance of {@link ResultSerializer} with default configuration. */ - Serializer createBooleanSerializer(ResultFormat format, boolean results, IOOptions options); + BooleanResultSerializer createBooleanSerializer( + ResultFormat format, + boolean result, + IOOptions options); } diff --git a/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/package-info.java b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/package-info.java new file mode 100644 index 000000000..89a30dc1f --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/api/io/serializer/package-info.java @@ -0,0 +1,8 @@ +/** + * Contracts for serializing SPARQL tuple and boolean results. + * + *Implementations select a serializer by {@link + * fr.inria.corese.core.next.query.api.io.ResultFormat} and report unsupported + * formats explicitly.
+ */ +package fr.inria.corese.core.next.query.api.io.serializer; diff --git a/src/main/java/fr/inria/corese/core/next/query/api/package-info.java b/src/main/java/fr/inria/corese/core/next/query/api/package-info.java new file mode 100644 index 000000000..0298bb9b7 --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/api/package-info.java @@ -0,0 +1,9 @@ +/** + * Query-facing contracts, result types, validation entry points, and I/O + * abstractions. + * + *The final public SPARQL request API is not defined yet. Parser, AST, + * bridge, and execution wiring remain outside this package so they cannot be + * mistaken for that future contract.
+ */ +package fr.inria.corese.core.next.query.api; diff --git a/src/main/java/fr/inria/corese/core/next/query/api/validation/QueryValidators.java b/src/main/java/fr/inria/corese/core/next/query/api/validation/QueryValidators.java deleted file mode 100644 index b27751d65..000000000 --- a/src/main/java/fr/inria/corese/core/next/query/api/validation/QueryValidators.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.inria.corese.core.next.query.api.validation; - -import fr.inria.corese.core.next.query.impl.parser.SparqlParser; - -/** - * Public factories for query validators. - */ -public final class QueryValidators { - - private QueryValidators() { - } - - /** Returns a validator for SPARQL query text. */ - public static QueryTextValidator sparql() { - return new SparqlParser(); - } -} diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/AbstractQueryParser.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/AbstractQueryParser.java new file mode 100644 index 000000000..152039939 --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/AbstractQueryParser.java @@ -0,0 +1,26 @@ +package fr.inria.corese.core.next.query.impl.parser; + +/** + * Internal base class that stores the configuration shared by query parsers. + * + *This implementation detail lives beside the concrete parsers; consumers + * pipeline code should use {@link QueryParser}, not extend this class.
+ */ +abstract class AbstractQueryParser implements QueryParser { + + private QueryOptions config; + + protected AbstractQueryParser(QueryOptions config) { + this.config = config; + } + + @Override + public final void setConfig(QueryOptions options) { + this.config = options; + } + + @Override + public final QueryOptions getConfig() { + return config; + } +} diff --git a/src/main/java/fr/inria/corese/core/next/query/QueryOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/QueryOptions.java similarity index 92% rename from src/main/java/fr/inria/corese/core/next/query/QueryOptions.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/QueryOptions.java index 62ceb26da..2d7698246 100644 --- a/src/main/java/fr/inria/corese/core/next/query/QueryOptions.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/QueryOptions.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query; +package fr.inria.corese.core.next.query.impl.parser; /** * Marker interface for configuration objects used by {@link QueryParser} diff --git a/src/main/java/fr/inria/corese/core/next/query/QueryParser.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/QueryParser.java similarity index 96% rename from src/main/java/fr/inria/corese/core/next/query/QueryParser.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/QueryParser.java index f2fc04dd8..7a8322024 100644 --- a/src/main/java/fr/inria/corese/core/next/query/QueryParser.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/QueryParser.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query; +package fr.inria.corese.core.next.query.impl.parser; import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java index f1aa39fcf..4ab90e08e 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java @@ -24,9 +24,7 @@ public abstract class SparqlAstBuilder { private static final String GENERATED_BLANK_NODE_PREFIX = IOConstants.BLANK_NODE_PREFIX + "b"; - /** - * Parser options (e.g. for future use: strict mode, base IRI). - */ + /** Parser options shared by syntax and AST construction. */ protected final SparqlParserOptions options; /** @@ -50,9 +48,7 @@ public abstract class SparqlAstBuilder { */ protected final VariableScopeAnalyzer variableScopeAnalyzer = new VariableScopeAnalyzer(); - /** - * Stack of groups; each group is a list of patterns (BgpAst now, later OptionalAst/UnionAst/...) - */ + /** Stack of graph-pattern groups currently being built. */ protected final DequeThe dispatcher owns no AST-building state. Query-form, graph-pattern, + * expression, modifier, prologue, and update events remain implemented by the + * specialized listeners in the {@code listener} subpackage.
*/ -public final class SparqlListener extends SparqlParserBaseListener { +final class SparqlListenerDispatcher extends SparqlParserBaseListener { private final List extends SparqlParserListener> delegates; - public SparqlListener(List extends SparqlParserListener> delegates) { + SparqlListenerDispatcher(List extends SparqlParserListener> delegates) { this.delegates = delegates != null && !delegates.isEmpty() ? List.copyOf(delegates) : Collections.emptyList(); diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParser.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParser.java index 4ccf7c479..67b4c1ddd 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParser.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParser.java @@ -9,12 +9,11 @@ import org.antlr.v4.runtime.misc.ParseCancellationException; import fr.inria.corese.core.next.data.impl.io.common.IOConstants; -import fr.inria.corese.core.next.query.api.base.io.AbstractQueryParser; import fr.inria.corese.core.next.query.api.exception.QueryEvaluationException; import fr.inria.corese.core.next.query.api.exception.QuerySyntaxException; import fr.inria.corese.core.next.query.api.exception.QueryValidationException; -import fr.inria.corese.core.next.query.api.io.parser.QueryOptions; -import fr.inria.corese.core.next.query.api.sparql.options.BaseIRIOptions; +import fr.inria.corese.core.next.query.impl.parser.QueryOptions; +import fr.inria.corese.core.next.query.impl.parser.options.BaseIRIOptions; import fr.inria.corese.core.next.query.api.validation.QueryDiagnostic; import fr.inria.corese.core.next.query.api.validation.QueryTextValidator; import fr.inria.corese.core.next.query.api.validation.QueryValidationResult; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptions.java index b2b695aa7..514f4609c 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptions.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptions.java @@ -1,7 +1,7 @@ package fr.inria.corese.core.next.query.impl.parser; import fr.inria.corese.core.next.data.impl.io.parser.util.ParserConstants; -import fr.inria.corese.core.next.query.api.sparql.options.*; +import fr.inria.corese.core.next.query.impl.parser.options.*; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzer.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzer.java index 98ccb7fe0..372982ca7 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzer.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzer.java @@ -4,7 +4,7 @@ import fr.inria.corese.core.next.query.api.exception.QueryEvaluationException; import fr.inria.corese.core.next.query.api.exception.QuerySyntaxException; import fr.inria.corese.core.next.query.api.exception.QueryValidationException; -import fr.inria.corese.core.next.query.api.sparql.options.SparqlAstError; +import fr.inria.corese.core.next.query.impl.parser.options.SparqlAstError; import fr.inria.corese.core.next.query.api.validation.QueryDiagnostic; import fr.inria.corese.core.next.query.api.validation.QueryValidationResult; import fr.inria.corese.core.next.query.impl.parser.listener.*; @@ -133,22 +133,22 @@ private QueryAst buildAst( if (root.queryUnit() != null) { SparqlQueryAstBuilder queryBuilder = new SparqlQueryAstBuilder(options); queryBuilder.reserveBlankNodeLabels(blankNodeLabels); - SparqlListener queryListener = new SparqlListener(List.of( - new AskQueryFeature(queryBuilder), - new ConstructQueryFeature(queryBuilder), - new DescribeQueryFeature(queryBuilder), - new SelectQueryFeature(queryBuilder), - new DatasetClauseFeature(queryBuilder), - new HavingFeature(queryBuilder), - new SolutionModifierFeature(queryBuilder), - new ValuesFeature(queryBuilder), - new BgpFeature(queryBuilder), - new FilterFeature(queryBuilder), - new UnionFeature(queryBuilder), - new MinusFeature(queryBuilder), - new PrologueFeature(queryBuilder), - new BindFeature(queryBuilder), - new ServiceFeature(queryBuilder) + SparqlListenerDispatcher queryListener = new SparqlListenerDispatcher(List.of( + new AskQueryAstListener(queryBuilder), + new ConstructQueryAstListener(queryBuilder), + new DescribeQueryAstListener(queryBuilder), + new SelectQueryAstListener(queryBuilder), + new DatasetClauseAstListener(queryBuilder), + new HavingAstListener(queryBuilder), + new SolutionModifierAstListener(queryBuilder), + new ValuesAstListener(queryBuilder), + new BgpAstListener(queryBuilder), + new FilterAstListener(queryBuilder), + new UnionAstListener(queryBuilder), + new MinusAstListener(queryBuilder), + new PrologueAstListener(queryBuilder), + new BindAstListener(queryBuilder), + new ServiceAstListener(queryBuilder) )); walker.walk(queryListener, root.queryUnit()); return queryBuilder.getResult(); @@ -157,17 +157,17 @@ private QueryAst buildAst( if (root.updateUnit() != null) { SparqlUpdateAstBuilder updateBuilder = new SparqlUpdateAstBuilder(options); updateBuilder.reserveBlankNodeLabels(blankNodeLabels); - SparqlListener updateListener = new SparqlListener(List.of( - new ClearRequestFeature(updateBuilder), - new CreateRequestFeature(updateBuilder), - new LoadRequestFeature(updateBuilder), - new BgpFeature(updateBuilder), - new BindFeature(updateBuilder), - new FilterFeature(updateBuilder), - new MinusFeature(updateBuilder), - new PrologueFeature(updateBuilder), - new ServiceFeature(updateBuilder), - new UnionFeature(updateBuilder) + SparqlListenerDispatcher updateListener = new SparqlListenerDispatcher(List.of( + new ClearUpdateAstListener(updateBuilder), + new CreateUpdateAstListener(updateBuilder), + new LoadUpdateAstListener(updateBuilder), + new BgpAstListener(updateBuilder), + new BindAstListener(updateBuilder), + new FilterAstListener(updateBuilder), + new MinusAstListener(updateBuilder), + new PrologueAstListener(updateBuilder), + new ServiceAstListener(updateBuilder), + new UnionAstListener(updateBuilder) )); walker.walk(updateListener, root.updateUnit()); return updateBuilder.getResult(); diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAstBuilder.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAstBuilder.java index 16ca86567..90c57384e 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAstBuilder.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAstBuilder.java @@ -47,11 +47,11 @@ public class SparqlQueryAstBuilder extends SparqlAstBuilder { protected final ListGrammar: {@code CONSTRUCT constructTemplate ... whereClause ...} * The template uses the same {@code triplesSameSubject} structure as the WHERE clause. * Triples in the template are emitted when the parent is {@code ConstructTriplesContext}, * using {@link SparqlAstBuilder} term helpers → {@link SparqlQueryAstBuilder#addConstructTriple}. */ -public class ConstructQueryFeature extends AbstractSparqlFeature implements QueryFeature { +public class ConstructQueryAstListener extends AbstractSparqlAstListener implements QueryAstListener { - public ConstructQueryFeature(SparqlQueryAstBuilder builder) { + public ConstructQueryAstListener(SparqlQueryAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/CreateRequestFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/CreateUpdateAstListener.java similarity index 80% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/CreateRequestFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/CreateUpdateAstListener.java index a76a865c5..73ba71f12 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/CreateRequestFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/CreateUpdateAstListener.java @@ -7,9 +7,9 @@ /** * AST feature listener for the CREATE SPARQL update operation. */ -public class CreateRequestFeature extends AbstractSparqlRequestFeature { +public class CreateUpdateAstListener extends AbstractSparqlUpdateAstListener { - public CreateRequestFeature(SparqlUpdateAstBuilder builder) { + public CreateUpdateAstListener(SparqlUpdateAstBuilder builder) { super(builder); } @@ -18,4 +18,4 @@ public void enterCreate(SparqlParser.CreateContext ctx) { CreateRequestAst createRequestAst = this.updateBuilder().createToAst(ctx); this.updateBuilder().addRequest(createRequestAst); } -} \ No newline at end of file +} diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DatasetClauseFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DatasetClauseAstListener.java similarity index 83% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DatasetClauseFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DatasetClauseAstListener.java index e5b892213..567dce226 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DatasetClauseFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DatasetClauseAstListener.java @@ -4,8 +4,8 @@ import fr.inria.corese.core.next.query.impl.parser.SparqlAstBuilder; import fr.inria.corese.core.next.query.impl.sparql.ast.IriAst; -public class DatasetClauseFeature extends AbstractSparqlFeature { - public DatasetClauseFeature(SparqlAstBuilder builder) { +public class DatasetClauseAstListener extends AbstractSparqlAstListener { + public DatasetClauseAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DescribeQueryFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DescribeQueryAstListener.java similarity index 89% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DescribeQueryFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DescribeQueryAstListener.java index 93aefcadd..d904dff64 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DescribeQueryFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/DescribeQueryAstListener.java @@ -14,15 +14,15 @@ * * * - *
The WHERE clause (optional) is built by {@link BgpFeature} as usual. + *
The WHERE clause (optional) is built by {@link BgpAstListener} as usual. */ -public class DescribeQueryFeature extends AbstractSparqlFeature implements QueryFeature { +public class DescribeQueryAstListener extends AbstractSparqlAstListener implements QueryAstListener { /** * Constructs bound to the given AST builder. * * @param builder the {@link SparqlAstBuilder} that will receive DESCRIBE lifecycle events */ - public DescribeQueryFeature(SparqlQueryAstBuilder builder) { + public DescribeQueryAstListener(SparqlQueryAstBuilder builder) { super(builder); } @@ -67,4 +67,4 @@ public void exitDescribeQuery(SparqlParser.DescribeQueryContext ctx) { } queryBuilder().exitDescribeQuery(); } -} \ No newline at end of file +} diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/FilterFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/FilterAstListener.java similarity index 90% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/FilterFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/FilterAstListener.java index 9a9d2af16..402911bfb 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/FilterFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/FilterAstListener.java @@ -10,9 +10,9 @@ /** * SPARQL {@code FILTER} feature */ -public class FilterFeature extends AbstractSparqlFeature { +public class FilterAstListener extends AbstractSparqlAstListener { - public FilterFeature(SparqlAstBuilder builder) { + public FilterAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/HavingFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/HavingAstListener.java similarity index 90% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/HavingFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/HavingAstListener.java index f573cd795..d59cd3836 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/HavingFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/HavingAstListener.java @@ -9,9 +9,9 @@ * Parses {@code havingClause} ({@code HAVING havingCondition+}) into {@link fr.inria.corese.core.next.query.impl.sparql.ast.HavingAst} * conditions on the active {@link SparqlAstBuilder} SELECT frame (or top-level modifier lists for ASK / CONSTRUCT / DESCRIBE). */ -public class HavingFeature extends AbstractSparqlQueryFeature { +public class HavingAstListener extends AbstractSparqlQueryAstListener { - public HavingFeature(SparqlAstBuilder builder) { + public HavingAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/LoadRequestFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/LoadUpdateAstListener.java similarity index 80% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/LoadRequestFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/LoadUpdateAstListener.java index 76903081c..3574b61c6 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/LoadRequestFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/LoadUpdateAstListener.java @@ -7,9 +7,9 @@ /** * AST feature listener for LOAD SPARQL update query */ -public class LoadRequestFeature extends AbstractSparqlRequestFeature { +public class LoadUpdateAstListener extends AbstractSparqlUpdateAstListener { - public LoadRequestFeature(SparqlUpdateAstBuilder builder) { + public LoadUpdateAstListener(SparqlUpdateAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/MinusFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/MinusAstListener.java similarity index 82% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/MinusFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/MinusAstListener.java index afcb1a3a3..08915a999 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/MinusFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/MinusAstListener.java @@ -6,9 +6,9 @@ /** * SPARQL 1.1 parser feature that handles the {@code MINUS} graph pattern. */ -public class MinusFeature extends AbstractSparqlFeature { +public class MinusAstListener extends AbstractSparqlAstListener { - public MinusFeature(SparqlAstBuilder builder) { + public MinusAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/PrologueFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/PrologueAstListener.java similarity index 82% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/PrologueFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/PrologueAstListener.java index e35f73c20..0d539ed0a 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/PrologueFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/PrologueAstListener.java @@ -4,8 +4,8 @@ import fr.inria.corese.core.next.query.impl.parser.SparqlAstBuilder; import fr.inria.corese.core.next.util.StringUtils; -public class PrologueFeature extends AbstractSparqlFeature { - public PrologueFeature(SparqlAstBuilder builder) { +public class PrologueAstListener extends AbstractSparqlAstListener { + public PrologueAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/QueryFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/QueryAstListener.java similarity index 83% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/QueryFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/QueryAstListener.java index fec553c9a..b70544462 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/QueryFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/QueryAstListener.java @@ -2,6 +2,6 @@ import fr.inria.corese.core.next.query.impl.parser.SparqlQueryAstBuilder; -public interface QueryFeature { +public interface QueryAstListener { SparqlQueryAstBuilder queryBuilder(); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SelectQueryFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SelectQueryAstListener.java similarity index 94% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SelectQueryFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SelectQueryAstListener.java index 1efa19381..194c97675 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SelectQueryFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SelectQueryAstListener.java @@ -20,7 +20,7 @@ * 2. Extract the projection from the parse context (grammar: {@code (var_+ | '*')}) and call * {@link SparqlQueryAstBuilder#setProjectionAll()} or {@link SparqlQueryAstBuilder#setProjectionVariables(List)}. *
- * The WHERE clause is built by {@link BgpFeature} (enter/exit GroupGraphPattern, TriplesBlock, addTriple). + * The WHERE clause is built by {@link BgpAstListener} (enter/exit GroupGraphPattern, TriplesBlock, addTriple). * At {@link SparqlAstBuilder#getResult()}, the builder produces a {@link fr.inria.corese.core.next.query.impl.sparql.ast.SelectQueryAst} * with both {@link fr.inria.corese.core.next.query.impl.sparql.ast.ProjectionAst} and the WHERE group. *
@@ -30,11 +30,11 @@ * Top-level {@code query} may be {@code SELECT}, {@code ASK}, {@code CONSTRUCT}, or {@code DESCRIBE}. * Nested {@code subSelect} uses the same {@link SparqlAstBuilder} stack frames as a top-level {@code SELECT}. */ -public class SelectQueryFeature extends AbstractSparqlFeature implements QueryFeature { +public class SelectQueryAstListener extends AbstractSparqlAstListener implements QueryAstListener { private final VariableScopeAnalyzer variableScopeAnalyzer = new VariableScopeAnalyzer(); - public SelectQueryFeature(SparqlQueryAstBuilder builder) { + public SelectQueryAstListener(SparqlQueryAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ServiceFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ServiceAstListener.java similarity index 87% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ServiceFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ServiceAstListener.java index ad02433b0..15b89982f 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ServiceFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ServiceAstListener.java @@ -15,20 +15,20 @@ *
On {@code enterServiceGraphPattern}, the endpoint IRI (or variable) and the * {@code SILENT} flag are captured and passed to * {@link SparqlAstBuilder#enterService(TermAst, boolean)}. - * The inner {@code groupGraphPattern} is handled by {@link BgpFeature} via the + * The inner {@code groupGraphPattern} is handled by {@link BgpAstListener} via the * shared {@link SparqlAstBuilder#enterGroup()} / {@link SparqlAstBuilder#exitGroup()} * mechanism. When that group is closed, the builder recognises it as the body of a * SERVICE clause and wraps it in a * {@link fr.inria.corese.core.next.query.impl.sparql.ast.ServiceAst}. */ -public class ServiceFeature extends AbstractSparqlFeature { +public class ServiceAstListener extends AbstractSparqlAstListener { /** - * Constructs a {@code ServiceFeature} bound to the given AST builder. + * Constructs a {@code ServiceAstListener} bound to the given AST builder. * * @param builder the {@link SparqlAstBuilder} that will receive SERVICE lifecycle events */ - public ServiceFeature(SparqlAstBuilder builder) { + public ServiceAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SolutionModifierFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SolutionModifierAstListener.java similarity index 95% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SolutionModifierFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SolutionModifierAstListener.java index a25452ba3..a128dc1f6 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SolutionModifierFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/SolutionModifierAstListener.java @@ -14,9 +14,9 @@ import java.util.Map; import java.util.Set; -public class SolutionModifierFeature extends AbstractSparqlQueryFeature { +public class SolutionModifierAstListener extends AbstractSparqlQueryAstListener { - public SolutionModifierFeature(SparqlAstBuilder builder) { + public SolutionModifierAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UnionFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UnionAstListener.java similarity index 90% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UnionFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UnionAstListener.java index 02f6b1b55..00cc76ec4 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UnionFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UnionAstListener.java @@ -7,14 +7,14 @@ * SPARQL 1.0 parser feature that handles the {@code UNION} graph pattern. * */ -public class UnionFeature extends AbstractSparqlFeature { +public class UnionAstListener extends AbstractSparqlAstListener { /** - * Constructs a {@code UnionFeature} bound to the given AST builder. + * Constructs a {@code UnionAstListener} bound to the given AST builder. * * @param builder the {@link SparqlAstBuilder} that will receive UNION lifecycle events */ - public UnionFeature(SparqlAstBuilder builder) { + public UnionAstListener(SparqlAstBuilder builder) { super(builder); } @@ -55,4 +55,4 @@ public void exitGroupGraphPattern(SparqlParser.GroupGraphPatternContext ctx) { public void exitGroupOrUnionGraphPattern(SparqlParser.GroupOrUnionGraphPatternContext ctx) { builder().exitUnion(); } -} \ No newline at end of file +} diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UpdateRequestFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UpdateAstListener.java similarity index 82% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UpdateRequestFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UpdateAstListener.java index e3c2aba63..27c27e6ce 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UpdateRequestFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/UpdateAstListener.java @@ -2,6 +2,6 @@ import fr.inria.corese.core.next.query.impl.parser.SparqlUpdateAstBuilder; -public interface UpdateRequestFeature { +public interface UpdateAstListener { SparqlUpdateAstBuilder updateBuilder(); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ValuesFeature.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ValuesAstListener.java similarity index 97% rename from src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ValuesFeature.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ValuesAstListener.java index e681c1fea..fd9128b94 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ValuesFeature.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/ValuesAstListener.java @@ -10,9 +10,9 @@ /** * Capture parsing of VALUES. VALUES can be declared both in the WHERE clause (through {@code inlineData}) and outside the query (through {@code valuesClause}). */ -public class ValuesFeature extends AbstractSparqlQueryFeature { +public class ValuesAstListener extends AbstractSparqlQueryAstListener { - public ValuesFeature(SparqlAstBuilder builder) { + public ValuesAstListener(SparqlAstBuilder builder) { super(builder); } diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/package-info.java new file mode 100644 index 000000000..9b273fa0f --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/listener/package-info.java @@ -0,0 +1,8 @@ +/** + * ANTLR listeners that translate individual SPARQL grammar constructs into + * the internal AST builders. + * + *
Listeners contain grammar-event handling only; orchestration belongs to + * the parser package.
+ */ +package fr.inria.corese.core.next.query.impl.parser.listener; diff --git a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/AbstractSparqlOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/AbstractSparqlOptions.java similarity index 73% rename from src/main/java/fr/inria/corese/core/next/query/api/sparql/options/AbstractSparqlOptions.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/options/AbstractSparqlOptions.java index 20d8e45c9..a948b6334 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/AbstractSparqlOptions.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/AbstractSparqlOptions.java @@ -1,6 +1,6 @@ -package fr.inria.corese.core.next.query.api.sparql.options; +package fr.inria.corese.core.next.query.impl.parser.options; -import fr.inria.corese.core.next.query.api.io.parser.QueryOptions; +import fr.inria.corese.core.next.query.impl.parser.QueryOptions; /** * Abstract base for SPARQL options using Builder pattern. diff --git a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/BaseIRIOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/BaseIRIOptions.java similarity index 50% rename from src/main/java/fr/inria/corese/core/next/query/api/sparql/options/BaseIRIOptions.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/options/BaseIRIOptions.java index 75b2e2169..c50cef8b4 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/BaseIRIOptions.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/BaseIRIOptions.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query.api.sparql.options; +package fr.inria.corese.core.next.query.impl.parser.options; public interface BaseIRIOptions { String getBaseIRI(); diff --git a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/ErrorHandlingOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/ErrorHandlingOptions.java similarity index 94% rename from src/main/java/fr/inria/corese/core/next/query/api/sparql/options/ErrorHandlingOptions.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/options/ErrorHandlingOptions.java index 0674ea52e..ab6f0647f 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/ErrorHandlingOptions.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/ErrorHandlingOptions.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query.api.sparql.options; +package fr.inria.corese.core.next.query.impl.parser.options; import java.util.List; diff --git a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/SparqlAstError.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/SparqlAstError.java similarity index 97% rename from src/main/java/fr/inria/corese/core/next/query/api/sparql/options/SparqlAstError.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/options/SparqlAstError.java index 7cec31c8e..255d5e060 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/SparqlAstError.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/SparqlAstError.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query.api.sparql.options; +package fr.inria.corese.core.next.query.impl.parser.options; import java.util.Objects; diff --git a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/StrictModeOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/StrictModeOptions.java similarity index 69% rename from src/main/java/fr/inria/corese/core/next/query/api/sparql/options/StrictModeOptions.java rename to src/main/java/fr/inria/corese/core/next/query/impl/parser/options/StrictModeOptions.java index 146aeebf1..5e4f0fe3e 100644 --- a/src/main/java/fr/inria/corese/core/next/query/api/sparql/options/StrictModeOptions.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/StrictModeOptions.java @@ -1,4 +1,4 @@ -package fr.inria.corese.core.next.query.api.sparql.options; +package fr.inria.corese.core.next.query.impl.parser.options; /** * How strict the parser should be with syntax / grammar quirks. @@ -7,4 +7,4 @@ public interface StrictModeOptions { boolean isStrictMode(); -} \ No newline at end of file +} diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/package-info.java new file mode 100644 index 000000000..c2ba1a539 --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/options/package-info.java @@ -0,0 +1,2 @@ +/** Internal configuration facets used by the SPARQL parser and AST builder. */ +package fr.inria.corese.core.next.query.impl.parser.options; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/package-info.java new file mode 100644 index 000000000..f7935b803 --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/package-info.java @@ -0,0 +1,7 @@ +/** + * Internal SPARQL parsing, AST construction, and semantic validation. + * + *Types in this package may expose the internal AST for pipeline assembly, + * but they are not the public query-execution boundary.
+ */ +package fr.inria.corese.core.next.query.impl.parser; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/result/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/result/package-info.java new file mode 100644 index 000000000..bb864934f --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/result/package-info.java @@ -0,0 +1,2 @@ +/** Corese implementations of the query result contracts. */ +package fr.inria.corese.core.next.query.impl.result; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/package-info.java new file mode 100644 index 000000000..7b6414d2c --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/package-info.java @@ -0,0 +1,7 @@ +/** + * Internal, parser-oriented representation of SPARQL queries and updates. + * + *The model records parsed SPARQL structure; it neither executes queries nor + * defines the future public request API.
+ */ +package fr.inria.corese.core.next.query.impl.sparql.ast; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/AstBackedExistTerm.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/AstBackedExistTerm.java index e3de8528d..c50e0b9fb 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/AstBackedExistTerm.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/AstBackedExistTerm.java @@ -32,8 +32,9 @@ Exp compiledPattern() { } /** - * The legacy {@code Term} reports an existence test through {@code getExist() != null}, but this - * bridge carries the pattern as a next-KGRAM {@link Exp} instead. Reporting it here keeps + * The established {@code Term} contract reports an existence test through + * {@code getExist() != null}, but this bridge carries the pattern as a next-KGRAM + * {@link Exp} instead. Reporting it here keeps * {@code isRecExist()} true, which the engine relies on to place FILTER EXISTS correctly * (QuerySorter, in-scope filters of OPTIONAL/MINUS). */ diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/package-info.java new file mode 100644 index 000000000..b50175f43 --- /dev/null +++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/bridge/package-info.java @@ -0,0 +1,7 @@ +/** + * Translation from the internal SPARQL AST to structures consumed by KGRAM. + * + *Dependencies on KGRAM and established Corese expression types belong at + * this boundary and must not leak back into the parser or AST.
+ */ +package fr.inria.corese.core.next.query.impl.sparql.bridge; diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/NextSparqlPipelineExecutor.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/NextSparqlPipelineExecutor.java index 1358d2a35..3ae32a2c7 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/NextSparqlPipelineExecutor.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/NextSparqlPipelineExecutor.java @@ -20,10 +20,9 @@ import java.util.Objects; /** - * Internal executor for the first autonomous Corese-next SPARQL query path. + * Internal orchestrator for the Corese-next SPARQL query path. * - *This class is intentionally small and transitional. It validates the - * autonomous execution path:
+ *It connects the current pipeline stages:
* *
* SPARQL string -> next parser -> next AST -> next KGRAM -> StorageManagerProducer -> StorageManager
@@ -53,7 +52,7 @@ public NextSparqlPipelineExecutor(StorageManager storage) {
* Creates an executor with explicit collaborators.
*
* This constructor is package-private so tests can inject parser or bridge
- * variants without exposing these transitional wiring details as public API.
+ * variants without exposing wiring details as public API.
*/
NextSparqlPipelineExecutor(
StorageManager storage,
@@ -65,7 +64,7 @@ public NextSparqlPipelineExecutor(StorageManager storage) {
}
/**
- * Evaluates a SELECT query through the autonomous next pipeline.
+ * Evaluates a SELECT query through the next pipeline.
*
* @param sparql SPARQL query string to parse and evaluate
* @return tuple result backed by the KGRAM mappings produced from next storage
@@ -82,7 +81,7 @@ public TupleQueryResult evaluateTuple(String sparql) {
}
/**
- * Evaluates an ASK query through the autonomous next pipeline.
+ * Evaluates an ASK query through the next pipeline.
*
* @param sparql SPARQL query string to parse and evaluate
* @return {@code true} when at least one mapping matches the ASK pattern
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/package-info.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/package-info.java
new file mode 100644
index 000000000..811907626
--- /dev/null
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/execution/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * Internal orchestration of parsing, AST translation, and KGRAM evaluation.
+ *
+ * This package is pipeline wiring, not the final public SPARQL request API.
+ */
+package fr.inria.corese.core.next.query.impl.sparql.execution;
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/DefaultResultSerializerFactory.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/DefaultResultSerializerFactory.java
new file mode 100644
index 000000000..19749ccc8
--- /dev/null
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/DefaultResultSerializerFactory.java
@@ -0,0 +1,78 @@
+package fr.inria.corese.core.next.query.impl.sparql.io.serializer;
+
+import fr.inria.corese.core.next.data.api.io.IOOptions;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.serializer.BooleanResultSerializer;
+import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializerFactory;
+import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
+import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.BooleanStringSerializer;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.csv.CsvTupleResultSerializer;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.json.JsonBooleanResultSerializer;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.json.JsonTupleResultSerializer;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.tsv.TsvTupleResultSerializer;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml.XmlBooleanResultSerializer;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml.XmlTupleResultSerializer;
+
+/**
+ * Default factory for the SPARQL result serializers supplied by Corese.
+ */
+public final class DefaultResultSerializerFactory implements ResultSerializerFactory {
+ @Override
+ public ResultSerializer createTupleSerializer(ResultFormat format, TupleQueryResult results) {
+ if(format == ResultFormat.CSV) {
+ return new CsvTupleResultSerializer(results);
+ } else if(format == ResultFormat.TSV) {
+ return new TsvTupleResultSerializer(results);
+ } else if (format == ResultFormat.JSON) {
+ return new JsonTupleResultSerializer(results);
+ } else if(format == ResultFormat.XML) {
+ return new XmlTupleResultSerializer(results);
+ }
+ throw unsupported(format);
+ }
+
+ @Override
+ public BooleanResultSerializer createBooleanSerializer(ResultFormat format, boolean results) {
+ if(format == ResultFormat.CSV
+ || format == ResultFormat.TSV) {
+ return new BooleanStringSerializer(results, format);
+ } else if (format == ResultFormat.JSON) {
+ return new JsonBooleanResultSerializer(results);
+ } else if(format == ResultFormat.XML) {
+ return new XmlBooleanResultSerializer(results);
+ }
+ throw unsupported(format);
+ }
+
+ @Override
+ public ResultSerializer createTupleSerializer(ResultFormat format, TupleQueryResult results, IOOptions options) {
+ if(format == ResultFormat.CSV) {
+ return new CsvTupleResultSerializer(results, options);
+ } else if(format == ResultFormat.TSV) {
+ return new TsvTupleResultSerializer(results, options);
+ } else if (format == ResultFormat.JSON) {
+ return new JsonTupleResultSerializer(results, options);
+ } else if (format == ResultFormat.XML) {
+ return new XmlTupleResultSerializer(results, options);
+ }
+ throw unsupported(format);
+ }
+
+ @Override
+ public BooleanResultSerializer createBooleanSerializer(ResultFormat format, boolean results, IOOptions options) {
+ if(format == ResultFormat.CSV
+ || format == ResultFormat.TSV) {
+ return new BooleanStringSerializer(results, format);
+ } else if (format == ResultFormat.JSON) {
+ return new JsonBooleanResultSerializer(results, options);
+ } else if (format == ResultFormat.XML) {
+ return new XmlBooleanResultSerializer(results, options);
+ }
+ throw unsupported(format);
+ }
+
+ private static IllegalArgumentException unsupported(ResultFormat format) {
+ return new IllegalArgumentException("Unsupported SPARQL result format: " + format);
+ }
+}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/ResultSerializerFactory.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/ResultSerializerFactory.java
deleted file mode 100644
index f74b73b94..000000000
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/ResultSerializerFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package fr.inria.corese.core.next.query.impl.sparql.io.serializer;
-
-import fr.inria.corese.core.next.data.api.base.io.FileFormat;
-import fr.inria.corese.core.next.data.api.io.IOOptions;
-import fr.inria.corese.core.next.data.api.io.serializer.Serializer;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
-import fr.inria.corese.core.next.query.api.io.serializer.IResultSerializerFactory;
-import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
-import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.BooleanStringSerializer;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.csv.CSVSerializer;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.json.JSONBooleanSerializer;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.json.JSONSerializer;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.tsv.TSVSerializer;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml.XMLBooleanSerializer;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml.XMLSerializer;
-
-/**
- * Factory class for SPARQL results serializers
- */
-public class ResultSerializerFactory implements IResultSerializerFactory {
- @Override
- public ResultSerializer createSerializer(ResultFormat format, TupleQueryResult results) {
- if(format == ResultFormat.CSV) {
- return new CSVSerializer(results);
- } else if(format == ResultFormat.TSV) {
- return new TSVSerializer(results);
- } else if (format == ResultFormat.JSON) {
- return new JSONSerializer(results);
- } else if(format == ResultFormat.XML) {
- return new XMLSerializer(results);
- }
- return null;
- }
-
- @Override
- public Serializer createBooleanSerializer(ResultFormat format, boolean results) {
- if(format == ResultFormat.CSV
- || format == ResultFormat.TSV
- || format == FileFormat.PLAIN_TEXT) {
- return new BooleanStringSerializer(results);
- } else if (format == ResultFormat.JSON) {
- return new JSONBooleanSerializer(results);
- } else if(format == ResultFormat.XML) {
- return new XMLBooleanSerializer(results);
- }
- return null;
- }
-
- @Override
- public ResultSerializer createSerializer(ResultFormat format, TupleQueryResult results, IOOptions options) {
- if(format == ResultFormat.CSV) {
- return new CSVSerializer(results, options);
- } else if(format == ResultFormat.TSV) {
- return new TSVSerializer(results, options);
- } else if (format == ResultFormat.JSON) {
- return new JSONSerializer(results, options);
- } else if (format == ResultFormat.XML) {
- return new XMLSerializer(results, options);
- }
- return null;
- }
-
- @Override
- public Serializer createBooleanSerializer(ResultFormat format, boolean results, IOOptions options) {
- if(format == ResultFormat.CSV
- || format == ResultFormat.TSV
- || format == FileFormat.PLAIN_TEXT) {
- return new BooleanStringSerializer(results);
- } else if (format == ResultFormat.JSON) {
- return new JSONBooleanSerializer(results, options);
- } else if (format == ResultFormat.XML) {
- return new XMLBooleanSerializer(results, options);
- }
- return null;
- }
-}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializer.java
index f12a30979..477330cbd 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializer.java
@@ -1,8 +1,7 @@
package fr.inria.corese.core.next.query.impl.sparql.io.serializer.common;
-import fr.inria.corese.core.next.data.api.base.io.FileFormat;
-import fr.inria.corese.core.next.data.api.io.IOOptions;
import fr.inria.corese.core.next.data.impl.exception.SerializationException;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.BooleanResultSerializer;
import java.io.IOException;
@@ -14,13 +13,11 @@
public class BooleanStringSerializer implements BooleanResultSerializer {
private final boolean result;
+ private final ResultFormat format;
- public BooleanStringSerializer(boolean result) {
- this.result = result;
- }
-
- BooleanStringSerializer(boolean result, IOOptions options) {
+ public BooleanStringSerializer(boolean result, ResultFormat format) {
this.result = result;
+ this.format = format;
}
@Override
@@ -33,7 +30,7 @@ public void write(Writer writer) throws SerializationException {
}
@Override
- public FileFormat getFormat() {
- return FileFormat.PLAIN_TEXT;
+ public ResultFormat getFormat() {
+ return format;
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvResultSerializerOptions.java
similarity index 55%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerOptions.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvResultSerializerOptions.java
index 6174836de..0634f3cad 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerOptions.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvResultSerializerOptions.java
@@ -2,15 +2,15 @@
import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.CharacterSeparatedValuesSerializerOptions;
-public class CSVSerializerOptions extends CharacterSeparatedValuesSerializerOptions {
- protected CSVSerializerOptions(CSVSerializerOptions.Builder builder) {
+public class CsvResultSerializerOptions extends CharacterSeparatedValuesSerializerOptions {
+ protected CsvResultSerializerOptions(CsvResultSerializerOptions.Builder builder) {
super(builder);
}
public static class Builder extends CharacterSeparatedValuesSerializerOptions.AbstractBuilder {
@Override
- public CSVSerializerOptions build() {
- return new CSVSerializerOptions(this);
+ public CsvResultSerializerOptions build() {
+ return new CsvResultSerializerOptions(this);
}
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvTupleResultSerializer.java
similarity index 83%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializer.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvTupleResultSerializer.java
index 84e2d4e89..c02af5c10 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvTupleResultSerializer.java
@@ -6,7 +6,7 @@
import fr.inria.corese.core.next.data.api.io.IOOptions;
import fr.inria.corese.core.next.data.impl.io.common.IOConstants;
import fr.inria.corese.core.next.data.impl.io.serialization.util.SerializationConstants;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.CharacterSeparatedValuesSerializer;
@@ -14,14 +14,14 @@
* CSV serializer for the CSV format of SPARQL results.
* @see CSV SPARQL result format recommendation
*/
-public class CSVSerializer extends CharacterSeparatedValuesSerializer {
+public class CsvTupleResultSerializer extends CharacterSeparatedValuesSerializer {
- public CSVSerializer(TupleQueryResult results, IOOptions options) {
+ public CsvTupleResultSerializer(TupleQueryResult results, IOOptions options) {
super(SerializationConstants.COMMA, results, options);
}
- public CSVSerializer(TupleQueryResult results) {
- this(results, new CSVSerializerOptions.Builder().build());
+ public CsvTupleResultSerializer(TupleQueryResult results) {
+ this(results, new CsvResultSerializerOptions.Builder().build());
}
@Override
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONBooleanSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonBooleanResultSerializer.java
similarity index 68%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONBooleanSerializer.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonBooleanResultSerializer.java
index e3386c6eb..724e369e7 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONBooleanSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonBooleanResultSerializer.java
@@ -3,7 +3,7 @@
import fr.inria.corese.core.next.data.api.base.io.FileFormat;
import fr.inria.corese.core.next.data.api.io.IOOptions;
import fr.inria.corese.core.next.data.impl.exception.SerializationException;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.BooleanResultSerializer;
import fr.inria.corese.core.next.query.api.io.serializer.LinksOptions;
import jakarta.json.Json;
@@ -15,16 +15,16 @@
/**
* Serializer class for boolean results (ASK results) for JSON
*/
-public class JSONBooleanSerializer implements BooleanResultSerializer {
+public class JsonBooleanResultSerializer implements BooleanResultSerializer {
private final boolean result;
private final IOOptions config;
- public JSONBooleanSerializer(boolean result) {
- this(result, new JSONSerializerOptions.Builder().build());
+ public JsonBooleanResultSerializer(boolean result) {
+ this(result, new JsonResultSerializerOptions.Builder().build());
}
- public JSONBooleanSerializer(boolean result, IOOptions options) {
+ public JsonBooleanResultSerializer(boolean result, IOOptions options) {
this.config = options;
this.result = result;
}
@@ -35,11 +35,11 @@ public void write(Writer writer) throws SerializationException {
if(this.config instanceof LinksOptions linksOptions && ! linksOptions.links().isEmpty() ) {
JsonObjectBuilder headerBuilder = Json.createObjectBuilder();
- headerBuilder.add(JSONSerializerConstants.LINK, Json.createArrayBuilder(linksOptions.links()));
- resultBuilder.add(JSONSerializerConstants.HEAD, headerBuilder.build());
+ headerBuilder.add(JsonResultConstants.LINK, Json.createArrayBuilder(linksOptions.links()));
+ resultBuilder.add(JsonResultConstants.HEAD, headerBuilder.build());
}
- resultBuilder.add(JSONSerializerConstants.BOOLEAN, String.valueOf(this.result));
+ resultBuilder.add(JsonResultConstants.BOOLEAN, this.result);
JsonWriter jsonWriter = Json.createWriter(writer);
jsonWriter.writeObject( resultBuilder.build());
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerConstants.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonResultConstants.java
similarity index 91%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerConstants.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonResultConstants.java
index f2691169b..9a7f336d1 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerConstants.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonResultConstants.java
@@ -3,12 +3,12 @@
/**
* Constants used in the serialization of SPARQL results to JSON
*/
-public class JSONSerializerConstants {
+final class JsonResultConstants {
/**
* Forbids instantiation
*/
- private JSONSerializerConstants() {}
+ private JsonResultConstants() {}
public static final String HEAD = "head";
public static final String VARS = "vars";
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonResultSerializerOptions.java
similarity index 76%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerOptions.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonResultSerializerOptions.java
index f2e1efe5a..778113329 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerOptions.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonResultSerializerOptions.java
@@ -9,10 +9,10 @@
/**
* Options to configure the SPARQL results JSON serializer
*/
-public class JSONSerializerOptions extends AbstractIOOptions implements LinksOptions {
- private final JSONSerializerOptions.Builder builder;
+public class JsonResultSerializerOptions extends AbstractIOOptions implements LinksOptions {
+ private final JsonResultSerializerOptions.Builder builder;
- protected JSONSerializerOptions(JSONSerializerOptions.Builder builder) {
+ protected JsonResultSerializerOptions(JsonResultSerializerOptions.Builder builder) {
this.builder = builder;
}
@@ -21,7 +21,7 @@ public Collection links() {
return this.builder.links;
}
- public static class Builder extends AbstractIOOptions.Builder {
+ public static class Builder extends AbstractIOOptions.Builder {
private final Collection links;
public Builder() {
@@ -29,8 +29,8 @@ public Builder() {
}
@Override
- public JSONSerializerOptions build() {
- return new JSONSerializerOptions(this);
+ public JsonResultSerializerOptions build() {
+ return new JsonResultSerializerOptions(this);
}
/**
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonTupleResultSerializer.java
similarity index 68%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializer.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonTupleResultSerializer.java
index 01e16e9ef..0af427a18 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonTupleResultSerializer.java
@@ -9,7 +9,7 @@
import fr.inria.corese.core.next.data.impl.common.literal.RDF;
import fr.inria.corese.core.next.data.impl.common.literal.XSD;
import fr.inria.corese.core.next.data.impl.exception.SerializationException;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.LinksOptions;
import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
import fr.inria.corese.core.next.query.api.result.BindingSet;
@@ -21,18 +21,18 @@
/**
* Serializer for SPARQL results in JSON as described in the W3C recommendation
*/
-public class JSONSerializer implements ResultSerializer {
+public class JsonTupleResultSerializer implements ResultSerializer {
private final TupleQueryResult results;
private final IOOptions config;
- public JSONSerializer(TupleQueryResult results, IOOptions options) {
+ public JsonTupleResultSerializer(TupleQueryResult results, IOOptions options) {
this.config = options;
this.results = results;
}
- public JSONSerializer(TupleQueryResult results) {
- this(results, new JSONSerializerOptions.Builder().build());
+ public JsonTupleResultSerializer(TupleQueryResult results) {
+ this(results, new JsonResultSerializerOptions.Builder().build());
}
@Override
@@ -41,15 +41,15 @@ public void write(Writer writer) throws SerializationException {
// header
JsonObjectBuilder headerbuilder = Json.createObjectBuilder()
- .add(JSONSerializerConstants.VARS, Json.createArrayBuilder(this.results.getBindingNames()));
+ .add(JsonResultConstants.VARS, Json.createArrayBuilder(this.results.getBindingNames()));
if(this.config instanceof LinksOptions linksOptions && ! linksOptions.links().isEmpty() ) {
- headerbuilder.add(JSONSerializerConstants.LINK, Json.createArrayBuilder(linksOptions.links()));
+ headerbuilder.add(JsonResultConstants.LINK, Json.createArrayBuilder(linksOptions.links()));
}
- resultBuilder.add(JSONSerializerConstants.HEAD, headerbuilder.build());
+ resultBuilder.add(JsonResultConstants.HEAD, headerbuilder.build());
// Result bindings
- resultBuilder.add(JSONSerializerConstants.RESULTS, Json.createObjectBuilder()
- .add(JSONSerializerConstants.BINDINGS, Json.createArrayBuilder(this.results.stream().map(this::bindingSetToJson).toList()))
+ resultBuilder.add(JsonResultConstants.RESULTS, Json.createObjectBuilder()
+ .add(JsonResultConstants.BINDINGS, Json.createArrayBuilder(this.results.stream().map(this::bindingSetToJson).toList()))
);
JsonWriter jsonWriter = Json.createWriter(writer);
@@ -77,13 +77,13 @@ private JsonObject bindingSetToJson(BindingSet bindings) {
private JsonObject valueToJson(Value value) {
if(value instanceof IRI iriValue) {
return Json.createObjectBuilder()
- .add(JSONSerializerConstants.TYPE, JSONSerializerConstants.URI)
- .add(JSONSerializerConstants.VALUE, iriValue.stringValue())
+ .add(JsonResultConstants.TYPE, JsonResultConstants.URI)
+ .add(JsonResultConstants.VALUE, iriValue.stringValue())
.build();
} else if (value instanceof BNode bnodeValue) {
return Json.createObjectBuilder()
- .add(JSONSerializerConstants.TYPE, JSONSerializerConstants.BNODE)
- .add(JSONSerializerConstants.VALUE, bnodeValue.getID())
+ .add(JsonResultConstants.TYPE, JsonResultConstants.BNODE)
+ .add(JsonResultConstants.VALUE, bnodeValue.getID())
.build();
} else if (value instanceof Literal literalValue) {
JsonObjectBuilder literalBuilder = Json.createObjectBuilder();
@@ -91,13 +91,13 @@ private JsonObject valueToJson(Value value) {
&& literalValue.getDatatype() != null
&& literalValue.getDatatype() != XSD.STRING.getIRI()
&& literalValue.getDatatype() != RDF.LANGSTRING.getIRI()){
- literalBuilder.add(JSONSerializerConstants.DATATYPE, literalValue.getDatatype().stringValue());
+ literalBuilder.add(JsonResultConstants.DATATYPE, literalValue.getDatatype().stringValue());
}
String literalStringValue = literalValue.stringValue();
- literalBuilder.add(JSONSerializerConstants.TYPE, JSONSerializerConstants.LITERAL)
- .add(JSONSerializerConstants.VALUE, literalStringValue);
+ literalBuilder.add(JsonResultConstants.TYPE, JsonResultConstants.LITERAL)
+ .add(JsonResultConstants.VALUE, literalStringValue);
if(literalValue.getLanguage().isPresent()) {
- literalBuilder.add(JSONSerializerConstants.LANG, literalValue.getLanguage().get());
+ literalBuilder.add(JsonResultConstants.LANG, literalValue.getLanguage().get());
}
return literalBuilder.build();
}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerOptions.java
deleted file mode 100644
index 5b9bd17eb..000000000
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerOptions.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package fr.inria.corese.core.next.query.impl.sparql.io.serializer.tsv;
-
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.CharacterSeparatedValuesSerializerOptions;
-
-public class TSVSerializerOptions extends CharacterSeparatedValuesSerializerOptions {
- protected TSVSerializerOptions(TSVSerializerOptions.Builder builder) {
- super(builder);
- }
-
- public static class Builder extends CharacterSeparatedValuesSerializerOptions.AbstractBuilder {
- @Override
- public TSVSerializerOptions build() {
- return new TSVSerializerOptions(this);
- }
- }
-}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvResultSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvResultSerializerOptions.java
new file mode 100644
index 000000000..bc223c8ee
--- /dev/null
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvResultSerializerOptions.java
@@ -0,0 +1,16 @@
+package fr.inria.corese.core.next.query.impl.sparql.io.serializer.tsv;
+
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.CharacterSeparatedValuesSerializerOptions;
+
+public class TsvResultSerializerOptions extends CharacterSeparatedValuesSerializerOptions {
+ protected TsvResultSerializerOptions(TsvResultSerializerOptions.Builder builder) {
+ super(builder);
+ }
+
+ public static class Builder extends CharacterSeparatedValuesSerializerOptions.AbstractBuilder {
+ @Override
+ public TsvResultSerializerOptions build() {
+ return new TsvResultSerializerOptions(this);
+ }
+ }
+}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvTupleResultSerializer.java
similarity index 91%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializer.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvTupleResultSerializer.java
index 456ad75cd..f239c091f 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvTupleResultSerializer.java
@@ -9,7 +9,7 @@
import fr.inria.corese.core.next.data.impl.common.literal.RDF;
import fr.inria.corese.core.next.data.impl.common.literal.XSD;
import fr.inria.corese.core.next.data.impl.io.serialization.util.SerializationConstants;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.CharacterSeparatedValuesSerializer;
@@ -19,14 +19,14 @@
* TSV serializer for the CSV format of SPARQL results.
* @see TSV SPARQL result format recommendation
*/
-public class TSVSerializer extends CharacterSeparatedValuesSerializer {
+public class TsvTupleResultSerializer extends CharacterSeparatedValuesSerializer {
- public TSVSerializer(TupleQueryResult results, IOOptions options) {
+ public TsvTupleResultSerializer(TupleQueryResult results, IOOptions options) {
super(SerializationConstants.TAB, results, options);
}
- public TSVSerializer(TupleQueryResult results) {
- this(results, new TSVSerializerOptions.Builder().build());
+ public TsvTupleResultSerializer(TupleQueryResult results) {
+ this(results, new TsvResultSerializerOptions.Builder().build());
}
@Override
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLBooleanSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlBooleanResultSerializer.java
similarity index 78%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLBooleanSerializer.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlBooleanResultSerializer.java
index 5887a5ffc..0a08e97c3 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLBooleanSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlBooleanResultSerializer.java
@@ -3,7 +3,7 @@
import fr.inria.corese.core.next.data.api.base.io.FileFormat;
import fr.inria.corese.core.next.data.api.io.IOOptions;
import fr.inria.corese.core.next.data.impl.exception.SerializationException;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.BooleanResultSerializer;
import fr.inria.corese.core.next.query.api.io.serializer.LinksOptions;
import org.w3c.dom.Document;
@@ -19,17 +19,17 @@
/**
* Serializer class for boolean results (ASK results) for XML
*/
-public class XMLBooleanSerializer implements BooleanResultSerializer {
+public class XmlBooleanResultSerializer implements BooleanResultSerializer {
private final DocumentBuilderFactory xmlDocumentBuilder = DocumentBuilderFactory.newDefaultInstance();
private final boolean result;
private final IOOptions options;
- public XMLBooleanSerializer(boolean result) {
- this(result, new XMLSerializerOptions.Builder().build());
+ public XmlBooleanResultSerializer(boolean result) {
+ this(result, new XmlResultSerializerOptions.Builder().build());
}
- public XMLBooleanSerializer(boolean result, IOOptions options) {
+ public XmlBooleanResultSerializer(boolean result, IOOptions options) {
this.result = result;
this.options = options;
}
@@ -38,15 +38,15 @@ public XMLBooleanSerializer(boolean result, IOOptions options) {
public void write(Writer writer) throws SerializationException {
try {
Document resultDocument = this.xmlDocumentBuilder.newDocumentBuilder().newDocument();
- Element root = resultDocument.createElementNS(XMLSerializerConstants.SPARQL_RESULT_NS, XMLSerializerConstants.SPARQL_QNAME);
- Element results = resultDocument.createElement(XMLSerializerConstants.BOOLEAN_QNAME);
+ Element root = resultDocument.createElementNS(XmlResultConstants.SPARQL_RESULT_NS, XmlResultConstants.SPARQL_QNAME);
+ Element results = resultDocument.createElement(XmlResultConstants.BOOLEAN_QNAME);
// Head
if(this.options instanceof LinksOptions linksOptions && ! linksOptions.links().isEmpty()) {
- Element head = resultDocument.createElement(XMLSerializerConstants.HEAD_QNAME);
+ Element head = resultDocument.createElement(XmlResultConstants.HEAD_QNAME);
linksOptions.links().forEach(link -> {
- Element linkElement = resultDocument.createElement(XMLSerializerConstants.LINK_QNAME);
- linkElement.setAttribute(XMLSerializerConstants.HREF_ATTR, link);
+ Element linkElement = resultDocument.createElement(XmlResultConstants.LINK_QNAME);
+ linkElement.setAttribute(XmlResultConstants.HREF_ATTR, link);
head.appendChild(linkElement);
});
root.appendChild(head);
@@ -60,7 +60,7 @@ public void write(Writer writer) throws SerializationException {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
- if(this.options instanceof XMLSerializerOptions xmlSerializerOptions) {
+ if(this.options instanceof XmlResultSerializerOptions xmlSerializerOptions) {
xmlSerializerOptions.getXmlSettings().forEach((key, value) -> {
transformer.setOutputProperty(key, value);
if(key.equals(OutputKeys.STANDALONE)) { // Fix for Standalone property being ignored
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerConstants.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultConstants.java
similarity index 95%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerConstants.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultConstants.java
index 4c3461d9f..8ff33e769 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerConstants.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultConstants.java
@@ -1,11 +1,11 @@
package fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml;
-public class XMLSerializerConstants {
+final class XmlResultConstants {
/**
* Forbids instantiation
*/
- private XMLSerializerConstants() {}
+ private XmlResultConstants() {}
public static final String SPARQL_RESULT_NS = "http://www.w3.org/2005/sparql-results#";
public static final String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerOptions.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultSerializerOptions.java
similarity index 74%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerOptions.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultSerializerOptions.java
index ca1a41cf1..89da119a3 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerOptions.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultSerializerOptions.java
@@ -9,10 +9,10 @@
import java.util.HashMap;
import java.util.Map;
-public class XMLSerializerOptions extends AbstractIOOptions implements LinksOptions {
- private final XMLSerializerOptions.Builder builder;
+public class XmlResultSerializerOptions extends AbstractIOOptions implements LinksOptions {
+ private final XmlResultSerializerOptions.Builder builder;
- protected XMLSerializerOptions(XMLSerializerOptions.Builder builder) {
+ protected XmlResultSerializerOptions(XmlResultSerializerOptions.Builder builder) {
this.builder = builder;
}
@@ -25,13 +25,13 @@ public Collection links() {
return this.builder.links;
}
- public static class Builder extends AbstractIOOptions.Builder {
+ public static class Builder extends AbstractIOOptions.Builder {
private final Map xmlSettings;
private final Collection links;
public Builder() {
this.xmlSettings = new HashMap<>();
- this.xmlSettings.put(OutputKeys.STANDALONE, XMLSerializerConstants.YES_PROPERTY_VALUE);
+ this.xmlSettings.put(OutputKeys.STANDALONE, XmlResultConstants.YES_PROPERTY_VALUE);
this.links = new ArrayList<>();
}
@@ -51,7 +51,7 @@ public Builder setXMLSetting(String key, String value) {
* @param link preferably a URI
* @return this
*/
- public XMLSerializerOptions.Builder addLink(String link) {
+ public XmlResultSerializerOptions.Builder addLink(String link) {
this.links.add(link);
return this;
}
@@ -61,14 +61,14 @@ public XMLSerializerOptions.Builder addLink(String link) {
* @param links preferably a set of URIs
* @return this
*/
- public XMLSerializerOptions.Builder addLinks(Collection links) {
+ public XmlResultSerializerOptions.Builder addLinks(Collection links) {
this.links.addAll(links);
return this;
}
@Override
- public XMLSerializerOptions build() {
- return new XMLSerializerOptions(this);
+ public XmlResultSerializerOptions build() {
+ return new XmlResultSerializerOptions(this);
}
}
}
diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializer.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlTupleResultSerializer.java
similarity index 76%
rename from src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializer.java
rename to src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlTupleResultSerializer.java
index 9fda529b0..980776d0f 100644
--- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializer.java
+++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlTupleResultSerializer.java
@@ -9,7 +9,7 @@
import fr.inria.corese.core.next.data.impl.common.literal.RDF;
import fr.inria.corese.core.next.data.impl.common.literal.XSD;
import fr.inria.corese.core.next.data.impl.exception.SerializationException;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.LinksOptions;
import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
import fr.inria.corese.core.next.query.api.result.Binding;
@@ -29,17 +29,17 @@
/**
* Serializer for SPARQL results in XML as described in the W3C recommendation
*/
-public class XMLSerializer implements ResultSerializer {
+public class XmlTupleResultSerializer implements ResultSerializer {
private final DocumentBuilderFactory xmlDocumentBuilder = DocumentBuilderFactory.newDefaultInstance();
private final TupleQueryResult results;
private final IOOptions options;
- public XMLSerializer(TupleQueryResult results) {
- this(results, new XMLSerializerOptions.Builder().build());
+ public XmlTupleResultSerializer(TupleQueryResult results) {
+ this(results, new XmlResultSerializerOptions.Builder().build());
}
- public XMLSerializer(TupleQueryResult results, IOOptions options) {
+ public XmlTupleResultSerializer(TupleQueryResult results, IOOptions options) {
this.results = results;
this.options = options;
xmlDocumentBuilder.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "no");
@@ -49,20 +49,20 @@ public XMLSerializer(TupleQueryResult results, IOOptions options) {
public void write(Writer writer) throws SerializationException {
try {
Document resultDocument = this.xmlDocumentBuilder.newDocumentBuilder().newDocument();
- Element root = resultDocument.createElementNS(XMLSerializerConstants.SPARQL_RESULT_NS, XMLSerializerConstants.SPARQL_QNAME);
- Element head = resultDocument.createElement(XMLSerializerConstants.HEAD_QNAME);
- Element resultsElement = resultDocument.createElement(XMLSerializerConstants.RESULTS_QNAME);
+ Element root = resultDocument.createElementNS(XmlResultConstants.SPARQL_RESULT_NS, XmlResultConstants.SPARQL_QNAME);
+ Element head = resultDocument.createElement(XmlResultConstants.HEAD_QNAME);
+ Element resultsElement = resultDocument.createElement(XmlResultConstants.RESULTS_QNAME);
// Head
this.results.getBindingNames().forEach(bindingName -> {
- Element variableElement = resultDocument.createElement(XMLSerializerConstants.VARIABLE_QNAME);
- variableElement.setAttribute(XMLSerializerConstants.NAME_ATTR, bindingName);
+ Element variableElement = resultDocument.createElement(XmlResultConstants.VARIABLE_QNAME);
+ variableElement.setAttribute(XmlResultConstants.NAME_ATTR, bindingName);
head.appendChild(variableElement);
});
if(this.options instanceof LinksOptions linksOptions && ! linksOptions.links().isEmpty()) {
linksOptions.links().forEach(link -> {
- Element linkElement = resultDocument.createElement(XMLSerializerConstants.LINK_QNAME);
- linkElement.setAttribute(XMLSerializerConstants.HREF_ATTR, link);
+ Element linkElement = resultDocument.createElement(XmlResultConstants.LINK_QNAME);
+ linkElement.setAttribute(XmlResultConstants.HREF_ATTR, link);
head.appendChild(linkElement);
});
}
@@ -78,7 +78,7 @@ public void write(Writer writer) throws SerializationException {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
- if(this.options instanceof XMLSerializerOptions xmlSerializerOptions) {
+ if(this.options instanceof XmlResultSerializerOptions xmlSerializerOptions) {
xmlSerializerOptions.getXmlSettings().forEach((key, value) -> {
transformer.setOutputProperty(key, value);
if(key.equals(OutputKeys.STANDALONE)) { // Fix for Standalone property being ignored
@@ -105,7 +105,7 @@ public FileFormat getFormat() {
}
private Element bindingSetToXML(BindingSet bindings, Document document) {
- Element bindingSetElement = document.createElement(XMLSerializerConstants.RESULT_QNAME);
+ Element bindingSetElement = document.createElement(XmlResultConstants.RESULT_QNAME);
bindings.forEach(binding -> bindingSetElement.appendChild(bindingToXML(binding, document)));
@@ -113,8 +113,8 @@ private Element bindingSetToXML(BindingSet bindings, Document document) {
}
private Element bindingToXML(Binding binding, Document document) {
- Element bindingElement = document.createElement(XMLSerializerConstants.BINDING_QNAME);
- bindingElement.setAttribute(XMLSerializerConstants.NAME_ATTR, binding.name());
+ Element bindingElement = document.createElement(XmlResultConstants.BINDING_QNAME);
+ bindingElement.setAttribute(XmlResultConstants.NAME_ATTR, binding.name());
bindingElement.appendChild(valueToXML(binding.value(), document));
return bindingElement;
}
@@ -123,23 +123,23 @@ private Element valueToXML(Value value, Document document) {
Element valueElement;
switch (value) {
case IRI iriValue -> {
- valueElement = document.createElement(XMLSerializerConstants.URI_QNAME);
+ valueElement = document.createElement(XmlResultConstants.URI_QNAME);
valueElement.setTextContent(iriValue.stringValue());
}
case BNode bnodeValue -> {
- valueElement = document.createElement(XMLSerializerConstants.BNODE_QNAME);
+ valueElement = document.createElement(XmlResultConstants.BNODE_QNAME);
valueElement.setTextContent(bnodeValue.getID());
}
case Literal literalValue -> {
- valueElement = document.createElement(XMLSerializerConstants.LITERAL_QNAME);
+ valueElement = document.createElement(XmlResultConstants.LITERAL_QNAME);
if (literalValue.getLanguage().isEmpty()
&& literalValue.getDatatype() != null
&& literalValue.getDatatype() != XSD.STRING.getIRI()
&& literalValue.getDatatype() != RDF.LANGSTRING.getIRI()) {
- valueElement.setAttribute(XMLSerializerConstants.DATATYPE_ATTR, literalValue.getDatatype().stringValue());
+ valueElement.setAttribute(XmlResultConstants.DATATYPE_ATTR, literalValue.getDatatype().stringValue());
}
if (literalValue.getLanguage().isPresent()) {
- valueElement.setAttribute(XMLSerializerConstants.LANG_ATTR, literalValue.getLanguage().get());
+ valueElement.setAttribute(XmlResultConstants.LANG_ATTR, literalValue.getLanguage().get());
}
valueElement.setTextContent(literalValue.stringValue());
}
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlListenerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlListenerDispatcherTest.java
similarity index 80%
rename from src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlListenerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlListenerDispatcherTest.java
index f7dad31e5..2b0ade78e 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlListenerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlListenerDispatcherTest.java
@@ -1,9 +1,9 @@
package fr.inria.corese.core.next.query.impl.parser;
import fr.inria.corese.core.next.impl.parser.antlr.SparqlLexer;
-import fr.inria.corese.core.next.query.impl.parser.listener.SelectQueryFeature;
+import fr.inria.corese.core.next.query.impl.parser.listener.SelectQueryAstListener;
import fr.inria.corese.core.next.query.impl.sparql.ast.*;
-import fr.inria.corese.core.next.query.impl.parser.listener.BgpFeature;
+import fr.inria.corese.core.next.query.impl.parser.listener.BgpAstListener;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
@@ -16,13 +16,13 @@
import static org.junit.jupiter.api.Assertions.*;
/**
- * Unit tests for {@link SparqlListener} (multiplexer and delegate forwarding).
+ * Unit tests for {@link SparqlListenerDispatcher} (multiplexer and delegate forwarding).
*/
-class SparqlListenerTest {
+class SparqlListenerDispatcherTest {
@Test
void constructorWithNullDelegatesIsEmpty() {
- SparqlListener listener = new SparqlListener(null);
+ SparqlListenerDispatcher listener = new SparqlListenerDispatcher(null);
// Walk must not throw when delegates is empty
fr.inria.corese.core.next.impl.parser.antlr.SparqlParser p = createAntlrParser("SELECT * WHERE { ?s ?p ?o }");
assertDoesNotThrow(() -> new ParseTreeWalker().walk(listener, p.query()));
@@ -30,17 +30,17 @@ void constructorWithNullDelegatesIsEmpty() {
@Test
void constructorWithEmptyListDelegatesIsEmpty() {
- SparqlListener listener = new SparqlListener(Collections.emptyList());
+ SparqlListenerDispatcher listener = new SparqlListenerDispatcher(Collections.emptyList());
fr.inria.corese.core.next.impl.parser.antlr.SparqlParser p = createAntlrParser("SELECT * WHERE { }");
assertDoesNotThrow(() -> new ParseTreeWalker().walk(listener, p.query()));
}
@Test
void constructorWithDelegatesCopiesList() {
- BgpFeature feature = new BgpFeature(
+ BgpAstListener feature = new BgpAstListener(
new SparqlQueryAstBuilder(new SparqlParserOptions.Builder().build()));
- List mutable = new java.util.ArrayList<>(List.of(feature));
- SparqlListener listener = new SparqlListener(mutable);
+ List mutable = new java.util.ArrayList<>(List.of(feature));
+ SparqlListenerDispatcher listener = new SparqlListenerDispatcher(mutable);
mutable.clear();
// Listener should still have one delegate (defensive copy)
fr.inria.corese.core.next.impl.parser.antlr.SparqlParser antlrParser = createAntlrParser("SELECT * WHERE { ?s ?p ?o }");
@@ -54,7 +54,7 @@ void constructorWithDelegatesCopiesList() {
void withSingleBgpDelegateWalkProducesAst() {
SparqlParserOptions opts = new SparqlParserOptions.Builder().build();
SparqlQueryAstBuilder builder = new SparqlQueryAstBuilder(opts);
- SparqlListener listener = new SparqlListener(List.of(new BgpFeature(builder), new SelectQueryFeature(builder)));
+ SparqlListenerDispatcher listener = new SparqlListenerDispatcher(List.of(new BgpAstListener(builder), new SelectQueryAstListener(builder)));
fr.inria.corese.core.next.impl.parser.antlr.SparqlParser antlrParser = createAntlrParser("SELECT * WHERE { ?s ?p ?o }");
new ParseTreeWalker().walk(listener, antlrParser.query());
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserClearQueryTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserClearQueryTest.java
index 85504d1ac..b8dc91ff7 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserClearQueryTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserClearQueryTest.java
@@ -1,7 +1,7 @@
package fr.inria.corese.core.next.query.impl.parser;
import fr.inria.corese.core.next.query.api.exception.QuerySyntaxException;
-import fr.inria.corese.core.next.query.api.io.parser.QueryParser;
+import fr.inria.corese.core.next.query.impl.parser.QueryParser;
import fr.inria.corese.core.next.query.impl.sparql.ast.ClearRequestAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.IriAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst;
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserCreateQueryTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserCreateQueryTest.java
index b98e17470..89c5dadcd 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserCreateQueryTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserCreateQueryTest.java
@@ -1,7 +1,7 @@
package fr.inria.corese.core.next.query.impl.parser;
import fr.inria.corese.core.next.query.api.exception.QuerySyntaxException;
-import fr.inria.corese.core.next.query.api.io.parser.QueryParser;
+import fr.inria.corese.core.next.query.impl.parser.QueryParser;
import fr.inria.corese.core.next.query.impl.sparql.ast.CreateRequestAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.IriAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst;
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserLoadQueryTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserLoadQueryTest.java
index ac256f45a..e0745f84e 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserLoadQueryTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserLoadQueryTest.java
@@ -1,7 +1,7 @@
package fr.inria.corese.core.next.query.impl.parser;
import fr.inria.corese.core.next.query.api.exception.QuerySyntaxException;
-import fr.inria.corese.core.next.query.api.io.parser.QueryParser;
+import fr.inria.corese.core.next.query.impl.parser.QueryParser;
import fr.inria.corese.core.next.query.impl.sparql.ast.IriAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.LoadRequestAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst;
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptionsTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptionsTest.java
index 263835d73..05b31621d 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserOptionsTest.java
@@ -1,6 +1,6 @@
package fr.inria.corese.core.next.query.impl.parser;
-import fr.inria.corese.core.next.query.api.sparql.options.SparqlAstError;
+import fr.inria.corese.core.next.query.impl.parser.options.SparqlAstError;
import org.junit.jupiter.api.Test;
import java.util.List;
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserServiceTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserServiceTest.java
index bee38b6cd..64c9c8932 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserServiceTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserServiceTest.java
@@ -10,7 +10,7 @@
/**
* Integration tests for SPARQL {@code SERVICE} graph pattern parsing.
*
- * Exercises the full pipeline: ANTLR grammar → {@code SparqlListener} → {@code ServiceFeature}
+ *
Exercises the full pipeline: ANTLR grammar → {@code SparqlListenerDispatcher} → {@code ServiceAstListener}
* → {@code SparqlAstBuilder} → {@link ServiceAst}.
*/
class SparqlParserServiceTest extends AbstractSparqlParserFeatureTest {
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserTest.java
index 30357df38..a15b6a13a 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserTest.java
@@ -20,11 +20,11 @@
import fr.inria.corese.core.next.query.api.exception.QueryEvaluationException;
import fr.inria.corese.core.next.query.api.exception.QuerySyntaxException;
-import fr.inria.corese.core.next.query.api.io.parser.QueryOptions;
+import fr.inria.corese.core.next.query.impl.parser.QueryOptions;
import fr.inria.corese.core.next.query.api.validation.QueryDiagnostic;
import fr.inria.corese.core.next.query.api.validation.QueryTextValidator;
import fr.inria.corese.core.next.query.api.validation.QueryValidationResult;
-import fr.inria.corese.core.next.query.api.validation.QueryValidators;
+import fr.inria.corese.core.next.query.impl.parser.SparqlValidators;
import fr.inria.corese.core.next.query.impl.sparql.ast.BgpAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.VarAst;
@@ -590,7 +590,7 @@ void validateLexerDiagnosticKeepsLocationAndSourceWhenAvailable() {
@Test
void queryValidatorsFactoryReturnsWorkingSparqlValidator() {
- QueryTextValidator validator = QueryValidators.sparql();
+ QueryTextValidator validator = SparqlValidators.sparql();
QueryValidationResult result = validator.validate(VALID_SELECT_QUERY);
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzerTest.java
index a0bce41b9..d988b66a2 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlQueryAnalyzerTest.java
@@ -1,6 +1,6 @@
package fr.inria.corese.core.next.query.impl.parser;
-import fr.inria.corese.core.next.query.api.sparql.options.SparqlAstError;
+import fr.inria.corese.core.next.query.impl.parser.options.SparqlAstError;
import fr.inria.corese.core.next.query.api.validation.QueryDiagnostic;
import org.junit.jupiter.api.Test;
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlUpdateTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlUpdateTest.java
index 4871c6193..1f73c969a 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlUpdateTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlUpdateTest.java
@@ -1,6 +1,6 @@
package fr.inria.corese.core.next.query.impl.parser;
-import fr.inria.corese.core.next.query.api.io.parser.QueryParser;
+import fr.inria.corese.core.next.query.impl.parser.QueryParser;
import fr.inria.corese.core.next.query.impl.sparql.ast.LoadRequestAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.UpdateRequestAst;
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/DefaultResultSerializerFactoryTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/DefaultResultSerializerFactoryTest.java
new file mode 100644
index 000000000..87a145601
--- /dev/null
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/DefaultResultSerializerFactoryTest.java
@@ -0,0 +1,63 @@
+package fr.inria.corese.core.next.query.impl.sparql.io.serializer;
+
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.serializer.BooleanResultSerializer;
+import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
+import fr.inria.corese.core.next.query.api.result.BindingSet;
+import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+class DefaultResultSerializerFactoryTest {
+
+ private final DefaultResultSerializerFactory factory = new DefaultResultSerializerFactory();
+ private final TupleQueryResult dummyResults = new TupleQueryResult() {
+ @Override
+ public List getBindingNames() {
+ return List.of();
+ }
+
+ @Override
+ public boolean hasNext() {
+ return false;
+ }
+
+ @Override
+ public BindingSet next() {
+ return null;
+ }
+
+ @Override
+ public void close() {
+
+ }
+ };
+
+ @Test
+ void createsTupleSerializerForEveryStandardFormat() {
+ ResultFormat.all().forEach(resultFormat -> {
+ ResultSerializer serializer = factory.createTupleSerializer(resultFormat, dummyResults);
+ assertEquals(resultFormat, serializer.getFormat());
+ });
+ }
+
+ @Test
+ void createsBooleanSerializerWithTheRequestedFormat() {
+ ResultFormat.all().forEach(resultFormat -> {
+ BooleanResultSerializer serializer = factory.createBooleanSerializer(resultFormat, true);
+ assertEquals(resultFormat, serializer.getFormat());
+ });
+ }
+
+ @Test
+ void rejectsUnknownTupleResultFormat() {
+ ResultFormat custom = new ResultFormat("CUSTOM", List.of("custom"), List.of("application/x-custom"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> factory.createTupleSerializer(custom, dummyResults));
+ }
+}
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/ResultSerializerFactoryTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/ResultSerializerFactoryTest.java
deleted file mode 100644
index ec00dc019..000000000
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/ResultSerializerFactoryTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package fr.inria.corese.core.next.query.impl.sparql.io.serializer;
-
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
-import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
-import fr.inria.corese.core.next.query.api.result.BindingSet;
-import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
-import org.junit.jupiter.api.Test;
-
-import java.util.List;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-class ResultSerializerFactoryTest {
-
- private final ResultSerializerFactory factory = new ResultSerializerFactory();
- private final TupleQueryResult dummyResults = new TupleQueryResult() {
- @Override
- public List getBindingNames() {
- return List.of();
- }
-
- @Override
- public boolean hasNext() {
- return false;
- }
-
- @Override
- public BindingSet next() {
- return null;
- }
-
- @Override
- public void close() {
-
- }
- };
-
- @Test
- public void createSerializer() {
- ResultFormat.all().forEach(resultFormat -> {
- ResultSerializer serializer = factory.createSerializer(resultFormat, dummyResults);
- assertEquals(resultFormat, serializer.getFormat());
- });
- }
-}
\ No newline at end of file
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializerTest.java
index 96c7512aa..5bfd3cef1 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/common/BooleanStringSerializerTest.java
@@ -1,17 +1,18 @@
package fr.inria.corese.core.next.query.impl.sparql.io.serializer.common;
import fr.inria.corese.core.next.data.api.io.IOOptions;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.BooleanResultSerializer;
public class BooleanStringSerializerTest extends AbstractBooleanResultSerializerTest {
@Override
protected BooleanResultSerializer getSerializer(boolean result) {
- return new BooleanStringSerializer(result);
+ return new BooleanStringSerializer(result, ResultFormat.CSV);
}
@Override
protected BooleanResultSerializer getSerializer(boolean result, IOOptions options) {
- return new BooleanStringSerializer(result, options);
+ return new BooleanStringSerializer(result, ResultFormat.CSV);
}
@Override
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerOptionsTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvResultSerializerOptionsTest.java
similarity index 62%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerOptionsTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvResultSerializerOptionsTest.java
index 321c1b982..6a37d7b4f 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvResultSerializerOptionsTest.java
@@ -4,12 +4,12 @@
import static org.junit.jupiter.api.Assertions.*;
-class CSVSerializerOptionsTest {
+class CsvResultSerializerOptionsTest {
@Test
void getLineEnding() {
- CSVSerializerOptions options = new CSVSerializerOptions.Builder().setLineEnding("tata").build();
+ CsvResultSerializerOptions options = new CsvResultSerializerOptions.Builder().setLineEnding("tata").build();
assertEquals("tata", options.getLineEnding());
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvTupleResultSerializerTest.java
similarity index 87%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvTupleResultSerializerTest.java
index e52f88631..1da088f7d 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CSVSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/csv/CsvTupleResultSerializerTest.java
@@ -1,22 +1,22 @@
package fr.inria.corese.core.next.query.impl.sparql.io.serializer.csv;
import fr.inria.corese.core.next.data.api.io.IOOptions;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.ResultSerializerFactory;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.DefaultResultSerializerFactory;
import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.AbstractResultSerializerTest;
-public class CSVSerializerTest extends AbstractResultSerializerTest {
+public class CsvTupleResultSerializerTest extends AbstractResultSerializerTest {
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results) {
- return new ResultSerializerFactory().createSerializer(ResultFormat.CSV, results);
+ return new DefaultResultSerializerFactory().createTupleSerializer(ResultFormat.CSV, results);
}
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results, IOOptions options) {
- return new ResultSerializerFactory().createSerializer(ResultFormat.CSV, results, options);
+ return new DefaultResultSerializerFactory().createTupleSerializer(ResultFormat.CSV, results, options);
}
@Override
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONBooleanSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonBooleanResultSerializerTest.java
similarity index 83%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONBooleanSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonBooleanResultSerializerTest.java
index bf720001c..17f142c81 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONBooleanSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonBooleanResultSerializerTest.java
@@ -12,25 +12,25 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
-public class JSONBooleanSerializerTest extends AbstractBooleanResultSerializerTest implements LinksSerializerTest {
+public class JsonBooleanResultSerializerTest extends AbstractBooleanResultSerializerTest implements LinksSerializerTest {
@Override
protected BooleanResultSerializer getSerializer(boolean result) {
- return new JSONBooleanSerializer(result);
+ return new JsonBooleanResultSerializer(result);
}
@Override
protected BooleanResultSerializer getSerializer(boolean result, IOOptions options) {
- return new JSONBooleanSerializer(result, options);
+ return new JsonBooleanResultSerializer(result, options);
}
@Override
protected String getTrueResultString() {
- return "{\"boolean\":\"true\"}";
+ return "{\"boolean\":true}";
}
@Override
protected String getFalseResultString() {
- return "{\"boolean\":\"false\"}";
+ return "{\"boolean\":false}";
}
private String getLinksTestResultsString() {
@@ -41,7 +41,7 @@ private String getLinksTestResultsString() {
"\"mailto:bob@corese-test.com\"" +
"]" +
"}," +
- "\"boolean\":\"true\"" +
+ "\"boolean\":true" +
"}";
}
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonTupleResultSerializerTest.java
similarity index 97%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonTupleResultSerializerTest.java
index 7a17fc4bb..3b848f511 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JSONSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/json/JsonTupleResultSerializerTest.java
@@ -18,15 +18,15 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.ResultSerializerTestUtils.MockQueryResults;
-public class JSONSerializerTest extends AbstractResultSerializerTest implements LinksSerializerTest {
+public class JsonTupleResultSerializerTest extends AbstractResultSerializerTest implements LinksSerializerTest {
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results) {
- return new JSONSerializer(results);
+ return new JsonTupleResultSerializer(results);
}
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results, IOOptions options) {
- return new JSONSerializer(results, options);
+ return new JsonTupleResultSerializer(results, options);
}
@Override
@@ -272,7 +272,7 @@ protected String getJSONStandardResultsString() {
@Test
@DisplayName("Tests the serialization of the results used as example in the SPARQL result JSON format recommendation")
public void JSONStandardResultsTest() {
- JSONSerializerOptions options = new JSONSerializerOptions.Builder().addLink("http://www.w3.org/TR/rdf-sparql-XMLres/example.rq").build();
+ JsonResultSerializerOptions options = new JsonResultSerializerOptions.Builder().addLink("http://www.w3.org/TR/rdf-sparql-XMLres/example.rq").build();
ResultSerializer serializer = getResultSerializer(getJSONStandardResults(), options);
StringWriter writer = new StringWriter();
serializer.write(writer);
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerOptionsTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvResultSerializerOptionsTest.java
similarity index 63%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerOptionsTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvResultSerializerOptionsTest.java
index d4b0b0bce..dec930899 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvResultSerializerOptionsTest.java
@@ -4,12 +4,12 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
-class TSVSerializerOptionsTest {
+class TsvResultSerializerOptionsTest {
@Test
void getLineEnding() {
- TSVSerializerOptions options = new TSVSerializerOptions.Builder().setLineEnding("tata").build();
+ TsvResultSerializerOptions options = new TsvResultSerializerOptions.Builder().setLineEnding("tata").build();
assertEquals("tata", options.getLineEnding());
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvTupleResultSerializerTest.java
similarity index 87%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvTupleResultSerializerTest.java
index ef6151e37..e6587878b 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TSVSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/tsv/TsvTupleResultSerializerTest.java
@@ -1,22 +1,22 @@
package fr.inria.corese.core.next.query.impl.sparql.io.serializer.tsv;
import fr.inria.corese.core.next.data.api.io.IOOptions;
-import fr.inria.corese.core.next.query.api.base.io.ResultFormat;
+import fr.inria.corese.core.next.query.api.io.ResultFormat;
import fr.inria.corese.core.next.query.api.io.serializer.ResultSerializer;
import fr.inria.corese.core.next.query.api.result.TupleQueryResult;
-import fr.inria.corese.core.next.query.impl.sparql.io.serializer.ResultSerializerFactory;
+import fr.inria.corese.core.next.query.impl.sparql.io.serializer.DefaultResultSerializerFactory;
import fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.AbstractResultSerializerTest;
-public class TSVSerializerTest extends AbstractResultSerializerTest {
+public class TsvTupleResultSerializerTest extends AbstractResultSerializerTest {
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results) {
- return new ResultSerializerFactory().createSerializer(ResultFormat.TSV, results);
+ return new DefaultResultSerializerFactory().createTupleSerializer(ResultFormat.TSV, results);
}
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results, IOOptions options) {
- return new ResultSerializerFactory().createSerializer(ResultFormat.TSV, results, options);
+ return new DefaultResultSerializerFactory().createTupleSerializer(ResultFormat.TSV, results, options);
}
@Override
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLBooleanSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlBooleanResultSerializerTest.java
similarity index 87%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLBooleanSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlBooleanResultSerializerTest.java
index e52fc7f49..171a60954 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLBooleanSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlBooleanResultSerializerTest.java
@@ -12,15 +12,15 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
-public class XMLBooleanSerializerTest extends AbstractBooleanResultSerializerTest implements LinksSerializerTest {
+public class XmlBooleanResultSerializerTest extends AbstractBooleanResultSerializerTest implements LinksSerializerTest {
@Override
protected BooleanResultSerializer getSerializer(boolean result) {
- return new XMLBooleanSerializer(result);
+ return new XmlBooleanResultSerializer(result);
}
@Override
protected BooleanResultSerializer getSerializer(boolean result, IOOptions options) {
- return new XMLBooleanSerializer(result, options);
+ return new XmlBooleanResultSerializer(result, options);
}
@Override
@@ -54,7 +54,7 @@ private String getLinksTestResultsString() {
@DisplayName("Tests the serialization of results including several links")
public void linksTest() {
IOOptions options = getOptionsWithLinks();
- ResultSerializer serializer = new XMLBooleanSerializer(true, options);
+ ResultSerializer serializer = new XmlBooleanResultSerializer(true, options);
StringWriter writer = new StringWriter();
serializer.write(writer);
assertEquals(getLinksTestResultsString(), writer.toString());
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerOptionsTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultSerializerOptionsTest.java
similarity index 76%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerOptionsTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultSerializerOptionsTest.java
index 1dd5d34dd..ac004453e 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerOptionsTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlResultSerializerOptionsTest.java
@@ -12,19 +12,19 @@
import static fr.inria.corese.core.next.query.impl.sparql.io.serializer.common.ResultSerializerTestUtils.MockQueryResults;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public class XMLSerializerOptionsTest {
+public class XmlResultSerializerOptionsTest {
@Test
@DisplayName("Tests the application of the indent XML option to the serializer")
void xmlSerializerIndentPropertyTest() {
StringWriter outputWriter = new StringWriter();
- IOOptions options = new XMLSerializerOptions.Builder()
- .setXMLSetting(OutputKeys.INDENT, XMLSerializerConstants.YES_PROPERTY_VALUE)
+ IOOptions options = new XmlResultSerializerOptions.Builder()
+ .setXMLSetting(OutputKeys.INDENT, XmlResultConstants.YES_PROPERTY_VALUE)
.build();
MockQueryResults results = new MockQueryResults(List.of("x"), List.of());
- ResultSerializer serializer = new XMLSerializer(results, options);
+ ResultSerializer serializer = new XmlTupleResultSerializer(results, options);
serializer.write(outputWriter);
String expected =
@@ -46,9 +46,9 @@ void xmlSerializerIndentPropertyTest() {
@DisplayName("Tests the application of the standalone XML options to the serializer")
void xmlSerializerStandalonePropertyTest() {
StringWriter outputWriter = new StringWriter();
- IOOptions options = new XMLSerializerOptions.Builder().setXMLSetting(OutputKeys.STANDALONE, XMLSerializerConstants.NO_PROPERTY_VALUE).build();
+ IOOptions options = new XmlResultSerializerOptions.Builder().setXMLSetting(OutputKeys.STANDALONE, XmlResultConstants.NO_PROPERTY_VALUE).build();
MockQueryResults results = new MockQueryResults(List.of("x"), List.of());
- ResultSerializer serializer = new XMLSerializer(results, options);
+ ResultSerializer serializer = new XmlTupleResultSerializer(results, options);
serializer.write(outputWriter);
assertEquals("" +
@@ -64,9 +64,9 @@ void xmlSerializerStandalonePropertyTest() {
@DisplayName("Tests the application of the declaration XML options to the serializer")
void xmlSerializerOmitDeclarationPropertyTest() {
StringWriter outputWriter = new StringWriter();
- IOOptions options = new XMLSerializerOptions.Builder().setXMLSetting(OutputKeys.OMIT_XML_DECLARATION, XMLSerializerConstants.YES_PROPERTY_VALUE).build();
+ IOOptions options = new XmlResultSerializerOptions.Builder().setXMLSetting(OutputKeys.OMIT_XML_DECLARATION, XmlResultConstants.YES_PROPERTY_VALUE).build();
MockQueryResults results = new MockQueryResults(List.of("x"), List.of());
- ResultSerializer serializer = new XMLSerializer(results, options);
+ ResultSerializer serializer = new XmlTupleResultSerializer(results, options);
serializer.write(outputWriter);
assertEquals("" +
@@ -81,9 +81,9 @@ void xmlSerializerOmitDeclarationPropertyTest() {
@DisplayName("Tests the application of the declaration XML options to the serializer")
void xmlSerializerMediaTypePropertyTest() {
StringWriter outputWriter = new StringWriter();
- IOOptions options = new XMLSerializerOptions.Builder().setXMLSetting(OutputKeys.OMIT_XML_DECLARATION, XMLSerializerConstants.YES_PROPERTY_VALUE).build();
+ IOOptions options = new XmlResultSerializerOptions.Builder().setXMLSetting(OutputKeys.OMIT_XML_DECLARATION, XmlResultConstants.YES_PROPERTY_VALUE).build();
MockQueryResults results = new MockQueryResults(List.of("x"), List.of());
- ResultSerializer serializer = new XMLSerializer(results, options);
+ ResultSerializer serializer = new XmlTupleResultSerializer(results, options);
serializer.write(outputWriter);
assertEquals("" +
diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlTupleResultSerializerTest.java
similarity index 96%
rename from src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerTest.java
rename to src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlTupleResultSerializerTest.java
index e8f0e5d78..15ed7f1fc 100644
--- a/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XMLSerializerTest.java
+++ b/src/test/java/fr/inria/corese/core/next/query/impl/sparql/io/serializer/xml/XmlTupleResultSerializerTest.java
@@ -12,19 +12,19 @@
import java.io.StringWriter;
-import static fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml.XMLSerializerConstants.YES_PROPERTY_VALUE;
+import static fr.inria.corese.core.next.query.impl.sparql.io.serializer.xml.XmlResultConstants.YES_PROPERTY_VALUE;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public class XMLSerializerTest extends AbstractResultSerializerTest implements LinksSerializerTest {
+public class XmlTupleResultSerializerTest extends AbstractResultSerializerTest implements LinksSerializerTest {
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results) {
- XMLSerializerOptions options = new XMLSerializerOptions.Builder().setXMLSetting(OutputKeys.STANDALONE, YES_PROPERTY_VALUE).build();
- return new XMLSerializer(results, options);
+ XmlResultSerializerOptions options = new XmlResultSerializerOptions.Builder().setXMLSetting(OutputKeys.STANDALONE, YES_PROPERTY_VALUE).build();
+ return new XmlTupleResultSerializer(results, options);
}
@Override
protected ResultSerializer getResultSerializer(TupleQueryResult results, IOOptions options) {
- return new XMLSerializer(results, options);
+ return new XmlTupleResultSerializer(results, options);
}
@Override