<!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>RDFRoom - In an Angular Place?</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>
        <aff id="aff0">
          <label>0</label>
          <institution>Knowledge Management, DFKI GmbH Kaiserslautern</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>A lone soldier has been stranded in an alien world, filled with resources, literals and shifty anonymous nodes. Room upon room are filled with named graphs - can he find a way out? RDFRoom is an isometric RDF viewer. It gives the user ways to view and manipulate his RDF data that might make him see the data in a brand new perspective.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Motivation</title>
      <p>The ideas for RDFRoom came together from many different sources of
inspiration. Most recently was Danny Ayers’ post about the Web of World Craft1,
where he speculated that Web is best suited for displayed document or database
“shaped” data. Since RDF can go beyond that, and describes things, not just
data, the current World-Wide-Web paradigm will always have trouble
displaying such graph-based information, and games might be a better candidate for
representing such information.</p>
      <p>An earlier source of inspiration was a conversation with colleagues in the
DFKI Knowledge Management lab, where it was noted that finding things in
a computer-game is much easier than in the folder-structure on your harddisk.
Personally I reorganise my folders ever so often, but I still lose documents quite
regularly. If I could put my files in a 3D world I know well – I would always
remember that the PDF of my CV goes under the stair by the rocket launcher,
and last year’s tax-returns go with the mega-health.</p>
      <p>
        Two pieces of previous work were also crucial for the ideas of RDFRoom.
Firstly, Dennis Chao’s psdoom [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], a version of Doom where processes running
on a machine appeared as monsters in a doom level and killing them meant
killing the process. His paper also contains several good observations about the
effects of using such a user-interface. Secondly, Liam Quinn wrote an RDF based
adventure game (RDFG)2 where the world and the objects in it are described
in RDF. In Liam’s game the world was carefully scripting beforehand, but in
RDFRoom the world is the web itself, although the game is admittedly more
pointless than RDFG.
      </p>
      <p>
        A third source of inspiration was the IRC Client Colloquy3, which plays a
shotgun sound effect when people are kicked from a room. This makes for very
satisfying and immediate feedback and does also highlight the seriousness of the
action. We wanted RDFRoom to mimic this feedback when deleting nodes. Put
together with the recent interest in RDF browsers and browsable data [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], these
things made me spend a few evenings coding RDFRoom.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Overview</title>
      <p>RDFRoom represents a graph as room in an isometric world. One node of the
graph is used as the starting point - this is either specified by the user, or
RDFRoom will pick the node with the most out-going edges if no node is specified.
Each node is represented by an object in the world, there are default “blobs”
for resources, literals and anonymous node, and to make the world more
interesting typed objects have appropriate graphics, for example, mailto: URIs are
shown as e-mails, foaf:Person as characters, etc. Additional types can be added
through RDF style-sheets. The player can walk around in the world, and inspect
and re-arrange the nodes. rdfs:seeAlso links are used to generate door to other
rooms, representing other graphs. Door where the seeAlso link cannot be loaded,
because of HTTP errors, etc. will be shown as closed.</p>
      <p>RDFRoom was implemented in about 10-15 hours, using Python, PyGame4, the
fantastic RDFLib5, and the isometric engine Isotope6, modified to allow an RDF
based world.</p>
      <p>That is a very good question, and RDFRoom might be a good candidate for the
most useless code I’ve ever written. However, the question could equally well be
“Why not?”, and at least I had fun in writing RDFRoom. I also think there is
at least traces of a serious message here, and maybe it will make people think
of different ways to view data than the document paradigm.
3 http://colloquy.info
4 http://www.pygame.org
5 http://rdflib.net
6 http://www.webalice.it/simon.gillespie/Isotope.html</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Chao</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Doom as an Interface for Process Management</article-title>
          . In: Special Interest Group on Computer-Human Interaction. (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Berners-Lee</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Browsable data</article-title>
          .
          <source>Invited Talk</source>
          (
          <year>2006</year>
          ) http://www.w3.org/2006/Talks/0302-browsedata-tbl/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>