Entradas

¿Metadatos? Una explicación muy breve

Comenzaremos por el principio, es decir por el prefijo “meta”. La Wikipedia lo define así:

Meta (proveniente de la preposición griega y el prefijo meta- (μετά-) significa “después” o “más allá”) es un prefijo usado en Español para indicar una idea de una abstracción detrás de otro concepto, usando para completar o agregar algo en el final.(«Meta (prefijo)», 2018)

 

Así, los metadatos serían los datos más allá de los datos, o, lo que es más acertado, los datos sobre los datos.

 

Los metadatos es un nombre nuevo para un concepto que no lo es en absoluto,  la catalogación con datos sobre recursos en las bibliotecas, para poder con ello gestionar sus archivos. Sin embargo,  con el nacimiento de la informática Jack Myers acuña a finales de la década de los 60 el término de metadatos para describir conjuntos de datos (Senso & de la Rosa Piñero, 2003). Así, se daba el nombre de metadatos a  toda aquella información que se incluía para identificar un recurso. Los metadatos podían también añadir información descriptiva sobre el contexto, calidad y condición o características del dato o recurso.

El término metadato surge, entonces, ya ligado a los objetos digitales. Hemos de pensar que cualquier recurso digital presenta dos tipos de datos:

  • Datos que conforman el contenido de ese recurso. Esto es, lo que se quiere comunicar, por ejemplo, el código del texto, si se trata de un documento textual, pero también el mapa de bits que representa una imagen digital, o los datos del sonido codificado digitalmente de un documento sonoro.
  • Datos que aportan diversas informaciones de gran utilidad para procesar correctamente, entender y gestionar esos contenidos: son los metadatos. Son, como ya decíamos “datos después de los datos” o “datos que describen a otros datos”.

Los Gestos iOS en iPhone e iPad (Parte 2)

En Los Gestos iOS en iPhone e iPad (Parte 1) se profundizó en los gestos disponibles en iOS, desde un punto de vista como usuario y se creó el contexto para programar estos gestos. Así que, una vez escrita la base para un developer, o como en castellano nos gusta llamar un programador o programadora, aquí empieza la segunda parte que se centrará en el código a escribir. Comprenderás qué código Swift necesitas para habilitar en una bola naranja los gestos de tocar y arrastrar. Para ello, se utilizará Xcode 10 con Swift 4.2 en un Playground, que es la forma más eficaz para aprender el lenguaje de programación Swift.

 

El objetivo por alcanzar es crear una Live View con una bola, como lo que puedes ver en este vídeo:

 

Como has visto, si solo pulsas la bola naranja se vuelve de color verde y aumenta de tamaño, mientras que si la arrastras, aumenta el diámetro de la bola y al soltarla vuelve a tu tamaño original.

 

Paso a paso

 

En este artículo te explicaré línea a línea el código que necesitarás escribir en el Playground.

 

Antes de empezar a escribir, siempre debes tener claro que es lo que vas a hacer y con qué objetivo. En el vídeo anterior has visto la finalidad, y con el siguiente vídeo deseo que visualices la estructura que tendrá el Playground para que así sepas qué clases necesitarás para conseguirlo. Dentro del Playground Gestos habrá dos clases en la carpeta Sources: FondoView y BolaGestosView. Estas dos clases serán utilizadas por el Playground. FondoView es una clase auxiliar que he creado para la visualización de la Live View.

 

En el siguiente enlace puedes descargarte de GitHub el Playground para poder iniciar el ejemplo: gestos-playground-blog-inicio

¡Empieza la acción!

En primer lugar, crea el playground Gestos en Xcode 10, importando los frameworks UIKit y PlaygroundSupport. A continuación, escribe el código para crear un rectángulo blanco para mostrarlo en la Live View del playground, como si fuese el fondo de una pantalla del iPhone.

 

En la carpeta Sources crea el archivo Swift llamado BolaGestosView. Importa el framework UIKit y escribe la clase BolaGestosView que heredará de la clase UIView. Tendrá un nivel de acceso open para que el Playground pueda usarla.

 

