SlideShare ist ein Scribd-Unternehmen logo
1 von 90
http:// sadiframework.org/training/
SADI
Semantic Web Services
London, UK
8 December 8 2011
SADI Semantic Web Services
Instructor: Luke McCarthy
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 Introduction to Semantic Web Services
1. Introduction to Semantic Web Services
1. Standards for web services
2. Bioinformatics web services
3. Motivation for SADI
2.1.1 Standards for Web Services
 WSDL
 SOAP
 UDDI
 SAWSDL
 OWL-S
2.1.2 Bioinformatics Web Services
 tend to be simpler than the
general web service case
mostly stateless, atomic
(excepting asynchronous operation)
data-centric
retrieval
analysis
2.1.2 Bioinformatics Web Services
 tend to ignore existing standards
for semantic web services
OWL-S
SAWSDL
2.1.2 Bioinformatics Web Services
 tend lately to reject even basic
standards for web services
SOAP
(in favour of “RESTful services”)
UDDI
(in favour of BioMoby, BioCatalogue, etc.)
2.1.3 Motivation for SADI
existing standards are too complicated
too much work for not enough gain
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
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
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
2.2.2 Why use SADI services?
Input
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
Patient
#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
BMI
25.9
2.2.2 Why use SADI services?
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
Service
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 definition
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
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
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 an 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 requestto
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
2.2.4 Calling a SADI service
2. Service responds withoutput
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 time out 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 requestto
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.5.a Asynchronous SADI services
2.2.5.a Asynchronous SADI services
2. Service responds withstub
response code is
202 Acceptedbut incomplete
response body is an RDF document
contains output OWL class instances
contains rdfs:isDefinedBy statements
serialization specified in
Content-type HTTP header
application/rdf+xml
text/rdf+n3
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 asynchronousdata
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 isready
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 followsredirect
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 isready
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.5.b Parameterized SADI Services
 Problem
service has secondary parameters
that are not part of the input data
e.g. BLAST service: substitution matrix,
number of results to return, etc.
 Solution
service specifies a
parameter OWL class
client sends an instance of that class
along with the input instances
2.2.5.b Parameterized SADI Services
http://sadiframework.org/examples/hello-param
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" .
[] a hello:SecondaryParameters ;
hello:lang "fr" .
output:
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello-input.rdf#1>
a hello:GreetedIndividual ;
hello:greeting "Bonjour, Guy Incognito!" .
2.2.5.b Parameterized SADI Services
http://sadiframework.org/examples/hello-param
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" .
[] a hello:SecondaryParameters ;
hello:lang "es" .
output:
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello-input.rdf#1>
a hello:GreetedIndividual ;
hello:greeting "Hola, 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 RESTAPIs
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 SADI Service Ontologies
3. SADI Service Ontologies
1. Service definition
2. Input and output OWL classes
2.3.1 Service Definition
 name
 description
 contact email address
 authoritative status
 input OWL class
 output OWL class
 parameter
OWL class
 test cases
2.3.1 Service Definition
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specified in a
parameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:providedBy
[ a mygrid:organisation ;
dc:creator mccarthy@elmonline.ca ;
mygrid:authoritative
"false"^^<http://www.w3.org/2001/XMLSchema#boolean>
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
] ;
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
]
] .
2.3.1 Service Definition
Name
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specified in a
parameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:providedBy
[ a mygrid:organisation ;
dc:creator mccarthy@elmonline.ca ;
mygrid:authoritative
"false"^^<http://www.w3.org/2001/XMLSchema#boolean>
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
] ;
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
]
] .
2.3.1 Service Definition
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specifi
Ded
esi
cn
ra
iptparameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
ion
mygrid:providedBy
[ a mygrid:organisation ;
dc:creator mccarthy@elmonline.ca ;
mygrid:authoritative
"false"^^<http://www.w3.org/2001/XMLSchema#boolean>
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
] ;
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
]
] .
2.3.1 Service Definition
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specified in a
parameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:providedBy
[ a mygrid:organisation ;
Contact email addrdc:creator mccarthy@elmonline.ca ;
ess
mygrid:authoritative
"false"^^<http://www.w3.org/2001/XMLSchema#boolean>
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
] ;
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
]
] .
2.3.1 Service Definition
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specified in a
parameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:providedBy
[ a mygrid:organisation ;
dc:creator mccarthy@elmonline.ca ;
mygrid:authoritative
Authorita
t "false"^^<http://www.w3.org/2001/XMLSchema#boolean>
ive
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
] ;
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
]
] .
2.3.1 Service Definition
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specified in a
parameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:providedBy
[ a mygrid:organisation ;
dc:creator mccarthy@elmonline.ca ;
mygrid:authoritative
"false"^^<http://www.w3.org/2001/XMLSchema#boolean>
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
Input OWL cl] ; ass
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
]
] .
2.3.1 Service Definition
@prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> .
@prefix hello: <http://sadiframework.org/examples/hello.owl#> .
<http://sadiframework.org/examples/hello>
a mygrid:serviceDescription ;
mygrid:hasServiceNameText
"ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:hasServiceDescriptionText
"A "Hello, world!" service where the output language is specified in a
parameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
mygrid:providedBy
[ a mygrid:organisation ;
dc:creator mccarthy@elmonline.ca ;
mygrid:authoritative
"false"^^<http://www.w3.org/2001/XMLSchema#boolean>
] .
mygrid:hasOperation
[ a mygrid:operation ;
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:SecondaryParameters
] ;
mygrid:outputParameter
[ a mygrid:parameter ;
mygrid:objectType hello:GreetedIndividual
Output OWL cl] ass
] .
2.3.1 Service Definition
<http://sadiframework.org/examples/hello-param>
...
mygrid:hasOperation
[ a mygrid:operation ;
...
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:ParameterClass
mygrid:hasDefaultValue
[ a hello:ParameterClass ;
hello:lang “en”
]
] .
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput
[ a hello:InputClass ;
foaf:name “Guy Incognito”
] .
mygrid:exampleOutput
[ a hello:OutputClass ;
hello:greeting “Hello, Guy Incognito!”
] .
] .
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput test:hello-param-input.rdf ;
mygrid:exampleOutput test:hello-param-output.rdf
]
]
2.3.1 Service Definition
Parameter OWL class
<http://sadiframework.org/examples/hello-param>
...
mygrid:hasOperation
[ a mygrid:operation ;
...
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:ParameterClass
mygrid:hasDefaultValue
[ a hello:ParameterClass ;
hello:lang “en”
]
] .
Incognito!”
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput
[ a hello:InputClass ;
foaf:name “Guy Incognito”
] .
mygrid:exampleOutput
[ a hello:OutputClass ;
hello:greeting “Hello, Guy
] .
] .
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput test:hello-param-input.rdf ;
mygrid:exampleOutput test:hello-param-output.rdf
]
]
2.3.1 Service Definition
Test case
<http://sadiframework.org/examples/hello-param>
...
mygrid:hasOperation
[ a mygrid:operation ;
...
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:ParameterClass
mygrid:hasDefaultValue
[ a hello:ParameterClass ;
hello:lang “en”
]
] .
Incognito!”
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput
[ a hello:InputClass ;
foaf:name “Guy Incognito”
] .
mygrid:exampleOutput
[ a hello:OutputClass ;
hello:greeting “Hello, Guy
] .
] .
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput test:hello-param-input.rdf ;
mygrid:exampleOutput test:hello-param-output.rdf
]
]
2.3.1 Service Definition
Test case
<http://sadiframework.org/examples/hello-param>
...
mygrid:hasOperation
[ a mygrid:operation ;
...
mygrid:inputParameter
[ a mygrid:secondaryParameter ;
mygrid:objectType hello:ParameterClass
mygrid:hasDefaultValue
[ a hello:ParameterClass ;
hello:lang “en”
]
] .
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput
[ a hello:InputClass ;
foaf:name “Guy Incognito”
] .
mygrid:exampleOutput
[ a hello:OutputClass ;
hello:greeting “Hello, Guy Incognito!”
] .
] .
mygrid:hasUnitTest
[ a mygrid:testCase ;
mygrid:exampleInput test:hello-param-input.rdf ;
mygrid:exampleOutput test:hello-param-output.rdf
]
]
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.a Input OWL classes
 property restrictions describe data
