Reference Implementation WSMX Matthew Moran, (Emilia Cimpian, AdrianMocan, Eyal Oren, Michal Zaremba) Digital Enterprise Research Institute 1st F2F meeting SDK cluster working group on Semantic Web Services Wiesbaden, Germany,
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
Conceptual Model
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_ont use_ontology: RN_ont use_concept: E1_ont.PO use_concept: RN_ont.PO use_proxy: sendE2_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
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
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
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 0. zip_code[value => string]. address0[str => street, no => positive_int, loc => locality, county => county, country => country, zip => zip_code]. Ontology1, Address1 Ontology0, Address0
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 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
Invocation Challenges: Semantic Web Services involving complex interactions Goal-Capability matching by combining web services Semi-automatic goal decomposition Semi-automatic service invocation
Invocation Problem (simple) AmazonB&NeBay goal:buy_book capability: buy_book WS invocation engine ? you need matching on choreography, capability, etc… you need selection on price, reliability, etc… capability: buy_2ndHand_book
Invocation Problem (complex) plumbermasonerconstructor goal:build_house WS invocation engine architectlawyer capability: build_plumbing capability:build_walls capability:make_blueprint capability:design_house capability:make_contract goal:build_plumbing goal:make_contract goal:design:house now you also need decomposition and what to do when something goes wrong?
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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO WSMO Integration Type written declaratively in BNF form Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
Mediator Invoker Ontology Compiler History Integration instances Create PO1234 Mediate PO1234, PO RN Invoke E2, PO RN AddHistory PO RN “Integ A” For Compile Receive PO RN : : 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_PO trading_partner: E2 mediator: E1_ont, RN_ont proxy: sendE2_PO
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