and 1 contributors


Webservice::InterMine::Query::Roles::Runnable - Composable behaviour for runnable queries


This module provides composable behaviour for running a query against a webservice and getting the results.



Returns a results iterator for use with a query.

The following options are available:

  • as => $format

    Possible values: (rr|ro|objects|string|jsonobjects|jsonrows|count)

    The format to request results in.

    • rr ResultRows (default)

      ResultRows are objects that represent a row of results, allowing both hash-ref and array-ref access to their results. See Webservice::InterMine::ResultRow.

    • ro ResultObjects

      Inflated Webservice::InterMine::ResultObjects will be returned (it is a synonym for as => "jsonobjects", json => "inflate").

    • objects Instantiated InterMine::Model objects.

      Fully instantiated objects will be returned (see InterMine::Model::make_new).

    • string Unparsed TSV rows

      If "string" is selected, then the results will be unparsed tab delimited rows.

    • json[objects|rows] - raw data structures

      The two json formats allow low-level access to the data-structures returned by the webservice.

    • count - a single row containing the count

      In preference to using the iterator, it is recommended you use Webservice::InterMine::Query::Roles::Runnable::count instead.

  • size => $size

    The number of results to return. Leave undefined for "all" (default).

  • start => $start

    The first result to return (starting at 0). The default is 0.

  • columnheaders => 0/1/friendly/path

    Whether to return the column headers at the top of TSV/CSV results. The default is false. There are two styles - friendly: "Gene > pathways > name" and path: "". The default style is friendly if a true value is entered and it is not "path".

  • json => $json_processor

    Possible values: (inflate|instantiate|raw|perl)

    What to do with JSON results. The results can be returned as inflated objects, full instantiated Moose objects, a raw json string, or as a perl data structure. (default is perl).

  • summaryPath => $path

    The path of the query to summarise (see summarise).

    If a value for this is supplied, then (as => 'jsonrows') is implied. Also, unlike the summarise method, this option will return a list of item/count pairs, as below:

        { item => "the-best", count => 100 },
        { item => "the-runner-up", count => 99 },
        { item => "the-wooden-spoon", count => 98 },

    This is best when you care more about the top of the summary list, or which value is at the top than what the value of particular item is. If you are using this method with a big result set it is best to use size as well.

summarise($path, <%opts>) / summarize($path, <%opts>)

Get a column summary for a path in the query. For numerical values this returns a hash reference with four keys: average , stdev , min , and max . These may be accessed as so:

  my $average = $query->summarise("length")->{average};

For non-numerical paths, the summary provides a hash from item => count, so the number of occurrences of an item may be accessed as so:

  my $no_on_chr2 = $query->summarise("chromosome.primaryIdentifier")->{2};

Obviously you can sort the hash yourself, but if you want this information in order, or just a particular subset (the top 100 perhaps), then you should use results() instead.

Any further options will be passed along to the result-iterator as is, although the one that makes the most sense is size, when you don't want all the results from a very large result set.


A synonym for results_iterator. See Webservice::InterMine::Query::Roles::Runnable::results_iterator.

results( %options )

returns the results from a query in the result format specified.

This method supports all the options of results_iterator, but returns a list (in list context) or an array-reference (in scalar context) of results instead.


Return all rows of results. This method takes the same options as results, but any start and size arguments given are ignored. Note that the server code limits result-sets to 10,000,000 rows in size, no matter what.


Return the first result (row or object). This method takes the same options as results, but any size arguments given are ignored. May return undef if there are no results.


Return one result (row or result object), throwing an error if more than one is received.


A convenience method that returns the number of result rows a query returns.


Alias for get_count


Get the url for a webservice resource.


get the url to use to upload queries to the webservice.


Save this query in the user's history in the connected webservice. For queries this will be saved into query history, and templates will be saved into your personal collection of private templates.



Alex Kalderimis <>


Please report any bugs or feature requests to


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

    perldoc Webservice::InterMine::Query::Roles::Runnable

You can also look for information at:


Copyright 2006 - 2011 FlyMine, all rights reserved.

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