consumed by the service
 all property restrictions must be
satisfied by each input instance
optional properties can be indicated by
minimum cardinality of 0
2.3.2.a Input OWL classes
 instances should be dynamically
identifiable
use necessary and sufficient conditions
avoid universal and exact/maximum
cardinality restrictions
2.3.2.a Input OWL classes
necessary and sufficient
http://sadiframework.org/examples/hello.owl#InputClass
Manchester OWL syntax:
Class: hello:NamedIndividual
EquivalentTo:
foaf:name min 1 rdfs:Literal
RDF/XML syntax:
<owl:Class rdf:about="&hello;NamedIndividual">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="&foaf;name"/>
<owl:minCardinality rdf:datatype="&xsd;integer">1</owl:minCardinality>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
2.3.2.a Input OWL classes
exact cardinality
http://sadiframework.org/examples/hello.owl#BadInputClass
Manchester OWL syntax:
Class: hello:NamedIndividual
EquivalentTo:
foaf:name exactly 1 rdfs:Literal
RDF/XML syntax:
<owl:Class rdf:about="&hello;NamedIndividual">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="&foaf;name"/>
<owl:cardinality rdf:datatype="&xsd;integer">1</owl:cardinality>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
2.3.2.a Input OWL classes
exact cardinality
http://sadiframework.org/examples/hello.owl#BadInputClass
Manchester OWL syntax:
Class: hello:NamedIndividual
EquivalentTo:
foaf:name exactly 1 rdfs:Literal
RDF/XML syntax:
<owl:Class rdf:about="&hello;NamedIndividual">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="&foaf;name"/>
<owl:cardinality rdf:datatype="&xsd;integer">1</owl:cardinality>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
2.3.2.a Input OWL classes
existential
http://purl.org/SADI/LSRN/UniProt_Record
Manchester OWL syntax:
Class: lsrn:UniProt_Record
EquivalentTo:
sio:SIO_000008 some lsrn:UniProt_Identifier
RDF/XML syntax:
<owl:Class rdf:about="UniProt_Record">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="&sio;SIO_000008"/>
<owl:someValuesFrom rdf:resource="&lsrn;UniProt_Identifier"/>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
2.3.2.a Input OWL classes
universal
http://purl.org/SADI/LSRN/Bad_UniProt_Record
Manchester OWL syntax:
Class: lsrn:Bad_UniProt_Record
EquivalentTo:
sio:SIO_000008 only lsrn:UniProt_Identifier
RDF/XML syntax:
<owl:Class rdf:about="UniProt_Record">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="&sio;SIO_000008"/>
<owl:allValuesFrom rdf:resource="&lsrn;UniProt_Identifier"/>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
2.3.2.a Input OWL classes
universal
http://purl.org/SADI/LSRN/Bad_UniProt_Record
Manchester OWL syntax:
Class: lsrn:Bad_UniProt_Record
EquivalentTo:
sio:SIO_000008 only lsrn:UniProt_Identifier
RDF/XML syntax:
<owl:Class rdf:about="UniProt_Record">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="&sio;SIO_000008"/>
<owl:allValuesFrom rdf:resource="&lsrn;UniProt_Identifier"/>
</owl:equivalentClass>
</owl:Class>
</owl:Restriction>
2.3.2.a Input OWL classes
necessary and sufficient
(multiple properties)
http://sadiframework.org/examples/regression.owl#DatedValue
Manchester OWL syntax:
Class: regress:DatedValue
EquivalentTo:
(dc:date some xsd:date) and
(rdf:value some xsd:double)
RDF/XML syntax:
<owl:Class rdf:about="&regression;DatedValue">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="&dc;date"/>
<owl:someValuesFrom rdf:resource="&xsd;date"/>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="&rdf;value"/>
<owl:someValuesFrom rdf:resource="&xsd;double"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
2.3.2.a Input OWL classes
required property
(min cardinality 1)
http://sadiframework.org/ontologies/samples.owl#InputClass
Manchester OWL syntax:
Class: sample:InputClass
EquivalentTo:
(sample:required min 1 owl:Thing) and
(sample:optional min 0 owl:Thing)
RDF/XML syntax:
<owl:Class rdf:about="#InputClass">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="#required"/>
<owl:minCardinality rdf:datatype="&xsd;integer">1</owl:minCardinality>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="#optional"/>
<owl:minCardinality rdf:datatype="&xsd;integer">0</owl:minCardinality>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
2.3.2.a Input OWL classes
optional property
(min cardinality 0)
http://sadiframework.org/ontologies/samples.owl#InputClass
Manchester OWL syntax:
Class: sample:InputClass
EquivalentTo:
(sample:required min 1 owl:Thing) and
(sample:optional min 0 owl:Thing)
RDF/XML syntax:
<owl:Class rdf:about="#InputClass">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="#required"/>
<owl:minCardinality rdf:datatype="&xsd;integer">1</owl:minCardinality>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="#optional"/>
<owl:minCardinality rdf:datatype="&xsd;integer">0</owl:minCardinality>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
2.3.2.b Output OWL classes
 property restrictions describe data
produced by the service
 range of attached data should be
