Correspondencia de grafos RDF Claudio Gutirrez Introduccin l

  • Slides: 15
Download presentation
Correspondencia de grafos RDF Claudio Gutiérrez

Correspondencia de grafos RDF Claudio Gutiérrez

Introducción l ¿Cómo determinar si dos archivos RDF representan lo mismo? l Problema: pueden

Introducción l ¿Cómo determinar si dos archivos RDF representan lo mismo? l Problema: pueden representar el mismo modelo pero este puede estar declarado en orden distinto. l Utilidad: determinar equivalencia entre modelos representados (mismo significado)

Ejemplo <rdf: RDF xmlns: rdf=“http: //www. w 3. org/1999/02/22 -rdf-syntax-ns#” xmlns: t=“http: //example. org/brothers#”

Ejemplo <rdf: RDF xmlns: rdf=“http: //www. w 3. org/1999/02/22 -rdf-syntax-ns#” xmlns: t=“http: //example. org/brothers#” xmlns: base=“http: //example. org/brothers” > <rdf: Description t: name=“John”> <t: child t: name=“Robert”/> <t: child t: name=“Jeremy”/> <t: child t: name=“Terry”/> </rdf: Description > </rdf: RDF >

Ejemplo <rdf: RDF xmlns: rdf=“http: //www. w 3. org/1999/02/22 -rdf-syntax-ns#” xmlns: t=“http: //example. org/brothers#”

Ejemplo <rdf: RDF xmlns: rdf=“http: //www. w 3. org/1999/02/22 -rdf-syntax-ns#” xmlns: t=“http: //example. org/brothers#” xmlns: base=“http: //example. org/brothers” > <rdf: Description t: name=“John”> <t: child t: name=“Jeremy”/> <t: child t: name=“Terry”/> <t: child t: name=“Robert”/> </rdf: Description > </rdf: RDF >

Ejemplo _: a 3 <http: //example. org/brothers#name> “Robert” _: a 1 <http: //example. org/brothers#name>

Ejemplo _: a 3 <http: //example. org/brothers#name> “Robert” _: a 1 <http: //example. org/brothers#name> “John” _: a 1 <http: //example. org/brothers#child> _: a 9 _: a 1 <http: //example. org/brothers#child> _: a 3 _: a 9 <http: //example. org/brothers#name> “Terry” _: a 6 <http: //example. org/brothers#name> “Jeremy” _: a 1 <http: //example. org/brothers#child> _: a 6 _: a 3 <http: //example. org/brothers#name> “Jeremy” _: a 6 <http: //example. org/brothers#name> “Terry” _: a 1 <http: //example. org/brothers#name> “John” _: a 1 <http: //example. org/brothers#child> _: a 9 _: a 1 <http: //example. org/brothers#child> _: a 3 _: a 9 <http: //example. org/brothers#name> “Robert” _: a 1 <http: //example. org/brothers#child> _: a 6 John Robert Terry Jeremy

Ejemplo _: a 1 <#name> “John” _: a 1 <#child> _: a 9 <#name>

Ejemplo _: a 1 <#name> “John” _: a 1 <#child> _: a 9 <#name> “Terry” _: a 1 <#child> _: a 3 <#name> “Robert” _: a 1 <#child> _: a 6 <#name> “Jeremy” _: a 1 <#name> “John” _: a 1 <#child> _: a 9 <#name> “Robert” _: a 1 <#child> _: a 3 <#name> “Jeremy” _: a 1 <#child> _: a 6 <#name> “Terry”

Ejemplo _: a 1 <#name> “John” _: a 1 <#child> _: a 9 <#name>

Ejemplo _: a 1 <#name> “John” _: a 1 <#child> _: a 9 <#name> “John” “Terry” _: a 9 <#child> _: a 9 <#name> “Terry” _: a 1 <#child> _: a 3 <#name> “Robert” _: a 1 <#child> _: a 6 <#name> “Jeremy” _: a 1 <#child> _: a 3 <#name> “Robert” <#child> _: a 6 <#name> “Jeremy”

