== XGAP-DAS connection project == === Background === The Distributed Annotation System (DAS) defines a communication protocol used to exchange annotations on genomic or protein sequences. It is motivated by the idea that such annotations should not be provided by single centralized databases, but should instead be spread over multiple sites. Data distribution, performed by DAS servers, is separated from visualization, which is done by DAS clients. The advantages of this system are that control over the data is retained by data providers, data is freed from the constraints of specific organisations and the normal issues of release cycles, API updates and data duplication are avoided. Taken from: [http://www.biodas.org/wiki/Main_Page BioDAS] === XGAP as a DAS server === The first steps have been done: adding a working example server to the XGAP project. This is how it works: The DAS servlet itself is served directly from the source, it cannot be edited: {{{ DasServlet uk.ac.ebi.mydas.controller.MydasServlet DasServlet /das/* }}} The servlet reads a file named 'MydasServerConfig.xml' located in the WebContent folder. Inside MydasServerConfig.xml, all needed properties for a DAS server are set. For example: * URL of the DAS server (ie. XGAP application running on some IP adress) * XSLT transformation services of the DAS output * Default stylesheet for data sources The important bits are in the datasources section. Here we define what data goes into the DAS service. In the example: * We point to a class file: mydas.examples.EnsemblTestDataSource * A coordinate system is entered, needed to map the data to other DAS sources * The capabilities are defined. We tell DAS what this datasource can provide. What we want is: Phase 1. * New datasource(s) that provide data from an XGAP database in the form of class file(s). * Proper configuration of this source in the config xml. * A working connection to a DAS client Phase 2. * A plugin to 'edit' the config xml. For example, adjust organism and coordinate system. * Smart datasource/config files that serve out the data they can provide, depending on what is in the database. * A client integrated in XGAP that uses our own data as a source * Expanding the client so it uses other sources as well, build a plugin around this to the user can quickly add/remove sources The last two can be done by eg. IFRAMing an existing client and entering our application URL to the list of sources, making use of existing software and source listings.