rn7.net/wiki

WikisemArchitectureTechnique

PagePrincipale :: rn7.net :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.179.227
# Generated by N3Serializer.php from RDF RAP.
# http://www.wiwiss.fu-berlin.de/suhl/bizer/rdfapi/index.html

@prefix ns0: <http://rn7.net/s/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ns1: <http://rn7.net/2005/06/06/sw/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .


ns0:a a ns1:semWikiSite ; rdfs:label "First object"@en ,  "Premier objet"@fr .
ns1:semWikiSite a rdfs:Class ; rdfs:label "Site wiki sémantique"@fr .
ns0: rdfs:label "Wikisem sur rn7" .



wikisem.php
<?php

// Wikisem 0.1 du 23/05/2005
// Charles Népote 2005.

/* MVC divides an application into three concerns:

    * Model - Encapsulates core application data and functionality domain logic.
    * View - obtains data from the model and presents it to the user.
    * Controller - receives and translates input to requests on the model or the view.
*/


// wikisem.php (contrôleur)
// Usage :
// wikisem.php est inclus dans un autre fichier PHP qui intègre :
//    // Fichier de configuration relatif à cette instance de wikisem
    /*    $config = array (
            'wikisem_path' => '/var/www/wikisem',
            'tpl_path' => '/var/www/wikisem/tpl',
            'modelURI' => 'http://rn7.net/2005/05/15',
            'storage' => 'file'
            );*/
//    include "/var/www/wiki-s/config.inc.php";
//    // Bibliothèque wikisem
//    include "/var/www/wikisem/wikisem.php";


// -----------------------------------------------------------------------
// --- Contrôleur
// -----------------------------------------------------------------------

// (en fonction des entrées on sélectionne telle ou telle vue)
// Entrées possibles :
// -- une action : lire, modifier, etc.
// -- un objet
// -- un identifiant utilisateur et un mot-de-passe

// -----------------------------------------------------------------------
// -- 1. Lecture des arguments
// -----------------------------------------------------------------------
define ("WKS_BASE_URL""http://127.0.0.1/wiki-s/?s=");
define ("WKS_MODEL_BASE_URI""http://rn7.net/s/");
$default_uri WKS_MODEL_BASE_URI "a";
$id = isset($_GET['s']) ? $_GET['s'] : "a";
$resource = isset($_GET['s']) ? WKS_MODEL_BASE_URI $id $default_uri;
$action = isset($_GET['action']) ? $_GET['action'] : 'show';
$lang "fr";


// -----------------------------------------------------------------------
// --- Modèle
// -----------------------------------------------------------------------
include $config['wikisem_path'] . "/model.inc.php";
//include $config['wikisem_path'] . "/model2.inc.php";



// -----------------------------------------------------------------------
// -- 2. 
// -----------------------------------------------------------------------
//$wiki = new Wiki($resource);




// -----------------------------------------------------------------------
// -- 3. Aff. de la vue en fonction des param. du script (action, etc.)
// -----------------------------------------------------------------------

// -- Si c'est un affichage
if($resource <> '' and $action == 'show')
{
    include 
$config['tpl_path'] . "/complete.inc.php";
    exit;
}


    
?>


model.inc.php
<?php


// -----------------------------------------------------------------------
// -- Include RAP
// -----------------------------------------------------------------------
define("RDFAPI_INCLUDE_DIR""/var/www/wikisem/rdfapi-php/api/");
include(
RDFAPI_INCLUDE_DIR "RdfAPI.php");

// -----------------------------------------------------------------------
// 1. Connect to the database
$rdf_database ModelFactory::getDbStore('MySQL''localhost''wikisem''root''');

// 2. Load a DbModel
$dbModel $rdf_database->getModel($config['modelURI']);
$label = new Resource("http://www.w3.org/2000/01/rdf-schema#label");

// -----------------------------------------------------------------------
// -- Données sur le site
$site = new Resource("http://rn7.net/s/");
// Titre de site (nom propre, donc non localisé)
$title getRDFSLabel($dbModel$site);

// -----------------------------------------------------------------------
// -- Données sur l'objet

// -- Nom de l'objet
// Recherche la première déclaration donnant le label de cet objet
$subject = new Resource($resource);
$objectLabel getRDFSLabel($dbModel$subject$lang);
$URLid getURLid($id);
//$o = getRDFSLabel($dbModel, new Resource('http://rn7.net/s/b'), $lang);
//echo $o;

