All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support for ChronicleMap-based persistent cache for federation requests (including cardinality requests), with support for cache replacement and invalidation policies (546).
- CLI program to issue queries to the HeFQUIN service (#616, #643).
- Pushing projection variables and distinct into requests to SPARQL endpoints (#600, #629, #638, #639, #642).
- Logging for query planner (#636, #637).
- Refactoring of the context objects that are passed around during query processing (#645).
- Fixing example vocabulary mapping for Wikidata to make the example query work (#640).
- Removes ChronicleMap-based cardinality-specific cache implementation (ChronicleMapCardinalityCache) and related files (546).
- Remove wrapped response from CardinalityResponseImpl (#628).
- Persistent cache for requests (#546, #590, #599).
- SHACL shapes for the federation description vocabulary (#537).
- Adding a limit on the number of parallel requests that are executed against any particular endpoint/server at any point in time (#556).
- Support for MINUS directly within the HeFQUIN engine (#586, #587, #592).
- Support for DISTINCT directly within the HeFQUIN engine (#547, #550, #555, #558).
- Support for projection directly within the HeFQUIN engine (#566, #568, #574).
- Adding a new hash join algorithm and a (logical) left join operator; removing the right join operator (#561).
- Adding a logical plan rewriting that removes subplans that are guaranteed to produce the empty result (#584, #593).
- Adding a logical plan rewriting that pushes project operators (#580).
- Initial version of a CLI tool to use the RML component of HeFQUIN explicitly (#601).
- Reorganization of the vocabulary for federation descriptions (#597, #615).
- Makes the parallel version of VALUES-based bind join the default bind-join variant (#623).
- Refactoring the code of the logical plan rewriting rules to use the visitor pattern (#560, #569, #571, #575).
- More effective filter push down and cardinality estimation for the case of a filter over a fixed-solmap operator (#588).
- Extending filter push down with the option to push also into the pattern of a gpAdd operator (#589).
- Bug fix in the executable operator for BIND (#612).
- Separation of logical and physical plans for mapping algebra (#581, #596).
- Fix in RML-to-algebra translation algorithm (#610).
- Fix in code that expands URI templates (#611).
- Removes unused provenance-related methods from DataRetrievalResponse (#582).
- Removes deprecated federation access manager (#626).
- Changes some of the example queries to use the QLever SPARQL endpoints for DBpedia and Wikidata (#620, #621, #622).
- Logging for executable operators (#608, #609, #614, #617, #618, #619, #624, #625).
- Support for the UNFOLD operator for CDT literals (#539).
- Support for multiple --fd arguments for the CLI tools, to split the federation description into multiple files (#529, #534, #538).
- New arguments for the CLI tool to specify files into which the query plans and the statistics should be printed (#531, #536).
- Bug fix: cache-related statistics for TPF have not been recorded correctly by the federation access manager (#548).
- Support for optional parameters in the template IRIs for REST APIs (#493).
- Support for creating CDT literals in the RML processing component (#513).
- Adding an implementation of the batch-based bind-join algorithm for SPARQL endpoints that issues the bind-join requests without blocking, handling the processing of their responses in parallel (#499).
- Adding a dedicated folder with a few relevant example queries (#514, #517).
- Change to Hydra vocabulary for the template IRIs of REST APIs in federation descriptions (#493).
- Updated request processors to use an HTTP client provider and shared connection pools (#495).
- Adding unique IDs for plans and sub-plan, and using these in the plan printers (#500).
- Some clean up in the classes for plans and for operators (#500).
- More effective implementation of executable operators that assume that at least a minimum number of input solution mappings are available to process (#502).
- Fixes and improvements related to Web API querying and the related RML functionality (#502, #513, #518, #519, #520, #522).
- Fixes of inconsistencies and minor mistakes in the vocabulary for federation descriptions (#523).
- Bug fix in the base implementation of the bind-join algorithm, which did not correctly implement bag semantics (#498).
- Bug fix in cardinality-based join reordering (#501).
- Bug fix in join cardinality estimation (#501).
- Initial support for RML-wrapped REST endpoints as federation members (#486).
- Adding a 'numberOfSolMapsRetrievedPerReqOp' entry to the stats of bind joins (#489).
- Reimplementation of the printers for logical and for physical plans (#487).
- Bux fix: 'equals' comparison of logical and also of physical plans must take the ID of the root operator into account (#488).
- Basis for proper management of query-planning-related information (#455, #456, #461).
- Extending the text-based plan printers to include information about expected variables at each level of the plan (#457).
- Adding the bound join algorithm from the FedX paper (#458).
- Adding basic printing of executable plans (#473).
- Adding the option to specify in the config file which logical-to-physical plan converter and which logical-to-physical operator converter should be used, including which physical operators they should consider (#481).
- Merging the logical operators tpAdd, bgpAdd, and gpAdd into just one: gpAdd; likewise for tpOptAdd, bgpOptAdd, and gpOptAdd (#454).
- Removing the old StatsPrinter in favor of the new JSON-based one (#460).
- Changing the cardinality-based join ordering heuristic to avoid cardinality requests for plans without joins (#465).
- Removing the "GreedyBasedReordering" heuristic from the default sequence of heuristics of the logical optimizer (#467).
- Upgrading the code base to version 5.5.0 of Jena (#478).
- Reorganizes completely how the federation access manager works (#480).
- Support for multiple VALUES clauses (#417).
- Additional endpoint of the HeFQUIN service to request query processing details (#406).
- Initial GUI with query editor (#427).
- HeFQUINEngineBuilder added as a means to consolidate and simplify the creation of a HeFQUINEngine instance (#440, #441, and #448).
- ExternalIntegrationDemo added as a means to demonstrate how the HeFQUIN engine can be used directly within the Java code of other Java projects (#448).
- Improving the text-based plan printers to make the printed plans easier to look at (d83c8c2, 21020c5, 80189b7, 66d8124, #442)
- The MergeRequests heuristic does not anymore push BIND operators into requests (#433).
- Fixing and streamlining the various bind join implementations (#443 and e7ae6a9).
- Removing the explicit notion of default components from the vocabulary for describing a HeFQUINEngine configuration (#441).
- Replacing the implicit definition of the vocabulary for describing federations by an explicit one (#432).
- Refactoring of DataRetrievalResponse (#409).
- Refactoring of QueryPatternUtils (#428).
- Moving the code for federation access into a separate Maven module called hefquin-access (#450).
- Moving the code generated from the vocabularies into hefquin-vocabs, making that an actual Maven module (#450).
Starting the change log at this version.