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. 1.  P: set of graph patterns of size 1

  2. 2.  var  level1 = {}

  3. 3.  identifier = 0, subject, object, property: integer

  4. 4.    for all edges e in P do

  5. 5.        subject= mapping(e.subjects)

  6. 6.        object = mapping(e.objects)

  7. 7.        property = mapping(e.property)

  8. 8.        identifier = identifier +1

  9. 9.       d=new DFSR(identifier,1,2,subject,property,object)     

  10. 10.       if not(level1.contain(d))

  11. 11.         level1 = level1 U {d}

Algorithme

  1. PucePrésentation

Procédures principales

  1. PuceDFSROneEdge

  2. PuceDFSRTwoEdges

  3. PuceDFSNEdges

Procédure DFSROneEdge