1. A method for evaluating a conjunctive query, the method executed as a computer program by a general purpose computer, the conjunctive query comprising an at least one first predicate having variables; wherein the at least one first predicate is a relational predicate that is evaluated with a first engine using a relational database, and an at least one second predicate having variables, wherein the at least one second predicate is an external predicate that is evaluated using a second engine without using a relational database; the method comprising the steps of: defining the relational predicates as treated and defining the external predicates as non-treated; defining a variable (X) as distinguished if it appears as an argument in a treated predicate and it is a variable of an expression of a non-treated predicate; selecting a distinguished variable (X) from the conjunctive query, in absence of a distinguished variable by definition, choosing one of the variables in a non-treated predicate to serve as distinguished; forming a binding column (Bx) that contains a superset of values that are possible values of the selected distinguished variable (X) that fit limitations imposed by being an argument of the treated predicates; wherein said binding column (Bx) includes all possible values if it was chosen to serve as distinguished; evaluating the non-treated predicates having the selected distinguished variable (X) as a variable using the possible values from the binding column (Bx); updating the binding column (Bx) to be limited to the possible values fitting the evaluated non-treated predicates; marking the evaluated non-treated predicates as treated; repeating the steps for additionally chosen or selected distinguished variables, until resolving the query.
1. A method for evaluating a conjunctive query, the method executed as a computer program by a general purpose computer, the conjunctive query comprising an at least one first predicate having variables; wherein the at least one first predicate is a relational predicate that is evaluated with a first engine using a relational database, and an at least one second predicate having variables, wherein the at least one second predicate is an external predicate that is evaluated using a second engine without using a relational database; the method comprising the steps of: defining the relational predicates as treated and defining the external predicates as non-treated; defining a variable (X) as distinguished if it appears as an argument in a treated predicate and it is a variable of an expression of a non-treated predicate; selecting a distinguished variable (X) from the conjunctive query, in absence of a distinguished variable by definition, choosing one of the variables in a non-treated predicate to serve as distinguished; forming a binding column (Bx) that contains a superset of values that are possible values of the selected distinguished variable (X) that fit limitations imposed by being an argument of the treated predicates; wherein said binding column (Bx) includes all possible values if it was chosen to serve as distinguished; evaluating the non-treated predicates having the selected distinguished variable (X) as a variable using the possible values from the binding column (Bx); updating the binding column (Bx) to be limited to the possible values fitting the evaluated non-treated predicates; marking the evaluated non-treated predicates as treated; repeating the steps for additionally chosen or selected distinguished variables, until resolving the query. 17. The method of claim 1 , wherein choosing a variable to serve as distinguished is performed by random selection.