Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2

# MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : arawak

Date : 18/04/2006 11:36

bonjour a tous,

je debute en Xul et j'ai un probleme que plus je lis les tutos, moins je vois par quel bout y attaquer ... je vous explique :

dans le cadre d'une appli web de gestion de parc materiel, je souhaiterais structurer mes donnees dans un arbre hierarchisé : j'ai des societes, pour ces societes, j'ai des sites, et sur chaqun de ces sites, j'ai des "postes", eux memes composés de materiels.

j'ai dans ma base de donnees une structure tres classique :

SOCIETE (id_soc,lib_soc); SITE (id_site,id_soc,lib_site); POSTE (id_poste,id_site,lib_poste); ITEM (id_item,id_poste,lib_item);

je souhaitais utiliser une page php pour generer un rdf qui servirait de "datasource" a un tree xul hierarchisé.

Quelqun aurait une base de script pour generer ce RDF ? Et le code Xul pour l'exploiter ? Parceque la, je suis completement perdu et a part un script iterarif tres compliqué, je vois pas comment integrer les relations parents-enfants dans cet arbre et encore moins comment transformer tout ca en conteneurs ....

si quelqun pouvait prendre en pitié un pov' dev amateur qui visiblement a le cerveau tout mou ( parceque plus ca va, plus j'ai l'impression d'etre le seul imbecile sur terre qui comprend rien au RDF) :)

merci d'avance

Vincent

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : laurentj

Date : 18/04/2006 11:43

Bonjour,

Pour un commencement : /wiki/ApplisWeb/ExemplePhpRdf

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : arawak

Date : 18/04/2006 11:56

merci pour cette reponse rapide,

j'ai deja tenté de bidouiller les exemples de cette section, ca marche pour des donnees simples extraites dans une table, mais mon probleme reste pour les arbres plus complexes ... en fait je suis perdu, et je ne sais meme pas par quel bout commencer :

  • generer dans mon rdf les donnees "en vrac" de mes 4 tables avec les jointures, et ensuite un template d'arbre qui genere l'architecture hierarchique ?
  • generer un rdf avec les donnees deja hierarchiquement structurées et un modele d'arbre + simple ?
  • ou se situe l'equilibre entre ces 2 modeles extremes ?

a+

Vincent

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : laurentj

Date : 18/04/2006 13:01

que ce soit, comme tu dis, "en vrac", ou "structuré", ton RDF est exactement le même au final, si tu indiques les bonnes relations. Un RDF est un moyen d'écrire des relations, et on peut les écrire de différentes manières. C'est le moteur RDF qui va lui même organiser les données lues en fonction des relations qu'il a détecté. peu importe l'ordre dans lesquelles ces relations sont indiquées.

Exemple de RDF que tu pourrais générer :

<RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:myapp="http://myapp.com/rdf#">
   
       <Bag RDF:about="urn:societes">
           <li RDF:resource="urn:societes:renault" />
       </Bag>
       
       <Description RDF:about="urn:societes:renault" myapp:libelle="Renault" >
           <Bag>
               <li RDF:resource="urn:sites:billancourt" />
           </Bag>
       </Description>
       
       <Description RDF:about="urn:sites:billancourt" myapp:libelle="Boulogne Billancourt" >
           <Bag>
               <li RDF:resource="urn:postes:ingenieur" />
           </Bag>
       </Description>
       
       <Description RDF:about="urn:postes:ingenieur" myapp:libelle="Ingénieur" >
           <Bag>
               <li RDF:resource="urn:items:xxx" />
           </Bag>
       </Description>
       
       <Description RDF:about="urn:items:xxx" myapp:libelle="item XXX" />
   
   </RDF>

Ici, on renault, billancourt, ingenieur, xxx sont des identifiants (correspondent donc à tes id_soc, id_site, id_poste, id_item). J'ai pas mis du numérique pour mieux comprendre. Et les "urn:xxxxxxx", c'est mon propre choix de les nommer ainsi. Et pour les bag, j'ai mis un seul <li> pour pas trop alourdir l'exemple.

Autre exemple de fichier RDF :

 <RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:myapp="http://myapp.com/rdf#">

   <Bag RDF:about="urn:societes">
       <li RDF:resource="urn:societes:renault" />
   </Bag>
   
   <Bag RDF:about="urn:societes:renault">
       <li RDF:resource="urn:sites:billancourt" />
   </Bag>
   
   <Bag RDF:about="urn:sites:billancourt">
       <li RDF:resource="urn:postes:ingenieur" />
   </Bag>
   
   <Bag RDF:about="urn:postes:ingenieur">
       <li RDF:resource="urn:items:xxx" />
   </Bag>
   
   <Description RDF:about="urn:societes:renault" myapp:libelle="Renault" />
   <Description RDF:about="urn:sites:billancourt" myapp:libelle="Boulogne Billancourt" />
   <Description RDF:about="urn:postes:ingenieur" myapp:libelle="Ingénieur"/>
   <Description RDF:about="urn:items:xxx" myapp:libelle="item XXX" />

