<!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>The smartAPI ecosystem for making web APIs FAIR</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Shima Dastgheib</string-name>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Trish Whetzel</string-name>
          <xref ref-type="aff" rid="aff7">7</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Amrapali Zaveri</string-name>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cyrus Afrasiabi</string-name>
          <xref ref-type="aff" rid="aff8">8</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pedro Assis</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paul Avillach</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kathleen Jagodnik</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gabor Korodi</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marcin Pilarczyk</string-name>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jeff De Pons</string-name>
          <xref ref-type="aff" rid="aff5">5</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stephan Schürer</string-name>
          <xref ref-type="aff" rid="aff10">10</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Raymond Terryn</string-name>
          <xref ref-type="aff" rid="aff10">10</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Verborgh</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Chunlei Wu?</string-name>
          <xref ref-type="aff" rid="aff8">8</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michel Dumontier?</string-name>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Genetics, Stanford University</institution>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Harvard Medical School</institution>
          ,
          <addr-line>Boston, Massachusetts</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>IDLab, Dep. of Electronics and Information Systems, Ghent University - imec</institution>
          ,
          <country country="BE">Belgium</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Icahn School of Medicine at Mount Sinai</institution>
          ,
          <addr-line>New York, New York</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>Institute of Data Science, Maastricht University</institution>
          ,
          <addr-line>Maastricht</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
        <aff id="aff5">
          <label>5</label>
          <institution>Medical College of Wisconsin</institution>
          ,
          <addr-line>Milwaukee, Wisconsin</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff6">
          <label>6</label>
          <institution>Stanford Center for Biomedical Informatics Research, Stanford University</institution>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff7">
          <label>7</label>
          <institution>T2 Labs</institution>
          ,
          <addr-line>Sunnyvale, CA</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff8">
          <label>8</label>
          <institution>The Scripps Research Institute</institution>
          ,
          <addr-line>CA</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff9">
          <label>9</label>
          <institution>University of Cincinnati</institution>
          ,
          <addr-line>Cincinnati, Ohio</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
        <aff id="aff10">
          <label>10</label>
          <institution>University of Miami, Miller School of Medicine</institution>
          ,
          <addr-line>Florida</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We present the implementation of the smartAPI ecosystem to facilitate the creation of FAIR (Findable, Accessible, Interoperable, Reusable) APIs. The emergence of “big data” has accelerated the growth of API space, and hence an excellent opportunity has now arisen to build an intelligent network of Web APIs that empowers a given application to automatically discover and link suitable APIs. However, even semantically relevant APIs are documented independently and isolated from other APIs, and the API descriptions are minimally shared and reused [1]. smartAPI fills this gap by creating API descriptions that are accessible and reusable, and annotating them with explicit knowledge about the structure and datatypes of the API parameters and responses in order to achieve more findable and interoperable APIs. In our previous work [3], we identified the metadata elements that are crucial to the description of Web APIs and subsequently developed the smartAPI metadata specification available at https://websmartapi.github.io/smartapi_specification using the FAIR principles (Findable, Accessible, Interoperable, Reusable) [2]. In this paper, we present the implementation of the smartAPI ecosystem. We provided a comprehensive review of the challenges related to the existing systems in API life-cycle management in [3]. The Swagger editor12 has the largest and most active community among API editors. It uses the OpenAPI specification13, which defines a standard, language-agnostic interface to HTTP APIs in JSON format. Swagger's auto-completion functionality suggests predefined metadata; however, it does not offer a means to reuse/share annotations from/with other API documents.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>? Corresponding authors
12 https://swagger.io/swagger-editor/
13 https://github.com/OAI/OpenAPI-Specification</p>
      <p>In contrast, smartAPI not only enables authoring and annotating API documents,
but also contributes towards improved visibility, interoperability, and reusability of Web
APIs. Rather than building an API editor from scratch, we extended the Swagger editor
to fulfill the smartAPI objectives (Section 2).</p>
    </sec>
    <sec id="sec-2">
      <title>2 Implementation</title>
      <p>14 http://smart-api.info/registry/
