SlideShare a Scribd company logo
1 of 27
Download to read offline
MSc Thesis presentation:
 SWI-Prolog as a Semantic Web tool for
      semantic querying in Bioclipse:
Integration and performance benchmarking
           Samuel Lampa <http://saml.rilspace.org>

Supervisor: Egon Willighagen <http://chem-bla-ics.blogspot.com>

   Bioclipse & Proteochemometric group (Prof. Jarl Wikberg)
          Department of Pharmaceutical Bioinformatics
                      Uppsala University

                         2010-06-18
What is Bioclipse?
What is the
Semantic Web?
What is the Semantic Web?
RDF Example (In Notation 3 format)

@prefix
       :   <http://www.nmrshiftdb.org/onto#> .
    xsd:   <http://www.w3.org/2001/XMLSchema#> .
    nmr:   <http://pele.farmbio.uu.se/nmrshiftdb/?>

   nmr:moleculeId=234    :hasSpectrum    nmr:spectrumId=4735   ;
                         :moleculeId     "234" .
   nmr:spectrumId=4735   :hasPeak        nmr:s4735p0 ,
                                         nmr:s4735p1 ,
                                         nmr:s4735p2 .
   nmr:s4735p0           :hasShift       "17.6"^^xsd:decimal   .
   nmr:s4735p1           :hasShift       "18.3"^^xsd:decimal   .
   nmr:s4735p2           :hasShift       "22.6"^^xsd:decimal   .
SPARQL Example
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX nmr: <http://www.nmrshiftdb.org/onto#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>


SELECT    ?s
WHERE {
  ?s nmr:hasPeak [ nmr:hasShift ?s1 ] ,
                 [ nmr:hasShift ?s2 ] ,
                 [ nmr:hasShift ?s3 ] .
FILTER ( fn:abs(?s1 - 17.6) < 0.3 ) .
FILTER ( fn:abs(?s2 - 18.3) < 0.3 ) .
FILTER ( fn:abs(?s3 - 22.6) < 0.3 ) . }
What is Prolog?
Prolog: Fewer technical layers




  Conventional software          Prolog
% === SOME FACTS ===
Prolog code example   hasHBondDonorsCount( substanceX, 3 ).
                      hasHBondDonorsCount( substanceY, 5 ).
                      hasHBondDonorsCount( substanceZ, 7 ).

                      hasHBondAcceptorsCount( substanceX, 7 ).
                      hasHBondAcceptorsCount( substanceY, 10 ).
                      hasHBondAcceptorsCount( substanceZ, 13 ).

                      hasMolecularWeight( substanceX, 320 ).
                      hasMolecularWeight( substanceY, 500 ).
                      hasMolecularWeight( substanceZ, 500 ).

                      % === 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.
% === SOME FACTS ===
Prolog code example   hasHBondDonorsCount( substanceX, 3 ).
                      hasHBondDonorsCount( substanceY, 5 ).
                      hasHBondDonorsCount( substanceZ, 7 ).

                      hasHBondAcceptorsCount( substanceX, 7 ).
                      hasHBondAcceptorsCount( substanceY, 10 ).
                      hasHBondAcceptorsCount( substanceZ, 13 ).

                      hasMolecularWeight( substanceX, 320 ).
                      hasMolecularWeight( substanceY, 500 ).
                      hasMolecularWeight( substanceZ, 500 ).
                                                Implication (“If [body] then [head]”)
                      Head A RULE ("RULE OF FIVE" ÀLA PROLOG) ===
                       % ===
                      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
                      true.                              conjunction (“and”)
                      ?- isDrugLike(X)
                      X = substanceX ; Capitalized terms are always variables
                      X = substanceY.
% === SOME FACTS ===
Prolog code example   hasHBondDonorsCount( substanceX, 3 ).
                      hasHBondDonorsCount( substanceY, 5 ).
                      hasHBondDonorsCount( substanceZ, 7 ).

                      hasHBondAcceptorsCount( substanceX, 7 ).
                      hasHBondAcceptorsCount( substanceY, 10 ).
                      hasHBondAcceptorsCount( substanceZ, 13 ).

                      hasMolecularWeight( substanceX, 320 ).
                      hasMolecularWeight( substanceY, 500 ).
                      hasMolecularWeight( substanceZ, 500 ).

                      % === 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 ===
                                                  Testing a specific atom
                      ?- isDrugLike(substanceX)
                                                  (“sutstanceX”)
                      true.
                      ?- isDrugLike(X)            By submitting a variable “X”,
                      X = substanceX ;            it will be populated with all
                                                  instances which satisfies
                      X = substanceY.
                                                    the “isDrugLike” rule
