1 / 23

Correspondencia de grafos RDF

Correspondencia de grafos RDF. Claudio Gutiérrez Julio Águila. Introducción. ¿Cómo determinar si dos archivos RDF representan lo mismo? Problema: pueden representar el mismo modelo pero este puede estar declarado en orden distinto.

danica
Download Presentation

Correspondencia de grafos RDF

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Correspondencia de grafos RDF Claudio Gutiérrez Julio Águila

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

  3. Ejemplo <rdf:RDF xmlns:rdf=“http://www.w3.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 >

  4. Ejemplo <rdf:RDF xmlns:rdf=“http://www.w3.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 >

  5. Ejemplo _:a3 <http://example.org/brothers#name> “Robert” _:a1 <http://example.org/brothers#name> “John” _:a1 <http://example.org/brothers#child> _:a9 _:a1 <http://example.org/brothers#child> _:a3 _:a9 <http://example.org/brothers#name> “Terry” _:a6 <http://example.org/brothers#name> “Jeremy” John _:a1 <http://example.org/brothers#child> _:a6 Robert Terry Jeremy _:a3 <http://example.org/brothers#name> “Jeremy” _:a6 <http://example.org/brothers#name> “Terry” _:a1 <http://example.org/brothers#name> “John” _:a1 <http://example.org/brothers#child> _:a9 _:a1 <http://example.org/brothers#child> _:a3 _:a9 <http://example.org/brothers#name> “Robert” _:a1 <http://example.org/brothers#child> _:a6

  6. Ejemplo _:a1 <#name> “John” _:a1 <#child> _:a9 _:a9 <#name> “Terry” _:a1 <#child> _:a3 _:a3 <#name> “Robert” _:a1 <#child> _:a6 _:a6 <#name> “Jeremy” _:a1 <#name> “John” _:a1 <#child> _:a9 _:a9 <#name> “Robert” _:a1 <#child> _:a3 _:a3 <#name> “Jeremy” _:a1 <#child> _:a6 _:a6 <#name> “Terry”

  7. Ejemplo _:a1 <#name> “John” _:a1 <#child> _:a9 _:a9 <#name> “Terry” “Terry” <#name> _:a1 <#child> _:a3 “John” _:a3 <#name> “Robert” _:a9 <#child> _:a1 <#child> _:a6 <#name> _:a6 <#name> “Jeremy” _:a1 <#child> <#name> _:a3 “Robert” <#child> _:a6 <#name> “Jeremy”

  8. Ejemplo “Robert” <#name> “John” _:a9 <#child> <#name> _:a1 <#child> <#name> _:a3 “Jeremy” <#child> _:a1 <#name> “John” _:a1 <#child> _:a9 _:a6 <#name> _:a9 <#name> “Robert” _:a1 <#child> _:a3 “Terry” _:a3 <#name> “Jeremy” _:a1 <#child> _:a6 _:a6 <#name> “Terry”

  9. Ejemplo “Terry” “Robert” <#name> “John” <#name> _:a9 <#child> _:a9 <#name> “John” _:a1 <#child> <#child> <#name> _:a3 <#name> “Jeremy” <#child> _:a1 <#child> _:a6 <#name> <#child> _:a3 <#name> “Terry” _:a6 “Robert” <#name> “Jeremy”

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

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

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

  13. Clasificación de nodo iterativa IF |V1| = |V2| SET n = |V1| SINO no son isomorficos CLASIFICAR nodos de V1 & V2 en una sola clase REPEAT REPEAT // reclasificación Adyacencia con otras FOREACH NODO RECLASIFIQUE clases y con nodos de la misma IF CADA CLASE TIENE 1 ELEMENTO RETURN es isomorfico; Biyección por IF NOT ASOCIAR POR CARD. DE CLASE cardinalidad 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 G1 = G1 – Cmin; G2 = G2 - Cmin

  14. Clasificación de nodo iterativa 2 3 1.- {A,B,C,D,E,F} A B 2.- { [A,E,F],[B,C],[D] } 2 F C D 3.- { [A],[E,F],[B,C],[D] } 3 4 E SELECT A=(0,0,2,0) 2 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)

  15. Clasificación de nodo iterativa 2 F 2 3 E5 E6 3 4 A E1 B B E2 D E5 2 E1 2 E4 E2 F A E7 E6 E4 E3 C D E3 C E E8 3 4 3 2 E8 E7 E 2

  16. Isomorfismo de Grafos a Través de Subgrafos de Mayor Longitud • Si dos Grafos son Isomorficos, entonces los subgrafos de mayor longitud también lo son. (Transitividad e Inducción). • El tiempo en calcular el subgrafo de mayor longitud es menor que el tiempo total involucrado en determinar si dos grafos son isomorficos. • El objetivo es determinar los subgrafos de los grafos A y B, si los subgrafos(A) y subgrafo(B) son iguales entonces existe una gran probabilidad de que A y B sean iguales.

  17. Algoritmo • El objetivo es utilizar una heurística con información en los arcos de los grafos. • Para ello debe existir un prepocesamiento de los grafos. • El prepocesamiento supone una asignación numérica de los vértices y de los arcos. • No debería de existir problemas de colisiones.

  18. DESCOMPOSITION(B)  1. let B={G1,G2} and D(B)=0 2.        Smax,G1= 3.        Smax,G2= 4.        Smax,G1=descompose(G1, Smax,G1, v1,G1) 5. Smax,G2=descompose(G2, Smax,G2,v1,G2) Algoritmo

  19. DESCOMPOSE(G, Smax,v) 1.S'max=0 2.        suc=sucesores(G,v) 3.        DephtMarkVertice(G,v) 4.        CicleMarkVertice(G,v) 1.        for all suc of v 6. (a) If(!IsDepthVerticeMark (G,vi)) 7. (b ) If(!IsCicleVerticeMark (G,vi)) 8. (b.1) S'max= DESCOMPOSE(G, Smax, vsuc) 9.        (c) if Smax< S'max 10.     (c.1) Smax=S'max 11.     (d) else continue 12.     CicleDesmarkVertice(G,vi) 13.     return(Smax) Algoritmo

  20. MATCHING_SUBGRAPHS(S’, S) 1.        if(S’.lp== S.lp && S’.tcs== S.tcs.&& S’.tcg==S.tcg && S’.E== S.E) 2.        (a) for all V  S1 3.        (a.a) if ((S’.et1(v)== S.et1(v)  S’.et2(v)== S.et2(v)) &&S’.a(v)== S.a(v) && S’.e(v)== S.e(v)) 4.        (a.b) continue 5.        (a.c) else return false 6.        return true 7.        else return false Algoritmo

  21. Ejemplo

  22. Tarea por realizar • Modificar la estructura a lista enlazada • Realizar las pruebas

  23. Conclusiones • Es posible usar algoritmos clásicos de isomorfismos de grafos para comparar grafos RDFcon nodos blancos. • Dado que el uso standard de RDF no presenta casos patológicos donde los algoritmos anteriores no funcionen, en promedio el desempeño es satisfactorio.

More Related