Mikel Egaña Aranguren
http://mikeleganaaranguren.com / mikel.egana.aranguren@upm.es
Biological Informatics Group (http://wilkinsonlab.info), CBGP, UPM, Madrid
https://mikeleganaaranguren.wordpress.com/teaching/
http://biordf.org:8080/UM_LSLD/Clases/UM_Bioinformatics_LD.html
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
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)
Reference URI: URI + fragment (http://foo/bar#frag)
(En Linked Data, las URIs se pueden resolver, es decir de-referenciar)
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!
RDFS es un estándar oficial del W3C para describir clases de recursos RDF y sus propiedades: definir vocabularios para RDF
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:
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
Ejercicio práctico: BioGateway
Ejercicio práctico: http://miuras.inf.um.es/sparql
search for the human genetic diseases related to the gene Brca1 of the Mus musculus species stored in bio2rdf.org datasets
PREFIX ogolod: <http://miuras.inf.um.es/ogolod/ontology/>
SELECT DISTINCT ?bio2rdf_omim ?title
WHERE {
?gene owl:sameAs <http://bio2rdf.org/page/geneid:12189> .
?cluster ogolod:hasOrtholog ?gene .
?cluster ogolod:hasOrtholog ?ortholog .
?disease ogolod:causedBy ?ortholog .
?disease owl:sameAs ?bio2rdf_omim .
?disease ogolod:Name ?title .
}
Ejercicio práctico: http://miuras.inf.um.es/sparql
orthologs related to genes involved in lung cancer and belonging to Rattus Norvegicus
PREFIX ogolod: <http://miuras.inf.um.es/ogolod/ontology/>
PREFIX ogolodr: <http://miuras.inf.um.es/ogolod/resource/>
SELECT DISTINCT ?gene2
WHERE {
?ortholog ogolod:fromSpecies <http://miuras.inf.um.es/ogolod/resource/NCBITaxon_10116/NCBITaxon_10116> .
?ortholog owl:sameAs ?gene2 .
?cluster ogolod:hasOrtholog ?gene .
?cluster ogolod:hasOrtholog ?ortholog .
?disease ogolod:causedBy ?gene .
?disease owl:sameAs <http://bio2rdf.org/page/omim:211980> .
}
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")
Alternativa: federated queries (http://www.w3.org/TR/sparql11-federated-query/)
HTTP URIs dereferenciables: cuando se busca una URI, deberia devolver una descripción del objeto que identifica esa URI
Descripción del objeto (documento RDF) ≠ objeto
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
Instrucciones: life-sciences-linked-data/LSLD/README, "Standard running"
/jena-fuseki-0.2.6-SNAPSHOT
chmod +x fuseki-server s-*
./fuseki-server --update --mem /ds
./s-put http://localhost:3030/ds/data default Data/books.ttl
jetty-distribution-9.0.0.M3/webapps/ROOT/WEB-INF/web.xml
/jetty-distribution-9.0.0.M3
java -jar start.jar jetty.port=8080
Publicar el dataset de ejemplo con enlaces a otros datasets LOD
Instrucciones: life-sciences-linked-data/LSLD/README, "Using a different dataset"
/jena-fuseki-0.2.6-SNAPSHOT
mkdir lslddb
./fuseki-server --update --loc=./lslddb /dataset
./s-put http://localhost:3030/dataset/data lsld Data/LSLD_example.owl
jetty-distribution-9.0.0.M3/webapps/ROOT/WEB-INF/web.xml
/jetty-distribution-9.0.0.M3
java -jar start.jar jetty.port=8080
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 (Usar "Using a different dataset" como guía)
Silk ...
Inferencia con P4: materializar triples ...
Generar RDF con Jena
Model model = ModelFactory.createDefaultModel(); Resource prot_a = model.createResource("http://cbgp.upm.es/lsld.rdf#prot_a"); Resource cell_cycle = model.createResource("http://cbgp.upm.es/lsld.rdf#cell_cycle"); Property participates_in = model.createProperty("http://cbgp.upm.es/lsld.rdf#participates_in"); model.add(prot_a, participates_in,cell_cycle); model.write(System.out);
Consulta SPARQL endpoint con JENA (Juan F. Sequeda)
import com.hp.hpl.jena.query.*; String service = "..."; // address of the SPARQL endpoint String query = "SELECT ..."; // your SPARQL query QueryExecution e = QueryExecutionFactory.sparqlService(service, query) ResultSet results = e.execSelect(); while ( results.hasNext() ) { QuerySolution s = results.nextSolution(); // ... } e.close();
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
José Antonio Miñarro-Giménez, Mikel Egaña Aranguren, Boris Villazón-Terrazas and Jesualdo Tomás Fernández-Breis. Publishing Orthology and Diseases Information in the Linked Open Data cloud. Current Bioinformatics 2012, 7 (3), 255-266. [Bentham science] [pdf]