</RDF>

Cela décrit exactement la même chose que le précedent.

Toutefois, ces deux exemples ne sont pas forcément aisé à générer avec du php. Donc voici un autre exemple, qui represente toujours exactement la même chose :

<RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:myapp="http://myapp.com/rdf#">

   <!-- liste des societés, générée lors de la lecture de la table societe -->
   <Bag RDF:about="urn:societes">
       <li>
           <Description RDF:about="urn:societes:renault" myapp:libelle="Renault" />
       </li>
       <li>
           <Description RDF:about="urn:societes:peugeot" myapp:libelle="Peugeot" />
       </li>
   </Bag>
   
   <!-- contenu RDF généré lors de la lecture de la table SITE -->
   <Bag RDF:about="urn:societes:renault">
       <li>
           <Description RDF:about="urn:sites:billancourt" myapp:libelle="Boulogne Billancourt" />
       </li>
   </Bag>
   <Bag RDF:about="urn:societes:peugeot">
       <li>
           <Description RDF:about="urn:sites:sochaux" myapp:libelle="Sochaux" />
       </li>
   </Bag>
   
   
   <!-- contenu RDF généré lors de la lecture de la table POSTE -->
   <Bag RDF:about="urn:sites:billancourt">
       <li>
           <Description RDF:about="urn:postes:ingenieur" myapp:libelle="Ingénieur" />
       </li>
   </Bag>
   <Bag RDF:about="urn:sites:sochaux">
   <li> ....</li>
   </Bag>
   
   <!-- contenu RDF généré lors de la lecture de la table ITEM -->
   <Bag RDF:about="urn:postes:ingenieur">
       <li>
           <Description RDF:about="urn:items:xxx" myapp:libelle="XXX" />
       </li>
   </Bag>

</RDF>

Ceci est trés simple à généré car il n'y a qu'une lecture sequentielle de chaque table à faire (pas de recursivité ou de jointures à faire).

Pour les templates, je te laisse lire le tuto sur les gabarits.

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : arawak

Date : 18/04/2006 17:28

bon, apres quelques tests, j'arrive a un prototype minimaliste :

tree.xul :

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="example-window" title="Test TREE"
        xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<tree flex="1" width="200" height="200"
     datasources="tree.rdf" ref="http://myapp/societes">
 <treecols>
   <treecol id="lib" label="Nom" primary="true" flex="1"/>
 </treecols>
 <template>
   <rule>
     <treechildren>
      <treeitem uri="rdf:*">
        <treerow>
          <treecell label="rdf:http://myapp/rdf#lib"/>
        </treerow>
      </treeitem>
     </treechildren>
   </rule>
 </template>
</tree>
</window>

et ca fonctionne avec le rdf tree.rdf :

<?xml version="1.0" encoding="iso-8859-1"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:ELEMENT="http://myapp/rdf#">
 <RDF:Bag RDF:about="http://myapp/societes">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tbo" ELEMENT:lib="BOURGOGNE" />
   </RDF:li>
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tis" ELEMENT:lib="ISERE" />
   </RDF:li>
 </RDF:Bag>
 <RDF:Bag RDF:about="http://myapp/tbo">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tbo/agence" ELEMENT:lib="AGENCE" />
     <RDF:Description RDF:about="http://myapp/tbo/client1" ELEMENT:lib="CLIENT 1" />
   </RDF:li>
 </RDF:Bag>
 <RDF:Bag RDF:about="http://myapp/tis">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tis/agence" ELEMENT:lib="AGENCE" />
   </RDF:li>
 </RDF:Bag>
 <RDF:Bag RDF:about="http://myapp/tbo/agence">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tbo/agence/com" ELEMENT:lib="COMMERCIAL" />
     <RDF:Description RDF:about="http://myapp/tbo/agence/tra" ELEMENT:lib="TRAFIC" />
   </RDF:li>
 </RDF:Bag>
 <RDF:Bag RDF:about="http://myapp/tbo/client1">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tbo/client1/sc" ELEMENT:lib="STATION CHARGEUR" />
   </RDF:li>
 </RDF:Bag>
 <RDF:Bag RDF:about="http://myapp/tbo/agence/com">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tbo/agence/com/uc" ELEMENT:lib="UC" />
     <RDF:Description RDF:about="http://myapp/tbo/agence/com/ecran" ELEMENT:lib="ECRAN" />
   </RDF:li>
 </RDF:Bag>
 <RDF:Bag RDF:about="http://myapp/tbo/client1/sc">
   <RDF:li>
     <RDF:Description RDF:about="http://myapp/tbo/client1/sc/uc" ELEMENT:lib="UC" />
     <RDF:Description RDF:about="http://myapp/tbo/client1/sc/ecran" ELEMENT:lib="ECRAN" />
   </RDF:li>
 </RDF:Bag>
