Difference between revisions of "Database Interop Hackathon/Implementations"

From Evolutionary Informatics Working Group
Jump to: navigation, search
(Describing the interface)
m
 
(80 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
{{HackHead}}
 
= Summary =
 
= Summary =
This page discusses potential target implementations that demonstrate the goals for the Evolutionary [[Database Interop Hackathon]], to be held at NESCent in December 2008. The overall goal is to expose evolutionary data resource on the web in a machine readable architecture so that they can be integrated in complex work flows and mash-ups. To this end, we suggest their implementing of the stack produced by the evolutionary informatics working group:
+
This page discusses potential target implementations that demonstrate the goals for the Evolutionary [[Database Interop Hackathon]], to be held at NESCent in March 2009. The overall goal is to expose evolutionary data resource on the web in a machine readable architecture so that they can be integrated in complex work flows and mash-ups. To this end, we suggest their implementing of the stack produced by the evolutionary informatics working group:
 
* ''Syntax'' - the [[Future_Data_Exchange_Standard|NeXML]] data exchange standard
 
* ''Syntax'' - the [[Future_Data_Exchange_Standard|NeXML]] data exchange standard
 
* ''Interface/transport'' - the [[PhyloWS]] API for web services
 
* ''Interface/transport'' - the [[PhyloWS]] API for web services
Line 10: Line 11:
 
<table>
 
<table>
 
<tr><th align="left" style="border-bottom:1px solid silver">Resource</th><th align="left" style="border-bottom:1px solid silver">Exportable objects</th><th align="left" style="border-bottom:1px solid silver">Implementation language</th></tr>
 
<tr><th align="left" style="border-bottom:1px solid silver">Resource</th><th align="left" style="border-bottom:1px solid silver">Exportable objects</th><th align="left" style="border-bottom:1px solid silver">Implementation language</th></tr>
 +
 +
<tr>
 +
<td>[http://gmod.org/ GMOD]</td>
 +
<td>[[ConceptGlossary#Natural Variation]], [[ConceptGlossary#Polymorphism]], Syntenic regions</td>
 +
<td>Java, Perl, C, ActionScript</td>
 +
</tr>
  
 
<tr>
 
<tr>
Line 21: Line 28:
 
<td>??</td>
 
<td>??</td>
 
<td>Java</td>
 
<td>Java</td>
 +
</tr>
 +
 +
<tr>
 +
<td>[http://www.phytome.org PhyTome]</td>
 +
<td>[[ConceptGlossary#Family_alignment]],[[ConceptGlossary#Phylogenetic_Tree]]</td>
 +
<td>PHP</td>
 
</tr>
 
</tr>
  
Line 87: Line 100:
 
<td>[[ConceptGlossary#Phylogenetic_Tree]], [[ConceptGlossary#Family_alignment]]</td>
 
<td>[[ConceptGlossary#Phylogenetic_Tree]], [[ConceptGlossary#Family_alignment]]</td>
 
<td>CGI (=Perl?), PHP</td>
 
<td>CGI (=Perl?), PHP</td>
 +
</tr>
 +
 +
<tr>
 +
<td>[[PaleoDB]]</td>
 +
<td>[[ConceptGlossary#Taxon]], [[ConceptGlossary#Taxonomic_Rank]], [[ConceptGlossary#Organismal_Taxonomy]]</td>
 +
<td>CGI (=Perl)</td>
 
</tr>
 
</tr>
  
 
</table>
 
</table>
 
= Suggested hackathon deliverables =
 
== Data retrieval, based on an identifier ==
 
This simple reference service returns phylogenetic data that is identifiable by some GUID, such as a [http://tolweb.org ToLWeb] accession number. The service is implemented following the [[PhyloWS/REST]] proposal, has a [[CDAO]] annotated service description and emits [[Future_Data_Exchange_Standard|NeXML]].
 
 
=== Describing the interface ===
 
The first step is to formally describe the interface. In general terms, PhyloWS/REST proposes that data retrieval services are exposed using a URL API like this: '''<code>/phylows/${dataType}/${nameSpace}:${identifier}</code>''', where '''<code>${dataType}</code>''' is something like "Tree", "Matrix", etc. '''<code>${nameSpace}</code>''' is a naming authority such as ToLWeb, and '''<code>${identifier}</code>''' is unique within '''<code>${nameSpace}</code>''' (and consequently globally unique). This implies URLs such as '''<code>/phylows/Tree/ToLWeb:16299</code>''', which, when accessed using the [http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods GET HTTP method] returns a representation of tree [http://tolweb.org/16299 16299].
 
  
 
[[Category:DB Interop Hackathon]]
 
[[Category:DB Interop Hackathon]]
 
[[Category:Interoperability]]
 
[[Category:Interoperability]]
[[Category:Nexml]]
 
 
[[Category:CDAO]]
 
[[Category:CDAO]]
 +
[[Category:Data Resources]]

Latest revision as of 15:42, 12 March 2009

Summary

This page discusses potential target implementations that demonstrate the goals for the Evolutionary Database Interop Hackathon, to be held at NESCent in March 2009. The overall goal is to expose evolutionary data resource on the web in a machine readable architecture so that they can be integrated in complex work flows and mash-ups. To this end, we suggest their implementing of the stack produced by the evolutionary informatics working group:

  • Syntax - the NeXML data exchange standard
  • Interface/transport - the PhyloWS API for web services
  • Semantics - the CDAO character data analysis ontology

By combining these three components into a single, integrated stack, online data resources will produce output that is easy to parse and validate, whose semantics are well-defined, and whose interface is uniform across data resources.

Current implementations

Some of the online data resources the hackathon seeks to invite for an implementation drive are listed in the table below. The semantics of the output produced by these resources is diverse, including species trees, taxonomies, gene trees, character state matrices and alignments. Also, the programming languages used to implement these services are diverse, including Java, PHP, Python and Perl. This situation goes a long way to explain why standard industry practices (write a WSDL, generate client and server bindings, implement service) have not seen wide adoption in the evolutionary informatics community: different resources have, semantically and syntactically, different inputs and outputs, and are implemented in languages whose support for web services (especially WS-*) is sometimes incomplete.

ResourceExportable objectsImplementation language
GMOD ConceptGlossary#Natural Variation, ConceptGlossary#Polymorphism, Syntenic regions Java, Perl, C, ActionScript
Tree of Life ConceptGlossary#Species_Tree Java
pPOD ?? Java
PhyTome ConceptGlossary#Family_alignment,ConceptGlossary#Phylogenetic_Tree PHP
uBio ConceptGlossary#Taxon, ConceptGlossary#Taxonomic_Rank, ConceptGlossary#Organismal_Taxonomy PHP
TimeTree ConceptGlossary#Species_Tree PHP
PhyloFacts ConceptGlossary#Transition_Model, ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment PHP
MorphBank ConceptGlossary#Character-State_Data_Matrix PHP, Java, JavaScript
MorphoBank ConceptGlossary#Character-State_Data_Matrix PHP, Flash/ActionScript
PhylomeDB ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment JavaScript, Python
PhyloTA ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment Perl
TreeFam ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment Perl
Pandit ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment Perl
MicrobesOnline ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment CGI (=Perl?)
HoVerGen ConceptGlossary#Phylogenetic_Tree, ConceptGlossary#Family_alignment CGI (=Perl?), PHP
PaleoDB ConceptGlossary#Taxon, ConceptGlossary#Taxonomic_Rank, ConceptGlossary#Organismal_Taxonomy CGI (=Perl)