<!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>Curating Semantic Linked Open Datasets for Software Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Kavi Mahesh</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aparna Nagarajan</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Apoorva Rao Balevalachilu</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Karthik Prasad</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Centre for Knowledge Analytics and Ontological Engineering - KAnOE, PES Institute of Technology</institution>
          ,
          <addr-line>Bangalore 560085</addr-line>
          <country country="IN">India</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>A typical software engineer spends a signi cant amount of time and e ort reading technical manuals to nd answers to questions especially those related to features, versions, compatibilities and dependencies of software and hardware components, languages, standards, modules, libraries and products. It is currently not possible to provide a semantic solution to their problem primarily due to the non-availability of comprehensive semantic datasets in the domains of information technology. In this work, we have extracted, integrated and curated a linked open dataset (LOD) called LOaD-IT exclusively on this domain from a variety of sources including other LODs such as Freebase and DBPedia, technical documentation such as JavaDocs and others. Further, we have built a technical helpdesk system using a semantic query engine that derives answers from LOaD-IT. Our system demonstrates how productivity of the software engineer can be improved by eliminating the need to read through lengthy technical manuals. We expect LOaD-IT to become more comprehensive in the future and to nd other related practical applications.</p>
      </abstract>
      <kwd-group>
        <kwd>Linked Open Data</kwd>
        <kwd>software engineering</kwd>
        <kwd>technical helpdesk</kwd>
        <kwd>information retrieval</kwd>
        <kwd>semantic search</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Software developers, test engineers, researchers and students face technical queries
in the course of their daily work. The solution to their problems, more often than
not, is to go through some technical documentation, search for information, look
for a similar question on on-line forums, or to ask somebody who is considered an
expert in that domain. Unfortunately, information from these sources is rather
unstructured, distributed and di cult to obtain. The process of going through
the technical documentation is tedious and time consuming. What the person
ideally wants is a quick and precise answer to the question perhaps augmented
by a suitable visualization to aid comprehension. The objective of our work is to
enhance workplace productivity of information technology workers by reducing
the e ort and time spent in searching for technical information.</p>
      <p>
        There is currently no readily available LOD that covers the factual
