Class RepositoryFederatedService

    • Field Detail

      • boundJoinBlockSize

        protected int boundJoinBlockSize
        The number of bindings sent in a single subquery in evaluate(Service, CloseableIteration, String) If blockSize is set to 0, the entire input stream is used as block input the block size effectively determines the number of remote requests
      • shutDown

        protected boolean shutDown
    • Constructor Detail

      • RepositoryFederatedService

        public RepositoryFederatedService​(Repository repo)
        Parameters:
        repo - the repository to be used
      • RepositoryFederatedService

        public RepositoryFederatedService​(Repository repo,
                                          boolean shutDown)
        Parameters:
        repo - the repository to be used
        shutDown - a flag indicating whether the repository shall be closed in shutdown()
    • Method Detail

      • select

        public CloseableIteration<BindingSet> select​(Service service,
                                                     Set<String> projectionVars,
                                                     BindingSet bindings,
                                                     String baseUri)
                                              throws QueryEvaluationException
        Evaluate the provided sparqlQueryString at the initialized Repository of this FederatedService. Insert bindings into SELECT query and evaluate
        Specified by:
        select in interface FederatedService
        Parameters:
        service - the reference to the service node, contains additional meta information (vars, prefixes)
        projectionVars - The variables with unknown value that should be projected from this evaluation
        bindings - the bindings serving as additional constraints
        Returns:
        an iteration over the results of the query
        Throws:
        QueryEvaluationException - If there was an exception generated while evaluating the query.
      • ask

        public boolean ask​(Service service,
                           BindingSet bindings,
                           String baseUri)
                    throws QueryEvaluationException
        Evaluate the provided sparqlQueryString at the initialized Repository of this FederatedService. Insert bindings, send ask query and return final result
        Specified by:
        ask in interface FederatedService
        Parameters:
        service - the reference to the service node, contains additional meta information (vars, prefixes)
        bindings - the bindings serving as additional constraints
        Returns:
        true if at least one result exists
        Throws:
        QueryEvaluationException - If there was an exception generated while evaluating the query.
      • evaluate

        public CloseableIteration<BindingSet> evaluate​(Service service,
                                                       CloseableIteration<BindingSet> bindings,
                                                       String baseUri)
                                                throws QueryEvaluationException
        Description copied from interface: FederatedService
        Evaluate the provided SPARQL query at this federated service, possibilities for vectored evaluation.

        Contracts:

        • The original bindings need to be inserted into the result
        • SILENT service must be dealt with in the method

        Compare org.eclipse.rdf4j.query.algebra.evaluation.federation.SPARQLFederatedService for a reference implementation

        Specified by:
        evaluate in interface FederatedService
        Parameters:
        service - the reference to the service node, contains information to construct the query
        bindings - the bindings serving as additional constraints (for vectored evaluation)
        baseUri - the baseUri
        Returns:
        the result of evaluating the query using bindings as constraints, the original bindings need to be inserted into the results!
        Throws:
        QueryEvaluationException - If there was an exception generated while evaluating the query.
      • insertValuesClause

        protected String insertValuesClause​(String queryString,
                                            String valuesClause)
        Insert the constructed VALUES clause in the beginning of the WHERE block. Also adds the ROW_IDX_VAR projection if it is not already present.
        Parameters:
        queryString - the SELECT query string from the SERVICE node
        valuesClause - the constructed VALUES clause
        Returns:
        the final String
      • getBoundJoinBlockSize

        public int getBoundJoinBlockSize()
      • setBoundJoinBlockSize

        public void setBoundJoinBlockSize​(int boundJoinBlockSize)
        Parameters:
        boundJoinBlockSize - the bound join block size, 0 to evaluate all in a single request
      • setUseFreshConnection

        public void setUseFreshConnection​(boolean flag)
        Parameters:
        flag - whether to use a fresh RepositoryConnection for each individual query
      • getConnection

        protected RepositoryConnection getConnection()
                                              throws RepositoryException
        Retrieve a (re-usable) connection. If it is not yet created, open a fresh connection. Note that this connection is closed automatically when shutting this service.
        Returns:
        connection
        Throws:
        RepositoryException