Alternativas a XML JSON, YAML, SXML, CSV, RDF. Jose Emilio Labra Gayo Depto. Informática Universidad de Oviedo

Documentos relacionados
DR. MIGUEL CERIANI PROF. ALEJANDRO VAISMAN ONTOLOGÍAS EN LA WEB 2. RDF: MODELO Y FORMATOS

Índice INTRODUCCIÓN...11 CAPÍTULO 1. SELECCIÓN DE ARQUITECTURAS Y HERRAMIENTAS DE PROGRAMACIÓN...13

Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales. Departamento de Computación. JSON Schema. Author: Gerardo Rossel

DESARROLLO WEB EN ENTORNO CLIENTE

SPARQL. Jose Emilio Labra Gayo. Departamento de Informática Universidad de Oviedo

CC BASES DE DATOS OTOÑO Clase 12: Datos Semiestructurados: Grafos. Aidan Hogan

Curso librerias Web 2.0. Aplicaciones Web Serv Inf UA JSON

PRÓLOGO...13 CAPÍTULO 1. INTRODUCCIÓN A AJAX...17

Objetivos MODULO I. HTML, XHTML,CSS

PROTOCOLO DE CONEXIÓN A REPOSITORIO DE FIRMAS DOCUMENTACIÓN TÉCNICA INTEGRACIÓN API REPOSITORIO CENTRALIZADO DE FIRMAS VERSIÓN 7

RDF. Jose Emilio Labra Gayo. Departamento de Informática Universidad de Oviedo

Introducción a JSON JUAN CARLOS CONDE RAMÍREZ WEB-TECHNOLOGIES

CC BASES DE DATOS OTOÑO Clase 11: Datos Semiestructurados: Arboles. Aidan Hogan

LENGUAJES DE PROGRAMACIÓN 4 MÓDULOS. 56 Horas

DEFINICIÓN DE ONTOLOGÍAS EN SOFIA2

Temario Programación Web para Web

Características de JavaScript

2 Identificación y selección de la información reutilizable

CC BASES DE DATOS PRIMAVERA Clase 13: Datos Semiestructurados: Arboles. Aidan Hogan

XHTML DINAMICO AVANZADO (AJAX Y DOM)

Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres XML. Jose Emilio Labra Gayo. Octubre Jose Emilio Labra Gayo XML

Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0. XPath. Jose Emilio Labra Gayo

Desarrollo Web con PHP y MySQL

MADA. Metodología Ágil de Desarrollo de APIs. Marco Antonio Sanz

Tema 8: Tipos de datos. Sesión 24: Tipos de datos (1)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Validación con Expresiones Regulares

Node.JS Raspberry Pi (RPi) 2015/05/08 Juan V. Capella

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)

JavaScript. PDF created with pdffactory trial version (c) Juan Carlos Cano Todos los derechos reservados

Computación distribuida sobre Ruby on Rails

Programación Web Avanzada: AJAX y Google Maps

Programación en HTML5 con JavaScript y CSS3 Duración: 30 Horas Código Sence:

CEFIRE: Curso Administración de APACHE

Práctica 1. Programación Funcional Introducción a Helium

Aprender a desarrollar con JavaScript

AJAX. Desarrollo de Aplicaciones en Entornos Web Curso 2016/2017

Introducción a XML Tecnólogo en Informática. Ing. Montserrat López -

Lenguaje XML. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo

Fundamentos de las tecnologías de la información

Diseño y populación semiautomática de ontologías. Daniel Fiel Cortés / TFC

Tendencias en XSLT. Jose Emilio Labra Gayo. Noviembre Contenidos Aplicaciones XSLT Algunas Aplicaciones de XSLT Extensiones

Tabla de Contenidos. xii

Curso de PHP. Tema 2: Lenguaje PHP básico

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

JavaScript,, AJAX y otras tecnologías web. Área de Ingeniería Telemática

CAMINANDO HACIA LA WEB SEMÁNTICA

JavaScript como Orientación a Objetos

Introducción a la programación en PHP

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

Computación Web (Curso 2013/2014)

SISTEMAS WEB. Facultad de Estadística e Informática

Programa Saiotek 2006 SMARTLAB. Entorno de Trabajo Inteligente Colaborativo y Programable

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25.

TECNOLOGIAS PARA LA INTEGRACION DE SOLUCIONES. Facultad de Estadística e Informática

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Introducción a JavaScript y DOM DISERTANTE ING. RASJIDO, JOSE ALBERTO

Tema IV. XML IV. XML Schemas