indicated on the property restriction
so clients can discriminate between
services that attach the same properties
2.3.2.b Output OWL classes
 instances don’t have to be dynamically
identifiable
no harm if they are
may be preferred for consistency with
input OWL class
2.3.2.b Output OWL classes
necessary
but not sufficient
http://sadiframework.org/examples/keggPathway2Gene.owl#OutputClass
Manchester OWL syntax:
Class: OutputClass
SubClassOf:
sadi:hasParticipant some lsrn:KEGG
RDF/XML syntax:
<owl:Class rdf:about="#OutputClass">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&sadi;hasParticipant"/>
<owl:someValuesFrom rdf:resource="&lsrn;KEGG"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
2.3.2.b Output OWL classes
ranged restriction
(KEGG genes)
some lsrn:KEGG
http://sadiframework.org/examples/keggPathway2Gene.owl#OutputClass
Manchester OWL syntax:
Class: OutputClass
SubClassOf:
sadi:hasParticipant
RDF/XML syntax:
<owl:Class rdf:about="#OutputClass">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&sadi;hasParticipant"/>
<owl:someValuesFrom rdf:resource="&lsrn;KEGG"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
2.3.2.b Output OWL classes
ranged restriction
(KEGG compounds)
some lsrn:KEGG_Compound
http://sadiframework.org/examples/keggPathway2Compound.owl#OutputClass
Manchester OWL syntax:
Class: OutputClass
SubClassOf:
sadi:hasParticipant
RDF/XML syntax:
<owl:Class rdf:about="#OutputClass">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&sadi;hasParticipant"/>
<owl:someValuesFrom rdf:resource="&lsrn;KEGG_Compound"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
2.4 SADI Service Generator
2.4 SADI Service Generator
2.4.1 Exercise
2.4.1 Exercise
Create a SADI service that takes
height and weight as input
and attaches BMI.
2.4.1 Exercise
 Create input and output OWL classes
Protégé
 Generate SADI service skeleton
SADI Protégé plugin
generate Java or Perl code
 Add service logic
Eclipse + Maven plugin (for Java code)
your favourite editor (for Perl code)
 Validate and register service
2.5 SADI and SAWSDL
5. SADI and SAWSDL
1. Introduction to SAWSDL
2. Using SAWSDL with SADI
2.5.1 Introduction to SAWSDL
 Semantic Annotations for WSDL
annotations for input, output, operation
elements of WSDL
sawsdl:modelReference attribute maps
WSDL element to ontology element
sawsdl:loweringSchemaMapping maps
RDF to XML (for input)
sawsdl:liftingSchemaMapping maps
XML to RDF (for output)
2.5.1 Introduction to SAWSDL
 lifting schema
“lifts” non-semantic XML
into semantic output
standard imposes no requirements
W3C suggests XSLT
2.5.1 Introduction to SAWSDL
 lowering schema
“lowers” semantic input into
non-semantic XML
standard imposes no requirements
XSLT is insufficient
(RDF > XML)
W3C suggests SPARQL + XSLT
(styled SPARQL results XML)
2.5.1 Introduction to SAWSDL
<hello:NamedIndividual rdf:about="#Guy">
<foaf:name>Guy Incognito</foaf:name>
<foaf:knows>
<hello:NamedIndividual rdf:about="#JoeyJoJo"/>
<foaf:name>Joey Jo-Jo Jr. Shabadoo</foaf:name>
</foaf:knows>
</hello:NamedIndividual>
<rdf:Description rdf:about="#Guy">
<rdf:type rdf:resource="#NamedIndividual"/>
<foaf:name>Guy Incognito</foaf:name>
<foaf:knows rdf:resource="#JoeyJoJo"/>
</rdf:Description>
<rdf:Description rdf:about="#JoeyJoJo">
<rdf:type rdf:resource="#NamedIndividual"/>
<foaf:name>Joey Jo-Jo Jr. Shabadoo</foaf:name>
</rdf:Description>
RDF > XML
...
Virtual SADI service
Lowering Schema Lifting Schema
CardioSHARE is a
unique frame- work
for querying
distributed data and
performing data
analysis using
Semantic Web
standards.
CardioSHARE's two
main innova- tions
are an enhancement
to a standard SPARQL
query engine, which
enables the required
data to be retrieved
dynamically from
Web Services; and
the ability to use OWL
class restrictions to
drive the discovery
and execution of Web
Services capable of
generating that
class' defining
properties, thus
allowing naiive data
to be "lifted" into
more complex OWL
classifica- tions.
SADI Client
WSDL Service
RDF input
XML input
RDF output
XML output
2.5.2 Using SAWSDL with SADI
2.5.2 Using SAWSDL with SADI
 SADI lifting schema options
XSLT
XPath + RDFPath
...
 SADI lowering schema options
SPARQL + XSLT
SPARQL + Velocity
...
2.5.2 Using SAWSDL with SADI
 SADI SAWSDL generator
generate SAWSDL from existing
WSDL service
automatically generate SADI interface,
including input/output OWL classes and
a SADI-compliant service endpoint
2.5.2 Using SAWSDL with SADI
 Manual SAWSDL generation
modelReferences are SADI-compliant
input and output OWL classes
lifting and lowering schemata are
valid SADI options
register SAWSDL as a virtual SADI
service
(no SADI-compliant service endpoint;
service is only accessible through client API)
2.6 SADI Clients
6. SADI Clients
1. SADI client API
2. SHARE query client
3. SADI Taverna plugin
2.6.1 SADI client API
 Java library
(available via Maven)
 Find services
by attached properties
by input data
 Invoke services
 Semantic utility functions
2.6.2 SHARE query client
 Database-free SPARQL queries
 Web-based client
SPARQL-assist query composer
 Command-line client
Java-based
(executable JAR)
platform-agnostic
2.6.3 SADI Taverna plugin
 Adding SADI services to a workflow
integration with non-SADI services
 Configuring SADI services
combining input from multiple services
extracting output
 Discovering SADI services
expanding an existing workflow
http:// sadiframework.org/training/
Thank you !
SADI Semantic Web Services
Instructor: Luke McCarthy

Weitere ähnliche Inhalte

Was ist angesagt?

Common Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBACommon Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBAPeter R. Egli
 
Networked APIs with swift
Networked APIs with swiftNetworked APIs with swift
Networked APIs with swiftTim Burks
 
Java interview questions
Java interview questionsJava interview questions
Java interview questionsSoba Arjun
 
Chapter10
Chapter10Chapter10
Chapter10lopjuan
 
Java interview-questions-and-answers
Java interview-questions-and-answersJava interview-questions-and-answers
Java interview-questions-and-answersbestonlinetrainers
 
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS EngineZongXian Shen
 
Hibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jHibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jSatya Johnny
 

Was ist angesagt? (9)