</RDF:RDF>

par contre, j'ai l'impression que ca va vite devenir penible a gerer les :

RDF:about="http://myapp/tbo/client1/sc/ecran"

ca va m'obliger a gerer en parallele mes identifiants de jointure ... alors est ce que je peux encore simplifier ca ?

a+ Vincent

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : laurentj

Date : 18/04/2006 17:41

pourquoi reprendre dans l'url les identifiants des enregistrements dont dépend un enregistrement ? Pourquoi ne pas faire comme j'ai montré : une url pour chaque type d'enregistrement.

À moins que les identifiants de tes tables ne sont pas uniques ? par exemple dans ITEM, il peut y avoir plusieurs enregistrements avec la même valeurs pour id_item ? (et pareil pour les autres tables ?) Si c'est le cas, ton schema de base de donnée est complétement faux (d'aprés les données que tu me donnes).

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : arawak

Date : 18/04/2006 17:56

non, non, mes tables ont bien des identifiants uniques !! :)

mais justement, je cherchais a savoir ce que je pouvais encore couper dans de code ... parcequela, c'est un mix entre plusieurs codes, arrangé a la sauce "va comme je te pousse", donc y'a du menage a faire !! (et comme j'ai pas encore bien compris tout ce que j'ai fait :)... )

donc, il faut que je coupe les url des bag ou des descriptions (ou les 2) ?

a+

Vincent

PS : au fait, j'ai pas bien pigé ta notation "urn:societes:peugeot" ...

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : laurentj

Date : 18/04/2006 18:12

non, non, mes tables ont bien des identifiants uniques !! :)

ouf :-)

Donc en fait c'est simple : fait toi autant de "type" d'url que de type d'enregistrements, comme j'ai fait.

En ce qui concerne ma notation, c'est une notation d'URI standard, dont la notation URL est un sous ensemble (je crois). Je prefère cette notation car plus simple à taper, plus lisible, et on confond pas les urls de ressources avec les namespaces (pédagogiquement, c'est mieux pour les débutants je trouve, étant donné que moi même au début j'étais débordé par toutes ces URL :-) )

En utilisant la notation url, l'équivalent de ma notation pourrait être :

urn:societes:xxx : http://myapp/societes/xxx  (xxx =id_soc)
urn:sites:xxx : http://myapp/sites/xxx  (xxx =id_site)
urn:postes:xxx : http://myapp/postes/xxx  (xxx =id_poste)
urn:items:xxx : http://myapp/items/xxx  (xxx =id_item)

Tu n'es pas obligé d'avoir des urls ayant une representation hierarchique. Cela pourrait être utile en effet pour la lisibilité du source, mais cela est inutile en tout cas pour le processeur RDF. L'essentiel est qu'il n'y ait pas plusieurs ressources décrites avec la même url (car dans ce cas, ça décrit la même ressource, ce qui serait faux bien entendu par rapport à ton schema de base de donnée).

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : arawak

Date : 18/04/2006 18:19

bon, je viens de refaire des tests

visiblement les urn:XXX:WWW (meme si je n'ais toujours aucun element theorique dessus ...) me permettent de faire des "liens logiques" entre les differentes entrees de mon RDF, ce qui me donnerait :

 <RDF:Bag RDF:about="urn:societes">
   <RDF:li>
     <RDF:Description
          RDF:about="urn:societes:tbo"
          ELEMENT:lib="BOURGOGNE" />
   </RDF:li>
  </RDF:Bag>

  <RDF:Bag RDF:about="urn:societes:tbo">
   <RDF:li>
     <RDF:Description
          RDF:about="urn:sites:agence21"
          ELEMENT:lib="AGENCE" />
     <RDF:Description
          RDF:about="urn:sites:client1"
          ELEMENT:lib="CLIENT 1" />
   </RDF:li>
 </RDF:Bag>

  <RDF:Bag RDF:about="urn:sites:agence21">
   <RDF:li>
     <RDF:Description
          RDF:about="urn:postes:com21"
          ELEMENT:lib="COMMERCIAL" />
     <RDF:Description
          RDF:about="urn:postes:tra21"
          ELEMENT:lib="TRAFIC" />
   </RDF:li>
 </RDF:Bag>

ca marche pas mal, et ca me simplifie la vie !!

par contre, avec ce systeme, il est imperatif de tourner sur des identifiants uniques !!!

j'ai bon ? :)

a+

Vincent

# Re: MySQL / PHP / RDF / XUL TREE ... HELP !!!

Envoyé par : arawak

Date : 18/04/2006 18:21

dsl, j'avais pas vu ta reponse

en tout cas, merci de ton aide, et je vais essayer de continuer la dessus

a+

Vincent

Aller à la page :  1 2

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.