Class QueryPlan


  • public class QueryPlan
    extends java.lang.Object
    Represents a plan for executing a Prolog query.

    A single QueryPlan can be used to create multiple QueryStatement objects. If you are intending to execute the same query multiple times then, for performance reasons, it is recommended to use a QueryPlan rather than create multiple QueryStatement directly. When using a QueryPlan the Prolog syntax will only be parsed once and the plan for executing the query will be optimised for performance.

    • Field Detail

      • parsedInput

        private final Term parsedInput
    • Constructor Detail

      • QueryPlan

        QueryPlan​(KnowledgeBase kb,
                  java.lang.String prologQuery)
    • Method Detail

      • executeOnce

        public void executeOnce()
        Evaluate once the query represented by this statement.

        The query will only be evaluated once, even if further solutions could of been found on backtracking.

        Throws:
        ProjogException - if no solution can be found
        See Also:
        createStatement(), executeQuery()
      • findFirstAsAtomName

        public java.lang.String findFirstAsAtomName()
      • findFirstAsDouble

        public double findFirstAsDouble()
      • findFirstAsLong

        public long findFirstAsLong()
      • findFirstAsTerm

        public Term findFirstAsTerm()
      • findFirstAsOptionalAtomName

        public java.util.Optional<java.lang.String> findFirstAsOptionalAtomName()
      • findFirstAsOptionalDouble

        public java.util.Optional<java.lang.Double> findFirstAsOptionalDouble()
      • findFirstAsOptionalLong

        public java.util.Optional<java.lang.Long> findFirstAsOptionalLong()
      • findFirstAsOptionalTerm

        public java.util.Optional<Term> findFirstAsOptionalTerm()
      • findAllAsAtomName

        public java.util.List<java.lang.String> findAllAsAtomName()
      • findAllAsDouble

        public java.util.List<java.lang.Double> findAllAsDouble()
      • findAllAsLong

        public java.util.List<java.lang.Long> findAllAsLong()
      • findAllAsTerm

        public java.util.List<Term> findAllAsTerm()