Towards Knowledge Federation for Biomedical Applications

Page 1

TOWARDS KNOWLEDGE FEDERATION BIOMEDICAL APPLICATIONS Pedro Lopes & José Luís Oliveira http://bioinformatics.ua.pt i-SEMANTICS 2011, September 7-9, Graz, Austria #is11tkf #iKNOW2011 #iSEMANTICS2011

IN


TOWARDS KNOWLEDGE FEDERATION BIOMEDICAL APPLICATIONS Pedro Lopes & José Luís Oliveira http://bioinformatics.ua.pt i-SEMANTICS 2011, September 7-9, Graz, Austria #is11tkf #iKNOW2011 #iSEMANTICS2011

SEMANTIC WEB APPLICATION FRAMEWORK

IN


PEDRO LOPES Innovative Biomedical Technologies Bioinformatics R&D at IEETA PhD Student at University of Aveiro

@pedrolopes http://pedrolopes.net pedrolopes@ua.pt


¢

What?

¢

Why?

¢

How?

¢

Setting it up...

¢

Where?

¢

Future


What? ¢ ¢

¢

¢

¢

http://bioinformatics.ua.pt/coeus

¢


Next Generation Semantic Web Application Framework Take advantage of Semantic Web technologies/standards Easy to configure/setup Integrate heterogeneous/distributed resources Provide data-access APIs Open federation layer connecting miscellaneous instances Streamline Semantic Web application development


Next Generation Semantic Web Application Framework Take advantage of Semantic Web technologies/standards Easy to configure/setup Integrate heterogeneous/distributed resources Provide data-access APIs Open federation layer connecting miscellaneous instances Streamline Semantic Web application development

“Semantic Web-in-a-box� NO STANDALONE APPS, ENTIRE ECOSYSTEMS


¢

Why? ¢

¢

¢

¢

http://bioinformatics.ua.pt/coeus

¢


(Among others…)

IMPROVE BIOMEDICAL APPLICATIONS DOMAIN


SEMANTIC WEB + LIFE SCIENCES perfect benchmark awareness from bioinformatics developers common intertwined graph relationship structure

BUT...


SEMANTIC WEB + LIFE SCIENCES perfect benchmark awareness from bioinformatics developers common intertwined graph relationship structure

BUT... Semantic Web is underused in the life sciences domain transition/migration is very difficult complex application deployment learn a whole new batch of technologies (again!) no killer apps/frameworks

and

are notable exceptions


¢

¢

How? ¢

¢

¢

http://bioinformatics.ua.pt/coeus

¢


Do you like gardening?


KNOWLEDGE

SEED

CSV

XML

SQL

SPARQL

is a single app, an instance SEED ENGINE

API REST

Biomedical Application

SPARQL

12:00 Carrier PM Pagehttp:// Title www.domain. com


KNOWLEDGE

SEED is a single app, an instance

KNOWLEDGE

GARDEN links multiple seeds SEED SEED SPARQL

SPARQL

SEED SEED

SPARQL

SPARQL

FEDERATION

Knowledge Here!

SEED SPARQL


INTEGRATION Data in = Connectors


CONNECTORS = CSV + XML + SQL + SPARQL load everything flexible format support map external data into a seed’s model

any predicate matches data from... csv columns xml XPath results SQL table columns SPARQL query variables


FEDERATION Data out = APIs


API = SPARQL + REST + JAVA code your own apps in any programming language available for desktop, web or mobile

one seed, multiple apps or multiple seeds, one app federate to existing apps access with REST or SPARQL distributed knowledge network


¢

¢

¢

Setting it up... ¢ ¢

http://bioinformatics.ua.pt/coeus

¢


STRATEGY What are our moves?


1 CONFIGURE 2 BUILD 3 EXPLORE


CONFIGURATION Where’s everybody?


CONFIGURATION = JS FILE + (ONTOLOGY * SETUP) local app configuration JSON object in JavaScript file defines application properties (name, version, environment‌)

define seed ontology then setup resources seed ontology

resource setup

based on COEUS ontology

resource connectors configuration

your app data model

ontology mappings


IST2011 I-Semantics Tweets 2011: our brand new app

ID

Name

dc:identifier

ist:Tweet

ist:hasAuthor

foaf:name

ist:Author Title

ist:hasURI

dc:title

ist:hasLink

Link

ist:hasPublicationDate

Date

URI


... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/resource_Twitter"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/Resource"/> <rdfs:label rdf:datatype="&xsd;string">resource_twitter</rdfs:label> <query rdf:datatype="&xsd;string">//entry</query> <order rdf:datatype="&xsd;integer">10</order> <dc:title rdf:datatype="&xsd;string">Twitter</dc:title> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <dc:description rdf:datatype="&xsd;string">Resource connecting Twitter information.</dc:description> <method rdf:datatype="&xsd;string">cache</method> <endpoint rdf:datatype="&xsd;string">http://search.twitter.com/search.atom?q=iknow2011</endpoint> <dc:publisher rdf:datatype="&xsd;string">xml</dc:publisher> <isResourceOf rdf:resource="http://bioinformatics.ua.pt/coeus/concept_Twitter"/> <loadsFrom rdf:resource="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"/> <loadsFrom rdf:resource="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"/> ... <loadsFrom rdf:resource="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"/> </owl:NamedIndividual>


... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/resource_Twitter"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/Resource"/> <rdfs:label rdf:datatype="&xsd;string">resource_twitter</rdfs:label> <query rdf:datatype="&xsd;string">//entry</query> <order rdf:datatype="&xsd;integer">10</order> <dc:title rdf:datatype="&xsd;string">Twitter</dc:title> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <dc:description rdf:datatype="&xsd;string">Resource connecting Twitter information.</dc:description> <method rdf:datatype="&xsd;string">cache</method> <endpoint rdf:datatype="&xsd;string">http://search.twitter.com/search.atom?q=iknow2011</endpoint> <dc:publisher rdf:datatype="&xsd;string">xml</dc:publisher> <isResourceOf rdf:resource="http://bioinformatics.ua.pt/coeus/concept_Twitter"/> <loadsFrom rdf:resource="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"/> <loadsFrom rdf:resource="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"/> ... <loadsFrom rdf:resource="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"/> </owl:NamedIndividual> ... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_title</rdfs:label> <query rdf:datatype="&xsd;string">//title</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:title</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_link</rdfs:label> <query rdf:datatype="&xsd;string">//link[@href]</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">ist:hasLink</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_id</rdfs:label> <query rdf:datatype="&xsd;string">//id</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:identifier</property> </owl:NamedIndividual> ...


BUILDING Getting data together...


... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_title</rdfs:label> <query rdf:datatype="&xsd;string">//title</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:title</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_link</rdfs:label> <query rdf:datatype="&xsd;string">//link[@href]</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">ist:hasLink</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_id</rdfs:label> <query rdf:datatype="&xsd;string">//id</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:identifier</property> </owl:NamedIndividual> ...

... <entry> <id>tag:search.twitter.com,2005:111391828925890561</id> <published>2011-09-07T10:54:16Z</published> <link type="text/html" href="..." rel="alternate"/> <title>die twitterwall auf der #iknow2011 http://t.co/LsxFLDk #visibletweets</title> <content type="html">die twitterwall auf ‌</content> <updated>2011-09-07T10:54:16Z</updated> <link type="image/png" href="..." rel="image"/> <twitter:source><a href="http://www.tweetdeck.com" ‌ /a></twitter:source> <twitter:lang>en</twitter:lang> <author> <name>issi (Isabel Anger)</name> <uri>http://twitter.com/issi</uri> </author> </entry> ...


... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_title</rdfs:label> <query rdf:datatype="&xsd;string">//title</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:title</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_link</rdfs:label> <query rdf:datatype="&xsd;string">//link[@href]</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">ist:hasLink</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_id</rdfs:label> <query rdf:datatype="&xsd;string">//id</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:identifier</property> </owl:NamedIndividual> ...

... <entry> <id>tag:search.twitter.com,2005:111391828925890561</id> <published>2011-09-07T10:54:16Z</published> <link type="text/html" href="..." rel="alternate"/> <title>die twitterwall auf der #iknow2011 http://t.co/LsxFLDk #visibletweets</title> <content type="html">die twitterwall auf ‌</content> <updated>2011-09-07T10:54:16Z</updated> <link type="image/png" href="..." rel="image"/> <twitter:source><a href="http://www.tweetdeck.com" ‌ /a></twitter:source> <twitter:lang>en</twitter:lang> <author> <name>issi (Isabel Anger)</name> <uri>http://twitter.com/issi</uri> </author> </entry> ...


... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_title</rdfs:label> <query rdf:datatype="&xsd;string">//title</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:title</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_link</rdfs:label> <query rdf:datatype="&xsd;string">//link[@href]</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">ist:hasLink</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_id</rdfs:label> <query rdf:datatype="&xsd;string">//id</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:identifier</property> </owl:NamedIndividual> ...

