sadi cshals 2013
DESCRIPTION
the introduction to the SADI tutorial at CSHALS 2013, Boston, Feb 27, 2013TRANSCRIPT
![Page 1: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/1.jpg)
Semantic Automated Discovery and IntegrationSADI Services Tutorial
Mark WilkinsonIsaac Peral Senior Researcher in Biological InformaticsCentro de Biotecnología y Genómica de Plantas, UPM, Madrid, Spain
Adjunct Professor of Medical Genetics, University of British ColumbiaVancouver, BC, Canada.
![Page 2: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/2.jpg)
MOTIVATIONPart I
![Page 3: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/3.jpg)
A lot of important information cannot be represented
on the Semantic Web
For example, all of the data that results from
analytical algorithms and statistical analyses
(I’m purposely excluding databases from the list of examplesfor reasons I will discuss in a moment)
![Page 4: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/4.jpg)
![Page 5: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/5.jpg)
![Page 6: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/6.jpg)
Varying estimatesput the size of the Deep Web between500 and 800 timeslarger than the surface Web
![Page 7: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/7.jpg)
On the WWW “automation” of access to Deep Web data happens through
“Web Services”
![Page 8: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/8.jpg)
Traditional definitions of The Deep Webinclude databases that have Web FORM interfaces.
HOWEVER
The Life Science Semantic Web communityis encouraging the establishment of SPARQL endpoints
as the way to serve that same data to the world(i.e. NOT through Web Services)
![Page 9: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/9.jpg)
I am quite puzzled by this...
![Page 10: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/10.jpg)
Historically, most* bio/informaticsdatabases do not allowdirect public SQL access
*yes, I know there are some exceptions!
![Page 11: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/11.jpg)
“We need to commit specific hardware for that [mySQL] service. We don’t use the same servers for mySQL as for the Website...”
“...we resolve the situation by asking the user to stop hammering the server. This might involve temporary ban on the IP...”
- ENSEMBL Helpdesk
![Page 12: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/12.jpg)
So... There appears to be good reasons why most data providers do not expose
their databases for public query!
![Page 13: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/13.jpg)
Are SPARQL endpoints somehow “safer” or “better”?
![Page 14: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/14.jpg)
One of the early-adopters of RDF/SPARQL in the bioinformatics domain was UniProt
![Page 15: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/15.jpg)
How are things going for them?
![Page 16: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/16.jpg)
Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yesTo: Mark <[email protected]>Date: Tue, 19 Feb 2013 13:11:22 +0100Subject: SPARQL or not?MIME-Version: 1.0Content-Transfer-Encoding: 7bitFrom: "Mark Wilkinson" <[email protected]>Message-ID: <op.wsq5g8jenbznux@bioinformatica-mark>User-Agent: Opera Mail/12.14 (Linux)X-Antivirus: AVG for E-mail 2012.0.2238 [2639/5614]X-AVG-ID: ID798D8A94-2992BC71
Hi Bio2RDF maintainers, I keep on noticing this rather expensive query. CONSTRUCT { <http://bio2rdf.org/search/Paget> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bio2rdf.org/bio2rdf_resource:SearchResults> . <http://bio2rdf.org/search/Paget> <http://bio2rdf.org/bio2rdf_resource:hasSearchResult> ?s . <http://bio2rdf.org/search/Paget> <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?s . ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label . ?s <http://purl.org/dc/elements/1.1/title> ?title . ?s <http://purl.org/dc/terms/title> ?dctermstitle . ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type . ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel . ?s ?p ?o .}WHERE { ?s ?p ?o FILTER contains(str(?o), "\"Paget\"") OPTIONAL { ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label } OPTIONAL { ?s <http://purl.org/dc/elements/1.1/title> ?title } OPTIONAL { ?s <http://purl.org/dc/terms/title> ?dctermstitle } OPTIONAL { ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } OPTIONAL { ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel } }OFFSET 0LIMIT 500 It comes from the example queries on the bio2rdf landing page.Its extremely resource consuming and totally useless as it will never ever run in time. Can you please change this query to something useful and workable. And at least cache the results if you ever get them. Regards,Jerven
A message posted to the Bio2RDF mailing list last week from Jerven Bolleman, one of the team-members behind UniProt’s push for RDF...
![Page 17: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/17.jpg)
Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yesTo: Mark <[email protected]>Date: Tue, 19 Feb 2013 13:11:22 +0100Subject: SPARQL or not?MIME-Version: 1.0Content-Transfer-Encoding: 7bitFrom: "Mark Wilkinson" <[email protected]>Message-ID: <op.wsq5g8jenbznux@bioinformatica-mark>User-Agent: Opera Mail/12.14 (Linux)X-Antivirus: AVG for E-mail 2012.0.2238 [2639/5614]X-AVG-ID: ID798D8A94-2992BC71
Hi Bio2RDF maintainers, I keep on noticing this rather expensive query. CONSTRUCT { <http://bio2rdf.org/search/Paget> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bio2rdf.org/bio2rdf_resource:SearchResults> . <http://bio2rdf.org/search/Paget> <http://bio2rdf.org/bio2rdf_resource:hasSearchResult> ?s . <http://bio2rdf.org/search/Paget> <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?s . ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label . ?s <http://purl.org/dc/elements/1.1/title> ?title . ?s <http://purl.org/dc/terms/title> ?dctermstitle . ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type . ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel . ?s ?p ?o .}WHERE { ?s ?p ?o FILTER contains(str(?o), "\"Paget\"") OPTIONAL { ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label } OPTIONAL { ?s <http://purl.org/dc/elements/1.1/title> ?title } OPTIONAL { ?s <http://purl.org/dc/terms/title> ?dctermstitle } OPTIONAL { ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } OPTIONAL { ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel } }OFFSET 0LIMIT 500 It comes from the example queries on the bio2rdf landing page.Its extremely resource consuming and totally useless as it will never ever run in time. Can you please change this query to something useful and workable. And at least cache the results if you ever get them. Regards,Jerven
I keep noticing this rather expensive query
![Page 18: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/18.jpg)
Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yesTo: Mark <[email protected]>Date: Tue, 19 Feb 2013 13:11:22 +0100Subject: SPARQL or not?MIME-Version: 1.0Content-Transfer-Encoding: 7bitFrom: "Mark Wilkinson" <[email protected]>Message-ID: <op.wsq5g8jenbznux@bioinformatica-mark>User-Agent: Opera Mail/12.14 (Linux)X-Antivirus: AVG for E-mail 2012.0.2238 [2639/5614]X-AVG-ID: ID798D8A94-2992BC71
Hi Bio2RDF maintainers, I keep on noticing this rather expensive query. CONSTRUCT { <http://bio2rdf.org/search/Paget> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bio2rdf.org/bio2rdf_resource:SearchResults> . <http://bio2rdf.org/search/Paget> <http://bio2rdf.org/bio2rdf_resource:hasSearchResult> ?s . <http://bio2rdf.org/search/Paget> <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?s . ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label . ?s <http://purl.org/dc/elements/1.1/title> ?title . ?s <http://purl.org/dc/terms/title> ?dctermstitle . ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type . ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel . ?s ?p ?o .}WHERE { ?s ?p ?o FILTER contains(str(?o), "\"Paget\"") OPTIONAL { ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label } OPTIONAL { ?s <http://purl.org/dc/elements/1.1/title> ?title } OPTIONAL { ?s <http://purl.org/dc/terms/title> ?dctermstitle } OPTIONAL { ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } OPTIONAL { ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel } }OFFSET 0LIMIT 500 It comes from the example queries on the bio2rdf landing page.Its extremely resource consuming and totally useless as it will never ever run in time. Can you please change this query to something useful and workable. And at least cache the results if you ever get them. Regards,Jerven
It comes from THE EXAMPLE QUERIES on the Bio2RDF landing page
(my emphasis added)
![Page 19: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/19.jpg)
Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yesTo: Mark <[email protected]>Date: Tue, 19 Feb 2013 13:11:22 +0100Subject: SPARQL or not?MIME-Version: 1.0Content-Transfer-Encoding: 7bitFrom: "Mark Wilkinson" <[email protected]>Message-ID: <op.wsq5g8jenbznux@bioinformatica-mark>User-Agent: Opera Mail/12.14 (Linux)X-Antivirus: AVG for E-mail 2012.0.2238 [2639/5614]X-AVG-ID: ID798D8A94-2992BC71
Hi Bio2RDF maintainers, I keep on noticing this rather expensive query. CONSTRUCT { <http://bio2rdf.org/search/Paget> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bio2rdf.org/bio2rdf_resource:SearchResults> . <http://bio2rdf.org/search/Paget> <http://bio2rdf.org/bio2rdf_resource:hasSearchResult> ?s . <http://bio2rdf.org/search/Paget> <http://www.w3.org/2000/01/rdf-schema#seeAlso> ?s . ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label . ?s <http://purl.org/dc/elements/1.1/title> ?title . ?s <http://purl.org/dc/terms/title> ?dctermstitle . ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type . ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel . ?s ?p ?o .}WHERE { ?s ?p ?o FILTER contains(str(?o), "\"Paget\"") OPTIONAL { ?s <http://www.w3.org/2000/01/rdf-schema#label> ?label } OPTIONAL { ?s <http://purl.org/dc/elements/1.1/title> ?title } OPTIONAL { ?s <http://purl.org/dc/terms/title> ?dctermstitle } OPTIONAL { ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } OPTIONAL { ?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?skoslabel } }OFFSET 0LIMIT 500 It comes from the example queries on the bio2rdf landing page.Its extremely resource consuming and totally useless as it will never ever run in time. Can you please change this query to something useful and workable. And at least cache the results if you ever get them. Regards,Jerven
It’s extremely resource-consuming and totally useless as
it will never run in time
![Page 20: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/20.jpg)
So even people who are world-leaders in RDF and SPARQLwrite “expensive” and “useless” queries
that (already!) are making life difficult for SPARQL endpoint providers
I believe that situation will only get worse as more people begin to use the Semantic Web
and as SPARQL itself becomes richer and more SQL-like
![Page 21: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/21.jpg)
In My Opinion
History tells us, and this story IMO supports,that SPARQL endpoints might not be widely adopted
by source bioinformatics data providers
Historically, the majority of bioinformatics data hosts have opted for API/Service-based
access to their resources
![Page 22: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/22.jpg)
In My Opinion
Moreover, I am still obsessed with interoperability!
Having a unified way to discover, and access, bioinformatics resources
whether they be databases or algorithms
just seems like a Good Thing™
![Page 23: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/23.jpg)
In My Opinion
So we need to find a way to make Web Servicesplay nicely with the Semantic Web
![Page 24: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/24.jpg)
Design Pattern forWeb Services on the Semantic Web
![Page 25: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/25.jpg)
SADI “PHILOSOPHY” AND DESIGNPart II
![Page 26: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/26.jpg)
The Semantic Web
causally related to
![Page 27: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/27.jpg)
The important bit
causally related to
The link is explicitly labeled
???
![Page 28: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/28.jpg)
http://semanticscience.org/resource/SIO_000243
SIO_000243:
<owl:ObjectProperty rdf:about="&resource;SIO_000243"> <rdfs:label xml: lang="en"> is causally related with</rdfs:label> <rdf:type rdf:resource="&owl;SymmetricProperty"/> <rdf:type rdf:resource="&owl;TransitiveProperty"/> <dc:description xml:lang="en"> A transitive, symmetric, temporal relation in which one entity is causally related with another non-identical entity. </dc:description> <rdfs:subPropertyOf rdf:resource="&resource;SIO_000322"/> </owl:ObjectProperty>
causally related with
![Page 29: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/29.jpg)
http://semanticscience.org/resource/SIO_000243
SIO_000243:
<owl:ObjectProperty rdf:about="&resource;SIO_000243"> <rdfs:label xml: lang="en"> is causally related with</rdfs:label> <rdf:type rdf:resource="&owl;SymmetricProperty"/> <rdf:type rdf:resource="&owl;TransitiveProperty"/> <dc:description xml:lang="en"> A transitive, symmetric, temporal relation in which one entity is causally related with another non-identical entity. </dc:description> <rdfs:subPropertyOf rdf:resource="&resource;SIO_000322"/> </owl:ObjectProperty>
causally related with
![Page 30: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/30.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
OWL-S
SAWSDL
WSDL-S
Others...
![Page 31: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/31.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
![Page 32: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/32.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
Usually through “semantic annotation”
of XML Schema
![Page 33: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/33.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
In the least-semantic case, the input and output data
is “vanilla” XML
![Page 34: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/34.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
In the “most semantic” case (WSDL) RDF is
converted into XML, then back to RDF again
![Page 35: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/35.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
The rigidity of XML Schema is the
antithesis of the Semantic Web!
![Page 36: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/36.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
So... Perhaps we shouldn’t be using XML
Schema at all...??
![Page 37: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/37.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a resultHARD!
![Page 38: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/38.jpg)
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a resultUn-necessary?
![Page 39: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/39.jpg)
Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
![Page 40: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/40.jpg)
Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
Scientific Web Services are DIFFERENT!
![Page 41: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/41.jpg)
Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
“The service interfaces within bioinformatics are relatively simple. An extensible or constrained interoperability framework
is likely to suffice for current demands: a fully generic framework is currently not necessary.”
![Page 42: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/42.jpg)
Scientific Web Services are DIFFERENT
They’re simpler!
Rather than waiting for a solution to the more general problem
(which may be years away... or more!)
can we solve the Semantic Web Service problemwithin the scientific domain
while still being fully standards-compliant?
![Page 43: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/43.jpg)
Other “philosophical” considerations
![Page 44: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/44.jpg)
v.v. being Semantic Webby,what is missing from this list?
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
![Page 45: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/45.jpg)
http://semanticscience.org/resource/SIO_000243
causally related with
![Page 46: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/46.jpg)
http://semanticscience.org/resource/SIO_000243
The Semantic Web works because of relationships!
causally related with
![Page 47: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/47.jpg)
http://semanticscience.org/resource/SIO_000243
The Semantic Web works because of relationships!
In 2008 I proposed that, in the Semantic Web world, algorithms should be viewed as “exposing” relationships
between the input and output data
causally related with
![Page 48: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/48.jpg)
AACTCTTCGTAGTG...
BLAST
Web Service
![Page 49: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/49.jpg)
AACTCTTCGTAGTG...
BLAST
SADI
hashomologyto
Terminal Flower
type
gene
species
A. thal.SADI requires you to explicitly declareas part of your analytical output, the biological relationship that your algorithm “exposed”.
sequence
has_seq_string
AACTCTTCGTAGTG...
sequence
has_seq_string
![Page 50: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/50.jpg)
Another “philosophical” decision was to abandon XML Schema
In a world that is moving towards RDF representations of all data
it makes no sense to convert semantically rich RDF into semantic-free Schema-based XML
then back into RDF again
![Page 51: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/51.jpg)
The final philosophical decision wasto abandon SOAP
The bioinformatics community seems to bevery receptive to pure-HTTP interfaces
(e.g. the popularity of REST-like APIs)
So SADI uses simple HTTP POST of just the RDF input data
(no message scaffold whatsoever)
![Page 52: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/52.jpg)
SADI SERVICE DISCOVERYAND INVOCATION
Part III
![Page 53: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/53.jpg)
In slightly more detail...
![Page 54: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/54.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
![Page 55: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/55.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
![Page 56: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/56.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
OWL-DL Classes
![Page 57: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/57.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
Property restrictionsin OWL Class definition
![Page 58: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/58.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
![Page 59: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/59.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
A reasoner determines that Patient #24601is an OWL Individual of the Input service Class
![Page 60: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/60.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
NOTE THE URI OF THE INPUT INDIVIDUALPatient:24601
![Page 61: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/61.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
BMI
25.9
![Page 62: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/62.jpg)
ID Name Height Weight Age
24601 Jean Valjean 1.8m 84kg 45
7474505B Jake Blues 1.73m 101kg 31
6 — 1.88m 75kg 39
... ... ... ... ...
BMI
25.9
NOTE THE URI OF THE OUTPUT INDIVIDUALPatient:24601
![Page 63: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/63.jpg)
![Page 64: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/64.jpg)
The URI of the input is linked by a meaningful predicate to the output
(either literal output or another URI)
![Page 65: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/65.jpg)
Therefore, by connecting SADI services together in a workflow you end-up with an
unbroken chain of Linked Data
![Page 66: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/66.jpg)
SADI TO THE EXTREME:“WEB SCIENCE 2.0”
Part IV
![Page 67: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/67.jpg)
A proof-of-concept query engine & registry
Objective: answer biologists’ questions
![Page 68: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/68.jpg)
The SHARE registry
indexes all of the input/output/relationship
triples that can be generated by all known services
This is how SHARE discovers services
![Page 69: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/69.jpg)
We wanted to duplicatea real, peer-reviewed, bioinformatics analysis
simply by building a model in the Webdescribing what the answer
(if one existed)
would look like
![Page 70: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/70.jpg)
...the machine had to make every other decision
on it’s own
![Page 71: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/71.jpg)
This is the study we chose:
![Page 72: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/72.jpg)
Gordon, P.M.K., Soliman, M.A., Bose, P., Trinh, Q., Sensen, C.W., Riabowol, K.: Interspecies data mining to predict novel ING-protein interactions in human. BMC genomics. 9, 426 (2008).
![Page 73: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/73.jpg)
Original Study Simplified
Using what is known about interactions in fly & yeast
predict new interactions with your protein of interest
![Page 74: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/74.jpg)
Given a protein P in Species X
Find proteins similar to P in Species Y
Retrieve interactors in Species Y
Sequence-compare Y-interactors with Species X genome
(1) Keep only those with homologue in X
Find proteins similar to P in Species Z
Retrieve interactors in Species Z
Sequence-compare Z-interactors with (1)
Putative interactors in Species X
“Pseudo-code” Abstracted Workflow
![Page 75: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/75.jpg)
Modeling the science...
OWL
![Page 76: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/76.jpg)
ProbableInteractor is homologous to ( Potential Interactor from ModelOrganism1…)
and
Potential Interactor from ModelOrganism2…)
Probable Interactor is defined in OWL as a subClass - something that appears as a potential interactor in both comparator model organisms.
Modeling the science...
![Page 77: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/77.jpg)
In a local data-file
provide the protein we are interested in
and the two species we wish to use in our comparison
taxon:9606 a i:OrganismOfInterest . # humanuniprot:Q9UK53 a i:ProteinOfInterest . # ING1taxon:4932 a i:ModelOrganism1 . # yeasttaxon:7227 a i:ModelOrganism2 . # fly
Running the Web Science Experiment
![Page 78: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/78.jpg)
The tricky bit is...
In the abstract, the search for homology is “generic” – ANY Protein, ANY model
system
But when the machine does the experiment, it will need
to use (at least) two organism-specific resources because the answer requires
information from two declared species taxon:4932 a i:ModelOrganism1 . # yeast
taxon:7227 a i:ModelOrganism2 . # fly
![Page 79: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/79.jpg)
PREFIX i: <http://sadiframework.org/ontologies/InteractingProteins.owl#>
SELECT ?proteinFROM <file:/local/workflow.input.n3>WHERE {
?protein a i:ProbableInteractor .}
This is the question we ask:(the query language here is SPARQL)
The URL of our OWL model (ontology) defining Probable Interactors
![Page 80: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/80.jpg)
Each relationship (property-restriction)in the OWL Class is then matched with a SADI Service
The matched SADI Service can generate data that fulfils that property restriction(i.e. produces triples with that S/P/O pattern)
![Page 81: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/81.jpg)
SHARE chains these SADI services into an analytical workflow...
...the outputs from that workflow areInstances (OWL Individuals) ofProbable Interactors
![Page 82: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/82.jpg)
SHARE derived (and executed) the following workflow automatically
These are differentSADI Web Services...
...selected at run-time based on the same model
![Page 83: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/83.jpg)
![Page 84: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/84.jpg)
Keys to Success:
1: Use standards
2: Focus on predicates, not classes
3: Use these predicates to define, rather than assert, classes
4: Make sure all URIs resolve, and resolve to something useful
5: Never leave the RDF world... (abandon vanilla XML, even for Web Services!)
6: Use reasoners... Everywhere... Always!
![Page 85: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/85.jpg)
THE TOOLS AVAILABLEPart V
![Page 86: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/86.jpg)
SERVICE PROVISIONPart V - A
![Page 87: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/87.jpg)
Libraries• Perl• Java• Python
Plug-in to Protege• Perl service scaffolds• Java service scaffolds
![Page 88: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/88.jpg)
CLIENTSPart V - B
![Page 89: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/89.jpg)
SHARE
• you’ve already seen how SHARE works...
![Page 90: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/90.jpg)
Taverna
• Contextual service discovery
• Automatic RDF serialization and deserialization beetween SADI and non-SADI services
• Note that Taverna is not as rich a client as SHARE. The reason is that SHARE will aggregate and re-reason after every service invocation. There is no (automatic) data aggregation in Taverna.
![Page 91: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/91.jpg)
Using SADI services – building a workflowThe next step in the workflow is to find a SADI service that takes the genes from getKEGGGenesByPathway and returns the proteins that those genes code for.
![Page 92: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/92.jpg)
Using SADI services – building a workflowRight-click on the service output port and click Find services that consume KEGG_Record…
![Page 93: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/93.jpg)
Using SADI services – building a workflowSelect getUniprotByKeggGene from the list of SADI services and click Connect.
![Page 94: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/94.jpg)
Using SADI services – building a workflowThe getUniprotByKeggGene service is added to the workflow and automatically connected to the output from getKEGGGenesByPathway.
![Page 95: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/95.jpg)
Using SADI services – building a workflowAdd a new workflow output called protein and connect the output from the getUniprotByKeggGene service to it.
![Page 96: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/96.jpg)
Using SADI services – building a workflowThe next step in the workflow is to find a SADI service that takes the proteins and returns sequences of those proteins. Right-click on the encodes output port and click Find services that consume UniProt_Record…
![Page 97: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/97.jpg)
Using SADI services – building a workflowThe UniProt info service attaches the property hasSequence so select this service and click Connect.
![Page 98: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/98.jpg)
Using SADI services – building a workflowThe UniProt info service is added to the workflow and automatically connected to the output from getUniprotByKeggGene .
![Page 99: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/99.jpg)
Using SADI services – building a workflowAdd a new workflow output called sequence and connect the output from the hasSequence output from the UniProt info service to it.
![Page 100: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/100.jpg)
Using SADI services – building a workflowThe KEGG pathway were interested in is "hsa00232”, so we’ll add it as a constant value. Right-click on the KEGG_PATHWAY_Record input port and click Constant value.
![Page 101: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/101.jpg)
Using SADI services – building a workflowEnter the value hsa00232 and click OK.
![Page 102: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/102.jpg)
Using SADI services – building a workflowThe workflow is now complete and ready to run.
![Page 103: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/103.jpg)
IO Informatics Knowledge Explorer plug-in
• “Bootstrapping” of semantics using known URI schema (identifiers.org, LSRN, Bio2RDF, etc.)
• Contextual service discovery
• Automatic packaging of appropriate data from your data-store and automated service invocation using that data.
• This uses some not-widely-known services and metadata that is in the SHARE registry!!
![Page 104: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/104.jpg)
The SADI plug-in to the IO Informatics’
Knowledge Explorer
...a quick explanation of how we “boot-strap” semantics...
![Page 105: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/105.jpg)
The Knowledge ExplorerPersonal Edition,
and the SADI plug-in, arefreely available.
![Page 106: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/106.jpg)
Sentient Knowledge Explorer is a retrieval, integration, visualization, query, and exploration
environment for semantically rich data
![Page 107: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/107.jpg)
Most imported data-sets will already have properties (e.g. “encodes”)
…and the data will already be typed (e.g. “Gene” or “Protein”)
…so finding SADI Services to consume that data is ~trivial
![Page 108: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/108.jpg)
![Page 109: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/109.jpg)
![Page 110: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/110.jpg)
![Page 111: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/111.jpg)
Now what...??
No properties...
No rdf:type...
How do I find a service using that node?
What *is* that node anyway??
![Page 112: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/112.jpg)
In the case of LSRN URIs, they resolve to:
<lsrn:DragonDB_Locus_Record rdf:about="http://lsrn.org/DragonDB_Locus:CHO"> <dc:identifier>CHO</dc:identifier> <sio:SIO_000671> <!-- has identifier --> <lsrn:DragonDB_Locus_Identifier> <sio:SIO_000300>CHO</sio:SIO_000300> <!-- has value --> </lsrn:DragonDB_Locus_Identifier> </sio:SIO_000671> </lsrn:DragonDB_Locus_Record></rdf:RDF>
![Page 113: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/113.jpg)
In the case of LSRN URIs, they resolve to:
<lsrn:DragonDB_Locus_Record rdf:about="http://lsrn.org/DragonDB_Locus:CHO"> <dc:identifier>CHO</dc:identifier> <sio:SIO_000671> <!-- has identifier --> <lsrn:DragonDB_Locus_Identifier> <sio:SIO_000300>CHO</sio:SIO_000300> <!-- has value --> </lsrn:DragonDB_Locus_Identifier> </sio:SIO_000671> </lsrn:DragonDB_Locus_Record></rdf:RDF> The Semantic Science Integrated
Ontology (Dumontier) has a model for how to describe database records, including explicitly making the record identifier an attribute of that record; in our LSRN metadata, we also explicitly rdf:type both records and identifiers.
![Page 114: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/114.jpg)
Now we have enough information to start exploring global data...
![Page 115: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/115.jpg)
Menu option provided by the plugin
![Page 116: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/116.jpg)
Discovered the (only)service that consumesthese kinds of records
![Page 117: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/117.jpg)
Output is added to the graph (with some extra logic to make visualization of complex data structures a bit easier)
![Page 118: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/118.jpg)
Lather, rinse, repeat...
![Page 119: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/119.jpg)
...and of course, these links are “live”
![Page 120: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/120.jpg)
![Page 121: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/121.jpg)
What about URIs other than LSRN?
![Page 122: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/122.jpg)
![Page 123: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/123.jpg)
HTTP POST the URI to the SHARE Resolver Service
It will (try to) return you SIO-compliant RDF metadata about
that URI(this is a typical SADI service)
The resolver currently recognizes a few different sharted-URI
schemes(e.g. Bio2RDF, Identifiers.org)and can be updated with new
patterns
![Page 124: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/124.jpg)
Next problem:
Knowledge Explorer and therefore the
plug-in are written in C#
All of our interfaces are described in
OWL
C# reasoners are extremely limited at
this time
![Page 125: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/125.jpg)
This problem manifests itself in two ways:
1.An individual on the KE canvas has all the properties required by a Service in the registry, but is not rdf:typed as that Service’s input type how do you discover that Service so that you can add it to the menu?
2.For a selected Service from the menu, how does the plug-in know which data-elements it needs to extract from KE to send to that service in order to fulfil it’s input property-restrictions?
![Page 126: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/126.jpg)
If I select a canvas node, and ask SADI to find services, it will...
![Page 127: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/127.jpg)
The get_sequence_for_region service required ALL of this (hidden) information
![Page 128: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/128.jpg)
Nevertheless:
(a) The service can be discovered based on JUST this node selection
(b) The service can be invoked based on JUST this node selection
![Page 129: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/129.jpg)
Voila!
How did the plug-in discover the service, and determine which data was required to access that service based on an OWL Class definition,
without a reasoner?
![Page 130: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/130.jpg)
Service Description
INPUT OWL ClassNamedIndividual: things with a “name” property from “foaf” ontology
OUTPUT OWL ClassGreetedIndividual: things with a “greeting” property from “hello” ontology
INDEX
The service provides a “greeting”
property based on a “name” property
Registry
SELECT ?x, ?yFROM knowledge_explorer_databaseWHERE { ?x foaf:name ?y}
Convert Input OWL Class def’ninto an ~equivalent SPARQL query
Store togetherwith index
![Page 131: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/131.jpg)
Just to ensure that I don’t over-trivialize this point,
the REAL SPARQL query that extracts the input for this service is...
![Page 132: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/132.jpg)
CONSTRUCT {?input a <http://sadiframework.org/ontologies/GMOD/BiopolymerRegion.owl#BiopolymerRegion> .?input <http://sadiframework.org/ontologies/GMOD/BiopolymerRegion.owl#position> ?position .?position a
<http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#RangedSequencePosition> .?position <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#coordinate> ?start .?start a <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#StartPosition> .?start <http://semanticscience.org/resource/SIO_000300> ?startValue .?position <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#coordinate> ?end .?end a <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#EndPosition> .?end <http://semanticscience.org/resource/SIO_000300> ?endValue .?position <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#in_relation_to> ?sequence .?sequence <http://semanticscience.org/resource/SIO_000210> ?feature .?feature <http://semanticscience.org/resource/SIO_000008> ?identifier .?identifier <http://semanticscience.org/resource/SIO_000300> ?featureID .
?sequence <http://semanticscience.org/resource/SIO_000210> ?strand .?strand <http://semanticscience.org/resource/SIO_000093> ?strandFeature . ?strandFeature a ?strandFeatureType .?strandFeature <http://semanticscience.org/resource/SIO_000008> ?strandFeatureIdentifier .?strandFeatureIdentifier <http://semanticscience.org/resource/SIO_000300> ?strandFeatureID .?strand a ?strandType .
} WHERE {?input <http://sadiframework.org/ontologies/GMOD/BiopolymerRegion.owl#position> ?position .?position <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#coordinate> ?start .?start a <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#StartPosition> .?start <http://semanticscience.org/resource/SIO_000300> ?startValue .?position <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#coordinate> ?end .?end a <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#EndPosition> .?end <http://semanticscience.org/resource/SIO_000300> ?endValue .?position <http://sadiframework.org/ontologies/GMOD/RangedSequencePosition.owl#in_relation_to> ?sequence .{
?sequence <http://semanticscience.org/resource/SIO_000210> ?feature .?feature <http://semanticscience.org/resource/SIO_000008> ?identifier .
?identifier <http://semanticscience.org/resource/SIO_000300> ?featureID .
} UNION {?sequence <http://semanticscience.org/resource/SIO_000210> ?strand .?strand <http://semanticscience.org/resource/SIO_000093> ?strandFeature .{
?strandFeature a <http://sadiframework.org/ontologies/GMOD/Feature.owl#Feature> .
} UNION {?strandFeature <http://semanticscience.org/resource/SIO_000008> ?
strandFeatureIdentifier .?strandFeatureIdentifier <http://semanticscience.org/resource/SIO_000300> ?
strandFeatureID .} .{
?strand a <http://sadiframework.org/ontologies/GMOD/Strand.owl#PlusStrand> .
?strand a ?strandType .} UNION {
?strand a <http://sadiframework.org/ontologies/GMOD/Strand.owl#MinusStrand> .
?strand a ?strandType .} .
} .}
![Page 133: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/133.jpg)
Summary
While the Knowledge Explorer plug-in has similar functionality to other tools we have built for SADI, it takes advantage of some features of
the SADI Registry, and SADI in general, that are not widely-known.
We hope that the availability of these features encourages development of SADI tooling in other languages that have limited access to
reasoning.
![Page 134: SADI CSHALS 2013](https://reader036.vdocuments.net/reader036/viewer/2022082700/54905f82b47959c8568b4aa6/html5/thumbnails/134.jpg)
Luke McCarthy Lead Developer, SADI project
Benjamin VanderValk Developer, SADI project