<!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>Powl - A Web Based Platform for Collaborative Semantic Web Development</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Leipzig</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>We outline Powl, an opensource, web-based semantic web development platform for PHP. It may be used as a foundational framework for semantic web applications. Powl allows parsing, storing, querying, manipulating, versioning, serving and serializing RDF-S and OWL knowledge bases in a collaborative web enabled environment. Detailed project information, a demonstration and complete source code of Powl is available at http://powl.sf.net.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>In this demonstration paper we give an overview on Powl, a web based ontology
management tool. Its capabilities include parsing, storing, querying, manipulating,
versioning, serving and serializing RDF and OWL knowledge bases for different
target audiences. For the semantic web researcher it may provide a test bed for rapid
implementations of new approaches. For the web application developer it offers an
object-oriented application programming interface for semantic web software
development. For knowledge engineers there is a sophisticated web interface for
collaborative development of ontologies in a web enabled environment.</p>
      <p>Powl is implemented in the web scripting language PHP1. An implementation in a
script language has serveral advantages. In addition to being platform independent,
Powl is thus simple to modify and extend by researchers and semantic web
developers. The source code is compact and easy to grasp. This results in a short development
time - Powl was developed in approximately 9 man-months so far.</p>
      <p>An advantage of PHP in particular is that it is by far the most widely used
programming language for web applications. Conservatively estimated PHP is available
at 35% of all websites worldwide and thus outnumbering all other web application
technologies. Since the Semantic Web is considered to be an extension of the current
World Wide Web, we are deeply convinced that the semantic web paradigm will only
be successful in a broad perspective if there are applications and tools available
tightly interacting with PHP.</p>
      <p>
        Beside this being the main reason for developing Powl we reviewed existing
ontology management tools. Michael Denny’s “Ontology Tools Survey” [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] summarizes
features of 94 ontology editors. None of them seems to combine a collaborative, web
accessible user interface with native RDF-S and OWL handling. However we want to
mention some tools which inspired Powl development in some. Protégé in
conjunction with the OWL-Plugin [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] provides a highly advanced user interface for editing
OWL knowledge bases. With Sesame [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and Redland [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] efficient storage and
querying engines are available. The Jena API [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] provides a highly comprehensive
application programming interface for working with knowledge bases. Each of them
has its particular focus. Powl is meant to be a comprehensive ontology management
tool. It consistently integrates different facets of ontology management such as
storage and querying, supplying an application programming interface and a collaborative
web user interface. The price of generality, of course, is that Powl cannot be leading
in every subarea of ontology management. Compared with other all-in-one ontology
management tools like KAON [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] or WebODE [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] Powl tries to be in its core as
close to the Semantic Web knowledge representation standards as possible.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2 Architecture</title>
      <p>Powls architecture consists of 4 stacked tiers, while trying to minimize dependencies
and supplying clean interfaces between tiers. It consists of the following tiers:
• Powl store – SQL compatible relational database backend
• RDFAPI, RDFSAPI, OWLAPI – layered APIs for handling RDF, RDF-Schema
(RDFS) and OWL
• Powl API – containing classes and functions to build web applications on top of
those APIs
• User interface – a set of PHP pages combining widgets provided by Powl API
for accessing (browsing, viewing, editing) model data in a Powl store.
The generic API components are described in more detail in the remainder of this
section, while more Powl specific functionality and the user interface are presented in
Sections 3 to 7.</p>
      <sec id="sec-2-1">
        <title>Powl Store</title>
        <p>
          Any SQL compatible relational database supported by AdoDB [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], which is the
database abstraction layer used by Powl, may act as a Powl store. The following database
tables are used to store all information related to ontologies and their evolution:
The Powl store uses a denormalized database schema, where all resources and literals
are written in full in a table row representing an RDF statement. Tests done by the
RDFAPI developers state in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] that this is 2 to 3 times faster than a normalized
database schema where resources and literal values are stored separately. The Powl
store is accessed by RDFAPI.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>RDFAPI</title>
        <p>
          RAP – RDFAPI for PHP [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] – is an independent project by Chris Bizer, Radoslaw
Oldakowski and others. It provides the following functionality to Powl:
• Parser, serializer for different RDF serializations (XML, N3, N-Triple)
• RDQL declarative query backend
• Classes and methods for working with RDF models, resources and literals
• NetAPI for publishing models on the web.
        </p>
        <p>The higher layered APIs, RDFSAPI and OWLAPI, extend the classes “Model”,
