Adrianistán

El blog de Adrián Arroyo


Web Semántica desde cero: Linked Data y SOLID

- Adrián Arroyo Calle

Ya hemos visto tres componentes de la Web Semántica: RDF, RDF Schema y SPARQL. Sin embargo, todavía no hemos sido capaces de hiperconectar la información presente en diferentes servidores. La especificación Linked Data, nos da unas pautas a seguir sobre como usar HTTP para conseguir que todo esté hiperconectado. Además veremos el concepto de SOLID, que propuso Tim Berners-Lee para que la ciudadanía recuperase el poder sobre sus datos en la web.

Linked Data

Lo primero que hay que tener en cuenta es que Linked Data nos define ciertas restricciones , entre otras, las IRI deberán ser Web IRI, eso quiere decir que tienen que usar HTTP o HTTPS obligatoriamente como protocolo. Esto es así, porque un concepto clave es la dereferenciación. Es decir, dado un identificador, poder acceder al recurso en bruto. Esto es sencillo en recursos digitales, simplemente usa la dirección web donde está el recurso, pero en recursos físicos o conceptos abstractos es complicado. Por eso se distingue entre la dirección web del recurso y las de la información. Pongamos un ejemplo sencillo, la receta de la tarta de Santiago.

Podemos definir una IRI para el recurso tal que así: https://adrianistan.eu/recipe/tarta-santiago. En las tripletas que usen la tarta de Santiago usaremos ese identificador de recurso. ¿Pero qué debe de hacer el servidor cuando accedamos a ese recurso con un GET de HTTP? En primer lugar, nuestra petición vendrá acompañada de un campo Accept que deberá indicar el formato que queremos leer. Si es una máquina podemos pedir XML, JSON-LD o Turtle. Si es un humano podemos indicar HTML. Entonces, el servidor manda una respuesta HTTP 303 See other, indicando la URL a la que tenemos que acceder ahora, en el formato correcto. Así, desde una aplicación que pieda JSON-LD tendríamos una redirección:

http://adrianistan.eu/recipe/tarta-santiago -> http://adrianistan.eu/recipe/tarta-santiago.json

Y ya podríamos acceder a la información. Si en cambio, queremos leer la receta en formato humano la redirección sería así:

http://adrianistan.eu/recipe/tarta-santiago -> http://adrianistan.eu/recipe/tarta-santiago.html

Según los formatos que queramos leer tendremos una URL diferente, pero el IRI será el mismo siempre.

Una plataforma LinkedData completa debe ofrecer una serie de servicios para todos los verbos HTTP: GET, PUT, PATCH, HEAD, OPTIONS, DELETE, POST. De este modo se pueden diseñar APIs basadas en LinkedData. Sin embargo, este sistema no ha tenido mucho éxito y no voy a explicarlo en detalle.

SOLID

En 2018, Tim Berners-Lee, padre de la web, propuso SOLID, un proyecto para restablecer el poder de los usuarios en la web. SOLID significia Social Linked Data y es una aplicación de las técnologías de Linked Data para tratar de promover un sistema descentralizado. Podemos pensar en Solid como una especie de pincho USB. Esto son los pod. La gente tiene sus propios pods, ya sea autogestionados, o en sitios como los  de correo electrónico. Un pod no es más que un espacio de almacenamiento, pero fundamentado sobre las ideas de Linked Data. Así, nuestro pod contiene todos nuestros datos (a través de RDF) de cada aplicación y datos personales. Cuando una aplicación quiere acceder a nuestros datos, le podemos dar permiso desde nuestro pod para que acceda la información que consideremos oportuna. Al usar Linked Data y RDF, diversas aplicaciones son capaces de usar los mismos datos sin cambiar de formato.

Le deseo mucha suerte al proyecto SOLID, aunque no ha tenido mucho apoyo por parte de los desarrolladores. En parte el proyecto es bastante utópico, no es tan fácil que todas las empresas dejen sus datos y hagan las transición a SOLID tan fácilmente, solo ofrece ventajas para los usuarios, no para las empresas. Por otro lado, Linked Data nunca ha sido popular fuera de ambientes académicos o científicos (al parecer estas tecnologías se usan bastante en biomedicina), la mayoría de desarrolladores no conoce bien la tecnología y apenas existen librerías. Proyectos de software libre populares como Mastodon o PeerTube ni siquieran soportan SOLID.

Por otro lado, la transición a PODs por parte de los usuarios no es trivial y requiere de enseñar a los usuarios y a que sean conscientes de administrar sus propios pods.

He estado pensado sobre esto últimamente y creo que aunque la idea es buena tiene problemas prácticos. Pero, ¿y si combinamos los pods de SOLID con IPFS? ¿Y si SOLID se integrase en los navegadores? Yo mientras tanto voy a ir experimentando con esta tecnología en futuros proyectos.

Comentarios

mickie
Solo Pleroma y Pixelfed soportan algo de web semantica, por medio de la suit de protocolos LitePub codificando los datos enlazados con JSON-LD https://git.pleroma.social/i1t/pleroma/blob/develop/priv/static/schemas/litepub-0.1.jsonld

Añadir comentario

Todos los comentarios están sujetos a moderación