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:
Lista oficial: http://www.iana.org/assignments/media-types
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
. . .
Alternativas a XML
Varias alternativas a la sintaxis XML
JSON
YAML
SXML
CSV
RDF
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
Editores JSON:
http://www.jsoneditoronline.org/
http://braincast.nl/samples/jsoneditor/
{ "pedido": {
"fecha": "2017-05-29",
"productos": [
{ "codigo" : "R23" ,
"nombre" : "Rotulador",
"cantidad" : 20
},
{ "codigo" : "G56" ,
"nombre" : "Grapadora",
"cantidad" : 2
}
]
}
}
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
{ "pedido": {
"fecha": "2017-05-29",
"productos": [
{ "codigo" : "R23" ,
"nombre" : "Rotulador",
"cantidad" : 20
},
{ "codigo" : "G56" ,
"nombre" : "Grapadora",
"cantidad" : 2
}
]
}
}
JSON. Estructura jerárquica
Documentos JSON tienen estructura de árbol
"pedido"
"productos""fecha"
"2017-05-29"
0 1
"código"
"nombre"
"cantidad"
"G56" "Grapadora" 2
"código"
"nombre"
"cantidad"
"R23" "Rotulador" 20
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"
}
}
Estilo en línea
Idéntico a JSON
Estilo basado
en indentación
Evita comillas, llaves y
corchetes
---
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
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
Edam:
<<: *id001
nombre : Queso Edam
---
ingredientes:
Cabrales: &id001
nombre : Queso Cabrales
tipo: Queso
cantidad: !!integer 1
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
: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 .
<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
}
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
Tecnología Validación Modelo de datos
XML DTDs
XML Schema
RelaxNG
Schematron
Árbol
Contenido mixto
Texto/etiquetas
Elementos ordenados
Atributos no ordenados
JSON JSON
Schema
Árbol
Objetos: clave/valor no ordenados
Arrays: contenido ordenado
CSV CSVW Tabla
Elementos ordenados
RDF ShEx
SHACL
Grafo
Arcos no ordenados
Uso de URIs para integración
Datos enlazados
Varias sintaxis: Turtle, JSON-LD,...

Más contenido relacionado

PPTX
Cubos ppt
PPTX
24 aplicaciones rdf
PDF
Web services restful con JAX-RS
PPSX
Persistencia De Objetos(Hibernate)
PPTX
Automatic API REST Droidcon
PPT
01 Ext Js Introduccion
PDF
Apuntes de XSD
Cubos ppt
24 aplicaciones rdf
Web services restful con JAX-RS
Persistencia De Objetos(Hibernate)
Automatic API REST Droidcon
01 Ext Js Introduccion
Apuntes de XSD

Similar a 16 Alternativas XML (20)

PDF
Integración de aplicaciones Java
PDF
Curso integración Web Semántica
ODP
ElasticSearch: la tenés atroden Google
PPSX
Persistencia de objetos con Hibernate
PDF
6. Utilización del modelo de objetos del documento (DOM)
PPTX
Web 3.0 & IoT
PPTX
Arquitectura de la Web y Computación en el Servidor
PDF
Servicios REST - PucelaTechDay
PPTX
Conexion a servidor desde android
PPTX
Json
PPT
Linked Data In Use (Cursos de Verano UPM 2011)
ODP
Ajax
PPT
Ruby y las arquitecturas orientadas a servicios
PDF
Scala en proyectos de vinculación Ancap-UR - 2013-03
PPT
Html1
PPTX
Taller Android Party: Automatic API REST + Notificaciones PUSH
PPTX
Json short manual
PDF
Introducción a XML Schema para el que quiera aprender algo
PPT
XML y RDF en Web Semántica
PPT
XML Y RDF En Web SemáNtica
Integración de aplicaciones Java
Curso integración Web Semántica
ElasticSearch: la tenés atroden Google
Persistencia de objetos con Hibernate
6. Utilización del modelo de objetos del documento (DOM)
Web 3.0 & IoT
Arquitectura de la Web y Computación en el Servidor
Servicios REST - PucelaTechDay
Conexion a servidor desde android
Json
Linked Data In Use (Cursos de Verano UPM 2011)
Ajax
Ruby y las arquitecturas orientadas a servicios
Scala en proyectos de vinculación Ancap-UR - 2013-03
Html1
Taller Android Party: Automatic API REST + Notificaciones PUSH
Json short manual
Introducción a XML Schema para el que quiera aprender algo
XML y RDF en Web Semántica
XML Y RDF En Web SemáNtica
Publicidad