knowledge sought by a typical information technology (IT) worker. Thus, our solution
begins by semanticizing the relevant documentation by creating a linked open
data store, which we call LOaD-IT (available as an RDF dump in N-Quads
format at http://datahub.io/dataset/load-it). The potential of this highly
specialized linked data is tapped by building Kappa, a technical assistant application
prototype (Kappa is hosted at http://kanoe.org/lod/loadit-kappa.html). Kappa
takes keyword queries as input and provides speci c factual answer(s) instead
of large number of HTML pages that may or may not contain the correct and
complete answer. It also saves the user from scrolling through long manuals and
documents to manually extract the answer. In order to provide results in the
form of facts, the application rst performs query interpretation as described in
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The user of the application need not have any knowledge of the structure of
LOaD-IT or knowledge of RDF formats. Simple keywords entered in a search bar
su ce. Search results are presented as a list of facts along with hyperlinks to
relevant pages. Further, a graphical representation of the relevant RDF sub-graph
is shown to help the user visualize the facts. Use of anontology to implement
semantic search together with Web search has been demonstrated before (see, e.g.,
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]). However, such methods typically require semantic meta-data or annotations
to be manually added to existing documents or web pages.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Creating the Semantic LOD on Information</title>
    </sec>
    <sec id="sec-3">
      <title>Technology: LOaD-IT</title>
      <p>
        Existing semantic datasets [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] like DBPedia, Freebase and YAGO are quite large
and cover multiple domains while focusing heavily on common areas of interest
rather than technical domains such as IT. It is unlikely that a retrieval engine on
such a general-interest LOD will provide the necessary recall or precision for IT
users. Our aim is to curate an LOD speci c to the IT and software engineering
domains which will also be of smaller size than the above LODs.
      </p>
      <p>Another concurrent objective is to generate RDF quads from technical
manuals, user guides and other documentation that are widely available but demand
considerable amount of time and e ort to sift through. Semanticization of this
kind of documentation will contribute to raising the quality of answers (i.e.,
recall and precision) that the dataset is capable of providing at a ne grain of
detail. Extraction of RDF facts from free owing paragraphs of explanatory texts
amounts to solving core problems of natural language processing and
semantic information retrieval. Therefore, we take the practical approach of selecting
`low-hanging fruit? by focusing on relatively well-structured technical
documentation. Java Platform Standard Edition 7 Documentation API was selected for
this purpose because of its de nite structure in HTML tables and consistent
layout, thereby facilitating extraction of clean and accurate facts. The widespread
use of Java in industry and academia is another factor why this documentation
API is a good choice for our purposes.</p>
      <p>The methodology adopted for constructing the LOD has two parts:
2.1 Filtering Existing Datasets
A set of carefully chosen seed words from the domain of IT and software
engineering is used to select matching resources from Freebase and DBPedia. For
each of these resources, all triples matching the resource in their subject elds
are selected. All other triples are ltered out as irrelevant to our domain of
interest. These operations were carried out using Unix Shell scripts. The numbers of
triples obtained by this method from Freebase and DBPedia are shown in Table
1 below.
2.2 Extracting triples from technical documentation
1. A crawler is built to cover the entire documentation collection.
2. A screen scraping package is designed and built to parse the pages and
extract facts after a thorough study of the layout of each type of page.
3. Rules are written for logical mapping into quads:
(a) Check if any reuse of predicates is possible from existing vocabularies
like DC, FOAF, SKOS, and SIOC. Reuse wherever possible.
(b) If compatible predicates are not found, create new predicates that can
appropriately describe the relationships. For instance, to link a Java
method to its return type or modi er, a new predicate is required.
(c) Create and publish the required explanatory pages for predicates in RDF
and HTML formats. URLs are used to generate quads: (Subject,
Predicate, Object, Context) according to the conventions of Linked Open
Data.
4. A suitable software library is used to load the quads into a database or data
store.</p>
      <p>
        The documentation of Java 7 SE is obtained from the o cial web site and parsed
using a Python Library called BeautifulSoup4 [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The LOaD-IT dataset thus
obtained has 1.4 million quads. Statistics of the dataset are given in Table 1.
Kappa rst constructs the top k query candidates for the given keywords
using the methodology outlined in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Once the SPARQL query candidates are
generated and the best query is selected, the results are obtained by sending an
HTTP request to a REST API provided by our wrapper for LOaD-IT. This API
access to LOaD-IT can be used also by other applications in the future. Results
obtained as JSON objects are rendered both as triples and graphically to help
the user in visualizing the relevant RDF sub-graph of LOaD-IT. An easy-to-use
browser-based interface is provided for this purpose. In addition, the query is
also sent to external Web search engines (e.g., Bing) as well as on-line technical
discussion forums (e.g., StackOver ow). Results from external engines are also
displayed to the user to help them look for external content related to the query.
Fig. 1(a) shows the overall architecture of LOaD-IT and Kappa.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Example Scenarios</title>
      <p>Two example scenarios and results are presented below to illustrate the usage
of Kappa and LOaD-IT.</p>
      <p>Scenario 1 The user wants to know what to write in the import statement in
a Java program if he has a need to use a method from the Driver Class in Java.
In fact, the user may not even know whether Driver is the name of a Class or a
Package.</p>
      <p>Keywords entered: Package Driver
Facts retrieved:
java.sql type package
java.sql member Driver
Driver type class</p>
      <p>A graphical rendering of these three triples in shown in Fig. 1(b)
Scenario 2 The user wants to know the details of the Integer Class in Java.
Keywords entered: Integer
Facts retrieved:</p>
      <p>Integer comment Integer class wraps a value of the primitive type int in an object
Integer member highestOneBit,hashCode,valueOf,getInteger..</p>
      <p>Integer type class
(a) Schematic diagram of the architecture of (b) Visualization of</p>
    </sec>
    <sec id="sec-5">
      <title>5 Conclusion and Future Work</title>
      <p>Our primary aim was to create a linked open dataset for the IT domain. After
ltering existing datasets, we created a crawler and used screen scraping to
extract RDF quads from semi-structured technical documentation. We integrated
and normalized the dataset to ensure its compatibility with other LODs and
our application Kappa. A reasonably large technical dataset was obtained and
its potential was illustrated by a simple yet meaningful and useful application,
a fact- nding engine that serves as a technical helpdesk for practicing software
engineers.</p>
      <p>The dataset can be further enlarged and enriched to include RDF quads
extracted from other technical documentation and on-line discussion forums.
Further, it can be re ned and grown over time by adopting a crowd-sourcing
approach. Additionally, a vocabulary can be created speci cally for predicates
that are useful in a software engineering context and can be standardized to bring
in global acceptance. The facts that are rendered can be enriched by natural
language processing techniques to bring them closer to proper English.</p>
      <p>We expect LOaD-IT to nd several other useful applications in the near
future. An immediate possibility is to use it as a controlled vocabulary plus
ontology for corporate knowledge management. It can also be used to further
automate the generation and management of program comments and documentation
in software engineering by integrating it with IDE for various programming
languages and platforms. None of these is readily possible without LOaD-IT wherein
a federated retrieval engine would have to query various general-purpose LODs
as well as document repositories and the Web. LOaD-IT together with Kappa
promises to deliver the levels of precision and recall to make them useful in
real-world software engineering situations.</p>
      <p>A demonstration of our application Kappa is available at http://kanoe.
org/lod/loadit-kappa.html.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Tran</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rudolph</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          et al.:
          <article-title>Top-k Exploration of Query Candidates for E cient Keyword Search on Graph-Shaped (Rdf) Data</article-title>
          . (
          <year>2009</year>
          )
          <fpage>405</fpage>
          -
          <lpage>416</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Karanth</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mahesh</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Integrating Knowledge Base Retrieval with Web Search using Semantic Roles</article-title>
          <source>In: Lecture Notes in Engineering and Computer Science: Proceedings of the International MultiConference of Engineers and Computer Scientists</source>
          <year>2012</year>
          (
          <article-title>IMECS 2012</article-title>
          ,
          <article-title>ICCS 2012)</article-title>
          , Vol.
          <volume>1</volume>
          , ISBN 978-988-19251-1-4 pp.
          <fpage>344</fpage>
          -
          <lpage>349</lpage>
          IAENG Hong Kong (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jentzsch</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cyganiak</surname>
          </string-name>
          , R.:
          <source>State of the LOD Cloud. Version 0</source>
          .3 (
          <year>September 2011</year>
          ), (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Richardson</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Beautiful Soup-HTML. XML parser for Python, (</article-title>
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>