[MOBY-dev] Primitives as primary input

Pieter Neerincx Pieter.Neerincx at wur.nl
Fri Jan 11 11:54:50 UTC 2008


Hi Paul,

You are a good advocate for the moby id/namepsace combo and I think  
they should be used more often. There are too many services that  
don't use namespace restriction where they should and I have too  
admit I'm guilty too. I still have some questions left though.... and  
I think designing good BioMOBY objects and namespaces is anything but  
trivial :(.

On  11 Jan 2008, at 04:54, Paul Gordon wrote:

>
>> Mark Wilkinson wrote:
>>> I agree with Paul (or did Paul agree with me??) that email and  
>>> url are namespaces.  Paul's argument that it doesn't make sense  
>>> to sub-class an email or a url is a compelling one, which also  
>>> gives me some assurance that this decision is correct.
> Mark, I didn't actually say that URLs were a namespace -- just e- 
> mails.  I avoided talking about URLs because I knew I'd have to  
> write a longer philosophical e-mail..like this one :-)
>
> To be correct, the namespace should actually be "smtp", as the e- 
> mail address format that we are used to (foo at bar.tld) is specific  
> to SMTP.

That is just for sending the e-mail. E-mail addresses are just as  
specific for protocols used to retrieve e-mail. So I don't see why  
the namespace should be smtp and not for example pop3 or imap?

>  Anyone remember uucp-based e-mail? This might seem pedantic, but  
> it makes a point: the e-mail address is what is referred to in  
> semiotics as an "index".  Now for some semiotic theory.  Normally,  
> the association between a sign (e.g. the word "cow") and the entity  
> it refers to (an actual, physical cow) is arbitrary, it's a  
> cultural artifact. These are called symbols (gene symbols such as  
> "adh1" are examples of this too). An index is a sign who's  
> association with its referent is not random: the referent is  
> unambiguously resolveable, given a retrieval protocol.  A protocol  
> and an index go hand-in-hand.  An e-mail address points an SMTP  
> client (the sign interpreter) unambiguously at a destination for a  
> message, ergo, the e-mail address is an index for the SMTP  
> protocol.  In Moby, the protocol is the namespace (e.g. NCBI_gi),  
> the index is the ID (e.g. 100389), and the interpreter is an NCBI- 
> savvy Moby service that will be able to retrieve based on the index.
>
> URLs are different beasts.  The fact that you can represent an e- 
> mail address as a URL speaks to this fact (e.g.  
> mailto:foo at bar.tld).  A URL combines a protocol and an index  
> ("protocol:index").  Technically, probably the best way to  
> represent the URL http://www.google.com in Moby would be to have an  
> HTTP namespace, and use the id "//www.google.com".  Then you make  
> http-savvy Moby services, registered accepting objects in the HTTP  
> namespace.

Hmmm... yes, but then an e-mail address id namespace combo is now  
<Object id='foo at bar.tld' namespace='mailto'>. Maybe it could be  
solved if we can subclass the namespace ontology. Then you could have  
some generic mail_protocol namespace and smtp isa mail_protocol, pop3  
isa mail_protocol, etc.

> The confusion comes from the fact that the protocol+index combo can  
> be either in the namespace/id part, or in the form of a data type.   
> Why then do we bother having id/namepsace?  Tom was on to  
> something, but not quite.  There is exactly one "carrier mechanism"  
> in Moby: services. They know how to resolve an index combos and  
> give you the referent back.
>
> Namespaces are exceptionally useful because they allow you to use  
> an index with or without the things that are keyed off them.  A  
> perfect illustration this is a VirtualSequence with a namespace and  
> id. Another good way to get a sense of the appropriateness of  
> namespace/id is the Moby cross-reference block (CRIB).  If you made  
> E-mail a data type, you couldn't use it in the CRIB because you're  
> not using the namespace/id combo to make the cross-reference in the  
> only way Moby inherently knows how.

You would have to use the email namespace for the CRIB, but that  
doesn't mean you can not have it as a data-type too. Think of the  
following example:

VirtualEmail isa Object
AnnotatedEmail isa VirtualEmail
AnnotatedEmail has Object with articleName alias
AnnotatedEmail has String with articleName real_name

That would look something like this:

<AnnotatedEmail id='foo.bar at domain.tld' namespace='smtp/email/imap/ 
mailto/?'>
	<Object id='f.bar001 at domain.tld' namespace='smtp/email/imap/ 
mailto/?' articleName='alias'/>
	<Object id='ba_001 at domain.tld' namespace='smtp/email/imap/mailto/?'  
articleName='alias'/>	
	<String id='' namespace='' articleName='real_name'/>
		Prof.Dr. Foo Bar
	</String>
</AnnotatedEmail>

You can still use a CRIB to point to this thing using:

<CrossReference>
	<Xref namespace='smtp/email/imap/mailto/?' id='foo.bar at domain.tld'  
authURI='' serviceName='' evidenceCode='' xrefType=''>
	... Description ...
	</Xref>
</CrossReference>

or using a lightweight CRIB:

<CrossReference>
	<Object namespace='smtp/email/imap/mailto/?' id='foo.bar at domain.tld' />
</CrossReference>

After all VirtualEmail isa Object, right?

Cheers,

Pi


> My $0.02 :-)
> _______________________________________________
> MOBY-dev mailing list
> MOBY-dev at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/moby-dev
>

-------------------------------------------------------------
Wageningen University and Research centre (WUR)
Laboratory of Bioinformatics
Transitorium (building 312) room 1034

Dreijenlaan 3
6703 HA Wageningen
The Netherlands

phone:  0317-483 039
fax: 0317-483 584
mobile: 06-143 66 783
mail: pieter.neerincx at wur.nl
skype: pieter.online
-------------------------------------------------------------






More information about the MOBY-dev mailing list