<!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>Comparing Incomplete Database Instances</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>(Discussion Paper)</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Boris Glavic</string-name>
          <email>bglavic@uic.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giansalvatore Mecca</string-name>
          <email>giansalvatore.mecca@unibas.it</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Renée J. Miller</string-name>
          <email>miller@northeastern.edu</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paolo Papotti</string-name>
          <email>papotti@eurecom.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Donatello Santoro</string-name>
          <email>donatello.santoro@unibas.it</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Enzo Veltri</string-name>
          <email>enzo.veltri@unibas.it</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Università degli Studi della Basilicata (UNIBAS)</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Potenza</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Italy</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>EURECOM</institution>
          ,
          <addr-line>Biot</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Illinois Inst. of Technology</institution>
          ,
          <addr-line>Chigaco, IL</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Northeastern University</institution>
          ,
          <addr-line>Boston, MA</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Comparing incomplete database instances is crucial in various applications, including dataset evolution, evaluating data cleaning solutions, and comparing instances from data exchange systems. We present a framework designed to compute similarity among instances containing labeled null values, even in the absence of primary keys. A notable outcome of our approach is the generation of a mapping between tuples in the instances, which explains the similarity score. Computing the similarity of two incomplete instances is NP-hard in the instance size. To compare instances of realistic size we present an approximate PTIME algorithm that approximates the exact score with an error always smaller than 1% but it significantly speedup the computation up to three orders of magnitude w.r.t. the exact algorithm.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Labelled Nulls</kwd>
        <kwd>Incomplete Databases</kwd>
        <kwd>Instance Similarity</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Organizations use “data lakes” for storing their data in schema-on-read storage systems [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
The reliance on data lakes is driving new techniques for organizing datasets [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ]. In this
setting, an important task is to compare datasets. Comparing instances could have multiple
uses. First, finding datasets that are similar to an already known dataset (e.g., find more census
data or medical records [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ]), even if they do not share the same key values. Second, recover
dataset version history in a data lake where new versions of datasets may be added to the
lake without identifying them as such. Finally, evaluate instances produced by diferent data
exchange and constraint-based data repair algorithms. Measuring how close the result of an
algorithm matches a gold standard solution requires a similarity metric for incomplete databases,
i.e., databases with labeled nulls.
      </p>
      <p>However, comparison of incomplete datasets is dificult: ) in general, we cannot rely on
metadata – such as keys – to determine the correspondence between the tuples of two incomplete</p>
      <sec id="sec-1-1">
        <title>Conference I</title>
      </sec>
      <sec id="sec-1-2">
        <title>Name Year Place Org</title>
        <p>01 VLDB 1975 Framingham VLDB End.
02 VLDB 1976    
03 SIGMOD 1975 San Jose ACM
(a)
(c)</p>
      </sec>
      <sec id="sec-1-3">
        <title>Conference I2</title>
      </sec>
      <sec id="sec-1-4">
        <title>Name</title>
        <p>15  
16 CC&amp;P
17 VLDB
18 VLDB</p>
      </sec>
      <sec id="sec-1-5">
        <title>Year Place Org</title>
        <p>1975    
1980 Montreal  
1976 Brussels VLDB End.
1975 Framingham VLDB End.</p>
      </sec>
      <sec id="sec-1-6">
        <title>Conference I1</title>
      </sec>
      <sec id="sec-1-7">
        <title>Name Year Place Org</title>
        <p>07 SIGMOD 1975 San Jose ACM
08 VLDB   Framingham VLDB End.
09   1976 Brussels IEEE
10 VLDB     VLDB End.</p>
      </sec>
      <sec id="sec-1-8">
        <title>Conference I3</title>
      </sec>
      <sec id="sec-1-9">
        <title>Name</title>
        <p>21 VLDB
22 VLDB
22 2</p>
      </sec>
      <sec id="sec-1-10">
        <title>Year Place Org</title>
        <p>
          1975 Framingham 1
1976 Brussels 1
1975 San Jose ACM
(b)
(d)
instances (key values may be missing); and ) many datasets are inherently incomplete due to
unknown values encoded as nulls in the dataset creation or because the dataset is the result of
a data curation step. For instance, idiosyncratic encodings of incompleteness may have been
replaced with SQL-style nulls [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], a constraint-repair algorithm may have replaced conflicting
values with labeled nulls [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], or outliers may have been replaced with nulls.
        </p>
        <p>
          Data versioning systems provide similar functionality for datasets that version control