En esta clase escribe el código para crear las funciones para escalar y mover. La función escalar se activará cuando pulses sobre la bola o inicies el arrastre. La función mover se iniciará al arrastrar la bola.

 

Escalar recibirá un número para saber el factor de escala. Recuerda que 1.0 deja a la bola en su mismo tamaño, mientras que un número mayor a 1 aumentará el tamaño de la bola. La animación tiene una duración de 0.1 segundos, con un movimiento en la animación de inicio lento y finalización lenta, tal y como especifica curveEaseInOut. En la animación se le asignará a la bola una transformación de escala.

 

Mover recibe el punto de translación en el que se está arrastrando la bola. Ese punto se lo asigna al centro de la bola. De esta forma, hace que se mueva la bola acorde al movimiento de arrastre. Una vez terminado dicho movimiento se reinicia a cero la translación. Esto evitará un valor incremental en los movimientos de arrastre.

 

Ahora llega el momento de crear las funciones que se activarán cuando se inicien los gestos de pulsar y el de arrastrar.

 

Lo primero es añadirle la palabra clave @objc, debido a que será llamada desde una variable que utiliza un selector, que internamente todavía utiliza elementos creados con el lenguaje de programación Objective-C.

 

La función manejarPulsar recibirá el gesto de pulsar para que así se pueda imprimir el punto exacto que se ha pulsado. Como puedes observar, están comentadas las dos primeras líneas para que decidas si quieres que se imprima por consola el punto pulsado. Entonces, las puedes descomentar eliminando las dos barras. Dentro de esta función hay otra animación con una duración de 0.1 segundos y dicha animación será más lenta al terminar. Esta animación cambiará el color de la bola a verde y aumentará su escala al doble de su tamaño. Una vez terminada esta primera acción, empezará la segunda. Le he añadido un pequeño retraso de otro 0.1 para que permanezca el color verde un poco más, y luego volverá la bola a su color naranja y a su tamaño original mediante la escala con valor 1.

 

La función manejarArrastrar recibe el gesto de arrastrar. De esta forma se puede obtener los diferentes estados del gesto mediante los casos del switch. El primero se produce cuando se inicia el arrastre, aumentando un poco la bola. A continuación, cuando el estado cambia, inicia el movimiento de la bola. Finalmente, cuando termina, se le asigna la escala a 1 para que vuelva la bola a su tamaño inicial.

 

En la parte superior de esta clase se crearán las propiedades que le asignan la función a ejecutar cuando se activa el gesto de pulsar o Tap Gesture, así como el gesto de arrastrar o Pan Gesture. Puedes observar como cada variable, usando los selectores, llama a las funciones que has escrito anteriormente. Estas variables vienen precedidas por lazy, debido a que no se inicializarán hasta que no sean llamadas por el código en tiempo de ejecución.

 

El siguiente diagrama muestra la estructura de estas variables:

 

La variable gesto pulsar mediante el selector activará las acciones que se producirán en la función manejarPulsar(sender:), que a su vez iniciará la función de escalar la bola.

 

Por otra parte, la variable gesto arrastrar iniciará la acción del selector llamando la función manejarArrastrar(sender:). Y como recordarás, los casos del switch llamarán las funciones escalar o mover, según corresponda.

 

Ha llegado la hora de escribir los inicializadores de la clase.

 

El primer init será público para poder usarlo en el Playground. Dentro de él se creará un array constante con las variables de los gestos que creaste antes. A continuación, se realizarán iteraciones sobre el array gestos para añadirlos a la vista, o sea, a la bola.

 

Luego viene un init de conveniencia para poder crear la bola con las dimensiones de un rectángulo. La primera línea establecerá el tamaño recibido para asignárselo a la vista de la bola. En la segunda línea crea un radio del rectángulo, o en este playground un cuadrado. El radio será la mitad del ancho del cuadrado, de esta forma se convertirá en un círculo. La tercera línea activa el radio en la vista.

 

