Title:     Publications
Notice:    Licensed to the Apache Software Foundation (ASF) under one
           or more contributor license agreements.  See the NOTICE file
           distributed with this work for additional information
           regarding copyright ownership.  The ASF licenses this file
           to you under the Apache License, Version 2.0 (the
           "License"); you may not use this file except in compliance
           with the License.  You may obtain a copy of the License at
           .
             http://www.apache.org/licenses/LICENSE-2.0
           .
           Unless required by applicable law or agreed to in writing,
           software distributed under the License is distributed on an
           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
           KIND, either express or implied.  See the License for the
           specific language governing permissions and limitations
           under the License.

*These publications **describe**, **extend** or **experiment** with Taverna. See also [references](/community/references) and [how to cite Taverna](/community/cite).*

*Please suggest an [edit](/community/edit) of the website to add or correct a publication listing.*

### 2017

Marek Kasztelnik, Ernesto Coto, Marian Bubak, Maciej Malawski, Piotr Nowakowski, Juan Arenas, Alfredo Saglimbeni, Debora Testi, Alejandro F. Frangi (2017):
**Support for Taverna workflows in the VPH-Share cloud platform**.
In: _Computer Methods and Programs in Biomedicine_ **146** July 2017, pages 37–46.
[https://doi.org/10.1016/j.cmpb.2017.05.006](https://doi.org/10.1016/j.cmpb.2017.05.006)
**No OA preprint available?**

Pinar Alper, Khalid Belhajjame, Carole A. Goble (2017):
**Static analysis of Taverna workflows to predict provenance patterns**.
_Future Generation Computer Systems_ (Available online 16 January 2017).
[https://doi.org/10.1016/j.future.2017.01.004](https://doi.org/10.1016/j.future.2017.01.004)

Sarah Cohen-Boulakia, Khalid Belhajjame, Olivier Collin, Jérôme Chopard, Christine Froidevaux, Alban Gaignard, Konrad Hinsen, Pierre Larmande, Yvan Le Bras, Frédéric Lemoine, Fabien Mareuil, Hervé Ménager, Christophe Pradal, Christophe Blancheto (2017):
**Scientific workflows for computational reproducibility in the life sciences: Status, challenges and opportunities**
_Future Generation Computer Systems_ (Available online 6 January 2017).
[https://doi.org/10.1016/j.future.2017.01.012](https://doi.org/10.1016/j.future.2017.01.012) **MISSING Open Acccess preprint**

### 2016

Alex R. Hardisty, Finn Bacall, Niall Beard, Maria-Paula Balcázar-Vargas, Bachir Balech, Zoltán Barcza, Sarah J. Bourlat, Renato De Giovanni, Yde de Jong, Francesca De Leo, Laura Dobor, Giacinto Donvito, Donal Fellows, Antonio Fernandez Guerra, Nuno Ferreira, Yuliya Fetyukova, Bruno Fosso, Jonathan Giddy, Carole Goble, Anton Güntsch, Robert Haines, Vera Hernández Ernst, Hannes Hettling, Dóra Hidy, Ferenc Horváth, Dóra Ittzés, Péter Ittzés, Andrew Jones, Renzo Kottmann, Robert Kulawik, Sonja Leidenberger, Päivi Lyytikäinen-Saarenmaa, Cherian Mathew, Norman Morrison, Aleksandra Nenadic, Abraham Nieva de la Hidalga, Matthias Obst, Gerard Oostermeijer, Elisabeth Paymal, Graziano Pesole, Salvatore Pinto, Axel Poigné, Francisco Quevedo Fernandez, Monica Santamaria, Hannu Saarenmaa, Gergely Sipos, Karl-Heinz Sylla, Marko Tähtinen, Saverio Vicario, Rutger Aldo Vos, Alan R. Williams, Pelin Yilmaz (2016):
**BioVeL: a virtual laboratory for data analysis and modelling in biodiversity science and ecology**.
_BMC Ecology_ **16**(49)
[https://doi.org/10.1186/s12898-016-0103-y](https://doi.org/10.1186/s12898-016-0103-y)
[PMID:27765035](http://www.ncbi.nlm.nih.gov/pubmed/27765035)

Arzu Tugce Guler, Cathelijn J.F. Waaijer, Yassene Mohammed, Magnus Palmblad (2016 August):
**Automating bibliometric analyses using Taverna scientific workflows: A tutorial on integrating Web Services**.
In: *Journal of Informetrics* **10**(3) 830&ndash;841.
[https://doi.org/10.1016/j.joi.2016.05.002](https://doi.org/10.1016/j.joi.2016.05.002)

Stian Soiland-Reyes, Pinar Alper, Carole Goble (2016):
**Tracking workflow execution with TavernaProv**.
At: [PROV: Three Years Later](http://provenanceweek.org/2016/p3yl/programme.html),
[Provenance Week 2016](http://www2.mitre.org/public/provenance2016/).
[https://doi.org/10.5281/zenodo.51314](https://doi.org/10.5281/zenodo.51314])
[[html]](https://cdn.rawgit.com/stain/2016-provweek-tavernaprov/submitted/2016-provweek-tavernaprov.xhtml)
[[pdf]](http://provenanceweek.org/2016/p3yl/papers/paper_86.pdf)
[[slide]](http://provenanceweek.org/2016/p3yl/slides/slide_86.pdf)
[[source]](https://github.com/stain/2016-provweek-tavernaprov/)

Pinar Alper (2016)
**Towards harnessing computational workflow provenance for experiment reporting**
PhD thesis.
[[pdf]](https://www.escholar.manchester.ac.uk/api/datastream?publicationPid=uk-ac-man-scw:300560&datastreamId=FULL-TEXT.PDF)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:300560)


### 2015

Rudolf Mayer, Andreas Rauber (2015):
**A Quantitative Study on the Re-executability of Publicly Shared Scientific Workflows**
At _2015 IEEE 11th International Conference on e-Science (e-Science)_.
[https://doi.org/10.1109/eScience.2015.58](https://doi.org/10.1109/eScience.2015.58)
[[pdf]](http://www.ifs.tuwien.ac.at/~mayer/publications/pdf/may_escience15_workflows.pdf)

### 2014
Sarah Cohen-Boulakia, Jiuqiang Chen, Paolo Missier, Carole A. Goble, Alan R. Williams, Christine Froidevaux. (2014).
**Distilling structure in Taverna scientific workflows: a refactoring approach.**
In: *BMC Bioinformatics*, 15(suppl 1).
[https://doi.org/10.1186/1471-2105-15-S1-S12](https://doi.org/10.1186/1471-2105-15-S1-S12)


Pinar Alper (2014):
**Re-thinking Workflow Provenance against Data-Oriented Investigation Lifecycle**
Technical report.
[[pdf]](https://www.escholar.manchester.ac.uk/api/datastream?publicationPid=uk-ac-man-scw:224895&datastreamId=FULL-TEXT.PDF)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:224895)

Judicaël Ribault, Gregory Zacharewicz (2014):
**Time-based orchestration of workflow, interoperability with G-Devs/Hla**
In: _Journal of Computational Science_ **10** 126-136.
[https://doi.org/10.1016/j.jocs.2014.07.002](https://doi.org/10.1016/j.jocs.2014.07.002)
[[researchgate]](https://www.researchgate.net/publication/264498536_Time-Based_Orchestration_Of_Workflow_Interoperability_With_G-DevsHla)
[[pdf]](https://www.researchgate.net/profile/Gregory_Zacharewicz/publication/264498536_Time-Based_Orchestration_Of_Workflow_Interoperability_With_G-DevsHla/links/54d1eecf0cf28959aa7bcf52.pdf?inViewer=0&pdfJsDownload=0&origin=publication_detail)

### 2013
Anja Le Blanc, John Brooke, Donal Fellows, Marco Soldati, David P&eacute;rez-Su&aacute;rez, Alessandro Marassi, Andrej Santin. (2013).
**Workflows for heliophysics.**
In: *Journal of Grid Computing*, 11(3): 481&ndash;503. [https://doi.org/10.1007/s10723-013-9256-5](https://doi.org/10.1007/s10723-013-9256-5)
[[researchgate]](https://www.researchgate.net/publication/236683534_Workflows_for_Heliophysics)

Katherine Wolstencroft, Robert Haines, Donal Fellows, Alan Williams, David Withers, Stuart Owen, Stian Soiland-Reyes, Ian Dunlop, Aleksandra Nenadic, Paul Fisher, Jiten Bhagat, Khalid Belhajjame, Finn Bacall, Alex Hardisty, Abraham Nieva de la Hidalga, Maria P. Balcazar Vargas, Shoaib Sufi, Carole Goble. (2013).
**The Taverna workflow suite: designing and executing workflows of Web Services on the desktop, web or in the cloud.**
In: *Nucleic Acids Research*, 41(W1): W557&ndash;W561.
[https://doi.org/10.1093/nar/gkt328](https://doi.org/10.1093/nar/gkt328)

Hyde Zhang, Stian Soiland-Reyes, Carole Goble. (2013).
**Taverna Mobile: Taverna workflows on Android.**
In: *EMBnet.journal*, 19(B).
[https://doi.org/10.14806/ej.19.B.727](https://doi.org/10.14806/ej.19.B.727) [[pdf]](http://journal.embnet.org/index.php/embnetjournal/article/view/727/1047)

## 2012

Konstantinos Karasavvas, Katy Wolstencroft, Eleni Mina, Don Cruickshank, Alan Williams, David De Roure, Carole Goble, Marcos Roos. (2012).
**"Opening new gateways to workflows for life scientists,"**
in *Studies in Health Technology and Informatics (Series): Volume 175: HealthGrid Applications and Technologies Meet Science Gateways for Life Sciences (EBook).* IOS Press, p. 131&ndash;141.
[https://doi.org/10.3233/978-1-61499-054-3-131](https://doi.org/10.3233/978-1-61499-054-3-131)

Jun Zhao, Jose Manuel Gomez-Perez, Khalid Belhajjame, Graham Klyne, Esteban Garcia-Cuestay, Aleix Garridoy, Kristina Hettne, Marco Roos, David De Roure, Carole Goble. (2012).
**"Why workflows break &mdash; Understanding and combating decay in Taverna workflows,"**
in *E-Science (e-Science), 2012 IEEE 8th International Conference on*, 8-12 Oct 2012: 1&ndash;9.
[https://doi.org/10.1109/eScience.2012.6404482](http:dx.doi.org/10.1109/eScience.2012.6404482)
[[preprint]](http://users.ox.ac.uk/~oerc0033/preprints/why-decay.pdf)

## 2011

K. Belhajjame, C. Goble, S. Soiland-Reyes, D. De Roure. (2011).
**"Fostering Scientific Workflow Preservation through Discovery of Substitute Services,"**
in *E-Science (e-Science), 2011 IEEE 7th International Conference on*: 97&ndash;104.
[https://doi.org/10.1109/eScience.2011.22](https://doi.org/10.1109/eScience.2011.22)

Paolo Missier, Carole Goble. (2011).
**Workflows to open provenance graphs, round-trip.**
In: *Future Generation Computer Systems*, 27(6): 812&ndash;819. [https://doi.org/10.1016/j.future.2010.10.012](https://doi.org/10.1016/j.future.2010.10.012)

## 2010

Paolo Missier, Satya Sahoo, Jun Zhao, Carole Goble, Amit Sheth. (2010)
**"Janus: from Workflows to Semantic Provenance and Linked Open Data,"**
in *Provenance and Annotation of Data and Processes, Third International Provenance and Annotation Workshop, (IPAW'10)*, 15&ndash;16 Jun 2010. Springer, Berlin: 129&ndash;141.  [https://doi.org/10.1007/978-3-642-17819-1_16](https://doi.org/10.1007/978-3-642-17819-1_16)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:108342)

Paolo Missier, Stian Soiland-Reyes, Stuart Owen, Wei Tan, Alexandra Nenadic, Ian Dunlop, Alan Williams, Tom Oinn, Carole Goble. (2010), **"Taverna, reloaded,"**
in *Scientific and Statistical Database Management, 22nd International Conference (SSDBM 2010)*, 30 Jun&ndash;02 Jul 2010, Springer, Berlin: 471&ndash;481. [https://doi.org/10.1007/978-3-642-13818-8_33](https://doi.org/10.1007/978-3-642-13818-8_33)

S. Moeller, H. Krabbenhoeft, A. Tille, D. Paleino, A. Williams, K. Wolstencroft, C. Goble, C. Plessy. (2010).
 **"Community-driven computational biology with Debian and Taverna,"**
in *BOSC 2010*.

Wei Tan, Ravi Madduri, Alexandra Nenadic, Stian Soiland-Reyes, Dinanth Sulakhe, Ian Foster, Carole A. Goble. (2010).
**CaGrid Workflow Toolkit: A Taverna based workflow tool for cancer grid.**
In: *BMC Bioinformatics*, 11: 542.
[https://doi.org/10.1186/1471-2105-11-542](https://doi.org/10.1186/1471-2105-11-542)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:108292)

Wei Tan, Paolo Missier, Ian Foster, Ravi Madduri, David De Roure, Carole Goble. (2010).
**A comparison of using Taverna and BPEL in building scientific workflows: the case of caGrid.**
In: *Concurrency and Computation: Practice and Experience*. 22(9): 1098&ndash;1117.
[https://doi.org/10.1002/cpe.1547](https://doi.org/10.1002/cpe.1547)

## 2009

Andrew Gibson, Matthew Gamble, Katy Wolstencroft, Tom Oinn, Carole Goble, Kahlid Belhajjame, Paolo Missier. (2009).
**The data playground: An intuitive workflow specification environment.**
In: *Future Generation Computer Systems*. 25(4): 453&ndash;459.
[https://doi.org/10.1016/j.future.2008.09.009](https://doi.org/10.1016/j.future.2008.09.009)

Jacek Sroka, Jan Hidders, Paolo Missier, Carole Goble. (2009).
**A formal semantics for the Taverna 2 workflow model.**
In: *Journal of Computer and System Sciences*. 76(6): 490&ndash;508.
[https://doi.org/10.1016/j.jcss.2009.11.009](https://doi.org/10.1016/j.jcss.2009.11.009)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:108316)

## 2008

K. Belhajjame, K. Wolstencroft, O. Corcho, T. Oinn, F. Tanoh, A. Williams, C. Goble. (2008).
**"Metadata Management in the Taverna Workflow System,"**
in *Cluster Computing and the Grid, 8th IEEE International Symposium on (CCGRID'08)*, 19-22 May 2008: 651&ndash;656.
[https://doi.org/10.1109/CCGRID.2008.17](https://doi.org/10.1109/CCGRID.2008.17)

Anders Lanz&eacute;n, Tom Oinn. (2008).
**The Taverna Interaction Service: enabling manual interaction in workflows.**
In: *Bioinformatics*. 24(8): 1118&ndash;1120.
[https://doi.org/10.1093/bioinformatics/btn082](https://doi.org/10.1093/bioinformatics/btn082)
[[pdf]](http://bioinformatics.oxfordjournals.org/content/24/8/1118.full.pdf)

Peter Li, Juan I. Castrillo, Giles Velarde, Ingo Wassink, Stian Soiland-Reyes, Stuart Owen, David Withers, Tom Oinn, Matthew Pocock, Carole A. Goble, Stephen G. Oliver, Douglas B. Kell. (2008).
**Performing statistical analyses on quantitative data in Taverna workflows: an example using R and maxdBrowse to identify differentially-expressed genes from microarray data.**
In: *BMC Bioinformatics*. 9: 334.
[https://doi.org/10.1186/1471-2105-9-334](https://doi.org/10.1186/1471-2105-9-334)

K. Maheshwari, J. Montagnat, P. Missier. (2008).
**"Extending Taverna to exploit EGEE Grid resources,"**
in *E-science*.

Paolo Missier, Khalid Belhajjame, Jun Zhao, Carole Goble. (2008).
**"Data lineage model for Taverna workflows with lightweight annotation requirements,"**
in *Provenance and Annotation of Data and Processes, Second International Provenance and Annotation Workshop (IPAW'08)*, Springer, Berlin, 17&ndash;18 Jun 2008: 17&ndash;30.
[https://doi.org/10.1007/978-3-540-89965-5_4](http:dx.doi.org/10.1007/978-3-540-89965-5_4)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:2f37)

Jun Zhao, Carole Goble, Robert Stevens, Danielle Turi. (2008).
**Mining Taverna's semantic web of provenance.**
In: *Concurrency and Computation: Practice and Experience*. 20(5): 463&ndash;472.
[https://doi.org/10.1002/cpe.1231](https://doi.org/10.1002/cpe.1231)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:1f9)

## 2007

David De Roure, Carole Goble, Robert Stevens. (2007).
**"Designing the myExperiment Virtual Research Environment for the Social Sharing of Workflows,"**
in *e-Science and Grid Computing, IEEE International Conference on*, 10-13 December 2007: 603&ndash;610.
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:2h465)
[[eprints]](http://eprints.soton.ac.uk/265838/1/MyExptPart1v7.pdf)

Paul Fisher, Cornelia Hedeler, Kathernine Wolstencroft, Helen Hulme, Harry Noyes, Stephen Kemp, Robert Stevens, Andrew Brass. (2007).
**A systematic strategy for large-scale analysis of genotype phenotype correlations: identification of candidate genes involved in African trypanosomiasis.**
In: *Nucleic Acids Research*. 35(16): 5625&ndash;5633.
[https://doi.org/10.1093/nar/gkm623](https://doi.org/10.1093/nar/gkm623)

Andrew Gibson, Matthew Gamble, Katy Wolstencroft, Tom Oinn, Carole Goble. (2007).
**"The Data Playground: An Intuitive Workflow Specification Environment,"**
in *e-Science and Grid Computing, IEEE International Conference on*, 10&ndash;13 December 2007: 59&ndash;68.
[https://doi.org/10.1109/E-SCIENCE.2007.72](https://doi.org/10.1109/E-SCIENCE.2007.72)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:2f159)

Carole Goble, Katy Wolstencroft, Antoon Goderis, Dunan Hull, Jun Zhao, Pinar Alper, Phillip Lord, Chris Wroe, Khalid Belhajjame, Danielle Turi, Robert Stevens, Tom Oinn, David De Roure.  (2007).
**"Knowledge discovery for biology with Taverna,"**
in *Semantic Web: Revolutionizing Knowledge Discovery in the Life Sciences**, Springer-Verlag, New York: 355&ndash;395.
[https://doi.org/10.1007/978-0-387-48438-9_17](https://doi.org/10.1007/978-0-387-48438-9_17)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:237027)

Peter Li, Tom Oinn, Stian Soiland, Douglas B. Kell. (2007).
**Automated manipulation of systems biology models using libSBML within Taverna workflows.**
In: *Bioinformatics*, 24(2): 287&ndash;289.
[https://doi.org/10.1093/bioinformatics/btm578](https://doi.org/10.1093/bioinformatics/btm578)
[[pdf]](http://bioinformatics.oxfordjournals.org/content/24/2/287.full.pdf)

Daniele Turi, Paolo Missier, Carole Goble, David De Roure, Tom Oinn. (2007). **"Taverna workflows: syntax and semantics,"**
in *e-Science and Grid Computing, IEEE International Conference on*, 10-13 Dec 2007: 441&ndash;448.
[https://doi.org/10.1109/E-SCIENCE.2007.71](https://doi.org/10.1109/E-SCIENCE.2007.71)

Nicholas Walton, Dugan Witherick, Thomas Oinn, Kevin Benson. (2007).
**"Taverna and Workflows in the Virtual Observatory,"**
in *Astronomical Data Analysis Software & Systems {XVII}*.
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:238963)

K. Wolstencroft, P. Alper, D. Hull, C. Wroe, P. Lord, R. Stevens, C. Goble. (2007).
**The myGrid ontology: bioinformatics service discovery**.
In: *International Journal of Bioinformatics Research and Applications (IJBRA)*, 3(3): 303&ndash;325.
[https://doi.org/10.1504/IJBRA.2007.015005](https://doi.org/10.1504/IJBRA.2007.015005)

## 2006

Duncan Hull, Katy Wolstencroft, Robert Stevens, Carole Goble, Matthew R. Pocock, Peter Li, Tom Oinn. (2006).
**Taverna: a tool for building and running workflows of services.**
In: *Nucleic Acids Research*, 34(Web Server issue): 729&ndash;732.
[https://doi.org/10.1093/nar/gkl320](https://doi.org/10.1093/nar/gkl320)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:1h249)

Peter Li, Andrew Brass, John Pinney, Thomas Oinn, Douglas Kell, Carole Goble, C. (2006).
**"Taverna workflows for systems biology,"**
in *International Conference on Systems Biology*.
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:237056)

Tom Oinn, Mark Greenwood, Matthew Addis, M. Nedim Alpdemir, Justin Ferris, Kevin Glover, Carole Goble, Antoon Goderis, Duncan Hull, Darren Marvin, Peter Li, Phillip Lord, Matthew R. Pocock, Martin Senger, Robert Stevens, Anil Wipat, Chris Wroe. (2006).
**Taverna: lessons in creating a workflow environment for the life sciences**.
In: *Concurrency and Computation: Practice and Experience*, 18(10): 1067&ndash;1100.
[https://doi.org/10.1002/cpe.993](https://doi.org/10.1002/cpe.993)

Thomas Oinn, Peter Li, Douglas Kell, Carole Goble, Antoon Goderis, Mark Greenwood, Duncan Hull, Robert Stevens, Danielle Turi, Jun Zhao. (2006). **"Taverna/myGrid: Aligning a Workflow System with the Life Sciences Community"**
 in *Workflows for e-Science, Scientific Workflows for Grids*. Springer-Verlag, London.
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:237055)

## 2005
M. Nedim Alpdemir, Arijit Mukherjee, Norman W. Paton, Alvaro A. A. Fernandes, Paul Watson, Kevin Glover, Chris Greenhalgh, Tom Oinn, Hannah Tipney. (2005).
**"Contextualised Workflow Execution in MyGrid",**
in *Advances in Grid Computing - EGC 2005: European Grid Conference*, 14&ndash;16 Feb 2005: 444&ndash;453.
[https://doi.org/10.1007/11508380_46](https://doi.org/10.1007/11508380_46)
[[researchgate]](https://www.researchgate.net/publication/221335727_Contextualised_Workflow_Execution_in_MyGrid)

S. Egglestone, N. Alpdemir, C. Greenhalgh, A. Mukherjee, I. Roberts. (2005).
**"A portal interface to myGrid workflow technology,"**
in *All Hands Meeting*.

Antoon Goderis, Ulrike Sattler, Phillip Lord, Carole Goble. (2005).
**"Seven Bottlenecks to Workflow Reuse and Repurposing,"**
in *The Semantic Web&mdash;ISWC 2005: 4th International Semantic Web Conference (ISWC 2005)*, 6&ndash;10 Nov 2005; Springer, Berlin: 323&ndash;337.
[https://doi.org/10.1007/11574620_25](https://doi.org/10.1007/11574620_25)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:2h480)

A. Lanzen, S. Grindhaug, T. Oinn, P. Pal. (2005).
**"An Automatic Genome Annotation Pipeline,"**
in *Network Tools and Applications in Biology*.

K. Wolstencroft, T. Oinn, C. Goble, J. Ferris, C. Wroe, P. Lord, K. Glover, R. Stevens. (2005).
**"Panoply of Utilities in Taverna,"**
in *e-Science and Grid Computing, 2005. First International Conference on*: 156&ndash;162.
[https://doi.org/10.1109/E-SCIENCE.2005.65](https://doi.org/10.1109/E-SCIENCE.2005.65)

## 2004
Tom Oinn, Matthew Addis, Justin Ferris, Darren Marvin, Martin Senger, Mark Greenwood, Tim Carver, Kevin Glover, Matthew R. Pocock, Anil Wipat, Peter Li. (2004).
**Taverna: a tool for the composition and enactment of bioinformatics workflows.**
In: *Bioinformatics*, 20(17): 3045&ndash;3054.
[https://doi.org/10.1093/bioinformatics/bth361](https://doi.org/10.1093/bioinformatics/bth361)

N. Sharman, N. Alpdemir, J. Ferris, M. Greenwood, P. Li, C. Wroe. (2004).
**"The myGrid Information Model,"**
in *All Hands Meeting*.

R.D. Stevens, H. J. Tipney, C. J. Wroe, T. M. Oinn, M. Senger, P. W. Lord, C. A. Goble, A. Brass, M. Tassabehji. (2004).
**Exploring Williams-Beuren syndrome using myGrid.**
In: *Bioinformatics*, 20(suppl 1): i303&ndash;310.
[https://doi.org/10.1093/bioinformatics/bth944](https://doi.org/10.1093/bioinformatics/bth944)
[[pdf]](http://bioinformatics.oxfordjournals.org/content/20/suppl_1/i303.full.pdf)

## 2003
Robert D. Stevens, Alan J. Robinson, Carole A. Goble. (2003). **myGrid: personalised bioinformatics on the information grid.**
In: *Bioinformatics*, 19(suppl 1): i302&ndash;304.
[https://doi.org/10.1093/bioinformatics/btg1041](https://doi.org/10.1093/bioinformatics/btg1041)
[[pdf]](http://bioinformatics.oxfordjournals.org/content/19/suppl_1/i302.full.pdf+html)

Jun Zhao, Carol Goble, Mark Greenwood, Chris Wroe, Robert Stevens. (2003).
**"Annotating, linking and browsing provenance logs for e-Science,"**
in *International Semantic Web Conference*.
[[pdf]](http://ceur-ws.org/Vol-83/prov_2.pdf)
