juanbm99 / TFG-OpenCityData-JuanBernal

Repositorio correspondiente al material generado para la elaboración del Trabajo de Fin de Grado relacionado con datos abiertos sobre ciudades desarrollado por Juan Bernal Mencía
0 stars 0 forks source link

Mapping RML no termina debido a la cantidad de Datos #9

Closed juanbm99 closed 3 years ago

juanbm99 commented 3 years ago

Al ejecutar el mapping RML sobre el csv de ruidoDiario2020 (~46000 filas) y sobre el csv de ruidoDiario2021(~6500 filas) el mapping no termina de ejcutarse (he llegado a esperar unos 20 min) cuando generalmente esto tarda unos pocos segundos. He pensado en fragmentar el CSV en varios y aplicar el mapping sobre estos fragmentos,

que os parece?

ocorcho commented 3 years ago

No están disponibles en GitHub los RML, así que no puedo analizarlo. Indica con links a los ficheros qué CSVs son y qué ficheros RML son, de tal manera que @ArenasGuerreroJulian pueda revisar este proceso de transformación y @dachafra pueda analizar si es un buen ejemplo para mostrar las ventajas de Morph-KGC

arenas-guerrero-julian commented 3 years ago

@juanbm99 Además de como dice Oscar de que des acceso a los mappings, ¿qué herramienta estás usando para generar el RDF?. Fragmentar los CSVs no me parece buena idea si los mappings tienen joins, en todo caso fragmentaría los mappings o los normalizaría (hacer que cada triples map tengan un solo predicate object map).

juanbm99 commented 3 years ago

RML RuidoDiario 2020 (faltan propiedades aún): https://github.com/juanbm99/TFG-OpenCityData-JuanBernal/blob/main/data/mappings/ruido2020-RML.rml

CSV RuidoDiario2020: https://github.com/juanbm99/TFG-OpenCityData-JuanBernal/blob/main/data/preprocessed/RuidoDiario2020/RuidoDiario2020_v2.csv

juanbm99 commented 3 years ago

Para generar el rdf estoy utilizando el rmlmapper.jar

arenas-guerrero-julian commented 3 years ago

rmlmapper es extremadamente lento, probablemente es la herramienta. Soluciones que yo probaría por orden:

  1. rmlmapper creo que tiene una opción para que no elimine duplicados. Si no te es importante que genere tripletas duplicadas, prueba a correr rmlmapper con esta opción (el bottleneck del engine está en el algoritmo para eliminar duplicados).
  2. Si necesitas eliminar duplicados, o si rmlmapper sigue siendo demasiado lento puedes probar con SDM-RDFizer (https://github.com/SDM-TIB/SDM-RDFizer), es python. Para CSV sabemos que tiene un bottleneck ahora mismo que tienen que solucionar, pero con tus datos creo debería terminar sin problemas.
  3. Si aun así sigue sin terminar puedes probar con R2RML-F (https://github.com/chrdebru/r2rml) (es un jar también), que es la que mejor funciona para CSV ahora mismo. Acepta los mappings en R2RML, convertir de RML a R2RML es un momento. Si eliges esta herramienta escríbeme y te explico para que vayas a tiro hecho.
juanbm99 commented 3 years ago
  1. He probado a dejar duplicados y nada sigue sin funcionar.
  2. Probado con SDM-RDFizer pero se queda pillado también: image
  3. Solo me queda por probar la herramienta que mencionas así que si quieres te dejo mi correo para comunicarnos por ahí: Correo: juanbernalmencia@gmail.com
dachafra commented 3 years ago

@juanbm99 veo que en el mapping hay un self-join, podrías probar a eliminar la condición (esta linea y el child/parent) y sólo dejar el parentTriplesMap? El resultado en el SDM-RDFizer debería ser el mismo que con la condición. Quizá así mejores el performance....

juanbm99 commented 3 years ago

He probado con SDM-RDFizer y termina (aunque es cierto que para el dataset de RuidoDiario2020 (47k filas) tarda unos 20 min. Voy a probar ahora con lo que me has dicho @dachafra

juanbm99 commented 3 years ago

Eliminando esa línea el mapping es inmediato pero es verdad que no me lo hace correctamente ya que donde debería poner la URI de la estación de medida simplemente pone el nombre la columna del CSV. image @dachafra alguna idea de por qué puede ser esto?

dachafra commented 3 years ago

Curioso, me da que es un error del engine, hay que abrir un issue (en inglés) aquí con ese error: https://github.com/SDM-TIB/SDM-RDFizer/issues sube los datos y los mappings, además de que te está metiendo la URI base en la generación de los subjects...

He probado a en vez de poner rml:reference a poner rr:template "{URI_ESTACION}" y así lo hace bien, aunque sigue metiendo la uri base de por medio, ábrele un issue, yo lo gestiono.

Por cierto, cuidado con abrir los CSVs con notepad o similares, te ha metido BOM Chars que debes limpiar: https://stackoverflow.com/questions/45240387/how-can-i-remove-the-bom-from-a-utf-8-file

juanbm99 commented 3 years ago

Issue abierta, en qué CSV dices que me ha metido BOM Chars? La codificación del CSV me dice que está en UTF-8 sin BOM y no encuentro ninguno por ninguna parte