<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Describing configurations of software experiments as Linked Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Joachim Van Herwegen</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Taelman</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sarven Capadisli</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Verborgh</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Enterprise Information Systems Department, University of Bonn</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>IDLab, Department of Electronics and Information Systems, Ghent University - imec</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Within computer science engineering, research articles often rely on software experiments in order to evaluate contributions. Reproducing such experiments involves setting up software, benchmarks, and test data. Unfortunately, many articles ambiguously refer to software by name only, leaving out crucial details for reproducibility, such as module and dependency version numbers or the configuration of individual components in different setups. To address this, we created the Object-Oriented Components ontology for the semantic description of software components and their configuration. This article discusses the ontology and its application, and demonstrates with a use case how to publish experiments and their software configurations on the Web. In order to enable semantic interlinking between configurations and modules, we published the metadata of all 500,000+ JavaScript libraries on npm as 200,000,000+ RDF triples. Through our work, research articles can refer by URL to fine-grained descriptions of experimental setups. This brings us faster to accurate reproductions of experiments, and facilitates the evaluation of new research contributions with different software configurations. In the future, software could be instantiated automatically based on these descriptions and configurations, reasoning and querying can be applied to software configurations for metaresearch purposes.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>A large number of computer science articles describe experimental software
evaluations, but many of them refer to that software only by name or version number.
This information is insufficient for readers to understand which exact version of the
software, which versions of its dependencies, and which detailed configuration of the
software’s components has obtained the reported results. Therefore, potential users
cannot always mirror the correct software installation that will behave according to
the article’s conclusions. Other researchers might fail to reproduce the results because
of differences in these aspects.</p>
      <p>
        As Claerbout’s Principle [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] explains, “an article about computational science in a
scientific publication is not the scholarship itself, it is merely advertising of the
scholarship. The actual scholarship is the complete software development
environment and the complete set of instructions which generated the figures.” This
stresses the importance of reproducibility, and essentially mandates a detailed
description of the executed experiment, all of the involved artefacts and actors, and
the processing of the retrieved data.
      </p>
      <p>
        Using Linked Data [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] to publish experiment descriptions provides two immediate
benefits: the experimental setup and parts thereof can be identified by IRIs, and their
details can be retrieved by dereferencing those IRIs. Therefore, if research articles
complement their textual explanation of an experiment with the IRI of the full setup,
reproducibility is strongly facilitated. Moreover, the IRIs of the entire experiment or
its parts can be reused in other articles or experiments to unambiguously refer to the
same conditions.
      </p>
      <p>In this article, we focus on the description of software configurations and software
modules, such that an evaluated software setup can be referred to unambiguously by
an IRI.</p>
      <p>This article is structured as follows. In Section 2, we discuss related work.
Section 3 introduces the semantic description of software modules and discusses a
semantic description of software components and configurations. Section 4, describes
a use case where we apply software descriptions to an experimental evaluation.
Finally, we discuss our conclusions and future work in Section 5.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>In this section, we discuss related work on the reproducibility of scientific
experiments in scholarly articles and ontologies for describing these experiments.</p>
      <sec id="sec-2-1">
        <title>2.1. Reproducibility of software experiments</title>
        <p>
          In order to better keep track of experiments and minimize information loss at
CERN, Information Management: A Proposal [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], recommends a system (WWW) to
address questions like “Where is this module used? Who wrote this code? Which
systems depend on this device?”. We contend that the vision to link information
systems in the domain of scientific experiments and scholarly articles is not fully
realized on the Web. Identifiable parts of experiments, workflows, as well as the
articles which refer to them, still predominantly require human intervention and
interpretation, thereby leaving deterministic reproducibility an open problem on the
Web. Our work focuses on improving the state of “black box” science, in particular to
experiments using software written for the Web’s programming language JavaScript.
        </p>
        <p>
          In four-level provenance [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], the authors show that infrastructural, environmental,