“Resource” and “Literal” provided by RDFAPI.</p>
      </sec>
      <sec id="sec-2-3">
        <title>RDFSAPI</title>
        <p>
          RDFSAPI extends RDFAPI’s class schema by RDF-Schema [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] specific classes. The
interpreted languages approach of “typelessness” is applied, whenever a resource
(class, instance, property respectively) is requested (e.g. as a function parameter) the
following options representing the resource are available:
• RDFSResource object
• Local name (as a string, e.g. “Article”)
• URI (as a string, e.g. “http://purl.org/net/nknouf/ns/bibtex#Article”)
• Namespace prefix and local name (as a string, e.g. “bibtex:Article”)
The following table gives an overview over methods exposed by the main RDFSAPI
classes. Each value in curly brackets stands in conjunction with the prefix (as “add” or
“list”) for a different method. A complete API documentation including required
parameters for each method and detailed explanations can be found at [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
        </p>
        <p>RDFSModel
add{Triple,Class,Property,Instance}
count{Triples,Classes,Properties,Instances}
find{Triples,Resources}
get{Triple,Resource,Class,Property,Instance}
listTop{Classes,Properties}
list{Resources,Classes,Properties,Instances}
list{Namespaces,Languages,Datatypes}
remove{Triple,Resource,Class,Property,Instance}
load</p>
        <p>RDFSClass
add{Instance,Property}
count{Instances,Subclasses}
find{Instances}
get{Instance}
list{SubClasses,SuperClasses,</p>
        <p>Properties,Instances}
remove{Instance,Property}
set{SubClasses,SuperClasses,</p>
        <p>Properties}</p>
        <p>RDFSProperty
add{Domain,Range}
add{SubProperty,SuperProperty}
get{Domain,Range}
list{Domain,Range}
list{SubProperties,SuperProperties}
remove{Domain,Range}
set{Domain,Range}</p>
      </sec>
      <sec id="sec-2-4">
        <title>OWLAPI</title>
        <p>RDFSInstance
addPropertyValue
get{Class,Classes}
get{PropertyValue}
listProperties
list{PropertyValues}
setProperty{Value,Values}
All classes of RDFSAPI are extended with methods for handling OWL predefined
properties, DL axioms and restrictions, as well as basic subsumption inference. Powl
doesn't store entailed triples. In case of more abstract ontology languages layered on
top of RDFS or OWL this would lead to an explosion of required database storage.
Entailment is calculated when needed and cached for reuse.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Model Evolution and Versioning</title>
      <p>To enable domain experts to collaboratively develop shared conceptualizations based
on the Ontology Web Language a key requirement is to support a versioning strategy.
Every editing action can be decomposed into smaller editing actions and finally into
adds and removes of RDF triples to or from the RDF model. The following example
illustrates this:
Class "owl:wine" updated</p>
      <p>Labels added</p>
      <p>Label for language "de" added: "Wein"</p>
      <p>Statement added:</p>
      <p>&lt;owl:wine&gt; &lt;rdfs:label&gt; "Wein"
Label for language "ru" added: "Vino"</p>
      <p>Statement added:</p>
      <p>&lt;owl:wine&gt; &lt;rdfs:label&gt; "Vino"
Annotation property
"rdfs:seeAlso" changed from "wn-concept:103880346" into
"http://en.wikipedia.org/wiki/Wine"
Statement removed:</p>
      <p>&lt;owl:wine&gt; &lt;rdfs:seeAlso&gt; "wn-concept:103880346"
Statement added:
&lt;owl:wine&gt; &lt;rdfs:seeAlso&gt;</p>
      <p>"http://en.wikipedia.org/wiki/Wine"
Powl enables rollback of every particular editing action by determining if the
involved triples are still present (if added) or still missing (if removed). A parent action
thus may only be rolled back if all sub-actions may be rolled back as well.</p>
    </sec>
    <sec id="sec-4">
      <title>4 Customizability by Software Knowledge</title>
      <p>Instead of using configuration files or special database tables for customization, user
authorization and preference management as well as user interface translation
purposes and module integration, Powl uses a “system ontology” for storing such
knowledge. This “system ontology” may be edited and managed using Powl itself. The user
or administrator is further generically restricted to apply only valid configurations and
this approach expands software flexibility dramatically. Three examples for
knowledge in this system model are given:
• Instances of the system ontology class “Label” contain translations for all texts
presented on the user interface and keep track of their usage in different parts of
the application, thus simplifying the translation.
• Instances of the classes “User” and “Group” are responsible for authorization
and storing of preferences.
• Further classes are used to store configuration data of Powl modules and widget
plugins. Widgets for presenting and editing literal data may even be selected and
configured dependent on the context they are actually used in (e.g. the user
logged in, the data type of the literal or the property which the data value is
assigned to).</p>
      <p>Powl may be extended by software modules which are placed in a subfolder of the
Powl distribution. Modules consist of:
• A list of namespaces for which the module should be active – if a resource of
the actual model belongs to one of these namespaces the module will be loaded.
• Functions or PHP pages which provide a new view on the knowledge base or
expose distinct functionality to be presented in a separate tab.
• Functions or PHP pages which may be called for an arbitrary triple, resource,
class, property or instance – these will be linked with the corresponding objects
in other modules whenever the user selects a triple, resource, class, property or
instance.</p>
      <p>For example a semantic web content management approach was implemented as a
Powl module.
5 User Interface and Widgets for Data Editing
The user interface is arranged in tabs, each tab representing a different view on the
knowledge base. The following tabs are included in Powl (additional ones may be
added in a modular manner):
• Models – provides an overview on the models in Powls store.
• Triples – displays a browse-able and searchable list of the triples in the selected
ontology.
• Classes – hierarchically organizes classes and allows viewing and editing their
definitions.
• Properties – hierarchically organizes properties and allows viewing and editing
their definitions.
• Instances – gives various views on instances of a distinct class in the model.
• Version – provides access to information about the evolution of the ontology
Powl provides a comprehensive library of plug-ins for comfortable editing of data:
• Single and multiple line text editing
• Radio, checkbox and drop-down widgets
• WYSIWIG HTML editing (HTMLArea component integrated)
• Selection or referencing of arbitrary resources from Powls store (may be
restricted to classes, instances or properties).</p>
      <p>The resource selection widget is equipped with "configurable intelligence": if only a
few resources may be potentially selected radio, checkbox or drop-down widgets are
used, otherwise browsing and searching is enabled in a separate window. All widgets
may be customized by creating instances of a widget style profile class for the widget
in the system ontology and connecting this with a suitable OWL property.</p>
      <sec id="sec-4-1">
        <title>RDQL query builder</title>
        <p>
          RDQL is an implementation of an SQL-like query language for RDF. It treats RDF as
data and provides query with triple patterns and constraints over a single RDF model
[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Powl enables users to freely formulate their queries or use the integrated query
builder to question the knowledge base. It constraints the users input to only those
values which make up a syntactically correct RDQL query, further more the user may
only select resource and namespaces available in the knowledge base.
6
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Different Points of View on a Model</title>
      <p>From the programmer’s as well as from the knowledge engineer’s or user’s point of
view an OWL knowledge base may be seen through quite different glasses:
Triples View
Triples or RDF statements are related to natural language sentences consisting of
subject, predicate and object. Subjects, predicates and objects may be resources –
universally unique concept or entity identifiers. An object may furthermore consist of
data typed literal values – literals. In RDFS and OWL such statements or RDF triples
are used to define higher level objects like classes, properties and instances and
establish relations between them. Powl supports this view on the knowledge base by
enabling the user to view all RDF statements having a currently selected resource as
subject, predicate or object. For the programmer RDFAPI provides an exhaustive set
of methods to operate on triples.</p>
      <sec id="sec-5-1">
        <title>Database View</title>
        <p>An OWL knowledge base may be seen like an object-relational database. The
following table establishes a informal correspondence between concepts in ontological
knowledge representation and object-relational databases:</p>
        <sec id="sec-5-1-1">
          <title>RDFS/OWL concept RDBMS concept</title>
          <p>Classes
Properties
Instances
To view a knowledge base in database manner, a highly configurable and filterable
“instance overview” arranges instances of a class in a tabular view. Further instances
may be exported and imported in spreadsheet and database compatible CSV format.
The programmer is supplied with the SQL inspired declarative query language RDQL
and methods for database table row like operations on instances.
For the correspondance between Description Logic knowledge bases and OWL
ontologies the Powl user interface provides special widgets supporting the user in
viewing and editing class construction, property restriction and individual identity axioms.
These widgets are bound to corresponding OWLAPI calls providing this functionality
on the API level.</p>
        </sec>
      </sec>
      <sec id="sec-5-2">
        <title>Serialization View</title>
        <p>For RDF abstract syntax, which is the core of all models in Powl, there are different
serialization formats: RDF/XML, N3, N-Triple. Powl supports viewing and editing of
all parts of the ontology (classes, properties and instances with associated
information) in these formats.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>7 Scalability</title>
      <p>Powl is designed to work with ontologies of arbitrary size (only limited by disk
space). This requires that only those parts of the ontology are loaded into main
memory which are required to display the information requested by the user on the screen
(to render a web page containing this information). Special efforts are done to realize
this for the subsumption tree view of classes. Subtrees are loaded on demand using
Javascript and only if not already done. This mechanism even enables rendering
virtually infinite trees in a webpage, which may occur if a subclass is declared to be
equivalent to one of its super-classes.</p>
      <p>The following benchmarks were taken on a recent system (Pentium 4, 2.8 Ghz, 512
MB RAM) with the WAMP (Windows, Apache, PHP, MySQL) software installed.
The only optimization of the system was to enable MySQL's query cache. By further
optimization (especially OPcode Caching as Zend Accelerator, APC or MMCache
provide) significant speed improvements may be possible.</p>
      <sec id="sec-6-1">
        <title>Model</title>
      </sec>
      <sec id="sec-6-2">
        <title>Wordnet2</title>
      </sec>
      <sec id="sec-6-3">
        <title>NCI Cancer</title>
      </sec>
      <sec id="sec-6-4">
        <title>Ontology3</title>
      </sec>
      <sec id="sec-6-5">
        <title>UNSPSC4</title>
        <p>Triple count Import time Classes
2 http://www.semanticweb.org/library/wordnet/
3 http://www.mindswap.org/2003/CancerOntology/
4 http://www.cs.vu.nl/~mcaklein/unspsc/</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>8 Conclusion</title>
      <p>
        For domain experts and knowledge engineers, Powl provides an easy deployable and
easy-to-use, web-based ontology editing and publishing solution. Powl supports
collaborative work with ontologies as well as observing the ontology evolution. Powl is
scalable and can be used even with extremely large knowledge bases. It may be
customized according to specific needs. For PHP developers, Powl offers a
comprehensive framework of functionalities for parsing, storing, querying, manipulating, serving
and serializing RDFS and OWL ontologies. It may function as a basis for more
domain specific web based ontology applications. Powl has been downloaded over 300
times since April 2004, when Powl development started. It is available under GNU
Public Licence5. For future releases it is planned to integrate more powerful
inferencing capabilities and to apply Powl for OWL-S [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and web service development.
5 http://www.gnu.org/copyleft/gpl.html
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Auer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Powl Homepage, The Web,
          <year>2004</year>
          , http://powl.sourceforge.net/
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dean</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>van Harmelen</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hendler</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stein</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Web Ontology Language (OWL) Reference version 1.0</article-title>
          . Recommendation,
          <source>W3C</source>
          (
          <year>2004</year>
          ), http://www.w3.org/TR/owl-ref/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Beckett</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>RDF/XML Syntax Specification (Revised)</article-title>
          .
          <source>W3C. 10 February</source>
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Berners-Lee</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hendler</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lassila</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>The semantic web</article-title>
          .
          <source>Scientific American</source>
          <volume>284</volume>
          (
          <year>2001</year>
          )
          <fpage>35</fpage>
          -
          <lpage>43</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Carroll</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , et. al:
          <article-title>Jena: Implementing the Semantic Web Recomandations</article-title>
          . Bristol.
          <year>2003</year>
          . http://www.hpl.hp.com/techreports/2003/HPL-2003-146.pdf
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Donini</surname>
            ,
            <given-names>F.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenzerini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nardi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , ,
          <string-name>
            <surname>Schaerf</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Reasoning in description logics</article-title>
          . In Brewka, G., ed.:
          <article-title>Principles of Knowledge Representation. Studies in Logic, Language and Information</article-title>
          .
          <source>CSLI Publications</source>
          , (
          <year>1996</year>
          )
          <fpage>193</fpage>
          -
          <lpage>238</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Klyne</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carroll</surname>
          </string-name>
          , J.:
          <article-title>Resource Description Framework (RDF): Concepts and Abstract Syntax</article-title>
          ,
          <year>W3C</year>
          , 10
          <year>February 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Lassila</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Swick</surname>
            ,
            <given-names>R.R.</given-names>
          </string-name>
          :
          <article-title>Resource description framework (RDF) Model and syntax specification</article-title>
          . Recommendation, W3C,
          <year>February 1999</year>
          . http://www.w3.org/TR/1999/RECrdf - syntax-19990222
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Lim</surname>
          </string-name>
          , J.:
          <article-title>ADOdb Library for</article-title>
          PHP, http://php.weblogs.com/ADODB
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>McBride</surname>
            ,
            <given-names>B:</given-names>
          </string-name>
          <article-title>"Jena: Implementing the RDF Model and Syntax Specification"</article-title>
          , in: Steffen Staab et al (eds.):
          <article-title>"</article-title>
          <source>Proceedings of the Second International Workshop on the Semantic Web - SemWeb</source>
          '
          <year>2001</year>
          ", May 2001
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Moore</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seaborne</surname>
            ,
            <given-names>A.: RDF</given-names>
          </string-name>
          <string-name>
            <surname>Net</surname>
            <given-names>API</given-names>
          </string-name>
          ,
          <source>W3C Member Submission, 2. October</source>
          <year>2003</year>
          . http://www.w3.org/Submission/2003/SUBM-rdf-netapi-
          <volume>20031002</volume>
          /
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Oldakowski</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Bizer, Chr.: RAP:
          <string-name>
            <surname>RDF API for</surname>
            <given-names>PHP</given-names>
          </string-name>
          , To be published in
          <source>Proceedings of the “1st International Workshop on Interpreted Languages”</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>OWL</given-names>
            <surname>Services</surname>
          </string-name>
          <article-title>Coalition: OWL-S: Semantic Markup for Web Services</article-title>
          , The Web,
          <year>2004</year>
          , http://www.daml.org/services/owl-s/1.0/
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Seaborne</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>RDQL - A Query Language for RDF, W3C Member Submission, 9 January 2004</article-title>
          . http://www.w3.org/Submission/RDQL/
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>15. The PHP Group: PHP Homepage, http://www.php.net.</mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Denny</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : Ontology Tools Survey, Revisited,
          <year>2004</year>
          , http://www.xml.com/pub/a/2004/07/14/onto.html
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Knublauch</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fergerson</surname>
            ,
            <given-names>R. W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noy</surname>
            ,
            <given-names>N. F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Musen</surname>
            ,
            <given-names>M. A.</given-names>
          </string-name>
          :
          <article-title>The Protégé OWL Plugin: An Open Development Environment for Semantic Web Applications</article-title>
          , Third International Semantic Web Conference - ISWC
          <year>2004</year>
          , Hiroshima, Japan (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Broekstra1</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <year>Kampman1</year>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Harmelen</surname>
          </string-name>
          ,
          <string-name>
            <surname>F.</surname>
          </string-name>
          :
          <article-title>Sesame: A Generic Architecture for Storing</article-title>
          and
          <string-name>
            <surname>Querying</surname>
            <given-names>RDF</given-names>
          </string-name>
          , Published at the
          <source>International Semantic Web Conference</source>
          <year>2002</year>
          , Sardinia, Italy.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Beckett</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Redland rdf application framework</article-title>
          . http://librdf.org/. ILRT, University of Bristol.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>McBride</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Jena: Implementing the RDF Model and Syntax Specification, WWW2001</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Volz</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Oberle</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Staab</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Motik</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <string-name>
            <surname>KAON SERVER - A Semantic Web Management System</surname>
          </string-name>
          ,
          <source>In Alternate Track Proceedings of the Twelfth International World Wide Web Conference, WWW2003</source>
          , Budapest, Hungary,
          <fpage>20</fpage>
          -
          <lpage>24</lpage>
          May
          <year>2003</year>
          . ACM,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Arpírez</surname>
          </string-name>
          , JC.;
          <string-name>
            <surname>Corcho</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Fernández-López</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Gómez-Pérez</surname>
            ,
            <given-names>A.:</given-names>
          </string-name>
          <article-title>WebODE in a nutshell</article-title>
          .
          <source>AI</source>
          Magazine
          <volume>24</volume>
          (
          <issue>3</issue>
          ):
          <fpage>37</fpage>
          -
          <lpage>48</lpage>
          .
          <year>Fall 2003</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>