Escola Tècnica Superior D'enginyeria Electrònica I Informàtica La Salle Trabajo Final De Máster Máster Universitario En
Total Page:16
File Type:pdf, Size:1020Kb
Escola Tècnica Superior d’Enginyeria Electrònica i Informàtica La Salle Trabajo Final de Máster Máster Universitario en Programación Web de Alto Rendimiento RED SOCIAL DESCENTRALIZADA CON SOLID Alumna Profesor Ponente Profesor Ponente Mónica Sánchez Rosero Víctor Caballero Codina David Vernet ACTA DEL EXAMEN DEL TRABAJO FINAL DE MÁSTER Reunido el Tribunal calificador en la fecha indicada, el alumno D. MONICA SANCHEZ ROSERO expuso su Trabajo Final de Máster, titulado: RED SOCIAL DESCENTRALIZADA CON SOLID Acabada la exposición y contestadas por parte del alumno las objeciones formuladas por los Sres. miembros del tribunal, éste valoró dicho Trabajo con la calificación de Barcelona, VOCAL DEL TRIBUNAL VOCAL DEL TRIBUNAL PRESIDENTE DEL TRIBUNAL RESUMEN Actualmente existe una gran variedad de aplicaciones web, que tienen una arquitectura de almacenamiento de datos centralizada y políticas de privacidad generalizadas que muchas veces los usuarios desconocen y dan consentimiento para ceder sus datos a terceros. Esto permite que se puedan explotar los datos mediante comercialización de información, envíos de publicidad, correo electrónicos e incluso manipulaciones etc. Consecuentemente, existe la necesidad de presentar alternativas, con el principal fin de empoderar al usuario sobre la forma en cómo administra su información en la web. SOLID (Social Linked Data) es un proyecto open source creado para incentivar la propiedad de datos, su privacidad y la creación de aplicaciones web descentralizadas. Para ello se apoya en tecnologías estandarizadas como Web Semántica y Linked Data, permitiendo que los datos de usuarios, llamados PODS (Personal Online Data Stores), estén completamente desacoplados entre aplicaciones y servidores de almacenamiento de información. El objetivo de este proyecto es investigar estas tecnologías Web Semántica o Web 3.0, Linked Data y SOLID para conocer el estado del arte y la integración de estos conocimientos para diseñar y desarrollar una aplicación web descentralizada que permita interactuar con los PODS. Se ha observado que, aunque el proyecto aún está en una fase de desarrollo temprana, entidades como MIT, Inrupt y SOLID Community dan un fuerte respaldo al proyecto SOLID. Palabras Clave: SOLID, Social Linked Data, Personal Data Stores, Web Semántica, Linked Data, arquitectura descentralizada, aplicaciones web descentralizadas, Inrupt. i ABSTRACT Nowadays there is a wide number of apps out there on the web, that have a centralized data storage architecture and generalized privacy policies that often the users are not aware of and give their consent for passing their data to third parties. This allows data to be exploded by information marketing, adds sending, spam emails, and even blackmails. Consequently, there is a need to present alternatives, with the main purpose of empowering the user about the way they manage their information on the websites. SOLID (Social linked data) is an open-source project created to incentivize data ownership, its privacy, and the creation of decentralized web apps. For this it relies on standardized technologies such as semantic web and linked data, allowing user´s data, called PODS (Personal Online Data Stores), to be completely decoupled between apps and data storage servers. The objective of this project is to investigate technologies such as semantic web or web 3.0, linked data, and SOLID to know the art and integration of this knowledge to design and develop a decentralized web application that allows interacting with PODS. It has been observed that even the project is still in an early development phase, entities like MIT, Inrupt, and SOLID community give strong support to the SOLID´s project. Keywords: SOLID, Social Linked Data, Personal Data Stores, Semantic Web, Linked Data, Decentralized Architecture, Decentralized Web Apps, Inrupt. ii TABLA DE CONTENIDO 1 Introducción............................................................................................................................. 1 1.1 Justificación del Proyecto ................................................................................................. 1 1.2 Objetivos .......................................................................................................................... 2 1.2.1 Objetivo Principal ...................................................................................................... 2 1.2.2 Objetivos Específicos ................................................................................................ 2 1.3 Situación Actual ................................................................................................................ 2 1.3.1 Instituto de Tecnologías de Massachusets (MIT) ..................................................... 3 1.3.2 Inrupt Inc. .................................................................................................................. 3 1.3.3 Solid Community Forum ........................................................................................... 3 2 Aspectos Teóricos y Estado del Arte ....................................................................................... 5 2.1 Web 3.0 y Web Semántica ............................................................................................... 5 2.2 Linked Data ....................................................................................................................... 6 2.3 Tecnologías Web Semánticas ........................................................................................... 6 2.3.1 RDF (Resource Description Framework) ................................................................... 8 2.3.2 RDFS (RDF Schema) ................................................................................................... 9 2.3.3 RDF/XML ................................................................................................................... 9 2.3.4 TURTLE (Terse RDF Triple Languaje) ....................................................................... 10 2.3.5 SPARQL (Protocol and RDF Query Language) ......................................................... 10 2.3.6 Ontologías y Vocabularios ...................................................................................... 11 2.3.7 FOAF (Friend of A Friend)........................................................................................ 13 2.3.8 VCARD ..................................................................................................................... 13 2.3.9 SCHEMA.ORG .......................................................................................................... 14 2.3.10 OWL (Web ontology Language) .............................................................................. 15 2.4 SOLID (Social Linked Data) ............................................................................................. 16 2.4.1 Arquitectura de Solid .............................................................................................. 17 2.4.1.1 Gestión de Identidad ....................................................................................... 17 2.4.1.2 Modelo de Datos ............................................................................................. 18 2.4.1.3 Autenticación ................................................................................................... 18 iii 2.4.1.4 Control de Acceso: Web Access Control – WAC .............................................. 18 2.4.1.5 Recursos de Lectura y Escritura ....................................................................... 19 2.4.1.6 Sistema de Archivos: LDPC (Linked Data Platform Containers) ...................... 20 3 Ejecución del Proyecto .......................................................................................................... 22 3.1 Entorno de Desarrollo .................................................................................................... 22 3.2 Servidor SOLID con Docker ............................................................................................. 23 3.2.1 Prerrequisitos .......................................................................................................... 23 3.2.2 Estructura del Repositorio ...................................................................................... 23 3.2.3 Configuración de SOLID Server con Docker ............................................................ 24 3.2.4 Iniciar SOLID Server con Docker.............................................................................. 26 3.3 Red Social Descentralizada – RSD TODAY ...................................................................... 28 3.3.1 Casos de Uso ........................................................................................................... 28 3.3.2 Arquitectura y Diseño de la Solución RSD TODAY .................................................. 29 3.3.3 Desarrollo ................................................................................................................ 31 3.3.3.1 Login de Usuario .............................................................................................. 31 3.3.3.2 Actualizar Perfil ................................................................................................ 33 3.3.3.3 Mostrar Perfil ................................................................................................... 34 3.3.3.4 Galería de Fotos ............................................................................................... 35 3.3.3.5 Privacidad