<!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>Tal4Rdf: lightweight presentation for the Semantic Web?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Pierre-Antoine Champin</string-name>
          <email>pchampin@liris.cnrs.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>CLARITY: Centre for Sensor Web Technologies, CSI, University College Dublin</institution>
          ,
          <country country="IE">Ireland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>LIRIS, Universite ́ de Lyon</institution>
          ,
          <addr-line>CNRS, UMR5205, Universite ́ Claude Bernard Lyon 1, F-69622, Villeurbanne</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>As RDF data becomes increasingly available on the Web, there is a need to render this data in different formats, aimed at end-users or applications. We propose Tal4Rdf, a template based language, implemented as an open-source project and an online demo. Tal4Rdf uses intuitive path-based expressions for querying RDF data, allows to easily generate any XML or textual output format, using available and proven technologies. We believe it has the potential to become a “scripting language for presentation”.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        More and more RDF data has become available in the recent years, thanks to different
efforts to export RDF from legacy databases [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] or existing Web content [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ], to tag
published content with machine-readable metadata [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ], or to ease the collaborative
and flexible authoring of RDF data [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ]. Furthermore, the Linked Data initiative1
advocates the interconnection of this growing amount of RDF data. It is expected that
processing, adaptation, aggregation of data from multiple sources become common
place on the Semantic Web. This creates a need for tools able to present open RDF
data to the end user. By “open”, we mean that those tools can not know in advance the
precise structure of the data, since RDF is by nature extensible. Another requirement
is the formatting to other machine-processable formats, like application-specific XML
or JSON. Indeed, adding RDF support in existing applications is not always feasible
(closed proprietary applications) or practical (lightweight embedded applications, see
also [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]).
      </p>
      <p>Tal4Rdf (T4R), a lightweight template language for RDF, aims at providing the
underlying technology to help fulfill those requirements. It allows to render RDF data
in any XML or textual format, has an open-source implementation and an interactive
demo both available at http://champin.net/t4r/. It is based on TAL
(Template Attribute Language), an existing template language that we have already reused
? This work is supported by Science Foundation Ireland under grant 07/CE/I1147 and the French</p>
      <p>
        National Research Agency (ANR) under project Cine´Lab (ANR-06-ANR-AM-025).
1 http://linkeddata.org/
successfully in the Advene framework [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], which makes us confident in the potential of
T4R as a “scripting language for presentation”.
      </p>
      <p>In the next section we will present the TAL language. Section 3 will present the
rationale and basic features of T4R, focusing on the notion of path to retrieve RDF data.
In the next section, we will discuss features of T4R that are more related to the rendering
process. Section 5 compares T4R to related works, and the last section concludes and
gives some further research directions.
2</p>
      <p>
        TAL
The Template Attribute Language or TAL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] has been introduced in the Zope web
development framework2 for presenting data in HTML or any XML format. It is a
template language: the document specifying the rendering of the underlying data is a
mock-up of the expected result. TAL puts an emphasis on preserving the integrity of
the template with regard to the target format.
      </p>
      <p>This is achieved by encoding the processing instructions in XML attributes with
a specific namespace (usually associated to the prefix tal:). Standard editors for the
target format can then be used to modify the presentation of the template without
altering (or being altered by) the processing instructions. Furthermore, only minor changes
are required in such editors to provide ad-hoc management of the TAL attributes, this
functionality being orthogonal to the other features of the format. This approach has
been applied in the Advene project and could also be applied to T4R.</p>
      <p>We present in Table 1 a subset of the processing instructions of TAL, in order to give
an overview of its capabilities. All TAL attributes use a common syntax for accessing
the underlying data: TALES (TAL Expression Syntax). TALES expressions are, in most
cases, slash-separated paths. The exact meaning of those paths depends on the
underlying data structure, but their similarity to file or URL paths makes them pretty intuitive.
Hence the idea of using TAL to query and render RDF data, as will be demonstrated in
the following sections.</p>
      <p>
        TAL also has the advantage of being implemented in several popular scripting
