The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Bio::DB::Query::QueryConstraint - a constraint on a variable value in a query

SYNOPSIS

  # create a constraint that says "species not like drosophila*"
  my $qc = 
    Bio::DB::Query::QueryConstraint->new(-name=>"species",
                                       -op=>"like",
                                       -value=>"drosophila*",
                                       -neg=>1);

  # alternate way of writing same thing
  my $qc = 
    Bio::DB::Query::QueryConstraint->new("species like drosophila*");
  $qc->neg(1);

  # use lisp-style operand-first way of specifying composites
  # species taxa id is 7227 or 7228
  my $qc = 
    Bio::DB::Query::QueryConstraint->new(
        [   "or", 
                "species=7227", 
                    "species=7228",
                "species=7229"
        ]
    );

  # composite queries can also be built this way:
  my $qc = 
    Bio::DB::Query::QueryConstraint->new(-op=>"or", 
                                       value=>[$subqc1, $subqc2, $subqc3]);
  $qc->is_composite(1);

  # we can have nested constraints like this:
  my $qc = 
    Bio::DB::Query::QueryConstraint->new(
        [   "or", 
                    [   "and", 
                            "species=Human", 
                "keywords=foo*"
            ],
                    [   "and", 
                                "species=Drosophila virilis", 
                "keywords=bar*"
                        ]
        ]
    );

DESCRIPTION

Represents the constraints in a query; either the whole constraints or a part of; see the composite design patern.

the qc is a leaf node (eg Col=Val) or a composite node (eg (AND cons1, cons2, cons3, ....)

composite nodes have name=composite

Should we split this into two classes ala composite design pattern? Cramming both into one works for now.

CONTACT

Chris Mungall, cmungall@fruitfly.org

APPENDIX

The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _

name

  Usage:  $qc->name($val);      # setting
      OR   return $qc->name();  # getting

the name of the variable being constrained

value

  Usage:  $qc->value($val);      # setting
      OR   return $qc->value();  # getting

the value of the variable is allowed to take mediated by the operand

this is an arrayref of sub-constraints if this a composite

operand

  Usage:  $qc->operand($val);      # setting
      OR   return $qc->operand();  # getting

defaults to "="

neg

  Usage:  $qc->neg($val);      # setting
       OR   return $qc->neg();  # getting

boolean

set if the constraint is to be negated

is_composite

  Usage:  $qc->is_composite($val);       # setting
       OR   return $qc->is_composite();  # getting

  Returns: boolean

et if the constraint is a composite constraint (in this case the sub constraints go in $qc->values)