Más de Jose Emilio Labra Gayo (20)

PPTX
Publicaciones de investigación
PPTX
Introducción a la investigación/doctorado
PPTX
Challenges and applications of RDF shapes
PPTX
Legislative data portals and linked data quality
PPTX
Validating RDF data: Challenges and perspectives
PPTX
Legislative document content extraction based on Semantic Web technologies
PPTX
ShEx by Example
PPTX
Introduction to SPARQL
PPTX
Introducción a la Web Semántica
PPTX
RDF Data Model
PPTX
2017 Tendencias en informática
PPTX
RDF, linked data and semantic web
PPTX
Introduction to SPARQL
PPTX
19 javascript servidor
PPTX
Como publicar datos: hacia los datos abiertos enlazados
PPTX
RDF validation tutorial
PPTX
RDF Validation Future work and applications
Publicaciones de investigación
Introducción a la investigación/doctorado
Challenges and applications of RDF shapes
Legislative data portals and linked data quality
Validating RDF data: Challenges and perspectives
Legislative document content extraction based on Semantic Web technologies
ShEx by Example
Introduction to SPARQL
Introducción a la Web Semántica
RDF Data Model
2017 Tendencias en informática
RDF, linked data and semantic web
Introduction to SPARQL
19 javascript servidor
Como publicar datos: hacia los datos abiertos enlazados
RDF validation tutorial
RDF Validation Future work and applications
Publicidad

Último (20)

PPTX
CREADA PARA VIVIR EN COMUNION 27 de marzo.pptx
PPT
Historia del estado Plurinacional de Bolivia
PDF
Trabajo Estrategia de Mejoramiento-samuel solarte.pdf
PDF
AWS Are you Well-Architected español (AWS WAF-R)
PDF
Historia de la guerra del chaco entre Bolivia y Paraguay
PDF
EL BRANDBOOK MUNDUS DE PERFUMERIA NICHO
PPTX
Blue Pink Minimalist Modern Digital Evolution Computer Presentation.pptx
PPTX
4.1.1%20MEDIDAS%20DE%20CONTROL_r1PVC.pptx
PDF
Tic en nuestra vida diaria en la educación
DOCX
AraujoRosas_Maria_M1S3AI6.docx .
PPTX
POR QUÉ LOS CRISTIANOS NO CELEBRAMOS ESTAS.pptx
PDF
Presentación las TIC, prepa en línea sep
PPTX
Tipos de tic en la sociedad(En la casa, educativo y laboral)
PDF
Presentación líquenes a lo largo de la historia humana .pdf
PDF
StreamSync Panel - Paneles Profesionales para la Gestión de Streaming.pdf
PDF
Mi_muerte_misterios_de_un_homicidio_numero_2.pdfjdjbd
PPTX
Charla 3 - La gestión de servicios de TI.pptx
PPTX
Toxicidades_Tratamiento_Cancer_AMBOSS_v2.pptx
PPTX
Taller_Herramientas_Digitales_para_la_Gestión_Laboral_Eficiente_SUPERSERVICI...
PDF
EL-USO-DE-LAS-TIC-EN-LA-VIDA-COTIDIANA.pdf
CREADA PARA VIVIR EN COMUNION 27 de marzo.pptx
Historia del estado Plurinacional de Bolivia
Trabajo Estrategia de Mejoramiento-samuel solarte.pdf
AWS Are you Well-Architected español (AWS WAF-R)
Historia de la guerra del chaco entre Bolivia y Paraguay
EL BRANDBOOK MUNDUS DE PERFUMERIA NICHO
Blue Pink Minimalist Modern Digital Evolution Computer Presentation.pptx
4.1.1%20MEDIDAS%20DE%20CONTROL_r1PVC.pptx
Tic en nuestra vida diaria en la educación
AraujoRosas_Maria_M1S3AI6.docx .
POR QUÉ LOS CRISTIANOS NO CELEBRAMOS ESTAS.pptx
Presentación las TIC, prepa en línea sep
Tipos de tic en la sociedad(En la casa, educativo y laboral)
Presentación líquenes a lo largo de la historia humana .pdf
StreamSync Panel - Paneles Profesionales para la Gestión de Streaming.pdf
Mi_muerte_misterios_de_un_homicidio_numero_2.pdfjdjbd
Charla 3 - La gestión de servicios de TI.pptx
Toxicidades_Tratamiento_Cancer_AMBOSS_v2.pptx
Taller_Herramientas_Digitales_para_la_Gestión_Laboral_Eficiente_SUPERSERVICI...
EL-USO-DE-LAS-TIC-EN-LA-VIDA-COTIDIANA.pdf

