The Semantic Web and its Applications - FiiT Wiki

looneyvillebiologistInternet and Web Development

Oct 21, 2013 (3 years and 11 months ago)

61 views

Semantic Web Services
Composition

Peter Bartalos

Outline


Basics of service composition


Why we need semantics?


Different kinds of user goals

Service composition


Arranging web services

into complex workflows


Based on user goal

Service chaining


Requirement


I/O compatibility


Syntactic level
-

WSDL

Ancestor

Successor

O

I

?

<element name=“getTemperatureReturn" type="xsd:double"/>


<element name=“areaName" type="xsd:string"/>

Service chaining

Output:

meteoowl:Temperature

Input:

meteoowl:Elevation

meteoowl:LocalPressure

getTemperature()

getAtmPressure()

Output:

<element name=“getTemperatureReturn" type="xsd:double"/>


Input:

<element name=“elevation" type="xsd:double"/>

<element name=“localPressure" type="xsd:double"/>

Meaningful chaining

Output:

meteoowl:Elevation

getElevation()

getAtmPressure()

Output:

<element name=“getElevationReturn" type="xsd:double"/>


Input:

<element name=“heightAboveLocation" type="xsd:double"/>

<element name=“localPressure" type="xsd:double"/>

Input:

meteoowl:Elevation

meteoowl:LocalPressure

Problem again

Output:

meteoowl:Elevation

Input:

meteoowl:Elevation

meteoowl:LocalPressure

getElevation()

getAtmPressure()

Output:

<element name=“getElevationReturn" type="xsd:double"/>


Input:

<element name=“heightAboveLocation" type="xsd:double"/>

<element name=“localPressure" type="xsd:double"/>

In meters

In ft.



Problem again

Output:

meteoowl:Elevation

Input:

meteoowl:Elevation

getElevation()

getAtmPressure()

Output:

<element name=“getElevationReturn" type="xsd:double"/>


Input:

<element name=“heightAboveLocation" type="xsd:double"/>

<element name=“localPressure" type="xsd:double"/>

Postcondition:

inMeters (getElevationReturn)

Precondition:

inFeet (heightAboveSeaLevel)

Considering conditions

Output:

meteoowl:Elevation

Input:

meteoowl:Elevation

getElevation()

getAtmPressure()

Output:

<element name=“getElevationReturn" type="xsd:double"/>


Input:

<element name=“heightAboveLocation" type="xsd:double"/>

<element name=“localPressure" type="xsd:double"/>

Postcondition:

inMeters (getElevationReturn)

Precondition:

inMeters (heightAboveSeaLevel)

Semantic

service composition


Basic service description


I/O


Binding parameters to the concepts in the ontology


Pre
-
/post
-
conditions


Logical expressions


Predicates combined with logical operators


Binding to ontological elements

Semantic

compatibility evaluation


Compatibility evaluation


I/O


Checking if
O
subsumes
I


Pre
-
/post
-
conditions


Checking if
Post
=>
Pre

How it starts


User goal definition


Required outputs


Required condition


Provided inputs

How it starts


User goal example


The user wants the air pressure in kPa in Smolenice
corrected to sea level.



Required output


meteoowl:A
tmospheric
P
ressure


Required condition


inkPa(pressure)


Provided inputs


geoowl:Area = Smolenice


meteoowl:LocalP
ressure

= 98.5kPa

Example composition

getElevation()

getAtmPressure()

Output:

meteoowl:Elevation

Input:

meteoowl:Elevation

meteoowl:LocalPressure

Output:

meteoowl:A
tmospheric
P
ressure

Input:

geoowl:Area

Postcondition:

inkPa(pressure)

Smolenice

98.5kPa

Best composition


Generally we have several composite
services satisfying the user goal


We have to choose the best one


Soft and hard constraints

Simple condition


The user wants to book a flight.



Condition


booked(flight)

Value restriction


The user wants to book a flight to Los
Angeles.


Condition


b
ooked(flight)^hasDestination(flight,
destination)


Value restriction


destination =
LosAngeles

Local variables


The user wants to book a flight to Los Angeles
and a hotel

for overall price at most 500$.


Condition


booked(flight)^hasDestination(flight,
destination)^hasPrice(flight,
flightprice)^booked(hotel)^hasPrice(hotel, hotelprice)


Value restriction


destination =

LosAngeles


^ price <

500$


Local variable definition


price =

flightprice + hotelprice

Soft constraints
-

fuzzy


The user wants to book a flight for about
350$.


Condition


booked(flight) ^ hasPrice(flight, flightprice)


Value restriction


flightprice = f
uzzy number

Predicate evaluation I


The user wants to book a flight through
weekend.


Condition


booked(flight)^hasFlightTime(flighttime)


Value restriction


isWeekendTime(flighttime)

Predicate evaluation II


The user wants to book
the

cheapest
flight.


Condition


booked(flight) ^ hasPrice(flight, flightprice)


Value restriction


cheapest(flightprice)

Conditional restriction


The user wants to book a flight
if

it

includes also insurance,
else

he wants to
use a train.


Alternatives


booked(flight)^includesInsurance(flight)


book(traintravel)


If Then Else …

Event handling


The user wants to book a flight, but if that flight
is delayed by

more than 24 hours, he wants to
cancel the flight and take a train.


Basic condition


booked(flight)


Event


booked(flight) ^ isDelayed(flight, delay)


delay > 24hour


Action


cancelled(flight) ^ booked(traintravel)

Open problems


How to get the required representation of
the user goal?


How to present the results?


Booking problem …?


Do we need additional metadata?


How to develop “composition friendly”
services?