Life Sciences Semantic Web


Máster Bioinformática UM (2014-2015)


Mikel Egaña Aranguren
http://mikeleganaaranguren.com / mikel.egana.aranguren@gmail.com



http://mikeleganaaranguren.wordpress.com/teaching/


Versión HTML




by-nc-sa




Life Sciences Semantic Web

Life Sciences Semantic Web


SW_Mark.png

Pila tecnologías Web Semántica


SW_stack.png




OWL (Web Ontology Language)

OWL


OWL es un estándar oficial del W3C para crear ontologías en la web con un semántica precisa y formal


http://www.w3.org/standards/techs/owl

OWL


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

Sintaxis OWL


Para ordenadores: RDF/XML, OWL/XML, ...

Para humanos: Manchester OWL Syntax, functional, ...

Semántica OWL


Una ontología OWL esta compuesta de:

  • Entidades: las entidades del dominio de conocimiento, identificadas con URIs, introducidas por el desarrollador ("proteina", "participa_en", ...)
  • Axiomas: relacionan las entidades mediante el vocabulario lógico que ofrece OWL

Una ontología puede importar otra (owl:import) y hacer referencia a sus entidades mediante axiomas

Entidades OWL


  • Individuos
  • Clases
  • Propiedades
    • Objeto
    • Anotación
    • Datos

Individuos



Manchester tutorial

Propiedades



Manchester tutorial

Clases



Manchester tutorial

Semántica OWL


Una ontología OWL formada por individuos y clases es una "Base de Conocimiento" (KB) formada por:

  • TBox (Terminological Box): clases (~ "esquema")
  • Abox (Assertional Box): individuos (~ "datos")

Clases



Clase subclase



Clases equivalentes



Jerarquía de clases (Taxonomía)



Condiciones necesarias



Condiciones necesarias y suficientes



Restricción existencial (some)



Manchester tutorial

Restricción universal (only)



Manchester tutorial

Restricción a un individuo (value)



Manchester tutorial

Restricciones cardinales



(+ QCR!) Manchester tutorial

Más axiomas para clases


disjointFrom

booleanos: not, or, and


Manchester tutorial

Expresiones complejas



Propiedades OWL


Manchester tutorial

Jerarquía propiedades



Jerarquía propiedad-subpropiedad (~taxonomía pero con propiedades), ej:

  • interacciona con
    • mata a
      • estrangula a

Características propiedades objeto


Manchester tutorial

Características propiedades objeto


Manchester tutorial

Características propiedades objeto


Manchester tutorial

Características propiedades datos


Solo funcional


Dominio clases, rango datatypes

Propiedades anotación


Anotar con lenguaje natural entidades (propiedades, clases, individuos), axiomas, ontologías


Fuera de la semántica


rdfs:label, rdfs:comment, dublin core, a medida

Individuos


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


Razonamiento automático


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!)

Tareas más comunes razonamiento automático


Mantener taxonomía


Consistencia


Clasificar entidades y consultas

Mantener una taxonomía


Consistencia


Clasificar entidades, consultas



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

Ejercicios


Ejercicios: owl_assignment.pdf


Soluciones:

OWL API


http://owlapi.sourceforge.net/


http://github.com/owlcs/owlapi






RDF

RDF (Resource Description Framework)


RDF es un estándar oficial del W3C para representar información en la web


www.w3.org/standards/techs/rdf

Triple RDF


2Triple_datatype.png

Grafo RDF


Un grafo RDF es un conjunto de triples


Grafo2.png

Grafo RDF


Algunos objetos pueden ser valores literales (Cadenas de caracteres)


Sujetos y predicados sólo pueden ser recursos


Los valores literales pueden tener tipo (XML Schema datatypes)


triple_datatype.png

Elementos RDF


rdf:type: agrupar recursos en clases


Elementos RDF


URIs en RDF


Cada recurso (Sujeto, predicado, objeto) tiene una URI


URI: Uniform Resource Identifier (RFC3986)


Espacios de nombres XML


RDF usa espacios de nombres XML mediante "qualified names"