Common Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBACommon Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBA
 
Chapter 17 corba
Chapter 17 corbaChapter 17 corba
Chapter 17 corba
 
Networked APIs with swift
Networked APIs with swiftNetworked APIs with swift
Networked APIs with swift
 
Java interview questions
Java interview questionsJava interview questions
Java interview questions
 
Chapter10
Chapter10Chapter10
Chapter10
 
Hibernate3 q&a
Hibernate3 q&aHibernate3 q&a
Hibernate3 q&a
 
Java interview-questions-and-answers
Java interview-questions-and-answersJava interview-questions-and-answers
Java interview-questions-and-answers
 
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
 
Hibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jHibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_j
 

Andere mochten auch

Sport TragikomičNo
Sport TragikomičNoSport TragikomičNo
Sport TragikomičNoStelarosa .
 
Hollow - Recovering from Eating Disorders
Hollow - Recovering from Eating DisordersHollow - Recovering from Eating Disorders
Hollow - Recovering from Eating Disorderspyromarketing
 
Cip presentation 8.2010
Cip presentation 8.2010Cip presentation 8.2010
Cip presentation 8.2010librarygrl3
 
Writing In The Sand
Writing In The SandWriting In The Sand
Writing In The Sandguest115647c
 
D6D Portfolio
D6D PortfolioD6D Portfolio
D6D Portfoliobethleo
 
Post-It Girl
Post-It GirlPost-It Girl
Post-It GirlLitWorld
 
New Media Presentation
New Media PresentationNew Media Presentation
New Media Presentationgaskinjo
 
What Is Literary Criticism[1]2
What Is Literary Criticism[1]2What Is Literary Criticism[1]2
What Is Literary Criticism[1]2makeefer
 
What Is Literary Criticism[1]2
What Is Literary Criticism[1]2What Is Literary Criticism[1]2
What Is Literary Criticism[1]2makeefer
 
AOA_Report_TrapX_AnatomyOfAttack-Healthcare
AOA_Report_TrapX_AnatomyOfAttack-HealthcareAOA_Report_TrapX_AnatomyOfAttack-Healthcare
AOA_Report_TrapX_AnatomyOfAttack-HealthcareTony Zirnoon, CISSP
 
VC_flier_HYD.compressed
VC_flier_HYD.compressedVC_flier_HYD.compressed
VC_flier_HYD.compressedSuneel Sharma
 
Crew, Foia, Documents 008692 - 008793
Crew, Foia, Documents 008692 - 008793Crew, Foia, Documents 008692 - 008793
Crew, Foia, Documents 008692 - 008793Obama White House
 
Chase Oaks VBX - Tuesday - The Trials Of The Journey
Chase Oaks VBX - Tuesday - The  Trials Of The JourneyChase Oaks VBX - Tuesday - The  Trials Of The Journey
Chase Oaks VBX - Tuesday - The Trials Of The JourneyJason Loveless
 
Towards An Integrated Ecosystem Based Management
Towards An Integrated Ecosystem Based ManagementTowards An Integrated Ecosystem Based Management
Towards An Integrated Ecosystem Based ManagementUniversity of Tasmania
 
PresentacióN.Ppt
PresentacióN.PptPresentacióN.Ppt
PresentacióN.Pptguest772b1f
 
How A Web Page Is Seen
How A Web Page Is SeenHow A Web Page Is Seen
How A Web Page Is Seenbwebster719
 

Andere mochten auch (20)

Sport TragikomičNo
Sport TragikomičNoSport TragikomičNo
Sport TragikomičNo
 
Hollow - Recovering from Eating Disorders
Hollow - Recovering from Eating DisordersHollow - Recovering from Eating Disorders
Hollow - Recovering from Eating Disorders
 
Alfresco企业内容管理标准方案
Alfresco企业内容管理标准方案Alfresco企业内容管理标准方案
Alfresco企业内容管理标准方案
 
About Thrift
About ThriftAbout Thrift
About Thrift
 
Cip presentation 8.2010
Cip presentation 8.2010Cip presentation 8.2010
Cip presentation 8.2010
 
Writing In The Sand
Writing In The SandWriting In The Sand
Writing In The Sand
 
D6D Portfolio
D6D PortfolioD6D Portfolio
D6D Portfolio
 
Post-It Girl
Post-It GirlPost-It Girl
Post-It Girl
 
New Media Presentation
New Media PresentationNew Media Presentation
New Media Presentation
 
What Is Literary Criticism[1]2
What Is Literary Criticism[1]2What Is Literary Criticism[1]2
What Is Literary Criticism[1]2
 
What Is Literary Criticism[1]2
What Is Literary Criticism[1]2What Is Literary Criticism[1]2
What Is Literary Criticism[1]2
 
AOA_Report_TrapX_AnatomyOfAttack-Healthcare
AOA_Report_TrapX_AnatomyOfAttack-HealthcareAOA_Report_TrapX_AnatomyOfAttack-Healthcare
AOA_Report_TrapX_AnatomyOfAttack-Healthcare
 
Thrift
ThriftThrift
Thrift
 
VC_flier_HYD.compressed
VC_flier_HYD.compressedVC_flier_HYD.compressed
VC_flier_HYD.compressed
 
Crew, Foia, Documents 008692 - 008793
Crew, Foia, Documents 008692 - 008793Crew, Foia, Documents 008692 - 008793
Crew, Foia, Documents 008692 - 008793
 
Chase Oaks VBX - Tuesday - The Trials Of The Journey
Chase Oaks VBX - Tuesday - The  Trials Of The JourneyChase Oaks VBX - Tuesday - The  Trials Of The Journey
Chase Oaks VBX - Tuesday - The Trials Of The Journey
 
Towards An Integrated Ecosystem Based Management
Towards An Integrated Ecosystem Based ManagementTowards An Integrated Ecosystem Based Management
Towards An Integrated Ecosystem Based Management
 
PresentacióN.Ppt
PresentacióN.PptPresentacióN.Ppt
PresentacióN.Ppt
 
CAS N° 003 2015
CAS N° 003 2015CAS N° 003 2015
CAS N° 003 2015
 
How A Web Page Is Seen
How A Web Page Is SeenHow A Web Page Is Seen
How A Web Page Is Seen
 

Ähnlich wie Tutorial - Creating SADI semantic-web-services

Ähnlich wie Tutorial - Creating SADI semantic-web-services (20)

WSDL 2.0 and Apache Woden
WSDL 2.0 and Apache WodenWSDL 2.0 and Apache Woden
WSDL 2.0 and Apache Woden
 
SOAP WEB TECHNOLOGIES
SOAP WEB TECHNOLOGIESSOAP WEB TECHNOLOGIES
SOAP WEB TECHNOLOGIES
 
