SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
nd
2 Status report of degree project

        Integrating Blipkit/BioProlog
      for semantic reasoning in Bioclipse
            Samuel Lampa, 2010-01-25
       Project blog: http://saml.rilspace.com
Some background...
What is “Semantic Web”?
What is Semantic Web?

  “Enabling more powerful use of information”
  Main goals:
● Data availability (on the web)


● Machine-readability of data


● Knowledge integration


● Automatic “conclusion drawing”


  ● “Reasoning”, using Reasoners →
This project compares
   two reasoners:
  Pellet and Blipkit
Research question
Research question



 How do biochemical questions
  formulated as Prolog queries
   compare to other solutions
available in Bioclipse in terms of
    speed and expressiveness?
Semantic Reasoners

●   Pellet/Jena
    ●   Uses W3C languages
        – OWL (Class definitions)
        – RDF (Facts)
        – SPARQL (Querying)
●   Blipkit/BioProlog
    ●   Uses Prolog, with W3C languages “on top”
        – Class definitions, Facts and Queries either in
          W3C languages (“on top” of prolog) or in pure
          Prolog!
What is Prolog?
What is Prolog?

● State facts and rules
● Execute by running queries over these

  facts and rules

●   Unique features:
    ●   Backtracking
    ●   “Closed-world assumption”
Prolog code example
Prolog code example
% === SOME FACTS ===

hasHBondDonors( substanceX, 3 ). % “substance X has 3 H-bond donors”
% etc …

% === A RULE ("RULE OF FIVE" ÀLA PROLOG) ===

isDrugLike( Substance ) :-
  hasHBondDonorsCount( Substance, HBDonors ),
  HBDonors <= 5,
  hasHBondAcceptorsCount( Substance, HBAcceptors ),
  HBAcceptors <= 10,
  hasMolecularWeight( Substance, MW ),
  MW < 500.

% === QUERYING THE RULE ===

?- isDrugLike(substanceX)
true.
?- isDrugLike(X)
X = substanceX ;
X = substanceY.
Prolog code example
% === SOME FACTS ===

hasHBondDonors( substanceX, 3 ). % “substance X has 3 H-bond donors”
% etc …

% === A RULE ("RULE OF FIVE" ÀLA PROLOG) ===
Head                    Implication (“If [body] then [head]”)
isDrugLike( Substance ) :-
  hasHBondDonorsCount( Substance, HBDonors ),
  HBDonors <= 5,
  hasHBondAcceptorsCount( Substance, HBAcceptors ),
  HBAcceptors <= 10,
  hasMolecularWeight( Substance, MW ),
  MW < 500.
                                                     Body
% === QUERYING THE RULE ===

?- isDrugLike(substanceX)                  Comma means conjunction (“and”)
true.
?- isDrugLike(X)
X = substanceX ;
X = substanceY.
                 Capitalized terms are always variables
Prolog code example
% === SOME FACTS ===

hasHBondDonors( substanceX, 3 ). % “substance X has 3 H-bond donors”
% etc …

% === A RULE ("RULE OF FIVE" ÀLA PROLOG) ===

isDrugLike( Substance ) :-
  hasHBondDonorsCount( Substance, HBDonors ),
  HBDonors <= 5,
  hasHBondAcceptorsCount( Substance, HBAcceptors ),
  HBAcceptors <= 10,
  hasMolecularWeight( Substance, MW ),
  MW < 500.

% === QUERYING THE RULE ===

?- isDrugLike(substanceX)     Testing a specific atom (“sutstanceX”)
true.
?- isDrugLike(X)
X = substanceX ;              By submitting a variable (“X”), it will be populated with all
                              instances which satisfies the “isDrugLike” rule
X = substanceY.
Where are we now?
Project plan
What is done so far?
What is done so far?

●   Integration of Blipkit in Bioclipse
    ●   Done: General purpose methods
    ●   Done: Found usage strategy for combined use of
        Bioclipse JS scripting and Prolog
●   Comparing Prolog and Pellet
    ●   Done: Simple performance testing
    ●   Now: Stuck on NMR spectrum similarity search
        – (No backtracking on arithmetic operators in
          SPARQL)
What is left?
What remains to be done?

●   Integration of Prolog / Blipkit
    ●   Refinements?
