<!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>FREDDY: A Web Browser-friendly Lightweight Data-Interchange Method Suitable for Composing Continuous Data Streams</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Shohei Yokoyama</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Isao Kojima</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hiroshi Ishikawa</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>National Institute of Advanced Industrial Science and Technology</institution>
          ,
          <country country="JP">Japan</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Shizuoka University</institution>
          ,
          <country country="JP">Japan</country>
        </aff>
      </contrib-group>
      <fpage>39</fpage>
      <lpage>50</lpage>
      <abstract>
        <p>As a remarkable lightweight data-interchange format for use with web browsers, JSON is well known. Recently, web browsers have come to support rich applications called Software as a Service (SaaS) and Cloud Computing. Consequently, data interchange between web servers and web browsers is an important issue. A singleton, an array, or a nested object (tree) can be represented by JSON, which is based on a subset of the JavaScript Programming Language. It is valuable for SaaS applications because JavaScript programs can parse JSON data without the need for special programs. However, web browsers and JSON are poorly designed to address large amounts of data and continuous data streams, e.g. sensing data and real time data. We propose here a novel data format and a data-interchange mechanism named ”FREDDY” to address this deficiency. It is not merely a subset of the JavaScript; it can represent semi-structured data, just as JSON does. Moreover, FREDDY is suitable for composing a continuous data stream on web browsers. Using the small JavaScript library of FREDDY, web applications can access streaming data via a SAX-style API; it works on all major browsers. Herein, we explain FREDDY and evaluate the throughput of our implementation. We loaded 400 MByte streaming data using our 5 kByte library of FREDDY.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Once it was believed that web browsers were useful merely to display static
