[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