16 Alternativas XML

  • 1. Alternativas a XML JSON, YAML, SXML, CSV, RDF Jose Emilio Labra Gayo Depto. Informática Universidad de Oviedo
  • 2. 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: Lista oficial: http://www.iana.org/assignments/media-types 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 . . .
  • 3. Alternativas a XML Varias alternativas a la sintaxis XML JSON YAML SXML CSV RDF
  • 4. 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
  • 5. JSON. Ejemplo Editores JSON: http://www.jsoneditoronline.org/ http://braincast.nl/samples/jsoneditor/ { "pedido": { "fecha": "2017-05-29", "productos": [ { "codigo" : "R23" , "nombre" : "Rotulador", "cantidad" : 20 }, { "codigo" : "G56" , "nombre" : "Grapadora", "cantidad" : 2 } ] } }
  • 6. JSON: Valores básicos Cadenas de caracteres Caracteres Unicode Dentro de comillas dobles. "Juan" "Año" Números Enteros, reales Booleanos true false Null
  • 7. 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
  • 8. { "pedido": { "fecha": "2017-05-29", "productos": [ { "codigo" : "R23" , "nombre" : "Rotulador", "cantidad" : 20 }, { "codigo" : "G56" , "nombre" : "Grapadora", "cantidad" : 2 } ] } } JSON. Estructura jerárquica Documentos JSON tienen estructura de árbol "pedido" "productos""fecha" "2017-05-29" 0 1 "código" "nombre" "cantidad" "G56" "Grapadora" 2 "código" "nombre" "cantidad" "R23" "Rotulador" 20
  • 9. 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>
  • 10. 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()
  • 11. 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 } ]}}
  • 12. 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?
  • 13. 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
  • 14. 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" } } Estilo en línea Idéntico a JSON Estilo basado en indentación Evita comillas, llaves y corchetes --- 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
  • 15. 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 Edam: <<: *id001 nombre : Queso Edam --- ingredientes: Cabrales: &id001 nombre : Queso Cabrales tipo: Queso cantidad: !!integer 1 Edam: nombre : Queso Edam tipo: Queso cantidad: !!integer 1
  • 16. YAML. Comparación con XML Ventajas Legibilidad para edición manual Problemas Espacios de nombres Validación (Kwalify) Cortar/pegar manteniendo indentación
  • 17. 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") ) )
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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 .
  • 22. Validación de RDF Alternativas: Shape Expressions, SHACL :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 . <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 }
  • 23. 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" }, } }
  • 24. Comparación Tecnología Validación Modelo de datos XML DTDs XML Schema RelaxNG Schematron Árbol Contenido mixto Texto/etiquetas Elementos ordenados Atributos no ordenados JSON JSON Schema Árbol Objetos: clave/valor no ordenados Arrays: contenido ordenado CSV CSVW Tabla Elementos ordenados RDF ShEx SHACL Grafo Arcos no ordenados Uso de URIs para integración Datos enlazados Varias sintaxis: Turtle, JSON-LD,...