Vocabulario: URIs bajo un espacio de nombre


  • rdfs="http://www.w3.org/2000/01/rdf-schema#"
  • obo="http://purl.org/obo/owl/GO#"
  • owl="http://www.w3.org/2002/07/owl#"
  • ...

Serializar RDF


RDF es un modelo para representar 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!

Serializar RDF



Serializar RDF: RDF/XML


valid_rdf.png

Vocabulario (ontología) / triples


OntologiaInstancias.png

Más información



RDF primer


RDF validator






SPARQL

SPARQL



Lenguaje para hacer consultas sobre grafos RDF (~"El SQL para RDF")


http://www.w3.org/standards/techs/sparql


SPARQL



SPARQL



SPARQL



SPARQL tutorial (Leigh Dodds)

SPARQL by example (Cambridge Semantics)

SPARQL (Ejercicios)



Familiarizarse con los datos que vamos que vamos a usar para Linked Data


Linked Data Server (data)


RDF (raw); copiar y pegar en RDF validator

OWL (raw); bajar y abrir con Protégé


SPARQL (Ejercicios)



Un triple store Stardog en cada puerto: http://biomaster.atica.um.es:8180


Cada alumno tiene un puerto asignado (8181-8193)


SPARQL (Ejercicios)



cd /home/USER/LinkedDataServer/


export STARDOG_HOME=/home/USER/LinkedDataServer/stardog-3.0-home


export PATH=/home/USER/LinkedDataServer/stardog-3.0/bin:$PATH


SPARQL (Ejercicios)



stardog-admin server start --port 8180


stardog-admin --server snarl://localhost:8180 db create -n um


stardog data add snarl://localhost:8180/um data/data2.rdf data/data.rdf


DataBases; um; query (admin;admin)


DataBases; um; browse (admin;admin)


SPARQL (Ejercicios)



QUERY 1: Obtener todos los triples del dataset


QUERY 2: ¿Que entidad se relaciona con Prot B a traves del predicado codifiedBy?


QUERY 3: ¿Cual es el rdfs:label de Prot B?


QUERY 4: ¿Que instancias pertenecen a la clase Organelle?


SPARQL (Ejercicios)



QUERY 5: ¿Que entidad es parte de algo (part of) y esta codificada (codifiedBy) por un gen?


QUERY 6: ¿En que triples aparece Prot A como sujeto?(*)


QUERY 7: Inferencia. ¿Con que entidades se relaciona Gene B a traves de part of?¿Debería ser parte de Nucleus?


SPARQL (Ejercicios)



QUERY 8: Consultas federadas. Ejemplo Uniprot.

¿Que entidad de nuestro dataset es owl:sameAs otra entidad de Uniprot que es el sujeto del triple http://purl.uniprot.org/core/classifiedWith http://purl.obolibrary.org/obo/GO_0005890?






Linked Data

Video divulgativo


¿Qué es Linked Data (LD)?


Un método para ofrecer datos directamente en la web


Una propuesta del W3C: http://www.w3.org/standards/semanticweb/data


Un primer paso hacia la Web Semántica


LD utiliza la tecnología ya existente (URI, HTTP, ...) para ofrecer una primera versión de la Web Semántica

Pila tecnologías Web Semántica y LD


BNODE

Principios LD


  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, SPARQL)
  4. Incluir enlaces a otras URIs para que se puedan descubrir más entidades


http://www.w3.org/DesignIssues/LinkedData.html

Con LD publicamos datos de manera ...


... semántica


... enlazada

Semántica


RDF ofrece el triple, un modelo de datos explícito y homogéneo: una "frase" estándar que los ordenadores pueden "entender"


Triple.png

Enlaces


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


Links.png

Red global de datos enlazados


Red.png

Red global de datos enlazados


Internet de datos, en vez de documentos: "Base de Datos universal":

  • Es más fácil construir aplicaciones que exploten los datos, incluyendo razonamiento automático
  • Encontramos justo lo que buscamos: consultas directas (SPARQL) en vez de procesar texto

Red global de datos enlazados



Navegamos directamente por las datos (RDF), en vez de navegar a través de documentos que representan esos datos en lenguaje natural (HTML)


