Class QueryResults

Direct Known Subclasses:
QueryResultUtil

public class QueryResults extends Iterations
Utility methods related to query results.
Author:
Jeen Broekstra
  • Constructor Details

    • QueryResults

      public QueryResults()
  • Method Details

    • asModel

      public static Model asModel(CloseableIteration<? extends Statement,? extends RDF4JException> iteration) throws QueryEvaluationException
      Get a Model containing all elements obtained from the specified query result.
      Parameters:
      iteration - the source iteration to get the statements from. This can be a GraphQueryResult, a <Statement>, or any other instance of <Statement>
      Returns:
      a Model containing all statements obtained from the specified source iteration.
      Throws:
      QueryEvaluationException
    • asModel

      public static Model asModel(CloseableIteration<? extends Statement,? extends RDF4JException> iteration, ModelFactory modelFactory) throws QueryEvaluationException
      Get a Model containing all elements obtained from the specified query result.
      Parameters:
      iteration - the source iteration to get the statements from. This can be a GraphQueryResult, a <Statement>, or any other instance of <Statement>
      modelFactory - the ModelFactory used to instantiate the model that gets returned.
      Returns:
      a Model containing all statements obtained from the specified source iteration.
      Throws:
      QueryEvaluationException
    • getAllValues

      public static List<Value> getAllValues(TupleQueryResult result, String var) throws QueryEvaluationException
      Returns a list of values of a particular variable out of the QueryResult.
      Parameters:
      result -
      var - variable for which list of values needs to be returned
      Returns:
      a list of Values of var
      Throws:
      QueryEvaluationException
    • singleResult

      public static Statement singleResult(GraphQueryResult result) throws QueryEvaluationException
      Returns a single element from the query result.The QueryResult is automatically closed by this method.
      Parameters:
      result -
      Returns:
      a single query result element or null
      Throws:
      QueryEvaluationException
    • singleResult

      public static BindingSet singleResult(TupleQueryResult result) throws QueryEvaluationException
      Returns a single element from the query result.The QueryResult is automatically closed by this method.
      Parameters:
      result -
      Returns:
      a single query result element or null
      Throws:
      QueryEvaluationException
    • distinctResults

      public static GraphQueryResult distinctResults(GraphQueryResult queryResult)
      Returns a GraphQueryResult that filters out any duplicate solutions from the supplied queryResult.
      Parameters:
      queryResult - a queryResult containing possible duplicate statements.
      Returns:
      a GraphQueryResult with any duplicates filtered out.
    • distinctResults

      public static TupleQueryResult distinctResults(TupleQueryResult queryResult)
      Returns a TupleQueryResult that filters out any duplicate solutions from the supplied queryResult.
      Parameters:
      queryResult - a queryResult containing possible duplicate solutions.
      Returns:
      a TupleQueryResult with any duplicates filtered out.
    • limitResults

      public static TupleQueryResult limitResults(TupleQueryResult queryResult, long limit, long offset)
      Returns a TupleQueryResult that returns at most the specified maximum number of solutions, starting at the supplied offset.
      Parameters:
      queryResult - a query result possibly containing more solutions than the specified maximum.
      limit - the maximum number of solutions to return. If set to 0 or lower, no limit will be applied.
      offset - the number of solutions to skip at the beginning. If set to 0 or lower, no offset will be applied.
      Returns:
      A TupleQueryResult that will at return at most the specified maximum number of solutions. If neither limit nor offset are applied, this returns the original queryResult.
    • limitResults

      public static GraphQueryResult limitResults(GraphQueryResult queryResult, long limit, long offset)
      Returns a GraphQueryResult that returns at most the specified maximum number of solutions, starting at the supplied offset.
      Parameters:
      queryResult - a query result possibly containing more solutions than the specified maximum.
      limit - the maximum number of solutions to return. If set to 0 or lower, no limit will be applied.
      offset - the number of solutions to skip at the beginning. If set to 0 or lower, no offset will be applied.
      Returns:
      A GraphQueryResult that will at return at most the specified maximum number of solutions. If neither limit nor offset are applied, this returns the original queryResult.
    • parseGraphBackground

      public static GraphQueryResult parseGraphBackground(InputStream in, String baseURI, RDFFormat format, WeakReference<?> callerReference) throws UnsupportedRDFormatException
      Parses an RDF document and returns it as a GraphQueryResult object, with parsing done on a separate thread in the background.
      IMPORTANT: As this method will spawn a new thread in the background, it is vitally important that the resulting GraphQueryResult be closed consistently when it is no longer required, to prevent resource leaks.
      Parameters:
      in - The InputStream containing the RDF document.
      baseURI - The base URI for the RDF document.
      format - The RDFFormat of the RDF document.
      Returns:
      A GraphQueryResult that parses in the background, and must be closed to prevent resource leaks.
      Throws:
      UnsupportedRDFormatException
    • parseGraphBackground

      public static GraphQueryResult parseGraphBackground(InputStream in, String baseURI, RDFParser parser, WeakReference<?> callerReference)
      Parses an RDF document and returns it as a GraphQueryResult object, with parsing done on a separate thread in the background.
      IMPORTANT: As this method will spawn a new thread in the background, it is vitally important that the resulting GraphQueryResult be closed consistently when it is no longer required, to prevent resource leaks.
      Parameters:
      in - The InputStream containing the RDF document.
      baseURI - The base URI for the RDF document.
      parser - The RDFParser.
      Returns:
      A GraphQueryResult that parses in the background, and must be closed to prevent resource leaks.
    • report

      Reports a tuple query result to a TupleQueryResultHandler.
      The CloseableIteration.close() method will always be called before this method returns.
      If there is an exception generated by the TupleQueryResult, QueryResultHandler.endQueryResult() will not be called.
      Parameters:
      tqr - The query result to report.
      handler - The handler to report the query result to.
      Throws:
      TupleQueryResultHandlerException - If such an exception is thrown by the used query result writer.
      QueryEvaluationException
    • report

      public static void report(GraphQueryResult gqr, RDFHandler rdfHandler) throws RDFHandlerException, QueryEvaluationException
      Reports a graph query result to an RDFHandler.
      The CloseableIteration.close() method will always be called before this method returns.
      If there is an exception generated by the GraphQueryResult, RDFHandler.endRDF() will not be called.
      Parameters:
      gqr - The query result to report.
      rdfHandler - The handler to report the query result to.
      Throws:
      RDFHandlerException - If such an exception is thrown by the used RDF writer.
      QueryEvaluationException
    • equals

      public static boolean equals(TupleQueryResult tqr1, TupleQueryResult tqr2) throws QueryEvaluationException
      Compares two tuple query results and returns true if they are equal.Tuple query results are equal if they contain the same set of BindingSets and have the same headers. Blank nodes identifiers are not relevant for equality, they are matched by trying to find compatible mappings between BindingSets. Note that the method consumes both query results fully.
      Parameters:
      tqr1 - the first TupleQueryResult to compare.
      tqr2 - the second TupleQueryResult to compare.
      Returns:
      true if equal
      Throws:
      QueryEvaluationException
    • isSubset

      public static boolean isSubset(TupleQueryResult tqr1, TupleQueryResult tqr2) throws QueryEvaluationException
      Throws:
      QueryEvaluationException
    • equals

      public static boolean equals(GraphQueryResult result1, GraphQueryResult result2) throws QueryEvaluationException
      Compares two graph query results and returns true if they are equal. Two graph query results are considered equal if they are isomorphic graphs. Note that the method consumes both query results fully.
      Parameters:
      result1 - the first query result to compare
      result2 - the second query result to compare.
      Returns:
      true if the supplied graph query results are isomorphic graphs, false otherwise.
      Throws:
      QueryEvaluationException
      See Also:
    • bindingSetsCompatible

      public static boolean bindingSetsCompatible(BindingSet bs1, BindingSet bs2)
      Check whether two BindingSets are compatible. Two binding sets are compatible if they have equal values for each variable that is bound in both binding sets.
      Parameters:
      bs1 -
      bs2 -
      Returns:
      true if compatible