workflow and data provenance, are needed to achieve reproducibility of scientific
workflows. The information captured at different levels of quality enables different
levels of reproducibility or repeatability. While our work is conceptually grounded on
the same levels, we describe our concrete work on globally identifiable and semantic
descriptions of software modules and configurations.
        </p>
        <p>
          With the goal of improving the way dataset-based software evaluations are
performed in the Semantic Web, LOD Lab [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] was introduced. It offers a service to
simplify software evaluation against a large amount of Linked Datasets. This was
done because (Semantic Web) experiments are typically done using only a few
datasets, since handling them requires significant manual labor. This service not only
makes it easier for researchers to develop experiments, it also makes it easier for
others to reproduce these experiments, because the manual phase of dataset setup is
simplified or even removed. While reusability of datasets is one aspect of experiment
reproducibility, our work focuses on reusability of software within experiments, and
replication of the environment.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Ontologies and vocabularies for describing experiments</title>
        <p>
          The PROV Ontology [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] is a domain-independent ontology to capture provenance
information about entities, activities, and agents involved in producing data. The
OPMW-PROV Ontology [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] is an ontology for describing abstract and executable
workflows. It extends PROV-O and the P-PLAN Ontology [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] which is designed to
represent scientific processes. The RDF Data Cube Vocabulary [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] enables defining
and publishing multi-dimensional data structures and observations. DDI-RDF
Discovery Vocabulary [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] is a vocabulary for publishing metadata about research
and survey data.
        </p>
        <p>
          Workflow-Centric Research Objects [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] realizes a suite of ontologies with the
Wf4Ever Research Object Model based on empirical analysis of workflow decay and
repair in order to improve scientific workflow preservation requirements. It has the
means to aggregate or bundle resources like workflows, provenance of executions,
publications and datasets. Ontologies for Describing the Context of Scientific
Experiment Processes [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] compliments the Research Objects model with the
TIMBUS Context Model by process preservation.
        </p>
        <p>
          LODFlow [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] proposes the Linked Data Workflow Project Ontology to describe
and plan workflows, tool configurations, and reporting. Tool specifications and their
configurations in LODFlow workflows are described declaratively by a human user
without a prescribed schema. Such descriptions are however interpretive in that any
given tool is subject to having multiple descriptions by different users. In contrast to
the human-driven descriptions, our work both enables and accelerates the generation
of machine-driven Linked Data descriptions of software modules, their components,
as well as their configurations to be uniformly created. Consequently, this makes it
possible to accurately describe software experiments that can be reused and compared
with unambiguously.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Ontology</title>
      <p>To fully describe experiments in RDF, we need a way to link to the specific
software components that were used when running the experiment. As a use case, we
considered the largest ecosystem of the popular JavaScript language: the registry of
the Node Package Manager (npm). We converted the entire npm registry, consisting
of over 500,000 JavaScript packages, to RDF. After conversion, we published the
resulting 200,000,000+ triples through multiple interfaces. We opted for the npm
registry due to it being one of the largest package repositories available and
JavaScript’s close ties to Web technology.</p>
      <p>We also created an ontology to describe how software components can be
configured. That way, we can not only describe all the packages used by the software,
but also how the software itself is configured.</p>
      <sec id="sec-3-1">
        <title>3.1. Software modules</title>
        <p>There are several levels of granularity on which software can be described, going
from a high-level package overview to a low-level description of the actual code. In
descriptions, we can use several of these layers, depending on the context and the
requirements. Drilling down from the top to the bottom, we have the following layers:
a bundle is a container with metadata about the software and its functionality
across different points in time. An example is the N3.js library (https://
linkedsoftwaredependencies.org/bundles/npm/n3).
a module or version is a concrete software package and an implementation of a
bundle. N3.js 0.10.0 is a module.
a component is a specific part of a module that can be called in a certain way
with a certain set of parameters. The N3.js 0.10.0 Parser is a component.</p>
        <p>Bundles and modules are described in the npm dataset. For describing components,
we will use our newly created ontology.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Node Package Manager (npm)</title>
        <p>All npm data is stored in a CouchDB instance with one entry per bundle. This
