Title:     References
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.

*The following is a partial list of publications that **reference** the Taverna Workflow Management System (e.g. use or mention Taverna).
See also [publications](/community/publications) and [how to cite Taverna](/community/cite).*

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

## 2018

Marco Viceconti, Simone Bnà, Daniele Tartarini, Stelios Sfakianakis, James Grogan, Dawn Walker, 
Samuel Gamble, Debora Testi, CHIC Project Consortium (2018):
**VPH-HF: A software framework for the execution of complex subject-specific physiology modelling workflows**. 
In: _Journal of Computational Science_ **25**  pp 101-114.
[https://doi.org/10.1016/j.jocs.2018.02.009](https://doi.org/10.1016/j.jocs.2018.02.009)
[[Embargoed author version]](http://eprints.whiterose.ac.uk/128154/)
**No Open Access preprint available?**


## 2017

Magnus Palmblad, Vetle I. Torvik (2017):
**Spatiotemporal analysis of tropical disease research combining Europe PMC and affiliation mapping web services**
In: _Tropical Medicine and Health_ **45**:33.
[https://doi.org/10.1186/s41182-017-0073-6](https://doi.org/10.1186/s41182-017-0073-6)

André Giesler, Myriam Czekala, Björn Hagemeier, Richard Grunzke (2017):
**UniProv: A Flexible Provenance Tracking System for UNICORE**
In: JHPCS 2016: High-Performance Scientific Computing, _Lecture Notes in Computer Science_ **10164** pp 233-242.
[https://doi.org/10.1007/978-3-319-53862-4_20](https://doi.org/10.1007/978-3-319-53862-4_20)
**No Open Access preprint available?**
[[ResearchGate]](https://www.researchgate.net/publication/313841325_UniProv_A_Flexible_Provenance_Tracking_System_for_UNICORE)
[[slides]](http://juser.fz-juelich.de/record/825916/files/JHPCS-UniProv.pdf?version=1)

Markus List, Peter Ebert, Felipe Albrecht (2017):
**Ten Simple Rules for Developing Usable Software in Computational Biology**.
In: _PLoS Computational Biology_ **13**(1): e1005265.
[https://doi.org/10.1371/journal.pcbi.1005265](https://doi.org/10.1371/journal.pcbi.1005265)

Rafael Ferreira da Silva, Rosa Filgueira, Ilia Pietri, Ming Jiang, Rizos Sakellariou, Ewa Deelman (2017):
**A characterization of workflow management systems for extreme-scale applications**.
In: _Future Generation Computer Systems_, available online 16 February 2017.
[https://doi.org/10.1016/j.future.2017.02.026](https://doi.org/10.1016/j.future.2017.02.026)
[[pdf]](http://www.cs.man.ac.uk/~rizos/papers/fgcs17.pdf)

Md. Rezaul Karim, Audrey Michel, Achille Zappa, Pavel Baranov, Ratnesh Sahay,Dietrich Rebholz-Schuhmann (2017):
**Improving data workflow systems with cloud services and use of open data for bioinformatics research**.
In: _Briefings in Bioinformatics_ bbx039. [https://doi.org/10.1093/bib/bbx039](https://doi.org/10.1093/bib/bbx039)


## 2016

Pinar Alper, Khalid Belhajjame, Carole A. Goble. (2016). **Automatic vs Manual Provenance Abstractions: Mind the Gap.**
*2016 workshop on the Theory and Applications of Provenance, TAPP 2016*. [arXiv:1605.06669v1](https://arxiv.org/abs/1605.06669v1) [cs.SE]
[[PDF]](https://www.usenix.org/system/files/conference/tapp16/tapp16-paper-alper.pdf)

Arzu Tugce Guler, Cathelijn J. F. Waaijer, Magnus Palmblad. (2016).
**Scientific workflows for bibliometrics.**
In: *Scientometrics*. **107**(2): 385&ndash;398.
[https://doi.org/10.1007/s11192-016-1885-6](https://doi.org/10.1007/s11192-016-1885-6)


H Munir, A Benjamin, JW Allwood, WB Dunn, S He, GB Nash, HM McGettrick. (2016).
**A1.18 Mesenchymal stem cells lose their immuno-protective effects upon changes in their local microenvironment**
In: _Annals of the Rheumatic Diseases_ 2016 **75**(A8).
[https://doi.org/10.1136/annrheumdis-2016-209124.18](https://doi.org/10.1136/annrheumdis-2016-209124.18)

Bruno F. Bastos, Regina Maria M. Braga, Antonio Tadeu A. Gomes (2016):
**WISP: A pattern-based approach to the interchange of scientific workflow specifications**.
In: _Concurrency and Computation: Practice and Experience_ **29**(2) e3851.
[https://doi.org/10.1002/cpe.3851](https://doi.org/10.1002/cpe.3851)

Jeremy Leipzig (2016):
**A review of bioinformatic pipeline frameworks**.
In: _Briefings in bioinformatics_ (2017) **18**(3): 530-536
[https://doi.org/10.1093/bib/bbw020](https://doi.org/10.1093/bib/bbw020)


## 2015

Johannes Starlinger, Sarah Cohen-Boulakia, Sanjeev Khanna, Susan B. Davidson, Ulf Leser (2015):
**Effective and efficient similarity search in scientific workflow repositories**.
In: _Future Generation Computer Systems_ **56**(C) pp 584--594.
[https://doi.org/10.1016/j.future.2015.06.012](https://doi.org/10.1016/j.future.2015.06.012)
[[researchgate]](https://www.researchgate.net/publication/279830527_Effective_and_Efficient_Similarity_Search_in_Scientific_Workflow_Repositories)


Edward Baker, Ben W. Price, S. D. Rycroft1, Jon Hill, Vincent S. Smith. (2015).
**BioAcoustica: a free and open repository and analysis platform for bioacoustics**
In *Database*  **2015**(bav054).
[https://doi.org/10.1093/database/bav054](https://doi.org/10.1093/database/bav054)

Khalid Belhajjame, Jun Zhao, Daniel Garijo, Matthew Gamble, Kristina Hettne, Ra&uacute;l Palma,
Eleni Mina, Oscar Corcho, Jos&eacute; Manuel G&oacute;mez-P&eacute;rez, Sean Bechhofer,
Graham Klyne, Carole Goble. (2015).
**Using a suite of ontologies for preserving workflow-centric research objects.**
In: *Journal of Web Semantics: Scence, Services and Agents on the World Wide Web*. **32**: 16&ndash;42.
[https://doi.org/10.1016/j.websem.2015.01.003](https://doi.org/10.1016/j.websem.2015.01.003)

Renato De Giovanni, Alan R. Williams, Vera Hernández Ernst, Robert Kulawik, Francisco Quevedo Fernandez,
Alex R. Hardisty. (2015).
**ENM Components: a new set of web service-based workflow components for ecological niche modelling**.
In: *Ecography* **39**(4).
[https://doi.org/10.1111/ecog.01552](https://doi.org/10.1111/ecog.01552)

Susana Sánchez Expósito, Pablo Martín, Jose Enrique Ruíz, Lourdes Verdes-Montenegro, Julian Garrido,
Raül Sirvent Pardell, Antonio Ruíz Falcó, Rosa Badia. (2015).
**Web services as building blocks for Science Gateways in Astrophysics**.
At: _7th International Workshop on Science Gateways (IWSG) 2015_
[https://doi.org/10.1109/IWSG.2015.7](https://doi.org/10.1109/IWSG.2015.7)
[[pdf]](http://amiga.iaa.es/FCKeditor/UserFiles/File/BuildingBlocks.pdf)

Sonja Holl, Yassene Mohammed, Olav Zimmermann, Magnus Palmblad. (2015).
**Scientific workflow optimization for improved peptide and protein identification.**
In: *BMC Bioinformatics* **16**(1): 1&ndash;13.
[https://doi.org/10.1186/s12859-015-0714-x](https://doi.org/10.1186/s12859-015-0714-x)

Ji Liu, Esther Pacitti, Patrick Valduriez, Marta Mattoso. (2015).
**A Survey of Data-Intensive Scientific Workflow Management**
In: _Journal of Grid Computing_ **13**: 457&ndash;493.
[https://doi.org/10.1007/s10723-015-9329-8](https://doi.org/10.1007/s10723-015-9329-8)
[[pdf]](http://www-sop.inria.fr/members/Patrick.Valduriez/pmwiki/Patrick/uploads//Publications/jogc2015)
[[researchgate]](https://www.researchgate.net/publication/304292492_A_Survey_on_Scheduling_Workflows_in_Cloud_Environment)

Fabrizio Marozzo, Domenico Talia, Paolo Trunfio. (2015).
**JS4Cloud: script-based workflow programming for scalable data analysis on cloud platforms**
In: *Concurrency and Computation: Practice and Experience*. **27**(17)" 5214&ndash;5237.
[https://doi.org/10.1002/cpe.3563](https://doi.org/10.1002/cpe.3563)
[[researchgate]](https://www.researchgate.net/publication/280971659_JS4Cloud_Script-based_workflow_programming_for_scalable_data_analysis_on_cloud_platforms)

Yassene Mohammed, Christoph H. Borchers. (2015).
**An extensive library of surrogate peptides for all human proteins**
_Journal of Proteomics_ **129**: 93&ndash;97.
[https://doi.org/10.1016/j.jprot.2015.07.025](https://doi.org/10.1016/j.jprot.2015.07.025)
[[researchgate]](https://www.researchgate.net/publication/280602358_An_Extensive_Library_of_Surrogate_Peptides_for_all_Human_Proteins)
**No Open Access preprint available?**

Steve O’Hagan, Douglas B. Kell. (2015).
**Software review: the KNIME workflow environment and its applications in genetic programming and machine learning**.
In: *Genetic Programming and Evolvable Machines* **16**(3) 387&ndash;391.
[https://doi.org/10.1007/s10710-015-9247-3](https://doi.org/10.1007/s10710-015-9247-3)
[[preprint]](http://www.taverna.org.uk/pages/wp-content/uploads/2015/2015-Hagan-Kell-KNIME-software-review.pdf)

## 2014

Pinar Alper, Carole A Goble, Khalid Belhajjame. (2014).
**"On assisting scientific data curation in collection-based dataflows using labels,"**
in *Proceedings of the 8th Workshop on Workflows in Support of Large-Scale Science (WORKS'13)*: 7&ndash;16.
[https://doi.org/10.1145/2534248.2534249](https://doi.org/10.1145/2534248.2534249)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:236944)
[[preprint]](https://www.escholar.manchester.ac.uk/api/datastream?publicationPid=uk-ac-man-scw:236944&datastreamId=SUPPLEMENTARY-1.PDF)

Kristina M. Hettne, Harish Dharuri, Jun Zhao, Katherine Wolstencroft, Khalid Belhajjame,
Stian Soiland-Reyes, Eleni Mina, Mark Thompson, Don Cruickshank, Lourdes Verdes-Montenegro,
Juli&aacute;n Garrido, David De Roure, &Oacute;scar Corcho, Graham Klyne, Reinout van Schouwen,
Peter A. C. 't Hoen, Sean Bechhofer, Carole A. Goble, Marco Roos. (2014).
**Structuring research methods and data with the research object model: genomics workflows as a case study.**
In: *Journal of Biomedical Semantics* **5**: 41.
[https://doi.org/10.1186/2041-1480-5-41](https://doi.org/10.1186/2041-1480-5-41)

Cherian Mathew, Anton G&uuml;ntsch, Matthias Obst, Saverio Vicario, Robert Haines, Alan R. Williams,
Yde de Jong, Carole Goble. (2014).
**A semi-automated workflow for biodiversity data retrieval, cleaning, and quality control.**
In: *Biodiversity Data Journal*, **2**: e4221. [https://doi.org/10.3897/BDJ.2.e4221](https://doi.org/10.3897/BDJ.2.e4221)

Kevin R. Page, Ra&uacute;l Palma, Piotr Ho&#322;ubowicz, Graham Klyne, Stian Soiland-Reyes,
Daniel Garijo, Khalid Belhajjame, and Rudolf Mayer. (2014).
**"Research Objects for Audio Processing: Capturing Semantics for Reproducibility,"**
in *53rd Audio Engineering Society International Conference on Semantic Audio (January 2014)*.
[[Proceedings]](http://www.aes.org/e-lib/browse.cfm?elib=17116)
[[Preprint]](https://www.escholar.manchester.ac.uk/api/datastream?publicationPid=uk-ac-man-scw:213117&datastreamId=SUPPLEMENTARY-1.PDF)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:213117)

Rutger Aldo Vos, Jordan Valkov Biserkov, Bachir Balech, Niall Beard, Matthew Blissett,
Christian Brenninkmeijer, Tom van Dooren, David Eades, George Gosline, Quentin John Groom,
Thomas D. Hamann, Hannes Hettling, Robert Hoehndorf, Ayco Holleman, Peter Hovenkamp,
Patricia Kelbert, David King, Don Kirkup, Youri Lammers, Thibaut DeMeulemeester, Daniel Mietchen,
Jeremy A. Miller, Ross Mounce, Nicola Nicolson, Rod Page, Aleksandra Pawlik, Serrano Pereira,
Lyubomir Penev, Kevin Richards, Guido Sautter, David Peter Shorthouse, Marko T&auml;htinen,
Claus Weiland, Alan R. Williams, Soraya Sierra. (2014).
**Enriched biodiversity data as a resource and service**.
In: *Biodiversity Data Journal*, 2: e1125.
[https://doi.org/10.3897/BDJ.2.e1125](https://doi.org/10.3897/BDJ.2.e1125)

Ahmet Yildiz, Erkan Dilaveroglu, Ilhami Visne, Bilal G&uuml;nay, Emrah Sefer, Andreas Weinhausel,
Frank Rattay, Carole A Goble, Ram Vinay Pandey, Albert Kriegner. (2014).
**BIFI: a Taverna plugin for a simplified and user-friendly workflow platform.**
In: *BMC Research Notes*, **7**: 740.
[https://doi.org/10.1186/1756-0500-7-740](https://doi.org/10.1186/1756-0500-7-740)

Abraham Nieva de la Hidalga, Alex Hardisty, Andrew Jones (2014):
**SCRAM–CK: applying a collaborative requirements engineering process for designing a web based e-science toolkit**.
In: *Requirements Engineering*, **21**(1) 107&ndash;129.
[https://doi.org/10.1007/s00766-014-0212-0](https://doi.org/10.1007/s00766-014-0212-0)
[[preprint server]](http://orca.cf.ac.uk/65528/)
[[pdf]](http://orca.cf.ac.uk/65528/1/Nieva%20De%20Hidalga-%20SCRAM%E2%80%93CK%20applying%20a%20collaborative%20requirements%20engineering%20process.pdf)


## 2013

Pinar Alper, Khalid Belhajjame, Carole A. Goble, Pinar Karagoz. (2013).
**"Enhancing and abstracting scientific workflow provenance for data publishing,"**
in *Proceedings of the Joint EDBT/ICDT 2013 Workshops (EDBT'13)*, 18&ndash;22 Mar 2013: 313&ndash;318.
[https://doi.org/10.1145/2457317.2457370](https://doi.org/10.1145/2457317.2457370)
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:282297)
[[preprint]](https://www.escholar.manchester.ac.uk/api/datastream?publicationPid=uk-ac-man-scw:282297&datastreamId=SUPPLEMENTARY-1.PDF)

Pinar Alper, Khalid Belhajjame, Carole Goble, Pinar Karagoz. (2013).
**"Small Is Beautiful: Summarizing Scientific Workflows Using Semantic Annotations,"**
in *Big Data (BigData Congress), 2013 IEEE International Congress on*, 27 Jun&ndash;2 July 2013: 318&ndash;325.
[https://doi.org/10.1109/BigData.Congress.2013.49](https://doi.org/10.1109/BigData.Congress.2013.49)
[[pdf]](http://www.computer.org/csdl/proceedings/bigdatacongress/2013/5006/00/5006a318.pdf)

Khalid Belhajjame, Jun Zhao, Daniel Garijo, Aleix Garrido, Stian Soiland-Reyes, Pinar Alper, Oscar Corcho. (2013).
**"A workflow PROV-corpus based on Taverna and Wings."**
in *Proceedings of the Joint EDBT/ICDT 2013 Workshops (EDBT'13)*, 18&ndash;22 Mar 2013: 331&ndash;332.
[https://doi.org/10.1145/2457317.2457376](https://doi.org/10.1145/2457317.2457376)
[[pdf]](http://delicias.dia.fi.upm.es/members/dgarijo/papers/prov-bench-paper.pdf)
[[related website]](https://github.com/provbench/Wf4Ever-PROV)


Daniel Garijo, Pinar Alper, Khalid Belhajjame, Oscar Corcho, Yolanda Gil, Carole Goble. (2013).
**Common motifs in scientific workflows: An empirical analysis.**
In: *Future Generation Computer Systems*, 36: 338-351.
[https://doi.org/10.1016/j.future.2013.09.018](https://doi.org/10.1016/j.future.2013.09.018)
[[preprint]](http://oa.upm.es/21854/1/1-s2_0-S0167739X13001970-main.pdf)

Carole Goble, David De Roure and Sean Bechhofer. (2013).
**"Accelerating Scientists&rsquo; Knowledge Turns."**
in *Communications in Computer and Information Science, Vol 348*.  Springer, Berlin, 8 June 2013: 3&ndash;25.
[https://doi.org/10.1007/978-3-642-37186-8_1](https://doi.org/10.1007/978-3-642-37186-8_1)
[[preprint server]](http://ora.ox.ac.uk/objects/uuid%3A17de32c4-518f-4be6-bf78-1ecd6c761b81)
[[download pdf]](http://ora.ox.ac.uk/objects/uuid:17de32c4-518f-4be6-bf78-1ecd6c761b81/datastreams/ATTACHMENT01).

## 2012

Kahlid Belhajjame, Oscar Corcho, Daniel Garijo, Jun Zhao, Paolo Missier, David Newman,
Ra&uacute;l Palma, Sean Bechhofer, Esteban Garc&iacute;a Cuesta, Jos&eacute;
Manuel G&oacute;mez-P&eacute;rez, Graham Klyne, Kevin Page, Marco Roos, Jos&eacute; Ruiz,
Stian Soiland-Reyes, Lourdes Verdes-Montenegro, David De Roure, Carole Goble. (2012).
**"Workflow-Centric Research Objects: First Class Citizens in Scholarly Discourse,"**
in *Proceedings of Workshop on the Semantic Publishing (SePublica 2012)*, 28 May 2012: 1&ndash;12.
[[escholar]](https://www.escholar.manchester.ac.uk/uk-ac-man-scw:236961)
[[preprint]](https://www.escholar.manchester.ac.uk/api/datastream?publicationPid=uk-ac-man-scw:192020&datastreamId=POST-PEER-REVIEW-NON-PUBLISHERS.PDF)

Kristina Hettne, Stian Soiland-Reyes, Graham Klyne, Kahlid Belhajjame, Matthew Gamble, Sean Bechhofer,
Marco Roos, Oscar Corcho. (2012).
**"Workflow forever: semantic web semantic models and tools for preserving and digitally publishing computational experiments,"**
in *Proceedings of the 4th International Workshop on Semantic Web Applications and Tools for the Life Sciences (SWAT4LS'11)*: 36&ndash;37.
[https://doi.org/10.1145/2166896.2166909](https://doi.org/10.1145/2166896.2166909)

Kevin Page, Ra&uacute;l Palma, Piotr Ho&#322;ubowicz, Graham Klyne, Stian Soiland-Reyes,
Don Cruickshank, Rafael Gonz&aacute;lez Cabero, Esteban Garci&iacute; Cuesta,
David De Roure, Jun Zhao, Jos&eacute; G&oacute;mez-P&eacute;rez. (2012).
**"From workflows to Research Objects: an architecture for preserving the semantics of science,"**
in *Proceedings of the 2nd International Workshop on Linked Science*.
[[pdf]](http://linkedscience.org/wp-content/uploads/2012/05/lisc2012_submission_15.pdf)

Jeroen S. de Bruin, André M. Deelder, Magnus Palmblad. (2012).
**Scientific Workflow Management in Proteomics**
In: *Molecular & Cellular Proteomics* **11**(7):M111.010595
[https://doi.org/10.1074/mcp.M111.010595](https://doi.org/10.1074/mcp.M111.010595)
[pmid:22411703](http://www.ncbi.nlm.nih.gov/pubmed/22411703)
[PMC3394934](http://europepmc.org/articles/PMC3394934)

## 2011

R. Bentley, J. Brooke, A. Csillaghy, D. Fellows, A. Le Blanc, M. Messerotti, D. Perez-Suarez, G. Pierantoni,
M. Soldati. (2011).
**"HELIO: Discovery and Analysis of Data in Heliophysics,"**
in *E-Science (e-Science), 2011 IEEE 7th International Conference on*, 5&ndash;8 Dec 2011: 248&ndash;255.
[https://doi.org/10.1109/eScience.2011.42](https://doi.org/10.1109/eScience.2011.42)

D. De Roure, S. Bechhofer, C. Goble, D. Newman. (2011).
**"Scientific Social Objects: The Social Objects and Multidimensional Network of the myExperiment Website,"**
in *Privacy, Security, Risk and Trust (PASSAT) and 2011 IEEE Third Inernational Conference on Social Computing (SocialCom), 2011 IEEE Third International Conference on (PASSAT/SocialCom 2011)*, 9&ndash;11 Oct 2011: 1398-1402.
[https://doi.org/10.1109/PASSAT/SocialCom.2011.245](https://doi.org/10.1109/PASSAT/SocialCom.2011.245)

David De Roure, Khalid Belhajjame, Paolo Missier, Jos&eacute; Manuel G&oacute;mez-P&eacute;rez,
Ra&uacute;l Palma, Jos&eacute; Enrique Ruiz, Kristina Hettne, Marco Roos, Graham Klyne, Carole Goble. (2011).
**"Towards the Preservation of Scientific Workflows,"**
accepted for *8th International Conference on Preservation of Digital Objects (iPRES 2011)*.
[[pdf]](http://users.ox.ac.uk/~oerc0033/preprints/wfpreservev10.pdf)

Clemens Neudecker, Sven Schlarb, Zeki Mustafa Dogan, Paolo Missier, Shoaib Sufi, Alan Williams,
Katy Wolstencroft. (2011).
**"An experimental workflow development platform for historical document digitisation and analysis,"**
in *Proceedings of the 2011 Workshop on Historical Document Imaging and Processing (HIP'11)*: 161&ndash;168.
[https://doi.org/10.1145/2037342.2037370](https://doi.org/10.1145/2037342.2037370)

## 2010

Carole A. Goble, Jiten Bhagat, Sergejs Aleksejevs, Don Cruickshank, Danius Michaelides, David Newman,
Mark Borkum, Sean Bechhofer, Marco Roos, Peter Li, David De Roure. (2010).
**myExperiment: a repository and social network for the sharing of bioinformatics workflows.**
in *Nucleic Acids Research*, 38(Web Server issue): W677&ndash;W682.
[https://doi.org/10.1093/nar/gkq429](https://doi.org/10.1093/nar/gkq429)

Paolo Missier, Bertram Ludascher, Shawn Bowers, Saumen Dey, Anandarup Sarkar, Biva Shrestha, Ilkay Altintas, Manish Kumar Anand, Carole Goble. (2010).
**"Linking multiple workflow provenance traces for interoperable collaborative science,"**
in *Workflows in Support of Large-Scale Science (WORKS), 2010 5th Workshop on*, 14 Nov 2010: 1&ndash;8.
[https://doi.org/10.1109/WORKS.2010.5671861](https://doi.org/10.1109/WORKS.2010.5671861)
[[pdf]](http://web.cs.ucdavis.edu/~ludaesch/pubs/DataToL-IEEE.pdf)

Paolo Missier, Norman W. Paton, Kahlid Belhajjame. (2010).
**"Fine-grained and efficient lineage querying of collection-based workflow provenance,"**
in *Proceedings of the 13th International Conference on Extending Database Technology (EDBT'10)*: 299&ndash;310.
[https://doi.org/10.1145/1739041.1739079](https://doi.org/10.1145/1739041.1739079)

## 2009

Khalid Belhajjame, Paolo Missier, Carole Goble. (2009).
**"Data Provenance in Scientific Workflows,"**
in *Handbook of Research on Computational Grid Technologies for Life Sciences, Biomedicine, and Healthcare*. Hershey, PA: 46&ndash;59.
[https://doi.org/10.4018/978-1-60566-374-6.ch003](https://doi.org/10.4018/978-1-60566-374-6.ch003)

David De Roure, Carole Goble. (2009).
**"Lessons from myExperiment: Research  Objects for Data Intensive Research,"**
in *eScience Workshop 2009*, 15&ndash;17 Oct 2009.
[[eprint]](http://eprints.ecs.soton.ac.uk/17744/)

David De Roure, Carole Goble. (2009).
**"Lessons from myExperiment: Two insights into emerging e-Research practice,"**
in *UK e-Science All Hands Meeting 2009*, Oxford, UK.
[[eprint]](http://eprints.ecs.soton.ac.uk/17662/)

David De Roure, Carole Goble. (2009).
**"myExperiment: A Web 2.0 Virtual Research Environment for Research using Computation and Services,"**
in *Workshop On Integrating Digital Library Content with Computational Tools and Services at JCDL 2009*, 19 Jun 2009.
[[eprint]](http://eprints.ecs.soton.ac.uk/17607/)

Carole Goble, David De Roure. (2009).
**"The impact of workflow tools on data-centric research,"**
in *Data Intensive Computing: The Fourth Paradigm of Scientific Discovery**: 137&ndash;145.
[[eprint]](http://eprints.ecs.soton.ac.uk/17336/)

W. Tan, K. Chard, D. Sulakhe, R. Madduri, I. Foster, S. Soiland-Reyes, C. Goble. (2009).
**"Scientific Workflows as Services in caGrid: A Taverna and gRAVI Approach,"**
in *Web Services, 2009 IEEE International Conference on (ICWS 2009)*, 6&ndash;10 Jul 2009: 413&ndash;420.
[https://doi.org/10.1109/ICWS.2009.19](https://doi.org/10.1109/ICWS.2009.19)

Wei Tan, Paolo Missier, Ravi Madduri, Ian Foster. (2009).
**"Building Scientific Workflow with Taverna and BPEL: A Comparative Study in caGrid,"**
in *Service-Oriented Computing &mdash; ICSOC 2008 Workshops*. Springer, Berlin: 118&ndash;129.
[https://doi.org/10.1007/978-3-642-01247-1_11](https://doi.org/10.1007/978-3-642-01247-1_11)
[[pdf]](http://www.cs.man.ac.uk/~pmissier/docs/bpel-taverna-wesoa-081219.pdf)

I. Wassink, P. E. van der Vet, K. Wolstencroft, P. B. T. Neerincx, M. Roos, H. Rauwerda, T. M. Breit. (2009).
**"Analysing scientific workflows: why workflows not only connect web services,"**
in *Services &ndash; I, 2009 World Conference on*, 6&ndash;10 Jul 2009: 314&ndash;321.
[https://doi.org/10.1109/SERVICES-I.2009.48](https://doi.org/10.1109/SERVICES-I.2009.48)

Katy Wolstencroft, Paul Fisher, David De Roure, Carole Goble. (2009, November 26).
**"Scientific Workflows,"**
in *Research In a Connected World*, Alex Voss, Elizabeth Vander Meer, David Fergusson (eds.)
[[eBook]](https://www.free-ebooks.net/ebook/Research-in-a-Connected-World)

## 2008

Carole Goble, Paolo Missier, David De Roure. (2008).
**"Scientific workflows,"**
in *McGraw Hill 2009 Yearbook of Science & Technology*, McGraw Hill.
[[eprint]](http://eprints.ecs.soton.ac.uk/16628/) [[pdf]](https://eprints.soton.ac.uk/266628/1/ScientificWorkflows.pdf)

Paolo Missier, Suzanne Embury, Richard Stapenhurst. (2008).
**"Exploiting provenance to make sense of automated decisions in scientific workflows,"**
in *Proceedings of the 2nd International Provenance and Annotation Workshop (IPAW'08)*, 17&ndash;18 Jun 2008, Springer: 174&ndash;185.
[https://doi.org/10.1007/978-3-540-89965-5_19](https://doi.org/10.1007/978-3-540-89965-5_19)