Finalmente se declarará el init requerido para que así se cumpla con los requisitos de los inicializadores de esta clase.

 

A continuación, escribe el código en el Playground para crear la instancia de la bola. Crearás una constante conforme a la clase BolaGestosView.

 

Al ir entre llaves, la inicialización de la bola puede personalizar la creación de la vista. En la primera línea estableces que será un cuadrado de 100 puntos, en la segunda línea defines que el punto sobre el que se aplicarán las transformaciones está en el centro geométrico de la bola. Luego le asignas el color naranja. Finalmente, mediante el return asignas la vista creada a la bola.

 

Seguidamente en la inicialización de la bola, para simplificar, se mostrará el centro de la bola en el centro de la vista blanca del fondo. Por esa razón, la última línea añade la bola al fondo para que sea visible en la Live View.

 

En el siguiente enlace puedes descargarte el Playground terminado desde GitHub, por si deseas compararlo con el tuyo: gestos-playground-blog-terminado

Tutorial completo en: https://theemotionapps.com/tutorial-gesture-recognizer-en-ios-swift-4-2/

 

¿Quieres aprender más?

 

TITULO DE EXPERTO UNIVERSITARIO. Innovación usando la tecnología iOS con programación Swift: Proyectos Europeos.

 

TITULO DE EXPERTO PROFESIONAL. Desarrollo Profesional de Aplicaciones iOS con Swift para Dispositivos Móviles.

 

PROGRAMACIÓN SWIFT Y SUS NUEVOS PARADIGMAS. Certificado de Enseñanza Abierta.

 

DESARROLLADOR DE ELEMENTOS iOS. Certificado de Enseñanza Abierta.

 

CREACIÓN PROFESIONAL DE APLICACIONES DESDE LA IDEA HASTA EL APP STORE. Certificado de Enseñanza Abierta.

POSTDATA participa del Congreso de Humanidades Digitales 2018 en Mexico

El congreso DH2018 (Humanidades Digitales 2018) tuvo lugar en la Ciudad de México entre el 26 y 29 de junio, organizado por The Association of Digital Humanities Organizations (ADHO),  El Colegio de México y la Universidad Nacional Autónoma de México (UNAM), en colaboración con la Red de Humanidades Digitales (RedHD). POSTDATA participó en el congreso con una presentación breve y un póster.

Presentamos la nueva versión de nuestro corpus DISCO, que consta de 4.000 sonetos en español de más de 1.000 autores, tanto canónicos como no, de Europa y América, que abarcan desde el siglo XV hasta el siglo XIX. El corpus se proporciona en TEI y texto simple, con diversos metadatos para describir a los autores, en TEI y a través de atributos RDFa (un formato de datos enlazados). El corpus tiene anotaciones literarias obtenidas a través del Procesamiento del Lenguaje Natural, concretamente escansión y encabalgamiento, y puede descargarse libremente aquí. El trabajo presentado se encuentra aquí.

 

También presentamos la interfaz web a ANJA, nuestra herramienta de detección de encabalgamiento en español, accesible aquí. Permite cargar poemas y obtener anotaciones de encabalgamiento según una tipología especializada. El trabajo se describe aquí.

 

¡El congreso fue un gran evento por el que debemos agradecer a la organización!

Presentación en jornada sobre estilometría y Siglo de Oro en Paris IV Sorbonne

El viernes 6 de abril, POSTADATA participó en el seminario “Estilometría y Siglo de Oro: El giro computacional en el estudio de textos áureos”. El evento fue organizado por Marie-Églantine Lescasse y la Profesora Mercedes Blanco del grupo LEMH-CLEA en la Universidad Paris IV Sorbonne. Los temas del seminario fueron la estilometría y la estilística computacional.

