Page 1
Reference ImplementationWSMX
Matthew Moran, (Emilia Cimpian, AdrianMocan, Eyal Oren, Michal Zaremba)
Digital Enterprise Research [email protected]
1st F2F meeting SDK cluster working group on Semantic Web Services
Wiesbaden, Germany, 15-03-2004
Page 2
[email protected] 2
WSMX Overview
• Goal – To build a Web Service execution environment as a
reference implementation of WSMO
• Initial scope– WSMO Lite
• Sub-deliverables– D13.1 Conceptual model– D13.2 Execution Semantics– D13.3 Mediation– D13.4 Architecture– D13.5 Implementation
Page 3
[email protected] 3
Conceptual Model
Page 4
[email protected] 4
Conceptual Model
• Integration Type– Defines an integration task– WSMO written in BNF form– Contains a set of declarative instructions that can be
validated and interpreted by WSMX
trading_partner: E1 (self)use_ontology: E1_ontuse_ontology: RN_ontuse_concept: E1_ont.POuse_concept: RN_ont.POuse_proxy: sendE2_PO
trading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 5
[email protected] 5
Execution Semantics
WSMX Execution Semantics
• What are they?– Formal definition of WSMX operational
behaviour
• How to Model them?– By identifying states and how the execution
environment transitions between states– By using modelling technique such as Petri
Nets to identify problems such as deadlocks
Page 6
[email protected] 6
Mediation
• Mediation can mean transformation• Challenges faced
– Structure• Different composition of concepts
– Completeness• Incomplete concept representation on source
or target
– Data type mismatch• Example: Zip Code as string; Zip Code as
positive integer
– Subsumption
Page 7
[email protected] 7
Mediation - Example
• Address1– Street and number
• Street• Number
– Locality– Country– ZIP
• Axioms:zip_number[value => integer]ZN[value->V]:-ZN:zip_number, V>0.
local[str => street, number => integer]
address1[str_no => local, loc => locality,
country => country, zip => zip_number]
• Address0– Street– Number– Locality– State, province or county– Country– ZIP Code
• Axioms:positive_int[value => int].FORALL PI:positive_int <- PI>0.
zip_code[value => string].
address0[str => street, no => positive_int,
loc => locality, county => county,
country => country, zip => zip_code].
Ontology1, Address1 < -- > Ontology0, Address0
Page 8
[email protected] 8
Mediation - Example
• Address2– Address line 1– Address line 2
• Axioms:address[adr_line_1 => string,
adr_line_2 => string].
• Address0– Street– Number– Locality– State, province or county– Country– ZIP Code
• Axioms:positive_int[value => int].FORALL SN:street_numbe <- SN>0.zip_code[value => string].address0[str => street,
no => positive_int, loc => locality,
county => county, country => country,
zip => zip_code].
Require further knowledge about the internal structure of the source concept instances (with respect to the system that generates them)
Ontology2, Address2 < -- > Ontology0, Address0
Page 9
[email protected] 9
Invocation
Challenges:• Semantic Web Services involving
complex interactions• Goal-Capability matching by
combining web services• Semi-automatic goal decomposition• Semi-automatic service invocation
Page 10
[email protected] 10
Invocation Problem (simple)
Amazon
B&N
eBay
goal:buy_book capability: buy_book
WS
invocationengine
?
you need matching on choreography, capability, etc…
you need selection onprice, reliability, etc…
capability: buy_2ndHand_book
Page 11
[email protected] 11
Invocation Problem (complex)
plumber
masoner
constructorgoal:build_house
WS
invocationengine architect
lawyer
capability:
build_plumbing
capability:build_walls
capability:make_blueprint
capability:design_house
capability:make_contractgoal:build_plumbing
goal:make_contractgoal:design:house
now you also need decomposition
and what to do when something goes wrong?
Page 12
[email protected] 12
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
WSMO Integration Type written declaratively in BNF form
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
Page 13
[email protected] 13
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 14
[email protected] 14
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 15
[email protected] 15
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 16
[email protected] 16
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 17
[email protected] 17
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 18
[email protected] 18
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 19
[email protected] 19
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 20
[email protected] 20
Mediator
Invoker
Ontology
Compiler
History
Integration instances
Create PO1234Mediate PO1234, PORN
Invoke E2, PORN
AddHistory PORN
“Integ A”
For Compile Receive PORN
::AddHistory
Second Enterprise
12345: execute(“IntegA”, PO1234)23456: execute(“IntegB”, PO3897)
Once compiled, the instructions can be stored by the WSMX for reuse
“Integ A”
Invoke stored execution instances using input parameters
A set of declarative instructions that can be interpreted by the WSMX.
“IntegA”
Architecture
WSMO Integration Type written declaratively in BNF form
trading_partner: E1 (self) use_ontology: E1_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_POtrading_partner: E2mediator: E1_ont, RN_ontproxy: sendE2_PO
Page 21
[email protected] 21
Summary and Next Steps
• Conceptual– Feedback to WSMO– Implement BNF based language
• Mediation and Invocation– First implementation
• Architecture– Complete initial design
• Implementation– Build software that provides an execution
environment for Web Services based on WSMO