pages that web servers would provide one after another. However web pages are
no longer static, as exemplified by Google Maps, which uses dynamic HTML and
Asynchronous JavaScript + XML (Ajax)[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Using JavaScript, web pages can
access Web servers, download data, and update pages themselves. This technique
has laid the foundations for next-generation web applications such as SaaS[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ],
Web2.0[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], and cloud computing. In this case, the main logic of applications
is partially located on a client side and partially located on a server side. We
will address implementations of web applications with the question of how data
that applications need can be accommodated. JavaScript applications on web
browsers always run inside a security sandbox. Consequently, all data must be
either on primary storage (main memory) of a local computer or on secondary
storage (hard disks) of web servers, which is not of the local computer. That is
to say, data interchange between a web server and a web browser is an extremely
important issue for web applications.
      </p>
      <p>
        Ajax and JavaScript Object Notation (JSON: RFC4627)[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] are attractive
solutions for interchange of data between web servers and web browsers. However,
the combination of Ajax and JSON can download only a chunk of data
simultaneously. They cannot handle continuous data streams, e.g. sensing data and real
time data. Numerous sensors are installed in devices from toilets to satellites,
but no lightweight integration method exists for handling sensing data on the
Web.
      </p>
      <p>
        The purpose of this paper is to propose a lightweight data stream interchange
mechanism named FREDDY. Our implementation provides a Simple API for
XML (SAX)[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] style programming. Therefore, FREDDY can accommodate not
only a continuous data stream, but also semi-structured data, equivalently to
XML. Using FREDDY, users can accommodate continuous data streams via a
SAX event handler, which is written in JavaScript.
      </p>
      <p>In this study, we also evaluate the throughput of our implementation of
FREDDY when the application loads a large SAX event stream. The results
of experiments show good throughput, about 1 MByte/s, of data interchange
between a web server and a web browser. However, we do not emphasize the
velocity of data interchange; also, FREDDY is a lightweight method in terms of
the security sandbox of web browsers. The remainder of this paper is organized
as follows. Section 2 expresses an overview of FREDDY. The data format and
our implementations of FREDDY are described in Section 3 and Section 4. In
Section 5, we present our experiments and evaluations. In Section 6, we describe
related works. Finally, Section 7 concludes the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Overview of FREDDY</title>
      <p>The main contributions (Fig. 1) of this paper are: (a) a lightweight data format
that is suitable for streaming data exchange using only JavaScript, (b) a
streaming delivery mechanism on the Web, (c) a lightweight library, whose size is about
5 kByte, to realize SAX-style programming for handling both semi-structured
data and continuous data streams.</p>
      <p>Data Source
Web Browser
Office</p>
      <p>Dam</p>
      <sec id="sec-2-1">
        <title>Continuous Data Stream</title>
        <p>Factory
Logistics</p>
        <p>Web Browser</p>
      </sec>
      <sec id="sec-2-2">
        <title>Realtime Data</title>
      </sec>
      <sec id="sec-2-3">
        <title>Continuous Data Stream</title>
        <p>Home</p>
      </sec>
      <sec id="sec-2-4">
        <title>SAX Event Stream</title>
        <p>Computation
XML
Data</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Data model</title>
      <sec id="sec-3-1">
        <title>Outline of Data Format</title>
        <p>The data format for FREDDY, FREDDY Format, can represent both a flat
data stream and a semi-structured data stream. The FREDDY format is simple.
Figure 3 portrays instances of the FREDDY format as an XML tree and a data
stream representation. What the right of that figure readily clarifies is that the
FREDDY format uses function calls written in JavaScript. Each line of FREDDY
data expresses a type of SAX event and its property. We named each function
call event container a generic name.</p>
        <p>The main characteristic of the FREDDY Format, contrasted against that of
JSON, is that it is splittable because it is a simple repetition of event containers.
Actually, FREDDY realizes streaming between web servers and web browsers</p>
        <p>Semi-structured data</p>
        <p>beer
I like it!</p>
        <p>Continuous
data stream
thermometer
temperature = 30</p>
        <p>@unit:Celsius
temperature = 28</p>
        <p>@unit:Celsius
time t
sd();
s(”beer”);
s(”guinness”,{”label”:”Draught”});
c(”I like it!”);
guinness e(”guinness”);
@label:Extra Stout s(”guinness”,{”label”:”Extra Stout”});
e(”guinness”);
e(”beer”);
ed();
sd();
s(”thermometer”);
s(”temperature”,{”unit”:”Celsius”});
c(”30”);
e(”temperature”);
s(”temperature”,{”unit”:”Celsius”});
c{”28”}
e(”temperature”);
...</p>
        <p>FREDDY Format
FREDDY Format
by sending and receiving small fragments of all data one by one. Later in this
paper, a more precise account of the split FREDDY format is provided. We now
address the event container in detail.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Event container</title>
        <p>Table 1 portrays a list of all event containers. The events of the XML
Document start and XML Document end are represented as ds() and de(). The
data stream must start with a ds() event container and end with a de() event
container. The two containers must appear only once.</p>
        <p>The second argument of c(...), which represents an XML Text node, is
optional. It is always omitted from the representation of XML Tree because the
XML Text Node has only a value.</p>
        <p>The events of an XML Element start and end are represented as s(...),
S(...), and e(...). The argument of e(...) is optional. The element name
is associated with an XML Element start event, which corresponds to that if
no argument is given. The reason is data size reduction. For the same reason,
the second argument of s(...) and S(...), which represents XML Element
Attributes, is optional.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Compression of verbose elements’ name</title>
        <p>
          Actually, XML is known to be verbose by design[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], particularly in terms of
elements that appear many times. The SAX event stream has the same problem. For
example, bibliographic information of Digital Bibliography and Library Project
(DBLP)[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] has about 2,300,000 &lt;author&gt; tags, about 600,000 &lt;inproceedings&gt;
tags, and about 350,000 &lt;journal&gt; tags.
        </p>
        <p>
          Efficient SAX event stream interchange must tackle that data verbosity. In
this context, XML compression is an important issue. In addition, XML
compression is our concern: we proposed XML compression according to the simplified
element name[
          <xref ref-type="bibr" rid="ref17 ref7">7, 17</xref>
          ]. The FREDDY Format tackles XML verbosity using the
method of simplified element names. The reason that two event containers exist
for the XML Element start event is data size reduction.
        </p>
        <p>See Fig. 3. Two &lt;Guinness&gt; tags and two &lt;temperature&gt; tags exist. If
the element name is &lt;a&gt; instead of &lt;Guinness&gt; and &lt;temperature&gt; then
the amounts of data become small. This is the conceptual foundation of the
compression method.</p>
        <p>Algorithm 1 shows an algorithm for creation of an XML Element start event
container from the element name. Whenever the parser captures the element
start event, this procedure is called, where input T is a stack of visited element
names and argument name is an element name. The procedure then returns a
simplified element name derived from the original element name.
Algorithm 1: SimplifiedFREDDY(T, name)
procedure GetSimpleName(idx)
X ← [a, b. . .y, z, A, B. . .Y, Z, 0, 1. . .8, 9]
len ← LengthOf(X)
if len ≤ idx</p>
        <p>y ← X[idx%len]
then zre←tuirdnx/(GlenetSimpleName(z) + y)
comment: + means connection

else return (X[idx])
main
if T [name].IsExist()
then evtContainer ← ”S(′” + sN ame + ”′)”</p>
        <p>return (T, evtContainer)
comment: First appearance of the element

idx ← LengthOf(T )

else sN ame ← GetSimpleName(idx)
T [name] ← sN ame
evtContainer ← ”s(′” + name + ”′)”
return (T, evtContainer)</p>
        <p>Physical data
np(1,10);
sd();
ssd((”)t;emperature”); scs(((”””t3te0hm”ep)re;mroamteutreer””,){;”unit”:”Celsius”});
as(”temperature”,{”unit”:e”(C)e;lsius”});
ltadec((””t3e0m”p)e;rature”); (2)Response
ias(”temperature”,{”unit”:”Celsius”}); (3)Request
oLgec.({.””.t2e8m”p}erature”); nScp({(””2b2,”81,”0{})”;unit”:”Celsius”}); page 2
e();
page 1 (1)Request</p>
        <p>GetSimpleName(...) function generates the simple name for each new
incoming element name. The original element name will be replaced with the
simple name whenever this element re-appears later in this XML document. The
original element name itself is kept within the XML document by not replacing
the first entry of this element name.
A salient difference between FREDDY and JSON is that FREDDY data can be
split by line into valid fragments, which maintains a subset of the JavaScript
programming language. All lines of FREDDY data are actually a subset of
JavaScript.</p>
        <p>Switching our attention to the continuous data stream, the data sources (e.g.
thermometer and NOx sensor, etc.) always output data continuously, but HTTP,
which enables any Web browser to communicate with any Web server, cannot
handle continuous data streams. Therefore, FREDDY can split continuous data
streams into small fragments, named Pages, as physical data.</p>
        <p>Figure 4 presents an example of split data. The function-call np(pointer,
sleep-time); in the first line of each Page is a pointer to the next Page.
FREDDY can start downloading the subsequent page when the function np is
called. The Pages are valid JavaScript code. For that reason, the web browsers
can download them dynamically using HTTP.</p>
        <p>Actually, FREDDY uses the dynamic &lt;script&gt; tag technique for
downloading Pages. The dynamic &lt;script&gt; tag technique is a kind of Ajax based on
Dynamic HTML. JavaScript applications can append HTML elements into the
DOM tree of the HTML page. For example, if &lt;img&gt; tag with the src attribute
is appended directly to the inside of the &lt;body&gt; tag of the DOM tree, then the
image that the src attribute refers to is readily apparent. Similarly, using the
dynamic &lt;script&gt; tag, one can access all HTTP-enabled resources.
Switch
every 10 pages
FREDDY</p>
        <p>Library</p>
        <p>Page
Page
4
4.1</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Implementation</title>
      <p>Dynamic &lt;script&gt; tag
In the following section, we describe our implementation for data interchange
using FREDDY. The SAX-style programming makes only one pass through the
document from top to bottom. For that reason, FREDDY deletes Pages after
execution because they become unnecessary. An important problem was that
web browsers did not release the &lt;script&gt; element from memory even when
FREDDY deleted the element from the DOM tree. For that reason, our
implementation adopts a hybrid of &lt;iframe&gt; and &lt;script&gt; because the web browser
released the tags from the memory of the client PC when FREDDY flushed the
&lt;iframe&gt; element.</p>
      <p>Because of the hybrid implementation, FREDDY achieves both lower
processing costs and higher throughput. Our client implementation is portrayed in
1. Raw data are translated into Pages of FREDDY format by the gateway
specializing in each data source.</p>
      <p>the dynamic &lt;script&gt; tag technique.
2. FREDDY requests to the data source and receives Pages one by one using
3. The downloaded page is executed using a JavaScript engine of a web browser.</p>
      <p>Data Source
e.g. Sensor network</p>
      <p>XML Document</p>
      <p>Server
Raw data to FREDDY</p>
      <p>Gateway
Split into pages</p>
      <p>Page.1</p>
      <p>httpd
Page.2</p>
      <p>Page.3
FREDDY Data</p>
      <p>The Internet</p>
      <p>HTTP
4. The SAX event is noticed to the user defined event handler. If the function
np(...) is called, then FREDDY requests download of the following Page.</p>
      <p>It seems complex, but, in fact, it is very simple for users because the steps
above are hidden by our implementation. Therefore, the web application can
receive a continuous data stream easily via a SAX event handler. Furthermore,
the size of the FREDDY library, which is written in JavaScript, is only 5 kByte
because it is sufficiently lightweight to include into web applications.
4.3</p>
      <sec id="sec-4-1">
        <title>JavaScript SAX API of FREDDY</title>
        <p>Next, describing the usage of FREDDY, the FREDDY streaming delivery system
is executed behind the SAX API, so that the SAX API is the only interface for
FREDDY.</p>
        <p>The usage of JavaScript SAX API has three steps. The first is creating
methods of the SAX event handler. The name of the method is the same as that of
the methods of Java DefaultHandler class. The next is creating instances of both
the SAX Parser and event handler and setting the handler to the parser. Finally,
execute and start parsing document.</p>
        <p>For example, if the events of a documents are counted, then an event handler
can be created, as portrayed in Fig. 7 left. The right part of Fig. 7 shows the
code to count up the events of the data.</p>
        <p>This is a general procedure related to all SAX Parsers, so that FREDDY
is not only accessible by web programmers; it is also easily applicable by XML
programmers.
5
5.1</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Experiments and results</title>
      <sec id="sec-5-1">
        <title>Dataset and environment</title>
        <p>
          For experiments, we used large-scale data of four XML documents up to 400
MByte. The three small XML documents dataS.xml, dataM.xml, and dataL.xml
01: CountEventHandler.prototype = {
SAX Event Handler 0032:: sctoaurnttEl:em0e,nt : function(name,attr){
04: this.count++;
05: },
Recieve and parse data stream 0067:: endtEhliesm.ecnotun:t+f+u;nction(name){
08: },
01: p = new freddy.SaxParser(); 09: Characters : function(data){
02: h = new freddy.CountSaxHandler(); 10: this.count++;
03: p.setSimpleEventHandler(h); 11: }
04: p.parse("http://url/of/data/source"); 12: };
are 1 MByte, 10 MByte, and 100 MByte files created using the xmlgen from
the XMark benchmark project[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]; the biggest XML document is a 400 MByte
DBLP bibliographic information document.
        </p>
        <p>The computers used for the experiments are described in Table 2. We used
two different computers to estimate performance: a desktop computer (Client A)
and a laptop computer (Client B). The client machines and the server machine
are connected via a Giga-bit Ethernet network.</p>
        <p>Regarding the case in which FREDDY is used as an intermediate form for
XML handling with a web browser, the system has the following four tiers: (1) a
client machine on which the web browser is running, (2) a web server which hosts
web applications, (3) an SAX event stream-to-FREDDY gateway server, and (4)
a web server which holds XML documents. However, we specifically address the
interchange of FREDDY data between a server and a client. Therefore, the three
servers described above are located on the same server.
5.2</p>
      </sec>
      <sec id="sec-5-2">
        <title>FREDDY vs. JSON</title>
        <p>Actually, JSON is well known as a browser-friendly, lightweight data-interchange
format. As described earlier, JSON has a simple structure and great power of
expression, but it has limited scalability. For large amounts of data, it is
impractical to store all data into main memory using JSON. For this reason, we
propose a novel data-interchange method, FREDDY, which is suitable for use
with large amounts of data. We have performed measurements of FREDDY for
comparison with JSON.</p>
        <p>In this experiment, we measured the execution time for loading the whole
XML document of each dataS.xml, dataM.xml, dataL.xml, and dblp.xml using
(a) Client A
1000
)dn100
(sceeo
iTm10</p>
        <p>
          FREDDY and JSON on both Internet Explorer (Microsoft Corp.) and Mozilla
Firefox of the client machines: Client A and the Client B. We used an
XMLto-JSON gateway, which is implemented using IBM[
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. We measured all cases,
which are combinations of 2 clients, 2 browsers, 2 systems, and 4 datasets, 10
times each. In this case, JSON was unable to load dataL.xml and dblp.xml because
the server had exhausted the allowed memory size.
        </p>
        <p>Results of this experiment are presented in Fig. 8 and Fig. 9. Figure 8 shows
the average execution time of FREDDY and JSON. The throughput, the amount
of loaded data per second, is presented in Fig. 9. The results of the experiment
are that, irrespective of data size, the throughput of FREDDY is greater than
that of JSON. We shall next examine the results more carefully.
– Internet Explorer versus Firefox.</p>
        <p>We can find no significant difference of loading times between Internet
Explorer (Microsoft Corp.) and Mozilla Firefox, but Internet Explorer
(Microsoft Corp.) sometimes failed to load Pages. Therefore, we developed a
retransmission mechanism for FREDDY.
– Client A versus Client B.</p>
        <p>The result of FREDDY shows that Client B is faster than Client A. However,
regarding the result of JSON, we can find no obvious difference between
Client A and Client B. The result suggests that FREDDY is bottlenecked
by CPU power. On the other hand, we infer that the result of JSON is not
influenced by client-machine specifications.
– FREDDY versus JSON.</p>
        <p>Because JSON must store all data into the main memory, it is difficult for
JSON to handle a large amount of data. The result also shows that JSON
was unable to load datasets of 100 MByte and 400 MByte.</p>
        <p>Figure 9 presents that FREDDY is faster than JSON.</p>
        <p>We find that FREDDY has a feature resembling that of SAX in the context
of XML processing.
6</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Related Works</title>
      <p>The proposed FREDDY splits large data into small fragments for data
interchange. Indeed, splitting large data into small fragments is a common solution
to the problem of data interchange. Nevertheless, some problems persist in
implementation of data interchange on the web browser because a JavaScript web
application program must always run inside of a security sandbox. Applying
common problems of information technology to the web application domain is a
recent trend of research.</p>
      <p>
        Klein and Spector proposed distributed computation of genetic programming
via Ajax[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. In the context of data interchange, Huynh et al. proposed
sophisticated user interfaces for publishing structured data on the Web[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], but that
method merely addresses the contents’ presentation. It includes no solution for
large documents.
      </p>
      <p>
        The target of comparison in this study, JSON, has spread quickly on the
Internet. The W3C proposed an application for semantic web for representation of
SPARQL query results[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The JSON-RPC[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is a lightweight remote procedure
call protocol, which resembles XML-RPC. Results of several studies suggest it
as a future direction of FREDDY development.
      </p>
      <p>
        Natarajan describes an innovative transport layer protocol for data
interchange on the Web[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. However, to the best of our knowledge, no method exists
for the application layer. FREDDY is an application layer method. Consequently,
users use FREDDY in an existing HTTP and TCP/IP environment.
      </p>
      <p>
        An extremely important issue related to JavaScript applications is security
management. Jackson and Wang tackle the security of cross-domain scripting[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
We also devote attention to the security of web applications, but a more
comprehensive study of security is beyond the scope of this paper.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusions</title>
      <p>As described herein, we have presented FREDDY, a browser-friendly lightweight
data-interchange method that layers efficient data stream interchange between
a web server and a web browser. We also proposed an SAX style API to load a
continuous data stream. Results of our experiments show that FREDDY can be
a good solution for data interchange on the Web.</p>
      <p>The future direction of this research will be one that encompasses data
sources. We seek to focus attention how to translate raw data into FREDDY
format. We plan to extend the design to an infrastructure of a web mashup that
can communicate between the Web and a sensor network. We believe that JSON
and FREDDY can serve as a basis for data interchange for web applications.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <article-title>Digital bibliography and library project (dblp)</article-title>
          . http://dblp.uni-trier.de/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>2. Json-rpc. http://json-rpc.org/.</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>3. Sax. http://sax.sourceforge.net/.</mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>K. G.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Feigenbaum</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Torres</surname>
          </string-name>
          .
          <article-title>Serializing sparql query results in json</article-title>
          . http://web5.w3.org/TR/2007/NOTE-rdf
          <article-title>-sparql-</article-title>
          <string-name>
            <surname>json-</surname>
          </string-name>
          res-
          <volume>20070618</volume>
          /.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>D.</given-names>
            <surname>Crockford</surname>
          </string-name>
          .
          <article-title>Introducing json</article-title>
          . http://json.org/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>D. F.</given-names>
            <surname>Huynh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Karger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R. C.</given-names>
            <surname>Miller</surname>
          </string-name>
          .
          <article-title>Exhibit: lightweight structured data publishing</article-title>
          .
          <source>In WWW '07: Proceedings of the 16th international conference on World Wide Web</source>
          , pages
          <fpage>737</fpage>
          -
          <lpage>746</lpage>
          , New York, NY, USA,
          <year>2007</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>H.</given-names>
            <surname>Ishikawa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Yokoyama</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Isshiki</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Ohta</surname>
          </string-name>
          .
          <article-title>Project xanadu: Xml- and active-database-unified approach to distributed e-commerce</article-title>
          .
          <source>In DEXA '01: Proceedings of the 12th International Workshop on Database and Expert Systems Applications</source>
          , pages
          <fpage>833</fpage>
          -
          <lpage>837</lpage>
          , Washington, DC, USA,
          <year>2001</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>C.</given-names>
            <surname>Jackson</surname>
          </string-name>
          and
          <string-name>
            <given-names>H. J.</given-names>
            <surname>Wang</surname>
          </string-name>
          .
          <article-title>Subspace: secure cross-domain communication for web mashups</article-title>
          .
          <source>In WWW '07: Proceedings of the 16th international conference on World Wide Web</source>
          , pages
          <fpage>611</fpage>
          -
          <lpage>620</lpage>
          , New York, NY, USA,
          <year>2007</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>J.</given-names>
            <surname>Klein</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Spector</surname>
          </string-name>
          .
          <article-title>Unwitting distributed genetic programming via asynchronous javascript and xml</article-title>
          .
          <source>In GECCO '07: Proceedings of the 9th annual conference on Genetic and evolutionary computation</source>
          , pages
          <fpage>1628</fpage>
          -
          <lpage>1635</lpage>
          , New York, NY, USA,
          <year>2007</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>P.</given-names>
            <surname>Natarajan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Iyengar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. D.</given-names>
            <surname>Amer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Stewart</surname>
          </string-name>
          .
          <article-title>Sctp: an innovative transport layer protocol for the web</article-title>
          .
          <source>In WWW '06: Proceedings of the 15th international conference on World Wide Web</source>
          , pages
          <fpage>615</fpage>
          -
          <lpage>624</lpage>
          , New York, NY, USA,
          <year>2006</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>S.</given-names>
            <surname>Nathan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. J.</given-names>
            <surname>Pring</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Morar</surname>
          </string-name>
          .
          <article-title>Convert xml to json in php</article-title>
          . http://www. ibm.com/developerworks/xml/library/x-xml2jsonphp/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>W.</given-names>
            <surname>Ng</surname>
          </string-name>
          , W.-Y. Lam, and J. Cheng.
          <article-title>Comparative analysis of xml compression technologies</article-title>
          .
          <source>World Wide Web</source>
          ,
          <volume>9</volume>
          (
          <issue>1</issue>
          ):
          <fpage>5</fpage>
          -
          <lpage>33</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>T. O'Reilly</surname>
          </string-name>
          .
          <source>What is web 2</source>
          .0. http://www.oreilly.com/pub/a/oreilly/tim/ news/2005/09/30/what-is-web-
          <volume>20</volume>
          %.html.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>A. R. Schmidt</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Waas</surname>
            ,
            <given-names>M. L.</given-names>
          </string-name>
          <string-name>
            <surname>Kersten</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Carey</surname>
            ,
            <given-names>I. Manolescu</given-names>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Busse</surname>
          </string-name>
          .
          <article-title>Xmark: a benchmark for xml data management</article-title>
          .
          <source>In VLDB'01: Proceedings of the International Conference on Very Large Data Bases</source>
          , pages
          <fpage>974</fpage>
          -
          <lpage>985</lpage>
          ,
          <string-name>
            <surname>Hong</surname>
            <given-names>Kong</given-names>
          </string-name>
          , China,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <article-title>Wikipedia, the free encyclopedia</article-title>
          .
          <source>Ajax</source>
          . http://en.wikipedia.org/wiki/Ajax_ %28programming%
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <article-title>Wikipedia, the free encyclopedia. Software as a service</article-title>
          . http://en.wikipedia. org/wiki/Software_as_a_service.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>S.</given-names>
            <surname>Yokoyama</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ohta</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Ishikawa</surname>
          </string-name>
          .
          <article-title>An xml compressor by simplified element name (in japanese)</article-title>
          .
          <source>In Proceedings of DBWeb2000</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>