Je suis à la recherche de représentations possibles pour ce qui peut être considéré comme un graphe de profondeur finie au format XML pour l'échange de données. Le point problématique est de savoir comment référencer les nœuds dans les balises de bordure. Deux stratégies que je vois sont a) utilisant des identifiants uniques ou b) utilisant des chemins.Référence à la hiérarchie des éléments XML
ID uniques:
<graph id="g0">
<node id="n0"/>
<node id="n1"/>
<edge from="n1" to="n0"/>
</graph>
<graph id="g1">
<node id="n2"/>
</graph>
<edge from="n2" to="n1"/>
chemins:
<graph id="0">
<node id="0"/>
<node id="1"/>
<node id="2"/>
<edge from="1" to="0"/>
<edge from="2" to="1"/>
</graph>
<graph id="1">
<node id="0"/>
</graph>
<edge from="1:0" to="0:2"/>
Quelle est la procédure standard pour ce genre de choses? D'après ce que j'ai compris, l'approche de l'identificateur unique semble être plus répandue. Mon problème avec qui est quand les graphiques deviennent très grandes, il y a:
- nécessité d'une table de hachage vraiment grand que les cartes objets à leurs ID à des fins de lecture/écriture des bords de/vers des fichiers XML
- le fichier lui-même est plus grand que celui écrit en utilisant des chemins parce que vous ne pouvez pas omettre des composants de chemin redondants si le bord est interne au graphe.
Pensées?
Mise à jour 1:
Notez que ce ne est pas un graphique plat; ses un ou plusieurs graphiques interconnectés. Ils ont chacun des éléments indexés localement, mais les aplatir tous et garder une trace des bords à travers eux est un peu gênant.
mise à jour 1.1: Remarqué que des sous-graphes dans graphml, ils utilisent en effet les clés complexes qui permet de séparer ID nœud local de l'un mondial.
Mise à jour 2:
Oui, évidemment ce n'est pas un XML bien formé et les balises manquantes et toutes sortes de déclarations de schéma.
FYI, vous voulez un nœud racine autour de tout votre xml. Ce que vous avez posté n'est pas bien formé. –