# 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, $label, NULL);
// 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, $label, NULL);
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, $type, NULL);
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->label, NULL);
// 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->label, NULL);
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, $type, NULL);
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 : <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="é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 : <a href="#" title="Dernières modifications sur cette page.">2004-04-22 15:01:24</a> ::
Proprié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="é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="é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) :<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) :<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 êtes <a href="#">CharlesNepote</a> (<a href="#">Dé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>