Registering a new Namespace

Namespaces in MOBY-S are domains of ID numbers. For example, Genbank has the 'gi' domain, and also an 'Accession' domain, Gene Ontology has a GO term ID, and so on.

Almost without exception, if you find yourself with an identifier within one of these domains, you can guarantee what the data-type is that the ID referrs to. For example, gi numbers always represent Genbank records, and identifiers in the format GO::0003346 always represent Gene Ontology Terms. As such, much of MOBY-S is built to take advantage of this predeictability. (An up-to-date list of currently available namespaces, is available here.)

In MOBY-S, service providers will often define their interfaces in terms of Namespaces - i.e. they are saying "I know how to do something with identifiers in the following namespaces: X, Y, Z", or "I can do lookups and provide you with identifiers in the following namespaces: X, Y, Z".

If you are a service provider, you may well have to register your own namespace if you plan to consume/produce identifiers that are unique to you, since only the most common ones (genbank, embl, swissprot, etc.) have already been registered in the MOBY-S Namespace ontology. There are only a couple of considerations you need to make before jumping in:

As a matter of courtesy, don't register "Locus" as a namespace, since you are certainly not the only service provider on earth that has DNA in their database! Instead, prefix it with some brief domain-specific term, for example TAIR_Locus, to prevent collisions. MOBY will not enforce this, so we rely on you to be polite to other users.

Also, namespaces are, at the present time, not hierarchically organized. The namespace "ontology" is just a flat list of Namespace prefixes. For example, I am at the MRL labs of UBC, and I need to register a namespace for producing/consuming identifiers from our heart-disease image database. To register a new one using the Perl libraries, I would simply do the following:

use MOBY::Client::Central;
$m = MOBY::Client::Central->new;

$REG = $m->registerNamespace(
    namespaceType => 'MRL_CardioDB_Image',
    authURI => 'mrl.ubc.ca',
    description => "Identifiers in the Macdonald Research Laboratories Heart Disease Image database",
    contactEmail => 'mwilkinson@nospam.mrl.ubc.ca',  # note single quotes, to prevent interpretation of the '@' by Perl
    );

$REG->success?print"Success\n":print "Failed: ",$REG->message,"\n";