<!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>VViieewwiinnggFFOOAAF F- D-evDeleovpemloepntmoef natMoeftaadaMtaeEtaxdpalotraer Explorer</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Josef Petrák</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Josef Petr ́ak Faculty of Informatics and Statistics, University of Economics</institution>
          ,
          <addr-line>Prague Winston Churchill Sq. 4, 130 67, Praha 3</addr-line>
          ,
          <institution>Czech Republic Faculty of Informatics and S</institution>
        </aff>
      </contrib-group>
      <fpage>74</fpage>
      <lpage>84</lpage>
      <abstract>
        <p>Social networks are widely accepted application of Semantic Web technologies and are also interesting for general public. Nowadays there is a lack of quality user-friendly browser which could express meaning of the metadata stored in the most of FOAF profiles and present this knowledge in human-understandable form. The aim of the article is to inform about development of the AFE (Advanced FOAF Explorer) which is intended to perform these services and supersede one similar project.</p>
      </abstract>
      <kwd-group>
        <kwd>social networks</kwd>
        <kwd>Semantic Web</kwd>
        <kwd>RDF</kwd>
        <kwd>FOAF</kwd>
        <kwd>PHP5</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <sec id="sec-1-1">
        <title>Brief introduction into social networks</title>
        <sec id="sec-1-1-1">
          <title>If we consider definition of social networks published on the Wikipedia [3], we have</title>
          <p>to restrict the term to on-line social networks. It is an on-line community based on a
Website which allows each member to communicate, make friends among other
members, to discuss topics which are interesting to this community … FOAF allows
to store information about member of any community, the relationships among them
(and type of the relation such as friend of someone, parent of someone, enemy of
someone, roommates with someone …). This is interesting for most of the people
because making contacts, making friends and entertainment are the basic needs of
almost everyone.
1.2</p>
        </sec>
      </sec>
      <sec id="sec-1-2">
        <title>What is FOAF?</title>
        <p>
          The basic explanation is that FOAF is ontology. It is defined using RDF Schema [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]
