SlideShare a Scribd company logo
1 of 126
Download to read offline
Beyond the Triplestore
http://tiny.cc/SADI_Tutorial
Slides, copy/paste code, and example
data are all in this Google folder
All content licensed CC-BY
Mark D. Wilkinson, CBGP-UPM, Madrid
markw@illuminae.com
Contact me anytime!
markw@illuminae.com
I’m the SADI “Helpdesk”
:-)
First:
Why SADI?
Then:
Examples of SADI simple Linked Data
Followed by:
Examples of SADI with “deep semantics”
Finally:
How to build it yourself!
Semantic Web Technologies
Semantic Web Technologies
?
Semantic Web Technologies
?TO ME: If you are using RDF or even OWL, without reasoning, then you
are ‘doing’ Linked Data. When you start using a reasoner (or reasoning of
some type) you are ‘doing’ Semantic Web
Semantic Web Technologies
?I will be showing how SADI can be used both as a straightforward
Linked Data resource, and/or as a Semantic Web resource.
Semantic Web Technologies
?Key Message:
You do not have to “get” OWL
to use SADI effectively
The Web
The Semantic Web
causally related to
In My Opinion, this is the critical bit!
causally related to
The link is explicitly labeled!
???
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
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
Varying estimates
put the size of the
Deep Web
between
500 and 800 times
larger than the
surface Web
On the WWW
“automation” of
access to Deep Web
data happens through
“Web Services”
There are many suggestions for how to bring the Deep Web
into the Semantic Web using Semantic Web Services (SWS)
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
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
None, so far, has proven to be wildly successful
(in my opinion)
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
None, so far, has proven to be wildly successful
(in my opinion)
…because describing what a Service does is HARD!
Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
Scientific Web Services are DIFFERENT!
They’re simpler!
So perhaps we can solve the Semantic Web Service problem
as it pertains to this (important!) domain
With respect to the Semantic Web
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
http://semanticscience.org/resource/SIO_000243
causally related with
http://semanticscience.org/resource/SIO_000243
The Semantic Web gets its power from
relationships
causally related with
Relationships are not on this list…
and that seemed to me to be a huge oversight!
Describe input data
Describe output data
Describe how the system manipulates the data
Describe how the world changes as a result
http://semanticscience.org/resource/SIO_000243
In 2008 I published a set of design-patterns
for scientific Semantic Web Services
that focuses on the biological relationship that the Service “exposes”
causally related with
AACTCTTCGTAGTG...
BLAST
Web Service
AACTCTTCGTAGTG...
BLAST
sequenceX
has_seq_string
AACTCTTCGTAGTG...
BLAST
has
homology
to
Terminal Flower
type
gene
species
A. thal.
sequenceX
has_seq_string
AACTCTTCGTAGTG...
sequenceX
has_seq_string
AACTCTTCGTAGTG...
BLAST
has
homology
to
Terminal Flower
type
gene
species
A. thal.
SADI requires you to explicitly declare
as part of your analytical output,
the biological relationship between
the input and the output that your
algorithm “exposed”.
sequenceX
has_seq_string
AACTCTTCGTAGTG...
sequenceX
has_seq_string
If SADI produces Linked Data, can we interact with it
like any other Linked Data resource?
“Semantic Health And Research Environment”
SPARQL + SADI + Workflows + OWL Reasoning
The SHARE registry
indexes all of the input/output/relationship
triples that can be generated by all known SADI services
SHARE is then able to discover Services
that will generate the data that it needs
to answer the SPARQL query
What is the phenotype of every allele of the
Antirrhinum majus DEFICIENS gene
SELECT ?allele ?image ?desc
WHERE {
locus:DEF genetics:hasVariant ?allele .
?allele info:visualizedByImage ?image .
?image info:hasDescription ?desc
}
What is the phenotype of every allele of the
Antirrhinum majus DEFICIENS gene
SELECT ?allele ?image ?desc
WHERE {
locus:DEF genetics:hasVariant ?allele .
?allele info:visualizedByImage ?image .
?image info:hasDescription ?desc
}
Note that there is no “FROM” clause!
We don’t tell it where it should get the information,
The machine has to figure that out by itself...
What is the phenotype of every allele of the
Antirrhinum majus DEFICIENS gene
SELECT ?allele ?image ?desc
WHERE {
locus:DEF genetics:hasVariant ?allele .
?allele info:visualizedByImage ?image .
?image info:hasDescription ?desc
}
Starting data: the locus “DEF” (Deficiens)
(the “bound” variable in the query)
What is the phenotype of every allele of the
Antirrhinum majus DEFICIENS gene
SELECT ?allele ?image ?desc
WHERE {
locus:DEF genetics:hasVariant ?allele .
?allele info:visualizedByImage ?image .
?image info:hasDescription ?desc
}
Query: A series of relationships v.v. DEF
Enter that query into
SHARE
Click “Submit”...
...and in a few seconds you get your answer.
Based on the relationships in your query, SHARE queried its registry
to automatically discover SADI Services capable of generating those triples
This is Linked Data, like any other…
What pathways does UniProt protein P47989 belong to?
PREFIX pred: <http://sadiframework.org/ontologies/predicates.owl#>
PREFIX ont: <http://ontology.dumontierlab.com/>
PREFIX uniprot: <http://lsrn.org/UniProt:>
SELECT ?gene ?pathway
WHERE {
uniprot:P47989 pred:isEncodedBy ?gene .
?gene ont:isParticipantIn ?pathway .
}
What pathways does UniProt protein P47989 belong to?
PREFIX pred: <http://sadiframework.org/ontologies/predicates.owl#>
PREFIX ont: <http://ontology.dumontierlab.com/>
PREFIX uniprot: <http://lsrn.org/UniProt:>
SELECT ?gene ?pathway
WHERE {
uniprot:P47989 pred:isEncodedBy ?gene .
?gene ont:isParticipantIn ?pathway .
}
What pathways does UniProt protein P47989 belong to?
PREFIX pred: <http://sadiframework.org/ontologies/predicates.owl#>
PREFIX ont: <http://ontology.dumontierlab.com/>
PREFIX uniprot: <http://lsrn.org/UniProt:>
SELECT ?gene ?pathway
WHERE {
uniprot:P47989 pred:isEncodedBy ?gene .
?gene ont:isParticipantIn ?pathway .
}
Note again that there is no “From” clause…
I have not told SHARE where to look for the answer, I
am simply asking my question
Enter that query into
SHARE
Two different
providers of gene
information
(KEGG & NCBI);
were found &
accessed
Two different
providers of
pathway
information
(KEGG and
GO);
were found &
accessed
Again, the results are all links to the original data
These were examples where SADI/SHARE was used
for “simple” Linked Data exploration
What does it look like when we start pushing Semantics?
Please be assured - you DO NOT have to understand
this next piece in order to use SADI. This is just
“the icing on the cake”
“c'est la cerise sur le gâteau”
“la guinda del pastel”
“die Krönung des Ganzen”
Show me the latest Blood Urea Nitrogen and Creatinine levels
of patients who appear to be rejecting their transplants
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX patient: <http://sadiframework.org/ontologies/patients.owl#>
PREFIX l: <http://sadiframework.org/ontologies/predicates.owl#>
SELECT ?patient ?bun ?creat
FROM <http://sadiframework.org/ontologies/patients.rdf>
WHERE {
?patient rdf:type patient:LikelyRejecter .
?patient l:latestBUN ?bun .
?patient l:latestCreatinine ?creat .
}
Show me the latest Blood Urea Nitrogen (BUN) and
Creatinine levels of patients who appear to be
rejecting their transplants
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX patient: <http://sadiframework.org/ontologies/patients.owl#>
PREFIX l: <http://sadiframework.org/ontologies/predicates.owl#>
SELECT ?patient ?bun ?creat
FROM <http://sadiframework.org/ontologies/patients.rdf>
WHERE {
?patient rdf:type patient:LikelyRejecter .
?patient l:latestBUN ?bun .
?patient l:latestCreatinine ?creat .
}
Likely Rejecter:
A patient who has creatinine levels
that are increasing over time
- - Mark D Wilkinson’s definition
Likely Rejecter:
…but there is no “likely rejecter”
column or table in our database…
only blood chemistry measurements
at various time-points
Likely Rejecter:
So the data required to answer this question
DOESN’T EXIST!
My definition of a Likely Rejecter is encoded in
a machine-readable document written in the OWL Ontology language
Basically:
“the regression line over creatinine measurements should have an increasing slope”
Our ontology refers to other ontologies (possibly published by other people)
to learn about what the properties of “regression models” are
e.g. that regression models have slopes and intercepts
and that slopes and intercepts have decimal values
?
Enter that query into
SHARE
Based on the Class definition
SHARE decides that it needs to do a
Linear Regression analysis
on the blood creatinine measurements
?
The conversation between SHARE and the registry
reveals the use of “Deep Semantics”
Q: Is there a SADI service that will consume instances of Patient and give
me instances of LikelyRejector
A: No
Q: Okay... LikelyRejectors need a regression model of increasing slope
over their BloodCreatinine, so... Is there a SADI service that will consume
BloodCreatinine over time and give me its linear regression model?
A: No
Q: Okay... Blood Creatinine over time is a subclass of data of type
X/Y coordinate, so is there a service that consumes X/Y data and
returns its regression model?
A: Yes → here’s the Service URL.
The SHARE system utilizes DL Reasoning over SADI interface
definitions to discover analytical services
that do linear regression analysis
→ sends the data to be analyzed
This happens iteratively
(e.g. SHARE also has to examine the slope of the regression line
using another service, find the “latest” in a series of time measurements, etc.)
There is reasoning after every Service invocation
(i.e. after every clause in the query)
Once it is able to find instances (OWL Individuals)
of the LikelyRejector class, it continues with the
rest of the query
VOILA!
The way SHARE “interprets” data varies
depending on the context of the query
(i.e. which ontologies it reads – Mine? Yours?)
and on what part of the query
it is trying to answer at any given moment
(which ontological concept is relevant to that clause)
Example?
Blood Creatinine measurements
were not dictated to be
Blood Creatinine measurements
Example?
The data had the ‘qualities/properties’ that
allowed one machine to interpret
that they were Blood Creatinine measurements
(e.g. to determine which patients were rejecting)
Example?
But the data also had the ‘qualities/properties’ that
allowed another machine to interpret them as
Simple X/Y coordinate data
(e.g. the Linear Regression calculation tool)
Benefit
of Deep Semantics
Data is amenable to
constant re-interpretation
http://www.flickr.com/people/faernworks/
We will examine SADI
mainly as a source of Linked Data
We will not spend much time
thinking about the Semantics
of our services or their interfaces
2 Contents
1. Introduction to Semantic Web Services
2. Introduction to SADI services
3. SADI service ontologies
4. SADI service generator
5. SADI and SAWSDL
6. SADI clients
2.1.3 Motivation for SADI
▪▪ simple
“perfection is finally attained not when there is no
longer anything to add, but when there is no longer
anything to take away”
▪▪ powerful
“everything should be as simple as it can be, but not
simpler”
▪▪ flexible
“SADI: there’s nothing to it”
2.2 Introduction to SADI Services
2. Introduction to SADI Services
1. What is a SADI service?
2. Why use SADI services?
3. Requirements for SADI compliance
4. Calling a SADI service
5. Advanced SADI features
6. The SADI registry
2.2.1 What is a SADI service?
● SADI services
○ use simple HTTP operations
■ (no project-specific protocol)
○ consume and produce RDF data
■ (no project-specific message scaffolding)
○ use OWL to describe service interface
(use existing ontologies
and especially existing properties)
2.2.1 What is a SADI service?
● input is an RDF graph
○ rooted at a particular node
○ described by an OWL class
● output is an RDF graph
○ rooted at the same node
○ described by another OWL class
2.2.1 What is a SADI service?
● explicit relationship between input and output
○ transparent service operation semantics
● machine-understandable description of the
service interface
○ easy service discovery and integration
2.2.2 Why use SADI services?
Input
height weight
SADI
Service
Output
BMI
ID Name Height Weight Age
24601
7474505B
6
Jean Valjean
Jake Blues
—
...
1.8m
1.73m
1.88m
...
84kg
101kg
75kg
...
45
31
39
...
Client
BMI
2.2.2 Why use SADI services?
Input
height weight
SADI
Service
Output
BMI
ID Name Height Weight Age
24601
7474505B
6
Jean Valjean
Jake Blues
—
...
1.8m
1.73m
1.88m
...
84kg
101kg
75kg
...
45
31
39
...
Client
BMI
#24601
1.8m 84kg
height weight
2.2.2 Why use SADI services?
Input
height weight
SADI
Service
Output
BMI
ID Name Height Weight Age
24601
7474505B
6
Jean Valjean
Jake Blues
—
...
1.8m
1.73m
1.88m
...
84kg
101kg
75kg
...
45
31
39
...
Client
BMI
#24601
25.9
BMI
25.9
2.2.2 Why use SADI services?
@prefix rdf:
@prefix rdfs:
@prefix xsd:
@prefix mged:
@prefix foaf:
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://www.w3.org/2000/01/rdf-schema#> .
<http://www.w3.org/2001/XMLSchema#> .
<http://mged.sourceforge.net/ontologies/MGEDOntology.owl#> .
<http://xmlns.com/foaf/0.1/> .
<http://sadiframework.org/examples/bmi-input.rdf#patient24601> bmi:BMI
"25.9"^^xsd:double ;
foaf:name "Jean Valjean"^^xsd:string ; mged:has_height
[ a mged:Measurement ; mged:has_units mged:m ; mged:
has_value "1.8"^^xsd:double
] ;
mged:has_mass
[ a mged:Measurement ;
mged:has_units mged:kg ; mged:
has_value "84"^^xsd:double
] .
Client
24601
1.8m 84kg
height weight
BMI
25.9
2.2.2 Why use SADI services?
sadi: <http://sadiframework.org/ontologies/predicates.owl#> sadi: <http:
//sadiframework.org/ontologies/predicates.owl#> dumontier:
<http://ontology.dumontierlab.com/>
kegg: <http://lsrn.org/KEGG_PATHWAY:>
?gene ?protein ?seq
PREFIX
PREFIX
PREFIX
SELECT
WHERE {
kegg:hsa00232 dumontier:hasParticipant ?gene .
?gene sadi:encodes ?protein .
?protein sadi:hasSequence ?seq
}
Service
Service
Servic
e
Similar to “Federated Queries”… but are actually Web Service Workflows
2.2.3 Requirements for SADI compliance
● Identified by an HTTP URL
○ used to identify the service
■ (service URI)
○ used to invoke the service
■ (service URL)
http://sadiframework.org/examples/hello
2.2.3 Requirements for SADI compliance
•Responds to HTTP GET with service interface def.
•RDF document
•Service definition instance identified by service URI
•(see §2.3.1 for specifics)
•Indicates input OWL class and output OWL class
• (among other things)
http://sadiframework.org/examples/hello
http://sadiframework.org/examples/hello
input OWL class is
http://sadiframework.org/examples/hello.owl#NamedIndividual
output OWL class is
http://sadiframework.org/examples/hello.owl#GreetedIndividual
2.2.3 Requirements for SADI compliance
2.2.3 Requirements for SADI compliance
● Responds to HTTP POST by invoking service
○ input is an RDF document
■ contains input OWL class instances
○ output is an RDF document
■ contains output OWL class instances
● one for each input instance
● Input/output instance share same URI
http://sadiframework.org/examples/hello
http://sadiframework.org/examples/hello
input:
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ;
foaf:name "Guy Incognito" .
output:
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ;
hello:greeting "Hello, Guy Incognito!" .
2.2.3 Requirements for SADI compliance
2.2.3 Requirements for SADI compliance
● Indicates error with appropriate HTTP status
○ usually 500 Internal Service Error
○ may return RDF describing the error
2.2.4 Calling a SADI service
1. Client sends POST request to service URL
● POST body is an RDF document
○ contains input OWL class instances
○ input serialization specified in
Content-type HTTP header
application/rdf+xml text/rdf+n3
○ output serialization requested in
Accept HTTP header
POST /examples/hello HTTP/1.1 Host: sadiframework.org Content-type:
text/rdf+n3 Accept: text/rdf+n3
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ;
foaf:name "Guy Incognito" .
2.2.4 Calling a SADI service
POST /examples/hello HTTP/1.1 Host: sadiframework.org Content-type:
text/rdf+n3 Accept: text/rdf+n3
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ;
foaf:name "Guy Incognito" .
2.2.4 Calling a SADI service
Note that there is NO special message structure! This is not like SOAP!
2.2.4 Calling a SADI service
2. Service responds with output
● response body is an RDF document
○ contains output OWL class instances
● serialization specified in
○ Content-type HTTP header
application/rdf+xml text/rdf+n3
HTTP/1.1 200 OK
Content-type: text/rdf+n3
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ;
hello:greeting "Hello, Guy Incognito!" .
2.2.4 Calling a SADI service
2.2.5 Advanced SADI features
5. Advanced SADI features
a. Asynchronous SADI services
b. Parameterized SADI services
2.2.5.a Asynchronous SADI services
● Problem
○ HTTP timeout if a service takes too long to
respond
● Solution
○ service returns stub immediately; client polls
for complete response
2.2.5.a Asynchronous SADI services
1. Client sends POST request to service URL
● POST body is an RDF document
○ contains input OWL class instances
● input serialization specified in
Content-type HTTP header
application/rdf+xml text/rdf+n3
● output serialization requested in
Accept HTTP header
(Exactly the same as before….)
POST /examples/hello HTTP/1.1 Host: sadiframework.org Content-type:
text/rdf+n3 Accept: text/rdf+n3
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ;
foaf:name "Guy Incognito" .
2.2.5.a Asynchronous SADI services
2.2.5.a Asynchronous SADI services
2. Service responds with stub
● HTTP response code is:
202 Accepted but incomplete
● response body is an RDF document
contains output OWL class instances composed of rdfs:
isDefinedBy statements
● serialization specified in:
Content-type HTTP header
application/rdf+xml, text/rdf+n3, etc
HTTP/1.1 202 Accepted Content-type: text/rdf+n3
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ;
rdfs:isDefinedBy <http://sadiframework.org/examples/hello?poll=1> .
2.2.5.a Asynchronous SADI services
2.2.5.a Asynchronous SADI services
3. Client fetches asynchronous data
● fetch the object URL of each
rdfs:isDefinedBy statement
GET /examples/hello?poll=1 HTTP/1.1 Host: sadiframework.org
2.2.5.a Asynchronous SADI services
4. Until output is ready
● service sends an HTTP 302 redirect
Retry-after HTTP header suggests how long the client
should wait (in seconds)
HTTP/1.1 302 Moved Temporarily Retry-After: 30
Location: http://sadiframework.org/examples/hello?poll=1
2.2.5.a Asynchronous SADI services
5. Client follows redirect
● after waiting as suggested by
Retry-after HTTP header
GET /examples/hello?poll=1 HTTP/1.1 Host: sadiframework.org
2.2.5.a Asynchronous SADI services
6. When output is ready
● response body is an RDF document
should be combined with original response
HTTP/1.1 200 OK
Content-type: text/rdf+n3
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ;
hello:greeting "Hello, Guy Incognito!" .
2.2.6 The SADI registry
● clients need to find SADI services
○ ideally just search the Web for instances of the
SADI service description class
■ current technology isn’t quite there
● use the SADI registry
○ SPARQL endpoint, Java and REST APIs
○ anyone can register a service
○ services are indexed by the properties they
attach
2.2.6 The SADI registry
SADI registry
http://sadiframework.org/registry/
SPARQL endpoint
http://sadiframework.org/registry/sparql
REST API
http://sadiframework.org/registry/api/
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
Remember the OWL2 presentation yesterday
by Frédéric Bestian…
The dangers of OWL reasoning!
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
Human equivalent to (leg minimum cardinality 2)
→ you not human if you lose a leg
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
Do SADI Services suffer this problem?
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
Do SADI Services suffer this problem?
NO!
We are not trying to “understand” the world!
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
Do SADI Services suffer this problem?
NO!
We are only trying to discover acceptable input
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
If my analysis requires that you have 2 legs
and you have only one leg...
YOU ARE NOT A CANDIDATE
FOR MY ANALYSIS. PERIOD.
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
If my analysis requires that you have 2 legs
and you have only one leg...
...my service isn’t interested in whether or not
you are human… it only wants your legs!
2.4.1 Exercise
Create a SADI service that takes
height and weight as input
and attaches BMI.
SADI Services in Perl
The Perl module in CPAN is:
SADI::Simple
Example Service Code:
https://docs.google.com/document/d/1HrFNxG2-eZhiaCaBjNLcAtHPY_-MLCw9BwFmnw4BHKQ/edit?usp=sharing
Example Data and other information:
https://docs.google.com/document/d/1DdWux6w3RzMGexFHf9roRuJnCiDaxWJScECK4POg6RQ/edit?usp=sharing

