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";