Enlazar datos nuevos es tan fácil como enlazar páginas web: crecimiento orgánico de la red

Linked Open Data (LOD) cloud


lod-datasets_2011-09-19_colored.svg

http://richard.cyganiak.de/2007/10/lod/

Datasets de interés



Grafos y triple stores


Un "triple store" contiene diferentes grafos


GrafTripleStore.png

Grafos y triple stores


Solo recibiremos los triples de ese triple store (¡Pero nosotros o nuestro agente automático podemos seguir los enlaces! "Follow your nose")


URIs/URLs en Linked Data


URI identifica a la entidad; URLs identifican (localizan!) diferentes representaciones (RDF, HTML, ...) de la entidad


Descripción de la entidad (RDF, HTML, ...) ≠ entidad


HTTP URIs dereferenciable: cuando se busca una URI, deberia devolver una descripción adecuada del objeto que identifica esa URI


Negociacion contenido


ContentNegotation1.png

Negociacion contenido


ContentNegotation2.png

Negociacion contenido


ContentNegotation3.png

303 URIs vs Hash URIs


Cool URIs for the Semantic Web


uris.png

Cool URIs for the Semantic Web

303 URIs


303.png





Cool URIs for the Semantic Web

Hash URIs


hash_conneg.png


Cool URIs for the Semantic Web

Diseño URIs


  • 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


http://www.slideshare.net/boricles/





Consumir LD

Navegadores LD



Buscadores LD



Aplicaciones (Mash-ups)







Publicar datos en LD

¿Por qué publicar datos en LD?


  • Enlaces al exterior:
    • Publicar solo nuestros datos, referancias al resto, no hay que replicar datos externos:
    • Los datos externos se actualizan independientemente, y nuestro dataset va "a remolque" sin esfuerzo

¿Por qué publicar datos en LD?


  • 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

¿Por qué publicar datos en LD?


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)

Publicar datos en LD




http://linkeddatabook.com/editions/1.0/#htoc61

Publicar datos en LD


  • Crear el dataset
    • Ontología OWL: reusar lo más posible de otras ontologías para interoperabilidad
    • Instancias RDF
  • Añadir enlaces a otros datasets
    • Manualmente o con herramientas como SILK o LIMES
    • A nivel de instancias (owl:sameAs, predicados, ...) y a nivel de vocabulario (owl:equivalentClass, ...)

Publicar datos en LD


Publicar datos en LD


Ejercicio práctico: recrear todo el proceso de publicar nuestro dataset Linked Data en nuestro servidor, en una infraestructura ya preparada (Linked Data Server)

Linked Data Server


"Pack" ya listo y configurado para publicar Linked Data en localhost (Solo para GNU/Linux)


http://github.com/mikel-egana-aranguren/LinkedDataServer

Linked Data Server


structure.png

Linked Data Server


Stardog: http://biomaster.atica.um.es:8180


LinkedDataServer.js:

var port=3030;
var endpoint_url = "http://localhost:8180/";

Linked Data Server


nodejs LinkedDataServer.js


http://biomaster.atica.um.es:3030/resource/Prot_B


http://biomaster.atica.um.es:3030/resource/Prot_A


Linked Data Server


curl --header "accept: application/rdf+xml" http://biomaster.atica.um.es:3030/resource/Prot_B


curl --header "accept: text/html" http://biomaster.atica.um.es:3030/resource/Prot_B


Linked Data Server


Añadir un triple a un entidad externa y publicar en Linked Data server


Crear otro dataset y publicar en Linked Data server


Arreglar alguno de los bugs de LinkedDataServer





Más información

Más información



Linked Data, the story so far (Christian Bizer, Tom Heath, Tim Berners-Lee)


Linked Data: Evolving the Web into a Global Data Space (Christian Bizer, Tom Heath)


Semantic Web Health Care and Life Sciences Interest Group (W3C HCLS IG): Health Care and Life Science (HCLS) Linked Data Guide

Más información



Programming the Semantic Web (O'Reilly)


Linked Data Patterns