Prolog: Fewer technical layers




  Conventional software          Prolog
What was done
in this project?
The work done (New functionality in dashed lines)
SWI-Prolog in action in Bioclipse
SPARQL Code used
Prolog code used (1)
Prolog code
used (2)
Thank you!
           Samuel Lampa <http://saml.rilspace.org>

Supervisor: Egon Willighagen <http://chem-bla-ics.blogspot.com>

   Bioclipse & Proteochemometric group (Prof. Jarl Wikberg)
          Department of Pharmaceutical Bioinformatics
                      Uppsala University

                         2010-06-18

More Related Content

What's hot

Spring Data for KSDG 2012/09
Spring Data for KSDG 2012/09Spring Data for KSDG 2012/09
Spring Data for KSDG 2012/09永昇 陳
 
Grails GORM - You Know SQL. You Know Queries. Here's GORM.
Grails GORM - You Know SQL. You Know Queries. Here's GORM.Grails GORM - You Know SQL. You Know Queries. Here's GORM.
Grails GORM - You Know SQL. You Know Queries. Here's GORM.Ted Vinke
 
Building DSLs with Groovy
Building DSLs with GroovyBuilding DSLs with Groovy
Building DSLs with GroovySten Anderson
 
MongoDB World 2018: Using Change Streams to Keep Up with Your Data
MongoDB World 2018: Using Change Streams to Keep Up with Your DataMongoDB World 2018: Using Change Streams to Keep Up with Your Data
MongoDB World 2018: Using Change Streams to Keep Up with Your DataMongoDB
 
Python dictionary : past, present, future
Python dictionary: past, present, futurePython dictionary: past, present, future
Python dictionary : past, present, futuredelimitry
 
Building a horizontally scalable API in php
Building a horizontally scalable API in phpBuilding a horizontally scalable API in php
Building a horizontally scalable API in phpWade Womersley
 
Java 8 DOs and DON'Ts - javaBin Oslo May 2015
Java 8 DOs and DON'Ts - javaBin Oslo May 2015Java 8 DOs and DON'Ts - javaBin Oslo May 2015
Java 8 DOs and DON'Ts - javaBin Oslo May 2015Fredrik Vraalsen
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDBTakahiro Inoue
 

What's hot (12)

Webtuesday Zurich
Webtuesday ZurichWebtuesday Zurich
Webtuesday Zurich
 
Spring Data for KSDG 2012/09
Spring Data for KSDG 2012/09Spring Data for KSDG 2012/09
Spring Data for KSDG 2012/09
 
Grails GORM - You Know SQL. You Know Queries. Here's GORM.
Grails GORM - You Know SQL. You Know Queries. Here's GORM.Grails GORM - You Know SQL. You Know Queries. Here's GORM.
Grails GORM - You Know SQL. You Know Queries. Here's GORM.
 
Android Guava
Android GuavaAndroid Guava
Android Guava
 
Building DSLs with Groovy
Building DSLs with GroovyBuilding DSLs with Groovy
Building DSLs with Groovy
 
Unit testing pig
Unit testing pigUnit testing pig
Unit testing pig
 
Gorm
GormGorm
Gorm
 
MongoDB World 2018: Using Change Streams to Keep Up with Your Data
MongoDB World 2018: Using Change Streams to Keep Up with Your DataMongoDB World 2018: Using Change Streams to Keep Up with Your Data
MongoDB World 2018: Using Change Streams to Keep Up with Your Data
 
Python dictionary : past, present, future
Python dictionary: past, present, futurePython dictionary: past, present, future
Python dictionary : past, present, future
 
Building a horizontally scalable API in php
Building a horizontally scalable API in phpBuilding a horizontally scalable API in php
Building a horizontally scalable API in php
 
