se.sics.jasper
Interface Query

All Known Implementing Classes:
SPQuery

public interface Query

Objects implementing this interface are used for holding a query-reference which is used to find multiple solutions to a query.

See Also:
Prolog.openPrologQuery(java.lang.String, java.util.Map)

Method Summary
 void close()
          Closes a query.
 void cut()
          Discards choices made since this query object was created, like the goal !
 boolean nextSolution()
          Gets the next solution for the query.
 

Method Detail

close

void close()
           throws java.lang.NoSuchMethodException,
                  java.lang.InterruptedException,
                  java.lang.Exception
Closes a query. All remaining solutions to the query are discarded, and the state of the Prolog engine will be restored to the state it was in when openPrologQuery was called. If the query is not the most recently opened, all still open queries opened after this query will be closed as well.

A closed or cut query is invalidated and most operations on it will throw an exception. In particular, you should not call close, cut or nextSolution on an invalidated query.

Invalidates all Term objects created since this query was created. If you need to keep data created by the query (i.e. data referred to by Term objects), you need to convert it to Java datatypes before calling this function.

Throws:
java.lang.NoSuchMethodException
java.lang.InterruptedException
java.lang.Exception

cut

void cut()
         throws java.lang.NoSuchMethodException,
                java.lang.InterruptedException,
                java.lang.Exception
Discards choices made since this query object was created, like the goal !.

If the query is not the most recently opened, all still open queries opened after this query will be cut as well.

A closed or cut query is invalidated and most operations on it will throw an exception. In particular, you should not call close, cut or nextSolution on an invalidated query.

Invalidates all Term objects created since this query was created. If you need to keep data created by the query (i.e. data referred to by Term objects), you need to convert it to Java datatypes before calling this function.

Throws:
java.lang.NoSuchMethodException
java.lang.InterruptedException
java.lang.Exception

nextSolution

boolean nextSolution()
                     throws java.lang.NoSuchMethodException,
                            java.lang.InterruptedException,
                            java.lang.Exception
Gets the next solution for the query. Returns false when there are no more solutions. When no more solutions are needed, the query must be closed using the method close().

Multiple queries can be open at the same time, but the calls to nextSolution must be nested, i.e. refer to the most recently opened query. Invalidates all Term objects created since this query was created

Invalidates all SPTerm objects created since this query was created. If you need to keep data created by the previous call to nextSolution to this query (i.e. data referred to by Term objects), you need to convert it to Java datatypes before calling this function.

Returns:
False if there are no more solutions, True otherwise.
Throws:
java.lang.NoSuchMethodException
java.lang.InterruptedException
java.lang.Exception
See Also:
Prolog.openPrologQuery(java.lang.String, java.util.Map), close(), cut()