Aplicaciones RDF. Jose Emilio Labra Gayo. Departamento de Informática Universidad de Oviedo

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Experto Universitario Java Enterprise Spring

Aprender a desarrollar con JavaScript (2a edición)

Servicios Telemáticos Avanzados. 4.- Representación de datos: XML y JSON

TEMA 6 LENGUAJE XML. 1 Negocios y Dirección

PHP. MySQL. Diseño de Comportamientos Interactivos III. JAVAScript. Abel Valle-Chávez + + Diseño Interactivo. M. en C.C.

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.

Tutorial de enlace entre Formulario Web y Servicio Web REST. Programación en Internet

INDICE. Prólogo de la Segunda Edición

Lenguajes de Programación. Capítulo 4. Expresiones.

Anexo I:Lineamientos de la Estructura de Metadatos

A j ax. XHTML/CSS JavaScript/DOM XML PHP/ASP.NET/JSP-XML

Análisis Sintáctico de XML WEB-SERVICES

Aplicaciones Web AJAX. David Cabrero Souto. Grupo MADS ( Universidade da Coruña

AGRADECIMIENTOS INTRODUCCIÓN... 17

Reglas de Negocio: Dónde implementarlas? Reglas de Negocio: Capa de presentación

Formatos de datos abiertos

XMLHTTPREQUEST AJAX: PROPIEDADES STATUS, ONREADYSTATECHANGE, READYSTATE, RESPONSETEXT O XML (CU01207F)

Índice INTRODUCCIÓN...13

Apéndice A. El lenguaje EL y las librerías JSTL

Grupo de Ingeniería del Software. Conceptos básicos

Programa Formativo. Código: Curso: Experto en Diseño Web para dispositivos móviles Modalidad: DISTANCIA Duración: 120h.

FORMACIÓN ESPECIALIZADA EN HERRAMIENTAS Y LENGUAJES DE PROGRAMACIÓN WEB

Introducción a RDF. Fundamentos de la Web Semántica. Documentos. Breve historia. Objetivos RDF. Modelo de datos RDF. Pablo R.

LA EVOLUCIÓN DE JAVASCRIPT

Control de la calidad en R: Uso de Markdown para creación de informes y reportes técnicos

DISEÑO WEB AVANZADO CON HTML 5 Y CSS3

RDFlib. Javier Béjar ECSDI 2017/2018. Facultat d Informàtica de Barcelona, UPC

Parte III: AJAX y REST

LA WEB SEMANTICA. Natalia Hernández Yuste,

2.4. Unidades de Aprendizaje. Unidad de aprendizaje: Desarrollo de páginas web estáticas. Número 1. Propósito de la unidad

Pautas para el diseño de un proyecto web

Cosas que hacer en compañía de OpenStreetMap

DISEÑO WEB AVANZADO CON HTML5 Y CSS3 MODALIDAD TELEFORMACIÓN HORAS: 40

Transcripción:

Alternativas a XML JSON, YAML, SXML, CSV, RDF Jose Emilio Labra Gayo Depto. Informática Universidad de Oviedo

Tipos de representación Los tipos de representación se identifican con MIME MIME (Multipurpose Internet Mail Extensions) Identificar el tipo de contenido (Cabecera Content-type) Formato tipo/subtipo Ejemplos: text/html: Página Web en formato HTML text/xml, application/xml : Documento XML application/json: Documento JSON application/pdf: Fichero PDF image/jpeg: Imagen JPEG application/rdf+xml: Documento RDF text/csv: Documento CSV text/turtle: Documento Turtle... Lista oficial: http://www.iana.org/assignments/media-types

Alternativas a XML Varias alternativas a la sintaxis XML JSON CSV RDF YAML SXML

JSON JSON = Javascript Object Notation Subconjunto de Javascript para representar datos Independiente de lenguaje y fácil de analizar Estandarizado: RFD 4627 Librerías para múltiples lenguajes: C, C++, C#, Delphi, Haskell, Java, Lisp, Perl, PHP, Python, Ruby, Scheme, etc. http://json.org/ Douglas Crockford

JSON. Ejemplo { "pedido": { "fecha": "2017-05-29", "productos": [ { "codigo" : "R23", "nombre" : "Rotulador", "cantidad" : 20, { "codigo" : "G56", "nombre" : "Grapadora", "cantidad" : 2 ] Editores JSON: http://www.jsoneditoronline.org/ http://braincast.nl/samples/jsoneditor/

JSON: Valores básicos Cadenas de caracteres Caracteres Unicode Dentro de comillas dobles. "Juan" "Año" Números Enteros, reales Booleanos true false Null

JSON: Valores compuestos Objetos Asociaciones de tipo clave : valor Entre llaves { Ejemplo: { "nombre" : "Juan", "edad" : 23 Arrays Secuencias de valores Pueden ser de diferentes tipos Entre corchetes [ ] [2, "tres", true] Objetos y arrays pueden anidarse

JSON. Estructura jerárquica Documentos JSON tienen estructura de árbol { "pedido": { "fecha": "2017-05-29", "productos": [ { "codigo" : "R23", "nombre" : "Rotulador", "cantidad" : 20, { "codigo" : "G56", "nombre" : "Grapadora", "cantidad" : 2 ] "fecha" "2017-05-29" "pedido" "productos" 0 1 "código" "cantidad" "nombre" "código" "cantidad" "nombre" "R23" "Rotulador" 20 "G56" "Grapadora" 2

JSON. JSON en Javascript <script type="text/javascript" src="http://www.json.org/json.js"> </script> <script type="text/javascript"> x = [3, "tres"] alert("convertido en JSON: " + x.tojsonstring()) alert("analizando JSON...") str = "[4, \"cuatro\"]" r = str.parsejson() for (i=0; i < r.length; i++) { alert("elemento " + i + " = " + r[i]) </script>

JSON. Uso en Ajax var objeto; var htr = new XMLHTTPRequest(); htr.open("get",url,true); htr.send(null); htr.onreadystatechange = function () { if (htr.readystate == 4 ) { if (htr.status == 200) { objeto = eval("{" + htr.responsetext + "" ); else { alert("problema con la URL"); Problemas de seguridad al utilizar eval. Recomendación: Utilizar parsejson()

JSON Schema Permite validar documentos JSON Especificación en IETF: http://json-schema.org/ {"type": "object", "properties": { "pedido": { "type": "object", "properties": { "fecha": { "type": "string", "format": "date-time", "productos": { "type": "array", "minitems": 1, "items": { "type": "object", "properties": { "código": {"type": "string", "pattern": "[A-Z]\\d{2", "nombre": {"type": "string", "cantidad": { "type": "integer", "minimum": 1, "required": ["código", "cantidad" ], "required": ["fecha", "productos"] { "pedido": { "fecha": "2017-05-29", "productos": [ { "codigo" : "R23", "nombre" : "Rotulador", "cantidad" : 20, { "codigo" : "G56", "nombre" : "Grapadora", "cantidad" : 2 ]

JSON. Comparación con XML Ventajas Analizador de JSON puede ser más eficiente Facilidad de procesamiento Utilización en muchas APIs Legibilidad similar a XML Retos Validación: JSON Schema no es muy popular Espacios de nombres? Entidades?

YAML YAML (YAML Ain't a Markup Language) Propuesto por C. Evans (2001) como lenguaje para representar datos Objetivos: Facilidad de edición manual Representación de tipos de datos habituales en lenguajes Independiente del lenguaje Incluye JSON como un subconjunto

YAML. Ejemplo { "pedido": { "producto": [ "codigo" : "R23" ], "nombre" : "Rotulador RX2" "cantidad" : 20, "comentarios" : "Comprobad que escriben", { "producto": [ "codigo" : "G56" ], "nombre" : "Grapadora Lin" "cantidad" : 2, "comentarios" : "Envuelta para regalo" --- pedido: producto: Estilo basado en indentación Evita comillas, llaves y corchetes Estilo en línea Idéntico a JSON - codigo : R23 nombre : Rotulador RX2 cantidad : 20 comentarios : Comprobad que escriben producto: - codigo : G56 nombre : Grapadora Lin cantidad : 2 comentarios : Envuelta para regalo

YAML. Tipos de datos y Referencias Pueden definirse tipos de datos mediante!! Referencias &nombre: define un valor *nombre: referencia a un valor <<: Mezcla parejas de clave/valor --- ingredientes: Cabrales: &id001 nombre : Queso Cabrales tipo: Queso cantidad:!!integer 1 --- ingredientes: Cabrales: &id001 nombre : Queso Cabrales tipo: Queso cantidad:!!integer 1 Edam: <<: *id001 nombre : Queso Edam Edam: nombre : Queso Edam tipo: Queso cantidad:!!integer 1

YAML. Comparación con XML Ventajas Legibilidad para edición manual Problemas Espacios de nombres Validación (Kwalify) Cortar/pegar manteniendo indentación

SXML SXML: Scheme & XML Representar XML mediante S-Expresiones S-Expresiones: desarrolladas para LISP (y Scheme) LISP: Lenguaje funcional creado en 1958 (pedido (producto (@ (codigo "R23")) (nombre "Rotulador") (cantidad 20) (comentarios "Comprobad que escriben") ) (producto (@ (codigo "G56")) (nombre "Grapadora Lin") (cantidad 2) (comentarios "Envuelta para regalo") ) )

CSV CSV = Comma Separated Values Formato muy popular hojas de calculo y bases de datos Utilizado desde 1967 Se popularizó sin especificación estándar CSV on the Web (CSVW): para añadir metadatos Ejemplo: codigo, nombre, cantidad, comentarios R23, Rotulador, 20, Comprobad que escriben G56, Grapadora, 2, Envuelta para regalo

CSV on the Web Permite definir la estructura de ficheros CSV Incluye tipos de datos basados en XML Schema Herramienta: CSVLint { "fields": [ { "name": "Codigo", "constraints": { "required": true, "unique": true, { "name": "Nombre", "description": "Nombre del producto", "constraints": { "required": true, { "name": "Cantidad", "title": "Cantidad", "constraints": { "required": true, "type": "http://www.w3.org/2001/xmlschema#nonnegativeinteger", { "name": "Comentarios", "title": "Comentarios", "constraints":{ "required": true ] codigo, nombre, cantidad, comentarios R23, Rotulador, 20, Comprobad que escriben G56, Grapadora, 2, Envuelta para regalo

RDF Resource Description Framework Basado en grafo Declaraciones del tipo Sujeto - predicado - objeto Los predicados se identifican con URIs Sujetos: URIs o nodos anónimos Objetos: URIs, nodos anónimos ó literales

Ejemplo en RDF prefix schema: <http://schema.org/> prefix : <http://ejemplo.org/> prefix dbr: <http://dbpedia.org/resource/> :p1 a schema:order ; schema:orderdate "2017-05-29T23:00:00Z" ; schema:ordereditem :item1, :item2. :item1 a schema:product ; schema:identifier "R23" ; schema:name "Rotulador" ; schema:orderquantity 20 ; schema:sameas dbr:marker_pen. :item2 a schema:product ; schema:identifier "G56" ; schema:name "Grapadora" ; schema:orderquantity 2 ; schema:sameas dbr:stapler.

Validación de RDF Alternativas: Shape Expressions, SHACL <Order> { a [schema:order] ; schema:orderdate xsd:datetime ; schema:ordereditem @<Item>+ <Item> { schema:identifier xsd:string ; schema:name xsd:string ; schema:orderquantity xsd:integer; schema:sameas IRI :p1 a schema:order ; schema:orderdate "2017-05-29T23:00:00Z"; schema:ordereditem :item1, :item2. :item1 a schema:orderitem ; schema:identifier "R23" ; schema:name "Rotulador" ; schema:orderquantity 20 ; schema:sameas dbr:marker_pen. :item2 a schema:orderitem ; schema:identifier "G56" ; schema:name "Grapadora" ; schema:orderquantity 2 ; schema:sameas dbr:stapler.

JSON-LD Representación de RDF en JSON https://json-ld.org/ { "@context": "http://ejemplo.org/contexto.jsonld", "@graph": [ { "@id": ":p1", "productos": [ {"@id": ":item1", {"@id": ":item2" ], {"@id": ":item1", "codigo": "R23", "nombre": "Rotulador", "cantidad": 20, "ref": "dbr:marker_pen", {"@id": ":item2", "codigo": "G56", "nombre": "Grapadora", "cantidad": 2, "ref": "dbr:stapler" ] {"@context": "http://ejemplo.org/contexto.jsonld" { "": "http://ejemplo.org/", "schema": "http://schema.org/", "dbr": "http://dbpedia.org/resource/", "xsd": "http://www.w3.org/2001/xmlschema#", "productos": {"@id": "schema:orderitem", "nombre": { "@id": "schema:name", "codigo": {"@id": "schema:identifier", "cantidad": {"@id": "schema:orderquantity", "ref": {"@id": "schema:sameas",

Comparación Tecno logía Validación Transformación Consulta Modelo de datos XML DTDs XML Schema RelaxNG Schematron XPath XQuery Árbol Contenido mixto Texto/etiquetas Elementos ordenados Atributos no ordenados JSON JSON Schema JSonPath Árbol Objetos: clave/valor no ordenados Arrays: contenido ordenado CSV CSVW SQL Tabla Elementos ordenados RDF ShEx SHACL SPARQL Grafo Arcos no ordenados Uso de URIs para integración Datos enlazados Varias sintaxis: Turtle, JSON-LD,...