Java 8 DOs and DON'Ts - javaBin Oslo May 2015
Java 8 DOs and DON'Ts - javaBin Oslo May 2015Java 8 DOs and DON'Ts - javaBin Oslo May 2015
Java 8 DOs and DON'Ts - javaBin Oslo May 2015
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
 

Viewers also liked

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
 
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
 
The RDFIO Extension - A Status update
The RDFIO Extension - A Status updateThe RDFIO Extension - A Status update
The RDFIO Extension - A Status updateSamuel Lampa
 
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in BioclipseSamuel 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
 
iRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat SheetiRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat SheetSamuel 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
 

Viewers also liked (8)

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
 
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
 
The RDFIO Extension - A Status update
The RDFIO Extension - A Status updateThe RDFIO Extension - A Status update
The RDFIO Extension - A Status update
 
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
 
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
 
iRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat SheetiRODS Rule Language Cheat Sheet
iRODS Rule Language Cheat Sheet
 
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...
 

Similar to Thesis presentation Samuel Lampa

#8 formal methods – pro logic
#8 formal methods – pro logic#8 formal methods – pro logic
#8 formal methods – pro logicSharif Omar Salem
 
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
 
Bio it 2005_rdf_workshop05
Bio it 2005_rdf_workshop05Bio it 2005_rdf_workshop05
Bio it 2005_rdf_workshop05Joanne Luciano
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8XSolve
 
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
 
SWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptx
SWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptxSWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptx
SWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptxadeboyeakinlolu
 
OpenCog Developer Workshop
OpenCog Developer WorkshopOpenCog Developer Workshop
OpenCog Developer WorkshopIbby Benali
 
R Analytics in the Cloud
R Analytics in the CloudR Analytics in the Cloud
R Analytics in the CloudDataMine Lab
 
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
 
Functional programming in Java 8 - workshop at flatMap Oslo 2014
Functional programming in Java 8 - workshop at flatMap Oslo 2014Functional programming in Java 8 - workshop at flatMap Oslo 2014
Functional programming in Java 8 - workshop at flatMap Oslo 2014Fredrik Vraalsen
 

Similar to Thesis presentation Samuel Lampa (11)

#8 formal methods – pro logic
#8 formal methods – pro logic#8 formal methods – pro logic
#8 formal methods – pro logic
 
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
 
Bio it 2005_rdf_workshop05
Bio it 2005_rdf_workshop05Bio it 2005_rdf_workshop05
Bio it 2005_rdf_workshop05
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
 
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
 
SWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptx
SWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptxSWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptx
SWI-PROLOG TUTORIAL LEARN LOGIC PROGRAMMING.pptx
 
OpenCog Developer Workshop
OpenCog Developer WorkshopOpenCog Developer Workshop
OpenCog Developer Workshop
 
R Analytics in the Cloud
R Analytics in the CloudR Analytics in the Cloud
R Analytics in the Cloud
 
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
 
Functional programming in Java 8 - workshop at flatMap Oslo 2014
Functional programming in Java 8 - workshop at flatMap Oslo 2014Functional programming in Java 8 - workshop at flatMap Oslo 2014
Functional programming in Java 8 - workshop at flatMap Oslo 2014
 

More from 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
 
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
 
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
 
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
 
Flow based programming an overview
Flow based programming   an overviewFlow based programming   an overview
Flow based programming an overviewSamuel Lampa
 
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
 
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
 

More from Samuel Lampa (10)

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
 
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
 
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
 
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
 
Flow based programming an overview
Flow based programming   an overviewFlow based programming   an overview
Flow based programming an overview
 
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
 
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
 

