<!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 essence of functional programming on semantic data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Martin Leinberger</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ralf Lämmel</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Steffen Staab</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute for Web Science and Technologies, University of Koblenz-Landau</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>The Software Languages Team, University of Koblenz-Landau</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Web and Internet Science Research Group, University of Southampton</institution>
          ,
          <addr-line>England</addr-line>
        </aff>
      </contrib-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Programming with knowledge represented in description logics (DL) is
errorprone. Untyped access, e.g., provided by the OWL API [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], does not leverage
static typing which allows for proving the absence of runtime-errors. Mapping
approaches, e.g., described by [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] cannot fully capture the conceptualization of
semantic data. In [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], we present DL, a typed -calculus with constructs for
operating on semantic data. This is achieved by the integration of description
logics into the -calculus for both typing and data access.
      </p>
      <p>We rely on ALCOI as a basic description logic. We assume the possibility
of checking whether axioms follow logically from a knowledge base as well as
class expression queries. Furthermore, we only allow named individuals as query
results to avoid infinitely large result sets.</p>
      <p>Key design principles of DL are to treat (1) concept expressions as types in
the programming language (2) subtype inference by forwarding typing judgments
to the knowledge system as axioms during type checking, (3) typing of queries
to ensure satisfiability and proper result processing, (4) class expression queries
as well as (5) open-world querying in which we treat axioms only as true if they
are true in all models of the knowledge system.</p>
      <p>Runtime semantics are modeled as a small-step operational semantics. As
usual, runtime errors are modeled through stuck states during evaluation. Using
the key design principles, we show that a straightforward extension of a basic
-calculus, is sufficient to achieve a type-safe integration. The only exception
comprises of accessing empty query results.</p>
      <p>While the presented approach shows how a basic integration supporting
subtyping and queries can be achieved, future work focuses on an extended query
language, in particular, a subset of SPARQL, as well as type inference for all
types of DL and polymorphism.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>M.</given-names>
            <surname>Horridge</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Bechhofer</surname>
          </string-name>
          .
          <article-title>The OWL API: A Java API for OWL ontologies</article-title>
          .
          <source>Semantic Web</source>
          ,
          <volume>2</volume>
          (
          <issue>1</issue>
          ):
          <fpage>11</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>A.</given-names>
            <surname>Kalyanpur</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. J.</given-names>
            <surname>Pastor</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Battle</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Padget</surname>
          </string-name>
          .
          <article-title>Automatic Mapping of OWL Ontologies into Java</article-title>
          .
          <source>In Proc. SEKE</source>
          <year>2004</year>
          , pages
          <fpage>98</fpage>
          -
          <lpage>103</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>M.</given-names>
            <surname>Leinberger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lämmel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Staab</surname>
          </string-name>
          .
          <article-title>The essence of functional programming on semantic data</article-title>
          .
          <source>In Proc. ESOP</source>
          <year>2017</year>
          , LNCS. Springer.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>