<!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>Schema Discovery in Large Web Data Sources</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Redouane Bouhamoum, Zoubida Kedad and Ste ́phane Lopes DAVID - University of Versailles Saint-Quentin-en-Yvelines Versailles</institution>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <fpage>67</fpage>
      <lpage>74</lpage>
      <abstract>
        <p>-An increasing number of data sources are published on the Web, expressed in the standard languages proposed by the W3C, such as RDF. These sources do not follow a predefined schema, which makes their exploitation difficult. In this work, we address the problem of automatic schema discovery in large RDF datasets. In previous work, we have proposed an approach for reducing the size of an RDF dataset by extracting representative patterns to enable the use of existing schema discovery approaches; but in some cases, the number of patterns remains too large and requires a scalable algorithm. In this paper, we propose SC-DBSCAN, an approach for schema discovery relying on a scalable version of DBSCAN, and its implementation using a big data technology. The distributed design of our algorithm makes it efficient for large datasets. Furthermore, SCDBSCAN provides the same result as DBSCAN. Index Terms-Schema discovery, RDF data, Clustering, Big data II. RELATED WORK</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>Large amounts of interlinked datasets, described by
languages such as RDF, RDFS and OWL are available in the
semantic Web. One characteristic of these datasets is their
flexibility with respect to a schema: entities in an RDF dataset
are not constrained by a schema, i.e., entities of the same type
can be described by different properties. A schema may have
been defined, but it may also be incomplete or even missing.</p>
      <p>This lack of schema offers a high flexibility, but it limits the
usability of these data sources. Many approaches address this
limitation by extracting a schema using clustering algorithms.
However, the use of these approaches on very large datasets
remains impossible due to the complexity of the clustering
algorithms.</p>
      <p>
        In our work, we address the problem of scaling up schema
discovery for RDF datasets. In previous work, we have
proposed an approach to reduce the size of RDF datasets so as
to apply a clustering algorithm on the reduced representation
of the initial dataset [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. However, when the entities are
described by very heterogeneous property sets, the reduced
representation is still too large to be clustered.
      </p>
      <p>We propose in this work a scalable density based clustering
algorithm called SC-DBSCAN. SC-DBSCAN is inspired by
the DBSCAN clustering algorithm. It comprises the following
steps: (i) data is partitioned according to the properties
describing the patterns, (ii) the list of neighbors of each pattern
is computed to identify the cores, (iii) the clusters are then built
is each partition and (v) merged to produce final clusters. Our
partitioning method provides enough information to enable
the construction of the final clusters and produces the same
results as the sequential DBSCAN. Finally, SC-DBSCAN is
implemented using a big data technology.</p>
      <p>The paper is organized as follows. The existing works
addressing schema discovery and the scalability of DBSCAN
are discussed in section II. Section III presents the problem
statement. Our approach is detailed in section IV and the
experiments are presented in section V. Section VI concludes
the paper.</p>
      <p>
        Schema discovery in RDF datasets has been addressed by
some research works. Some approaches propose the use of a
clustering algorithm to extract a schema. In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], DBSCAN
is used to group similar entities and to form the classes
representing the schema. In [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], a hierarchical algorithm is
applied for schema extraction.
      </p>
      <p>
        Other approaches were proposed in a big data context and
implemented using a big data technology such as Hadoop [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
and Spark [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], entities having the same type declaration
are grouped and a regular expression that represents all the
primitive types of the properties describing the grouped entities
is generated. The approach proposed in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] groups entities
having the same type declaration and considers the different
structures of these entities as versions of this type.
      </p>
      <p>The use of these approaches in our context is not suitable.
The approaches which use costly clustering algorithms can
not be applied on large datasets. The approaches proposed in
a big data context require some schema-related declarations,
and therefore can not be used when these declarations are not
provided in the dataset.</p>
      <p>For the clustering of RDF datasets, DBSCAN is a
wellsuited algorithm as it meets our requirements. Firstly, it allows
to form clusters of arbitrary shapes which is important in
our context where entities can be described by heterogeneous
property sets although having the same type. Secondly, it does
not require the number of resulting clusters a priori, which is
also important in our context as we do not know the number
of classes in a dataset before applying the clustering. Finally,
it provides a deterministic result and detects noise points that
are not important enough to form a class.</p>
      <p>
        DBSCAN is a density-based clustering algorithm designed