Recently uploaded

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Thesis presentation Samuel Lampa

  • 1. MSc Thesis presentation: SWI-Prolog as a Semantic Web tool for semantic querying in Bioclipse: Integration and performance benchmarking Samuel Lampa <http://saml.rilspace.org> Supervisor: Egon Willighagen <http://chem-bla-ics.blogspot.com> Bioclipse & Proteochemometric group (Prof. Jarl Wikberg) Department of Pharmaceutical Bioinformatics Uppsala University 2010-06-18
  • 2.
  • 4.
  • 5.
  • 7. What is the Semantic Web?
  • 8.
  • 9. RDF Example (In Notation 3 format) @prefix : <http://www.nmrshiftdb.org/onto#> . xsd: <http://www.w3.org/2001/XMLSchema#> . nmr: <http://pele.farmbio.uu.se/nmrshiftdb/?> nmr:moleculeId=234 :hasSpectrum nmr:spectrumId=4735 ; :moleculeId "234" . nmr:spectrumId=4735 :hasPeak nmr:s4735p0 , nmr:s4735p1 , nmr:s4735p2 . nmr:s4735p0 :hasShift "17.6"^^xsd:decimal . nmr:s4735p1 :hasShift "18.3"^^xsd:decimal . nmr:s4735p2 :hasShift "22.6"^^xsd:decimal .
  • 10. SPARQL Example PREFIX fn: <http://www.w3.org/2005/xpath-functions#> PREFIX nmr: <http://www.nmrshiftdb.org/onto#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?s WHERE { ?s nmr:hasPeak [ nmr:hasShift ?s1 ] , [ nmr:hasShift ?s2 ] , [ nmr:hasShift ?s3 ] . FILTER ( fn:abs(?s1 - 17.6) < 0.3 ) . FILTER ( fn:abs(?s2 - 18.3) < 0.3 ) . FILTER ( fn:abs(?s3 - 22.6) < 0.3 ) . }
  • 12. Prolog: Fewer technical layers Conventional software Prolog
  • 13. % === SOME FACTS === Prolog code example hasHBondDonorsCount( substanceX, 3 ). hasHBondDonorsCount( substanceY, 5 ). hasHBondDonorsCount( substanceZ, 7 ). hasHBondAcceptorsCount( substanceX, 7 ). hasHBondAcceptorsCount( substanceY, 10 ). hasHBondAcceptorsCount( substanceZ, 13 ). hasMolecularWeight( substanceX, 320 ). hasMolecularWeight( substanceY, 500 ). hasMolecularWeight( substanceZ, 500 ). % === 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.
  • 14. % === SOME FACTS === Prolog code example hasHBondDonorsCount( substanceX, 3 ). hasHBondDonorsCount( substanceY, 5 ). hasHBondDonorsCount( substanceZ, 7 ). hasHBondAcceptorsCount( substanceX, 7 ). hasHBondAcceptorsCount( substanceY, 10 ). hasHBondAcceptorsCount( substanceZ, 13 ). hasMolecularWeight( substanceX, 320 ). hasMolecularWeight( substanceY, 500 ). hasMolecularWeight( substanceZ, 500 ). Implication (“If [body] then [head]”) Head A RULE ("RULE OF FIVE" ÀLA PROLOG) === % === 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 true. conjunction (“and”) ?- isDrugLike(X) X = substanceX ; Capitalized terms are always variables X = substanceY.
  • 15. % === SOME FACTS === Prolog code example hasHBondDonorsCount( substanceX, 3 ). hasHBondDonorsCount( substanceY, 5 ). hasHBondDonorsCount( substanceZ, 7 ). hasHBondAcceptorsCount( substanceX, 7 ). hasHBondAcceptorsCount( substanceY, 10 ). hasHBondAcceptorsCount( substanceZ, 13 ). hasMolecularWeight( substanceX, 320 ). hasMolecularWeight( substanceY, 500 ). hasMolecularWeight( substanceZ, 500 ). % === 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 === Testing a specific atom ?- isDrugLike(substanceX) (“sutstanceX”) true. ?- isDrugLike(X) By submitting a variable “X”, X = substanceX ; it will be populated with all instances which satisfies X = substanceY. the “isDrugLike” rule
  • 16. Prolog: Fewer technical layers Conventional software Prolog
  • 17. What was done in this project?
  • 18. The work done (New functionality in dashed lines)
  • 19. SWI-Prolog in action in Bioclipse
  • 22.
  • 23.
  • 25.
  • 26.
  • 27. Thank you! Samuel Lampa <http://saml.rilspace.org> Supervisor: Egon Willighagen <http://chem-bla-ics.blogspot.com> Bioclipse & Proteochemometric group (Prof. Jarl Wikberg) Department of Pharmaceutical Bioinformatics Uppsala University 2010-06-18