Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# [Resolu] pb compréhension RDF/Template. règles multiples

Envoyé par : frengy

Date : 21/07/2006 17:45

bonjour,

contexte
Je suis en train de réaliser une extension firefox. je teste donc en situation. c'est a dire à partir d'une version installée de mon extension

problématique
mon problème se situe dans l'écriture du template d'un arbre. j'ai pu reproduire les exemples les plus courants avec des règles en notation simplifiées ou étendues... je n'arrive pas à écrire une règle multiple

détail
j'ai réaliser un RDF (valide ... je l'ai validé avec le validateur du w3c)

mon modèle RDF est le suivant

une sequence contient plusieurs moteur
le moteur a plusieurs attributs ressources (listeA, listeB ..)

ces listes sont des séquences de ressources A1,B1 ...
les A1, ... ont des littéraux titres

dans la réalisation de mon template je réfini comme racine la séquence qui contient les moteurs
une première règle me permet de récupérer les infos du moteur mais également un listeA

ce que je voudrais c'est parcourir les A1 (une séquence comme pour les moteurs) chaque fois que je rencontre un nouveau moteur ... j'ai donc fait une deuxieme regle en me servant des variables de la premiere

ce qui donne :

moteur

  • listeA mais ce n'est pas une séquence
    • A1
    • A2
  • listeB mais ce n'est pas une séquence
    • B1
    • B2

ou bien le code :
séquence des moteurs

<RDF:Seq RDF:about="http://x.com/Root">
 <RDF:li RDF:resource="http://x.com/Moteurs/1" />
</RDF:Seq>

definition d'un moteur

  
<RDF:Description RDF:about="http://x.com/Moteurs/1"
	panoptique:Titre="Liste des objets d'un moteur"
 <panoptique:listeIsds RDF:resource="http://x.com/Isds" />
 <panoptique:listeIses RDF:resource="http://x.com/Ises" />
</RDF:Description>

definition de listeA

<RDF:Seq RDF:about="http://x.com/Isds"
  panoptique:Titre="liste des truc">
 <RDF:li RDF:resource="http://x.com/Isds/1" />
 <RDF:li RDF:resource="http://x/Isds/2" />
</RDF:Seq>

definition de A

<RDF:Description RDF:about="http://x.com/Isds/1" 
  panoptique:Titre="isd 1" />
</RDF:RDF>

la question est comment construire un arbre tel que :
moteurs

  • moteur1
    • listeA
      • A1
      • A2
    • listeB
      • B1
      • B2
  • moteur2
    • ...

je tatonne depuis deux jours .. j'ai essayé de multiples versions de templates ... et je m'y perds ... voici la version actuelle

<template>
 <rule>
  <conditions>
   <content uri="?Moteurs" />
   <member container="?Moteurs" child="?Moteur" />
   <triple subject="?Moteur"
       predicate="http://blueway-business.com/rdf#Titre"
       object="?NomMoteur" />
   <triple subject="?Moteur"	
       predicate="http://blueway-business.com/rdf#listeIsds"
       object="?ListIsds" />
  </conditions>
  <action>
   <label uri="?Moteur" value="moteurs ?Moteurs"/>
   <label uri="?Moteur" value="moteur ?Moteur"/>
   <label uri="?Moteur" value="nommoteur ?NomMoteur"/>
   <label uri="?Moteur" value="ListIsds ?ListIsds"/>
  </action>
 </rule>

jusque la tout va bien. maintenant je veux faire le lien avec les fils ...

 <rule>
  <conditions>
   <content uri="?Moteurs" />
   <member container="?ListIsds" child="?listeIsd" />
   <triple subject="?listeIsd"
       predicate="http://blueway-business.com/rdf#Titre"
       object="?NomElt" />
  </conditions>
  <action>
<label uri="?listeIsd" value="NomElt ?listeIsds"/>
  </action>
 </rule>
</template>

voilà mon problème est donc de faire le lien père fils... tous les exemples que j'ai vu semblent traiter d'arbres dont tous les niveaux sont homogènes.

merci d'avance de votre réponse ...

# Re: pb compréhension RDF/Template. règles multiples

Envoyé par : thefab

Date : 27/07/2006 15:40

Salut,

Personnellement je n'ai jamais réussi à faire fonctionner ce genre de syntaxe (càd de placer un Seq à l'intérieur d'un Description):

<RDF:Description RDF:about="http://x.com/Moteurs/1">
  <panoptique:listeIsds RDF:resource="http://x.com/Isds"/>
</RDF:Description>

<RDF:Seq RDF:about="http://x.com/Isds">
  <RDF:li RDF:resource="http://x.com/Isds/1"/>
</RDF:Seq>

A la place je dis que l'élément lui-même (ici le moteur) est un Seq, on a donc des ressources pour les objets et des ressources pour la relation entre ces objets:

<RDF:Description RDF:about="http://x.com/Moteurs/1">
  ... Infos sur le moteur mais pas sur ses listes
</RDF:Description>

<RDF:Seq RDF:about="http://x.com/Moteurs/1">
  ... Listes du moteur
</RDF:Seq>

Une chose importante à se rappeller avec RDF: les ressource avec le même rdf:about sont fusionnées !

Ainsi dans l'exemple précédent le moteur est à la fois une ressource (Description) et une liste (Seq), obligatoire pour assurer la récursivité des templates.

Tu n'as donc plus besoin de règles multiples pour parcourir tes éléments si il ont un attribut commun: Titre par exemple.

RDF

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:panoptique="http://panoptique#">
<rdf:Description rdf:about="urn:moteur:1">
  <panoptique:Titre>Moteur</panoptique:Titre>
</rdf:Description>
<rdf:Description rdf:about="urn:liste:1">
  <panoptique:Titre>Liste</panoptique:Titre>
</rdf:Description>
<rdf:Description rdf:about="urn:element:1">
  <panoptique:Titre>Elément</panoptique:Titre>
</rdf:Description>
<!-- Hiérarchie -->
<rdf:Seq rdf:about="urn:moteur:1">
  <rdf:li>
    <rdf:Seq rdf:about="urn:liste:1">
      <rdf:li rdf:resource="urn:element:1"/>
    </rdf:Seq>
  </rdf:li>
</rdf:Seq>
<!--
Hiérarchie par étape
<rdf:Seq rdf:about="urn:moteur:1">
  <rdf:li rdf:resource="urn:liste:1"/>
</rdf:Seq>
<rdf:Seq rdf:about="urn:liste:1">
  <rdf:li rdf:resource="urn:element:1"/>
</rdf:Seq>
-->
<rdf:Seq rdf:about="urn:moteurs">
  <rdf:li rdf:resource="urn:moteur:1"/>
</rdf:Seq>
</rdf:RDF>

XUL

<tree datasources="moteurs.rdf" ref="urn:moteurs" flex="1">
  <treecols>
    <treecol id="titre-treecol" label="Titre" primary="true" flex="1"/>
  </treecols>
  <template>
    <rule>
      <treechildren>
        <treeitem uri="rdf:*">
          <treerow>
            <treecell label="rdf:http://panoptique#Titre"/>
          </treerow>
        </treeitem>
      </treechildren>
    </rule>
  </template>
</tree>

Fabrice

# Re: pb compréhension RDF/Template. règles multiples

Envoyé par : frengy

Date : 28/07/2006 09:54

merci beaucoup de cette réponse détaillée !

ça solutionne parfaitement mon problème .. et j'aime bien ce principe de scinder les listes et le détail des ressources .. ca facilite la génération des fichiers ainsi que leur lecture par un oeil humain ...

merci encore

:)

Cyrille

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.