to discover clusters of arbitrary shapes [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The key idea
of DBSCAN is that for each data point in a cluster, the
neighborhood within a given radius has to contain at least
a minimum number of points (minP ts), i.e. the density of
the neighborhood has to exceed some threshold. DBSCAN
distinguishes between three kinds of points: core points with
at least minP ts points in their -neighborhood, border points,
which are not core points but have at least one core point in
their -neighborhood, and noise points which have no core
point in their -neighborhood. Noise points are never assigned
to a cluster.
(iv) MR-DBSCAN uses the Binary Space Partitioning which
is not well-suited for data with high dimensionality such as
RDF datasets.
      </p>
    </sec>
    <sec id="sec-2">
      <title>III. PROBLEM STATEMENT</title>
      <p>Consider a dataset D defined as a set of RDF(S)/OWL
triples D (R [ B) P (R [ B [ L), where R, B, P and
L represent resources, blank nodes (anonymous resources),
properties and literals respectively. In such RDF dataset, an
entity is defined as a node corresponding to either a resource
or a blank node, that is, any nodes except the literals.</p>
      <p>To create a cluster, DBSCAN starts with an arbitrary point
p and retrieves all the points that are density-reachable from In the RDF language, data is not required to follow a
p. A point p is density-reachable from a point q if there is a predefined schema. Such schema could be partially specified,
chain of points p1; : : : ; pn, with p1 = q; pn = p such that pi+1 or even missing. As a consequence, the use of these datasets is
is within the -neighborhood of pi. Then, DBSCAN retrieves difficult; providing a descriptive schema of the datasets would
recursively the density-reachable points from core points in be useful to facilitate their exploitation and querying.
p’s -neighborhood. DBSCAN forms the clusters by iterating
through the unlabeled core points and identifying their clusters In this work, our goal is to automatically discover the
by exploring density-reachable points, until all core points are underlying schema given an RDF dataset. Our problem can be
labeled. Note that the clusters produced by DBSCAN can stated as follows: given a large RDF dataset, how to cluster the
slightly vary according to the order in which clusters are entities having similar structures (entities described by similar
explored. If border points are within the -neighborhood of properties) to form classes and produce a schema describing
several core points, they may be assigned to different clusters. the data?</p>
      <p>
        The DBSCAN algorithm has been widely used, and also
extended to ensure its scalability by proposing parallel
versions. In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], the data is partitioned randomly, the clustering
is applied in each partition in parallel by comparing the entities
in one partition with the whole dataset. In [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], S-DBSCAN
randomly partitions the data then calculates the clusters in
each partition. The clusters having their centers close to each
other are then merged. The approach proposed in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] is quite
similar to S-DBSCAN, but merges the clusters that intersect
with each other based on the centers and the radius of clusters.
      </p>
      <p>
        After partitioning and calculating the partial clusters in each
partition, [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] defines a range for each partition and consider
the points out of this range as SEEDs used to merges the
partial clusters. MR-DBSCAN partitions the data using the
Binary Space Partitioning [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], duplicates the frontiers of each
partition into the neighboring partitions and calculates the
clusters [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. The clusters are finally merged if they share
some entities. NG-DBSCAN is composed of two steps [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]:
firstly, it computes the -graph by comparing each point with k
randomly selected points and adds an edge between the closest
ones. Secondly, it considers the edges having the highest
number of neighbors as the cluster’s root and all the elements
connected to this root are assigned to the same cluster.
      </p>
      <p>
        Existing scalable DBSCAN approaches have some
limitations: (i) PDS-DBSCAN compares a partition with the whole
dataset which requires duplicating the whole datasets in all
the calculating nodes, (ii) NG-DBSCAN is a probabilistic
algorithm and does not provide the same result as the
sequential DBSCAN algorithm; the same limitation exists with
S-DBSCAN and the approach proposed in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which relies
on the centers to merge the partial clusters, (iii) it does not
exist a relative order on the web datasets as required in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
      </p>
      <p>
        By similar entities, we mean entities having similar
structures. Similarity measures are thus based on the number of
properties shared between two compared entities. Two entities
are similar if they share some properties. Similarity between
entities could be evaluated using the Jaccard similarity [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>We propose in this paper a scalable version of DBSCAN
and provide solutions for the issues raised by the distributed
execution of the algorithm.</p>
    </sec>
    <sec id="sec-3">
      <title>IV. THE SC-DBSCAN APPROACH We describe in this section our schema discovery approach for large RDF datasets. The different stages of our proposal are presented in figure 1.</title>
      <p>One of the key features of our approach is to firstly extract a
condensed representation of the considered RDF dataset; the
remaining steps of schema discovery will be performed on
this condensed representation instead of the whole dataset.
It consists in extracting a set of patterns representing the
structure of the entities of the dataset.</p>
      <p>Definition (Pattern) A pattern P t is a set of distinct
properties such that there exists at least one entity which property
set is equal to P t.</p>
      <p>Extracting patterns from a dataset produces as output all
the structures (set of properties) that describe some entities in
the dataset. Each pattern is associated with a number
corresponding to the number of entities having the same structure
as this pattern. The clustering algorithm is then applied on
the patterns instead of the entities to allow a faster execution
while keeping the same quality of the resulting schema.</p>
      <p>As highly heterogeneous datasets can produce a large
number of patterns, we introduce our scalable version of DBSCAN
(SC-DBSCAN), implemented using big data technology in
order to extract a schema for these datasets.</p>
      <p>SC-DBSCAN relies on a distributed and deterministic
density-based clustering algorithm inspired by DBSCAN; this
allows the efficient computation of the clusters of an RDF
dataset and provides the same results as the sequential
DBSCAN. To speed up the execution of the clustering,
SCDBSCAN first partitions the data, identifies the core patterns,
builds the clusters in parallel in each partition and, finally,
merges the partial clusters produced in each partition to
provide the final result.</p>
      <p>Data partitioning is based on the idea that similar patterns
share at least one property. The resulting partitions group
together patterns having some properties in common, ensuring
that all the similar patterns will be compared.</p>
      <p>Due to the partitioning of the set of patterns, the
neighborhood of a pattern could be spread across different partitions,
preventing core patterns to be identified. To address this issue,
SC-DBSCAN computes the -neighborhood of a pattern before
the clustering stage, ensuring the assignment of the right role
(core, border or noise) to each pattern. This stage is performed
in parallel in each partition, then local neighbors are grouped
by patterns, and core patterns, i.e. those having a number of
neighbors greater than minP ts, are identified.</p>
      <p>Using the core patterns, partial clusters can be calculated
in each partition. This is done in parallel, without exchanging
any information between the computing nodes. Final clusters
are formed by merging the partial clusters which share some
patterns.</p>
      <p>SC-DBSCAN is implemented with Spark, a distributed
computing framework suitable for processing large datasets.
The following sections detail our proposal.</p>
      <sec id="sec-3-1">
        <title>A. Patterns Extraction</title>
        <p>First, the dataset is split and distributed through the
calculating nodes. From the RDF triples, the ID (subject) and
the properties of the entities are then extracted, and pairs of
the form (entityID, property) are generated. All the properties
of the same entity are then grouped together to compose the
entities and produce the pairs (entityID, fp1, p2, p3, . . . g).</p>
        <p>Once the properties describing the same entities are grouped
together, patterns are extracted; the result of this step is a
set of pairs (fpatterng, nb), nb being the number of entities
describing by the pattern. In order to extract the patterns,
the pairs (entityID, fp1, p2, p3, . . . g) are read and the
result (pattern, 1) is produced, the pattern being the set of
properties for an entity. The number 1 indicates that one entity
corresponding to this pattern was found.</p>
        <p>Finally, the number of entities described by a pattern is
calculated by grouping all the pairs (pattern, 1) having the
same key. At the end of this step, the list of patterns and the
number of entities for each one is obtained.</p>
        <p>Figure 2 represents an example of extracted patterns. In the
following, we use this example to explain the different stages
of our proposal. We have set the parameters of our algorithm
to = 0:5, minP ts = 4 and capacity = 3.</p>
        <p>Since the clustering is based on the structure of the entities
and since the similarity is evaluated according to the properties
describing them, performing the clustering on the set of
patterns provides the same schema as the one provided by
performing the clustering on the set of entities.</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Data Partitioning</title>
        <p>Our approach for reducing the size of the initial dataset
consists in extracting a set of patterns which represent a
condensed representation of the data.</p>
        <p>Data partitioning plays an important role in efficient
processing of a large dataset. It allows to correctly distribute
computations on the nodes of a cluster.</p>
        <p>In our context, it ensures the division of the initial dataset
into subsets to generate clustering tasks that can be processed
in parallel. During clusters computation, it also limits
communication overheads between the partitions: performing the
clustering within a partition does not require any data located
in another partition and there is no data transfer between the
calculating nodes. Finally, data partitioning must ensure to
provide sufficient information to merge the partial clusters.
Our partitioning method generates non-disjoint partitions and
the duplicated data is used to merge the partial clusters.</p>
        <p>In our approach, a partition is created for each property
describing the patterns and contains all the patterns having
this property in their description. This way, all the patterns that
might be similar are grouped in the same partition. Patterns
that are never in the same partition do not share any property,
and it is therefore meaningless to compare them.</p>
        <p>Definition (Partition) A partition is a subset obtained from
the initial dataset according to a given property.
Partitioning a datasets D produces the subsets of D denoted by
partitionSet(D) and such that partitionSet(D) = fpartpxn
px 2 P g where P is the set of all the properties in the dataset,
and where partpx contains all the patterns described by the
property px.</p>
        <p>Since a partition partpx contains all the patterns described
by the property px, the number of elements could exceed the
calculating capacity of a machine which makes the clustering
step too costly or impossible. In that case, each partition
partpx exceeding the calculating capacity is further divided
into sub-partitions according to other properties than the one
already used to obtain this partition (other than px):
partitionSet(partpx ) = fpartpx;py n py 2 P pxg
Recursively, all the resulting partitions are evaluated and
those exceeding the calculating capacity are divided until
all the partitions have a number of elements lower than the
capacity.</p>
        <p>As capacity = 3 in our example, the partition partb
is divided and the resulting sub-partitions are presented in
figure 4.</p>
        <p>At the end of this stage, partitions of the initial dataset are
created, all of them having a subset of patterns that could be
efficiently clustered by a single machine.</p>
        <p>First, for each pattern pti, the algorithm creates the initial
partitions that pti belongs to according to its properties and
provides the pairs (partitionID, pattern) (line 2-6), where
partitionID is the name of the property. Then, it groups for
each partitionID, the list of patterns described by the attached
property and produces the pairs (partitionID, Set(pattern))
which contain the initial partitions.</p>
        <p>Secondly, our partitioning algorithm evaluates the size
of the element’s set for each partitionID and repartitions
those exceeding the capacity (line 11-18) using the method
Repartition presented in algorithm 2.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Algorithm 2 Repartition</title>
      <p>Require: (partition, capacity)
1: f inalP artition : Set(P artition)
2: id partition:getID
3: elements partition:getElements
4: if elements:size &lt;= capacity then
5: return partition
6: else
7: initPart: HashMap(id, Set(pattern))
8: for pattern: elements do
9: for property: pattern.getProperties - partition.getID
do
10: initPart.put(id+property, pattern)
11: end for
12: end for
13: f inP art</p>
      <p>the same ID
14: for part: finPart do
15: if part:elements:size &gt; capacity then
16: finalPartition.addAll(Repartition(part, capacity))
17: end if
18: end for
19: end if
20: return finalPartition</p>
      <p>Merge the elements of the partitions having</p>
      <p>This algorithm divides each partition partpx according to
the properties describing the patterns within partpx , minus
the properties already used (line 8-12). The ID of the created
partition is the concatenation of the initial partition’s ID and
the picked property name (line 10). Such as the initial
partitioning method, the repartitioning algorithm creates partitions
according to the properties describing the patterns within a
partition, then groups the sub-partitions having the same ID.
This method is applied recursively on the produced partitions
till obtaining partitions of a size lower than capacity (line
14-18).</p>
      <sec id="sec-4-1">
        <title>C. Core Identification</title>
        <p>
          In a density-based clustering algorithm, a core point is a
point having a number of neighbors greater than the minP ts
parameter in its neighborhood. The other points are either
borders, neighbors of a core point or noise [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
defining a core pattern must take into account the actual
number of entities represented by a pattern.
        </p>
        <p>Definition (Core pattern) A pattern is a core pattern if the
sum of its number of entities and the number of entities of its
neighbors in the -neighborhood is greater than minP ts.</p>
        <p>Firstly, for each pattern, the list of its neighbors in each
partition is extracted in parallel. Secondly, for each pattern,
all the neighbors found in each partition are grouped to build
the complete list of neighbors. Finally, patterns having a sum
of entities greater or equal to minP ts are core patterns. Core
identification ensures that the roles assigned to each pattern are
the same as the ones that would have been assigned without
partitioning the data.</p>
        <p>The patterns colored in orange in figure 5 are the ones
identified as cores such as pt1, which has pt2 as its neighbor,
and a sum of number of entities equals to 4.</p>
        <p>The algorithm 3 represents the pseudo-code of the core
identification method which updates the partitions by calculating
for each pattern the list of its neighbors and tags the cores
patterns that have a number of neighbors larger than minP ts.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Algorithm 3 coreIdentification</title>
      <p>Require: (partition, eps, minPts)
1: accunt : HashM ap(pattern; Set(pattern))
2: for pattern : partition do
3: ngh getN eighbors(pattern)
4: account:put(pattern; ngh)
5: end for
6: Merge the results to have for every pattern, the list of
neighbors
7: for (pattern, neighbors) : account do
8: pattern:neighbors neighbors
9: if pattern.coefficient + coefficientSum(neighbors)
minPts then
10: pattern:state "core"
11: end if
12: end for</p>
      <p>This algorithm finds out the list of neighbors of each pattern
in each partition (line 2-5) and merges the lists of neighbors
for each pattern. The method getN eighbors(ptx) returns the
list of patterns similar to ptx. Then, tags as core the patterns
having a number of neighbors upper or equal to minP ts (line
7-12).</p>
      <sec id="sec-5-1">
        <title>D. Partial Cluster Identification</title>
        <p>Core patterns gives sufficient information to form partial
cluster in each partition. Only core patterns will generate a
cluster by adding their neighbors as elements of the cluster.</p>
        <p>Other patterns will be either borders in some core’s
neighborhood which are affected to a cluster, or noise.</p>
        <p>In our work, clustering is executed on the patterns instead For each core pattern pti, a cluster ci containing pti and
of the entities and a pattern may represent several entities; its neighbors is created. Then, from the patterns added to the
cluster, the cores are selected and their neighbors added to
the cluster ci. Partial clusters are identified by recursively
repeating this process on the newly added patterns until a
border pattern is found. All the patterns which are not assigned
to a cluster are considered as noise.</p>
        <p>Figure 6 shows the clusters calculated in the partitions
obtained from our example (c.f figure 2).</p>
        <p>To compute the clusters in every partition generated in the
first stage, we use the algorithm presented in Algorithm 4.</p>
        <p>This algorithm uses the core patterns identified previously,
so it creates for each core a cluster containing the core pattern
and its neighbors (line 6-8). The patterns do not need to search
for neighbors since they were computed and saved during the
core identification stage.</p>
        <p>Then, the algorithm checks among the added neighbors
those which are tagged as cores and adds their neighbors to the
cluster (line 10-16). Then recursively, adds the neighbors of
the cores within the clusters till the expansion stops on border
patterns.</p>
        <p>After that, the same operation is repeated with another not
visited core till all the cores are clustered and output the partial
clusters.</p>
        <p>To avoid ambiguity between the clusters created in the
different partitions, the ID of a cluster is the partition’s ID
concatenated with an index (line 6).</p>
      </sec>
      <sec id="sec-5-2">
        <title>E. Merging Partial Clusters</title>
        <p>Global merging aims at identifying the clusters than span
across several partitions, and merging the corresponding partial
clusters.</p>
        <p>Similarly to density-based clustering algorithms, in our
approach, a pattern ptx is assigned to a clusters ci if ptx is
density-reachable from a core pattern in ci. And if this same
pattern ptx is assigned to another cluster cj , this means that
it is density-reachable from a core pattern in cj . If ptx is a
core, it would represent a bridge between the patterns in the
clusters ci and cj making them density-reachable from one
another. Thus, these patterns should be assigned to the same
cluster. In that case, these clusters should be merged.</p>
        <p>The merging stage identifies the clusters than span across
different partitions by finding out the local clusters than share
a common core pattern and merging these clusters to provide
the final result.</p>
        <p>If a border pattern is assigned to different clusters during
the clustering stage, it would be randomly assigned to one of
these clusters in the merging stage.</p>
        <p>This stage provides the final clusters, ensuring that using
SC-DBSCAN provides the same clustering result as using the
sequential DBSCAN.</p>
        <p>Clustering the patterns in our example produce the clusters
C1 and C2 presented in figure 7, all the other patterns are
noise.</p>
        <p>The algorithm 5 presents the merging stage. This algorithm
is executed on the driver (spark cluster’s master) and is not
parallelized.</p>
        <p>Since clusters are merged if they share a common core
pattern, the merging algorithm compares the clusters and
checks if a core pattern exists in the intersection of their
elements (line 6-7). In the case the intersection of two clusters</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Algorithm 5 globalMerging</title>
      <p>Require: (partialClusters)
1: copy all the partial clusters on the driver
2: f inalClusters : Set(Cluster)
3: index 0
4: for c1: partialClusters do
5: for c2: finalCLusters do
6: commonP t c1:getElements \ c2:getElements
7: if commonP t:containsCore then
8: c3 newCluster("f Cluster" + index)
9: c3:add(c1:getElements)
10: c3:add(c2:getElements)
11: finalClusters.add(c3)
12: partialCluster.remove(c1)
13: partialCluster.remove(c2)
14: end if
15: end for
16: end for
17: finalClusters.addAll(partialClusters)
18: return finalClusters
contains a core, these clusters are replaced by a new cluster
merging them (line 8-13).</p>
    </sec>
    <sec id="sec-7">
      <title>V. EXPERIMENTS</title>
      <p>In this section we present some evaluations of
SCDBSCAN.</p>
      <p>For our experiments, we have used Apache Spark 2.3 in
standalone mode, installed on a cluster of 5 nodes, each with
8 cores and 32GB of RAM.</p>
      <sec id="sec-7-1">
        <title>A. Patterns Extraction</title>
        <p>We have evaluated our pattern extraction approach using
real RDF datasets of different sizes. Table I shows for each
dataset, the number of triples and the number of entities.</p>
        <p>Table II illustrates the efficiency of the condensed
representation by showing the number of patterns produced by our
approach, the reduction ratio (number of patterns divided by
the number of entities) and the execution time of the pattern
extraction algorithm.</p>
        <p>The number of patterns in the condensed representation of
a dataset depends on the heterogeneity of the structure
describing the entities. The more heterogeneous the property sets
describing the entities, the higher the number of patterns. If
we consider DBpedia, the number of patterns is large because
this dataset contains very heterogeneous entities unlike DBLP,
Katrina and Charley which are less heterogeneous and produce
a lower numbers of patterns.</p>
        <p>With respect to the execution time, the experiments show
that our approach is able to deal with big RDF datasets such
as DBpedia which is composed of more than 9 billions triples.</p>
      </sec>
      <sec id="sec-7-2">
        <title>B. Cluster Computation</title>
        <p>As detailed in the beginning of this paper, SC-DBSCAN
provides the same clustering results as the original DBSCAN.
Our experiments are therefore focused on the performances of
our approach when applied to large datasets.</p>
        <p>
          To evaluate the scalability of our clustering algorithm, we
use synthetic data generated using ”IBM Quest Synthetic
Data Generator” [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. This well known generator has heavily
been used in the data mining community to evaluate the
performances of frequent itemset mining algorithms. In our
context, the generator produces the patterns that will be used
in our experiments and allows to tune their characteristics.
        </p>
        <p>
          In the following, we use the Jaccard index to compute the
similarity between two patterns [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. The parameters for the
clustering are set to = 0:8 and minP ts = 3, and the capacity
of each node varies according to the size of the dataset.
        </p>
        <p>Figure 8 shows the effectiveness of our algorithm to cluster
large datasets. We have executed SC-DBSCAN on datasets
of different sizes, where the average number of properties
for a patterns in each dataset is equal to 8 (parameter of the
generator).</p>
        <p>3;000
)
s
(
e
tim2;000
n
o
i
t
u
c
ex1;000
E
0
0
0:5
1</p>
        <p>1:5</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Number of patterns</title>
      <p>Fig. 8. Scalability of SC-DBSCAN.
2
106</p>
      <p>The results show that SC-DBSCAN is able to cluster a
dataset of 2 millions patterns in 58 minutes. These results
are explained by the fact that the first step of SC-DBSCAN
generates partitions that contain a number of patterns which
could be clustered on a single node of the cluster: each
node has to deal with a number of patterns which is lower
than its capacity in one task. In addition, SC-DBSCAN
skips some meaningless comparisons while searching for the
neighborhood of each pattern, since patterns are compared
only if they share at least one property.</p>
      <p>When the size of the data increases, the partitioning stage
produces a high number of partitions which slows down the
execution time because each calculating node has to manage
many partitions. However, Spark organizes the tasks so our
algorithm can manage all the partitions and merge the results
in the last stage.</p>
    </sec>
    <sec id="sec-9">
      <title>VI. CONCLUSION</title>
      <p>In this paper, we have presented SC-DBSCAN, our
approach for schema discovery in large RDF datasets.
SCDBSCAN relies on a distributed density-based clustering
algorithm inspired from DBSCAN and is implemented using
Spark.</p>
      <p>SC-DBSCAN first reduces the size of the RDF dataset
by extracting patterns. Our experiments show that it reduces
considerably the size of the initial data and speeds up the
clustering algorithm while keeping the same result. We have
then introduced a novel partitioning approach which allows to
efficiently cluster large datasets and provides the same results
as the original DBSCAN. We have shown through experiments
the ability of SC-DBSCAN to cluster large datasets and to
extract an implicit schema even if the number of patterns is
large.</p>
      <p>In our future works, we will perform more detailed
experiments on SC-DBSCAN to better understand the complexity
of each stage composing the algorithm and the influence of
each parameter. In addition, experiments have to be extended
to data with high dimensionality.</p>
      <p>We also plan to propose some optimization of SC-DBSCAN
which improves the partitioning to produce a lower number of
partitions and skip other meaningless comparisons.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bouhamoum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. K.</given-names>
            <surname>Kellou-Menouer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lopes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Kedad</surname>
          </string-name>
          , “
          <article-title>Scaling up schema discovery approaches</article-title>
          ,” International Conference on Data Engineering Workshops,
          <year>April 2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kellou-Menouer</surname>
          </string-name>
          and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Kedad</surname>
          </string-name>
          , “
          <article-title>Schema discovery in RDF data sources</article-title>
          ,” in Conceptual Modeling - 34th International Conference, ER. Springer,
          <year>2015</year>
          , pp.
          <fpage>481</fpage>
          -
          <lpage>495</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kellou-Menouer</surname>
          </string-name>
          and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Kedad</surname>
          </string-name>
          , “
          <article-title>A self-adaptive and incremental approach for data profiling in the semantic web</article-title>
          ,” T.
          <string-name>
            <surname>Large-Scale Dataand Knowledge-Centered</surname>
            <given-names>Systems</given-names>
          </string-name>
          , vol.
          <volume>29</volume>
          , pp.
          <fpage>108</fpage>
          -
          <lpage>133</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>K.</given-names>
            <surname>Christodoulou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. W.</given-names>
            <surname>Paton</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. A.</given-names>
            <surname>Fernandes</surname>
          </string-name>
          , “
          <article-title>Structure inference for linked data sources using clustering,”</article-title>
          <source>EDBT/ICDT</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5] (
          <year>2018</year>
          )
          <article-title>Apache hadoop</article-title>
          . [Online]. Available: https://hadoop.apache.org/
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6] (
          <year>2018</year>
          )
          <article-title>Apache spark</article-title>
          . [Online]. Available: https://spark.apache.org
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.-A.</given-names>
            <surname>Baazizi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. B.</given-names>
            <surname>Lahmar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Colazzo</surname>
          </string-name>
          , G. Ghelli, and
          <string-name>
            <given-names>C.</given-names>
            <surname>Sartiani</surname>
          </string-name>
          , “
          <article-title>Schema inference for massive json datasets</article-title>
          ,
          <source>” EDBT</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Ruiz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. F.</given-names>
            <surname>Morales</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. G.</given-names>
            <surname>Molina</surname>
          </string-name>
          , “
          <article-title>Inferring versioned schemas from nosql databases and its applications</article-title>
          ,
          <source>” ER</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ester</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.-P.</given-names>
            <surname>Kriegel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sander</surname>
          </string-name>
          , and
          <string-name>
            <given-names>X.</given-names>
            <surname>Xu</surname>
          </string-name>
          , “
          <article-title>A density-based algorithm for discovering clusters in large spatial databases with noise</article-title>
          ,
          <source>” KDD</source>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>M. M. A. Patwary1</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Palsetia</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Agrawal</surname>
            , W. k. Liao,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Manne</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Choudhary</surname>
          </string-name>
          , “
          <article-title>A new scalable parallel dbscan algorithm using the disjoint-set data structure,” International Conference for High Performance Computing</article-title>
          , Networking,
          <source>Storage and Analysis</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>G.</given-names>
            <surname>Luo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Luo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. F.</given-names>
            <surname>Gooch</surname>
          </string-name>
          , “
          <article-title>A parallel dbscan algorithm based on spark</article-title>
          ,” BDCloud,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>I. K.</given-names>
            <surname>Savvas</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Tselios</surname>
          </string-name>
          , “
          <article-title>Parallelizing dbscan algorithm using mpi,”</article-title>
          <source>International Conference on Enabling Technologies: Infrastructure for Collaborative Enterprises</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.</given-names>
            <surname>Han</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Agrawal,
          <string-name>
            <given-names>W.</given-names>
            <surname>Liao</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Choudhary</surname>
          </string-name>
          , “
          <article-title>A novel scalable dbscan algorithm with spark</article-title>
          ,
          <source>” International Parallel and Distributed Processing Symposium Workshops</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Wikipedia</surname>
          </string-name>
          . (
          <year>2017</year>
          ,
          <article-title>August) Binary space partitioning</article-title>
          . [Online]. Available: https://en.wikipedia.org/wiki/Binary space partitioning
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Y.</given-names>
            <surname>HE</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>TAN</surname>
          </string-name>
          , W. LUO,
          <string-name>
            <surname>S. FENG</surname>
          </string-name>
          , and
          <string-name>
            <surname>J. FAN</surname>
          </string-name>
          , “
          <article-title>Mr-dbscan: a scalable mapreduce-based dbscan algorithmfor heavily skewed data</article-title>
          ,”
          <source>International Parallel and Distributed Processing Symposium Workshops</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Lulli</surname>
          </string-name>
          , M. DellAmico, P. Michiardi, and L. Ricci, “
          <article-title>Ngdbscan:scalable density based clustering forarbitrary data</article-title>
          ,
          <source>” VLDB</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17] (
          <year>2018</year>
          )
          <article-title>Jaccard index</article-title>
          . [Online]. Available: https://en.wikipedia.org/wiki/ Jaccard index
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>IBM.</surname>
          </string-name>
          (
          <year>2015</year>
          )
          <article-title>Ibm quest synthetic data generator</article-title>
          . [Online]. Available: https://sourceforge.net/projects/ibmquestdatagen/files/latest/download
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>