Ejemplo <#name> “John” “Robert” _: a 9 <#child> <#name> _: a 1 <#child> _:

Ejemplo <#name> “John” “Robert” _: a 9 <#child> <#name> _: a 1 <#child> _: a 1 <#name> “John” _: a 1 <#child> _: a 9 <#name> “Robert” _: a 1 <#child> _: a 3 <#name> “Jeremy” _: a 1 <#child> _: a 6 <#name> “Terry” <#child> _: a 6 _: a 3 <#name> “Jeremy” <#name> “Terry”

Ejemplo “Terry” <#name> “John” <#name> _: a 9 “John” _: a 9 <#child> <#name>

Ejemplo “Terry” <#name> “John” <#name> _: a 9 “John” _: a 9 <#child> <#name> _: a 1 <#child> _: a 6 _: a 3 <#name> “Jeremy” <#child> _: a 6 <#child> “Robert” _: a 3 <#name> “Jeremy” “Robert” <#name> “Terry”

Algoritmo de fuerza bruta IF |V 1| = |V 2| SET n = |V

Algoritmo de fuerza bruta IF |V 1| = |V 2| SET n = |V 1| SINO no son isomorficos REPEAT GEN MAPPING DE V 1 2 V 2 IF CHECK EDGES es isomorfico BREAK n! combinaciones O(n 2 )

Algoritmo con clasificación de nodos IF |V 1| = |V 2| SET n =

Algoritmo con clasificación de nodos IF |V 1| = |V 2| SET n = |V 1| SINO no son isomorficos CLASIFIQUE G 1 & G 2 SEGÚN INVARIANTE grado de los nodos otros FOREACH CLASS C IF |V 1, c| = |V 2, c| ASOCIE C con una clase en G 2 SINO no son isomorficos REPEAT GEN MAPPING DE V 1 2 V 2 IF CHECK EDGES es isomorfico BREAK

Clasificación de nodos por adyacencia 2 3 A 2 B A F C B

Clasificación de nodos por adyacencia 2 3 A 2 B A F C B 2 F D 3 3 C 4 D 3 4 E E 2 2 INVARIANTE=GRADO { [A, E, F], [B, C], [D] } 3 2 1 2

Clasificación de nodo iterativa IF |V 1| = |V 2| SET n = |V

Clasificación de nodo iterativa IF |V 1| = |V 2| SET n = |V 1| SINO no son isomorficos CLASIFICAR nodos de V 1 & V 2 en una sola clase REPEAT // reclasificación FOREACH NODO RECLASIFIQUE IF CADA CLASE TIENE 1 ELEMENTO RETURN es isomorfico; Adyacencia con otras clases y con nodos de la misma Biyección por cardinalidad IF NOT ASOCIAR POR CARD. DE CLASE RETURN no es isomorfico; IF (NEW. CLASIFICACION = OLD. CLASIFICACION | | EXISTE CLASE CON CARDINALIDAD <= COTA) BREAK; USANDO LA CLASE CON CARD. MENOR Cardinalidad máxima para fuerza bruta FUERZA BRUTA SOBRE Cmin IF CHECK NODES G 1 = G 1 – Cmin; G 2 = G 2 - Cmin

Clasificación de nodo iterativa 2 3 A 1. - {A, B, C, D, E,

Clasificación de nodo iterativa 2 3 A 1. - {A, B, C, D, E, F} B F C D 3 2 2. - { [A, E, F], [B, C], [D] } 3. - { [A], [E, F], [B, C], [D] } 4 E 2 A=(0, 0, 2, 0) B=(1, 1, 0, 1) C=(1, 1, 0, 1) D=(0, 2, 2, 0) E=(0, 0, 1, 1) F=(0, 0, 1, 1) SELECT

Clasificación de nodo iterativa 2 F 2 3 A E 1 B E 4

Clasificación de nodo iterativa 2 F 2 3 A E 1 B E 4 E 5 E 2 C 3 3 E 7 E 2 B E 1 2 E 6 D E 3 E 8 F E 5 4 E 4 C 3 E 6 E 2 2 A D E 3 E 8 4 E 7 E 2