systems, like GIT or SVN, provide for files or software. Interest in data versioning is growing
with systems like DataHub [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] and Dolt [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Such systems provide version management features
for datasets. However, they do not support comparing versions of incomplete datasets.
        </p>
        <p>Consider the relational schema T describing database conferences: Conference(Name, Year,
Place, Org). Figure 1() shows an initial instance (). This instance contains missing values
(denoted by  ). In data versioning, nulls are common. As data evolves, not every value of a
tuple may be available. Figures 1(, ) shows two additional versions 1 and 2 of .</p>
        <p>A natural question in data versioning is which instance is closer to an original dataset  and
how diferent are two versions. Similarity of instances can be used to show users how instances
evolve over time by determining the order in which versions were created. Moreover, users may
be interested in obtaining a list of diferences across two instances, e.g., both updated versions
of  contain new tuples (09 and 16), two Null values in  (02) has been updated to “VLDB End.”
(17), etc. The presence of nulls leads to uncertainty about which tuples are updated versions of
which other tuple. For example, tuple 15 can be mapped to 01 or 03; both 09 and 10 can be
mapped to 02.</p>
        <p>
          Empirical Evaluation of Data Cleaning and Integration. Empirical evaluation is important
in data integration and data cleaning [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. ST-Benchmark [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], IQ-Meter [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and iBench [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] are
examples of frameworks for data-exchange evaluation, while BART [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] is an error-generation
tool for data repair. In data cleaning and integration systems difer not just in their runtime
eficiency but also in terms of the quality of the produced results. Thus, empirical evaluation of
such systems requires testing how similar a system-generated solution is to a known expected
solution.
        </p>
        <p>
          Both data integration and cleaning use labeled nulls. In data exchange, labeled nulls are
used to encode incompleteness in a target instance, e.g., when there are attributes in the target
schema that do not have any correspondence to attributes from the source schema [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. In
constraint-based data repair, labeled nulls are used by systems to mark conflicts among values
that require user intervention [
          <xref ref-type="bibr" rid="ref16 ref17 ref18 ref19 ref20 ref21 ref7">16, 7, 17, 18, 19, 20, 21</xref>
          ].
        </p>
        <p>
          Labeled nulls encode incompleteness [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] and turn the instances we need to compare into
representation systems of incomplete databases. For example, in instance 3 in Figure 1(),
labeled nulls 1 and 3 encode the fact that the values for Name and Org are unknown for
tuple 21, but the values must be the same for attribute Org across tuples 21 and 22. When we
compare instances involving these nulls, satisfaction or violation of these constraints must be
taken into consideration.
        </p>
        <p>
          Challenges. The two tasks above are representative examples of applications that require an
efective algorithm for comparing instances that (i) are incomplete and (ii) have no shared key,
i.e., the instances do not have keys or the keys are not consistent across the two instances. All
these settings share a common problem, which is the one of comparing incomplete instances
without keys, or instance-comparison problem [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] for short. This problem is challenging for two
reasons. First, we demonstrate that the instance comparison problem is NP-hard [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Second,
since similarity measurements must be repeated over time in dataset versioning, often with high
frequency, and scalability of the tools is often an evaluation parameter, a crucial requirement is
that the comparison algorithm is fast and scales to large databases [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
        </p>
        <p>
          Recent work for comparing instances considers an easier setting with shared keys and
without null values and, instead, focuses on solving other related problems such as exploring
and summarizing the diferences between instances by identifying transformations that map
one instance into the other [
          <xref ref-type="bibr" rid="ref24 ref25">24, 25</xref>
          ].
        </p>
        <p>
          We formalize in the next section the instance-comparison problem and present some
experiments to show the proposed solution’s scalability and accuracy. A detailed evaluation can be
found in the full paper [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. The Instance Comparison Problem</title>
      <p>Instances with Labeled Nulls. A relational schema R as a finite set {1, . . . , } of relation
symbols, with each  having a fixed arity  ≥ 0. Consider countably infinite domains of
constants (Consts) and labeled nulls (Vars). We will use 0, 1, . . . to denote constants and
0, 1, . . . to denote labeled nulls or nulls for short.</p>
      <p>An instance  = (1, . . . , ) of R consists of finite relations  ⊂ (Consts ∪ Vars) , for
 ∈ [1, ]. We denote by Consts() and Vars() the set of constants and nulls in , respectively.
The active domain of  is adom() = Consts() ∪ Vars().</p>
      <p>We assume the presence of unique tuple identifiers in an instance; by id we denote the tuple
with identifier “ id ” in .</p>
      <p>A cell is a location in  specified by a tuple id/attribute pair id.. We denote by ids() the
set of tuple ids of instance . When comparing two instances  and ′, we will assume that
tuple mapping:
(t1, t4)
(t2, t5)</p>
      <p>Id Name
t4 Va VLDB
t5 Va VLDB
t6 3 ICDE</p>
      <p>Id Name
t4 Va VLDB
t5 Va VLDB
t6 3 ICDE
h’(Conferenceg)
Year Org
1975 VLDB End.
1976 VLDB End.
1984 IEEE
right-to-left
value mapping
hR: Vb à</p>
      <p>VLDB End.</p>
      <p>I Id Name Year Org
t1 N1 VLDB 1975 VLDB End.
t2 N2 VLDB N4 VLDB End.
t3 N3 SIGMOD 1977 ACM
h(Conferencee)</p>
      <p>Id Name Year Org
lveahflLtu-:tNeo1-mràiagpVhapting tt21 VVaa VVLLDDBB 11997765 VVLLDDBB EEnndd..</p>
      <p>N2 à Va t3 Nb SIGMOD 1976 ACM</p>
      <p>N4 à 1976
ids() ∩ ids(′) = ∅.</p>
      <p>A mapping ℎ : adom() → adom(′) such that ∀ ∈ Consts : ℎ() =  is called a
homomorphism if, ∀ ∈  : ℎ() ∈ ′. Two instances are isomorphic, i.e., they represent
the same information, if there exists a bijective homomorphism between  and ′.</p>
      <p>
        Figure 1() shows an instance 3 that contains constants from Consts (for example, “1975”
or “San Jose”) and contains nulls from Vars (1, 2). This might be the result of repairing an
instance of the database that is dirty wrt. the functional dependency (FD): Conference : Name →
Org. Assume the FD identifies two tuples with conflicting values for the Org attribute – say,
“VLDB” and “VLDB End.”. In this case, the repair algorithm uses a labeled null (1) to mark the
conflict so that a human expert solves it using domain knowledge [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. The same applies in
data-exchange where the instance might be the result of mapping a source database into the
target schema T. Some of the mappings leave unspecified values of some attributes introducing
labeled nulls as placeholders for human experts.
      </p>
      <p>The Instance-Comparison Problem. The instance-comparison problem takes as input two
instances  and ′ and outputs the similarity of the two instances, i.e. a value between 0 and 1,
where 0 indicates a total dissimilarity and 1 indicates a total similarity. Intuitively, to compare
two instances we need: 1) a way to map tuples from  and ′ (and vice-versa), i.e. we need to
ifnd tuples in  that match to tuples ′. We call this step instance match; and 2) we need to
compute a score that takes into account tuples that match but also tuples that do not match.</p>
      <p>Fig. 2 shows two instances. We can map tuple 1 to 4 and 2 to 5 by mapping nulls 1 → ,
2 → , and 4 → 1976 for  and  → VLDB End. for ′. Note that this is the best mapping
we could apply. If we map 4 → 1975 and 1, 2 →  then we can map 2 to 4 but we
miss to map 1 and 5. Among, all the possible mappings, we are interested in finding the best
mappings, i.e. the ones that maximize the matches and thus the similarity.</p>
      <p>The similarity similarity(, ′) of  and ′ is defined as: similarity(, ′) = maxM ∈ℳ(score(M )),
where score(M ) takes into account the best mappings. The instance-comparison problem takes
as input instances  and ′ and outputs similarity(, ′).</p>
      <p>Instance Match. To match tuples from two instances  and ′ we first should define how
to match cells among the tuples. A value mapping ℎ for  is a total function adom() →
Vars ∪ Consts such that ℎ() =  for each  ∈ Consts(), i.e., is a mapping that preserves
constants. We use ℎ() to denote the application of value mapping ℎ to the attribute values of a
tuple  and ℎ() to denote the application of ℎ to all tuples in . We do not allow a constant
to be mapped to a diferent constant. For instance, 16 in Fig. 1 is not mapped to any tuple in
instance .</p>
      <p>
        Given two instances  and ′ for the same schema , a tuple mappings m is a subset of
 × ′. This design choice permits to consider not only functional, total mappings – like
homomorphisms – but also non-functional mappings [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. It is clear, that given  and ′ there
could be multiple tuple mappings, i.e. multiple combinations to match tuples from  to tuples in
′. Consider Fig. 2, depending on the tuple mappings configuration (functional, non-functional),
tuple 2 in  could be mapped only to 4, or only to 5, or could be mapped to both 4 and 5 in
′ (in total three possible tuple mappings for 2).
      </p>
      <p>Let  and ′ be two instances over schema . An instance match is a triple M = (ℎ, ℎ, m)
where ℎ is a value mapping for , ℎ is a value mapping for ′, and m is a tuple mapping for 
and ′. An instance match M is a complete match if ∀(1, 2) ∈  : ℎ(1) = ℎ(2). We use
ℳ to denote the set of all complete instance matches for  and ′ since it is clear that there
could be multiple instance matches depending on the tuple mapping configuration.
Match Score. Given an instance match M = (ℎ, ℎ, ), we will define the similarity measure
by assigning scores to each tuple based on what tuples in the other instance it is matched with
by the tuple matching . We first define how to score cells among tuples in match, then we
define how to score the two instances.</p>
      <p>As a null represents a diferent value in each ground instance represented by an instance
with nulls, intuitively, mapping a null to a constant should get a score less than 1 (the score for
matched constants). Furthermore, we should measure the degree of non-injectivity for value
mappings for a null in  (′) and penalize scores for cells which contain nulls with larger degrees
of non-injectivity. This ensures that for isomorphic instances where ℎ and ℎ will be injective
on nulls, there is no penalty, and for non-isomorphic instances either some tuples do not match
or both value mappings are not injective on all nulls. Towards this goal, we define a function
⊓ for a value  in , ′, that measures that level of “non-injectivity” of the value mappings
ℎ, ℎ for . We distinguish the case of a constant from the one of a null. For constants, ⊓ is
always equal to 1 – this captures the fact that constants can only be mapped to themselves and
therefore cannot be the source of non-injectivity. This is due to the mapping of nulls, for which
we distinguish the case of  ∈ Vars(), and  ∈ Vars(′) as shown in Eq.1. Then, the score
for the same attribute  of two tuples  ∈  and ′ ∈ ′ that are in match is defined as shown
in Eq. 2, where we assume a parameter 0 ≤  &lt; 1, which defines the penalty for mapping a
variable to a constant, given as input. Now the score of the two tuples  ∈  and ′ ∈ ′ in
matches is the sum of the scores of each attribute (Eq. 3).</p>
      <p>
        As a tuple matching m may not be injective, we have to decide how to calculate a score
for a tuple based on the tuples it is matched to by  (score(M , )). For that, we define the
image of a tuple according to a tuple mapping m. For a tuple  ∈  we define the image of  as
() = { | (, ) ∈ m}, and for ′ ∈ ′ the image of ′ as (′) = { | (, ′) ∈ m}. We
then calculate the score of a tuple  as the average score for the pairs (, ′) for every tuple ′ in
the image of . (Eq. 4). Each tuple  will be assigned a score between [0, ] where  is the arity
of . To achieve a similarity score in [
        <xref ref-type="bibr" rid="ref1">0, 1</xref>
        ] we will normalize the sum of the tuple scores by the
⊓() =
      </p>
      <p>|{′|ℎ(′) = ℎ()}|
⎪
⎩|{′|ℎ(′) = ℎ()}| if  ∈ Vars(′)
⎧⎪0 if ℎ(.) ̸= ℎ(′.)
⎪
⎪
⎪⎨1
if ., ′. ∈ Consts ∧ . = ′.
if  ∈ Consts
if  ∈ Vars()
⎧1
⎪
⎨</p>
      <p>2
⎪⎪⎪ ⊓(.,′.)
⎩⎪ ⊓(.2×,′.)
if ., ′. ∈ Vars ∧ ℎ(.) = ℎ(′.)
otherwise, with ℎ(.) = ℎ(′.)
score(M , , ′, ) =</p>
      <p>score(M , ) =
score(M , , ′) = ∑︁ score(M , , ′, )
∈
∑︀∈() score(M , , )</p>
      <p>size(())
score(M ) =
∑︀∈ score(M , ) + ∑︀′∈′ score(M , ′)</p>
      <p>size() + size(′)
number of cells in the instance,i.e. size() (Eq. 5).</p>
      <p>Exact and Signature Algorithm. To calculate the similarity(, ′) of two instances  and ′
we need to discover ℳ (the set of all complete instance matches for  and ′) and for each tuple
mappings  ∈ ℳ we need to compute the score and return the  that has the highest score.</p>
      <p>The exact-algorithm works in two steps. First, it builds a set of candidate tuple pairs by looking
for compatible tuples. We say that (, ′) from , ′ are compatible if it is possible to construct
value mappings ℎ, ℎ such that ℎ() = ℎ(′). Then, we combine these candidate tuple pairs
in all possible ways to construct candidate instance matches, compute their scores, and return
the instance match with the highest score.</p>
      <p>The Signature Algorithm is a scalable approximate algorithm, that we show empirically to
often obtain optimal or near optimal results for real use cases.</p>
      <p>The intuition is that finding mappings between tuples sharing the same constant values is
easier than finding mappings between tuples that have no conflicting constant values. To do
that, we introduce the concept of a signature of a tuple , as a positional encoding of some of
the constants in the tuple. Consider for example tuple 5 in Fig. 2: 5 : ⟨, VLDB, 1976, ⟩.
One signature of 5 is: [Name: VLDB, Year: 1975]. We use a greedy algorithm: as soon as it
ifnds a compatible mapping of two tuples based on their signatures, it uses it to construct the
instance match. The intuition is to start with very promising matches, i.e., tuples that share
most constant values, and then move to less promising ones.</p>
      <p>Given a tuple  over schema , we associate with it a number of signatures, i.e. all the possible
signatures that could be generated for . Our search for compatible tuples relies on signatures.
We construct all maximal signatures (i.e. the ones with the highest number of constants) for
tuples in one of the instances – say  – and store them in an appropriate hash-based data
structure, called a signature map. Then, we scan the tuples of the other instance – ′ in our
example – and for each of them consider all of its signatures to find possibly-matching tuples
on the other side. In doing this, we greedily construct our instance match. This allow us to find
(1)
(2)
(3)
(4)
(5)
candidate tuples ′ ∈  ′ that have at least as many constants. To identify candidates with less
constants, we need to reverse the direction of the check, so we execute the same step starting
from  ′ and scanning tuples in  .</p>
      <p>
        We have derived an instance match M that contains signature-based matches, but these
do not cover all possible tuple matches. Consider tuples 2 = ⟨2, VLDB, 4, VLDB End.⟩ and
5 = ⟨, VLDB, 1976, ⟩ in Fig. 2. Despite the two tuples are compatible (they are matched in
Fig. 2), they have no signature-based match. This is due to the diferent positions of the nulls,
that prevent from using maximal signatures to identify the match. Therefore, we complete
the process by adding non-signature-based matches. This step relies on the same idea of the
exact-algorithm in discovering compatible tuples. However, instead of trying all powersets, we
adopt a greedy approach: as soon as an extension of M exists for two compatible tuples,  and ′,
the match is confirmed. Since signature-based matches are typically a majority of the matches
to identify, the number of tuples in the final step of the algorithm is lower than the original size
of  . The pseudocode of both algorithms is presented in the full paper [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Experimental Results and Conclusions</title>
      <p>We evaluate our approach around two questions: 1) what is the signature quality vs. the
exact algorithm? i.e., what is the diference in terms of the computed similarity scores?; 2) can
the signature algorithm scale up to higher instances? i.e., can we run the signature algorithm
on instances with thousands of tuples?</p>
      <p>
        Using the Exact algorithm, we obtain the similarity score of the two instances. We then
compare such a score with the one obtained by using our Signature algorithm. This comparison,
however, is feasible only for very small instances due to the computational complexity of the
Exact algorithm. For settings with bigger instances, we rely on a gold mapping between the two
instances in the comparison obtained programmatically by introducing changes (constants to
nulls, nulls to constants, contants to diferent constants, nulls to diferent nulls) in the instances
a keep track of the changes. (see the full paper for more details [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]). Notice that the gold
mapping could be used to compute the exact score of the two instances. We use three datasets:
Doctors (Doct) is a synthetic dataset with constants and nulls [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]; Bikeshare (Bike) [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] and
GitHub (Git) [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] are real datasets with constants. For each original dataset we generate diferent
scenarios of diferent sizes and changes.
      </p>
      <p>Table 1 reports the statistics about the source and target instances in terms of the number
of tuples (#T), constants (#C), and nulls (#V). We use diferent tuple sizes for each dataset. We
measure the score of Exact (Ex) and Signature (Sig), and the execution time in seconds. When
Ex exceeds a timeout of 8 hours, we use the score computed by constructing the instances. The
highest score diference for Sig algorithm is 0.005. In five cases the diference is zero. In terms of
execution time, the Sig. algorithms is faster up to three orders of magnitude wrt Ex. algorithm.</p>
      <p>Results confirm that Ex can be used only on small instances, while Sig scales up to thousands
of tuples with a low error in the computed score. Results on Git shows that Sig is afected by
the increasing size of the attributes, e.g., we observe two order of magnitude diference between
Doct (5 attributes) and Git (19 attributes) on the same instance sizes, and also the number of
attributes containing nulls afect it.</p>
      <p>Table 2 reports the % of tuple mapping discovered in the two steps of Sig. Almost all
the matches are discovered in the first step, i.e., Signature-Based Matches, and only a small
percentage in the second, exhaustive step. This explains why Sig is much faster than Ex: most
of the mappings are discovered in the first step, drastically reducing the number of tuples in the
expensive check.</p>
      <p>
        An extensive evaluation of our framework can be found in the full paper [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
Conclusions. We presented the problem of comparing incomplete instances in the absence of
shared keys. In addition to an exact algorithm, we presented an eficient approximate instance
comparison algorithm based on signatures. We demonstrated in our experimental evaluation, the
approximate algorithm can compute the similarity of large instances and closely approximates
the similarity computed using the exact algorithm. Our framework provides a flexible, eficient,
and comprehensive addition to the existing data versioning ecosystem, with its capacity to
calculate similarity scores and mappings between incomplete instances.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>E.</given-names>
            <surname>Kandogan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Roth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. M.</given-names>
            <surname>Schwarz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hui</surname>
          </string-name>
          , I. Terrizzano,
          <string-name>
            <given-names>C.</given-names>
            <surname>Christodoulakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <article-title>Labbook: Metadata-driven social collaborative data analysis</article-title>
          ,
          <source>in: IEEE Big Data</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>431</fpage>
          -
          <lpage>440</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A. Y.</given-names>
            <surname>Halevy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Korn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. F.</given-names>
            <surname>Noy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Olston</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Polyzotis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Roy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. E.</given-names>
            <surname>Whang</surname>
          </string-name>
          , Goods:
          <article-title>Organizing google's datasets</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>795</fpage>
          -
          <lpage>806</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z. G.</given-names>
            <surname>Ives</surname>
          </string-name>
          ,
          <article-title>Finding related tables in data lakes for interactive data science</article-title>
          ,
          <source>in: Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>1951</fpage>
          -
          <lpage>1966</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Lapadula</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Solimando</surname>
          </string-name>
          , E. Veltri,
          <article-title>Humanity is overrated. or not. automatic diagnostic suggestions by greg</article-title>
          ,
          <source>ml (extended abstract)</source>
          ,
          <source>Communications in Computer and Information Science</source>
          <volume>909</volume>
          (
          <year>2018</year>
          )
          <fpage>305</fpage>
          -
          <lpage>313</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -00063-9_
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Lapadula</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Solimando</surname>
          </string-name>
          , E. Veltri, Greg, ml
          <article-title>- machine learning for healthcare at a scale</article-title>
          ,
          <source>Health and Technology</source>
          <volume>10</volume>
          (
          <year>2020</year>
          )
          <fpage>1485</fpage>
          -
          <lpage>1495</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s12553-020-00468-9.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A. A.</given-names>
            <surname>Qahtan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. K.</given-names>
            <surname>Elmagarmid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. C.</given-names>
            <surname>Fernandez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ouzzani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <article-title>FAHES: A robust disguised missing values detector</article-title>
          ,
          <source>in: Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery &amp; Data Mining, KDD</source>
          <year>2018</year>
          , London, UK,
          <year>August</year>
          19-
          <issue>23</issue>
          ,
          <year>2018</year>
          , ACM,
          <year>2018</year>
          , pp.
          <fpage>2100</fpage>
          -
          <lpage>2109</lpage>
          . URL: https://doi.org/10.1145/3219819.3220109. doi:
          <volume>10</volume>
          .1145/3219819.3220109.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Dallachiesa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ebaid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Eldawy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. K.</given-names>
            <surname>Elmagarmid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Ilyas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ouzzani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <article-title>NADEEF: a Commodity Data Cleaning System</article-title>
          , in: SIGMOD,
          <year>2013</year>
          , pp.
          <fpage>541</fpage>
          -
          <lpage>552</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A. P.</given-names>
            <surname>Bhardwaj</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Deshpande</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Elmore</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Karger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Madden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. G.</given-names>
            <surname>Parameswaran</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Subramanyam</surname>
          </string-name>
          , E. Wu,
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <article-title>Collaborative data analytics with datahub</article-title>
          ,
          <source>PVLDB</source>
          <volume>8</volume>
          (
          <year>2015</year>
          )
          <fpage>1916</fpage>
          -
          <lpage>1919</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Dolt</surname>
          </string-name>
          , online https://github.com/dolthub/dolt,
          <year>2023</year>
          . URL: https://github.com/dolthub/dolt.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Benedikt</surname>
          </string-name>
          , G. Konstantinidis,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          , E. Tsamoura,
          <article-title>Benchmarking the chase</article-title>
          , in: PODS, ACM,
          <year>2017</year>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>52</lpage>
          . URL: https://doi.org/10.1145/ 3034786.3034796. doi:
          <volume>10</volume>
          .1145/3034786.3034796.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.</given-names>
            <surname>Alexe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Tan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Velegrakis</surname>
          </string-name>
          ,
          <article-title>Comparing and Evaluating Mapping Systems with STBenchmark</article-title>
          ,
          <source>PVLDB</source>
          <volume>1</volume>
          (
          <year>2008</year>
          )
          <fpage>1468</fpage>
          -
          <lpage>1471</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Raunich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <article-title>What is the IQ of your Data Transformation System?</article-title>
          ,
          <source>in: CIKM</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>872</fpage>
          -
          <lpage>881</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Arocena</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Ciucanu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <article-title>The ibench integration metadata generator</article-title>
          ,
          <source>PVLDB</source>
          <volume>9</volume>
          (
          <year>2015</year>
          )
          <fpage>108</fpage>
          -
          <lpage>119</lpage>
          . URL: http://www.vldb.org/pvldb/vol9/p108-arocena.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Arocena</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <article-title>Messing-Up with BART: Error Generation for Evaluating Data Cleaning Algorithms</article-title>
          , PVLDB
          <volume>9</volume>
          (
          <year>2015</year>
          )
          <fpage>36</fpage>
          -
          <lpage>47</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fagin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kolaitis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Popa</surname>
          </string-name>
          , Data Exchange: Semantics and
          <string-name>
            <given-names>Query</given-names>
            <surname>Answering</surname>
          </string-name>
          , TCS
          <volume>336</volume>
          (
          <year>2005</year>
          )
          <fpage>89</fpage>
          -
          <lpage>124</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>W.</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          ,
          <article-title>Foundations of Data Quality Management</article-title>
          , Morgan &amp; Claypool,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>G.</given-names>
            <surname>Beskales</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Ilyas</surname>
          </string-name>
          , L. Golab,
          <article-title>Sampling the Repairs of Functional Dependency Violations under Hard Constraints</article-title>
          , PVLDB
          <volume>3</volume>
          (
          <year>2010</year>
          )
          <fpage>197</fpage>
          -
          <lpage>207</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <source>The Llunatic Data-Cleaning Framework, PVLDB</source>
          <volume>6</volume>
          (
          <year>2013</year>
          )
          <fpage>625</fpage>
          -
          <lpage>636</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kolahi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. V. S.</given-names>
            <surname>Lakshmanan</surname>
          </string-name>
          ,
          <article-title>On Approximating Optimum Repairs for Functional Dependency Violations</article-title>
          , in: ICDT,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>X.</given-names>
            <surname>Chu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Ilyas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <article-title>Holistic Data Cleaning: Putting Violations into Context</article-title>
          , in: ICDE,
          <year>2013</year>
          , pp.
          <fpage>458</fpage>
          -
          <lpage>469</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Veltri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <article-title>Interactive and deterministic data cleaning: A tossed stone raises a thousand ripples</article-title>
          ,
          <source>in: Proceedings of the ACM SIGMOD International Conference on Management of Data</source>
          , volume
          <volume>26</volume>
          -
          <fpage>June2016</fpage>
          , Association for Computing Machinery, New York, NY, USA,
          <year>2016</year>
          , p.
          <fpage>893</fpage>
          -
          <lpage>907</lpage>
          . doi:
          <volume>10</volume>
          .1145/2882903.2915242.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>T.</given-names>
            <surname>Imieliński</surname>
          </string-name>
          , W. Lipski, Incomplete Information in Relational Databases,
          <source>J. of the ACM</source>
          <volume>31</volume>
          (
          <year>1984</year>
          )
          <fpage>761</fpage>
          -
          <lpage>791</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          , E. Veltri,
          <article-title>Similarity measures for incomplete database instances</article-title>
          ,
          <source>in: Proceedings 27th International Conference on Extending Database Technology, EDBT</source>
          <year>2024</year>
          , Paestum, Italy, March 25 - March 28, OpenProceedings.org,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>R.</given-names>
            <surname>Shraga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <article-title>Explaining dataset changes for semantic data versioning with explain-da-v</article-title>
          ,
          <source>Proc. VLDB Endow</source>
          .
          <volume>16</volume>
          (
          <year>2023</year>
          )
          <fpage>1587</fpage>
          -
          <lpage>1600</lpage>
          . URL: https://doi.org/10.14778/ 3583140.3583169. doi:
          <volume>10</volume>
          .14778/3583140.3583169.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>T.</given-names>
            <surname>Bleifuß</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Bornemann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. V.</given-names>
            <surname>Kalashnikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Naumann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Srivastava</surname>
          </string-name>
          , Dbchex:
          <article-title>Interactive exploration of data and schema change</article-title>
          ,
          <source>in: 9th Biennial Conference on Innovative Data Systems Research, CIDR</source>
          <year>2019</year>
          , Asilomar, CA, USA, January
          <volume>13</volume>
          -
          <issue>16</issue>
          ,
          <year>2019</year>
          ,
          <string-name>
            <given-names>Online</given-names>
            <surname>Proceedings</surname>
          </string-name>
          , www.cidrdb.org,
          <year>2019</year>
          . URL: http://cidrdb.org/cidr2019/papers/p65-bleifuss-cidr19.
          <fpage>pdf</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <article-title>Cleaning data with llunatic</article-title>
          ,
          <source>VLDB J</source>
          .
          <volume>29</volume>
          (
          <year>2020</year>
          )
          <fpage>867</fpage>
          -
          <lpage>892</lpage>
          . URL: https://doi.org/10.1007/s00778-019-00586-5. doi:
          <volume>10</volume>
          .1007/ s00778-019-00586-5.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          , Mapping and Cleaning, in: ICDE,
          <year>2014</year>
          , pp.
          <fpage>232</fpage>
          -
          <lpage>243</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Bikeshare</surname>
            <given-names>dataset</given-names>
          </string-name>
          , online https://s3.amazonaws.com/capitalbikeshare-data/,
          <year>2023</year>
          . URL: https://s3.amazonaws.com/capitalbikeshare-data/.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Github</surname>
            <given-names>dataset</given-names>
          </string-name>
          , online https://cloud.google.com/bigquery/public-data,
          <year>2023</year>
          . URL: https: //cloud.google.com/bigquery/public-data.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>