semantic web services composition peter bartalos
TRANSCRIPT
Semantic Web Services Composition
Peter Bartalos
Outline
Basics of service composition Why we need semantics? Different kinds of user goals
Service composition
Arranging web servicesinto complex workflows Based on user goal
WS1
WS5
WS3WS7
WS4
WS6
WS2
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:Elevationmeteoowl: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:Elevationmeteoowl:LocalPressure
Problem again
Output:meteoowl:Elevation
Input:meteoowl:Elevationmeteoowl: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
Semanticcompatibility 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:AtmosphericPressure
Required condition inkPa(pressure)
Provided inputs geoowl:Area = Smolenice meteoowl:LocalPressure = 98.5kPa
Example composition
getElevation()
getAtmPressure()
Output:meteoowl:Elevation
Input:meteoowl:Elevationmeteoowl:LocalPressure
Output:meteoowl:AtmosphericPressure
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 booked(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 = fuzzy 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?