Skip to content

Commit ec5cff8

Browse files
committed
more changes
2 parents f0cae5c + 6bca0ef commit ec5cff8

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

jsondiscoverer.web/WebContent/app/partials/advanced.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ <h2>How does it work?</h2>
66
</div>
77
</div>
88
<div class="col-md-6">
9-
<p>The advanced JSON discoverer infers and visualizes the <strong>implicit schema shared by a set of JSON documents</strong>.
10-
As shown in the figure, the process works by <strong>analyzing the commonalities</strong> of JSON documents coming from the same/different sources (two in the figure). In the latter, the discoverer infers links between the subschema of each source.</p>
9+
<p>The advanced JSON discoverer infers and visualizes the <strong>implicit schema behind a set of JSON documents</strong>.
10+
As shown in the figure, the process works by <strong>analyzing the commonalities</strong> of JSON documents coming from the same/different sources (two in the figure) and building a global schema integrating all of them. In the latter, the discoverer infers links between the subschema of each source.</p>
1111
<p>To use the advanced JSON discoverer follow these steps:</p>
1212
<ul>
1313
<li><strong>Step 1. Provision.</strong> You have to provide one or more JSON sources. For each source, you have to give a name and provide one ore more JSON documents.</li>

jsondiscoverer.web/WebContent/app/partials/composition.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ <h2>How does it work?
1010
</div>
1111
</div>
1212
<div class="col-md-6">
13-
<p>The API composer <strong>looks for matching elements in different API schemas and generates a composition graph</strong>. The result is used to assist developers to compose APIs. The tool currently incoporates a sequence diagram generator to visualize API compositions.</p>
13+
<p>The API composer <strong>looks for matching elements in different API schemas and generates a composition graph</strong>. We use this graph to assist developers trying to compose APIs by searching for paths that connect the target input/output data. The tool currently incoporates a sequence diagram generator to visualize API compositions.</p>
1414
<p>To use the API composer follow these steps:</p>
1515
<ul>
16-
<li><strong>Step 1. Provision.</strong> You have to provide two or more JSON sources. For each source you have to give a name and provide the input (optional) and one or more JSON documents.</li>
16+
<li><strong>Step 1. Provision.</strong> You have to provide two or more JSON sources. For each source you have to give a name and provide the call input (optional) and one or more examples of JSON documents returned by the source.</li>
1717
<li><strong>Step 2. Composition discovery.</strong> For each JSON source we will discover the schema information.</li>
1818
<li><strong>Step 3. Composition Graph.</strong> The discovered schemas will be composed in a graph where graph nodes represents schema concepts and attributes. We will discover as well possible links among these concepts. You can apply the layout to better read the graph.</li>
19-
<li><strong>Step 4. Calculate a Path.</strong> Paths in the graph can represent API compositions. Given a source and a target nodes, you can calculate a path, which we will represent
20-
as a sequence diagram.</li>
19+
<li><strong>Step 4. Calculate a Path.</strong> Paths in the graph can represent potential API compositions. Given a source and a target nodes, you can calculate a path, which we will represent
20+
as a sequence diagram displaying the ordered list of services you should call in the composition</li>
2121

2222
</ul>
2323
</div>

