Formación EJIE Marzo 2016
9:00 - 10:00 | Introducción a Linked Open Data |
10:00 - 10:30 | Descanso |
10:30 - 13:30 | RDF |
DÃa 1
9:00 - 10:30 | SPARQL |
10:30 - 11:30 | OWL |
11:30 - 12:00 | Descanso |
12:00 - 13:00 | Implementación Linked Data |
DÃa 2
- Soluciones "out of the box" (ej. CKAN)
- Soluciones a medida
- APIs REST / Servicios Web / ...
- Descarga de archivos
Datos abiertos para una participación ciudadana efectiva mediante Reutilización de Información del Sector Público (RISP)
Â
Â
Datos localizables, accesibles e interoperables, tanto para humanos como para maquinas
Â
Â
LEY DE TRANSPARENCIA, PARTICIPACIÓN CIUDADANA Y BUEN GOBIERNO DEL SECTOR PÚBLICO VASCO
Â
De modo general los datos deben suministrarse sin someterse a licencia o condición especÃfica alguna para facilitar su redistribución, reutilización y aprovechamiento en un formato digital, estandarizado y abierto, de modo libre y gratuito, siguiendo una estructura clara y explÃcita que permita su comprensión y reutilización, tanto por la ciudadanÃa como por agentes computacionales
Â
Â
Â
Â
Â
Linked Data
CMS
BBDDs
XML
CSV
...
Archivos
APIs
WEB
Archivos
APIs
publica tus datos en la Web (con cualquier formato) y bajo una licencia abierta
publÃcalos como datos estructurados
usa formatos no propietarios
usa URIs para denotar cosas, asà la gente puede apuntar a estas
enlaza tus datos a otros datos para proveer contexto
Linked Data nos permite publicar datos interoperables ...
Â
... y muchas otras ventajas
Â
Â
1.- Usar URIs (Uniform Resource Identifier) para identificar entidades
2.- Usar URIs que son accesibles mediante el protocolo HTTP, para que usuarios o agentes automáticos puedan acceder a las entidades
3.- Cuando se acceda a la entidad, proveer datos sobre la entidad en formatos estándar y abiertos, como RDF (Resource Description Framework)
4.- Añadir en los datos que publicamos en RDF enlaces a las URIs de otras entidades, de modo que un usuario o agente pueda navegar por la red de datos y descubrir más datos que también siguen los principios Linked Data
Utilizar maquinaria Web (URIs HTTP), para identificar y localizar entidades: http://example.com/entity
Â
Utilizar un modelo de datos común, tripleta RDF, para integrar datos en los que aparecen esa entidades
«base de datos universal»
Descubrimiento e integración de datos
Â
Programación de agentes que consuman los datos
Â
Actualización de datos mediante enlaces
Â
Consultas complejas
Con Linked Data cualquiera puede publicar datos y enlazarlos a otros datos
Â
El conjunto de datos abiertos publicados mediante Linked Data forma la «nube Linked Open Data»
Â
Cada vez más instituciones públicas de todo el mundo usan Linked Data para publicar sus datos
http://dbpedia.org/resource/Berlin
http://www.geonames.org/2950159
owl:sameAs
HTML
RDF
HTML
RDF
curl -L -H "Accept: text/html" "http://dbpedia.org/resource/Berlin"
curl -L -H "Accept: application/rdf+xml" "http://dbpedia.org/resource/Berlin"
curl -L -H "Accept: text/html" "http://sws.geonames.org/2950159/"
curl -L -H "Accept: application/rdf+xml" "http://sws.geonames.org/2950159/"
Â
Un método para publicar datos directamente en la Web
Â
Propuesto por el W3C
Â
http://www.w3.org/standards/semanticweb/data
Â
Â
Â
Â
Â
OWL: "esquema" para RDF
Â
SPARQL: consultas contra RDF
Â
RDF: representar relaciones
entre entidades ("HTML para datos")
Â
URI: identificar entidades
Publicar datos:
Â
- Con "semántica" explÃcita
Â
- Con enlaces
Â
Â
RDF ofrece el triple, un modelo de datos explÃcito y homogéneo: una "frase" estándar que los ordenadores pueden "entender"
Â
Â
Â
Â
Â
En el triple, cada entidad (sujeto, predicado, objeto) tiene una URI que lo identifica
Los datos son enlazados a otros datos a través de la Web, con enlaces explÃcitos
Â
Â
Â
Â
Â
SELECT ?lugar ?nombre
WHERE {
?lugar <http://dbpedia.org/located_in> <http://gip.eus/donostia> .
?lugar rdfs:label ?nombre
}
SPARQL endpoint (Triple Store)
Â
Consultas federadas
Â
Integración
(SERVICE)
- URIs = "keys"
- Enlaces
Crear ontologÃas mediante Web Ontology Language
OntologÃa: "esquema" que describe el conocimiento sobre los datos
Tiene clases de individuos y define las condiciones para pertenecer a una clase
Es un lenguaje axiomatico con semantica precisa >> razonamiento automático
Algunas Triple Stores incluyen razonamiento automático en consultas
sujeto/objeto RDF >> rdf:type >> URI Clase OWL
1.- Convertir datos a RDF
2.- Persistir datos RDF y enlazarlos a la nube Linked Open Data
3.- Crear front-end web para consumo de datos
Triple Store: almacena RDF
Â
SPARQL endpoint: interfaz de consulta a Triple Store (humanos y máquinas)
Â
Servidor Linked Data: sirve HTML o datos RDF mediante negociación de contenido
Triple store: Almacenar RDF, SPARQL endpoint
Servidor Linked Data: acceso web, negociación contenido
Interfaz para programadores/expertos en datos
Â
Análisis complejos de los datos/nueva aplicaciones
Â
SPARQL: Consultas complejas contra los datos, incluso combinando diferentes «bolas» de la nube Linked Open Data (datasets externos)
Â
RDF: Crear programas autónomos que «naveguen» por los datos, recolectando datos (agentes)
curl "http://dbpedia.org/sparql?query=SELECT+%3Fp+%3Fo%0D%0AWHERE+{%0D%0A<http%3A%2F%2Fdbpedia.org%2Fresource%2FBerlin>+%3Fp+%3Fo}"
curl "http://dbpedia.org/sparql?query=SELECT ?p ?o WHERE {<http://dbpedia.org/resource/Berlin> ?p ?o}"
Interfaz para usuarios no expertos
Navegar por los datos publicados
Â
Enlaces a otros recursos Linked Data
Â
La capacidad de los datos de «ser descubiertos» aumenta
Â
Los datos son más interoperables a través de
a) Uso de triple RDF (modelo de datos común)
b) OntologÃas comunes («esquema» común)
c) Uso de URIs para entidades (identificadores enlazables)
Acceder a datos de manera más rica a través de la web (la web son los datos, no un documento que representa los datos)
Â
Acceder a más datos, con enlaces más ricos («es parte de», «nació en», … ) a otros recursos: descubrimiento de nuevos datos
Â
Encontrar datos de manera más precisa
Â
Un ecosistema más rico de Apps, ya que es más fácil desarrollar Apps que integren datos
Crear programas nuevos fácilmente: ej. visualizaciones especificas
Â
Analizar los datos exhaustivamente, en relación a datos externos: ej. estadÃsticas locales vs estadÃsticas a nivel europeo
Â
Integración de datos
Â
Descubrimiento de nuevos datosÂ
Enlaces al exterior:
      Â
