[MOBY-dev] Decisions from the BioHackathon

Mark Wilkinson markw at illuminae.com
Wed Feb 13 02:54:27 UTC 2008


Hi all,

Since we have a quorum of the RFC committee here at the Open BioHackathon,  
we've managed to make quite a few decisions, and we're now in the process  
of coding them.

Here are the decisions in a nutshell:

1)  The RFC from INB regarding mirroring of services was accepted with a  
few changes.  We'll get a copy of the revised proposal from Oswaldo in the  
next few days.  Apparently they have already coded support for these  
changes at INB so it will quickly get into the codebase.

2)  Moby will *immediately* start supporting document-literal services.   
These services will be identified using the "Category" tag in the service  
registration/discovery XML.  Two new categories will be "doc-literal" and  
"doc-literal-async".  Until we get better support for document-literal  
services in Perl it is likely that these will not be available to Perl  
clients, but apparently it's no problem in Java.  Some considerations that  
arise from this are:  (a) you must now remove the XML header from your  
data if you're using document-literal, and therefore (b) clients and  
services need to specify the appropriate character encoding (e.g. UTF-8)  
in the SOAP XML header.

3)  Sending data by reference:  we have decided to allow the sending of  
data by reference rather than as the content of an object.  We'll write-up  
the formal specification of how to do this soon, but briefly the idea is  
that we will use the xlink XML attribute in a Moby Object XML  <....  
xlink=''/>.  When that tag is present, it is assumed that the content of  
that node is available at the URI in that reference.  During service  
registration a provider will indicate the various transport protocols they  
provide for creating references (e.g. http, ftp) and this will be  
discoverable during a registry query.  If you don't indicate a protocol,  
then you are saying that you do not support pass-by-reference, and  
therefore all existing services are supported.  When accessing a service,  
you indicate to the service provider that you want data to be passed by  
reference by adding an attribute in the mobyData block <mobyData  
acceptRefs="http ftp">.  The service provider then has the option of  
providing you references for any data they wish.  The xlink attribute can  
appear at any level in your Moby object, such that some data may be passed  
in the object itself, while other data from the same object may be passed  
by reference.

4)  Validating services:  Moby will have several levels of validation:   
(1) ping, (2) does the service crash when accesed with sample data?  (3)   
does the service output the correct object type?  (4)  does the service  
output data that validates against XPath and/or REGEX.  The sample input  
data will be in the service provider's RDF, and there will be several new  
predicates added to the RDF (I'll provide the OWL file shortly that  
defines how these predicates are to be used):  unit_test, example_input,  
valid_xpath, valid_regex, valid_output_xml.  The validation of output XML  
will be canonicalized (i.e. xmldiff, not byte-identity)


Hackers - please correct me if I have mis-represented anything.  I'm  
working from Eddie's scribbled notes ;-)

Hopefully we'll find time to document these changes between our hacking  
sessions :-)

Cheers all!  Greetings from Tokyo!

Mark






More information about the MOBY-dev mailing list