corresponds to the metadata, manually added by the package developer in a
package.json file, with additional metadata automatically added by the npm
publishing process. To uniquely identify and interlink software components, we
developed a server
(https://github.com/LinkedSoftwareDependencies/npm-extractionserver) that converts the JSON metadata provided by the npm registry to RDF. An
important focus of the conversion process was URI re-use, maximizing the available
links between different resources.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Describing components and their configuration</title>
        <p>
          The Object-Oriented Components ontology (https://
linkedsoftwaredependencies.org/vocabularies/object-oriented) is an ontology for
describing software components and their instantiation in a certain configuration.
Within this ontology, we reuse Fowler’s definition of a software component [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] as a
“glob” of software. The purpose of a component is to encapsulate functionality that
can be reused by other components. The instantiation of a component can require
certain parameters, similar to how object-oriented programming (OOP) languages
allow constructors to have certain arguments. We assume OOP in the broad sense of
the word, which only requires classes, objects and constructor parameters. Fig. 1
shows an overview of the ontology.
        </p>
        <p>We define oo:Component as a subclass of rdfs:Class. The parameters to
construct a component can therefore be defined as an rdfs:Property on a
component. This class structure enables convenient semantic descriptions of
components instantiations through the regular rdf:type predicate. For instance, a
software module representing a certain datasource can be described as
ldfs:Datasource:Hdt rdf:type oo:Class., and a concrete instance is
:myHdtDatasource rdf:type ldfs:Datasource:Hdt. To actually link components
to their modules there is the oo:component predicate, combined with the oo:Module
class.</p>
        <p>Several oo:Component subclasses are defined. An oo:Component can be an
oo:Class, which means that it can be instantiated based on parameters. Each
component can refer to its path within a module using the oo:componentPath
predicate, which can for instance be the package name in Java. All instantiations of
oo:Class instances are an oo:Instance. An oo:Class can also be an
oo:AbstractClass, which does not allow directly instantiating this component type.
Abstract components can be used to define a set of shared parameters in a common
ancestor. Conforming to the RDF semantics, components can have multiple ancestors,
and are indicated using the rdfs:subClassOf predicate.</p>
        <p>The parameters that are used to instantiate an oo:Class to an oo:Instance are of
type oo:Parameter. An oo:Parameter is a subclass of rdfs:Property, which
simplifies its usage as an RDF property. oo:defaultValue allows parameters to have
a default value when no other values have been provided. The oo:uniqueValue
predicate is a flag that can be set to indicate whether the parameter can only have a
single value.
4. Use case: describing a Linked Data Fragments experiment</p>
        <p>In this section, we provide a semantic description of the experiment performed in
a previous research article, as a guiding example on how to create such descriptions
for other evaluations. The intention is that future research articles directly describe
their experimental setup this way, either through HTML with embedded RDFa or as
a reference to an IRI of an external RDF document, using, for example, the ontologies
described in Subsection 2.2.</p>
        <p>
          This experiment we will describe originates from an article on query interfaces [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]
and involves specific software configurations of a Linked Data Fragments (LDF)
client and server. We have semantically described the LDF server module and its 32
components. Instead of the former domain-specific JSON configuration file, the
semantic configuration (https://github.com/LinkedDataFragments/Server.js/blob/
feature-lsd/config/config-example.json) is Linked Data. Furthermore, we provide an
automatically generated semantic description of all concrete installed dependency
versions for both the LDF client and server. This is necessary because, modules
indicate a compatibility range instead of a concrete version.
        </p>
        <p>The LDF experiment can be described using the following workflow
(RDFaannotated):
1. Create 1 virtual machine for the server.
2. Create 1 virtual machine for a cache.
3. Create 60 virtual machines for clients.
4. Copy a generated Berlin SPARQL benchmark \[16\] dataset to the server.
5. Install the server software configuration (https://
linkedsoftwaredependencies.org/raw/ldf-availability-experiment-config.jsonld),
implementing the TPF specification (https://www.hydra-cg.com/spec/latest/
triple-pattern-fragments/), with its dependencies on the server.
6. Install the client software configuration (https://github.com/
LinkedDataFragments/Client.js), implementing the SPARQL 1.1 protocol, with
its dependencies
(https://linkedsoftwaredependencies.org/raw/ldf-availabilityexperiment-client.ttl) on each client.
7. Execute four processes of the Berlin SPARQL benchmark \[16\] with the
client software for each client machine.
8. Record CPU time, RAM usage of each client, the CPU time and RAM usage
of the server, and measure the ingoing and outgoing bandwidth of the cache.
9. Publish the results (http://data.linkeddatafragments.org/benchmark) online.</p>
        <p>An executed workflow corresponding to the abstract experiment workflow above
generates entities based on each activity as performed by various agents. The resulting
observations of the experiment are among other valuable immutable provenance level
data, which plays a vital role in verifying and reproducing the steps that led to the
outcome. Concretely, the conclusions in the article have the resulting data as
provenance, which in turn was generated by applying the steps above.</p>
        <p>Crucially, in the description above, we refer to the exact software configurations by
their IRI, their specific dependency versions, and the specifications they implement.
These serve as further documentation of the provenance. The Object-Oriented
Components ontology captures the low-level wiring between components, enabling
researchers to swap individual algorithms or component settings.</p>
        <p>
          For example, based on the above description, the exact same experiment can be
performed with different client-side algorithms [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] or different server-side
interfaces [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. A common practice to achieve this currently, as done in the
aforementioned works [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ][
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], is to implement modifications in separate code
repository branches. Unfortunately, such branches typically diverge from the main
code tree, and hence cannot easily be evaluated afterwards with later versions of other
components. By implementing them as independent modules instead, they can be
plugged in automatically by minimally altering the declarative experiment
description. This simultaneously records their provenance, and ensures their
sustainability.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>5. Conclusion</title>
      <p>The core idea of the scientific process is standing on the shoulders of giants. This
not only means we should build upon the work of others, but also that we should
enable others to build upon our work. Reproducibility is an essential aspect of this
process. This concept obviously applies to Web research as well—moreover, the Web
is an ideal platform to improve the scientific process as a whole.</p>
      <p>In this article, we introduced an ontology for semantically describing software
components and their configuration. Publishing this information alongside
experimental results is beneficial for the reproduction of experiments, and completes
the provenance of experimental results.</p>
      <p>Through this work, vague textual references to software configurations in works of
research can be replaced with unambiguous URLs. These URLs point to Linked Data
that exactly captures a single software configuration, which in turn also uses URLs to
identify existing software modules. We already made such module URLs and
corresponding descriptions available for all npm modules, which we interconnected
using RDF triples. The same approach can be applied to other software ecosystems,
such as for instance the Maven Central repository of the Java language, the
RubyGems repository for the Ruby language, the Comprehensive Perl Archive
Network (CPAN) repository for the Perl language, or the Python Package Index
(PyPI) for Python. The usage of Linked Data to describe the software and experiments
has the added advantage of linking different descriptions together, which allows the
answering of such questions as “Which experiments made use of this benchmark?”</p>
      <p>
        Semantic description can serve many more roles in addition to identifying and
describing software configurations. Since the descriptions are exact and
machinereadable, an automated dependency injection [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] framework could automatically
instantiate the software based on a configuration URI and wire its dependent
components together. Swapping components in and out, and trying different
configurations, comes down to simply editing the configuration, which can be shared
again as Linked Data. This leverages the power of the Web to simplify the
reproduction of existing experiments and the creation of new ones.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Buckheit</surname>
            ,
            <given-names>J.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Donoho</surname>
            ,
            <given-names>D.L.</given-names>
          </string-name>
          : WaveLab and Reproducible Research. Stanford University, http://www-stat.stanford.edu/~donoho/Reports/1995/wavelab.pdf (
          <year>1995</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Berners-Lee</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Linked Data</article-title>
          . https://www.w3.org/DesignIssues/LinkedData.html (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Berners-Lee</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Information Management: A Proposal</article-title>
          . https:// www.w3.org/History/1989/proposal.html (
          <year>1989</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Banati</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kacsuk</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kozlovszky</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Four level provenance support to achieve portable reproducibility of scientific workflows</article-title>
          .
          <source>In: 38th International Convention on Information and Communication Technology</source>
          ,
          <article-title>Electronics and Microelectronics (MIPRO)</article-title>
          .
          <source>IEEE</source>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Rietveld</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beek</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schlobach</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : LOD Lab:
          <article-title>Experiments at LOD Scale</article-title>
          .
          <source>In: Proceedings of the 14th International Semantic Web Conference</source>
          . pp.
          <fpage>339</fpage>
          -
          <lpage>355</lpage>
          . Springer (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Lebo</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahoo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Prov-O: The</surname>
            <given-names>PROV</given-names>
          </string-name>
          <string-name>
            <surname>Ontology. W3C</surname>
          </string-name>
          , https:// www.w3.org/TR/prov-o/ (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Garijo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gil</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>OPMW-PROV</article-title>
          . http://www.opmw.org/model/OPMW/ (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Garijo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gil</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <string-name>
            <surname>The P-PLAN Ontology</surname>
          </string-name>
          . http://vocab.linkeddata.es/p-plan/ (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Lebo</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahoo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The RDF Data Cube Vocabulary</article-title>
          . W3C, https:// www.w3.org/TR/vocab-data-cube/ (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Bosch</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cyganiak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wackerow</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zapilko</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>DDI-RDF Discovery Vocabulary</article-title>
          . http://rdf-vocabulary.ddialliance.org/discovery.html (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Belhajjame</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garijo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gamble</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hettne</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palma</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mina</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corcho</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gómez-Pérez</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klyne</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goble</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Using a suite of ontologies for preserving workflow-centric research objects</article-title>
          .
          <source>Web Semantics: Science, Services and Agents on the World Wide Web</source>
          .
          <volume>32</volume>
          ,
          <fpage>16</fpage>
          -
          <lpage>42</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Mayer</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miksa</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rauber</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Ontologies for Describing the Context of Scientific Experiment Processes</article-title>
          .
          <source>In: 2014 IEEE 10th International Conference on e-Science. IEEE</source>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Rautenberg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ermilov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marx</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Auer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ngonga</surname>
            <given-names>Ngomo</given-names>
          </string-name>
          , A.-C.:
          <article-title>LODFlow: A Workflow Management System for Linked Data Processing</article-title>
          .
          <source>In: Proceedings of the 11th International Conference on Semantic Systems</source>
          . pp.
          <fpage>137</fpage>
          -
          <lpage>144</lpage>
          . ACM, New York, NY, USA (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Inversion of Control Containers and the Dependency Injection pattern</article-title>
          . https://martinfowler.com/articles/injection.html (
          <year>2004</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hartig</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Meester</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haesendonck</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Vocht</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vander</surname>
            <given-names>Sande</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Cyganiak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Colpaert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Mannens</surname>
          </string-name>
          , E., Van de Walle, R.:
          <article-title>Querying Datasets on the Web with High Availability</article-title>
          .
          <source>In: Proceedings of the 13th International Semantic Web Conference</source>
          . pp.
          <fpage>180</fpage>
          -
          <lpage>196</lpage>
          . Springer (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schultz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>The Berlin SPARQL benchmark</article-title>
          .
          <source>International journal on Semantic Web and information systems. 5</source>
          ,
          <fpage>1</fpage>
          -
          <lpage>24</lpage>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Van Herwegen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mannens</surname>
          </string-name>
          , E., Van de Walle, R.:
          <article-title>Query Execution Optimization for Clients of Triple Pattern Fragments</article-title>
          .
          <source>In: The Semantic Web. Latest Advances and New Domains</source>
          . pp.
          <fpage>302</fpage>
          -
          <lpage>318</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Hartig</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Buil-Aranda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Bindings-Restricted Triple Pattern</surname>
          </string-name>
          <article-title>Fragments</article-title>
          .
          <source>In: Proceedings of the 15th International Conference on Ontologies, DataBases, and Applications of Semantics</source>
          . pp.
          <fpage>762</fpage>
          -
          <lpage>779</lpage>
          . Springer (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>