[MOBY-dev] Primitives as primary input

Paul Gordon gordonp at ucalgary.ca
Fri Jan 11 03:54:52 UTC 2008


> 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.  
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. 

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.

My $0.02 :-)



More information about the MOBY-dev mailing list