InterMine::Model - the representation of an InterMine model


  use InterMine::Model;

  my $model_file = 'flymine/dbmodel/build/model/genomic_model.xml';
  my $model = InterMine::Model->new(file => $model_file);
  my $gene = $model->make_new(
    Gene => {
        primaryIdentifier => "FBgn0004053",
        secondaryIdentifier => "CG1046",
        symbol              => "zen",
        name                => "zerknullt",
        length              => "3474",
        organism            => {
            shortName => "D. melanogaster",
        ncbiGeneNumber      => 40828,

  $gene->getName(); # "zerknullt"



The class is the Perl representation of an InterMine data model. The new() method can parse the model file. The get_classdescriptor_by_name() method will return an InterMine::Model::ClassDescriptor object for the class with the given name, and the make_new() method will return an instantiated object of the given class.

For an example model see:


new( %options )

Standard constructor - accepts key/value pairs. Possible options are:

  • source: the source of the xml

    can be a ScalarRef, filehandle, filename, or string (or anything that overloads "") (tested in that order)

  • file: The file to load the model from

    [deprecated - use source instead]

  • string: A string containing the xml to load the model from

    [deprecated - use source instead]

  • origin: Where this model comes from

    usually a mine name - optional


Get the InterMine::Model::ClassDescriptor (meta-class) with the given name.

 my $cd = $model->get_classdescriptor_by_name("Gene");

make_new($class_name, [%attributes|$attributes])

Return an object of the desired class, with the attributes given

 my $gene = $model->make_new(Gene => {symbol => "zen", organism => {name => 'D. melanogaster}});

 say $gene->getSymbol             # "zen"
 say $gene->getOrganism->getName # "D. melanogaster"


Return all the InterMine::Model::ClassDescriptors for this model

 my @cds = $model->get_all_classdescriptors();


Get the class descriptor at the other end of a reference. The main use for this method is internal, during the construction of a model

 my $cd = $model->get_referenced_classdescriptor($ref);

find_classes_declaring_field( $name )

Get the class descriptors that declare fields of a certain name

 my @classes = $model->find_classes_declaring_field($str);


Return the package name derived from the original java name space, eg. org.intermine.model

  my $java_package = $model->package_name;


Return the name of this model. Conceptually, this maps to the enclosing package for the generated classes.

 my $model_name = $model->model_name();


Returns a string containing an XML representation of the model.


Always returns undef. This can be overriden by subclasses to provide lazy fetching capabilities for items, from a web-service or directly from a database.


FlyMine <>


Please report any bugs or feature requests to


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

    perldoc InterMine::Model

You can also look for information at:


Copyright 2006,2007,2008,2009, 2010, 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.