More Related Content

What's hot

Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQL
Open Data Support
 
Inferring Web Citations using Social Data and SPARQL Rules
Inferring Web Citations using Social Data and SPARQL RulesInferring Web Citations using Social Data and SPARQL Rules
Inferring Web Citations using Social Data and SPARQL Rules
Matthew Rowe
 
Graph DB + Bioinformatics: Bio4j, recent applications and future directions
Graph DB + Bioinformatics:  Bio4j, recent applications and future directions Graph DB + Bioinformatics:  Bio4j, recent applications and future directions
Graph DB + Bioinformatics: Bio4j, recent applications and future directions
Pablo Pareja Tobes
 
Libraries and Linked Data: Looking to the Future (2)
Libraries and Linked Data: Looking to the Future (2)Libraries and Linked Data: Looking to the Future (2)
Libraries and Linked Data: Looking to the Future (2)
ALATechSource
 

What's hot (20)

Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQL
 
Inferring Web Citations using Social Data and SPARQL Rules
Inferring Web Citations using Social Data and SPARQL RulesInferring Web Citations using Social Data and SPARQL Rules
Inferring Web Citations using Social Data and SPARQL Rules
 
Graph DB + Bioinformatics: Bio4j, recent applications and future directions
Graph DB + Bioinformatics:  Bio4j, recent applications and future directions Graph DB + Bioinformatics:  Bio4j, recent applications and future directions
Graph DB + Bioinformatics: Bio4j, recent applications and future directions
 
