<!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>RDFHomepage or “Finally, a use for your FOAF file”</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gunnar AAstrand Grimnes</string-name>
          <email>grimnes@dfki.uni-kl.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sven Schwarz</string-name>
          <email>schwarz@dfki.uni-kl.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Leo Sauermann</string-name>
          <email>sauermann@dfki.uni-kl.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Knowledge Management DFKI GmbH Kaiserslautern</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper presents the RDFHomepage project, a framework for using a person's structured data sources to auto-generate an HTML homepage. RDFHomepage uses RDF files as input, and currently supports several well-known RDF schemas, such as FOAF. In addition to these we have RDF converters for other structured file-formats, like Bibtex. RDFHomepage produces valid HTML 4.01 Transitional pages, and makes it easy to roll-out functional homepages for a group of people. The generated HTML code is very general, allowing quick and easy page-redesigning using CSS. RDFHomepage is written in PHP and uses our system for generating PHP classes based on RDF class definitions, enabling quick and easy development of RDF handling PHP code.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>RDFHomepage is a tool for automatic generation of HTML homepages based
on RDF files and other structured information sources which a user might
already create and maintain. Figure 1 shows an overview screenshot of the default
homepage created based on a user’s RDF data. This page contains all things
one expects on a typical homepage: the top shows the person’s name, email,
telephone number etc., this is taken from his FOAF profile; further down there
is a short bibliography, this taken from a file using the homepage-schema we
created for this task; the next section lists the projects this user is involved in,
taken from the DFKI Organisational Repository (OrgRep); finally the page has
a list of people he knows, based on the friends he specified in his FOAF profile.
RDFHomepage has the following attractive features:
– Enables easy rollout of many identical websites across an organisation.</p>
      <p>Section 2 outlines the architecture of RDFHomepage. Section 3 discussed
the different datasources used by RDFHomepage and Section 4 presents our
template engine for generating PHP Classes based on RDF Schemas. Section 5
outlines some future plans and makes concluding remarks.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Architecture</title>
      <p>
        For RDFHomepage we chose to use the web-scripting language PHP. We chose