15 http://smart-api.info/api/metadata/all
smartAPI ecosystem
Swagger editor, by suggesting not only the list of predefined metadata and values,
but also the values retrieved from the indexed API documents previously created and
saved in the registry, along with the usage frequency. The conformance level (Required,
Recommended, or Optional) of the suggested metadata is also provided (Figure 1).
Semantic annotation of API description. To annotate the parameterValueType and
responseDataType metadata elements, the auto-suggestion list also includes persistent
semantic URIs from identifiers.org, which enables the referencing of data for the
scientific community. While it is possible to extend the semantic annotation to other
metadata elements, we have focused on the API’s parameters and responses, which can
be considered as the inputs and outputs of the API, respectively.</p>
      <p>i Semantic annotation of API parameters is done by annotating parameterValueType
with semantic identifiers. We used Elasticsearch to build a suggestion service that
takes user search terms from the editor (e.g. hgnc), and uses HTTP requests to GET
the list of matching identifiers (e.g. http://identifiers.org/hgnc.symbol).
As shown in Figure 2a, this list is appended to the auto-suggestion list retrieved from
the previously used identifiers.
ii Semantic annotation of API responses is done by annotating responseDataType. We
developed the smartAPI profiler, a web application for automatic annotation of web
services. We integrated the profiler within the editor. Adding the responseDataType
metadata for a specific operation triggers the profiler (Figure 3), which then asks the
user to enter example API response data (e.g. http://mygene.info/v3/gene/
1017). This response data is then recursively traversed to provide a keypath/value
pair where the keypath consists of one or more labels concatenated together and the
value is either a single value or list of strings. The resource annotation is provided by
comparing the keypath labels to resource names and synonyms from identifiers.
org. In cases where a match is not found, an example value for the keypath is then
compared against resource identifier patterns from identifiers.org, and resulting
matches are displayed as suggested annotations. The user may also add his own
resource annotation if one does not exist. The annotated API response data is stored
in the responseDataType element as an array of YAML objects (Figure 2b).
Provide recommendations. The smartAPI editor scans the API document and provides
a list of ‘Recommended’ and ‘Optional’ metadata to improve the API interoperability.</p>
      <p>We developed a searchable API registry14 to store, index, and view API documents.
An API document can be published in the registry directly from the smartAPI editor.
The smartAPI registry provides faceted search and displays the list of published APIs
along with some details, including the lists of their input/output semantic annotations.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Conclusion and Future Work</title>
      <p>The smartAPI ecosystem aims to make Web APIs FAIR, through development of (i) a
specification and an editor making API descriptions more Reusable and Accessible, (ii)
semantic annotation tools for making APIs more Interoperable, and (iii) a searchable
registry for publishing and indexing API descriptions, to achieve more Findable and
Reusable APIs. As the next steps, we will implement smartAPI compliant with openAPI13</p>
      <p>(b) responseDataType is automatically
anno(a) identifiers.org URIs are suggested to semanti- tated by the profiler within the editor (Fig. 3).
cally annotate parameterValueType.
version 3. Moreover, smartAPI will leverage JSON-LD to provide semantically annotated
content that can be treated as Linked Data (http://hdl.handle.net/10421/7478).
4</p>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgments</title>
      <p>The smartAPI pilot project was funded as a supplement to CEDAR (U41HG000131521).
MyGene.info and MyVariant.info are supported by U01HG008473 (from NHGRI).
The LINCS Data Portal is supported by grant U54HL127624 awarded by the National
Heart, Lung, and Blood Institute through funds provided by the trans-NIH LINCS
Program http://www.lincsproject.org/ and the trans-NIH Big Data to Knowledge
(BD2K) initiative https://commonfund.nih.gov/bd2k.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dumontier</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A Web API ecosystem through feature-based reuse</article-title>
          .
          <source>arXiv preprint arXiv:1609.07108</source>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Wilkinson</surname>
            ,
            <given-names>M.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dumontier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aalbersberg</surname>
            ,
            <given-names>I.J.</given-names>
          </string-name>
          , et al.:
          <article-title>The FAIR Guiding Principles for scientific data management and stewardship</article-title>
          .
          <source>Scientific Data</source>
          <volume>2</volume>
          (
          <year>2016</year>
          ), http://www.nature. com/articles/sdata201618
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Zaveri</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dastgheib</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whetzel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Avillach</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Korodi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Terryn</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jagodnik</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Assis</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , et al.:
          <article-title>smartAPI: Towards a More Intelligent Network of Web APIs</article-title>
          . In: European Semantic Web Conference. pp.
          <fpage>154</fpage>
          -
          <lpage>169</lpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>