[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