Linked Data and Locah, UKSG2011
Linked Data and Locah, UKSG2011 Linked Data and Locah, UKSG2011
Linked Data and Locah, UKSG2011
 
Contributing to the Smart City Through Linked Library Data
Contributing to the Smart City Through Linked Library DataContributing to the Smart City Through Linked Library Data
Contributing to the Smart City Through Linked Library Data
 
Semantic Web and Linked Open Data
Semantic Web and Linked Open DataSemantic Web and Linked Open Data
Semantic Web and Linked Open Data
 
How SADI & SHARE help restore the Scientific Method to in silico science
How SADI & SHARE help restore the Scientific Method to in silico scienceHow SADI & SHARE help restore the Scientific Method to in silico science
How SADI & SHARE help restore the Scientific Method to in silico science
 
Libraries and Linked Data: Looking to the Future (2)
Libraries and Linked Data: Looking to the Future (2)Libraries and Linked Data: Looking to the Future (2)
Libraries and Linked Data: Looking to the Future (2)
 
Open Source: Liberating your systems
Open Source: Liberating your systemsOpen Source: Liberating your systems
Open Source: Liberating your systems
 
Linked Data - Exposing what we have
Linked Data - Exposing what we haveLinked Data - Exposing what we have
Linked Data - Exposing what we have
 
