thesis presentation samuel lampa
DESCRIPTION
Presentation of my project, entitled "SWI-Prolog as a Semantic Web tool for semantic querying in Bioclipse: Integration and performance benchmarking"TRANSCRIPT
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
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 Bioclipse?
What is the Semantic Web?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 .
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 ) . }
SPARQL Example
What is Prolog?What is Prolog?
Prolog: Fewer technical layers
Conventional software Prolog
Prolog code example % === SOME FACTS === 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.
Prolog code example % === SOME FACTS === 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.
Body
HeadImplication (“If [body] then [head]”)
Comma means conjunction (“and”)
Capitalized terms are always variables
Prolog code example % === SOME FACTS === 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.
By submitting a variable “X”, it will be populated with all instances which satisfies the “isDrugLike” rule
Testing a specific atom (“sutstanceX”)
Prolog: Fewer technical layers
Conventional software Prolog
What was done in this project?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
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