<!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>Building a Knowledge Graph for Products and Solutions in the Automation Industry</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thorsten Liebig</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Maisenbacher</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Opitz</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan R. Seyler</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gunther Sudra</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jens Wissmann</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Festo AG &amp; Co. KG</institution>
          ,
          <addr-line>Ruiter Str. 82, 73734 Esslingen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>derivo GmbH</institution>
          ,
          <addr-line>Munchner Str. 1, 89073 Ulm</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper reports on an ongoing Knowledge Graph generation project at the industrial automation company Festo. The project aims at establishing a well de ned and easily traceable extract, transform, load (ETL) process of technical data on automation products into Festo's semantic data platform (FSP) to serve complex con guration tasks. Starting with a brief illustration of the data sources and requirements we describe a staged Knowledge Graph generation process that draws on common data extraction techniques as well as on speci c semantic transformation methods such as the mapping framework R2RML or ontology reasoning. We will report on the project status as well as discuss our design decisions towards a reusable FSP Knowledge Graph data ingestion process.</p>
      </abstract>
      <kwd-group>
        <kwd>Knowledge Graph</kwd>
        <kwd>R2RML</kwd>
        <kwd>ontology reasoning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Festo is a multinational industrial control and automation company based in
Germany. The Festo Semantic Platform (FSP ) is a major initiative at Festo to
create and provide a Knowledge Graph and reasoning-based services about
products and solutions for Festo's core business: factory automation. For instance,
tasks such as the computation of compatibility of product components within
electrical drive trains is provided by the FSP infrastructure using ontology
reasoning and SPARQL querying [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
1.1
      </p>
    </sec>
    <sec id="sec-2">
      <title>Current Solution and its Challenges</title>
      <p>Our current solution is structured as an ETL process. We use this approach as
our data undergo a series of sequential processing and re nement steps that
include materialisation of reasoning results and addition of expert data before the
Copyright ©2019 for this paper by its authors. Use permitted under
Creative Commons License Attribution 4.0 International (CC BY 4.0).</p>
      <p>
        nal result is delivered. Ontology based data access (OBDA) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is currently not
our focus but might complement our approach in future, e.g. for initial database
exploration. Although our processing is performed stepwise, the logic of the FSP
is currently implemented as a monolithic Java application. The application uses
SQL to retrieve data from relational databases, Java code to classify the data
and to create unique identi ers (IRIs), and the OWL API [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] to transform the
results into a Knowledge Graph so that it conforms to its respective ontology
schema. Experiences with this ETL solution within the last two years have
revealed drawbacks with respect to source data changes and maintainability of
the transformation logic that caused signi cant data analysis e orts for the FSP
team. The current solution is di cult to debug, as it is hard to identify whether
a Knowledge Graph change or error is caused by a source data update, a bug
in the encoding of the data enrichment or transformation logic, or a aw in the
ontology schema. Furthermore, the monolithic design is not easy to understand
and to maintain since it consists of multiple processing tasks that are composed
into one piece of code.
      </p>
      <p>To better deal with this issues and to establish a well de ned Knowledge
Graph ETL process, Festo has recently started an initiative to improve the
Knowledge Graph generation. The following list summarizes the requirements
for the FSP Knowledge Graph generation pipeline currently in progress:
Change detection and propagation: The FSP services rely on data that is
typically distributed over various source databases that are managed by
processes that vary in their level of reliability and their update cycles. In the
general use case of technical product data, the ETL process has to integrate
data sources of di erent quality. There is well maintained data from SAP
about products that have reached a certain development maturity or are
already on sale. In addition there is data about upcoming products from a
database maintained by product development. Data in the latter database
may change without any traceable history or noti cation of any of its data
consumers. Therefore, it's a key requirement for our Knowledge Graph
generation pipeline to incorporate a data change detection and tracing
mechanisms that can detect data changes as early as possible in the data sources
to support Knowledge Graph debugging.</p>
      <p>Tracking and logging: The FSP Knowledge Graph generation should follow a
step wise processing pipeline determined by its functional demands and with
a clear speci cation of its processing blocks and data interfaces. Furthermore,
each of the processing blocks has to report about its outcome, i.e., whether
it has terminated successfully, and provide statistics on the results. Ideally
there is a test and evaluation step after each of the processing blocks that
checks for unexpected results. All the reporting should be accessible in a way
that supports building a dashboard that allows to operate and monitor the
ETL process to discover potential problems as early as possible.
Declarative approach: Since the FSP is committed to Semantic Technologies,
the ETL logic should be as declarative as possible instead of being buried
somewhere in program code. In other words, we prefer to have data classi
cation done by ontological rules and reasoning as well as data transformation
based on mapping rules rather than by procedures, table functions, etc.
Based on standards: Whenever possible the Knowledge Graph generation
pipeline should employ standards that have shown to work in industry, are
widely adapted in the community and for which tools and engines are
available. This refers in particular to the data classi cation and transformation
part. Since the FSP already uses OWL 2 RL reasoning and SWRL, the
ETL process should adapt to this fragment and syntax formats. For the
transformation part, we plan to evaluate mappings and tools from relational
database tables to RDF datasets such as R2RML or RML.
2</p>
      <sec id="sec-2-1">
        <title>Data Processing Pipeline</title>
        <p>Our target data processing pipeline consists of several processing stages that are
performed on a microservice-oriented architecture as shown in Figure 1. In the
following we describe the stages of this process.</p>
        <p>SQL</p>
        <p>SQL + Java (or the like)</p>
        <p>The pipeline is in charge of transforming product data as well as data on
complex automation systems into a Knowledge Graph for a given ontology schema.
A typical product in the product domain is an electric axis. An axis can move,
push, or press a work-piece. An axis furthermore is driven by a motor which in
turn is actuated by a controller. The whole chain from axis to controller is called
a drive train. It also incorporates a mounting kit that allows to mount the motor
to the axis and optionally a gear. The ESBF axis3 family is a such a product
tho which we refer in our running example in the following.</p>
        <p>Even if the number of products is few in numbers with some thousands the
ETL process to generate a Knowledge Graph of high quality is a business critical
3 https://www.festo.com/cat/en-gb_gb/data/doc_ENGB/PDF/EN/ESBF_EN.PDF
Change Data Capture</p>
        <p>Import Selection</p>
        <p>Mapping
dev DB
SAP</p>
        <p>Importing
component
data from
relational</p>
        <p>DBs</p>
        <p>Import
DB</p>
        <p>Selection
of
component data
(type and
time)</p>
        <p>IDgeneration</p>
        <p>Assigning
attributes</p>
        <p>Inserting
relations
DB
FSPIDs
ontology
schema
(R2)RML</p>
        <p>Component
ontology</p>
        <p>Enrichment
classifica</p>
        <p>tion
RDF/OWL
element since it produces the source data of subsequent semantic processing
steps. As an example, based on the basic products and data about technical
compatibility we compute all nearly 100 million technically valid drive trains.
2.1</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Change Data Capture</title>
      <p>Due to the fact that one of our main data sources is an un-revisioned database,
we have to deal with new, deleted or updated product data during Knowledge
Graph ingestion. We address this during the Change Data Capture phase.</p>
      <p>
        Technically, this is delivered by a layer of SQL databases, called \Import DB"
in Fig. 1, that are in our sovereignty. We employ type 2 of the Slowly Changing
Dimensions (SCD) method known from Data Warehousing [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] to detect changes
and to historicize the data. SCD type 2 tracks historical data by maintaining
previous versions of source data records by adding so called surrogate keys.
A surrogate key is a unique identi er not derived from the application data
itself but introduced for technical reasons only. For the purpose of tracking data
changes, we generate a composite surrogate key that consists of a product speci c
identi er (ID), and two time stamps (VALID-FROM and VALID-UNTIL). The time
stamps specify the time interval the particular product data record was detected
in the source database. The most current data record of a product is the one
that has the prede ned surrogate high date for VALID-UNTIL (2099-01-01 in
our case).
      </p>
      <p>On request of the processing pipeline the Change Data Capture stage starts
checking for updates in the source databases by comparing with the current data
records in the import database. The latter will receive new rows for any detected
change to re ect the historical state of the source database.</p>
      <p>ID VALID-FROM
1 2019-01-08
1 2019-02-10
2 2019-01-01
3 2019-01-01</p>
      <p>VALID-UNTIL TYPECODE
2019-02-09 ESBF-BS-32-%%-5P
2099-01-01 ESBF-BS-32-%%-5P
2099-01-01 ESBF-LS-32-%%-2.5P
2099-01-01 ESBF-LS-32-%%-2.5P-S1</p>
      <p>MAX VELOC MAX LOAD ACCUR
0.55 100.0 0.02
0.55 100.0 0.01
0.05 60.0 0.05
0.05 60.0 0.05
Table 1 depicts an example of our import database for axes. It contains some
sample axes of the ESBF family and a fraction of its technical data. For the
axis ESBF-BS-32-%%-5P (with ID 1) the import database has two entries which
account for a data update. More precisely, the axis accuracy (last column labeled
ACCUR) changed on February 10th to the new value \0.01". The corresponding
row represents the current valid data record for this axis since it holds the
prede ned surrogate high date in VALID-UNTIL.</p>
      <p>In addition to capturing data changes by applying the SCD method, the
import database allows us to presort the data. As a result, the import database
follows the design principle, that every table corresponds to a product category
that is also represented by a class in our ontology schema about drive trains.
Therefore, every row in the table is designed with the intention to represent
an individual with its technical data properties in the Knowledge Graph. Other
tables represent information about relationships between individuals.</p>
      <p>To this end, the import database serves two main purposes. It allows to track
changes in our source data on the one hand, and on the other hand it makes
the translation to a Knowledge Graph easier since it's a step towards a graph of
individuals and relationships.
2.2</p>
    </sec>
    <sec id="sec-4">
      <title>Import Selection</title>
      <p>The main task of this stage is to select product data from the import database
and to add unique identi ers to this data in preparation for a mapping into a
Knowledge Graph format.</p>
      <p>When considering an initial full load, this stage selects the most current
records from the import database. These records are then aggregated into tables
such that these tables roughly correspond to product classes of the ontology
schema. In the domain of electric drive trains these are axis, mounting kit, gear,
motor, or controller plus accessories etc. Due to the history of data changes in the
import database of the previous step, the ETL process can also select previous
data versions of particular products. For instance, it allows to select the latest
data for all products except for axes for which we can choose to have data from a
particular point in time. As mentioned above, this is key to generate reasonable
Knowledge Graphs from data with varying level of maturity.</p>
      <p>ID TYPECODE
A000576 ESBF-BS-32-%%-5P
A000628 ESBF-LS-32-%%-2.5P
A000629 ESBF-LS-32-%%-2.5P-S1</p>
      <p>MAX VELOC MAX LOAD ACCUR
0.55 100.0 0.01
0.05 60.0 0.05
0.05 60.0 0.05</p>
      <p>For each of these domain objects a unique identi er is required. Such an
identi er is important since Knowledge Graphs need a key to distinguish instances
from each other. The management of identi ers is provided by an FSP service.
For electric drives the FIDGET (Festo ID Generator) service is the central
authority for looking up an existing or generating a new identi er. Typically, an
identi er is computed from a set of technical characteristics (basic products) or
its components in case of a complex system (e.g. a 3D portal). To facilitate
debugging the FIDGET service keeps its identi er constant over time. Therefore,
we can easily compare Knowledge Graphs generated at di erent times to check
for changes on component level. Table 2 depicts an import selection from the
import database with the latest technical data and identi ers obtained from the
ID service.
The mapping step involves the transformation of relational data into instances
of the Knowledge Graph, instance attributes and relations between those
instances. The target format for the FSP component ontology is any valid syntax
speci ed by W3C for RDF or OWL. The mapping step is deliberately designed
to be accomplished by a pure declarative transformation not incorporating any
procedural data manipulation parts. This is possible because of the preceding
import selection step, that has aggregated and aligned the source data
appropriately as well as added unique identi ers suitable to serve as IRIs. As a result,
this step can be carried out by a R2RML mapping speci cation executed by an
R2RML engine. This allows to purely draw on W3C's R2RML which hopefully
provides exibility in the selection of tools and engines to choose the optimal
deployment option with respect to performance, data load, etc.</p>
      <p>The following exemplary R2RML mapping shows how technical data is
transformed into a RDF-based Knowledge Graph:
&lt;#TriplesMap1&gt;
rr:logicalTable [ rr:tableName "import-selection" ];
rr:subjectMap [
rr:template "http://www.festo.com/edrive#{ID}";
rr:class fsp:Axis;];
rr:predicateObjectMap [
rr:predicate rdfs:label ;
rr:objectMap [ rr:column "TYPECODE" ]; ];
rr:predicateObjectMap [
rr:predicate fsp:max-velocity ;
rr:objectMap [ rr:column "MAX_VELOC"; rr:datatype xsd:double ]; ];
rr:predicateObjectMap [
rr:predicate fsp:max-loading ;
rr:objectMap [ rr:column "MAX_LOAD"; rr:datatype xsd:double ]; ];
rr:predicateObjectMap [
rr:predicate fsp:repetition-accuracy ;
rr:objectMap [ rr:column "ACCUR"; rr:datatype xsd:double ]; ].
&lt;#TriplesMap2&gt;
rr:logicalTable [ rr:sqlQuery
"""SELECT ID FROM import-selection</p>
      <p>WHERE REGEXP_LIKE(TYPECODE, .*-S1.* ) = 1 """ ];
rr:subjectMap [ rr:template "http://www.festo.com/edrive#{ID}"; ];
rr:predicateObjectMap [
rr:predicate rdf:type;
rr:objectMap [ rr:template "http://www.festo.com/edrive#IP65" ]; ].</p>
      <p>The rst part of the mapping simply associates a label as well as
technical data to a Knowledge Graph instance that is identi ed by an IRI compiled
from the given identi er. The second part is an example of a typecode based
instance classi cation. The latter mapping checks for a particular typecode
fragment (\S1") that indicates a particular protection level (IP65: dust and water
protected). The typecode chart for ESBF axes is shown in Fig. 2.</p>
      <p>All Festo products are classi ed according to typecodes. Not all of these are
relevant within the applications supported by the FSP Knowledge Graph. The
R2RML mapping therefore just takes care of those which are required for later
reasoning tasks.</p>
      <p>
        In a brief analysis we evaluated the R2RML resp. RML editors KARMA [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
RML Editor [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and Map-On [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] most notably with respect to mapping
expressivity, maturity, and their license model. It turned out, that most of the editors
seem to do the job in principle. Some provide extensions such as Python
scripting or importing various other data formats that allow much more of what is
required in this step of our Knowledge Graph pipeline. Result of the mapping
in our running example is the following:
fsp:A000576 a fsp:Axis ;
rdfs:label "ESBF-BS-32-%%-5P" ;
fsp:max-velocity "0.55"^^xsd:double ;
fsp:max-loading "100.0"^^xsd:double ;
fsp:repetition-accuracy "0.01"^^xsd:double .
fsp:A000628 a fsp:Axis ;
rdfs:label "ESBF-LS-32-%%-2.5P" ;
fsp:max-velocity "0.05"^^xsd:double ;
fsp:max-loading "60.0"^^xsd:double ;
fsp:repetition-accuracy "0.05"^^xsd:double .
fsp:A000629 a fsp:Axis, fsp:IP65 ;
rdfs:label "ESBF-LS-32-%%-2.5P-S1" ;
fsp:max-velocity "0.05"^^xsd:double ;
fsp:max-loading "60.0"^^xsd:double ;
fsp:repetition-accuracy "0.05"^^xsd:double .
      </p>
      <p>As mentioned above we are interested in applying a standard mapping
approach not making use of non-standard extensions such as procedures etc. Ideally,
we want to specify the business logic fully within the mapping language. Further
processing should either in the previous or following steps. For those cases where
R2RML does not provide enough mapping expressivity we decided to use SWRL
in the post-R2RML step (see next section).</p>
      <p>Although none of the evaluated (R2)RML editors failed for our purpose we
are not using one of them. Instead we are currently add annotations to your
ontology schema that allows us to generate the R2RML mapping above via
transformation from these annotations. The huge advantage of this approach is
that it incorporates this information into the key place of metadata about the
Knowledge Graph, namely the ontology schema.</p>
      <p>The engine should then be able to run the mapping speci cation
independently from front ends in order to be able to execute it from a work ow engine.
2.4</p>
    </sec>
    <sec id="sec-5">
      <title>Data Enrichment</title>
      <p>The goal of the enrichment steps is to enhance the Knowledge Graph by making
implicit information explicitly available with the help of OWL reasoning.</p>
      <p>A key task in this respect is the categorization of Festo components according
to product families or technical characteristics that are relevant for the
subsequent services. Some classi cation tasks are already done at the mapping stage
based on a typecode decomposition with the help of regular expressions (compare
with the protection level IP65 classi cation above). Other categorization tasks
that do not directly relate to a typecode feature. They are handled via OWL
reasoning either based on OWL axioms or SWRL. For instance, components
suitable for food manufacturing have to comply to di erent protection classes
depending on their component type (a controller typically requires a lower
protection class because it is less close to food in comparison to an axis). Another
example relates to information that need to be propagated through the
Knowledge Graph. For instance, the size of a drive train originate from the respective
size of its axis which is automatically derived by an OWL axiom.</p>
      <p>
        After enrichment the result data of the ETL are ready to be used in the core
part of our semantic platform. For example, instance data about axes, motors,
and controllers are combined with background knowledge that is described in
OWL and SWRL. A reasoning step performed by RDFox [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] can than infer
compatibility relationships between the products as sketched in g. 3. A description
of the model and rules is outside the scope of this paper. Some more details are
described in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
3
      </p>
      <sec id="sec-5-1">
        <title>Infrastructure and Continuous Delivery</title>
        <p>
          Our original system was conceived as a set of standalone applications. As system
complexity and availability requirements grow, we need to align our system with
software engineering and continuous delivery [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] practices used at Festo. Further
we anticipate that future projects make it necessary to continuously evolve and
restructure the processing pipeline. The main patterns we follow are introduction
of a micro service architecture and container virtualization.
        </p>
        <p>We use Java as programming language. For micro services there is no xed
framework. However, in our rst e orts we use the OpenAPI 3 standard to
specify our REST interfaces and use Swagger to generate Spring Boot service
stubs. Our codebase is maintained in Git repositories. As build system we use
Maven. Builds are triggered and monitored using JetBrains TeamCity. To
reproduce the system environment we package the artifacts in Docker containers and
use Docker Compose to run multi container applications. Maven artifacts and
Docker images are deployed to the company internal Artifactory repository.</p>
      </sec>
      <sec id="sec-5-2">
        <title>Work ow Control and Monitoring</title>
        <p>To orchestrate the execution of the processing steps and monitor the progress
we need a work ow solution.</p>
        <p>The work ow system should allow automated execution and scheduling of the
execution steps. This includes for example regularly checking the database for
changes and trigger the mapping process. Information of the current state of
processing and failure states should be easily retrievable. Processing state could
for example indicated by means of graph visualization of the work ow. For other
metrics such as number of generated instances of a speci c concept a dashboard
could be helpful.</p>
        <p>We currently consider Apache Air ow4 as a platform. It provides to
programmatically author, schedule and monitor work ows. It provides templates
for common work ow steps such as SQL or REST calls. Custom processing
steps can be implemented in Python.
5</p>
      </sec>
      <sec id="sec-5-3">
        <title>Status and Outlook</title>
        <p>In this work we described our ongoing e ort to re ne the data processing pipeline
of the Festo Semantic Platform. The system is currently used productively at
Festo.</p>
        <p>In our target architecture, the processing pipeline is structured into four
processing phases | change data capture, import selection, mapping and
enrichment. We are in the process of aligning our processing artifacts to this
architecture. For parts of the system we plan to evaluate the technology. We identi ed
(R2)RML as a promising technology and started evaluating tools and
implementations. However, an upfront evaluation of the overall approach remains a
challenge.</p>
        <p>The Festo Semantic Platform will evolve over time as new knowledge
domains are added and further company systems are integrated. In order to gain
more exibility to restructure the processing ow when requirements change we
rework our services as microservices and move to container based application
management. To achieve transparency of the processing we intend to introduce
a work ow control system and monitoring.
4 https://airflow.apache.org/</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Elmer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jrad</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liebig</surname>
          </string-name>
          , T.,
          <string-name>
            <surname>ul Mehdi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Opitz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stau</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weidig</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Ontologies and reasoning to capture product complexity in automation industry</article-title>
          . In: Nikitina,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Song</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Fokoue</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Haase</surname>
          </string-name>
          , P. (eds.)
          <source>Proceedings of the ISWC</source>
          <year>2017</year>
          <article-title>Posters &amp; Demonstrations and Industry Tracks co-located with 16th International Semantic Web Conference (ISWC</article-title>
          <year>2017</year>
          ), Vienna, Austria,
          <source>October 23rd - 25th</source>
          ,
          <year>2017</year>
          .
          <source>CEUR Workshop Proceedings</source>
          , vol.
          <year>1963</year>
          .
          <article-title>CEUR-WS.org (</article-title>
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Heyvaert</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dimou</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mannens</surname>
          </string-name>
          , E.,
          <string-name>
            <surname>de</surname>
            <given-names>Walle</given-names>
          </string-name>
          , R.V.:
          <article-title>Rmleditor: A graph-based mapping editor for linked data mappings</article-title>
          .
          <source>In: Proceedings of the Extended Semantic Web Conference (ESWC</source>
          <year>2016</year>
          ). Heraklion,
          <string-name>
            <surname>Greece</surname>
          </string-name>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Horridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.:</given-names>
          </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>
          ),
          <volume>11</volume>
          {21 (Jan
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Humble</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Farley</surname>
            ,
            <given-names>D.: Continuous</given-names>
          </string-name>
          <string-name>
            <surname>Delivery: Reliable Software Releases Through Build</surname>
            , Test, and
            <given-names>Deployment</given-names>
          </string-name>
          <string-name>
            <surname>Automation</surname>
          </string-name>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Professional</given-names>
          </string-name>
          ,
          <volume>1st</volume>
          <fpage>edn</fpage>
          . (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Kimball</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ross</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>The Data Warehouse Toolkit: The De nitive Guide to Dimensional Modeling</article-title>
          . Wiley Publishing,
          <volume>3rd</volume>
          <fpage>edn</fpage>
          . (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Knoblock</surname>
            ,
            <given-names>C.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Szekely</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ambite</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goel</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muslea</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lerman</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taheriyan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mallick</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Semi-automatically mapping structured sources into the semantic web</article-title>
          .
          <source>In: Proceedings of the Extended Semantic Web Conference (ESWC</source>
          <year>2012</year>
          ). Crete,
          <string-name>
            <surname>Greece</surname>
          </string-name>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kogalovsky</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          :
          <article-title>Ontology-based data access systems</article-title>
          .
          <source>Programming and Computer Software</source>
          <volume>38</volume>
          (
          <issue>4</issue>
          ),
          <volume>167</volume>
          {182 (Jul
          <year>2012</year>
          ). https://doi.org/10.1134/S0361768812040032, https://doi.org/10.1134/ S0361768812040032
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Nenov</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piro</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Motik</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Banerjee</surname>
          </string-name>
          , J.:
          <article-title>Rdfox: A highlyscalable RDF store</article-title>
          . In: Arenas,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Corcho</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Simperl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Strohmaier</surname>
          </string-name>
          , M.,
          <string-name>
            <surname>d'Aquin</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srinivas</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Groth</surname>
            ,
            <given-names>P.T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dumontier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , He in, J.,
          <string-name>
            <surname>Thirunarayan</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Staab</surname>
          </string-name>
          , S. (eds.)
          <source>The Semantic Web - ISWC 2015 - 14th International Semantic Web Conference</source>
          , Bethlehem, PA, USA, October
          <volume>11</volume>
          -
          <issue>15</issue>
          ,
          <year>2015</year>
          , Proceedings,
          <source>Part II. Lecture Notes in Computer Science</source>
          , vol.
          <volume>9367</volume>
          , pp.
          <volume>3</volume>
          {
          <fpage>20</fpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Sicili</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nemirovsk</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nolle</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Map-on: A web-based editor for visual ontology mapping</article-title>
          .
          <source>Semantic Web Journal</source>
          <volume>8</volume>
          (
          <issue>6</issue>
          ),
          <volume>969</volume>
          {
          <fpage>980</fpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>