CrossRef Technical Information for Libraries
CrossRef Technical Information for LibrariesCrossRef Technical Information for Libraries
CrossRef Technical Information for Libraries
 
Linked Data - Radical Change?
Linked Data -  Radical Change?Linked Data -  Radical Change?
Linked Data - Radical Change?
 
GDG Meets U event - Big data & Wikidata - no lies codelab
GDG Meets U event - Big data & Wikidata -  no lies codelabGDG Meets U event - Big data & Wikidata -  no lies codelab
GDG Meets U event - Big data & Wikidata - no lies codelab
 
Linking Open Government Data at Scale
Linking Open Government Data at Scale Linking Open Government Data at Scale
Linking Open Government Data at Scale
 
DataTags, The Tags Toolset, and Dataverse Integration
DataTags, The Tags Toolset, and Dataverse IntegrationDataTags, The Tags Toolset, and Dataverse Integration
DataTags, The Tags Toolset, and Dataverse Integration
 
RDF data model
RDF data modelRDF data model
RDF data model
 
Experience from 10 months of University Linked Data
Experience from 10 months of University Linked Data Experience from 10 months of University Linked Data
Experience from 10 months of University Linked Data
 
Working with data.open.ac.uk, the Linked Data Platform of the Open University
Working with data.open.ac.uk, the Linked Data Platform of the Open UniversityWorking with data.open.ac.uk, the Linked Data Platform of the Open University
Working with data.open.ac.uk, the Linked Data Platform of the Open University
 
A Linked Data Prototype for the Union Catalog of Digital Archives Taiwan
A Linked Data Prototype for the Union Catalog of Digital Archives TaiwanA Linked Data Prototype for the Union Catalog of Digital Archives Taiwan
A Linked Data Prototype for the Union Catalog of Digital Archives Taiwan
 
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
 

Viewers also liked

1ra clase cómo optimizar la busqueda en google
1ra clase cómo optimizar la busqueda en google1ra clase cómo optimizar la busqueda en google
1ra clase cómo optimizar la busqueda en google
Paola Padilla
 
SmartBrief Portfolio
SmartBrief PortfolioSmartBrief Portfolio
SmartBrief Portfolio
SmartBrief
 
Teamworks Customer Relationship Marketing
Teamworks Customer Relationship MarketingTeamworks Customer Relationship Marketing
Teamworks Customer Relationship Marketing
Judy Lane
 
Portfolio PlusAnimations 2009 ENG
Portfolio PlusAnimations 2009 ENGPortfolio PlusAnimations 2009 ENG
Portfolio PlusAnimations 2009 ENG
rogiervanmeeuwen
 

Viewers also liked (20)

Open Source Design - FSOSS 2008
Open Source Design - FSOSS 2008Open Source Design - FSOSS 2008
Open Source Design - FSOSS 2008
 
What is a pub?
What is a pub?What is a pub?
What is a pub?
 
SWAT4LS 2011: SADI Knowledge Explorer Plug-in
SWAT4LS 2011: SADI Knowledge Explorer Plug-inSWAT4LS 2011: SADI Knowledge Explorer Plug-in
SWAT4LS 2011: SADI Knowledge Explorer Plug-in
 
Building a community around your blog v3
Building a community around your blog v3Building a community around your blog v3
Building a community around your blog v3
 
Tomcat Maven Plugin
Tomcat Maven PluginTomcat Maven Plugin
Tomcat Maven Plugin
 
Thesis Presentation 2009
Thesis Presentation 2009Thesis Presentation 2009
Thesis Presentation 2009
 
WordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteWordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media Institute
 
Using Semantics to personalize medical research
Using Semantics to personalize medical researchUsing Semantics to personalize medical research
Using Semantics to personalize medical research
 
Recomenzar
RecomenzarRecomenzar
Recomenzar
 
Design &amp; Evaluation Edu-Game
Design &amp; Evaluation Edu-GameDesign &amp; Evaluation Edu-Game
Design &amp; Evaluation Edu-Game
 
Virtual Event Planning
Virtual Event PlanningVirtual Event Planning
Virtual Event Planning
 
Tutorial 1.3 - Run Enrichment Analysis
Tutorial 1.3 - Run Enrichment AnalysisTutorial 1.3 - Run Enrichment Analysis
Tutorial 1.3 - Run Enrichment Analysis
 
1ra clase cómo optimizar la busqueda en google
1ra clase cómo optimizar la busqueda en google1ra clase cómo optimizar la busqueda en google
1ra clase cómo optimizar la busqueda en google
 
Design Studio
Design StudioDesign Studio
Design Studio
 
SmartBrief Portfolio
SmartBrief PortfolioSmartBrief Portfolio
SmartBrief Portfolio
 
Teamworks Customer Relationship Marketing
Teamworks Customer Relationship MarketingTeamworks Customer Relationship Marketing
Teamworks Customer Relationship Marketing
 
Enhancing Reproducibility and Transparency in Clinical Research through Seman...
Enhancing Reproducibility and Transparency in Clinical Research through Seman...Enhancing Reproducibility and Transparency in Clinical Research through Seman...
Enhancing Reproducibility and Transparency in Clinical Research through Seman...
 
Internet Protocol
Internet ProtocolInternet Protocol
Internet Protocol
 
Portfolio PlusAnimations 2009 ENG
Portfolio PlusAnimations 2009 ENGPortfolio PlusAnimations 2009 ENG
Portfolio PlusAnimations 2009 ENG
 
Tutorial 1.1 - Import Intogen tumor types
Tutorial 1.1 - Import Intogen tumor typesTutorial 1.1 - Import Intogen tumor types
Tutorial 1.1 - Import Intogen tumor types
 

Similar to Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015

Finding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic WebFinding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic Web
ebiquity
 
C:\fakepath\bioit world2010
C:\fakepath\bioit world2010C:\fakepath\bioit world2010
C:\fakepath\bioit world2010
guestdde063f8
 
Introduction to Semantic Web for GIS Practitioners
Introduction to Semantic Web for GIS PractitionersIntroduction to Semantic Web for GIS Practitioners
Introduction to Semantic Web for GIS Practitioners
Emanuele Della Valle
 