PHP because it is free and open-source, and is a powerful and feature complete
language, with good support for RDF through the RDF API for PHP (RAP) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
PHP is also very often provided by cheap hosting providers, unlike more
heavyweight solutions such as Java, making the potential userbase of RDFHomepage
much larger. In addition, PHP was also initially known as the Personal Home
Page tools, (although later renamed to PHP Hypertext Preprocessor) and we feel
RDFHomepage now brings PHP back to its roots. Alternative techniques that
were evaluated include: Treehugger by Damian Steer[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and Masahide Kanzaki’s
various XSLT tools[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. These XSLT tools were not chosen because of the steep
learning curve, the (often) silent failures which makes debugging very hard in
comparison to PHP scripts. RDFHomepage uses RDF data from several
standard sources, detailed in the next section, and in addition to these we created a
homepage schema, providing the semantic glue between the other sources, and
allowing the user to specify additional personal details in a structured form, for
example his interests or personal views on projects. Having explicit
representations of these items, rather than HTML pages, enables machine processing of
the content, such as automatic aggregation of colleagues with similar interest.
      </p>
      <p>The RDFHomepage distribution comes with a standard set of pages,
including “About me”, “Projects”, “Interests” and “Publications”. The side-bar menu
can be easily customised to include other static or dynamic pages, enabling
RDFHomepage to integrate well with exisiting homepage components. There is
also a selection of side-bar boxes available, showing elements like links to the
raw RDF sources of the page, or links to companies, projects, etc.</p>
      <p>Generation of each page compromising the RDFHomepage can take several
seconds, depending on the size of the user’s data and of course on the web-server
being used. A caching mechanism is therefore a part of RDFHomepage, which
will only regenerate pages if the underlying RDF data has changed.
Unfortunately normal HTTP/1.1 caching mechanisms could not be used for this, as a
single page might be dependent on a number of RDF files, both local and
remote, so the caching layer was implemented as an additional PHP layer around
the page-generating code.</p>
    </sec>
    <sec id="sec-3">
      <title>RDF Data</title>
      <p>3.1</p>
      <sec id="sec-3-1">
        <title>FOAF</title>
        <p>
          The Friend-of-a-Friend ontology [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] was the main point of inspiration for
RDFHomepage. A huge number of people in the semantic web community have
created their own FOAF profile and published it1, and there are millions more
generated by LiveJournal2, Ecademy3 and other social sites producing FOAF.
However, there are very few consumers of FOAF files, there have been a range
of visualisers and explorers[
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], and some proof-of-concepts on using FOAF for
distributed authentication4 and trust [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], but no application that really makes
it worth your while to create a FOAF profile. In RDFHomepage the FOAF data
is used to create the personalia “About me” page, as well as links to people
known by the user, and links to the co-authors of papers on the “Publications”
page. Extending and enriching your FOAF file now makes sense: A link to a
colleague is missing, just add him to your foaf.rdf and all parts of your page are
automatically updated.
3.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Bibtex</title>
        <p>
          BibTeX is a format for managing citations when using TeX or LaTeX. BibTex
defines different classes of publications, such as articles, books, theses, etc., and
associated optional and required properties of these. Most computer scientists
will keep a BibTeX file of their own publications up to date, for use when
selfciting or when publishing their papers on their website. There are many tools for
helping this process (for example JabRef5 and BibDesk6). Since people already
maintain this information in a structured format it makes sense to reuse this
information, and to this end we used BibTeX2RDF, written by Wolf Siberski[
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
A sample BibTeX entry converted to RDF is shown as N3 in Figure 2. The
output uses largely standard schemas, such as Dublin Core and VCARD, but
does also declare its own namespace for BibTeX specific items. (BibTeX2RDF
is configurable to output RDF confirming to any ontology, and unfortunately
the actual schema for our version not available). As can be seen from the
example the authors of a paper are represented as RDF instances of a Person
class. Each person gets a URI generated from their name and the ID of a paper
they authored, this ensures there are no collisions. BibTeX2RDF will also merge
people with exactly the same name (i.e. smushing), so there will only be one
node for each person. RDFHomepage uses the BibTeX information to create
the “Publications” page, merging the BibTeX person nodes with FOAF people,
and uses the info from the FOAF file to generate links to co-author’s webpages.
        </p>
        <sec id="sec-3-2-1">
          <title>1 http://rdfweb.org/topic/FOAFBulletinBoard</title>
        </sec>
        <sec id="sec-3-2-2">
          <title>2 http://www.livejournal.com</title>
        </sec>
        <sec id="sec-3-2-3">
          <title>3 http://www.ecademy.com/</title>
        </sec>
        <sec id="sec-3-2-4">
          <title>4 http://rdflib.net/doc/user managenemt/</title>
        </sec>
        <sec id="sec-3-2-5">
          <title>5 http://jabref.sourceforge.net/</title>
        </sec>
        <sec id="sec-3-2-6">
          <title>6 http://bibdesk.sourceforge.net/</title>
          <p>This means users have an interest in keeping the names aligned, and may edit
their BibTeX accordingly. We note however, that this is not really a technically
satisfying solution. In addition to the author links, RDFHomepage will also link
to the PDFs of any papers available for download, as well as generating links to
the homepages of the venues where papers are published. The PDF downloads
links are taken from BibTeX directly, URL being one of the optional fields of
all BibTeX types, and most BibTeX tools make is easy to attach PDFs to
citations this way. These links are retrieved from an internal DFKI wiki page listing
conference abbreviations and corresponding web-links. To generate links to the
corresponding conferences, a social approach was taken. This gathering of
relevant conferences and their URLs was already being done in our research-group
and the existing Wiki page is now simply parsed looking for HTML links tags
with abbreviations as link texts. The conference names and URLs are extracted
and matched to the names user in the BibTeX data. This motivated people to
keep the Wiki page updated, having a similar effect as seen with the FOAF files.
&lt;aberer2003chatty:ACM Press&gt; a bibtex:Organization;
:ADR [
:Country “USA”;
:Locality “New York” ];
:FN “ACM Press” .
&lt;aberer2003chatty:Aberer Karl&gt; a bibtex:Person;
:FN “Karl Aberer”;
:N [
:Family “Aberer”;
:Given “Karl” ] .
(...)
&lt;aberer2003chatty&gt; a bibtex:InProceedings;
dc:creator [
a rdf:Seq;
rdf: 1 &lt;aberer2003chatty:Aberer Karl&gt;;
rdf: 2 &lt;aberer2003chatty:Cudre-Mauroux Philippe&gt;;
rdf: 3 &lt;aberer2003chatty:Hauswirth Manfred&gt; ];
dc:date “2003-05”;
dc:identifier “http://www2003.org/cdrom/papers/refereed/p471/471-aberer.html”;
dc:publisher &lt;aberer2003chatty:ACM Press&gt;;
dc:title “The Chatty Web: Emergent Semantics Through Gossiping”;
dcterms:isPartOf [
a bibtex:Proceedings;
dc:date “2003-05”;
dc:publisher &lt;aberer2003chatty:ACM Press&gt;;
dc:title “Proceedings of the 12th Intl. WWW Conference” ;
:ADR [
:Country “Hungary”;
:Locality “Budapest” ] ];
bibtex:pages “197-206” .</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>Projects</title>
        <p>
          At the DFKI information about all projects and the people working in them is
centrally maintained in a Organisational Repository (OrgRep)7 [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. OrgRep was
originally created for use in the FRODO project, but has been maintained and
used in many DFKI projects since, for example EPOS, SmartFlow, and MyMory.
The organisation ontology is used in EPOS to infer relevant contextual
information, i.e. given a person as input the system can look up relevant projects,
and vice versa. An example project entry from OrgRep is shown in Figure 3. In
addition to the fields shown here OrgRep also contains a longer general
description of a project as HTML data, this is used on the “Project” page, unless the
user choses to override this with his own personal view on the project. Again
the heavy reuse of the data in several contexts increased the motivation to keep
your data up-to-date.
:rdfhomepage a :Project;
:belongsTo :OrganisationalModel 00095;
:containsMember a:id 20040921 120247 156f920,
:GuentherNoack,
:MalteKiesel,
:OrganisationalModel 00077,
:OrganisationalModel 00102;
:homepage “http://rdfhomepage.opendfki.de/”;
:logo “http://www.dfki.uni-kl.de/∼schwarz/rdfhomepage/images/rdfhomepage06-180.png”;
:managedBy :OrganisationalModel 00077;
:name “rdfhomepage”;
rdfs:label “rdfhomepage” .
Working with RDF on the triple level can be very difficult and time consuming
for developers and it introduces lots of scope for errors. To facilitate this process
we created an RDF Template Generator for PHP, this takes one or more RDF
Schema documents and produces a PHP class definition based on a selected
RDF Class. This means that programmers no longer have to deal directly with
the RDF API, but can continue work on the level of PHP objects which they
are more used to. An example PHP Class outline generated from the OrgRep
ontology is shown in Figure 4. Note how the properties of the OrgRep have
        </p>
        <sec id="sec-3-3-1">
          <title>7 The OrgRep ontology can be downloaded</title>
          <p>kl.de/∼grimnes/2006/03/orgrep/orgrep.rdfs
from
http://www.dfki.unibeen mapped to getter-methods of the form get namespace localname, where
the namespace is abbreviated. Each getter method takes a boolean argument
specifying whether an array or a single value should be returned. Arrays are
useful when a property is either multi-valued or the value is an RDF list or
collection, if multiple values are present but only a single value requested a
random one is returned. The values returned from these getters are either instances
of other generated template classes, depending on the value being a typed
resource and the appropriate class existing, or the raw RDF nodes otherwise. Note
also that since RDFHomepage only does processing of RDF data, there are no
setter-methods generated, however, these could easily be added following the
same pattern. The template generator allows loading of multiple schemas before
creating the classes, as is illustrated by the rdfhome htmltext property shown
in the example, which originates from the homepage schema, but still has an
rdf:domain of an OrgRep project. The template generator also supports
inference, so for example: in the case of FOAF, one can generate a Person class
which includes the properties from Agent (a super class of Person in the FOAF
schema). The generates templates build on top of RAP and can seamlessly fit
into a project already using the RAP API.</p>
          <p>
            The approach of mapping RDF objects to a the Object Orientation
framework of a programming language is not new and is similar to many other projects,
for example: Tramp [
            <xref ref-type="bibr" rid="ref9">9</xref>
            ] by Aaron Swartz (the original as far as we are aware) did
this for Python; Sparta [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ], a more up-to-date Python solution; ActiveRDF [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ],
a Ruby version; and several Java variants, for example RDFReactor [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ] and
rdf2java [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ]. Outside the RDF community this approach was also used for
mapping relational databases to objects, as done with for example Enterprise Java
Beans, or the SQLObject in Python8. There also exists a library that provides
this functionality for PHP, called RDF World [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ], but it is different from our
approach in that all the RDF processing is done at runtime, whereas we
pregenerate the class-templates. This means our solution is much faster when
running, and also removes the need to have the triples of the RDF schemas in
memory during runtime.
4.1
          </p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>Evaluation</title>
        <p>As shown by the large number of projects offering different solutions for mapping
RDF data to classes in object-orientation frameworks, this is a very natural idea.
As we see it there are two main reasons to use this approach:
1. Hiding the complexities of RDF – most programmers are comfortable with
thinking in terms of objects and classes, whereas working with RDF graphs
can be very complicated.
2. Enabling code-autocompletion – modern integrated development
environments can be a tremendous help when writing object oriented code, and
removes the need to know the ins and outs of the APIs one is using. With</p>
        <sec id="sec-3-4-1">
          <title>8 http://www.sqlobject.org/</title>
          <p>}
?&gt;
&lt;?
class org Project {
function org Project($uri,$model)
function get rdfhomepage htmlText($a=false)
function get org eMail($a=false)
function get org homepage($a=false)
function get org projectFlyer($a=false)
function get org startYear($a=false)
function get org endYear($a=false)
function get org logo($a=false)
function get org containsMember($a=false)
function get org hasProfile($a=false)
function get org informalDescription($a=false)
function get org managedBy($a=false)
function get org name($a=false)
function getProperty($s,$p,$m=False)
pre-generated code for RDF classes this convenience can also be used with
RDF.
3. Adding custom code to wrapper – by creating classes that inherit from the
generated classes one can embed functionality specific to particular classes
in the most natural place. For example, foaf:Person could have an added
function for automatically generating sha1 checksums of the email address.</p>
          <p>With regard to the first point our RDF Templates were only partly successful,
the users still have to understand how multiple values for a single property work
in RDF, and still have to understand the difference between resources, literals
and anonymous nodes. With regard to the second point, full code-completion
is possible with our solution, and was used by several of the coders during
devlopment. Code-completion being possible is another positive effect of
pregenerating the classes, a downside of this pre-generation is that we are tied to
a static schema, and cannot directly deal with properties that do not conform.
For instance, if an instance of foaf:Person has a middleName property (which
doesn’t appear in the FOAF specification), it cannot be accessed using a get
method. However, a general getProperty method is generated to work around
this.
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion &amp; Future Work</title>
      <p>RDFHomepage provides a quick and easy to way to create attractive and
informative homepages, with all the content typically found on a research active user’s
homepage. The pages are generated from RDF files allowing complete separation
of content and appearance, as well as making the homepage machine
processable by semantic web agents. Editing of a few simple configuration files makes
customising the generated pages trivial, and if the customisation offered is not
sufficient the use of auto-generated PHP classes makes writing additional PHP
code to handle RDF very easy. The scenario of “creating a homepage” proved
to be a good playground for Semantic Web technologies and as the commercial
success of facebook.com and myspace.com show, it is a very active area.
Deploying RDFHomepage at our department triggered users to keep their FOAF
files, BibTeX files, the organisational repository and internal Wiki pages
updated, and this in turn leads to more accurate date in other projects. We have
several plans for further developments of RDFHomepage, primarily we continue
to add sources of structured information that user’s may want to add to their
homepage. Things we planning to add very soon include:
– Flickr9 photo streams – for example, a side-bar box showing thumbnails of
the user’s last photos.
– RSS/Atom support – listing the last entries in the user’s blog.
– Calendar support – where is the user today? What are his plans this week?
This could for instance make use of the RDF Calendaring efforts10, which
include converters between iCal and RDF.</p>
      <p>There is also scope for improving our template system: to make it a more
general solution for RDF based software engineering we need to generate
“setters” as well as “getters” for the properties. Another important addition is to
add support for data-types that exist in PHP, and automatically convert fields
that represent for example dates to a standard format.</p>
      <p>RDFHomepage is open source, release under a GNU Public License (GPL)
and can be downloaded from http://rdfhomepage.opendfki.de. To get a better
impression of what RDFHomepage can do, consider visiting any of the author’s
homepages, they are all automatically-generated!11</p>
      <sec id="sec-4-1">
        <title>9 http://flickr.com 10 http://www.w3.org/2002/12/cal/ 11 See also http://rdfhomepage.opendfki.de/cgi-bin/trac.cgi/wiki/WorkingInstallations</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Radoslaw</given-names>
            <surname>Oldakowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Christian</given-names>
            <surname>Bizer</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.W.:</surname>
          </string-name>
          <article-title>RAP: RDF API for PHP</article-title>
          .
          <source>In: Workshop on Scripting for the Semantic Web (SFSW</source>
          <year>2005</year>
          )
          <article-title>at 2nd European Semantic Web Conference (ESWC</article-title>
          <year>2005</year>
          ).
          <article-title>(</article-title>
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Steer</surname>
          </string-name>
          , D.: TreeHugger. (http://rdfweb.org/people/damian/treehugger/)
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Kanzaki</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : XSLT Tools. (http://www.kanzaki.com/info/who.html.en)
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Brickley</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>L.: FOAF</given-names>
          </string-name>
          <string-name>
            <surname>Vocabulary Specification</surname>
          </string-name>
          (
          <year>2006</year>
          ) http://xmlns.com/foaf/0.1/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Fredriksen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : FOAF Explorer. (http://xml.mfd-consult.dk/foaf/explorer/)
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Golbeck</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hendler</surname>
          </string-name>
          , J.:
          <article-title>Trust Networks on the Semantic Web</article-title>
          .
          <source>In: Seventh International Workshop on Cooperative Information Agents (CIA-03)</source>
          , Helsinki, Finland (
          <year>2003</year>
          )
          <fpage>238</fpage>
          -
          <lpage>249</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Siberski</surname>
          </string-name>
          , W.: BibTeX2RDF. (http://www.l3s.de/∼siberski/bibtex2rdf/)
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. van Elst,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Abecker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Bernardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Lauer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Maus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Schwarz</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.:</surname>
          </string-name>
          <article-title>An Agentbased Framework for Distributed Organizational Memories</article-title>
          . In Bichler,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Holtmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Kirn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Mller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.P.</given-names>
            ,
            <surname>Weinhardt</surname>
          </string-name>
          , C., eds.:
          <article-title>Coordination and Agent Technology in Value Networks, Multikonferenz Wirtschaftsinformatik (MKWI-</article-title>
          <year>2004</year>
          ),
          <fpage>9</fpage>
          .-
          <lpage>11</lpage>
          .3.
          <year>2004</year>
          , Essen, GITO-Verlag, Berlin (
          <year>2004</year>
          )
          <fpage>181</fpage>
          -
          <lpage>196</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Swartz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>(TRAMP: Makes RDF look like Python data structures</article-title>
          . ) http://www.aaronsw.com/2002/tramp.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Nottingham</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>(Sparta: a Simple API for RDF</article-title>
          ) http://www.mnot.net/sw/sparta/.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Oren</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>(ActiveRDF - putting the semantic web on rails</article-title>
          ) http://activerdf.m3pe.org/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. V¨olkel,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Sure</surname>
          </string-name>
          , Y.:
          <article-title>RDFReactor - From Ontologies to Programmatic Data Access</article-title>
          .
          <source>In: Poster Proceedings of the Fourth International Semantic Web Conference</source>
          . (
          <year>2005</year>
          ) http://rdfreactor.ontoware.org/.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>Sven</given-names>
            <surname>Schwarz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.K.</given-names>
            ,
            <surname>Sintek</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          : (RDF2Java) http://rdf2java.opendfki.de.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Snyder</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          : (Rdfworld.php) http://chxo.com/rdfworld/index.htm.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>