Web services overview
Web services overviewWeb services overview
Web services overview
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)
 
Topic6 Basic Web Services Technology
Topic6 Basic Web Services TechnologyTopic6 Basic Web Services Technology
Topic6 Basic Web Services Technology
 
Topic6 Basic Web Services Technology
Topic6 Basic Web Services TechnologyTopic6 Basic Web Services Technology
Topic6 Basic Web Services Technology
 
Rest web service
Rest web serviceRest web service
Rest web service
 
Kotlin server side frameworks
Kotlin server side frameworksKotlin server side frameworks
Kotlin server side frameworks
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)
 
Soa With Ruby
Soa With RubySoa With Ruby
Soa With Ruby
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Jax ws
Jax wsJax ws
Jax ws
 
Xml.ppt
Xml.pptXml.ppt
Xml.ppt
 
Top school in gurgaon
Top school in gurgaonTop school in gurgaon
Top school in gurgaon
 
Introducing SOA and Oracle SOA Suite 11g for Database Professionals
Introducing SOA and Oracle SOA Suite 11g for Database ProfessionalsIntroducing SOA and Oracle SOA Suite 11g for Database Professionals
Introducing SOA and Oracle SOA Suite 11g for Database Professionals
 
Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2Interoperability Fundamentals: SWORD 2
Interoperability Fundamentals: SWORD 2
 
Overview of java web services
Overview of java web servicesOverview of java web services
Overview of java web services
 
Web services101
Web services101Web services101
Web services101
 
Nano
NanoNano
Nano
 
Web services
Web servicesWeb services
Web services
 

Mehr von Mark Wilkinson

FAIR Metrics - Presentation to NIH KC1
FAIR Metrics - Presentation to NIH KC1FAIR Metrics - Presentation to NIH KC1
FAIR Metrics - Presentation to NIH KC1Mark Wilkinson
 
Introducing the fair evaluator
Introducing the fair evaluatorIntroducing the fair evaluator
Introducing the fair evaluatorMark Wilkinson
 
FAIR Projector Builder
FAIR Projector BuilderFAIR Projector Builder
FAIR Projector BuilderMark Wilkinson
 
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...Mark Wilkinson
 
smartAPIs: EUDAT Semantic Working Group Presentation @ RDA 9th Plenary
smartAPIs:  EUDAT Semantic Working Group Presentation @ RDA 9th PlenarysmartAPIs:  EUDAT Semantic Working Group Presentation @ RDA 9th Plenary
smartAPIs: EUDAT Semantic Working Group Presentation @ RDA 9th PlenaryMark Wilkinson
 
IBC FAIR Data Prototype Implementation slideshow
IBC FAIR Data Prototype Implementation   slideshowIBC FAIR Data Prototype Implementation   slideshow
IBC FAIR Data Prototype Implementation slideshowMark Wilkinson
 
FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...
FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...
FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...Mark Wilkinson
 
Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015
Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015
Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015Mark Wilkinson
 
Sample data and other ur ls
Sample data and other ur lsSample data and other ur ls
Sample data and other ur lsMark Wilkinson
 
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 ServiceMark Wilkinson
 
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, 2015Mark Wilkinson
 
Force11 JDDCP workshop presentation, @ Force2015, Oxford
Force11 JDDCP workshop presentation, @ Force2015, OxfordForce11 JDDCP workshop presentation, @ Force2015, Oxford
Force11 JDDCP workshop presentation, @ Force2015, OxfordMark Wilkinson
 
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. 2014Mark Wilkinson
 
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...Mark Wilkinson
 
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 scienceMark Wilkinson
 
Web Science - ISoLA 2012
Web Science - ISoLA 2012Web Science - ISoLA 2012
Web Science - ISoLA 2012Mark Wilkinson
 
Web Science, SADI, and the Singularity
Web Science, SADI, and the SingularityWeb Science, SADI, and the Singularity
Web Science, SADI, and the SingularityMark Wilkinson
 
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...Mark Wilkinson
 

Mehr von 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...
 
smartAPIs: EUDAT Semantic Working Group Presentation @ RDA 9th Plenary
smartAPIs:  EUDAT Semantic Working Group Presentation @ RDA 9th PlenarysmartAPIs:  EUDAT Semantic Working Group Presentation @ RDA 9th Plenary
smartAPIs: EUDAT Semantic Working Group Presentation @ RDA 9th Plenary
 
IBC FAIR Data Prototype Implementation slideshow
IBC FAIR Data Prototype Implementation   slideshowIBC FAIR Data Prototype Implementation   slideshow
IBC FAIR Data Prototype Implementation slideshow
 
FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...
FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...
FAIR Data Prototype - Interoperability and FAIRness through a novel combinati...
 
Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015
Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015
Building SADI Services Tutorial - SIB Workshop, Geneva, December 2015
 
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
 
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
 
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...
 
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...
 

Kürzlich hochgeladen

💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋nirzagarg
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfJOHNBEBONYAP1
 
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 GIRLimonikaupta
 
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...SUHANI PANDEY
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...SUHANI PANDEY
 
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...nilamkumrai
 
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋nirzagarg
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...roncy bisnoi
 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...tanu pandey
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdfMatthew Sinclair
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftAanSulistiyo
 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...SUHANI PANDEY
 
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 AvailableSeo
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdfMatthew Sinclair
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)Delhi Call girls
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC
 

Kürzlich hochgeladen (20)

💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
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
 
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...
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
 
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
 
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
 
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
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 