Schema-Agnostic Queries (SAQ-2015): Semantic Web Challenge
Schema-Agnostic Queries (SAQ-2015): Semantic Web ChallengeSchema-Agnostic Queries (SAQ-2015): Semantic Web Challenge
Schema-Agnostic Queries (SAQ-2015): Semantic Web Challenge
Andre Freitas
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
jward5519
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
jward5519
 
2013 nas-ehs-data-integration-dc
2013 nas-ehs-data-integration-dc2013 nas-ehs-data-integration-dc
2013 nas-ehs-data-integration-dc
c.titus.brown
 

Similar to Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015 (20)

SADI SWSIP '09 'cause you can't always GET what you want!
SADI SWSIP '09  'cause you can't always GET what you want!SADI SWSIP '09  'cause you can't always GET what you want!
SADI SWSIP '09 'cause you can't always GET what you want!
 
The Semantic Web - This time... its Personal
The Semantic Web - This time... its PersonalThe Semantic Web - This time... its Personal
The Semantic Web - This time... its Personal
 
Finding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic WebFinding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic Web
 
Research - this time it's personal
Research - this time it's personalResearch - this time it's personal
Research - this time it's personal
 
C:\fakepath\bioit world2010
C:\fakepath\bioit world2010C:\fakepath\bioit world2010
C:\fakepath\bioit world2010
 
Introduction to Semantic Web for GIS Practitioners
Introduction to Semantic Web for GIS PractitionersIntroduction to Semantic Web for GIS Practitioners
Introduction to Semantic Web for GIS Practitioners
 
Sustainable queryable access to Linked Data
Sustainable queryable access to Linked DataSustainable queryable access to Linked Data
Sustainable queryable access to Linked Data
 
Feeding and consuming data to support open notebook science via the chem spid...
Feeding and consuming data to support open notebook science via the chem spid...Feeding and consuming data to support open notebook science via the chem spid...
Feeding and consuming data to support open notebook science via the chem spid...
 
ISoLA 2010: SADI Taverna plug-in
ISoLA 2010:  SADI Taverna plug-inISoLA 2010:  SADI Taverna plug-in
ISoLA 2010: SADI Taverna plug-in
 
OWASP Free Training - SF2014 - Keary and Manico
OWASP Free Training - SF2014 - Keary and ManicoOWASP Free Training - SF2014 - Keary and Manico
OWASP Free Training - SF2014 - Keary and Manico
 
Schema-Agnostic Queries (SAQ-2015): Semantic Web Challenge
Schema-Agnostic Queries (SAQ-2015): Semantic Web ChallengeSchema-Agnostic Queries (SAQ-2015): Semantic Web Challenge
Schema-Agnostic Queries (SAQ-2015): Semantic Web Challenge
 
Information Extraction and Linked Data Cloud
Information Extraction and Linked Data CloudInformation Extraction and Linked Data Cloud
Information Extraction and Linked Data Cloud
 
BioIT Europe 2010 - BioCatalogue
BioIT Europe 2010 - BioCatalogueBioIT Europe 2010 - BioCatalogue
BioIT Europe 2010 - BioCatalogue
 
ChemSpider - Does Community Engagement work to Build a Quality Online Resourc...
ChemSpider - Does Community Engagement work to Build a Quality Online Resourc...ChemSpider - Does Community Engagement work to Build a Quality Online Resourc...
ChemSpider - Does Community Engagement work to Build a Quality Online Resourc...
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
 
Towards a rebirth of data science (by Data Fellas)
Towards a rebirth of data science (by Data Fellas)Towards a rebirth of data science (by Data Fellas)
Towards a rebirth of data science (by Data Fellas)
 
Transcript - Provenance and Social Science data
Transcript  - Provenance and Social Science dataTranscript  - Provenance and Social Science data
Transcript - Provenance and Social Science data
 
How the web has weaved a web of interlinked chemistry data final
How the web has weaved a web of interlinked chemistry data finalHow the web has weaved a web of interlinked chemistry data final
How the web has weaved a web of interlinked chemistry data final
 
2013 nas-ehs-data-integration-dc
2013 nas-ehs-data-integration-dc2013 nas-ehs-data-integration-dc
2013 nas-ehs-data-integration-dc
 

More from Mark Wilkinson

Sample data and other ur ls
Sample data and other ur lsSample data and other ur ls
Sample data and other ur ls
Mark Wilkinson
 
SADI in Taverna Tutorial
SADI in Taverna TutorialSADI in Taverna Tutorial
SADI in Taverna Tutorial
Mark Wilkinson
 

More from Mark Wilkinson (20)

FAIR Metrics - Presentation to NIH KC1
FAIR Metrics - Presentation to NIH KC1FAIR Metrics - Presentation to NIH KC1
FAIR Metrics - Presentation to NIH KC1
 
Introducing the fair evaluator
Introducing the fair evaluatorIntroducing the fair evaluator
Introducing the fair evaluator
 
FAIR Projector Builder
FAIR Projector BuilderFAIR Projector Builder
FAIR Projector Builder
 
Tech. session : Interoperability and Data FAIRness emerges from a novel combi...
Tech. session : Interoperability and Data FAIRness emerges from a novel combi...Tech. session : Interoperability and Data FAIRness emerges from a novel combi...
Tech. session : Interoperability and Data FAIRness emerges from a novel combi...
 
Sample data and other ur ls
Sample data and other ur lsSample data and other ur ls
Sample data and other ur ls
 
Example code for the SADI BMI Calculator Web Service
Example code for the SADI BMI Calculator Web ServiceExample code for the SADI BMI Calculator Web Service
Example code for the SADI BMI Calculator Web Service
 
Sadi service
Sadi serviceSadi service
Sadi service
 
Tutorial - Creating SADI semantic-web-services
Tutorial - Creating SADI semantic-web-servicesTutorial - Creating SADI semantic-web-services
Tutorial - Creating SADI semantic-web-services
 
Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015
Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015
Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015
 
Force11 JDDCP workshop presentation, @ Force2015, Oxford
Force11 JDDCP workshop presentation, @ Force2015, OxfordForce11 JDDCP workshop presentation, @ Force2015, Oxford
Force11 JDDCP workshop presentation, @ Force2015, Oxford
 
Presentation to the J. Craig Venter Institute, Dec. 2014
Presentation to the J. Craig Venter Institute, Dec. 2014Presentation to the J. Craig Venter Institute, Dec. 2014
Presentation to the J. Craig Venter Institute, Dec. 2014
 
SADI CSHALS 2013
SADI CSHALS 2013SADI CSHALS 2013
SADI CSHALS 2013
 
Web Science 2.0 - in silico science
Web Science 2.0 - in silico scienceWeb Science 2.0 - in silico science
Web Science 2.0 - in silico science
 
Web Science - ISoLA 2012
Web Science - ISoLA 2012Web Science - ISoLA 2012
Web Science - ISoLA 2012
 
Web Science, SADI, and the Singularity
Web Science, SADI, and the SingularityWeb Science, SADI, and the Singularity
Web Science, SADI, and the Singularity
 
Evaluating Hypotheses using SPARQL-DL as an abstract workflow language to cho...
Evaluating Hypotheses using SPARQL-DL as an abstract workflow language to cho...Evaluating Hypotheses using SPARQL-DL as an abstract workflow language to cho...
Evaluating Hypotheses using SPARQL-DL as an abstract workflow language to cho...
 
