=pod

=head1 NAME

Webservice::InterMine::Cookbook - how to run Webservice::InterMine webservice queries

=head1 DESCRIPTION

The Webservice::InterMine cookbook is a set of short tutorial 'recipes'
which aim to demonstrate particular features of the Webservice::InterMine
Perl API. Each recipe presents some code, followed by a section
which explains and discusses the features used.

=head1 RECIPES

=over

=item L<Webservice::InterMine::Cookbook::Recipe1> - The bare basics

The bare minimum you need to create and run a valid
Webservice::InterMine query from scratch

=item L<Webservice::InterMine::Cookbook::Recipe2> - Adding constraints

Queries without constraints are not very useful, so here
we look at how to add some simple constraints to your searches

=item L<Webservice::InterMine::Cookbook::Recipe3> - More constraints

There are several different constraint types, distinguished
by their operators; this recipe introduces all the main
constraint types.

=item L<Webservice::InterMine::Cookbook::Recipe4> - Other Query Features

This recipe presents the other potential features of a query:
joins and path descriptions

=item L<Webservice::InterMine::Cookbook::Recipe5> - Dealing with Results

Once you have your query working the way you want it to, you
will then need to deal with the results it returns - this recipe
introduces the different result formats and how to access your data

=item L<Webservice::InterMine::Cookbook::Recipe6> - Advanced Results Management

This recipe looks at using iteration, and ways that you can use
features such as filtering results, limiting them, and processing
them in a stream.

=item L<Webservice::InterMine::Cookbook::Recipe7> - Extending Webservice::InterMine

The Perl API is written to be easily extensible with Moose roles - so
if there is something you wish it could do, it probably can: here we
look at adding different output formats to queries.

=item L<Webservice::InterMine::Cookbook::Templates::Recipe1> - Accessing Templates

You don't have to create all your own queries - much of the
work has been done for you with re-usable 'Templates' available from the
webservice - here we look at the basics of calling a template

=item L<Webservice::InterMine::Cookbook::Templates::Recipe2> - Authoring Templates

Your scripted queries can be saved to the web-service
as templates, making them as portable as the web-service itself,
and as powerful as any other template.

=item L<Webservice::InterMine::Cookbook::List::Upload> - Uploading New Lists

You can create new lists on the server from collections of identifiers or queries
that define a specific result set.

=item L<Webservice::InterMine::Cookbook::List::Enrichment> - Performing Enrichment Calculations

You can perform statistical analysis of lists available to you.

=item L<Webservice::InterMine::Cookbook::List::Combination> - Combining Existing Lists

You can combine lists in various ways, via common set operations.

=back

=head1 AUTHOR

Alex Kalderimis C<dev@intermine.org>

=head1 BUGS

Please report any bugs or feature requests to C<dev@intermine.org>.

=head1 SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Webservice::InterMine

You can also look for information at:

=over 4

=item * InterMine

L<http://www.intermine.org>

=item * Documentation

L<http://www.intermine.org/perlapi>

=back

=head1 COPYRIGHT AND LICENSE

Copyright 2006 - 2010 FlyMine, all rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut

    use strict;
    use warnings;
    use Webservice::InterMine 'flymine';
    require Data::Dumper;

    my $query    = Webservice::InterMine->new_query(class => 'Gene');
    my $results  = $query->select('symbol', 'primaryIdentifier', 'pathways.*')
                         ->where(symbol => [qw/h H bib eve zen/])
                         ->all();

    print Data::Dumper->new([$results])->Dump;

    $results = $query->one;

    print Data::Dumper->new([$results])->Dump;

    $results = $query->first;

    print Data::Dumper->new([$results])->Dump;