and OWL [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. If you see the specification [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], you can find there a lot of classes
and their properties. Using them you can create various RDF1 statements about you,
your relatives, friend and the people who you know. You can describe your work,
schools, interests, your Websites and if you use some additional modules, you can
also describe countries you have already visited, languages which you reads, speaks
or writes and many other more or less interesting information.
        </p>
        <sec id="sec-1-2-1">
          <title>Let’s have a look at the basic structure of a FOAF profile. In the Figure 1. I gave</title>
          <p>
            an example in XML [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ] syntax of RDF. It contains some information about a person,
and statement that this person knows somebody else.
          </p>
          <p>
            As you can see, the FOAF defines terms for commonly required properties such as
name, mailbox, and gender. But the specification defines many more of them such as
chat IDs for instant messaging services (AIM, ICQ, Jabber, Yahoo!, and MSN), it
allows to state, that any person has a homepage, a weblog, to link depiction, personal
interests. The most interesting property is &lt;foaf:knows&gt; which states that a
person knows any other person. The type of the relation is not defined. If you want to
explicitly define the quality of the relationship between to persons, you have to use
extension RELATIONSHIP [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ] which contains a lot of interesting sub-properties,
e.g. previously mentioned friend of, enemy, of, roommates with and many other such
as works with, employees, knows by reputations, sibling of, loves, … The complete
view about the vocabulary you can make reviewing the specification.
          </p>
        </sec>
      </sec>
      <sec id="sec-1-3">
        <title>1.3 How to display it on the Website</title>
        <sec id="sec-1-3-1">
          <title>There are some technical limitations which do not allow to directly put the FOAF</title>
          <p>profile into the code of any Website. You can store your profile in the file and link it
to the page using element &lt;link&gt; with parameter rel=”meta”.</p>
        </sec>
        <sec id="sec-1-3-2">
          <title>1 More information about Resource Description Framework and also the specification you</title>
          <p>can find at http://w3.org/RDF
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;rdf:RDF
xmlns:foaf="http://xmlns.com/foaf/0.1/"
&lt;foaf:Person rdf:ID="adam-smith"&gt;
&lt;foaf:name&gt;Adam Smith&lt;/foaf:name&gt;
&lt;foaf:gender&gt;male&lt;/foaf:gender&gt;
&lt;foaf:mbox rdf:resource="mailto:adam@smith.name" /&gt;
&lt;foaf:knows&gt;
&lt;foaf:Person&gt;
&lt;/foaf:Person&gt;
&lt;/foaf:knows&gt;
&lt;/foaf:Person&gt;
&lt;/rdf:RDF&gt;
&lt;foaf:name&gt;John Doe&lt;/foaf:name&gt;
&lt;foaf:knows rdf:resource="#adam-smith"/&gt;</p>
        </sec>
        <sec id="sec-1-3-3">
          <title>To have a complete view to the history we have to explain why the development of</title>
          <p>this explorer started was, and why it is called to be “advanced”. In the years in which
the FOAF itself was created there was a need for quality and extendible browser
which could serve information stored in such profiles to the user in XHTML format.</p>
        </sec>
        <sec id="sec-1-3-4">
          <title>There are several applications used for parsing in viewing these profiles, e.g. FOAF</title>
        </sec>
        <sec id="sec-1-3-5">
          <title>Web View [7] or Plink.org [8] which also integrated a simple storage for viewed</title>
          <p>metadata. But they have various problems. First of all they do not interpret all or at
least most of the FOAF terms. If an application interprets all terms, its output does not
have a nice look or the information are presented in illogical order so the user is
confused and cannot find what he is looking for. They often do not show relations
among various resources (people, people and projects ...). Another problem is that
FOAF allows easy extendibility and there are many widely used 3rd party extensions.</p>
        </sec>
        <sec id="sec-1-3-6">
          <title>Usually these browsers do not support these extensions. And the last problems is that the interface does not explicitly explain the meaning of the terms and do not allow internationalization so the non-English speak users cannot use them.</title>
        </sec>
        <sec id="sec-1-3-7">
          <title>Nowadays the most used application is FOAF Explorer [6] developed by Morten</title>
        </sec>
        <sec id="sec-1-3-8">
          <title>Frederiksen. It is based on XSL Transformations. It supports various extensions, displays some relations among the resources. But the look of the output could be created better, show more information in a user-friendlier way. And this is chance for the project of AFE!</title>
          <p>3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>History of the project</title>
      <sec id="sec-2-1">
        <title>The development was started by two students – Josef Petrák and Michal Trna - in the</title>
        <p>summer 2004. The very first goal was to quickly create first beta-version for viewing
of authors’ profiles. Further development should have focused on cleaning the
application code and to implements most commonly used FOAF extensions.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Unhappily its development was frozen in the same year. This beta version is still available [9] and the community was informed about it on the IRC channel [4].</title>
        <p>3.1</p>
        <sec id="sec-2-2-1">
          <title>The first beta – details of the implementation</title>
          <p>
            Parsing of the RDF files is done using the library RDF API for PHP [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] which is
broadly accepted library for manipulation with RDF files in the PHP applications. The
scenario of producing result is easy.
1. User writes URL of any profile which he wants to browse into the form.
2. Application tries to download the FOAF file. If it is successful, it parses the RDF
and generates in memory a RDF graph.
          </p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>3. To simplify later generating the output, the application transforms a special structure from the graph. In fact the structure is an 3D associative array where the indexes represents:</title>
        <p>− URIref of the resource
− URIref of the property describing the resource
− Auto incremented integer identifying the values of the property.</p>
      </sec>
      <sec id="sec-2-4">
        <title>The algorithm of creating the array structure is shown in the Figure 2.</title>
        <p>After that, huge function format_person($data, $model, $id_person)
goes through this array and for each resource generates XHTML code which will
appear in the output page. It also generates anchors which allow the user to click on it
and see the relations between the resources (on the figure 3 there is shown simple
output from an existing profile). You can imagine that this solution is quite “dirty”, it
lacks any design patterns but it was chosen for quick implementation of the problem.</p>
      </sec>
      <sec id="sec-2-5">
        <title>And as we can see, it works well.</title>
        <p>function get_data_structure ($model) {
$res = array();
for ($iter = $model-&gt;getStatementIterator();
$iter-&gt;hasNext();) {
$statement = $iter-&gt;next();
$predicate = $statement-&gt;getLabelPredicate();
if (!is_array($res)) {
if (!is_array($res[$predicate])) {</p>
        <p>$res[$predicate] = array();
$res[$predicate][] = $statement-&gt;getLabelObject();
}
4
4.1
}</p>
        <p>}
}
return $res;</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Future plans</title>
      <sec id="sec-3-1">
        <title>MVC Design Pattern</title>
        <sec id="sec-3-1-1">
          <title>Now is time to change the implementation, clean-up the design and remake the output. Future plans are all described in the section 4.</title>
        </sec>
        <sec id="sec-3-1-2">
          <title>In any well-designed application it is necessary to separate data model, view layer and</title>
          <p>logic which loads and manipulates with the data. In modern programming languages
such as Java or .NET there various frameworks, which allows simple use of the
pattern of Model – View – Controller. We can mention Struts2 and JavaServer</p>
        </sec>
        <sec id="sec-3-1-3">
          <title>Faces in Java, package Web.Forms in .NET. For PHP there are only limited amount</title>
          <p>of such frameworks. The most advanced is component-driven framework called
PRADO3, but it is too complex to be easily implemented. Better way is to implement
own simple MVC solution. The new library is based on PHP5 object model. All
important components are defined using interfaces andd errors are handled using
exceptions.</p>
        </sec>
        <sec id="sec-3-1-4">
          <title>2 http://jakarta.apache.org/struts/</title>
        </sec>
        <sec id="sec-3-1-5">
          <title>3 http://www.xics.com/</title>
        </sec>
        <sec id="sec-3-1-6">
          <title>Each application is started using static method, such as</title>
          <p>AfeApplication::run();, the application will recognize name of template
from the PHP file name. For index.php is assigned the template
views/_index.php. The templates are written also in PHP using foreach
construction and using getter methods of all objects from data model.</p>
        </sec>
        <sec id="sec-3-1-7">
          <title>The application class manages all operations. It starts loading resources; stores got</title>
          <p>data in any model object and the calls a viewer which uses given template and
according to the instruction views the information. The core class also catches any
thrown exception and accesses it by a getter method. Using getter and setter methods
is the basic concept of the design of this class – it makes the API clearer.</p>
        </sec>
        <sec id="sec-3-1-8">
          <title>There is a class which parses all information from server configuration variables,</title>
          <p>request variables (information sent by GET or POST methods) as well. Further
development of this MVC framework will introduce common configuration files in
INI or XML4 format.
4.2</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>History of viewed profiles</title>
        <sec id="sec-3-2-1">
          <title>To control viewed files and have a chance, how to explore unknown extensions of</title>
          <p>FOAF, it is necessary to store the data about browsed files. To maximally simplify the
task, it is designed simple database table containing three columns: URI of the viewed
file, date and time when the request was received from a user and count of triples
stored in the profile. Data may be store in any relation database but the best for simple
use in PHP5 are integrated database SQLite or MySQL 4.1 Both of them offers
object-oriented approach to the API (through the SQLiteDatabase, or mysqli
object respectively). The structure of the database table is shown in figure 3.</p>
          <p>CREATE TABLE ‘history’ (
‘uri’ VARCHAR(255) NOT NULL,
‘dt’ DATETIME NOT NULL,
‘triples’ INT UNSIGNED NOT NULL,</p>
          <p>PRIMARY KEY ( ‘uri’ , ‘dt’ )
);</p>
          <p>To create fully persistent approach, there is a class History in the application
with methods for loading and saving the data. If it is necessary to change the database,
the implementation will be changed only in this class and the rest of the application
will be not influenced by this change. The question is if implement this class straight
or define an interface and implement classes using drivers for all considered database
drivers (which were mentioned previously).</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>4 eXtensible Markup Language</title>
          <p>To complete the persistence, there is the object HistoryItem which represents
one row from the table. It defines getter and setter methods for manipulation with the
data in the object.
4.3</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>Data model</title>
        <p>The biggest change from the first version is the data model. Due to ineffective work
with the solution of an associative array it was left and now fully object – oriented
solution is going to be created. The basic concept is to represent all known RDF
resources as classes and their properties as getter methods which return array with
values of property of the same type. We can also describe the hierarchy of the
resource, e.g. that &lt;foaf:Person&gt; is a subclass of &lt;foaf:Agent&gt; (using
keyword extends). It means, that Person may have all of properties, which are
defined for the Agent and it also may have some new properties which the Agent does
not have. It also allows easily extend the application model. Changing the properties
or creating new classes is a question of seconds.</p>
        <p>In the Java, the class in the hierarchy of classes is java.lang.Object. Also
our data model has a super class which defines common methods and properties.</p>
        <sec id="sec-3-3-1">
          <title>They are common for all types of resources. This class represents the resource</title>
          <p>&lt;rdf:Resource&gt;. There is also interface Labelable which defines one
common methods called getCommonLabel(). This method offers label which will
appear in the name resource (such as headers or image titles). The code of this
interface and the super class RdfResource is shown in the figure 5.</p>
          <p>As you can see, the method __toString() is used for testing purposes. It
returns the dump of structure of the class. The most interesting method is
parseRequiredProperty() it has to be called in the constructor of the model
classes for every property which we intend to read from the RDF graph. Note down
that it is necessary that if we declare any subclass, we have to send the parameters to
the super class otherwise it will not be loaded values of properties defined in the
parent classes.
interface Labelable {</p>
          <p>public function getCommonLabel();
}
class RdfResource implements Labelable {
private $uriRef;
private $rdfType;
private $foafName;
public function __construct(&amp;$model, &amp;$resource) {
$this-&gt;uriRef = $resource;
$this-&gt;parseRequiredProperty($model, $this-&gt;rdfType,
RDF::TYPE());</p>
          <p>$this-&gt;parseRequiredProperty($model, $this-&gt;foafName,
FOAF::NAME());
}
protected function parseRequiredProperty(&amp;$model,
&amp;$objectProperty, &amp;$property) {</p>
          <p>for ($i = $model-&gt;find($this-&gt;uriRef, $property, NULL)-&gt;
getStatementIterator(); $i-&gt;hasNext();) {
$stmt = $i-&gt;next();
if (is_null($objectProperty)) $objectProperty =
array();</p>
          <p>$objectProperty[] = $stmt-&gt;getLabelObject();
}
}
public function getRdfType() { return $this-&gt;rdfType; }
public function getFoafName() { return $this-&gt;foafName; }
public function __toString() { return print_r($this, true);
}
}
}
public function getCommonLabel() {</p>
          <p>if (count($this-&gt;foafName)&gt;0) return explode(', ', $this
-&gt;foafName);</p>
          <p>else return $this-&gt;uriRef-&gt;getUri();
Fig. 5. The code of the RdfResource class and the interface Labelable</p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>Internationalization</title>
        <sec id="sec-3-4-1">
          <title>Internationalization allows non-English speaking users to use this application. We</title>
          <p>have to separate labels from the index and output page, store them in one place and
create multiple translations. If we consider existing solutions for internationalizations,
there is mechanism represented by function gettext5. It is standard for PHP
application so it is not necessary to create any other now framework.</p>
        </sec>
        <sec id="sec-3-4-2">
          <title>There is also one important problem. We have to find volunteers who can translate</title>
          <p>
            these texts into languages different from Czech or English. In sure, that if we
announce new version on the FOAF IRC [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ] channel and inform about possibility to
translate the user-interface, we will find the volunteers who can help us to translate
the UI into their mother language.
4.5
          </p>
        </sec>
      </sec>
      <sec id="sec-3-5">
        <title>Data-binding</title>
        <sec id="sec-3-5-1">
          <title>We considered implementing a mechanics of data-binding which could automatically</title>
          <p>generate data model classes from given RDF Schemas and ontology. Even if it is a
good idea, we did not find any existing tool for this purpose. Our project is not
targeted to create any kind of this application. But it could be useful for developers
from the Semantic Web community. There is space for other developers to implement
it …</p>
        </sec>
        <sec id="sec-3-5-2">
          <title>One problem of this solution could be that the definition of FOAF ontology and its</title>
          <p>modules are stored in different files. Some of them are Ontologies in OWL and some
of them only RDF Schemas. So this tool should generalize the generate model and
ignore some constructions which are not common for RDFS and OWL (and its
versions).
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <sec id="sec-4-1">
        <title>It is necessary to define all necessary objects in the data model and to consider</title>
        <p>which extension support – the most important extension is the module</p>
      </sec>
      <sec id="sec-4-2">
        <title>RELATIONSHIP, which extends the basic concept of making relations among people</title>
        <p>defining a lot of new sub-properties. After that there should not be any problem which
could slow down the development. The most important goal of this project is to show
that building of any Semantic Web application is not so hard as many of developers
think.</p>
        <p>After releasing the tool and announcing it to the international FOAF community
we expect big interest in the source codes, details about the implementations and
volunteers who can create multiple translations. The aim of the project is to pay
attention to the Semantic Web, especially FOAF and to promote its using among
ordinary (understand non-programmers) users. After finishing all of these tasks, we</p>
      </sec>
      <sec id="sec-4-3">
        <title>5 Documentation of gettext: http://php.net/gettext</title>
        <p>can focus on improving our MVC framework, to the development of other RDF tools
which may help our author easier build their applications based on RDF graphs.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>1. Project Friend of a Friend: http://foaf-project.org/</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Wikipedia</surname>
          </string-name>
          . Term Social Networks: http://en.wikipedia.org/wiki/Social_network
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Wikipedia</surname>
          </string-name>
          . Term the Semantic Web: http://en.wikipedia.org/wiki/Semantic_Web
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>4. IRC channel of the FOAF developers: Server irc:irc</article-title>
          .freenode.net, channel #foaf
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Application</surname>
            <given-names>FOAF</given-names>
          </string-name>
          -a-Matic: http://www.ldodds.com/blog/archives/000087.html
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Application</surname>
            <given-names>FOAF</given-names>
          </string-name>
          Explorer: http://xml.mfd-consult.dk/foaf/explorer/
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Application</surname>
            <given-names>FOAF</given-names>
          </string-name>
          Web View: http://eikeon.com/foaf
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Application</given-names>
            <surname>People</surname>
          </string-name>
          <article-title>Link</article-title>
          .org: http://beta.plink.org/,
          <source>the project was shut down.</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Application</given-names>
            <surname>Advanced FOAF</surname>
          </string-name>
          <article-title>Explorer (AFE): http://foaf-explorer.zapisky</article-title>
          .info/
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Article</surname>
          </string-name>
          <article-title>“Jednoduchý MVC framework napsaný v PHP” (Simple MVC framework written in PHP) posted by Josef Petrák on 8th</article-title>
          <year>February 2006</year>
          : http://zapisky.info/?item=
          <article-title>jednoduchymvc-framework-napsany-v-php</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Library PHP API for</surname>
            <given-names>PHP</given-names>
          </string-name>
          : http://www.wiwiss.fu-berlin.de/suhl/bizer/rdfapi/
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>12. Specification of the FOAF Vocabulary: http://xmlns.com/foaf/0.1/</mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>RDF Schema</surname>
            <given-names>RELATIONSHIP</given-names>
          </string-name>
          :
          <article-title>A vocabulary for describing relationships between people: http://vocab</article-title>
          .org/relationship/.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. RDF Primer, Frank Manola, Eric Miller,
          <source>W3C Recommendation from 10th February</source>
          <year>2004</year>
          , The latest version is available at http://www.w3.org/TR/rdf-primer/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>OWL</given-names>
            <surname>Web Ontology Language Reference</surname>
          </string-name>
          ,
          <string-name>
            <surname>Dean</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schreiber G (Editors); 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>
            <given-names>McGuinness D.L.</given-names>
            ,
            <surname>Patel-Schneider</surname>
          </string-name>
          <string-name>
            <given-names>P.F.</given-names>
            ,
            <surname>Stein</surname>
          </string-name>
          <string-name>
            <surname>L.A.</surname>
          </string-name>
          (Authors),
          <source>W3C Recommendation, 10 February</source>
          <year>2004</year>
          . The latest version is http://www.w3.org/TR/owlref/.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Extensible Markup</surname>
          </string-name>
          <article-title>Language (XML) 1</article-title>
          .0,
          <string-name>
            <surname>Second</surname>
            <given-names>Edition</given-names>
          </string-name>
          , Bray T.,
          <string-name>
            <surname>Paoli</surname>
            <given-names>J.</given-names>
          </string-name>
          , SperbergMcQueen
          <string-name>
            <given-names>C.M.</given-names>
            ,
            <surname>Maler</surname>
          </string-name>
          <string-name>
            <surname>E</surname>
          </string-name>
          . (Editors),
          <source>World Wide Web Consortium, 6 October</source>
          <year>2000</year>
          . The latest version is http://www.w3.org/TR/REC-xml.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <source>17. XHTML 1</source>
          .0 The
          <string-name>
            <surname>Extensible HyperText Markup Language (Second Edition</surname>
          </string-name>
          ),
          <source>World Wide Web Consortium. 26 January</source>
          <year>2000</year>
          , revised
          <issue>1</issue>
          <year>August 2002</year>
          .
          <article-title>The latest version of XHTML 1 is available</article-title>
          at http://www.w3.org/TR/xhtml1/.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <source>RDF Vocabulary Description Language 1</source>
          .0:
          <string-name>
            <given-names>RDF</given-names>
            <surname>Schema</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Brickley D.</given-names>
            ,
            <surname>Guha R</surname>
          </string-name>
          .V. (Editors),
          <source>W3C Recommendation, 10 February</source>
          <year>2004</year>
          . The latest version is http://www.w3.org/TR/rdf-schema/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>