Introducción a JSON-LD Miguel Ángel García Delgado, Daniel Vila-Suero Facultad de Informática Universidad Politécnica de Madrid Campus de Montegancedo s/n Boadilla del Monte, Madrid, Spain Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial- CompartirIgual 4.0 Internacional.
Contenidos 1.Introducción a JSON-LD 2.De JSON a JSON-LD 3.De RDF a JSON-LD 2
Contenidos 1.Introducción a JSON-LD 2.De JSON a JSON-LD 3.De RDF a JSON-LD 3
Introducción a JSON-LD (I) JSON-LD es una serialización Linked Data basado en JSON Recomendación de W3C dentro del RDF Working Group Ligero, fácil de entender por los desarrolladores Idea principal: define un contexto que permite interpretar la información del documento { { "name": " "homepage": { " }, "Person": " }, "name": "Manu Sporny", "homepage": " }
Introducción a JSON-LD (II) Elementos principales:
Contenidos 1.Introducción a JSON-LD 2.De JSON a JSON-LD 3.De RDF a JSON-LD 6
De JSON a JSON-LD (I) Para el ejemplo, utilizaremos la definición de un punto wifi con su punto geométrico { "id":79, "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "type":"Point", "coordinates":[ , ] }
De JSON a JSON-LD (II) El primer paso es añadir el contexto y definir la prefijo base del mismo, en este caso, "zar" { { "zar": " }, "id":79, "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "type":"Point", "coordinates":[ , ] }
De JSON a JSON-LD (III) Después definimos la uri del recurso y su tipo { { "zar": " }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "type":"Point", "coordinates":[ , ] }
De JSON a JSON-LD (IV) Vamos a definir los campos title y tipo como rdfs:label y el campo estado como rdfs:comment { { "zar": " "rdfs": " "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "type":"Point", "coordinates":[ , ] }
De JSON a JSON-LD (V) Ahora definimos el campo lastUpdated como vcard:rev { { "zar": " "rdfs": " "vcard": " "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment ", "lastUpdated":"vcard:rev" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "type":"Point", "coordinates":[ , ] }
De JSON a JSON-LD (V) Por último, definimos la relación geometría { { "zar": " "rdfs": " "vcard": " "geo":" "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment ", "lastUpdated":"vcard:rev", "geometry" : "geo:geometry", "coordinates" : "geo:lat" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "coordinates":[ , ] }
De JSON a JSON-LD (VI) JSON vs JSON-LD { { "zar": " "rdfs": " "vcard": " "geo":" "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment ", "lastUpdated":"vcard:rev", "geometry" : "geo:geometry", "coordinates" : "geo:lat" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "coordinates":[ , ] } { "id":79, "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "type":"Point", "coordinates":[ , ] }
Contenidos 1.Introducción a JSON-LD 2.De JSON a JSON-LD 3.De RDF a JSON-LD 14
De RDF a JSON-LD (I) Para el ejemplo, utilizaremos la definición de un punto wifi con su punto geométrico <rdf:RDF xmlns:rdf=" xmlns:dc=" xmlns:rdfs=" xmlns:vcard=" xmlns:geo=" > 79 AvdCesarAugusto-RamonYCajal Rap En servicio","servicios":"<p>SSID. \"Wizi de Milla Digital\"</p><ul><li>Básico: 512 Kbps / 256 Kbps</li><li>Premium: 1 Mbps / 256 Kbps</li></ul>
De RDF a JSON-LD (II) Empezamos creando el contexto básico con los prefijos del RDF, creamos el campo id del recurso y definimos el tipo. { { "zar": " "rdfs": " "vcard": " "geo":" }, " "zar:ciencia-tecnologia/punto-wifi/" }
De RDF a JSON-LD (III) Añadimos los campos rdfs:label como title y tipo y el campo rdfs:comment como estado. { { "zar": " "rdfs": " "vcard": " "geo":" "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps " }
De RDF a JSON-LD (IV) Añadimos el campo vcard:rev como lastUpdated. { { "zar": " "rdfs": " "vcard": " "geo":" "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment", "lastUpdated":"vcard:rev" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z" }
De RDF a JSON-LD (V) Añadimos el recurso geometría y la relación con el recurso principal { { "zar": " "rdfs": " "vcard": " "geo":" "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment", "lastUpdated":"vcard:rev", "geometry" : "geo:geometry", "lat" : "geo:lat", "long" : "geo:long" }, " "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ "lat": , "long": }
De RDF a JSON-LD (VI) Añadimos el recurso geometría y la relación con el recurso principal { { "zar": " "rdfs": " "vcard": " "geo":" "title": "rdfs:label", "tipo": "rdfs:label", "estado": "rdfs:comment", "lastUpdated":"vcard:rev", "geometry" : "geo:geometry", "lat" : "geo:lat", "long" : "geo:long" }, " tecnologia/punto-wifi/79", "zar:ciencia-tecnologia/punto-wifi/", "title":"AvdCesarAugusto-RamonYCajal", "tipo":"Rap", "estado":"En servicio","servicios":" SSID. \"Wizi de Milla Digital\" Básico: 512 Kbps / 256 Kbps Premium: 1 Mbps / 256 Kbps ", "lastUpdated":" T00:00:00Z", "geometry":{ _ ", "lat": , "long": } <rdf:RDF xmlns:rdf=" xmlns:dc=" xmlns:rdfs=" xmlns:vcard=" xmlns:geo=" > 79 AvdCesarAugusto-RamonYCajal Rap En servicio","servicios":"<p>SSID. \"Wizi de Milla Digital\"</p><ul><li>Básico: 512 Kbps / 256 Kbps</li><li>Premium: 1 Mbps / 256 Kbps</li></ul>
¿Dudas? ¿Preguntas? Muchas gracias. Miguel Ángel García Delgado Facultad de Informática Universidad Politécnica de Madrid Campus de Montegancedo s/n Boadilla del Monte, Madrid, Spain