1. A computer implemented method for efficiently planning and executing a SPARQL query, in any of the variants of the SPARQL query language, against a data source compliant with Resource Description Framework (RDF) standard, the method comprising: receiving a SPARQL query graph pattern; converting the SPARQL query to a semQA2 query and creating a semQA2 parse tree by replacing syntax expression in the SPARQL query with algebraic operators, wherein LeftJoin operators in the SPARQL query are not eliminated; performing filter pushdown on the semQA2 parse tree, including filters with LeftJoin operators, so as to produce filters as close to leaf nodes of the semQA2 parse tree as possible; executing a query planning mechanism that uses semQA2 algebraic equivalences and filter pushdown to find multiple graph patterns equivalent to the semQA2 query; executing a cost function that provides a cost of execution of each of the multiple graph patterns equivalent to the semQA2 query; determining an efficient query plan for execution of the semQA2 query, by selecting, from the multiple graph patterns equivalent to the semQA2 query, a particular graph pattern with lowest cost of execution, according to the cost function; and executing the particular graph pattern against a RDF data source and retrieving results compliant with the SPARQL specification.