Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# Optimisation d'un RDF

Envoyé par : ferry jeremie

Date : 15/06/2006 19:25

J'ai un peu avancé depuis mon dernier post sur le RDF.(utilisation d'overlay chargés dynamiquement avec d'autres templates, MAJ du RDF régulier avec javascript et des composants XPCOM, génération de RDF côté serveur...)

J'ai eu pas mal de déboires au début pour créer des RDF bien structurés et les traiter avec des templates. Grâce aux exemples de xulfr et le superbe Lien:example-viewer , j'ai pu me faire assez rapidement la main.

Seulement, je cale encore un petit peu pour optimiser tout ça et connaitre toutes les subtilités.

Mon exemple a pour l'instant ce rdf :

<?xml version="1.0" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:clist="http://agro.com/rdf#">
<rdf:Description rdf:about="http://agro.com/bearerofproject/messages1">
   <clist:name>Messages</clist:name>
   <clist:new>enabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/bearerofproject/createdProject1">
   <clist:name>Liste des projets créés</clist:name>
   <clist:new>disabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/bearerofproject/messages2">
   <clist:new>enabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/bearerofproject/createdProject2">
   <clist:new>disabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/investor/messages1">
   <clist:new>enabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/investor/supportedProject1">
   <clist:new>disabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/investor/topProject1">
   <clist:new>enabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/investor/messages2">
   <clist:new>enabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/investor/supportedProject2">
   <clist:new>disabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/investor/topProject2">
   <clist:new>disabled</clist:new>
 </rdf:Description>
 <rdf:Seq rdf:about="http://agro.com/projectMenu" clist:name="menu" >
   <rdf:li>
     <rdf:Seq rdf:about="http://agro.com/projectMenu/bearerofproject">
       <rdf:li>
         <rdf:Seq rdf:about="http://agro.com/projectMenu/bearerofproject/bearerofproject1">
           <rdf:li rdf:resource="http://agro.com/bearerofproject/messages1" />
           <rdf:li rdf:resource="http://agro.com/bearerofproject/createdProject1" />
         </rdf:Seq>
       </rdf:li>
       <rdf:li>
         <rdf:Seq rdf:about="http://agro.com/projectMenu/bearerofproject/bearerofproject2">
           <rdf:li rdf:resource="http://agro.com/bearerofproject/messages2" />
           <rdf:li rdf:resource="http://agro.com/bearerofproject/createdProject2" />
         </rdf:Seq>
     </rdf:li>
     </rdf:Seq>
   </rdf:li>
   <rdf:li>
     <rdf:Seq rdf:about="http://agro.com/projectMenu/investor">
       <rdf:li>
         <rdf:Seq rdf:about="http://agro.com/projectMenu/investor/investor1">
           <rdf:li rdf:resource="http://agro.com/investor/messages1" />
           <rdf:li rdf:resource="http://agro.com/investor/supportedProject1" />
           <rdf:li rdf:resource="http://agro.com/investor/topProject1" />
         </rdf:Seq>
       </rdf:li>
       <rdf:li>
         <rdf:Seq rdf:about="http://agro.com/projectMenu/investor/investor2">
           <rdf:li rdf:resource="http://agro.com/investor/messages2" />
           <rdf:li rdf:resource="http://agro.com/investor/supportedProject2" />
           <rdf:li rdf:resource="http://agro.com/investor/topProject2" />
         </rdf:Seq>
     </rdf:li>
     </rdf:Seq>
   </rdf:li>
 </rdf:Seq>
 <rdf:Description rdf:about="http://agro.com/projectMenu/bearerofproject" clist:new="enabled" clist:type="Porteurs de projets" />
 <rdf:Description rdf:about="http://agro.com/projectMenu/investor" clist:new="enabled" clist:type="Investisseurs" />
 <rdf:Description rdf:about="http://agro.com/projectMenu/bearerofproject/bearerofproject1">
   <clist:name>Porteur de projet1</clist:name>
   <clist:new>enabled</clist:new>
   <clist:messages>enabled</clist:messages>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/projectMenu/bearerofproject/bearerofproject2">
   <clist:name>Porteur de projet2</clist:name>
   <clist:new>enabled</clist:new>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/projectMenu/investor/investor1">
   <clist:name>Investisseur1</clist:name>
 </rdf:Description>
 <rdf:Description rdf:about="http://agro.com/projectMenu/investor/investor2">
   <clist:name>Investisseur2</clist:name>
 </rdf:Description>
</rdf:RDF>

et le tree qui met en forme :

<tree id="tree" hidecolumnpicker="true" style="margin:0.5em;" flex="1" datasources="rdf:null" ref="http://agro.com/projectMenu">
  <treecols>
    <treecol id="services" label="Type de service" primary="true" flex="1" />
  </treecols>
  <template>
   <rule>
     <conditions>
       <content uri="?uri" />
       <member container="?uri" child="?typeC" />
       <triple subject="?typeC" predicate="http://agro.com/rdf#type" object="?type" />
     </conditions>
     <bindings>
       <binding subject="?typeC" predicate="http://agro.com/rdf#new" object="?new" />
      </bindings>
      <action>
        <treechildren flex="1">
         <treeitem  uri="?typeC" container="true" open="true">
           <treerow>
             <treecell properties="?new" label="?type"/>
           </treerow>
          </treeitem>
         </treechildren>
       </action>
      </rule>
      <rule>
       <conditions>
        <content uri="?uri" />
        <member container="?uri" child="?typeC" />
        <triple subject="?typeC" predicate="http://agro.com/rdf#name" object="?name" />
       </conditions>
       <bindings>
         <binding subject="?typeC" predicate="http://agro.com/rdf#new" object="?new" />
       </bindings>
       <action>
         <treechildren flex="1">
           <treeitem  uri="?typeC" container="true" open="true">
             <treerow>
               <treecell properties="?new" label="?name"/>
             </treerow>
           </treeitem>
          </treechildren>
        </action>
      </rule>
   </template>
</tree>

Jusqu'à là : tout marche bien

et ça me donne un résultat dans ce genre :

Porteurs de Projets
 |_Porteurs de projets1
   |_Messages
   |_Liste des projets créés
 |_Porteurs de projets2
   |_Messages
   |_Liste des projets créés
Investisseurs
 |_Investisseur1
   |_Messages
   |_Liste des projets soutenus
   |_Top des projets
 |_Investisseur2
   |_Messages
   |_Top des projets

Seulement, il y a redondance dans mon RDF : en effet, tous les "Porteurs de projets" auront forcément des "messages" et une "liste de projets créés".(le principe est le même pour les investisseurs et d'autres types d'intervenants non cité)

La seul particularité pour chaque intervenant unique est de pouvoir savoir si les messages (ou une autre sous-rubrique) a des nouveautés ou non.

Comme dit: ça marche très bien ainsi (c'est pourquoi je ne me borne pas dessus) mais j'ai peur que le fichier RDF s'agrandisse de manière exponentiel inutilement.

J'espère être clair. Merci d'avance.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.