Codage DFSR (Deep First Search for RDF)
Codage DFSR (Deep First Search for RDF)
Avant d’entamer la construction de l’index une phase d’initialisation est nécessaire pour attribuer à chaque type de nœud et de propriété un identifiant entier suivant l’ordre lexicographique. Pour construire le niveau 1 de l’index, nous exécutons une requête SPARQL pour retrouver l’ensemble des motifs de taille 1 de la source RDF. A partir de ces motifs et des identifiants de type précédemment créés, les codes DFSR de longueur 1 sont construits. D’abord, nous cherchons les identifiants correspondant au sujet, propriété et objet de chaque motif. Ces identifiants constituent les trois derniers éléments du 5-tuple représentant le code DFSR du motif. Ensuite les temps de découverte 1 et 2 sont attribués au sujet et à l’objet du motif. Ces temps de découverte constituent les deux premiers éléments du 5-tuple. Enfin un identifiant unique est attribué au code DFSR. L’algorithme de cette phase est ci dessous:
procedure DFSROneEdge ()
1. P: set of graph patterns of size 1
2. var level1 = {}
3. identifier = 0, subject, object, property: integer
4. for all edges e in P do
5. subject= mapping(e.subjects)
6. object = mapping(e.objects)
7. property = mapping(e.property)
8. identifier = identifier +1
9. d=new DFSR(identifier,1,2,subject,property,object)
10. if not(level1.contain(d))
11. level1 = level1 U {d}
Procédure DFSROneEdge