Mikel Egaña Aranguren
http://mikeleganaaranguren.com / mikel.egana.aranguren@gmail.com
http://mikeleganaaranguren.wordpress.com/teaching/
Versión HTML de esta presentación
Todo el material (Presentación, ejercicios, datos, código) en GitHub
OBO Foundry: Open, Common shared syntax, Unique identifier space, Versions, Delineated content, Definitions, OBO Relation Ontology, Well documented, Users, Collaboratively
Vocabulario controlado para describir la función molecular, el componente celular y el proceso biológico de genes (“Gene Products”)
Integración de información (GAF files), explotación estructura (ej. Term Enrichment)
ChEBI, Cell Type, Sequence Ontology, Phenotype Ontology, UberOntology, ...
"Meta-Ontologías": Basic Formal Ontology (BFO), OBO Relation Ontology (RO)
Mucho contenido de relativamente alta calidad pero ...
... la mayoría de las ontologías son muy pobres axiomáticamente
... OBO format (*)
API para trabajar con ontologías OBO (y OWL*) en Perl
http://search.cpan.org/dist/ONTO-PERL/
Crear un script que devuelva los genes de Arabidopsis thaliana que están anotados en el arbol ciclo celular (GO:0007049) de Gene Ontology
(Usar los archivos /ejercicios/onto-perl/gene_association.tair y /ejercicios/onto-perl/go.obo)
Crear un script que, dados los terminos de GO GO:0030685 y GO:0000800, obtenga los ancestros comunes de ambos
(Usar /ejercicios/onto-perl/go.obo)
Usando onto-toolkit, encontrar los genes de Arabidopsis thaliana que están anotados en el arbol ciclo celular (GO:0007049) de Gene Ontology, y crear un workflow
(Subir los archivos /ejercicios/onto-perl/gene_association.tair y /ejercicios/onto-perl/go.obo)
(Hay que eliminar las lineas que empiezan por "!" del archivo gene_association.tair y convertir los tabs a columnas)
Usando onto-toolkit, encontrar los ancestros comunes de GO GO:0030685 y GO:0000800, y crear un workflow
(http://biomaster.atica.um.es:8080)
(Subir los archivos /ejercicios/onto-perl/gene_association.tair y /ejercicios/onto-perl/go.obo)
Identificar que terminos GO tienen en comun las proteinas JUN (UniProt ID: P05412) y FOS (UniProt ID: P01100) y crear un workflow
(http://biomaster.atica.um.es:8080)
(Obtener las proteinas mediante BioMart y luego usar onto-toolkit)
(Copiar go.obo en una historia nueva)
OWL 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:
Para ordenadores: RDF/XML, OWL/XML, ...
Para humanos: Manchester OWL Syntax, functional, ...
Una ontología OWL esta compuesta de:
Una ontología puede importar otra (owl:import) y hacer referencia a sus entidades mediante axiomas
Una ontología OWL formada por individuos y clases es una "Base de Conocimiento" (KB) formada por:
(+ QCR!) Manchester tutorial
disjointFrom
booleanos: not, or, and
Jerarquía propiedad-subpropiedad (~taxonomía pero con propiedades), ej:
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 y 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: owl_assignment.pdf
Soluciones:
http://owlapi.sourceforge.net/
http://github.com/owlcs/owlapi
RDF es un estándar oficial del W3C para representar información en la web
Un grafo RDF es un conjunto de triples
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)
rdf:type
: agrupar recursos en clases
Cada recurso (Sujeto, predicado, objeto) tiene una URI
URI: Uniform Resource Identifier (RFC3986)
RDF usa espacios de nombres XML mediante "qualified names"
Vocabulario: URIs bajo un espacio de nombre
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!
Lenguaje para hacer consultas sobre grafos RDF (~"El SQL para RDF")
http://www.w3.org/standards/techs/sparql
Tutorial: SPARQL by example (Cambridge Semantics)
Ejercicio práctico: http://linkedlifedata.com/sparql
Get all protein catabolic processes (and more specific) in biomodels
SELECT ?go ?label
WHERE {
service <http://bioportal.bio2rdf.org/sparql> {
?go rdfs:label ?label .
?go rdfs:subClassOf ?tgo .
?tgo rdfs:label ?tlabel .
FILTER regex(?tlabel, "^protein catabolic process")
}
service &lhttp://biomodels.bio2rdf.org/sparql> {
?x &lhttp://bio2rdf.org/biopax_vocabulary:identical-to> ?go .
?x a &lhttp://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction> .
}
}
Un método para ofrecer datos directamente en la web
Una propuesta del W3C: http://www.w3.org/standards/semanticweb/data
LD utiliza la tecnología ya existente (URI, HTTP, ...) para ofrecer una primera versión de la Web Semántica
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
Internet de datos, en vez de documentos: "Base de Datos universal":
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
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 la entidad; URLs identifican (localizan!) diferentes representaciones (RDF, HTML, ...) de la entidad
Descripción de la entidad (RDF, HTML, ...) ≠ entidad
HTTP URIs dereferenciable (URLs): cuando se busca una URI, deberia devolver una descripción adecuada del objeto que identifica esa URI
Para producir el dataset: materializar triples y asegurar consistencia
En consultas
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)
Ejercicio práctico: recrear todo el proceso de publicar un dataset Linked Data
Crear el dataset y "publicarlo" en una infraestructura ya lista (Life Sciences Linked Data)
"Pack" ya listo y configurado para publicar Linked Data en localhost (Solo para GNU/Linux)
Fuseki: triple store
Jetty: servidor web
Pubby: negociacion contenido etc.
Probar con el dataset por defecto en biomaster.atica.um.es
Instrucciones: http://github.com/mikel-egana-aranguren/LSLD#running-with-the-default-dataset
Publicar el dataset de ejemplo con enlaces a otros datasets LOD biomaster.atica.um.es
Instrucciones: http://github.com/mikel-egana-aranguren/LSLD#running-with-a-different-dataset
Crear vuestro propio dataset con Protégé 4 (http://protege.stanford.edu/) (Demo Protégé?)
Con enlaces a otros datasets
Publicar el dataset en localhost
Silk ...
Inferencia con P4: materializar triples ...
SADI: Semantic Automated Discovery and Integration
http://code.google.com/p/sadi/
Crear un servicio SADI en Python (en uno de los puertos asignados)
http://code.google.com/p/sadi/wiki/BuildingServicesInPython (Creating_the_Python_SADI_service)
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
Programming the Semantic Web (O'Reilly)