SADI in Perl - Protege Plugin Tutorial (fixed Aug 24, 2011)
SADI in Perl - Protege Plugin Tutorial (fixed Aug 24, 2011)SADI in Perl - Protege Plugin Tutorial (fixed Aug 24, 2011)
SADI in Perl - Protege Plugin Tutorial (fixed Aug 24, 2011)
 
Technologies, methods and challenges to data sharing and aggrigation
Technologies, methods and challenges to data sharing and aggrigationTechnologies, methods and challenges to data sharing and aggrigation
Technologies, methods and challenges to data sharing and aggrigation
 
The Scientific Method on the Semantic Web
The Scientific Method on the Semantic WebThe Scientific Method on the Semantic Web
The Scientific Method on the Semantic Web
 
SADI in Taverna Tutorial
SADI in Taverna TutorialSADI in Taverna Tutorial
SADI in Taverna Tutorial
 

Recently uploaded

6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
imonikaupta
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 

Recently uploaded (20)

6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 

Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015

  • 1. Beyond the Triplestore http://tiny.cc/SADI_Tutorial Slides, copy/paste code, and example data are all in this Google folder All content licensed CC-BY Mark D. Wilkinson, CBGP-UPM, Madrid markw@illuminae.com
  • 2. Contact me anytime! markw@illuminae.com I’m the SADI “Helpdesk” :-)
  • 3. First: Why SADI? Then: Examples of SADI simple Linked Data Followed by: Examples of SADI with “deep semantics” Finally: How to build it yourself!
  • 6. Semantic Web Technologies ?TO ME: If you are using RDF or even OWL, without reasoning, then you are ‘doing’ Linked Data. When you start using a reasoner (or reasoning of some type) you are ‘doing’ Semantic Web
  • 7. Semantic Web Technologies ?I will be showing how SADI can be used both as a straightforward Linked Data resource, and/or as a Semantic Web resource.
  • 8. Semantic Web Technologies ?Key Message: You do not have to “get” OWL to use SADI effectively
  • 11. In My Opinion, this is the critical bit! causally related to The link is explicitly labeled! ???
  • 12. 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
  • 13. 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
  • 14.
  • 15.
  • 16. Varying estimates put the size of the Deep Web between 500 and 800 times larger than the surface Web
  • 17. On the WWW “automation” of access to Deep Web data happens through “Web Services”
  • 18. There are many suggestions for how to bring the Deep Web into the Semantic Web using Semantic Web Services (SWS)
  • 19. 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
  • 20. 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 None, so far, has proven to be wildly successful (in my opinion)
  • 21. 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 None, so far, has proven to be wildly successful (in my opinion) …because describing what a Service does is HARD!
  • 22. Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
  • 23. Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
  • 24. Lord, Phillip, et al. The Semantic Web–ISWC 2004 (2004): 350-364.
  • 25. Scientific Web Services are DIFFERENT! They’re simpler! So perhaps we can solve the Semantic Web Service problem as it pertains to this (important!) domain
  • 26. With respect to the Semantic Web 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
  • 28. http://semanticscience.org/resource/SIO_000243 The Semantic Web gets its power from relationships causally related with
  • 29. Relationships are not on this list… and that seemed to me to be a huge oversight! Describe input data Describe output data Describe how the system manipulates the data Describe how the world changes as a result
  • 30. http://semanticscience.org/resource/SIO_000243 In 2008 I published a set of design-patterns for scientific Semantic Web Services that focuses on the biological relationship that the Service “exposes” causally related with
  • 31.
  • 35. AACTCTTCGTAGTG... BLAST has homology to Terminal Flower type gene species A. thal. SADI requires you to explicitly declare as part of your analytical output, the biological relationship between the input and the output that your algorithm “exposed”. sequenceX has_seq_string AACTCTTCGTAGTG... sequenceX has_seq_string
  • 36.
  • 37.
  • 38. If SADI produces Linked Data, can we interact with it like any other Linked Data resource?
  • 39. “Semantic Health And Research Environment” SPARQL + SADI + Workflows + OWL Reasoning
  • 40. The SHARE registry indexes all of the input/output/relationship triples that can be generated by all known SADI services SHARE is then able to discover Services that will generate the data that it needs to answer the SPARQL query
  • 41.
  • 42. What is the phenotype of every allele of the Antirrhinum majus DEFICIENS gene SELECT ?allele ?image ?desc WHERE { locus:DEF genetics:hasVariant ?allele . ?allele info:visualizedByImage ?image . ?image info:hasDescription ?desc }
  • 43. What is the phenotype of every allele of the Antirrhinum majus DEFICIENS gene SELECT ?allele ?image ?desc WHERE { locus:DEF genetics:hasVariant ?allele . ?allele info:visualizedByImage ?image . ?image info:hasDescription ?desc } Note that there is no “FROM” clause! We don’t tell it where it should get the information, The machine has to figure that out by itself...
  • 44. What is the phenotype of every allele of the Antirrhinum majus DEFICIENS gene SELECT ?allele ?image ?desc WHERE { locus:DEF genetics:hasVariant ?allele . ?allele info:visualizedByImage ?image . ?image info:hasDescription ?desc } Starting data: the locus “DEF” (Deficiens) (the “bound” variable in the query)
  • 45. What is the phenotype of every allele of the Antirrhinum majus DEFICIENS gene SELECT ?allele ?image ?desc WHERE { locus:DEF genetics:hasVariant ?allele . ?allele info:visualizedByImage ?image . ?image info:hasDescription ?desc } Query: A series of relationships v.v. DEF
  • 46. Enter that query into SHARE
  • 48. ...and in a few seconds you get your answer. Based on the relationships in your query, SHARE queried its registry to automatically discover SADI Services capable of generating those triples
  • 49. This is Linked Data, like any other…
  • 50. What pathways does UniProt protein P47989 belong to? PREFIX pred: <http://sadiframework.org/ontologies/predicates.owl#> PREFIX ont: <http://ontology.dumontierlab.com/> PREFIX uniprot: <http://lsrn.org/UniProt:> SELECT ?gene ?pathway WHERE { uniprot:P47989 pred:isEncodedBy ?gene . ?gene ont:isParticipantIn ?pathway . }
  • 51. What pathways does UniProt protein P47989 belong to? PREFIX pred: <http://sadiframework.org/ontologies/predicates.owl#> PREFIX ont: <http://ontology.dumontierlab.com/> PREFIX uniprot: <http://lsrn.org/UniProt:> SELECT ?gene ?pathway WHERE { uniprot:P47989 pred:isEncodedBy ?gene . ?gene ont:isParticipantIn ?pathway . }
  • 52. What pathways does UniProt protein P47989 belong to? PREFIX pred: <http://sadiframework.org/ontologies/predicates.owl#> PREFIX ont: <http://ontology.dumontierlab.com/> PREFIX uniprot: <http://lsrn.org/UniProt:> SELECT ?gene ?pathway WHERE { uniprot:P47989 pred:isEncodedBy ?gene . ?gene ont:isParticipantIn ?pathway . } Note again that there is no “From” clause… I have not told SHARE where to look for the answer, I am simply asking my question
  • 53. Enter that query into SHARE
  • 54.
  • 55.
  • 56. Two different providers of gene information (KEGG & NCBI); were found & accessed Two different providers of pathway information (KEGG and GO); were found & accessed
  • 57. Again, the results are all links to the original data
  • 58. These were examples where SADI/SHARE was used for “simple” Linked Data exploration What does it look like when we start pushing Semantics? Please be assured - you DO NOT have to understand this next piece in order to use SADI. This is just “the icing on the cake” “c'est la cerise sur le gâteau” “la guinda del pastel” “die Krönung des Ganzen”
  • 59. Show me the latest Blood Urea Nitrogen and Creatinine levels of patients who appear to be rejecting their transplants PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patient: <http://sadiframework.org/ontologies/patients.owl#> PREFIX l: <http://sadiframework.org/ontologies/predicates.owl#> SELECT ?patient ?bun ?creat FROM <http://sadiframework.org/ontologies/patients.rdf> WHERE { ?patient rdf:type patient:LikelyRejecter . ?patient l:latestBUN ?bun . ?patient l:latestCreatinine ?creat . }
  • 60. Show me the latest Blood Urea Nitrogen (BUN) and Creatinine levels of patients who appear to be rejecting their transplants PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patient: <http://sadiframework.org/ontologies/patients.owl#> PREFIX l: <http://sadiframework.org/ontologies/predicates.owl#> SELECT ?patient ?bun ?creat FROM <http://sadiframework.org/ontologies/patients.rdf> WHERE { ?patient rdf:type patient:LikelyRejecter . ?patient l:latestBUN ?bun . ?patient l:latestCreatinine ?creat . }
  • 61. Likely Rejecter: A patient who has creatinine levels that are increasing over time - - Mark D Wilkinson’s definition
  • 62. Likely Rejecter: …but there is no “likely rejecter” column or table in our database… only blood chemistry measurements at various time-points
  • 63. Likely Rejecter: So the data required to answer this question DOESN’T EXIST!
  • 64. My definition of a Likely Rejecter is encoded in a machine-readable document written in the OWL Ontology language Basically: “the regression line over creatinine measurements should have an increasing slope”
  • 65. Our ontology refers to other ontologies (possibly published by other people) to learn about what the properties of “regression models” are e.g. that regression models have slopes and intercepts and that slopes and intercepts have decimal values
  • 66. ?
  • 67. Enter that query into SHARE
  • 68.
  • 69. Based on the Class definition SHARE decides that it needs to do a Linear Regression analysis on the blood creatinine measurements
  • 70. ?
  • 71. The conversation between SHARE and the registry reveals the use of “Deep Semantics” Q: Is there a SADI service that will consume instances of Patient and give me instances of LikelyRejector A: No Q: Okay... LikelyRejectors need a regression model of increasing slope over their BloodCreatinine, so... Is there a SADI service that will consume BloodCreatinine over time and give me its linear regression model? A: No Q: Okay... Blood Creatinine over time is a subclass of data of type X/Y coordinate, so is there a service that consumes X/Y data and returns its regression model? A: Yes → here’s the Service URL.
  • 72. The SHARE system utilizes DL Reasoning over SADI interface definitions to discover analytical services that do linear regression analysis → sends the data to be analyzed
  • 73. This happens iteratively (e.g. SHARE also has to examine the slope of the regression line using another service, find the “latest” in a series of time measurements, etc.) There is reasoning after every Service invocation (i.e. after every clause in the query) Once it is able to find instances (OWL Individuals) of the LikelyRejector class, it continues with the rest of the query
  • 75. The way SHARE “interprets” data varies depending on the context of the query (i.e. which ontologies it reads – Mine? Yours?) and on what part of the query it is trying to answer at any given moment (which ontological concept is relevant to that clause)
  • 76. Example? Blood Creatinine measurements were not dictated to be Blood Creatinine measurements
  • 77. Example? The data had the ‘qualities/properties’ that allowed one machine to interpret that they were Blood Creatinine measurements (e.g. to determine which patients were rejecting)
  • 78. Example? But the data also had the ‘qualities/properties’ that allowed another machine to interpret them as Simple X/Y coordinate data (e.g. the Linear Regression calculation tool)
  • 79. Benefit of Deep Semantics Data is amenable to constant re-interpretation
  • 81. We will examine SADI mainly as a source of Linked Data We will not spend much time thinking about the Semantics of our services or their interfaces
  • 82. 2 Contents 1. Introduction to Semantic Web Services 2. Introduction to SADI services 3. SADI service ontologies 4. SADI service generator 5. SADI and SAWSDL 6. SADI clients
  • 83. 2.1.3 Motivation for SADI ▪▪ simple “perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away” ▪▪ powerful “everything should be as simple as it can be, but not simpler” ▪▪ flexible “SADI: there’s nothing to it”
  • 84. 2.2 Introduction to SADI Services 2. Introduction to SADI Services 1. What is a SADI service? 2. Why use SADI services? 3. Requirements for SADI compliance 4. Calling a SADI service 5. Advanced SADI features 6. The SADI registry
  • 85. 2.2.1 What is a SADI service? ● SADI services ○ use simple HTTP operations ■ (no project-specific protocol) ○ consume and produce RDF data ■ (no project-specific message scaffolding) ○ use OWL to describe service interface (use existing ontologies and especially existing properties)
  • 86. 2.2.1 What is a SADI service? ● input is an RDF graph ○ rooted at a particular node ○ described by an OWL class ● output is an RDF graph ○ rooted at the same node ○ described by another OWL class
  • 87. 2.2.1 What is a SADI service? ● explicit relationship between input and output ○ transparent service operation semantics ● machine-understandable description of the service interface ○ easy service discovery and integration
  • 88. 2.2.2 Why use SADI services? Input height weight SADI Service Output BMI ID Name Height Weight Age 24601 7474505B 6 Jean Valjean Jake Blues — ... 1.8m 1.73m 1.88m ... 84kg 101kg 75kg ... 45 31 39 ... Client BMI
  • 89. 2.2.2 Why use SADI services? Input height weight SADI Service Output BMI ID Name Height Weight Age 24601 7474505B 6 Jean Valjean Jake Blues — ... 1.8m 1.73m 1.88m ... 84kg 101kg 75kg ... 45 31 39 ... Client BMI #24601 1.8m 84kg height weight
  • 90. 2.2.2 Why use SADI services? Input height weight SADI Service Output BMI ID Name Height Weight Age 24601 7474505B 6 Jean Valjean Jake Blues — ... 1.8m 1.73m 1.88m ... 84kg 101kg 75kg ... 45 31 39 ... Client BMI #24601 25.9 BMI 25.9
  • 91. 2.2.2 Why use SADI services? @prefix rdf: @prefix rdfs: @prefix xsd: @prefix mged: @prefix foaf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . <http://www.w3.org/2000/01/rdf-schema#> . <http://www.w3.org/2001/XMLSchema#> . <http://mged.sourceforge.net/ontologies/MGEDOntology.owl#> . <http://xmlns.com/foaf/0.1/> . <http://sadiframework.org/examples/bmi-input.rdf#patient24601> bmi:BMI "25.9"^^xsd:double ; foaf:name "Jean Valjean"^^xsd:string ; mged:has_height [ a mged:Measurement ; mged:has_units mged:m ; mged: has_value "1.8"^^xsd:double ] ; mged:has_mass [ a mged:Measurement ; mged:has_units mged:kg ; mged: has_value "84"^^xsd:double ] . Client 24601 1.8m 84kg height weight BMI 25.9
  • 92. 2.2.2 Why use SADI services? sadi: <http://sadiframework.org/ontologies/predicates.owl#> sadi: <http: //sadiframework.org/ontologies/predicates.owl#> dumontier: <http://ontology.dumontierlab.com/> kegg: <http://lsrn.org/KEGG_PATHWAY:> ?gene ?protein ?seq PREFIX PREFIX PREFIX SELECT WHERE { kegg:hsa00232 dumontier:hasParticipant ?gene . ?gene sadi:encodes ?protein . ?protein sadi:hasSequence ?seq } Service Service Servic e Similar to “Federated Queries”… but are actually Web Service Workflows
  • 93. 2.2.3 Requirements for SADI compliance ● Identified by an HTTP URL ○ used to identify the service ■ (service URI) ○ used to invoke the service ■ (service URL) http://sadiframework.org/examples/hello
  • 94. 2.2.3 Requirements for SADI compliance •Responds to HTTP GET with service interface def. •RDF document •Service definition instance identified by service URI •(see §2.3.1 for specifics) •Indicates input OWL class and output OWL class • (among other things) http://sadiframework.org/examples/hello
  • 95. http://sadiframework.org/examples/hello input OWL class is http://sadiframework.org/examples/hello.owl#NamedIndividual output OWL class is http://sadiframework.org/examples/hello.owl#GreetedIndividual 2.2.3 Requirements for SADI compliance
  • 96. 2.2.3 Requirements for SADI compliance ● Responds to HTTP POST by invoking service ○ input is an RDF document ■ contains input OWL class instances ○ output is an RDF document ■ contains output OWL class instances ● one for each input instance ● Input/output instance share same URI http://sadiframework.org/examples/hello
  • 97. http://sadiframework.org/examples/hello input: @prefix hello: <http://sadiframework.org/examples/hello.owl#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ; foaf:name "Guy Incognito" . output: @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ; hello:greeting "Hello, Guy Incognito!" . 2.2.3 Requirements for SADI compliance
  • 98. 2.2.3 Requirements for SADI compliance ● Indicates error with appropriate HTTP status ○ usually 500 Internal Service Error ○ may return RDF describing the error
  • 99. 2.2.4 Calling a SADI service 1. Client sends POST request to service URL ● POST body is an RDF document ○ contains input OWL class instances ○ input serialization specified in Content-type HTTP header application/rdf+xml text/rdf+n3 ○ output serialization requested in Accept HTTP header
  • 100. POST /examples/hello HTTP/1.1 Host: sadiframework.org Content-type: text/rdf+n3 Accept: text/rdf+n3 @prefix hello: <http://sadiframework.org/examples/hello.owl#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ; foaf:name "Guy Incognito" . 2.2.4 Calling a SADI service
  • 101. POST /examples/hello HTTP/1.1 Host: sadiframework.org Content-type: text/rdf+n3 Accept: text/rdf+n3 @prefix hello: <http://sadiframework.org/examples/hello.owl#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ; foaf:name "Guy Incognito" . 2.2.4 Calling a SADI service Note that there is NO special message structure! This is not like SOAP!
  • 102. 2.2.4 Calling a SADI service 2. Service responds with output ● response body is an RDF document ○ contains output OWL class instances ● serialization specified in ○ Content-type HTTP header application/rdf+xml text/rdf+n3
  • 103. HTTP/1.1 200 OK Content-type: text/rdf+n3 @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ; hello:greeting "Hello, Guy Incognito!" . 2.2.4 Calling a SADI service
  • 104. 2.2.5 Advanced SADI features 5. Advanced SADI features a. Asynchronous SADI services b. Parameterized SADI services
  • 105. 2.2.5.a Asynchronous SADI services ● Problem ○ HTTP timeout if a service takes too long to respond ● Solution ○ service returns stub immediately; client polls for complete response
  • 106. 2.2.5.a Asynchronous SADI services 1. Client sends POST request to service URL ● POST body is an RDF document ○ contains input OWL class instances ● input serialization specified in Content-type HTTP header application/rdf+xml text/rdf+n3 ● output serialization requested in Accept HTTP header (Exactly the same as before….)
  • 107. POST /examples/hello HTTP/1.1 Host: sadiframework.org Content-type: text/rdf+n3 Accept: text/rdf+n3 @prefix hello: <http://sadiframework.org/examples/hello.owl#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:NamedIndividual ; foaf:name "Guy Incognito" . 2.2.5.a Asynchronous SADI services
  • 108. 2.2.5.a Asynchronous SADI services 2. Service responds with stub ● HTTP response code is: 202 Accepted but incomplete ● response body is an RDF document contains output OWL class instances composed of rdfs: isDefinedBy statements ● serialization specified in: Content-type HTTP header application/rdf+xml, text/rdf+n3, etc
  • 109. HTTP/1.1 202 Accepted Content-type: text/rdf+n3 @prefix hello: <http://sadiframework.org/examples/hello.owl#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ; rdfs:isDefinedBy <http://sadiframework.org/examples/hello?poll=1> . 2.2.5.a Asynchronous SADI services
  • 110. 2.2.5.a Asynchronous SADI services 3. Client fetches asynchronous data ● fetch the object URL of each rdfs:isDefinedBy statement GET /examples/hello?poll=1 HTTP/1.1 Host: sadiframework.org
  • 111. 2.2.5.a Asynchronous SADI services 4. Until output is ready ● service sends an HTTP 302 redirect Retry-after HTTP header suggests how long the client should wait (in seconds) HTTP/1.1 302 Moved Temporarily Retry-After: 30 Location: http://sadiframework.org/examples/hello?poll=1
  • 112. 2.2.5.a Asynchronous SADI services 5. Client follows redirect ● after waiting as suggested by Retry-after HTTP header GET /examples/hello?poll=1 HTTP/1.1 Host: sadiframework.org
  • 113. 2.2.5.a Asynchronous SADI services 6. When output is ready ● response body is an RDF document should be combined with original response HTTP/1.1 200 OK Content-type: text/rdf+n3 @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ; hello:greeting "Hello, Guy Incognito!" .
  • 114. 2.2.6 The SADI registry ● clients need to find SADI services ○ ideally just search the Web for instances of the SADI service description class ■ current technology isn’t quite there ● use the SADI registry ○ SPARQL endpoint, Java and REST APIs ○ anyone can register a service ○ services are indexed by the properties they attach
  • 115. 2.2.6 The SADI registry SADI registry http://sadiframework.org/registry/ SPARQL endpoint http://sadiframework.org/registry/sparql REST API http://sadiframework.org/registry/api/
  • 116. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes
  • 117. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes Remember the OWL2 presentation yesterday by Frédéric Bestian… The dangers of OWL reasoning!
  • 118. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes Human equivalent to (leg minimum cardinality 2) → you not human if you lose a leg
  • 119. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes Do SADI Services suffer this problem?
  • 120. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes Do SADI Services suffer this problem? NO! We are not trying to “understand” the world!
  • 121. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes Do SADI Services suffer this problem? NO! We are only trying to discover acceptable input
  • 122. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes If my analysis requires that you have 2 legs and you have only one leg... YOU ARE NOT A CANDIDATE FOR MY ANALYSIS. PERIOD.
  • 123. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes If my analysis requires that you have 2 legs and you have only one leg... ...my service isn’t interested in whether or not you are human… it only wants your legs!
  • 124.
  • 125. 2.4.1 Exercise Create a SADI service that takes height and weight as input and attaches BMI.
  • 126. SADI Services in Perl The Perl module in CPAN is: SADI::Simple Example Service Code: https://docs.google.com/document/d/1HrFNxG2-eZhiaCaBjNLcAtHPY_-MLCw9BwFmnw4BHKQ/edit?usp=sharing Example Data and other information: https://docs.google.com/document/d/1DdWux6w3RzMGexFHf9roRuJnCiDaxWJScECK4POg6RQ/edit?usp=sharing