tutorial - creating sadi semantic-web-services
TRANSCRIPT
![Page 1: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/1.jpg)
http:// sadiframework.org/training/
SADISemantic Web Services
London, UK 8 December 8 2011
SADI Semantic Web ServicesInstructor: Luke McCarthy
![Page 2: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/2.jpg)
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
![Page 3: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/3.jpg)
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
![Page 4: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/4.jpg)
2.1.1 Standards for Web Services
WSDL
SOAP
UDDI
SAWSDL
OWL-S
![Page 5: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/5.jpg)
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
![Page 6: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/6.jpg)
2.1.2 Bioinformatics Web Services
tend to ignore existing standards for semantic web services
OWL-S
SAWSDL
![Page 7: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/7.jpg)
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.)
![Page 8: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/8.jpg)
2.1.3 Motivation for SADI
existing standards are too complicated
too much work for not enough gain
![Page 9: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/9.jpg)
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”
![Page 10: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/10.jpg)
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
![Page 11: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/11.jpg)
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 ontologiesand especially existing properties)
![Page 12: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/12.jpg)
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
![Page 13: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/13.jpg)
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
![Page 14: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/14.jpg)
2.2.2 Why use SADI services?
Input
height weight
SADIService
Output
BMIID Name Height WeightAge24601
7474505B6
Jean Valjean Jake Blues
—...
1.8m1.73m1.88m
...
84kg 101kg 75kg
...
453139...
Client
BMI
![Page 15: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/15.jpg)
2.2.2 Why use SADI services?
Input
height weight
SADIService
Output
BMIID Name Height WeightAge24601
7474505B6
Jean Valjean Jake Blues
—...
1.8m1.73m1.88m
...
84kg 101kg 75kg
...
453139...
Client
BMI
24601
1.8m 84kg
height weight
![Page 16: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/16.jpg)
2.2.2 Why use SADI services?
Input
height weight
SADIService
Output
BMIID Name Height WeightAge24601
7474505B6
Jean Valjean Jake Blues
—...
1.8m1.73m1.88m
...
84kg 101kg 75kg
...
453139...
Client
BMIPatient#24601
25.9
BMI
25.9
![Page 17: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/17.jpg)
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
[ amged:Measurement ;
mged:has_units mged:kg ; mged:has_value "84"^^xsd:double
] .
Client
24601
1.8m 84kg
height weightBMI
25.9
![Page 18: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/18.jpg)
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
![Page 19: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/19.jpg)
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
![Page 20: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/20.jpg)
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)
![Page 21: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/21.jpg)
http://sadiframework.org/examples/hello
input OWL class ishttp://sadiframework.org/examples/hello.owl#NamedIndividual
output OWL class ishttp://sadiframework.org/examples/hello.owl#GreetedIndividual
2.2.3 Requirements for SADI compliance
![Page 22: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/22.jpg)
2.2.3 Requirements for SADI compliance
Responds to HTTP POST by invoking service
input is an RDF documentcontains 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
![Page 23: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/23.jpg)
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
![Page 24: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/24.jpg)
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
![Page 25: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/25.jpg)
2.2.4 Calling a SADI service
1. Client sends POST request to service URL
POST body is an RDF documentcontains input OWL class
instances
input serialization specified inContent-type HTTP headerapplication/rdf+xml
text/rdf+n3 output serialization
requested inAccept HTTP header
![Page 26: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/26.jpg)
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
![Page 27: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/27.jpg)
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 inContent-type HTTP headerapplication/rdf+xml text/rdf+n3
![Page 28: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/28.jpg)
HTTP/1.1 200 OKContent-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
![Page 29: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/29.jpg)
2.2.5 Advanced SADI features
5. Advanced SADI features
a. Asynchronous SADI services
b. Parameterized SADI services
![Page 30: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/30.jpg)
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
![Page 31: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/31.jpg)
2.2.5.a Asynchronous SADI services
1. Client sends POST request to service URL
POST body is an RDF documentcontains input OWL class
instances
input serialization specified inContent-type HTTP headerapplication/rdf+xml
text/rdf+n3 output serialization
requested inAccept HTTP header
![Page 32: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/32.jpg)
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
![Page 33: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/33.jpg)
2.2.5.a Asynchronous SADI services
2. Service responds with stub response code is
202 Accepted but 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
![Page 34: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/34.jpg)
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
![Page 35: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/35.jpg)
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
![Page 36: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/36.jpg)
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: 30Location: http://sadiframework.org/examples/hello?poll=1
![Page 37: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/37.jpg)
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
![Page 38: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/38.jpg)
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 OKContent-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!" .
![Page 39: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/39.jpg)
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
![Page 40: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/40.jpg)
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!" .
![Page 41: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/41.jpg)
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!" .
![Page 42: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/42.jpg)
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
![Page 43: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/43.jpg)
2.2.6 The SADI registry
SADI registryhttp://sadiframework.org/registry/
SPARQL endpointhttp://sadiframework.org/registry/sparql
REST APIhttp://sadiframework.org/registry/api/
![Page 44: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/44.jpg)
2.3 SADI Service Ontologies
3. SADI Service Ontologies
1. Service definition
2. Input and output OWL classes
![Page 45: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/45.jpg)
2.3.1 Service Definition
name
description
contact email address
authoritative status
input OWL class
output OWL class
parameter OWL class
test cases
![Page 46: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/46.jpg)
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 [email protected] ; 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
]] .
![Page 47: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/47.jpg)
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 [email protected] ; 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
]] .
![Page 48: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/48.jpg)
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 specifiDedesicn raiptparameter"^^<http://www.w3.org/2001/XMLSchema#string> ;
ion
mygrid:providedBy[ a mygrid:organisation ;
dc:creator [email protected] ; 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
]] .
![Page 49: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/49.jpg)
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 addr
dc:creator [email protected] ;
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
]] .
![Page 50: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/50.jpg)
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 [email protected] ;mygrid:authoritativeAuthoritat
"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
]] .
![Page 51: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/51.jpg)
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 [email protected] ; 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]
] .
![Page 52: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/52.jpg)
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 [email protected] ; 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
] .
![Page 53: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/53.jpg)
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
]]
![Page 54: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/54.jpg)
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
]]
![Page 55: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/55.jpg)
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
]]
![Page 56: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/56.jpg)
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
]]
![Page 57: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/57.jpg)
2.3.2 Input and output OWL classes
2. Input and output OWL classes
a. Input OWL classes
b. Output OWL classes
![Page 58: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/58.jpg)
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
![Page 59: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/59.jpg)
2.3.2.a Input OWL classes
instances should be dynamically identifiable
use necessary and sufficient conditions
avoid universal and exact/maximum cardinality restrictions
![Page 60: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/60.jpg)
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>
![Page 61: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/61.jpg)
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>
![Page 62: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/62.jpg)
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>
X
![Page 63: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/63.jpg)
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>
![Page 64: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/64.jpg)
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>
![Page 65: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/65.jpg)
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>
X
![Page 66: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/66.jpg)
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="®ression;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>
![Page 67: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/67.jpg)
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>
![Page 68: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/68.jpg)
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>
![Page 69: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/69.jpg)
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
![Page 70: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/70.jpg)
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
![Page 71: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/71.jpg)
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:hasParticipa
nt 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>
![Page 72: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/72.jpg)
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>
![Page 73: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/73.jpg)
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>
![Page 74: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/74.jpg)
2.4 SADI Service Generator
2.4 SADI Service Generator
2.4.1 Exercise
![Page 75: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/75.jpg)
2.4.1 Exercise
Create a SADI service that takes height and weight as input
and attaches BMI.
![Page 76: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/76.jpg)
2.4.1 Exercise
Create input and output OWL classesProtégé
Generate SADI service skeletonSADI Protégé plugin generate Java or Perl code
Add service logicEclipse + Maven plugin (for Java code) your favourite editor (for Perl code)
Validate and register service
![Page 77: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/77.jpg)
2.5 SADI and SAWSDL
5. SADI and SAWSDL
1. Introduction to SAWSDL
2. Using SAWSDL with SADI
![Page 78: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/78.jpg)
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)
![Page 79: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/79.jpg)
2.5.1 Introduction to SAWSDL
lifting schema “lifts” non-semantic
XML into semantic output
standard imposes no requirements
W3C suggests XSLT
![Page 80: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/80.jpg)
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)
![Page 81: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/81.jpg)
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
...
![Page 82: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/82.jpg)
Virtual SADI service
Lowering Schema Lifting Schema
CardioSHARE is a
unique frame- work
for querying
distributed dat a and
performing da ta
analysis using
Semantic Web
standards.
CardioSHARE's two
main innova- tions are
an enhancement to a
standard SPA RQL
query engine, which
enables the required
da ta to be retrieved
dy na mica lly 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
da ta 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
![Page 83: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/83.jpg)
2.5.2 Using SAWSDL with SADI
SADI lifting schema optionsXSLTXPath + RDFPath...
SADI lowering schema optionsSPARQL + XSLTSPARQL + Velocity...
![Page 84: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/84.jpg)
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
![Page 85: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/85.jpg)
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)
![Page 86: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/86.jpg)
2.6 SADI Clients
6. SADI Clients
1. SADI client API
2. SHARE query client
3. SADI Taverna plugin
![Page 87: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/87.jpg)
2.6.1 SADI client API
Java library(available via Maven)
Find services by attached properties
by input data
Invoke services
Semantic utility functions
![Page 88: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/88.jpg)
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
![Page 89: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/89.jpg)
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
![Page 90: Tutorial - Creating SADI semantic-web-services](https://reader036.vdocument.in/reader036/viewer/2022062522/589ec0891a28ab4a5c8b6b41/html5/thumbnails/90.jpg)
http:// sadiframework.org/training/
Thank you !
SADI Semantic Web ServicesInstructor: Luke McCarthy