Pablo Ruiz presentó trabajo que hemos realizado en el equipo de POSTDATA sobre el análisis automático de patrones métricos y la detección automática del encabalgamiento, aplicados a corpus amplios de sonetos del Siglo de Oro y períodos posteriores, cubriendo unos 10.000 sonetos. La presentación está disponible en zenodo.

También fue la ocasión de escuchar las presentaciones de Laura Hernández Lorenzo, de la Universidad de Sevilla y José Calvo Tello de la Universidad de Würzburg, y participar en un interesante debate.

¡Gracias CLEA-LEMH por esta jornada!

El programa fue el siguiente:

 

 

POSTDATA presenta el corpus DISCO en Colonia (DHd 2018)

La semana pasada el proyecto POSTDATA estuvo en Colonia en DHd 2018, el congreso anual de Digital Humanities im deutschprachigen Raum (la asociación alemana de DH). El congreso fue organizado por el Cologne Center for eHumanities y Universität zu Köln.

Presentamos nuestro corpus DISCO (Diachronic Spanish Sonnet Corpus). El corpus contiene más de 4,000 sonetos de más de 1,000 authors, tanto europeos como americanos, incluyendo autores canónicos y no canónicos, de entre los siglos XV y XIX. El corpus se presenta en formato TEI con anotaciones en RDFa. Los autores están anotados con su identificador de VIAF. También se ofrecen anotaciones literarias (métrica y encabalgamiento). El corpus es una colaboración con José Calvo (del grupo CLiGs de Universität Würzburg), y está disponible en GitHub: https://github.com/postdataproject/disco

El poster puede verse en zenodo.

¡Gracias DHd!

POSTDATA en la Jornada de la Biblioteca Nacional de España: “La edición digital de textos: estado actual y perspectivas”

El 11 de diciembre de 2017 la Biblioteca Nacional de España, BNE, organizó una Jornada para analizar proyectos recientes sobre edición digital. La digitalización de colecciones y el desarrollo de herramientas de edición digital han llevado a la aparición de muchas formas diferentes de tratar con textos digitales. Este taller tuvo como objetivo debatir y reflexionar sobre cómo se desarrollan los proyectos actuales, qué significa la edición digital y la publicación en la actualidad y qué papel pueden desempeñar las instituciones culturales, especialmente la BNE, en este nuevo contexto. Aquí tienes más información sobre la Jornada y su programa.

 

Clara Martínez Cantón y Pablo Ruiz Fabo, miembros del equipo POSTDATA, pronunciaron dos charlas:

 

  • Clara Martínez Cantón: “Poesía medieval en un entorno digital. Edición e interoperabilidad en el siglo XXI”. En su charla presentó diferentes proyectos de Humanidades Digitales llevados a cabo en el grupo LINHD y que comparten el mismo objeto de investigación: la poesía medieval castellana y sus métricas: Remetca, Diálogo Medieval, Poetriae y, finalmente, POSTDATA. Se puede consultar en: https://zenodo.org/record/1101120#.Wi7U1EriY2w

 

  • Pablo Ruiz Fabo: “Contribuciones del Procesamiento del Lenguaje Natural a la navegación de corpus digitales”. La charla discutió cómo las tecnologías del lenguaje natural pueden ayudar a proporcionar experiencias de exploración de corpus más ricas para los usuarios. Se presentaron tres estudios de caso: Primero, navegación por actores (agentes) y sus declaraciones en un corpus de negociación climática llamado Boletín de Negociaciones de la Tierra. Segundo, navegación de conceptos en los manuscritos de Jeremy Bentham. Finalmente, se mostró cómo se aplicaron las mismas tecnologías NLP para anotar automáticamente un corpus de poesía para las ocurrencias del llamado encabalgamiento, un recurso estilístico. Los problemas de evaluación también fueron abordados. Las diapositivas están disponibles en http://bit.ly/2kmrH6v

 

El vídeo completo de la Jornada está disponible aquí debajo, con nuestras charlas empezando en 2:22:55 (Clara) y 55:08 (Pablo).

[embeber vídeo]