... <entry> <id>tag:search.twitter.com,2005:111391828925890561</id> <published>2011-09-07T10:54:16Z</published> <link type="text/html" href="..." rel="alternate"/> <title>die twitterwall auf der #iknow2011 http://t.co/LsxFLDk #visibletweets</title> <content type="html">die twitterwall auf ‌</content> <updated>2011-09-07T10:54:16Z</updated> <link type="image/png" href="..." rel="image"/> <twitter:source><a href="http://www.tweetdeck.com" ‌ /a></twitter:source> <twitter:lang>en</twitter:lang> <author> <name>issi (Isabel Anger)</name> <uri>http://twitter.com/issi</uri> </author> </entry> ...


... <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_title"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_title</rdfs:label> <query rdf:datatype="&xsd;string">//title</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:title</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_link"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_link</rdfs:label> <query rdf:datatype="&xsd;string">//link[@href]</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">ist:hasLink</property> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="http://bioinformatics.ua.pt/coeus/xml_Twitter_id"> <rdf:type rdf:resource="http://bioinformatics.ua.pt/coeus/XML"/> <rdfs:label rdf:datatype="&xsd;string">xml_twitter_id</rdfs:label> <query rdf:datatype="&xsd;string">//id</query> <dc:creator rdf:datatype="&xsd;string">Pedro Lopes pedrolopes@ua.pt</dc:creator> <property rdf:datatype="&xsd;string">dc:identifier</property> </owl:NamedIndividual> ...

... <entry> <id>tag:search.twitter.com,2005:111391828925890561</id> <published>2011-09-07T10:54:16Z</published> <link type="text/html" href="..." rel="alternate"/> <title>die twitterwall auf der #iknow2011 http://t.co/LsxFLDk #visibletweets</title> <content type="html">die twitterwall auf ‌</content> <updated>2011-09-07T10:54:16Z</updated> <link type="image/png" href="..." rel="image"/> <twitter:source><a href="http://www.tweetdeck.com" ‌ /a></twitter:source> <twitter:lang>en</twitter:lang> <author> <name>issi (Isabel Anger)</name> <uri>http://twitter.com/issi</uri> </author> </entry> ...


SEMANTIC WEB TRANSLATION triplify data app setup + data = triples

subject - predicate - object subject created at runtime

predicate configured in app setup

object loaded from resource data


EXPLORING Also getting data together...


JUST USE THE API! Joseki server

SPARQL

perform SPARQL queries get data in multiple formats

GET request for all data

REST

…/api/<key>:<value> for relationships …api/sub/pred/obj/<format> for specific content

JAVA

abstracted from Jena’s methods


¢

¢

¢

¢

Where? ¢ ¢

http://bioinformatics.ua.pt/coeus


Understanding the Human Variome Reading the “Book-of-Life�

Collect genetics datasets Enrich them

Targeted at gene curators http://bioinformatics.ua.pt/WAVe

Hub for Rare Disease Information Link aggregation

Connects diseases with... Genes, Enzymes, Pathways, Literature

Targeted at clinicians/students http://bioinformatics.ua.pt/diseasecard

Remember biomedical applications?


SPARQL

Your

Your

Your

App

App

App

Here!

Here!

Here!

SPARQL

SPARQL

SPARQL

SPARQL

FEDERATION

Knowledge Here!

Knowledge Here!

Knowledge Here!

Knowledge Here! Knowledge Here! Knowledge Here!

Knowledge Here!

Knowledge Here!


¢

¢

¢

¢

¢

http://bioinformatics.ua.pt/coeus

Future ¢


TODO Extend

API

Include SPARQL endpoint automagically Improve data input Add SOAP

Add support for

LINKED DATA Tests, Tests &

TESTS!

Interested in having your own COEUS seed?

To infinity! And beyond...


‣ Architecture

Wrapping it all up... ‣ Specification


“Semantic Web-in-a-box”

INTEGRATION + EXPLORATION

CONNECTORS

API

csv, sql, xml, sparql

java, rest

=FEDERATION

KNOWLEDGE NETWORK

sparql


“Semantic Web-in-a-box”

INTEGRATION + EXPLORATION

CONNECTORS

API

csv, sql, xml, sparql

java, rest

=FEDERATION

KNOWLEDGE NETWORK

http://bioinformatics.ua.pt/coeus

sparql


THANK YOU! Questions and Feedback are welcome!

http://bioinformatics.ua.pt/coeus


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.