Publicar solo nuestros datos, referencias al resto, no hay que replicar datos externos
      Â
Los datos externos se actualizan independientemente, y nuestro dataset va "a remolque" sin esfuerzo
Enlaces a nuestro dataset:
Â
Es facil enlazar a nuestro dataset, ya que usamos HTTP URIs
Â
Por lo tanto, aumenta la capacidad de nuestro dataset de ser descubierto mediante enlaces
Semántica:
Â
El significado de nuestro datos es explÃcito y claro, debido a RDF (instancias) + OWL ("esquema")
Â
Es "fácil" crear aplicaciones, incluyendo razonamiento automático (ej. agentes)
Integración/Limpieza
Transformar a RDF
Enlaces DBPedia
HabitantesAtaun.csv
HabitantesAtaun.rdf
HabitantesAtaun_enlaces.rdf
Todo el proceso de transformación/publicación en un solo servidor con varios interfaces:
- Admin/publicar RDF
- Consumir RDF: SPARQL endpoint, servidor Web, downloads, etc.
Â
El proceso se puede detener/retomar en cualquier fase
Â
Genera automaticamente todo lo necesario para publicación Linked Data de acuerdo a buenas practicas:
- PROV, VoID (+DCAT)
- Servidor web con negociación de contenido
- SPARQL endpoint
- Datahub
- Enlaces a Linked Open Data cloud
Obliga al usuario a añadir rdf:type, rdfs:label
Â
Organización en temas-proyectos-archivos
Â
Todos los datos se guardan en «named graphs»: metadatos (tema-proyecto-archivos), esqueleto usado para conversión, datos a publicar
Â
- «Provenance» (+SPARQL): quien convirtio los datos de demografia a RDF? De donde vienen los datos de demografia de Aduna? Que reglas de conversión se uso?
- Genera VoID + DCAT más facilmente
- Modelo indep. de aplicación: exportar proyectos y datos enteros
Â
Esqueleto reusable para diferentes datos
Integración con Linked Open Vocabularies: sugerir ontologÃas
Un primer paso hacia la Web Semántica que ya funciona
con tecnologÃa actual (URI, HTTP, ...)
Todas las entidades del grafo se identifican mediante URIs
Â
URI: Uniform Resource Identifier (≠URL!). Identifica recursos
http://gipuzkoa.eus/ataun.html#ataun http://dbpedia.org/resource/Ataun
Â
URL: Uniform Resource Locator. Una URI que indica la localización fÃsica de un recurso en la red
http://gipuzkoa.eus/ataun.html
Los sujetos y predicados sólo pueden ser recursos (URIs)
Â
Algunos objetos pueden ser valores literales (Cadenas de caracteres)
Â
Los valores literales pueden tener tipo (XML Schema datatypes)
Agrupar recursos en clases
RDF usa namespaces para "agrupar" URIs
Â
Namespaces se pueden abreviar/expandir mediante prefix
Â
PREFIX dbpedia:<http://dbpedia.org/resource/>
Â
dbpedia:Donostia = http://dbpedia.org/resource/Donostia
dbpedia:Ataun = http://dbpedia.org/resource/Ataun
...
Â
RDF |
http://www.w3.org/1999/02/22-rdf-syntax-ns# |
RDFS |
http://www.w3.org/2000/01/rdf-schema# |
OWL |
http://www.w3.org/2002/07/owl# |
Vocabulario: informalmente, colección definida de URIs, normalmente bajo un mismo namespace
Â
Vocabularios "reservados" (definen lenguajes)
rdf:type = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
La mayorÃa de los vocabularios son ontologÃas
Â
Definen propiedades generales de los datos que queremos publicar:
Â
foaf:person dbpedia-ont:city dc:book ...
RDF es un modelo de datos
Â
Ese modelo abstracto se puede representar con diferentes sintaxis: "Serializar" (escribir) en un archivo
Â
Una de esas sintaxis es RDF/XML
Â
No confundir el modelo con la sintaxis: ¡RDF es mucho más que un archivo XML!
RDF/XML (http://www.w3.org/TR/rdf-syntax-grammar/)
RDFa (http://www.w3.org/TR/rdfa-core/)
Turtle (http://www.w3.org/TR/turtle/)
N3 (http://www.w3.org/DesignIssues/Notation3.html)
Â
Crear un archivo RDF que contenga:
Abrir Virtual Box
Â
Iniciar maquina virtual LOD-EJIE
Â
[Login: lod, passwd:lod]
Â
Abrir http://localhost en firefox
Â
Â
Â
Â
Usar un editor cualquiera (gedit, vim, ...)
Â
Generar en RDF/XML o TTL
Â
Seguir ejemplos anteriores
Â
Algunos prefix:
Â
Â
Â
Â
PREFIX gip:<http://gipuzkoa.eus/resource/>
PREFIX gip_prop:<http://gipuzkoa.eus/prop/>
PREFIX dbpedia:<http://dbpedia.org/resource/>
PREFIX rdfs: ??? [Pista: buscar en prefix.cc]
Convertir fragmentos de Ejercicio2/Museoak a RDF
Â
Â
Â
Â
Â
Â
Â
Â
Posible solución (No hay una manera correcta!): https://github.com/mikel-egana-aranguren/LinkedOpenDataEjie2016/tree/master/Ejercicios/Ejercicio2
Crear un archivo RDF/XML o TTL que contenga:
Â
Bilbo (nuestro dataset) es igual a (owl:sameAs) "Bilbao" (DBpedia)
Â
Solución: https://github.com/mikel-egana-aranguren/LinkedOpenDataEjie2016/tree/master/Ejercicios/Ejercicio2
Â
Lenguaje para hacer consultas sobre grafos RDF (~"El SQL para RDF")
Â
SELECT ?s ?o
WHERE {
?s vive_en ?o
}
Ejecutar triple store (LinkedDataServer/blazegraph):
Â
java -server -jar blazegraph.jar
Â
Subir archivo (Ejercicio3/jon-mikel.ttl) a triple store:
Â
Â
Update >> choose file
Â
¿Consulta para obtener todos los triples de un grafo?
¿Quién vive en un sitio y tiene un amigo? [Pista: SPARQL se basa en Turtle]
Â
Soluciones: https://github.com/mikel-egana-aranguren/LinkedOpenDataEjie2016/tree/master/Ejercicios/Ejercicio3
# Prefixes PREFIX gip_prop: <http://gipuzkoa.eus/prop/> PREFIX gip: <http://gipuzkoa.eus/resource/> # Variables que queremos recibir SELECT ?sujeto ?clase # Patrón del grafo que queremos extraer del grafo mayor WHERE { ?sujeto gip_prop:bizilekua gip:donostia . ?sujeto rdf:type ?clase }
[Subir Ekercicio2/Museoak.rdf a triple store]
# Prefixes PREFIX gip_prop: <http://gipuzkoa.eus/prop/> PREFIX gip: <http://gipuzkoa.eus/resource/> # Queremos recibir todas las variables SELECT * # Patrón del grafo que queremos extraer del grafo mayor WHERE { ?sujeto gip_prop:bizilekua gip:donostia . ?sujeto rdf:type ?clase }
PREFIX gip_prop: <http://gipuzkoa.eus/prop/> PREFIX gip: <http://gipuzkoa.eus/resource/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?langile ?bizilekua WHERE { # Tiene que ser una persona ?langile rdf:type foaf:person . # Tiene que vivir en algun sitio ?langile gip_prop:bizilekua ?bizilekua }
PREFIX gip_prop: <http://gipuzkoa.eus/prop/> PREFIX gip: <http://gipuzkoa.eus/resource/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?langile ?bizilekua WHERE { # Tiene que ser una persona ?langile rdf:type foaf:person .  # Puede vivir en un sitio o no  OPTIONAL {     ?langile gip_prop:bizilekua ?bizilekua  } }
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?entitatea ?izena WHERE { {?entitatea rdfs:label ?izena } UNION {?entitatea foaf:name ?izena } }
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?pertsona ?izena WHERE { ?pertsona foaf:name ?izena }
Â
ORDER BY DESC (?izena) # Puede ser DESC o ASC
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?pertsona ?izena WHERE { ?pertsona foaf:name ?izena }
ORDER BY DESC (?izena) LIMIT 3
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?pertsona ?izena WHERE { ?pertsona foaf:name ?izena }
ORDER BY DESC (?izena) LIMIT 3 OFFSET 3
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?pertsona ?izena WHERE { ?pertsona foaf:name ?izena }
ORDER BY DESC (?izena) LIMIT 3 OFFSET 6
PREFIX gip_prop: <http://gipuzkoa.eus/prop/> SELECT ?museoa ?langile_kop WHERE { ?museoa gip_prop:kopurua ?langile_kop . FILTER (?langile_kop > "800"^^xsd:int) }
SELECT ?langile ?izena WHERE { ?langile foaf:name ?izena . FILTER regex(?izena,'Mi.*') }
Â
Logica: !, &&, ||
Â
Calculos: +, -, *, /
Â
Comparaciones: =, !=, >,<
Â
Tests SPARQL: isURI, isBlank, isLiteral, bound
Â
Acceder a datos: str, lang, datatype
Â
Más: sameTerm, langMatches, regex, ...
Â
SELECT ?lantokia
WHERE {
 ?person rdf:type foaf:person .
 ?person <http://vocab.data.gov/def/drm#worksFor> ?lantokia    Â
}
Â
Â
SELECT DISTINCT ?lantokia
WHERE {
 ?person rdf:type foaf:person .
 ?person <http://vocab.data.gov/def/drm#worksFor> ?lantokia    Â
}
PREFIX gov:<http://vocab.data.gov/def/drm#> PREFIX gip:<http://gipuzkoa.eus/resource/> ASK WHERE { ?person gov:worksFor gip:gugenheim }
Â
DESCRIBE <http://gipuzkoa.eus/resource/mikel-aranguren>
Â
PREFIX gip_prop:<http://gipuzkoa.eus/prop/> PREFIX gip:<http://gipuzkoa.eus/resource/> PREFIX gov:<http://vocab.data.gov/def/drm#> CONSTRUCT { ?langile rdf:type gip:gugenheim_langilea } WHERE { ?langile gov:worksFor gip:gugenheim }
Â
DELETE DATA {
<http://gipuzkoa.eus/resource/aitor-labajo> rdf:type foaf:person
}
[Pestaña "Update" en Blazegraph, seleccionar "SPARQL update"]
DESCRIBE <http://gipuzkoa.eus/resource/aitor-labajo>
Â
Â
DELETE {?person rdf:type foaf:person}
WHERE {?person foaf:name ?name}
Â
Â
SELECT *
WHERE {
?person rdf:type foaf:person
}
Â
PREFIX gip:<http://gipuzkoa.eus/resource/>
INSERT DATA {
gip:aitor-labajo rdf:type gip:hiritar
}
Â
[Pestaña "Update" en Blazegraph, seleccionar "SPARQL update"]
DESCRIBE <http://gipuzkoa.eus/resource/aitor-labajo>
Â
PREFIX gip:<http://gipuzkoa.eus/resource/> INSERT { gip:jon-alfaro rdf:type ?type . } WHERE { gip:aitor-labajo rdf:type ?type . }
[Pestaña "Update" en Blazegraph, seleccionar "SPARQL update"]
DESCRIBE <http://gipuzkoa.eus/resource/jon-alfaro>
PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX dbpedia_ont: <http://dbpedia.org/ontology/> PREFIX gip: <http://gipuzkoa.eus/resource/> SELECT ?poblacion_bilbo WHERE { gip:bilbo owl:sameAs ?town SERVICE <http://dbpedia.org/sparql> { ?town dbpedia_ont:populationTotal ?poblacion_bilbo } }
[Subir Ejercicio2/bilbo_dbpedia.ttl a blazegraph]
Grafo: conjunto de triples
Â
El conjunto entero se identificada con una URI (diferente de la de los datos)
Â
Todas las Triple Stores tienen un Default Graph
Â
Â
Los grafos son muy utiles para añadir datos sobre los datos: ej. procedencia, autoria, fecha de generación
Â
Â
(entre otras cosas)
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>
INSERT DATA{
 GRAPH <http://example/bookStore> {
   <http://example/book1> ns:price 42
 }
}
[Pestaña "Update" en Blazegraph, seleccionar "SPARQL update"]
SELECT *
FROM <http://example/bookStore>
WHERE {?s ?p ?o}
SELECT *
FROM <http://example/bookStore>
WHERE {?s ?p ?o}
¿Qué museo tiene trabajadores cuyo nombre empieza por "Mi" y más de 800 trabajadores?
Â
[Pista: FILTER, &&]
Â
Solucion:Â https://github.com/mikel-egana-aranguren/LinkedOpenDataEjie2016/tree/master/Ejercicios/Ejercicio4
¿Donde se situa el museo en el que trabaja Aitor Labajo?
¿Quien es el alcalde de la ciudad en la que se situa el museo gugenheim? [Pista: owl:sameAs, SERVICE]
OWL (Web Ontology Language) es un estándar oficial del W3C para crear ontologÃas en la web con un semántica precisa y formal
Â
OWL se basa en Lógica Descriptiva (DL)
Â
Representación computacional de un dominio de conocimiento:
Razonamiento automático: inferir conocimiento "nuevo" (*), consultas, consistencia, clasificar entidades contra la ontologÃa, ...
Integrar conocimiento disperso
Â
Para ordenadores: RDF/XML, OWL/XML, ...
Para humanos: Manchester OWL Syntax, functional, ...
Una ontologÃa OWL esta compuesta de:
Entidades: las entidades del dominio de conocimiento, identificadas con URIs, introducidas por el desarrollador ("Mikel", "participa_en", ...)
Axiomas: relacionan las entidades mediante el vocabulario lógico que ofrece OWL (namespace OWL)
Â
Una ontologÃa puede importar otra (owl:import) y hacer referencia a sus entidades mediante axiomas
Entidades (URI)
Axiomas
("URI OWL")
Individuos
Â
Clases
Â
Propiedades
Objeto
Â
Datos
Â
Anotación
Ontologia
(URI)
Entidad
Axioma
EuskalHiria subClassOf kokapena some EuskalProbintzia
Clase
Clase
Propiedad objeto
Restricción
[Fuente de imagenes: Manchester OWL Pizza tutorial]
disjointFrom
booleanos: not, or, and
JerarquÃa propiedad-subpropiedad (~taxonomÃa pero con propiedades), ej:
interacciona con
mata a
estrangula a
Solo funcional
Â
Dominio clases, rango datatypes
Anotar con lenguaje natural entidades (propiedades, clases, individuos), axiomas, ontologÃas
Â
Fuera de la semántica
Â
rdfs:label, rdfs:comment, dublin core, a medida
Miembro de una o más clases (Types)
Â
Igual (SameAs) o diferente (DifferentFrom) a otro individuo
Â
Relaciones binarias con otros individuos o datos (triples), positivas o negativas
Un razonador infiere los "nuevos" axiomas que implican los axiomas que hemos introducido en la ontologÃa
Â
El razonador infiere todos los axiomas; es útil para tratar con conocimiento complejo
Â
Open World Assumption (OWA)
Â
(Falta de) Unique Name Assumption (¡owl:sameAs!)
Mantener taxonomÃa
Consistencia
Clasificar entidades: dada una entidad nueva, como se relaciona con las demas entidades (types, equivalentTo, subClassOf, triples)
Â
Una consulta es una clase anónima que clasificamos contra la ontologÃa como si fuese una entidad
Crear una ontologÃa con que haga referencia a los datos de museos
Â
Ejecutar Protege: /protege/./run.sh
Â
Crear ontologia nueva
Ontology IRI: http://gipuzkoa.eus/admin_ontology.owl
Preference entities URI: http://gipuzkoa.eus/ont/
Importar museoak-rdf-owl.rdf
Â
langilea equivalentTo worksFor some museum
Â
inferencia
langilea2 equivalentTo worksFor min 2 museum
Â
inferencia
Â
???
bilbotarlangilea equivalentTo worksFor some museum and bizilekua value Bilbo
Â
Inferencia
Â
worksFor o kokalekua = bizilekua
Â
Inferencia
Â
BilbotarLangilea
bilbo kokalekua Euskadi
euskalplace equivalentTo kokalekua value Euskadi
Â
Inferencia
Â
Bilbo?
Â
Gugenheim?
Â
Â
1.- Usar URIs para identificar entidades
2.- Usar URIs HTTP para que se pueda acceder a esas entidades
3.- Cuando un usuario o agente accede a una URI, proveer información útil mediante estándares (RDF)
Â
4.- Incluir enlaces a otras URIs para que se puedan descubrir más entidades
Â
Un "triple store" contiene diferentes grafos
Â
Solo recibiremos los triples de ese triple store ...
Â
¡Pero nosotros o nuestro agente automático podemos seguir los enlaces! ("Follow your nose")
URI identifica a entidad; URLs localizan diferentes representaciones (RDF, HTML, ...) de la entidad
Â
Descripción de la entidad (RDF, HTML, ...) ≠entidad
Â
HTTP URI dereferenciable: cuando se busca una URI, deberia devolver una descripción adecuada del objeto que identifica esa URI
curl -L -H "Accept: text/html" "http://dbpedia.org/resource/Berlin"
curl -L -H "Accept: application/rdf+xml" "http://dbpedia.org/resource/Berlin"
curl -L -H "Accept: text/html" "http://sws.geonames.org/2950159/"
curl -L -H "Accept: application/rdf+xml" "http://sws.geonames.org/2950159/"
[http://www.slideshare.net/boricles/]
[BOE-A-2013-2380]
Base URI: http://geo.linkeddata.es/
   TBox URIs:
      http://geo.linkeddata.es/ontology/{concept|property}
       http://geo.linkeddata.es/ontology/Provincia
Â
   ABox URIs:
      http://geo.linkeddata.es/resource/{r. type}/{r. name}
       http://geo.linkeddata.es/resource/Provincia/Madrid
1) Crear el dataset
     OntologÃa OWL: reusar lo más posible de otras ontologÃas para interoperabilidad
   Instancias RDF (triples)
Â
2) Añadir enlaces a otros datasets
   Manualmente o con herramientas como SILK, LIMES, Refine, ...
  A nivel de instancias (owl:sameAs, predicados, ...) y a nivel de vocabulario (owl:equivalentClass, ...)
3) Almacenar el dataset en triple store
4) Publicar el dataset mediante servidor web
Â
Â
 Â
Â
Â
Â
Â
Â
6) Generar archivo voiD (Vocabulary of Interlinked Datasets): http://www.w3.org/TR/void/
 Â
Â
Recrear todo el proceso de publicar nuestro dataset Linked Data en nuestro servidor, en una infraestructura ya preparada (Linked Data Server)
Â
Ejecutar blazegraph, subir Museoak.rdf y bilbo_dbpedia.ttl
Â
Ejecutar jetty (pubby)
Â
$ cd /jetty $ java -jar start.jar jetty.port=8080
 Â
Negociación de contenido en terminal:
Â
$ curl -L "http://localhost:8080/resource/jm-barandiaran" $ curl -L -H "Accept: application/rdf+xml" http://localhost:8080/resource/jm-barandiaran
Â
jetty/webapps/ROOT/WEB-INF/web.xml
jetty/webapps/ROOT/WEB-INF/blazegraph-config.ttl
Crear un dataset nuevo (pocos triples), con URIs propias, y publicarlo
Subir a blazegraph; Configurar pubby
Â
Â
Â
Â