Sparql Engine

Sparql-Engine is an open-source framework for building SPARQL query engines in the JavaScript and TypeScript programming languages.
The framework provides an API to build a SPARQL query engine on top of any data storage system, with a heavy focus on the simplicity of ease.
For basic usage, users need to implement a simple JavaScript class to get access to a fully-featured query engine.
Sparql-Engine implements the complete SPARQL 1.1 query language and the SPARQL 1.1 Update protocol.
It rely on the Volcano Model for evaluating SPARQL queries. It also provides support for non-standard SPARQL features (Full-Text Search, Query Hints, Extended Aggregations functions) inspired by the Blazegraph triple store.
== Main features ==
* Supports the SPARQL 1.1 query language and the SPARQL 1.1 Update protocol.
* Supports the evaluation of all SPARQL property Paths.
* Supports Full-Text Search queries.
* Supports Custom SPARQL functions.
* Supports Semantic Caching, to speed up query evaluation of recurrent patterns.
* Supports Federated SPARQL queries using SERVICE clauses.
== Software Design ==
The framework is built following the OOP programming paradigm, with
three main entities: the Graph, PlanBuilder and Pipeline classes.
The abstract class Graph encapsulates the logic of an RDF Graph over an arbitrary storage system, e.g., a filesystem or a relational-database.
It provides methods for inserting and deleting RDF triples, and also for searching RDF triples matching a triple pattern.
To implement their own SPARQL query engine, users need to create a subclass of Graph and implement these methods.
The PlanBuilder class is responsible for building physical query execution plans for executing SPARQL queries.
It follows a Builder Design Pattern and defines stages builders to generates operators for executing all types of SPARQL operations. For example, the OrderByStageBuilder is invoked when the PlanBuilder needs to evaluate an ORDER BY modifier.
The Pipeline class (and its subclasses) is the main component used to evaluate all SPARQL operations under the Volcano model. It defines basic operations (map, filter, etc) that can be used to implements physical query operators to manipulate intermediate results and evaluate SPARQL queries.
By default, the framework uses an implementation based on RxJS, but users can switch to their own implementations at will.
== Usage ==
The SaGe software uses the Sparql-Engine framework to provides a widget for executing SPARQL queries in the browser.
== Release history ==
Version number	Release date	Significant changes
0.7.0 	 	Add automatic caching of Basic Graph Pattern evaluation using the Semantic Cache algorithm, add native support for the bound join algorithm, reworked the SPARQL expressions systems to uses the RDF.js data model to represent RDF terms.
0.6.0 	 	Add support for Full-Text Search SPARQL queries, allowing users to execute approximate string matching on RDF Terms retrieved by SPARQL queries, following an approach similar to Blazegraph.
0.5.0 	 	Added support for evaluation of all SPARQL Property Paths, with corresponding W3C tests. This support was developed by Arthur Trottier, Charlotte Cogan and Julien Aimonier-Davat, Master students at the Unversity of Nantes.
0.4.0 	 	Add the support for declaring custom SPARQL functions, implemented by @dwhitney.
0.3.0 	 	Major architectural rework, introducing the PlanBuilder and PipelineEngine classes.
0.2.1 	 	Added support for SPARQL 1.1 Update queries and SPARQL 1.1 Federated queries.
0.1.0 	 	Initial release, with complete support of the SPARQL 1.0 query language.
==In the media==
<youtube width="300" height="300">x9PSlYTDdjI</youtube>  
<youtube width="300" height="300">FvGndkpa4K0</youtube>  
<youtube width="300" height="300">1jHoUkj_mKw</youtube>  
<youtube width="300" height="300">jnL9ZqLHJj0</youtube>
==External links==
* sparql-engine on npm
* Using the SPARQL Engine
* Callidon/sparql-engine: A framework for building ... - GitHub
== References ==
Category:Open source software
Category:Sage Group
Category:Resource Description Framework
Category:SPARQL
Category:Object-oriented programming
Category:Object-oriented programming languages
Category:Programming paradigms
Category:Operators (programming)
Category:2018 software