jsondiscoverer.web/WebContent/app/partials/documentation.html

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ <h2 id="doc-why">Why this?</h2>
1818
</div>
1919
<div class="col-md-10">
2020
<p>
21-
With the emergence of the Web 2.0, asynchronous-based web technologies are becoming mainstream mainly thanks to their ability to provide richer, faster and more interactive web experiences. For a long time, these applications have been using XML as interchange format, however, in the last years the JavaScript Object Notation (<a href="http://json.org/>">JSON</a>) has been gaining in popularity since it provides a lightweigth data exchange format with a significant performance improvement.
21+
With the emergence of the Web 2.0, asynchronous-based web technologies are becoming mainstream mainly thanks to their ability to provide richer, faster and more interactive web experiences. For a long time, these applications have been using XML as interchange format, however, in the last years the JavaScript Object Notation (<a href="http://json.org/>">JSON</a>) has been gaining in popularity since it provides a lightweigth data exchange format with a significant performance improvement.
2222
</p>
2323
<p>
24-
JSON consists in sets of Object described by name/value pairs. It is <strong>schemaless</strong>, i.e., there is no a structural definition of JSON objects, instead it is implicit. Schemaless data is particularly <a href="http://martinfowler.com/articles/schemaless">interesting in cases dealing with non-uniform data or in schema migration</a>, however, it can become a burden in data integration scenarios (e.g., consuming JSONbased APIs) where it becomes necessary to discover at least partially the underlying structure in order to properly process the data.
24+
JSON consists in sets of objects described by name/value pairs. It is <strong>schemaless</strong>, i.e., there is no a structural definition of JSON objects, instead it is implicit. Schemaless data is particularly <a href="http://martinfowler.com/articles/schemaless">interesting in cases dealing with non-uniform data or in schema migration</a>, however, it can become a burden in data integration scenarios (e.g., consuming JSONbased APIs) where it becomes necessary to discover at least partially the underlying structure in order to properly process the data.
2525
</p>
2626
<p>
2727
Nowadays, a considerable number of web applications provide an external API consisting in a set of JSON-based services where all services are interrelated. Indeed, each service gives access to a subset of the application domain and developers must combine them to build any kind of non-trivial functionality on top of that API. Since JSON data is a schemaless format, deducing the right way of combining those services is not a trivial task. JSONDiscoverer aims at discovering (and visualizing) the implicit schema of the JSON data as well as the possible composition links among JSON-based Web APIs.
@@ -38,30 +38,51 @@ <h2 id="doc-why">Why this?</h2>
3838
<h2 id="doc-problem">The problem</h2>
3939
<div class="col-md-6">
4040
<p>The figure on the right illustrates the typical development scenario where JSON-based Web APIs define a set of services, each one returning JSON documents when they are called.</p>
41+
<<<<<<< HEAD
4142
<p>To select and use these Web APIs, developers usually test each service and reverse engineering the implicit structure of the data they return. When developers want to compose Web APIs, they look for common elements among the Web APIs, which is not a trivial task and sometimes not possible (i.e., when the APIs cannot be composed).</p>
4243
<p>Our tool applies a discovery process to uncover the data model (i.e., schema) behind JSON-based Web APIs and assist on the discovery of composition links among them. These are currently the main functionalities provided:</p>
4344
<ul>
4445
<li><strong><a href="#/simple">Simple discovery</a></strong>, which discovers the schema of a given set of JSON documents returned by a single service.
4546
<li><strong><a href="#/advanced">Advanced discovery</a></strong>, which discovers the schema from a set of JSON-based services. First, the schema of each JSON-based service is discovered (by using the simple discoverer), then the resulting schemas are composed to obtain a general one.
4647
<li><strong><a href="#/composer">API Composer</a></strong>, which takes a set of API schemas, looks for composition links (i.e., common concepts or attributes) and generates a composition graph. The result is used to help developers to compose APIs. The tool currently incoporates a sequence diagram generator to visualize API compositions.
48+
=======
49+
<p>To select and use these Web APIs, developers usually test each service and reverse engineer the implicit structure of the data they return. When developers want to compose Web APIs, they look for common elements among the Web APIs, which is not a trivial task.</p>
50+
<p>Our tool applies a discovery process to uncover the schema (i.e., schema) behind JSON-based Web APIs and assist on the discovery of composition links among them. These are currently the main functionalities provided:</p>
51+
<ul>
52+
<li><strong><a href="#/simple">Simple discovery</a></strong>, which discovers the schema model from a JSON document.
53+
<li><strong><a href="#/advanced">Advanced discovery</a></strong>, which discovers the schema from a set of JSON-based services. First, the schema of each JSON-based service is discovered (by using the simple discoverer), then the resulting schemas are composed to obtain a global one.
54+
<li><strong><a href="#/composer">API Composer</a></strong>, which takes a set of API schemas, looks for composition links (i.e., common concepts or attributes) and generates a composition graph. The result is used to assist developers to compose APIs. The tool currently incoporates a sequence diagram generator to visualize API compositions.
55+
>>>>>>> 6bca0ef5776338e7c4c2d76e313398bbebe2d26b
4756
</li>
4857
</ul>
4958
</div>
5059
<div class="col-md-6">
5160
<img style="margin-bottom: 20px; padding:10px;" class="img-thumbnail" src="images/doc-example.png" alt="Problem Example">
61+
<<<<<<< HEAD
5262
<p>Our tool draws schema information as UML class diagrams, including concepts (i.e., classes) and their properties (i.e., attributes and associations linking the different concepts). Potential API compositions are represented by means of UML sequence diagrams showing the possible sequence of API calls.
63+
=======
64+
<p>Our tool represents schema information as class diagrams, including concepts (i.e., classes) and their properties (i.e., attributes/associations).The tool leverages on model-driven techniques to represent both the schema and composition information as models and model associations, respectively.
65+
>>>>>>> 6bca0ef5776338e7c4c2d76e313398bbebe2d26b
5366
</p>
5467
</div>
5568
</div>
5669

5770
<div class="row">
5871
<h2 id="doc-simple">The Simple Discoverer</h2>
5972
<div class="col-md-12">
73+
<<<<<<< HEAD
6074
<p>JSON documents include both metadata (i.e., the name side of the name/value pair elements) and data (i.e., their value). Note that, however, two objects in the same (or different) JSON document(s) generated by a call to the same service do not necessarily have the same exact structure, e.g., it is possible that some of them include only a subset of the metadata/data, thus removing some name/value pairs (e.g., to reduce network traffic). Therefore, the accuracy of the simple discovery increases when a number of JSON objects to infer their common structure are analyzed.</p>
6175

6276
<p>The simple discovery process is therefore launched for each JSON object and has two execution modes: creation and refinement. The former creates a root class from an object representing a concept not yet existing in the service schema created so far whereas the latter enriches/refines an already existing class with information coming from new objects representing such concept. </p>
6377

6478
<p>When a JSON object representing a new concept is considered, the following creation rules are applied to build the corresponding elements in the schema (see figure on the left as example):</p>
79+
=======
80+
<p>JSON documents include both metadata (i.e., the name side of the object name/value pair elements) and data (i.e., their value). Note that, however, two objects in the same (or different) JSON document(s) generated by a call to the same service do not necessarily have the same exact structure, e.g., it is possible that some of them include only a subset of the metadata/data, thus removing some name/value pairs (e.g., to reduce network traffic). Therefore, the accuracy of the simple discovery increases when a number of JSON objects are provided for the analysis.</p>
81+
82+
<p>The simple discovery process is therefore launched for each JSON object and has two execution modes: creation and refinement. The former creates a root concept from an object representing a concept not yet existing in the service schema created so far whereas the latter enriches/refines an already existing concept with information coming from new objects of that concept appearing in other documents. </p>
83+
84+
<p>When a JSON object element representing a new concept is considered, the following creation rules are applied to build the corresponding elements in the schema (see figure on the left as example):</p>
85+
>>>>>>> 6bca0ef5776338e7c4c2d76e313398bbebe2d26b
6586
</div>
6687
</div>
6788

0 commit comments

Comments
 (0)