●   Comparing Prolog and Pellet
    ●   NMR spectrum similarity search
         – Investigate use of OWL in querying
         – Other options? SWRL?
    ●   ChEMBL data
    ●   Toxicity data (opentox.org)
Example
Bioclipse / Prolog script
Example Bioclipse/Prolog script

blipkit.init();
blipkit.loadRDFToProlog("nmrshiftdata.100.rdf.xml");

// Define a “convenience prolog method”

blipkit.loadPrologCode(" 
  hasPeak( Subject, Predicate ) :- 
    rdf_db:rdf( Subject, 
                'http://www.nmrshiftdb.org/onto#hasPeak', 
                Predicate ). 
");

// Call the convenience method (which in turn executes it's
// “body”), and returns all mathing results as an array
var resultList =
blipkit.queryProlog(["hasPeak","10","Subject","Predicate"]);
Example Bioclipse/Prolog script

blipkit.init();
blipkit.loadRDFToProlog("nmrshiftdata.100.rdf.xml");

// Define a “convenience prolog method”

blipkit.loadPrologCode(" 
  hasPeak( Subject, Predicate ) :- 
    rdf_db:rdf( Subject, 
                'http://www.nmrshiftdb.org/onto#hasPeak', 
                Predicate ). 
");                            Prolog rule to load into prolog engine

// Call the convenience method (which in turn executes it's
// “body”), and returns all mathing results as an array
var resultList =
blipkit.queryProlog(["hasPeak","10","Subject","Predicate"]);


       Prolog method to call
                               Limit the number of results   Prolog variables
Current status of
research question
Current status of research question

●   Performance
    ● Prolog won so far. Exceptions?




●   Usability
    ● Prolog very convenient for iterative

      wrapping of complex logic.
      Can RDF/OWL/SPARQL replicate this?

●   Where do RDF/OWL/SPARQL excel?
Project plan
Thank you!
Project blog: http://saml.rilspace.com
Project plan – Current version
Project plan – Proposed version

Contenu connexe

Tendances

Design of a_dsl_by_ruby_for_heavy_computations
Design of a_dsl_by_ruby_for_heavy_computationsDesign of a_dsl_by_ruby_for_heavy_computations
Design of a_dsl_by_ruby_for_heavy_computationsKoichi Fujikawa
 
Extend your REST API
Extend your REST APIExtend your REST API
Extend your REST APIAlexey Tokar
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBTobias Trelle
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring DataEric Bottard
 
A Year With MongoDB: The Tips
A Year With MongoDB: The TipsA Year With MongoDB: The Tips
A Year With MongoDB: The TipsRizky Abdilah
 
Simplifying Persistence for Java and MongoDB with Morphia
Simplifying Persistence for Java and MongoDB with MorphiaSimplifying Persistence for Java and MongoDB with Morphia
Simplifying Persistence for Java and MongoDB with MorphiaMongoDB
 
Spring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutesSpring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutesVMware Tanzu
 
NoSQL and SQL Anti Patterns
NoSQL and SQL Anti PatternsNoSQL and SQL Anti Patterns
NoSQL and SQL Anti PatternsGleicon Moraes
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring DataAnton Sulzhenko
 
CRUD Operation With Dgraph
CRUD Operation With DgraphCRUD Operation With Dgraph
CRUD Operation With DgraphKnoldus Inc.
 
Chunlei Wu BD2K 201601 MyGene.info and MyVariant.info
Chunlei Wu BD2K 201601 MyGene.info and MyVariant.infoChunlei Wu BD2K 201601 MyGene.info and MyVariant.info
Chunlei Wu BD2K 201601 MyGene.info and MyVariant.infoChunlei Wu
 
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with NetbeansAgile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with NetbeansCarol McDonald
 
EuroPython 2015 - Big Data with Python and Hadoop
EuroPython 2015 - Big Data with Python and HadoopEuroPython 2015 - Big Data with Python and Hadoop
EuroPython 2015 - Big Data with Python and HadoopMax Tepkeev
 
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightよく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightKenji Tanaka
 
MongoDB - Aggregation Pipeline
MongoDB - Aggregation PipelineMongoDB - Aggregation Pipeline
MongoDB - Aggregation PipelineJason Terpko
 
ProteomeXchange: data deposition and data retrieval made easy
ProteomeXchange: data deposition and data retrieval made easyProteomeXchange: data deposition and data retrieval made easy
ProteomeXchange: data deposition and data retrieval made easyJuan Antonio Vizcaino
 

Tendances (20)

Design of a_dsl_by_ruby_for_heavy_computations
Design of a_dsl_by_ruby_for_heavy_computationsDesign of a_dsl_by_ruby_for_heavy_computations
Design of a_dsl_by_ruby_for_heavy_computations
 
Extend your REST API
Extend your REST APIExtend your REST API
Extend your REST API
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring Data
 
A Year With MongoDB: The Tips
A Year With MongoDB: The TipsA Year With MongoDB: The Tips
A Year With MongoDB: The Tips
 
Simplifying Persistence for Java and MongoDB with Morphia
Simplifying Persistence for Java and MongoDB with MorphiaSimplifying Persistence for Java and MongoDB with Morphia
Simplifying Persistence for Java and MongoDB with Morphia
 
Spring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutesSpring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutes
 
NoSQL and SQL Anti Patterns
NoSQL and SQL Anti PatternsNoSQL and SQL Anti Patterns
NoSQL and SQL Anti Patterns
 
Elk stack @inbot
Elk stack @inbotElk stack @inbot
Elk stack @inbot
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
 
CRUD Operation With Dgraph
CRUD Operation With DgraphCRUD Operation With Dgraph
CRUD Operation With Dgraph
 
Chunlei Wu BD2K 201601 MyGene.info and MyVariant.info
Chunlei Wu BD2K 201601 MyGene.info and MyVariant.infoChunlei Wu BD2K 201601 MyGene.info and MyVariant.info
Chunlei Wu BD2K 201601 MyGene.info and MyVariant.info
 
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with NetbeansAgile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with Netbeans
 
LibreCat::Catmandu
LibreCat::CatmanduLibreCat::Catmandu
LibreCat::Catmandu
 
EuroPython 2015 - Big Data with Python and Hadoop
EuroPython 2015 - Big Data with Python and HadoopEuroPython 2015 - Big Data with Python and Hadoop
EuroPython 2015 - Big Data with Python and Hadoop
 
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightよく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
 
Auto dock tutorial
Auto dock tutorialAuto dock tutorial
Auto dock tutorial
 
MongoDB - Aggregation Pipeline
MongoDB - Aggregation PipelineMongoDB - Aggregation Pipeline
MongoDB - Aggregation Pipeline
 
ProteomeXchange: data deposition and data retrieval made easy
ProteomeXchange: data deposition and data retrieval made easyProteomeXchange: data deposition and data retrieval made easy
ProteomeXchange: data deposition and data retrieval made easy
 
hySON
hySONhySON
hySON
 

En vedette

iRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat SheetiRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat SheetSamuel Lampa
 
Hooking up Semantic MediaWiki with external tools via SPARQL
Hooking up Semantic MediaWiki with external tools via SPARQLHooking up Semantic MediaWiki with external tools via SPARQL
Hooking up Semantic MediaWiki with external tools via SPARQLSamuel Lampa
 
SciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSamuel Lampa
 
The RDFIO Extension - A Status update
The RDFIO Extension - A Status updateThe RDFIO Extension - A Status update
The RDFIO Extension - A Status updateSamuel Lampa
 
Continuous modeling - automating model building on high-performance e-Infrast...
Continuous modeling - automating model building on high-performance e-Infrast...Continuous modeling - automating model building on high-performance e-Infrast...
Continuous modeling - automating model building on high-performance e-Infrast...Ola Spjuth
 
Python Generators - Talk at PySthlm meetup #15
Python Generators - Talk at PySthlm meetup #15Python Generators - Talk at PySthlm meetup #15
Python Generators - Talk at PySthlm meetup #15Samuel Lampa
 
Thesis presentation Samuel Lampa
Thesis presentation Samuel LampaThesis presentation Samuel Lampa
Thesis presentation Samuel LampaSamuel Lampa
 
Agile large-scale machine-learning pipelines in drug discovery
Agile large-scale machine-learning pipelines in drug discoveryAgile large-scale machine-learning pipelines in drug discovery
Agile large-scale machine-learning pipelines in drug discoveryOla Spjuth
 
Batch import of large RDF datasets into Semantic MediaWiki
Batch import of large RDF datasets into Semantic MediaWikiBatch import of large RDF datasets into Semantic MediaWiki
Batch import of large RDF datasets into Semantic MediaWikiSamuel Lampa
 
Flow based programming an overview
Flow based programming   an overviewFlow based programming   an overview
Flow based programming an overviewSamuel Lampa
 
Vagrant, Ansible and Docker - How they fit together for productive flexible d...
Vagrant, Ansible and Docker - How they fit together for productive flexible d...Vagrant, Ansible and Docker - How they fit together for productive flexible d...
Vagrant, Ansible and Docker - How they fit together for productive flexible d...Samuel Lampa
 
AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingSamuel Lampa
 
Reproducibility in Scientific Data Analysis - BioScience Seminar
Reproducibility in Scientific Data Analysis - BioScience SeminarReproducibility in Scientific Data Analysis - BioScience Seminar
Reproducibility in Scientific Data Analysis - BioScience SeminarSamuel Lampa
 
Introduction to the drug discovery process
Introduction to the drug discovery processIntroduction to the drug discovery process
Introduction to the drug discovery processThanh Truong
 

En vedette (14)

iRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat SheetiRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat Sheet
 
Hooking up Semantic MediaWiki with external tools via SPARQL
Hooking up Semantic MediaWiki with external tools via SPARQLHooking up Semantic MediaWiki with external tools via SPARQL
Hooking up Semantic MediaWiki with external tools via SPARQL
 
SciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programming
 
The RDFIO Extension - A Status update
The RDFIO Extension - A Status updateThe RDFIO Extension - A Status update
The RDFIO Extension - A Status update
 
Continuous modeling - automating model building on high-performance e-Infrast...
Continuous modeling - automating model building on high-performance e-Infrast...Continuous modeling - automating model building on high-performance e-Infrast...
Continuous modeling - automating model building on high-performance e-Infrast...
 
Python Generators - Talk at PySthlm meetup #15
Python Generators - Talk at PySthlm meetup #15Python Generators - Talk at PySthlm meetup #15
Python Generators - Talk at PySthlm meetup #15
 
Thesis presentation Samuel Lampa
Thesis presentation Samuel LampaThesis presentation Samuel Lampa
Thesis presentation Samuel Lampa
 
Agile large-scale machine-learning pipelines in drug discovery
Agile large-scale machine-learning pipelines in drug discoveryAgile large-scale machine-learning pipelines in drug discovery
Agile large-scale machine-learning pipelines in drug discovery
 
Batch import of large RDF datasets into Semantic MediaWiki
Batch import of large RDF datasets into Semantic MediaWikiBatch import of large RDF datasets into Semantic MediaWiki
Batch import of large RDF datasets into Semantic MediaWiki
 
Flow based programming an overview
Flow based programming   an overviewFlow based programming   an overview
Flow based programming an overview
 
Vagrant, Ansible and Docker - How they fit together for productive flexible d...
Vagrant, Ansible and Docker - How they fit together for productive flexible d...Vagrant, Ansible and Docker - How they fit together for productive flexible d...
Vagrant, Ansible and Docker - How they fit together for productive flexible d...
 
AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based Programming
 
Reproducibility in Scientific Data Analysis - BioScience Seminar
Reproducibility in Scientific Data Analysis - BioScience SeminarReproducibility in Scientific Data Analysis - BioScience Seminar
Reproducibility in Scientific Data Analysis - BioScience Seminar
 
Introduction to the drug discovery process
Introduction to the drug discovery processIntroduction to the drug discovery process
Introduction to the drug discovery process
 

Similaire à 2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse

A scalable ontology reasoner via incremental materialization
A scalable ontology reasoner via incremental materializationA scalable ontology reasoner via incremental materialization
A scalable ontology reasoner via incremental materializationRokan Uddin Faruqui
 
PHPUnit your bug exterminator
PHPUnit your bug exterminatorPHPUnit your bug exterminator
PHPUnit your bug exterminatorrjsmelo
 
Taming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and GebTaming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and GebC4Media
 
HyQue: Evaluating scientific Hypotheses using semantic web technologies
HyQue: Evaluating scientific Hypotheses using semantic web technologiesHyQue: Evaluating scientific Hypotheses using semantic web technologies
HyQue: Evaluating scientific Hypotheses using semantic web technologiesMichel Dumontier
 
2011-03-29 London - drools
2011-03-29 London - drools2011-03-29 London - drools
2011-03-29 London - droolsGeoffrey De Smet
 
Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...
Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...
Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...Hilmar Lapp
 
Sharing massive data analysis: from provenance to linked experiment reports
Sharing massive data analysis: from provenance to linked experiment reportsSharing massive data analysis: from provenance to linked experiment reports
Sharing massive data analysis: from provenance to linked experiment reportsGaignard Alban
 
Experiences with logic programming in bioinformatics
Experiences with logic programming in bioinformaticsExperiences with logic programming in bioinformatics
Experiences with logic programming in bioinformaticsChris Mungall
 
Big datascienceh2oandr
Big datascienceh2oandrBig datascienceh2oandr
Big datascienceh2oandrSri Ambati
 
Big Data Science with H2O in R
Big Data Science with H2O in RBig Data Science with H2O in R
Big Data Science with H2O in RAnqi Fu
 
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaKotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaVíctor Leonel Orozco López
 
Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014Adriel Café
 
Applying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation ExperimentsApplying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation ExperimentsFrank Bergmann
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application FrameworkJady Yang
 
Representing and reasoning with biological knowledge
Representing and reasoning with biological knowledgeRepresenting and reasoning with biological knowledge
Representing and reasoning with biological knowledgeBenjamin Good
 
Tutorial - Introduction to Rule Technologies and Systems
Tutorial - Introduction to Rule Technologies and SystemsTutorial - Introduction to Rule Technologies and Systems
Tutorial - Introduction to Rule Technologies and SystemsAdrian Paschke
 

Similaire à 2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse (20)

A scalable ontology reasoner via incremental materialization
A scalable ontology reasoner via incremental materializationA scalable ontology reasoner via incremental materialization
A scalable ontology reasoner via incremental materialization
 
AI Development with H2O.ai
AI Development with H2O.aiAI Development with H2O.ai
AI Development with H2O.ai
 
PHPUnit your bug exterminator
PHPUnit your bug exterminatorPHPUnit your bug exterminator
PHPUnit your bug exterminator
 
Taming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and GebTaming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and Geb
 
Knetminer Backend Training, Nov 2018
Knetminer Backend Training, Nov 2018Knetminer Backend Training, Nov 2018
Knetminer Backend Training, Nov 2018
 
HyQue: Evaluating scientific Hypotheses using semantic web technologies
HyQue: Evaluating scientific Hypotheses using semantic web technologiesHyQue: Evaluating scientific Hypotheses using semantic web technologies
HyQue: Evaluating scientific Hypotheses using semantic web technologies
 
2011-03-29 London - drools
2011-03-29 London - drools2011-03-29 London - drools
2011-03-29 London - drools
 
Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...
Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...
Towards ubiquitous OWL computing: Simplifying programmatic authoring of and q...
 
Sharing massive data analysis: from provenance to linked experiment reports
Sharing massive data analysis: from provenance to linked experiment reportsSharing massive data analysis: from provenance to linked experiment reports
Sharing massive data analysis: from provenance to linked experiment reports
 
Experiences with logic programming in bioinformatics
Experiences with logic programming in bioinformaticsExperiences with logic programming in bioinformatics
Experiences with logic programming in bioinformatics
 
Big datascienceh2oandr
Big datascienceh2oandrBig datascienceh2oandr
Big datascienceh2oandr
 
Big Data Science with H2O in R
Big Data Science with H2O in RBig Data Science with H2O in R
Big Data Science with H2O in R
 
BioSD Tutorial 2014 Editition
BioSD Tutorial 2014 EdititionBioSD Tutorial 2014 Editition
BioSD Tutorial 2014 Editition
 
ECMFA 2016 slides
ECMFA 2016 slidesECMFA 2016 slides
ECMFA 2016 slides
 
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaKotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
 
Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014
 
Applying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation ExperimentsApplying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation Experiments
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application Framework
 
Representing and reasoning with biological knowledge
Representing and reasoning with biological knowledgeRepresenting and reasoning with biological knowledge
Representing and reasoning with biological knowledge
 
Tutorial - Introduction to Rule Technologies and Systems
Tutorial - Introduction to Rule Technologies and SystemsTutorial - Introduction to Rule Technologies and Systems
Tutorial - Introduction to Rule Technologies and Systems
 

Plus de Samuel Lampa

Using Flow-based programming to write tools and workflows for Scientific Comp...
Using Flow-based programming to write tools and workflows for Scientific Comp...Using Flow-based programming to write tools and workflows for Scientific Comp...
Using Flow-based programming to write tools and workflows for Scientific Comp...Samuel Lampa
 
Linked Data for improved organization of research data
Linked Data  for improved organization  of research dataLinked Data  for improved organization  of research data
Linked Data for improved organization of research dataSamuel Lampa
 
How to document computational research projects
How to document computational research projectsHow to document computational research projects
How to document computational research projectsSamuel Lampa
 
First encounter with Elixir - Some random things
First encounter with Elixir - Some random thingsFirst encounter with Elixir - Some random things
First encounter with Elixir - Some random thingsSamuel Lampa
 
Profiling go code a beginners tutorial
Profiling go code   a beginners tutorialProfiling go code   a beginners tutorial
Profiling go code a beginners tutorialSamuel Lampa
 
My lightning talk at Go Stockholm meetup Aug 6th 2013
My lightning talk at Go Stockholm meetup Aug 6th 2013My lightning talk at Go Stockholm meetup Aug 6th 2013
My lightning talk at Go Stockholm meetup Aug 6th 2013Samuel Lampa
 
3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in BioclipseSamuel Lampa
 

Plus de Samuel Lampa (7)

Using Flow-based programming to write tools and workflows for Scientific Comp...
Using Flow-based programming to write tools and workflows for Scientific Comp...Using Flow-based programming to write tools and workflows for Scientific Comp...
Using Flow-based programming to write tools and workflows for Scientific Comp...
 
Linked Data for improved organization of research data
Linked Data  for improved organization  of research dataLinked Data  for improved organization  of research data
Linked Data for improved organization of research data
 
How to document computational research projects
How to document computational research projectsHow to document computational research projects
How to document computational research projects
 
First encounter with Elixir - Some random things
First encounter with Elixir - Some random thingsFirst encounter with Elixir - Some random things
First encounter with Elixir - Some random things
 
Profiling go code a beginners tutorial
Profiling go code   a beginners tutorialProfiling go code   a beginners tutorial
Profiling go code a beginners tutorial
 
My lightning talk at Go Stockholm meetup Aug 6th 2013
My lightning talk at Go Stockholm meetup Aug 6th 2013My lightning talk at Go Stockholm meetup Aug 6th 2013
My lightning talk at Go Stockholm meetup Aug 6th 2013
 
3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
3rd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
 

2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse

  • 1. nd 2 Status report of degree project Integrating Blipkit/BioProlog for semantic reasoning in Bioclipse Samuel Lampa, 2010-01-25 Project blog: http://saml.rilspace.com
  • 4. What is Semantic Web? “Enabling more powerful use of information” Main goals: ● Data availability (on the web) ● Machine-readability of data ● Knowledge integration ● Automatic “conclusion drawing” ● “Reasoning”, using Reasoners →
  • 5. This project compares two reasoners: Pellet and Blipkit
  • 7. Research question How do biochemical questions formulated as Prolog queries compare to other solutions available in Bioclipse in terms of speed and expressiveness?
  • 8. Semantic Reasoners ● Pellet/Jena ● Uses W3C languages – OWL (Class definitions) – RDF (Facts) – SPARQL (Querying) ● Blipkit/BioProlog ● Uses Prolog, with W3C languages “on top” – Class definitions, Facts and Queries either in W3C languages (“on top” of prolog) or in pure Prolog!
  • 10. What is Prolog? ● State facts and rules ● Execute by running queries over these facts and rules ● Unique features: ● Backtracking ● “Closed-world assumption”
  • 12. Prolog code example % === SOME FACTS === hasHBondDonors( substanceX, 3 ). % “substance X has 3 H-bond donors” % etc … % === A RULE ("RULE OF FIVE" ÀLA PROLOG) === isDrugLike( Substance ) :- hasHBondDonorsCount( Substance, HBDonors ), HBDonors <= 5, hasHBondAcceptorsCount( Substance, HBAcceptors ), HBAcceptors <= 10, hasMolecularWeight( Substance, MW ), MW < 500. % === QUERYING THE RULE === ?- isDrugLike(substanceX) true. ?- isDrugLike(X) X = substanceX ; X = substanceY.
  • 13. Prolog code example % === SOME FACTS === hasHBondDonors( substanceX, 3 ). % “substance X has 3 H-bond donors” % etc … % === A RULE ("RULE OF FIVE" ÀLA PROLOG) === Head Implication (“If [body] then [head]”) isDrugLike( Substance ) :- hasHBondDonorsCount( Substance, HBDonors ), HBDonors <= 5, hasHBondAcceptorsCount( Substance, HBAcceptors ), HBAcceptors <= 10, hasMolecularWeight( Substance, MW ), MW < 500. Body % === QUERYING THE RULE === ?- isDrugLike(substanceX) Comma means conjunction (“and”) true. ?- isDrugLike(X) X = substanceX ; X = substanceY. Capitalized terms are always variables
  • 14. Prolog code example % === SOME FACTS === hasHBondDonors( substanceX, 3 ). % “substance X has 3 H-bond donors” % etc … % === A RULE ("RULE OF FIVE" ÀLA PROLOG) === isDrugLike( Substance ) :- hasHBondDonorsCount( Substance, HBDonors ), HBDonors <= 5, hasHBondAcceptorsCount( Substance, HBAcceptors ), HBAcceptors <= 10, hasMolecularWeight( Substance, MW ), MW < 500. % === QUERYING THE RULE === ?- isDrugLike(substanceX) Testing a specific atom (“sutstanceX”) true. ?- isDrugLike(X) X = substanceX ; By submitting a variable (“X”), it will be populated with all instances which satisfies the “isDrugLike” rule X = substanceY.
  • 15. Where are we now?
  • 17. What is done so far?
  • 18. What is done so far? ● Integration of Blipkit in Bioclipse ● Done: General purpose methods ● Done: Found usage strategy for combined use of Bioclipse JS scripting and Prolog ● Comparing Prolog and Pellet ● Done: Simple performance testing ● Now: Stuck on NMR spectrum similarity search – (No backtracking on arithmetic operators in SPARQL)
  • 20. What remains to be done? ● Integration of Prolog / Blipkit ● Refinements? ● Comparing Prolog and Pellet ● NMR spectrum similarity search – Investigate use of OWL in querying – Other options? SWRL? ● ChEMBL data ● Toxicity data (opentox.org)
  • 22. Example Bioclipse/Prolog script blipkit.init(); blipkit.loadRDFToProlog("nmrshiftdata.100.rdf.xml"); // Define a “convenience prolog method” blipkit.loadPrologCode(" hasPeak( Subject, Predicate ) :- rdf_db:rdf( Subject, 'http://www.nmrshiftdb.org/onto#hasPeak', Predicate ). "); // Call the convenience method (which in turn executes it's // “body”), and returns all mathing results as an array var resultList = blipkit.queryProlog(["hasPeak","10","Subject","Predicate"]);
  • 23. Example Bioclipse/Prolog script blipkit.init(); blipkit.loadRDFToProlog("nmrshiftdata.100.rdf.xml"); // Define a “convenience prolog method” blipkit.loadPrologCode(" hasPeak( Subject, Predicate ) :- rdf_db:rdf( Subject, 'http://www.nmrshiftdb.org/onto#hasPeak', Predicate ). "); Prolog rule to load into prolog engine // Call the convenience method (which in turn executes it's // “body”), and returns all mathing results as an array var resultList = blipkit.queryProlog(["hasPeak","10","Subject","Predicate"]); Prolog method to call Limit the number of results Prolog variables
  • 25. Current status of research question ● Performance ● Prolog won so far. Exceptions? ● Usability ● Prolog very convenient for iterative wrapping of complex logic. Can RDF/OWL/SPARQL replicate this? ● Where do RDF/OWL/SPARQL excel?
  • 27. Thank you! Project blog: http://saml.rilspace.com
  • 28. Project plan – Current version
  • 29. Project plan – Proposed version