Tutorial - Creating SADI semantic-web-services

  • 1. http:// sadiframework.org/training/ SADI Semantic Web Services London, UK 8 December 8 2011 SADI Semantic Web Services Instructor: Luke McCarthy
  • 2. 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
  • 3. 2.1 Introduction to Semantic Web Services 1. Introduction to Semantic Web Services 1. Standards for web services 2. Bioinformatics web services 3. Motivation for SADI
  • 4. 2.1.1 Standards for Web Services  WSDL  SOAP  UDDI  SAWSDL  OWL-S
  • 5. 2.1.2 Bioinformatics Web Services  tend to be simpler than the general web service case mostly stateless, atomic (excepting asynchronous operation) data-centric retrieval analysis
  • 6. 2.1.2 Bioinformatics Web Services  tend to ignore existing standards for semantic web services OWL-S SAWSDL
  • 7. 2.1.2 Bioinformatics Web Services  tend lately to reject even basic standards for web services SOAP (in favour of “RESTful services”) UDDI (in favour of BioMoby, BioCatalogue, etc.)
  • 8. 2.1.3 Motivation for SADI existing standards are too complicated too much work for not enough gain
  • 9. 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”
  • 10. 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
  • 11. 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)
  • 12. 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
  • 13. 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
  • 14. 2.2.2 Why use SADI services? Input 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
  • 15. 2.2.2 Why use SADI services? Input 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
  • 16. 2.2.2 Why use SADI services? Input 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 Patient #24601 25.9 BMI 25.9
  • 17. 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 BMI 25.9
  • 18. 2.2.2 Why use SADI services? 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 Service
  • 19. 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
  • 20. 2.2.3 Requirements for SADI compliance  Responds to HTTP GET with service interface definition 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)
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 2.2.3 Requirements for SADI compliance  Indicates an error with appropriate HTTP status usually 500 Internal Service Error may return RDF describing the error
  • 25. 2.2.4 Calling a SADI service 1. Client sends POST requestto 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
  • 26. 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
  • 27. 2.2.4 Calling a SADI service 2. Service responds withoutput response body is an RDF document contains output OWL class instances serialization specified in Content-type HTTP header application/rdf+xml text/rdf+n3
  • 28. 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
  • 29. 2.2.5 Advanced SADI features 5. Advanced SADI features a. Asynchronous SADI services b. Parameterized SADI services
  • 30. 2.2.5.a Asynchronous SADI services  Problem HTTP time out if a service takes too long to respond  Solution service returns stub immediately; client polls for complete response
  • 31. 2.2.5.a Asynchronous SADI services 1. Client sends POST requestto 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
  • 32. 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
  • 33. 2.2.5.a Asynchronous SADI services 2. Service responds withstub response code is 202 Acceptedbut incomplete response body is an RDF document contains output OWL class instances contains rdfs:isDefinedBy statements serialization specified in Content-type HTTP header application/rdf+xml text/rdf+n3
  • 34. 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
  • 35. 2.2.5.a Asynchronous SADI services 3. Client fetches asynchronousdata fetch the object URL of each rdfs:isDefinedBy statement GET /examples/hello?poll=1 HTTP/1.1 Host: sadiframework.org
  • 36. 2.2.5.a Asynchronous SADI services 4. Until output isready 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
  • 37. 2.2.5.a Asynchronous SADI services 5. Client followsredirect after waiting as suggested by Retry-after HTTP header GET /examples/hello?poll=1 HTTP/1.1 Host: sadiframework.org
  • 38. 2.2.5.a Asynchronous SADI services 6. When output isready 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!" .
  • 39. 2.2.5.b Parameterized SADI Services  Problem service has secondary parameters that are not part of the input data e.g. BLAST service: substitution matrix, number of results to return, etc.  Solution service specifies a parameter OWL class client sends an instance of that class along with the input instances
  • 40. 2.2.5.b Parameterized SADI Services http://sadiframework.org/examples/hello-param 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" . [] a hello:SecondaryParameters ; hello:lang "fr" . output: @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ; hello:greeting "Bonjour, Guy Incognito!" .
  • 41. 2.2.5.b Parameterized SADI Services http://sadiframework.org/examples/hello-param 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" . [] a hello:SecondaryParameters ; hello:lang "es" . output: @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello-input.rdf#1> a hello:GreetedIndividual ; hello:greeting "Hola, Guy Incognito!" .
  • 42. 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 RESTAPIs anyone can register a service services are indexed by the properties they attach
  • 43. 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/
  • 44. 2.3 SADI Service Ontologies 3. SADI Service Ontologies 1. Service definition 2. Input and output OWL classes
  • 45. 2.3.1 Service Definition  name  description  contact email address  authoritative status  input OWL class  output OWL class  parameter OWL class  test cases
  • 46. 2.3.1 Service Definition @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specified in a parameter"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:providedBy [ a mygrid:organisation ; dc:creator mccarthy@elmonline.ca ; mygrid:authoritative "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters ] ; mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual ] ] .
  • 47. 2.3.1 Service Definition Name @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specified in a parameter"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:providedBy [ a mygrid:organisation ; dc:creator mccarthy@elmonline.ca ; mygrid:authoritative "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters ] ; mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual ] ] .
  • 48. 2.3.1 Service Definition @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specifi Ded esi cn ra iptparameter"^^<http://www.w3.org/2001/XMLSchema#string> ; ion mygrid:providedBy [ a mygrid:organisation ; dc:creator mccarthy@elmonline.ca ; mygrid:authoritative "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters ] ; mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual ] ] .
  • 49. 2.3.1 Service Definition @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specified in a parameter"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:providedBy [ a mygrid:organisation ; Contact email addrdc:creator mccarthy@elmonline.ca ; ess mygrid:authoritative "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters ] ; mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual ] ] .
  • 50. 2.3.1 Service Definition @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specified in a parameter"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:providedBy [ a mygrid:organisation ; dc:creator mccarthy@elmonline.ca ; mygrid:authoritative Authorita t "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ive ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters ] ; mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual ] ] .
  • 51. 2.3.1 Service Definition @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specified in a parameter"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:providedBy [ a mygrid:organisation ; dc:creator mccarthy@elmonline.ca ; mygrid:authoritative "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters Input OWL cl] ; ass mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual ] ] .
  • 52. 2.3.1 Service Definition @prefix mygrid: <http://www.mygrid.org.uk/mygrid-moby-service#> . @prefix hello: <http://sadiframework.org/examples/hello.owl#> . <http://sadiframework.org/examples/hello> a mygrid:serviceDescription ; mygrid:hasServiceNameText "ParamaterizedHelloWorld"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:hasServiceDescriptionText "A "Hello, world!" service where the output language is specified in a parameter"^^<http://www.w3.org/2001/XMLSchema#string> ; mygrid:providedBy [ a mygrid:organisation ; dc:creator mccarthy@elmonline.ca ; mygrid:authoritative "false"^^<http://www.w3.org/2001/XMLSchema#boolean> ] . mygrid:hasOperation [ a mygrid:operation ; mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:SecondaryParameters ] ; mygrid:outputParameter [ a mygrid:parameter ; mygrid:objectType hello:GreetedIndividual Output OWL cl] ass ] .
  • 53. 2.3.1 Service Definition <http://sadiframework.org/examples/hello-param> ... mygrid:hasOperation [ a mygrid:operation ; ... mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:ParameterClass mygrid:hasDefaultValue [ a hello:ParameterClass ; hello:lang “en” ] ] . mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput [ a hello:InputClass ; foaf:name “Guy Incognito” ] . mygrid:exampleOutput [ a hello:OutputClass ; hello:greeting “Hello, Guy Incognito!” ] . ] . mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput test:hello-param-input.rdf ; mygrid:exampleOutput test:hello-param-output.rdf ] ]
  • 54. 2.3.1 Service Definition Parameter OWL class <http://sadiframework.org/examples/hello-param> ... mygrid:hasOperation [ a mygrid:operation ; ... mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:ParameterClass mygrid:hasDefaultValue [ a hello:ParameterClass ; hello:lang “en” ] ] . Incognito!” mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput [ a hello:InputClass ; foaf:name “Guy Incognito” ] . mygrid:exampleOutput [ a hello:OutputClass ; hello:greeting “Hello, Guy ] . ] . mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput test:hello-param-input.rdf ; mygrid:exampleOutput test:hello-param-output.rdf ] ]
  • 55. 2.3.1 Service Definition Test case <http://sadiframework.org/examples/hello-param> ... mygrid:hasOperation [ a mygrid:operation ; ... mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:ParameterClass mygrid:hasDefaultValue [ a hello:ParameterClass ; hello:lang “en” ] ] . Incognito!” mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput [ a hello:InputClass ; foaf:name “Guy Incognito” ] . mygrid:exampleOutput [ a hello:OutputClass ; hello:greeting “Hello, Guy ] . ] . mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput test:hello-param-input.rdf ; mygrid:exampleOutput test:hello-param-output.rdf ] ]
  • 56. 2.3.1 Service Definition Test case <http://sadiframework.org/examples/hello-param> ... mygrid:hasOperation [ a mygrid:operation ; ... mygrid:inputParameter [ a mygrid:secondaryParameter ; mygrid:objectType hello:ParameterClass mygrid:hasDefaultValue [ a hello:ParameterClass ; hello:lang “en” ] ] . mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput [ a hello:InputClass ; foaf:name “Guy Incognito” ] . mygrid:exampleOutput [ a hello:OutputClass ; hello:greeting “Hello, Guy Incognito!” ] . ] . mygrid:hasUnitTest [ a mygrid:testCase ; mygrid:exampleInput test:hello-param-input.rdf ; mygrid:exampleOutput test:hello-param-output.rdf ] ]
  • 57. 2.3.2 Input and output OWL classes 2. Input and output OWL classes a. Input OWL classes b. Output OWL classes
  • 58. 2.3.2.a Input OWL classes  property restrictions describe data consumed by the service  all property restrictions must be satisfied by each input instance optional properties can be indicated by minimum cardinality of 0
  • 59. 2.3.2.a Input OWL classes  instances should be dynamically identifiable use necessary and sufficient conditions avoid universal and exact/maximum cardinality restrictions
  • 60. 2.3.2.a Input OWL classes necessary and sufficient http://sadiframework.org/examples/hello.owl#InputClass Manchester OWL syntax: Class: hello:NamedIndividual EquivalentTo: foaf:name min 1 rdfs:Literal RDF/XML syntax: <owl:Class rdf:about="&hello;NamedIndividual"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&foaf;name"/> <owl:minCardinality rdf:datatype="&xsd;integer">1</owl:minCardinality> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 61. 2.3.2.a Input OWL classes exact cardinality http://sadiframework.org/examples/hello.owl#BadInputClass Manchester OWL syntax: Class: hello:NamedIndividual EquivalentTo: foaf:name exactly 1 rdfs:Literal RDF/XML syntax: <owl:Class rdf:about="&hello;NamedIndividual"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&foaf;name"/> <owl:cardinality rdf:datatype="&xsd;integer">1</owl:cardinality> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 62. 2.3.2.a Input OWL classes exact cardinality http://sadiframework.org/examples/hello.owl#BadInputClass Manchester OWL syntax: Class: hello:NamedIndividual EquivalentTo: foaf:name exactly 1 rdfs:Literal RDF/XML syntax: <owl:Class rdf:about="&hello;NamedIndividual"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&foaf;name"/> <owl:cardinality rdf:datatype="&xsd;integer">1</owl:cardinality> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 63. 2.3.2.a Input OWL classes existential http://purl.org/SADI/LSRN/UniProt_Record Manchester OWL syntax: Class: lsrn:UniProt_Record EquivalentTo: sio:SIO_000008 some lsrn:UniProt_Identifier RDF/XML syntax: <owl:Class rdf:about="UniProt_Record"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&sio;SIO_000008"/> <owl:someValuesFrom rdf:resource="&lsrn;UniProt_Identifier"/> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 64. 2.3.2.a Input OWL classes universal http://purl.org/SADI/LSRN/Bad_UniProt_Record Manchester OWL syntax: Class: lsrn:Bad_UniProt_Record EquivalentTo: sio:SIO_000008 only lsrn:UniProt_Identifier RDF/XML syntax: <owl:Class rdf:about="UniProt_Record"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&sio;SIO_000008"/> <owl:allValuesFrom rdf:resource="&lsrn;UniProt_Identifier"/> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 65. 2.3.2.a Input OWL classes universal http://purl.org/SADI/LSRN/Bad_UniProt_Record Manchester OWL syntax: Class: lsrn:Bad_UniProt_Record EquivalentTo: sio:SIO_000008 only lsrn:UniProt_Identifier RDF/XML syntax: <owl:Class rdf:about="UniProt_Record"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&sio;SIO_000008"/> <owl:allValuesFrom rdf:resource="&lsrn;UniProt_Identifier"/> </owl:equivalentClass> </owl:Class> </owl:Restriction>
  • 66. 2.3.2.a Input OWL classes necessary and sufficient (multiple properties) http://sadiframework.org/examples/regression.owl#DatedValue Manchester OWL syntax: Class: regress:DatedValue EquivalentTo: (dc:date some xsd:date) and (rdf:value some xsd:double) RDF/XML syntax: <owl:Class rdf:about="&regression;DatedValue"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Restriction> <owl:onProperty rdf:resource="&dc;date"/> <owl:someValuesFrom rdf:resource="&xsd;date"/> </owl:Restriction> <owl:Restriction> <owl:onProperty rdf:resource="&rdf;value"/> <owl:someValuesFrom rdf:resource="&xsd;double"/> </owl:Restriction> </owl:intersectionOf> </owl:Class>
  • 67. 2.3.2.a Input OWL classes required property (min cardinality 1) http://sadiframework.org/ontologies/samples.owl#InputClass Manchester OWL syntax: Class: sample:InputClass EquivalentTo: (sample:required min 1 owl:Thing) and (sample:optional min 0 owl:Thing) RDF/XML syntax: <owl:Class rdf:about="#InputClass"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Restriction> <owl:onProperty rdf:resource="#required"/> <owl:minCardinality rdf:datatype="&xsd;integer">1</owl:minCardinality> </owl:Restriction> <owl:Restriction> <owl:onProperty rdf:resource="#optional"/> <owl:minCardinality rdf:datatype="&xsd;integer">0</owl:minCardinality> </owl:Restriction> </owl:intersectionOf> </owl:Class>
  • 68. 2.3.2.a Input OWL classes optional property (min cardinality 0) http://sadiframework.org/ontologies/samples.owl#InputClass Manchester OWL syntax: Class: sample:InputClass EquivalentTo: (sample:required min 1 owl:Thing) and (sample:optional min 0 owl:Thing) RDF/XML syntax: <owl:Class rdf:about="#InputClass"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Restriction> <owl:onProperty rdf:resource="#required"/> <owl:minCardinality rdf:datatype="&xsd;integer">1</owl:minCardinality> </owl:Restriction> <owl:Restriction> <owl:onProperty rdf:resource="#optional"/> <owl:minCardinality rdf:datatype="&xsd;integer">0</owl:minCardinality> </owl:Restriction> </owl:intersectionOf> </owl:Class>
  • 69. 2.3.2.b Output OWL classes  property restrictions describe data produced by the service  range of attached data should be indicated on the property restriction so clients can discriminate between services that attach the same properties
  • 70. 2.3.2.b Output OWL classes  instances don’t have to be dynamically identifiable no harm if they are may be preferred for consistency with input OWL class
  • 71. 2.3.2.b Output OWL classes necessary but not sufficient http://sadiframework.org/examples/keggPathway2Gene.owl#OutputClass Manchester OWL syntax: Class: OutputClass SubClassOf: sadi:hasParticipant some lsrn:KEGG RDF/XML syntax: <owl:Class rdf:about="#OutputClass"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&sadi;hasParticipant"/> <owl:someValuesFrom rdf:resource="&lsrn;KEGG"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
  • 72. 2.3.2.b Output OWL classes ranged restriction (KEGG genes) some lsrn:KEGG http://sadiframework.org/examples/keggPathway2Gene.owl#OutputClass Manchester OWL syntax: Class: OutputClass SubClassOf: sadi:hasParticipant RDF/XML syntax: <owl:Class rdf:about="#OutputClass"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&sadi;hasParticipant"/> <owl:someValuesFrom rdf:resource="&lsrn;KEGG"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
  • 73. 2.3.2.b Output OWL classes ranged restriction (KEGG compounds) some lsrn:KEGG_Compound http://sadiframework.org/examples/keggPathway2Compound.owl#OutputClass Manchester OWL syntax: Class: OutputClass SubClassOf: sadi:hasParticipant RDF/XML syntax: <owl:Class rdf:about="#OutputClass"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&sadi;hasParticipant"/> <owl:someValuesFrom rdf:resource="&lsrn;KEGG_Compound"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
  • 74. 2.4 SADI Service Generator 2.4 SADI Service Generator 2.4.1 Exercise
  • 75. 2.4.1 Exercise Create a SADI service that takes height and weight as input and attaches BMI.
  • 76. 2.4.1 Exercise  Create input and output OWL classes Protégé  Generate SADI service skeleton SADI Protégé plugin generate Java or Perl code  Add service logic Eclipse + Maven plugin (for Java code) your favourite editor (for Perl code)  Validate and register service
  • 77. 2.5 SADI and SAWSDL 5. SADI and SAWSDL 1. Introduction to SAWSDL 2. Using SAWSDL with SADI
  • 78. 2.5.1 Introduction to SAWSDL  Semantic Annotations for WSDL annotations for input, output, operation elements of WSDL sawsdl:modelReference attribute maps WSDL element to ontology element sawsdl:loweringSchemaMapping maps RDF to XML (for input) sawsdl:liftingSchemaMapping maps XML to RDF (for output)
  • 79. 2.5.1 Introduction to SAWSDL  lifting schema “lifts” non-semantic XML into semantic output standard imposes no requirements W3C suggests XSLT
  • 80. 2.5.1 Introduction to SAWSDL  lowering schema “lowers” semantic input into non-semantic XML standard imposes no requirements XSLT is insufficient (RDF > XML) W3C suggests SPARQL + XSLT (styled SPARQL results XML)
  • 81. 2.5.1 Introduction to SAWSDL <hello:NamedIndividual rdf:about="#Guy"> <foaf:name>Guy Incognito</foaf:name> <foaf:knows> <hello:NamedIndividual rdf:about="#JoeyJoJo"/> <foaf:name>Joey Jo-Jo Jr. Shabadoo</foaf:name> </foaf:knows> </hello:NamedIndividual> <rdf:Description rdf:about="#Guy"> <rdf:type rdf:resource="#NamedIndividual"/> <foaf:name>Guy Incognito</foaf:name> <foaf:knows rdf:resource="#JoeyJoJo"/> </rdf:Description> <rdf:Description rdf:about="#JoeyJoJo"> <rdf:type rdf:resource="#NamedIndividual"/> <foaf:name>Joey Jo-Jo Jr. Shabadoo</foaf:name> </rdf:Description> RDF > XML ...
  • 82. Virtual SADI service Lowering Schema Lifting Schema CardioSHARE is a unique frame- work for querying distributed data and performing data analysis using Semantic Web standards. CardioSHARE's two main innova- tions are an enhancement to a standard SPARQL query engine, which enables the required data to be retrieved dynamically from Web Services; and the ability to use OWL class restrictions to drive the discovery and execution of Web Services capable of generating that class' defining properties, thus allowing naiive data to be "lifted" into more complex OWL classifica- tions. SADI Client WSDL Service RDF input XML input RDF output XML output 2.5.2 Using SAWSDL with SADI
  • 83. 2.5.2 Using SAWSDL with SADI  SADI lifting schema options XSLT XPath + RDFPath ...  SADI lowering schema options SPARQL + XSLT SPARQL + Velocity ...
  • 84. 2.5.2 Using SAWSDL with SADI  SADI SAWSDL generator generate SAWSDL from existing WSDL service automatically generate SADI interface, including input/output OWL classes and a SADI-compliant service endpoint
  • 85. 2.5.2 Using SAWSDL with SADI  Manual SAWSDL generation modelReferences are SADI-compliant input and output OWL classes lifting and lowering schemata are valid SADI options register SAWSDL as a virtual SADI service (no SADI-compliant service endpoint; service is only accessible through client API)
  • 86. 2.6 SADI Clients 6. SADI Clients 1. SADI client API 2. SHARE query client 3. SADI Taverna plugin
  • 87. 2.6.1 SADI client API  Java library (available via Maven)  Find services by attached properties by input data  Invoke services  Semantic utility functions
  • 88. 2.6.2 SHARE query client  Database-free SPARQL queries  Web-based client SPARQL-assist query composer  Command-line client Java-based (executable JAR) platform-agnostic
  • 89. 2.6.3 SADI Taverna plugin  Adding SADI services to a workflow integration with non-SADI services  Configuring SADI services combining input from multiple services extracting output  Discovering SADI services expanding an existing workflow
  • 90. http:// sadiframework.org/training/ Thank you ! SADI Semantic Web Services Instructor: Luke McCarthy