semantic web services composition peter bartalos

Post on 27-Dec-2015

214 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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?

top related