Provided by: libattean-perl_0.033-1_all bug

NAME

       Attean::QueryPlanner - Query planner

VERSION

       This document describes Attean::QueryPlanner version 0.033

SYNOPSIS

         use v5.14;
         use Attean;
         my $planner = Attean::QueryPlanner->new();
         my $default_graphs = [ Attean::IRI->new('http://example.org/') ];
         my $plan = $planner->plan_for_algebra( $algebra, $model, $default_graphs );
         my $iter = $plan->evaluate($model);
         while (my $result = $iter->next()) {
           say $result->as_string;
         }

DESCRIPTION

       The Attean::QueryPlanner class is a base class implementing common behavior for query planners.
       Subclasses will need to consume or compose the Attean::API::JoinPlanner role.

       Trivial sub-classes may consume Attean::API::NaiveJoinPlanner, while more complex planners may choose to
       implement complex join planning (e.g.  Attean::IDPQueryPlanner).

ATTRIBUTES

METHODS

       "new_temporary( $type )"
           Returns a new unique (in the context of the query planner) ID string that may be used for things like
           fresh  (temporary)  variables.  The  $type string is used in the generated name to aid in identifying
           different uses for the names.

       "plan_for_algebra( $algebra, $model, \@active_graphs, \@default_graphs )"
           Returns the first plan returned from "plans_for_algebra".

       "plans_for_algebra( $algebra, $model, \@active_graphs, \@default_graphs )"
           Returns Attean::API::Plan objects  representing  alternate  query  plans  for  evaluating  the  query
           $algebra against the $model, using the supplied $active_graph.

       "simplify_path( $subject, $path, $object )"
           Return a simplified Attean::API::Algebra object corresponding to the given property path.

       "new_projection( $plan, $distinct, @variable_names )"
           Return a new Attean::Plan::Project plan over $plan, projecting the named variables. $disctinct should
           be  true  if  the  caller  can guarantee that the resulting plan will produce distinct results, false
           otherwise.

           This method takes care of computing plan metadata such as the resulting ordering.

       "bgp_join_plans( $bgp, $model, \@active_graphs, \@default_graphs, \@interesting_order, \@plansA,
       \@plansB, ... )"
           Returns a list of alternative plans for the join  of  a  set  of  triples.   The  arguments  @plansA,
           @plansB, etc. represent alternative plans for each triple participating in the join.

       "group_join_plans( $model, \@active_graphs, \@default_graphs, \@interesting_order, \@plansA, \@plansB,
       ... )"
           Returns  a  list  of  alternative  plans  for the join of a set of sub-plans.  The arguments @plansA,
           @plansB, etc. represent alternative plans for each sub-plan participating in the join.

       "joins_for_plan_alternatives( $model, \@active_graphs, \@default_graphs, $interesting, \@plan_A,
       \@plan_B, ... )"
           Returns a list of alternative plans that may all be used to produce  results  matching  the  join  of
           "plan_A", " plan_B ">, etc. Each plan array here (e.g. @plan_A) should contain equivalent plans.

       "access_plans( $model, $active_graphs, $pattern )"
           Returns  a list of alternative Attean::API::Plan objects that may be used to produce results matching
           the Attean::API::TripleOrQuadPattern $pattern in the context of $active_graphs.

       "join_plans( $model, \@active_graphs, \@default_graphs, \@plan_left, \@plan_right, $type [, $expr] )"
           Returns a list of alternative plans for the join of one  plan  from  @plan_left  and  one  plan  from
           @plan_right. The join $type must be one of 'inner', 'left', or 'minus', indicating the join algorithm
           to  be  used.  If  $type is 'left', then the optional $expr may be used to supply a filter expression
           that should be used by the SPARQL left-join algorithm.

BUGS

       Please  report  any   bugs   or   feature   requests   to   through   the   GitHub   web   interface   at
       <https://github.com/kasei/attean/issues>.

SEE ALSO

AUTHOR

       Gregory Todd Williams  "<gwilliams@cpan.org>"

COPYRIGHT

       Copyright  (c)  2014--2022 Gregory Todd Williams.  This program is free software; you can redistribute it
       and/or modify it under the same terms as Perl itself.

perl v5.36.0                                       2022-10-06                          Attean::QueryPlanner(3pm)