languages [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Hence T4R could easily be ported to those languages (the current
implementation is in Python, and uses SimpleTAL3).
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>A path to query RDF</title>
      <p>
        The rationale of using TAL for RDF rendering was that TALES paths could easily be
mapped to paths in the underlying RDF graph, hence providing an intuitive way of
querying RDF data. For example, using the FOAF vocabulary [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], a path retrieving
the homepages of the projects currently worked on by the people I know could be
represented by the path:
      </p>
      <p>knows/currentProject/homepage
2 http://zope.org/
3 http://www.owlfish.com/software/simpleTAL/
&lt;tag tal:content="x/y/z"&gt;...
&lt;tag tal:attributes="at x/y/z"&gt;...
&lt;tag tal:condition="x/y/z"&gt;...
&lt;tag tal:repeat="i x/y/z"&gt;...
&lt;tag tal:define="v x/y/z"&gt;...</p>
      <p>Replace the content of the tag by the
evaluation of x/y/z.</p>
      <p>Add or replace attribute at in the tag, with
the evaluation of x/y/z as its value.</p>
      <p>Remove the tag and its content if x/y/z
evaluates to False.</p>
      <p>Assuming that x/y/z evaluates to a
collection, variable i will iterate over it, and the
tag will be repeated for each value of i.</p>
      <p>
        Creates a variable v with the evaluation of
x/y/z as its value.
meaning that, starting from the resource representing myself, T4R would need to
traverse in sequence three arcs labelled with knows, currentProject and homepage
respectively. The rest of this section describes the actual path syntax used in T4R,
starting from this example, and explains the rationale for its design. For a full BNF grammar
of the path syntax, see [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
3.1
      </p>
      <sec id="sec-2-1">
        <title>Namespaces</title>
        <p>
          The motivating example above is a bit over-simplistic. In RDF, arcs (and resources)
are not labelled by plain terms, but by URIs, in order to avoid name clashes. We need a
way of concisely representing URIs as path elements. This problem is well known and a
common solution is to use CURIEs [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. A CURIE is composed of a namespace prefix
and a suffix, separated by a colon. The namespace prefix is associated with a namespace
URI, and the CURIE is simply interpreted as the concatenation of the namespace with
the suffix. For example, if the namespace URI http://xmlns.com/foaf/0.1/
was assigned to the prefix foaf, then the CURIE foaf:knows would correspond to
URI http://xmlns.com/foaf/0.1/knows.
        </p>
        <p>
          In T4R, namespaces prefix and URIs are associated by defining special variables
(using tal:define) of the form t4rns:prefix, in a way very similar to XML.
Note that it is recommended by [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] that CURIE prefixes should use XML namespaces
whenever available. There are several reasons why this is not done in T4R. First, T4R
aims at rendering non-XML formats, so we could not rely on XML namespaces in
all cases. Second, in XML templates, the namespaces used for querying the graph are
rarely the same as the ones used in the output format, so keeping them separate seems
to be a better practice. The final reason, though not sufficient in itself, is nevertheless
very pragmatic: not all TAL implementations give access to the XML namespace
declarations of the template.
        </p>
        <p>In the following, we will assume that the appropriate namespaces have been
declared, with their usual prefix (t4rns:rdf for the RDF namespace, t4rns:foaf
for the FOAF vocabulary, etc.).
3.2
Using CURIEs, our intuitive example above, to retrieve the homepages of the current
projects of the people I know, becomes:
hardly more complicated that our initial proposal. The evaluation of this path on an
example dataset is illustrated in Figure 1.</p>
        <p>The first interesting thing to notice is that each node may have several values for the
same property, hence such a path expression evaluates to a collection of RDF nodes,
which can be iterated with the tal:repeat construct. It is also possible to keep only
a single node by appending the T4R operator any to this path (see 3.4). However, it is
not required when the result of the path is rendered as an element content of attribute.
Hence if the path above was used as is to fill the href attribute of a link, it would
render as one of the result URIs (the other would then be ignored), keeping the link
working4.</p>
        <p>Another thing worth pointing out is that, since RDF data has a graph structure, the
path may discover the same node several times (cf. Figure 1). However, in T4R, each
node matching the path will appear only once, no matter how many times it was reached
through the path.
3.3</p>
      </sec>
      <sec id="sec-2-2">
        <title>More complex paths</title>
        <p>Sometimes, we are interested in the inverse of a given properties. This is possible by
appending :- to a CURIE. Hence, the path:
4 This tolerant behaviour, convenient for rapid prototyping of templates with open RDF data, can
nevertheless be changed to a stricter one, which is preferable for debugging complex templates.
will retrieve the people working on the same projects as myself (and yield only #paul
in the example of Figure 1).</p>
        <p>
          Another frequent problem when querying RDF data in the open is that some
properties from different vocabularies have a similar meaning (it even happens sometimes
in the same vocabulary). Since all variants are likely to be used in the data, queries
have to take all of them into account. A similar problem occurs when two properties
are defined to be inverse of each other, and can therefore be used indifferently (only by
changing the orientation of the arc). Managing this variability in common query
languages, like SPARQL [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], can be pretty cumbersome. In T4R, the keyword or can be
used to elegantly solve that problem:
will retrieve all the images representing myself (according to the FOAF vocabulary).
        </p>
        <p>One may argue that this problem can (or even should) be solved by inference rather
than the presentation layer; indeed, an inference engine will recognize that foaf:
depicts and foaf:img are, respectively, the inverse and a particular case of foaf:
depiction. Should T4R be backed by such an inference engine (which is a possible
use of T4R), the simple path foaf:depiction would be equivalent to the more
complex path above. However, in practice, inference capabilities are not always
available nor easy to add (if for example the data is accessed through a SPARQL endpoint
without inference). Aiming to be usable as a lightweight solution, T4R must provide
means to cope as well as possible with the absence of inference. The T4R keyword or
is such a mean.
3.4</p>
      </sec>
      <sec id="sec-2-3">
        <title>Operators</title>
        <p>
          We have already encountered a T4R operator: any. Although all are not listed here
because of space limitations (the interested reader is referred to [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] for an exhaustive
list), let us just describe the three categories of operators:
– Node operators (such as any) transform a collection of nodes into another
collection of nodes, hence may appear inside a path.
– Data operators transform a collection of nodes into a data values, hence may only
appear at the end of a path. Figure 2 illustrate the use of operators id (shortening a
URI to its last component) and count (counting the number of elements in a node
collection).
– Binary operators always appear between two paths; an example will be provided in
        </p>
        <p>Section 4.3.
3.5</p>
      </sec>
      <sec id="sec-2-4">
        <title>Relative and absolute paths</title>
        <p>In all the examples given above, the path was evaluated relatively to an implicit resource
(the resource being described by the template). Each CURIE in the path, including the
first one, is interpreted as a property.</p>
        <p>A path can also be evaluated relatively to the resource(s) stored in a variable (usually
resulting from the previous evaluation of another path). In this case, the first item of the
path is not a CURIE, but a variable name, for example</p>
        <p>v/foaf:currentProject
Since variable names in T4R can not contain a colon, there is no possible ambiguity
with a CURIE5.</p>
        <p>A third kind of paths are absolute paths. Those paths start with a slash, just like file
or URL absolute paths. The first CURIE of such a path is not interpreted as a property,
but as a resource. For example:</p>
        <p>/foaf:Person/rdf:type:will retrieve all the instances of foaf:Person.</p>
        <p>A simple example of the TAL language and the use of CURIE paths is given in Figure 2.
Further example from the online demo are illustrated in Figure 3.
&lt;ul tal:define="global t4rns:foaf string:http://xmlns.com/foaf/0.1/"&gt;
&lt;li tal:repeat="pe foaf:knows"&gt;
&lt;span tal:content="pe/id"&gt;someone I know&lt;/span&gt; works on:
&lt;ul&gt;
&lt;li tal:repeat="pr pe/foaf:currentProject"&gt;
&lt;a tal:attributes="href pr/foaf:homepage"</p>
        <p>tal:content="pr/id"&gt;a project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span tal:define="past pe/foaf:pastProject" tal:condition="past"&gt;
and also worked on &lt;span tal:content="past/count"&gt;n&lt;/span&gt;
project(s) in the past.</p>
        <p>&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
as the first item of a path, while variables may only appear in first position.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>T4R templates and data sources</title>
      <p>As any typical rendering engine, a T4R processor combines a presentation specification
(the template) with a data source (the RDF graph) into an output document. In this
section, we will discuss noteworthy features of those three parts.
4.1</p>
      <sec id="sec-3-1">
        <title>RDF data sources</title>
        <p>The RDF data source is provided to the T4R rendering engine as the URI of the resource
to be rendered with the template. This URI is actually used for two distinct purposes:
– identify the resource used to resolve relative paths, and
– locate the RDF data.</p>
        <p>Since it is not always the case that the URI of a resource gives access to the RDF data
about that resource, it is possible to provide T4R with an alternative URL for retrieving
RDF data. This URL can point to an RDF document, but other kinds of data sources are
possible.</p>
        <p>Follow your nose. The “Follow your nose” strategy consists in obtaining information
about a resource by retrieving data from its URI, and from other resources known to be
related to the former (e.g. with the rdfs:seeAlso property). That strategy has been
included in our T4R application: using the special URL fyn: for the data source, the
engine will retrieve data on demand from all intermediate resources involved in a path,
and their related resources. Since this can lead to retrieve a lot of data, the number of
queries that can be performed for one rendering can be bounded (this is the case for the
online demo).</p>
        <p>SPARQL endpoint. With the trend of Linked Data gaining momentum, an increasing
number of data sources are available as SPARQL endpoints. Although our
implementation does not yet provide support for SPARQL endpoint, we plan to add this feature
in a near future. Furthermore, the design of the implementation has been guided with
this aim: a path is not evaluated on the fly, but parsed until the end, then evaluated. That
way, a long path can be converted into a small number (ideally one) of SPARQL queries
rather than querying the SPARQL endpoint at each step of the path.</p>
        <p>Inference-enabled data sources. As pointed out in section 3, T4R makes no assumption
about the inference capabilities of the underlying data sources, and purposefully aims at
making no such assumption. It is not impossible, however, to deploy T4R in a context
where RDF stores or SPARQL endpoints are known to have such inference capabilities,
shifting the burden of complex queries from the templates to the inference engine.
Although we have not implemented it yet, we have a back-end architecture making such
an evolution straightforward.
4.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Output format</title>
        <p>We have stated in section 2 that TAL was designed to produce HTML and XML
documents, while we claimed in introduction that T4R is able to produce any textual
document. This deserves more explanation.</p>
        <p>Although TAL is mainly based on XML attributes, it also recognizes a special XML
element: tal:block. This element is a placeholder for TAL attributes, but only its
content, not the tag, is rendered in the output document. Its use is not encouraged, since
it breaks the validity of the template with respect to the output format, but nevertheless
necessary in some situations to produce a valid output document.</p>
        <p>The current approach of T4R for producing non-XML text-based output documents
is to:
– exclusively use tal:block elements in the body of the template,
– enclose it in an artificial XML element before processing, to make it a well-formed</p>
        <p>XML document,
– remove that artificial XML element after processing.</p>
        <p>This solution is not very elegant: processing instructions in the template are quite
verbose, requiring both the tal:block element and one of the TAL attributes.
However, it was straightforward to implement and to use, and enlarges, almost for free, the
scope of T4R.</p>
        <p>Proposing alternative syntaxes for integrating TAL processing instructions in
specific non-XML languages is a possibility. However, the burden for the user of learning
another syntax may counteract the advantage of that syntax being more integrated to
the target language.
4.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Modularity in templates</title>
        <p>Modularity is a key to scalability, hence a desirable feature for any open and web-based
technology. T4R offers two levels of modularity: one at the path level, and one at the
template level.</p>
        <p>Path level modularity is a mere consequence of a standard feature of TAL that we
have not presented yet: indirection. We saw that TAL allows the definition of variables.
A special use of variables is to evaluate their content as elements of a path. Assume the
following variable declaration:</p>
        <p>IMG
(note the TAL prefix string: indicating that the following text should not be
evaluated, but considered as a literal string). This variable can now be dereferenced in any
path using a leading question mark, avoiding the need to copy this long path multiple
times. For example, the path:</p>
        <p>foaf:knows/?IMG
will retrieve all the images representing the people I know.</p>
        <p>Template level modularity, on the other hand, is more specific to T4R. It is
implemented with the renderWith binary operator, which must be followed by a CURIE
path. For example, the following path:
will use the resource template card.html, located at the URI associated with prefix
lib, to render one of the people I know. Since templates can be located anywhere on
the Web6, the number of retrieved templates can be bounded (like retrieved graphs with
the “Follow your nose” strategy) to prevent overloading of the rendering engine.</p>
        <p>Note also that any CURIE path (or variable indirection) can be used after the
renderWith operator, allowing for complex selection of the template based on the
resource itself. For example, the following TAL sample:
tal:define = "p foaf:knows/any;</p>
        <p>t p/rdf:type/ex:template_for:-/any/asPath"
tal:content = "p/renderWith/?t"
will store a person I know in variable p, then retrieve the URI of any template suitable
for one of the declared type of that person and store it in t7, then use indirection to
render p with that template.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Related works</title>
      <p>
        The idea of using paths to query RDF is not new: see for example ARQ8, nSparql [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ],
or RDF Template [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. While the first two are general purpose query languages, RDF
Template aims at rendering RDF data to any XML document, making it very similar in
purpose to T4R. All those languages are more expressive than our path language, which
is constrained by the syntax of TALES, our underlying technology. While this limitation
could easily be lifted in theory, one of the rationale of T4R is to rely as much as possible
on the existing base of TAL, especially to make it straightforward to implement on
existing TAL libraries. Hopefully, this will allow T4R to reach a broader acceptance than
RDF Template did (the project doesn’t seem to be active anymore). Furthermore, this
constraint on T4R has the virtue of keeping the templates relatively simple, enforcing
the separation between presentation and application logics. We believe that complex
queries should be stored outside the templates and invoked by them (a planned feature
for T4R) rather than mixed with presentation structure.
      </p>
      <p>
        The reference in terms of RDF presentation is now Fresnel [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], a powerful
RDFbased language for expressing presentation knowledge for RDF. Fresnel offers a very
high level of modularity, distinguishing lenses, that group related information, from
formats, that organise this information into an abstract box model. How this box model is
rendered to concrete syntaxes is not in the scope of Fresnel and left to the
implementations. Lenses and formats can be organized in groups, and more or less complex
selectors can be defined to allow an agent to automatically identify the lenses and formats
6 Templates do not have privileged access to the system, so we do not consider this feature to
be a major security issue. It is nevertheless possible that a malicious template consume an
excessive amount of CPU time, so limiting the CPU resource granted to external templates is
a planned feature.
7 The T4R operator asPath is used to convert the URI to an appropriate CURIE, in order to
make variable t suitable for dereference.
8 http://jena.sourceforge.net/ARQ/property_paths.html
suitable for a resource. This powerful architecture has already federated several
applications, like HayStack9 and IsaViz10, being the evolution of their original stylesheet
formats [
        <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
        ].
      </p>
      <p>Compared to T4R, the strengths of Fresnel are also its weaknesses. Its model is quite
complex and not practical for rapid prototyping of templates. Furthermore, the mapping
from the abstract box model to concrete syntaxes being not specified in Fresnel, it is not
a “ready to use” solution for application developers. In fact, we believe that T4R could
be used to implement this missing step between Fresnel and concrete formats. Even
more, provided some ad-hoc mechanisms to implement Fresnel selectors, we believe
that (at least some part of) Fresnel could be implemented on top of T4R, following the
method outlined in the end of section 4.3, since Fresnel lenses and formats are expressed
in RDF. This would give an interesting hybrid rendering engine, allowing presentation
knowledge to be gradually and seamlessly migrated from quickly hacked templates to
cleanly designed lens and format groups.
6</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion and future works</title>
      <p>In this paper, we have presented Tal4Rdf (T4R), a language for rendering RDF data in
various XML and non-XML formats. Based on the proven TAL language, this uses an
intuitive path-based language for retrieving RDF data and integrates well with output
formats, both points providing it with a gentle learning curve and a suitability for rapid
development. An open-source implementation and online demo are available at http:
//champin.net/t4r/.</p>
      <p>A number of planned or possible evolution have been presented in sections 4 and 5:
alternative syntaxes for non-XML formats, integration with SPARQL endpoints and
inference-enabled RDF back-ends, support for external queries and Fresnel selectors,
and a possible T4R-based implementation of Fresnel.</p>
      <p>
        Another interesting lead would be a better integration with RDFa [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The starting
idea is that an HTML page containing RDFa is pretty similar to a T4R HTML template,
although RDFa attribute provide the RDF information rather than retrieving it from
another source. A first idea would be to convert such a page into a template, in order to
reuse its presentation with another set of data. Another idea, suggested by Niklas
Lindstro¨m, would be for T4R to automatically generate RDFa annotations when generating
HTML.
      </p>
      <p>The author would like to thank the reviewers for their constructive remarks,
including references to some related works.
9 http://haystack.csail.mit.edu/
10 http://www.w3.org/2001/11/IsaViz/</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>D2R MAP - language specification</article-title>
          . (May
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Auer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kobilarov</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lehmann</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cyganiak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ives</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          :
          <article-title>Dbpedia: A nucleus for a web of open data</article-title>
          .
          <source>Lecture Notes in Computer Science</source>
          <volume>4825</volume>
          (
          <year>2007</year>
          )
          <fpage>722</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Connolly</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Gleaning resource descriptions from dialects of languages (GRDDL)</article-title>
          .
          <source>W3C recommendation</source>
          ,
          <source>W3C (September</source>
          <year>2007</year>
          ) http://www.w3.org/TR/grddl/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Khare</surname>
          </string-name>
          , R.: Microformats:
          <article-title>The next (Small) thing on the semantic web? Internet Computing</article-title>
          , IEEE
          <volume>10</volume>
          (
          <issue>1</issue>
          ) (
          <year>2006</year>
          )
          <volume>75</volume>
          ,
          <fpage>68</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Adida</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Birbeck</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>RDFa primer</article-title>
          . W3C working group note,
          <source>W3C (October</source>
          <year>2008</year>
          ) http://www.w3.org/TR/xhtml-rdfa-primer/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Buffa</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gandon</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>SweetWiki: semantic web enabled technologies in wiki</article-title>
          .
          <source>Proceedings of the international symposium on Symposium on Wikis</source>
          (
          <year>2006</year>
          )
          <fpage>69</fpage>
          -
          <lpage>78</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Kro¨tzsch, M., Vrandecˇic´,
          <string-name>
            <surname>D.</surname>
          </string-name>
          , Vo¨lkel, M.:
          <article-title>Semantic MediaWiki</article-title>
          . In: The Semantic Web - ISWC
          <year>2006</year>
          .
          <article-title>Volume 4273 of LNCS</article-title>
          .,
          <string-name>
            <surname>Spinger</surname>
          </string-name>
          (
          <year>2006</year>
          )
          <fpage>935</fpage>
          -
          <lpage>942</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Community</surname>
          </string-name>
          , N.:
          <article-title>RDF JSON specification</article-title>
          . http://n2.talis.com/wiki/RDF JSON Specification (May
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Aubert</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          , Prie´,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          :
          <article-title>Advene: an open-source framework for integrating and visualising audiovisual metadata</article-title>
          .
          <source>In: Proceedings of the 15th international conference on Multimedia</source>
          , ACM New York, NY, USA (
          <year>2007</year>
          )
          <fpage>1005</fpage>
          -
          <lpage>1008</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Zope:
          <article-title>TAL specification 1.4</article-title>
          . http://wiki.zope.org/ZPT/TALSpecification14 (May
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <article-title>Wikipedia contributors: Template attribute language - wikipedia, the free encyclopedia</article-title>
          (
          <year>March 2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Brickley</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>FOAF vocabulary specification</article-title>
          . http://xmlns.com/foaf/spec/ (
          <year>November 2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Birbeck</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McCarron</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>CURIE syntax 1.0. W3C working draft</article-title>
          ,
          <source>W3C (March</source>
          <year>2007</year>
          ) http://www.w3.org/TR/2007/WD-curie-
          <volume>20070307</volume>
          /.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Prud'hommeaux</surname>
          </string-name>
          , E.,
          <string-name>
            <surname>Seaborne</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>SPARQL query language for RDF. W3C recommendation</article-title>
          ,
          <source>W3C</source>
          (
          <year>2008</year>
          ) http://www.w3.org/TR/rdf-sparql-query/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Champin</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <source>Tal4Rdf v0</source>
          .
          <article-title>4 reference manual</article-title>
          . Documentation, SILEX - LIRIS (May
          <year>2009</year>
          ) http://champin.net/t4r/doc/reference.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Perez</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutierrez</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>nSPARQL: a navigational language for RDF</article-title>
          .
          <source>In: Proceedings of the 7th International Conference on The Semantic Web</source>
          , Springer (
          <year>2008</year>
          )
          <fpage>66</fpage>
          -
          <lpage>81</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>RDF template language 1.0</article-title>
          . http://www.semanticplanet.com/
          <year>2003</year>
          /08/rdft/spec (March
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Pietriga</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karger</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Fresnel: A browser-independent presentation vocabulary for RDF</article-title>
          .
          <source>In: Lecture Notes in Computer Science</source>
          . Volume
          <volume>4273</volume>
          ., Athens, GA, USA (November
          <year>2006</year>
          )
          <fpage>158</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Quan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karger</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Xenon: An RDF stylesheet ontology</article-title>
          , Chila, Japan (May
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Pietriga</surname>
          </string-name>
          , E.:
          <article-title>Semantic web data visualization with graph style sheets</article-title>
          .
          <source>In: Proceedings of the 2006 ACM symposium on Software visualization, ACM</source>
          New York, NY, USA (
          <year>2006</year>
          )
          <fpage>177</fpage>
          -
          <lpage>178</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>