// -----------------------------------------------------------------------
//
// -----------------------------------------------------------------------
function getRDFSLabel($model$resource$lang="")
{
    
// Ne fonctionne pas si le modèle ne contient pas la ressource
    
    // Si pas de label : "-- Sans label --"
    // Si un label sans indication de langue : on affiche
    // Si un label dans une autre langue :
    //  -- on affiche par défaut "-- sans label --"
    //  -- l'utilisateur peut vouloir les afficher par défaut
    
$label = new Resource("http://www.w3.org/2000/01/rdf-schema#label");

    if(!empty(
$lang))
    {
        
$res_model $model->find($resource$labelNULL);
        
// Puis itération sur le modèle pour trouver le bon
        
$it $res_model->getStatementIterator();
        
// Traverse model and output statements
        
while ($it->hasNext())
        {
            
$statement $it->next();
            
$r $statement->getObject();
            
//echo $r->toString();
            
if($r->getLanguage() == $lang)
            {
                
$return $r->getLabel();
                break;
            }
        }
    }
    else
    {
        
$res $model->findFirstMatchingStatement($resource$labelNULL);
        if(
$res$return $res->getLabelObject();
        else 
$return '';
    }
    return 
$return;
}

function 
resourceTypes($model$resource)
{
    
// Trouve toutes les classes d'appartenance d'une ressource
    // Renvoie un modèle
    
$type = new Resource("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
    
$res_model $model->find($resource$typeNULL);
    return 
$res_model;
}

// -----------------------------------------------------------------------
// -- Content management functions (interface)
// ----------------------------------------------------------------------

function getAllResourceTypes($model$resource$lang)
{
    
// Renvoie une chaine contenant les classes d'apartenance d'un objet
    
$res_model resourceTypes($model$resource);
    
// return $res_model->writeAsHtmlTable(); // OK
    
return serializeObjectsLabels($res_model","$lang);
}

function 
serializeObjectsLabels($model$separator$lang)
{
    
// Renvoie une liste textuelle des valeurs d'une série de triplets
    
$result '';
    
//return $model->writeAsHtmlTable(); // OK : a rdf:type b
    
$it $model->getStatementIterator();
    
// Traverse model and output statements
    
while ($it->hasNext())
    {
        
$statement $it->next();
        
//$result = $result + 1;
         
$r $statement->getObject();
         echo 
$r->toString();
         
$result .= getRDFSLabel($model$r$lang); //non
    
}
    
//return $result;
}

function 
getURLid($id)
{
    return 
WKS_BASE_URL $id;
}


?>


model2.inc.php
<?php


// model2.inc.php


// -----------------------------------------------------------------------
// -- Include RAP
// -----------------------------------------------------------------------
define("RDFAPI_INCLUDE_DIR""/var/www/wikisem/rdfapi-php/api/");
include(
RDFAPI_INCLUDE_DIR "RdfAPI.php");

//$rdf_database = ModelFactory::getDbStore('MySQL', 'localhost', 'wikisem', 'root', '');
//$dbModel = $rdf_database->getModel($config['modelURI']);

Class Wiki
{
    var 
$rd;
    var 
$dbModel;
    var 
$site;
    var 
$out;
    
    function 
Wiki($resource)
    {
         
$rd ModelFactory::getDbStore('MySQL''localhost''wikisem''root''');
        
$this->dbModel $rd->getModel('http://rn7.net/2005/05/15');
        
$this->label = new Resource("http://www.w3.org/2000/01/rdf-schema#label");
        
// -----------------------------------------------------------------------
        // -- Données sur le site
        
$this->site = new Resource("http://rn7.net/s/");
        
// Titre de site (nom propre, donc non localisé)
        
$title $this->getRDFSLabel($this->dbModel$this->site);
        
        
// -----------------------------------------------------------------------
        // -- Données sur l'objet
        
        // -- Nom de l'objet
        // Recherche la première déclaration donnant le label de cet objet
        
$this->subject = new Resource($resource);
        
$this->objectLabel $this->getRDFSLabel($this->dbModel$this->subject"fr");
        
//$o = getRDFSLabel($dbModel, new Resource('http://rn7.net/s/b'), $lang);
        //echo $o;
        
$this->out $this->dbModel->writeAsHtmlTable();
    }
    
    
// -----------------------------------------------------------------------
    //
    // -----------------------------------------------------------------------
    
function getRDFSLabel($model$resource$lang="")
    {
        
// Ne fonctionne pas si le modèle ne contient pas la ressource
        
        // Si pas de label : "-- Sans label --"
        // Si un label sans indication de langue : on affiche
        // Si un label dans une autre langue :
        //  -- on affiche par défaut "-- sans label --"
        //  -- l'utilisateur peut vouloir les afficher par défaut
    
        
if(!empty($lang))
        {
            
$res_model $model->find($resource$this->labelNULL);
            
// Puis itération sur le modèle pour trouver le bon
            
$it $res_model->getStatementIterator();
            
// Traverse model and output statements
            
while ($it->hasNext())
            {
                
$statement $it->next();
                
$r $statement->getObject();
                
//echo $r->toString();
                //echo $lang;
                //echo $r->getLanguage();
                
if($r->getLanguage() == $lang)
                {
                    
$return $r->getLabel();
                    
//echo $return;
                    
return $return;
                    break;
                }
            }
        }
        else
        {
            
$res $model->findFirstMatchingStatement($resource$this->labelNULL);
            if(
$res$return $res->getLabelObject();
            else 
$return '';
        }
        return 
$return;
    }
    
    function 
resourceTypes($model$resource)
    {
        
// Renvoie un modèle contenant les classes d'appartenance d'une ressource
        
$type = new Resource("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
        
$res_model $model->find($resource$typeNULL);
        return 
$res_model;
    }
    
    
// -----------------------------------------------------------------------
    // -- Content management functions (interface)
    // ----------------------------------------------------------------------
    
    
function getAllResourceTypes($model$resource$lang)
    {
        
// Renvoie une chaine contenant les classes d'apartenance d'un objet
        
$res_model $this->resourceTypes($model$resource);
        
// return $res_model->writeAsHtmlTable(); // OK
        
return $this->serializeObjectsLabels($res_model","$lang);
    }
    
    function 
serializeObjectsLabels($model$separator$lang)
    {
        
// Renvoie une liste textuelle des valeurs d'une série de triplets
        
$result '';
        
//return $model->writeAsHtmlTable(); // OK : a rdf:type b
        
$it $model->getStatementIterator();
        
// Traverse model and output statements
        
while ($it->hasNext())
        {
            
$statement $it->next();
            
//$result = $result + 1;
            
$r $statement->getObject();
            
//echo $r->toString();
            
$result .= $this->getRDFSLabel($this->dbModel$r$lang); //ok
        
}
        return 
$result;
    }
    
    function 
getURLid($id)
    {
        return 
WKS_BASE_URL $id;
    }
    
    function 
echoResourceURL($resource$html_id=""$css_classes="")
    {
        echo
            
"<a href=\"",
            
$resource->getLocalName(),
            
"\">",
            
$this->getRDFSLabel($this->dbModel$resource),
            
"</a>";
        return;
    }
    
    function 
echoHTMLSelect4RangeOfAResource($resource)
    {
        
// Renvoie le code HTML des propriétés qui peuvent
        // s'appliquer à une ressource
        // Exemple :
        //
        //
        
    
}
}

?>




<?php

// complete.inc.php

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html>


<head>
<title><?php echo $title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<style type="text/css">
body { font-family: Helvetica; font-size: 90%; }

/* --------------------- Menu ------------------------ */
#menu { font-size: 80%; margin-left: 5%; background-color: ; border-left: 4px outset; border-bottom: 0px outset;  width: 15%; margin-left: 82%; padding: 0.7%; }
/* ----------- */
#menu ul { margin: 0; padding: 0; margin-left: 2%; }
#menu li { margin-left: 9%; padding: 0; }
#menu li li { margin-left: 8% ; padding-left: 1%; }
#menu h2 { margin-top: 4%; margin-bottom: 0.5%; }
#copyright { padding: 3%; border-top: 1px inset; }
.selected { color:red; text-decoration:underline; }

/* --------------------- Objet ------------------------ */
#objet { float: left; width: 80%; border-top: 4px outset; }
/* ----------- */
#objet h2 { font-style: bold; }
#id { float:right; width:20%; margin: 2%; font-size: 100%; color: #ccccdd; text-align: right; border: none; }
#id a { color: #ccccdd; }
#type { margin:2%; width:70%; }
.type { font-size:70%; }

.propriete { clear:both; margin: 2%; }
  .entete { float:left; margin:0%;margin-top:0; margin-bottom:0; font-size:80%; background-color:yellow; padding:0.2% 0% 0.2% 0%; }
  .action_declaration { float:right; margin:2px; font-size:80%; }
    
.page { border:1px dashed;   }
.footer { border:1px dashed; }
.commentsheader { border:1px dashed; }    

.page, .footer, .commentsheader { clear: both; width: 100%; padding:0.2% 0% 0.2% 0%; }

#menu_objet { clear:both; background-color: pink; border: 1px solid; margin: 2%; }
#menu_objet .menu_suj { width:8%; font-size:80%; }
#menu_objet .menu_prop { width:8%; font-size:80%; background-color:yellow; }
#menu_objet .champ_val { width:78% }
#menu_objet p { margin: 0px; padding: 0.3em; }

#environ { background-color: #aaffbb; border-top: 4px solid; border-bottom: 5px solid; margin: 2%; }
#environ h3 { background-color: gray; margin: 0px; padding: 0.3em; }
#environ p { padding: 0.3em; }

/*.obj { background:transparent url('http://i.a.cnn.net/cnn/.element/img/1.0/misc/icon.external.links.gif') 100% 10% no-repeat;
padding-right:25px; }*/


@media screen {
.obj { background:transparent url('http://i.a.cnn.net/cnn/.element/img/1.0/misc/icon.external.links.gif') 100% 10% no-repeat;
padding-right:25px; }
}

@media print {
.obj { text-decoration: none; }
.obj:after { text-decoration: none; content:" *"; }
}
</style>
</head>


<body>

<?php
// Output the model as HTML table
echo $wiki->out;
$title $wiki->getRDFSLabel($wiki->dbModel$wiki->site);
$URLid $wiki->getURLid($id);
$objectLabel $wiki->objectLabel;

?>

<!-- ...............Titre du site .................. -->
<h1><?php echo $title?></h1>

<!-- .................. Objet ...................... -->
<div id="objet">


<!-- Identifiant de l'objet (URI) -->
<h1 id="id">Identifiant de l'objet&nbsp;:&nbsp;<a href="<?php echo $URLid?>" title="<?php echo "test"?>"><?php echo $id?></a></h1>


<!-- Nom de l'objet -->
<h1 id="type"><a href="<?php echo $wiki->getURLid($id); ?>" class="obj"><?php echo $objectLabel?></a>
<!-- variable affichant les types de l'objet -->
<span class="type">(<?php echo $wiki->getAllResourceTypes($wiki->dbModel$wiki->subject"fr"); ?>)</span>
</h1>


<div class="propriete">


    <p class="entete">
    <a href="#" class="obj">Description</a>
    </p>
    

    <div class="page">
    <p class="action_declaration"><a href="#" title="&eacute;diter cette déclaration." >[modifier]</a></p>

    <h3>Description de l'interface</h3>
    La page se compose de :<br />
    <ul>
    <li> le titre du site : ici WikiSem.net</li>
    <li> une zone de menu : ici à droite :<ul>

    <li> des choix relatifs aux actions possibles sur l'<strong>objet</strong> en cours de visualisation (modification, etc.)
        <ul>
        <li>les options proposées sont immédiatement compréhensibles</li>
        <li>... à l'exception des vues qui méritent une explication détaillée, donnée à la fin de cette description</li>
        </ul>
    </li>

    <li> des choix relatifs aux actions possibles sur l'ensemble de l'<strong>outil</strong> (configuration, requêtes, import-export, etc.)</li>
    <li> des choix relatifs à l'<strong>utilisateur</strong> (connexion, préférences, etc.)</li>
    </ul></li><li> une zone relative à l'objet qui est décrit :<ul>

    <li> un identifiant simple : ici "Identifiant de l'objet : a" ; cet identifiant n'est pas un titre mais seulement un identifiant calculé pour être unique ; c'est lui qui référence l'objet</li>
    <li> un titre : ici "<a href="http://www.wikini.net/wakka.php?wiki=WikiNi">WikiNi</a> (logiciel, outil collaboratif)" ; ce titre est calculé de la manière suivante :<ul>

    <li> la propriété "label" (ici "<a href="http://www.wikini.net/wakka.php?wiki=WikiNi">WikiNi</a>")</li>

    <li> suivie, entre parenthèses, des différentes classes auxquelles appartient cet objet (la classe des "objets" est sous-entendue) ; dans le cas présent, l'objet "<a href="http://www.wikini.net/wakka.php?wiki=WikiNi">WikiNi</a>" appartient à deux classes : la classe des "logiciels" et la classes des "outils collaboratifs")</li>
    </ul></li><li> les propriétés de l'objet (encadrées en jaunes), chaque propriété faisant référence à un contenu (encadré pointillé en regard de la propriété)</li>
    <li> un mini formulaire (sur fond rose) permettant d'ajouter en quelques clics une nouvelle propriété à l'objet ; noter que l'objet appartenant aux classes "logiciel" et "outil collaboratif", il ne jouit que des propriétés préalablement déterminées pour ces classes</li>
    <li> une zone concernant l'environnement de l'objet (sur fond rose) : cette zone peut être masquée :<ul>

    <li> la liste des tous les autres objets appartenant aux classes dont fait partie l'objet (les classes "logiciel" et "outil collaboratif")</li>
    <li> les propriétés possibles de cet objet (déterminées en fonction des classes dont il fait partie)</li>
    <li> une cartographie de cet objet (encore en cours de réflexion)</li>
    </ul></li>
    </ul></li>

    </ul>
    <br />
    Cette page est une vue particulière de l'objet WikiNi : la vue complète. Une vue est une représentation de l'objet avec plus ou moins d'informations, ordonnées selon des paramètres fixés dans l'outil.<br />
    <br />

    </div>


<div class="commentsheader">
Il y a 3 métadonnées relatives à cette déclaration.
[<a href="#">Afficher les métadonnées/formulaire</a>]

</div>
        

<div class="footer">
Métadonnées automatiques&nbsp;: <a href="#" title="Derni&egrave;res modifications sur cette page.">2004-04-22 15:01:24</a> ::
Propri&eacute;taire : <a href="http://www.wikini.net/wakka.php?wiki=CharlesNepote">CharlesNepote</a>
</div>

</div>


<div class="propriete">

<p class="entete"><a href="#" class="obj">Auteur</a></p>
<div class="page">
<p class="action_declaration"><a href="#" title="&eacute;diter cette déclaration." >[modifier]</a></p>
<a href="#" class="obj">Hendrick Man</a>, <a href="#" class="obj">David Delon</a>
</div>
</div>


<div class="propriete">
<p class="entete"><a href="#" class="obj">License</a></p>
<div class="page">

<p class="action_declaration"><a href="#" title="&eacute;diter cette déclaration." >[modifier]</a></p>
<a href="#" class="obj">Licence GPL</a>
</div>
</div>

<!-- <hr style="color: red;" /> -->


<!-- menu objet -->
<div id="menu_objet">
<form action="#" method="get">
<p>
Ajouter une déclaration dont <?php $wiki->echoResourceURL($wiki->subject); ?> est le sujet (assistant)&nbsp;:<br />

<?php $wiki->echoResourceURL($wiki->subject); ?>
->
<input type="hidden" name="wiki" value="propriete" />
<select name="property" class="menu_prop" />
<option>...</option>
<option>auteur</option>
<option>commentaire</option>
<option>est définit par</option>
<option>label</option>
<option>licence</option>

<option>mode</option>
<option>type</option>
<option>voir également</option>
</select>
->
<input name="property" class="champ_val" />
</p>
</form>
</div>

<!-- ==================================================== -->

<!-- menu objet -->
<div id="menu_objet">

<form action="#" method="get">
<p>
Ajouter une déclaration dont <a href="#"><?php echo $objectLabel?></a> est l'objet (assistant)&nbsp;:<br />
<input type="hidden" name="wiki" value="propriete" />
<select name="property" class="menu_suj" />
<option>...</option>
</select>
->
<input type="hidden" name="wiki" value="propriete" />
<select name="property" class="menu_prop" />
<option>...</option>

<option>utilise</option>
<option>est équivalent à</option>
<option>est différent de</option>
</select>
->
<?php $wiki->echoResourceURL($wiki->subject); ?>
</p>
</form>
</div>

<!-- ==================================================== -->
<div id="environ">

<h3>Environnement <a href="#" style="text-decoration:none;">[-/+]</a></h3>

<p>
Autres logiciels : <a href="#" class="obj">...</a>, <a href="#" class="obj">...</a>
</p>
<p>
Autres outils collaboratifs : <a href="#" class="obj">...</a>, <a href="#" class="obj">...</a>

</p>
<p>
Propriétés possibles de cet objet :
<ul>
<li>En tant qu'objet : <a href="#" class="obj">commentaire</a>, <a href="#" class="obj">est définit par</a>, <a href="#" class="obj">label</a>, <a href="#" class="obj">type</a>, <a href="#" class="obj">voir également</a></li>
<li>En tant que logiciel : <a href="#" class="obj">auteur</a>, <a href="#" class="obj">licence</a>, <a href="#" class="obj">...</a></li>

<li>En tant qu'outil collaboratif : <a href="#" class="obj">mode</a>, <a href="#" class="obj">...</a></li>
</ul>
</p>
<p>
Cartographie :
<ul>
<li><a href="#" class="obj">Objet</a> --> <a href="#" class="obj">Produit</a> --> <a href="#" class="obj">Logiciel</a> --> <a href="#" class="obj">WikiNi</a></li>

<li><a href="#" class="obj">Objet</a> --> <a href="#" class="obj">Outil</a> --> <a href="#" class="obj">Outil collaboratif</a> --> <a href="#" class="obj">WikiNi</a></li>
</ul>
</p>

</div>
<!-- /menu objet -->

</div>
<!-- /Objet -->


<!-- Menu général -->
<div id="menu">

<h2>Objet</h2>
<ul>
    <li>Modifier l'objet</li>
        <li>Ajouter une propriété</li>
        <li>Modifier les droits</li>

    <li>Supprimer l'objet</li>
    <li>S'approprier l'objet</li>
    <li>Vue
    <ul>
        <li class="selected">Vue complète</li>
        <li>Vue simplifiée</li>
        <li>A la Wiki (par défaut)</li>

        <li>Réseau FOAF</li>
        <li>Historique</li>
        <li>En réseau</li>
        <li>RDF</li>
        <li>RSS</li>
    </ul>

    </li>
</ul>
<h2>Outil</h2>
<ul>
    <li>Présentation</li>
        <li>Configuration</li>
        <li>Requêtes
    <ul>
        <li>Historique des objets</li>

        <li>Liste des objets</li>
        <li>entrées de blog</li>
        <li>recherche simple...</li>
        <li>recherche complète...</li>
    </ul>
    </li>
        <li>Importer</li>

        <li>Exporter</li>
    <li>Synchroniser</li>
    <li>Créer un nouvel objet
    <ul>
        <li>Objet nu (assistant)</li>
        <li>Classe d'objets</li>
        <li>Propriété</li>

        <li>Modèle de vue</li>
                <li>Modèle de formulaire</li>
        <li>Personne</li>
                <li>Utilisateur</li>
        <li>Une nouvelle entrée...</li>
    </ul>

    </li>
</ul>
<h2>Utilisateur</h2>
<ul>
    <li>Vous &ecirc;tes <a href="#">CharlesNepote</a> (<a href="#">D&eacute;connexion</a>)</li>
    <li>Mes requêtes
    <ul>

        <li>Nouveaux utilisateurs</li>
        <li>Nouvelles web sémantiques</li>
        <li>Dernières contribs</li>
        <li>Gérer <em>mes requêtes</em>...</li>
    </ul>
    </li>

    <li>Préférences</li>
    <li>Style</li>
</ul>

<p id="copyright">
<a href="http://validator.w3.org/check/referer">XHTML 1.0 valide ?</a> ::
<a href="http://jigsaw.w3.org/css-validator/check/referer">CSS valide ?</a> ::
-- Maquette <a href="#">WikiSem</a> "Orandre" 2004-09-03 18:00

</p>
<!-- /Menu général -->


</body>
</head>

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]