Description and Discovery of Type Adaptors for Web Services Workflow

654 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
654
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • The presentation concentrates on the problem of workflow harmonisation that arises when service providers use different representations for conceptually equivalent information.
  • Description and Discovery of Type Adaptors for Web Services Workflow

    1. 1. Description and Discovery of Type Adaptors for Web Services Workflow Martin Szomszor ( [email_address] )
    2. 2. Presentation Outline <ul><li>Contemporary workflow Design </li></ul><ul><ul><li>Discovery of services using semantics </li></ul></ul><ul><li>Problem description </li></ul><ul><ul><li>Type conversion requirements </li></ul></ul><ul><li>Describing Type Adaptor capabilities </li></ul><ul><ul><li>Using WSDL </li></ul></ul><ul><li>Discovering Type Adaptors </li></ul><ul><li>Implementation Example </li></ul><ul><ul><li>Using bespoke mapping language FXML-M </li></ul></ul><ul><ul><li>GRIMOIRES Registry </li></ul></ul>
    3. 3. In Silico Experimentation <ul><li>Computational experimentation </li></ul><ul><li>Access to resources provided by Web Services </li></ul><ul><li>Users map experimental process to workflow </li></ul><ul><li>Tasks are realised by service instances </li></ul>
    4. 4. Service Discovery <ul><li>Users need to find services to fulfill given tasks e.g. </li></ul><ul><ul><li>Retrieve sequence data </li></ul></ul><ul><ul><li>Sequence alignment (Blast) </li></ul></ul><ul><li>There are lots of services ! </li></ul><ul><li>Interface definitions can be terse, often un-documented and sometimes cryptic </li></ul><ul><li>Limited semantic value </li></ul><ul><li>Manual discovery not ideal </li></ul>
    5. 5. Semantic Discovery <ul><li>Support users in the discovery of services according to domain specific terminology </li></ul><ul><li>Annotate service descriptions with concepts from an ontology (PEDRO) </li></ul><ul><ul><li>Input and output types assigned a semantic type by a reference to an ontology concept </li></ul></ul><ul><li>Discover services by: </li></ul><ul><ul><li>Task performed </li></ul></ul><ul><ul><li>Resources used </li></ul></ul><ul><ul><li>Input and output semantic types </li></ul></ul>
    6. 6. Semantically Driven Workflow Design <ul><li>When building workflows, users connect services because they are deemed semantically compatible: </li></ul><ul><ul><li>Output semantic type equivalent to input semantic type </li></ul></ul>
    7. 7. Syntactic Compatibility <ul><li>However, semantically compatible service interfaces may not be syntactically compatible (i.e. different data formats) </li></ul>
    8. 8. Syntactic Mediation <ul><li>When a mismatch in data formats occurs within a workflow, a translation component is required </li></ul><ul><li>These Type Adaptors come in a variety of guises </li></ul><ul><ul><li>Translation Scripts (e.g. XSLT) </li></ul></ul><ul><ul><li>Bespoke Code (JAVA and PERL) </li></ul></ul><ul><ul><li>Web Services </li></ul></ul><ul><li>Current solutions are manual </li></ul><ul><ul><li>Identify when mismatch occurs </li></ul></ul><ul><ul><li>How to resolve it </li></ul></ul><ul><ul><li>What translation components are suitable </li></ul></ul><ul><ul><li>Create new translation components if necessary </li></ul></ul><ul><li>How can we describe Type Adaptors? </li></ul>
    9. 9. WSDL Overview <ul><li>WSDL is a declarative language used to specify program capabilities through the definition of end-points </li></ul><ul><ul><li>Programs expose operations </li></ul></ul><ul><ul><li>Operations are specified in terms of messages </li></ul></ul><ul><ul><li>Messages contain parts (each with syntactic type) </li></ul></ul><ul><ul><li>XML Schema can be used to describe data formats </li></ul></ul><ul><li>Abstract definition separated from concrete implementation </li></ul><ul><li>Binding defines invocation method and data encoding </li></ul>
    10. 11. WSDL Examples: <definitions> <message name='getEntryIn'> <part name='accession_id' element='DDBJ:ACCESSION'/> </message> <message name='getEntryOut'> <part name='record' element='DDBJ:DDBJXML'/> </message> <portType name='DDBJPortType'> <operation name='GetEntry'> <input name='getEntryIn' message='tns:getEntryIn'/> <output name='getEntryOut' message='tns:getEntryOut'/> </operation> </portType> SOAP <binding name='DDBJBinding' type='tns:DDBJPortType'> <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='GetEntry'> <soap:operation soapAction='GetEntry'/> <input name='getEntryIn'> <soap:body use='literal'/> </input> <output name='getEntryOut'> <soap:body use='literal'/> </output> </operation> </binding> </definitions> JAVA <binding name=&quot;JavaBinding&quot; type=&quot;tns:DDBJPortType&quot;> <java:binding/> <format:typeMapping encoding=&quot;Java&quot; style=&quot;Java&quot;> <format:typeMap typeName=”DDBJ:DDBJXML&quot; formatType=”DDBJXML.SequenceData&quot;/> <format:typeMap typeName=”DDBJ:ACCESSION&quot; formatType=&quot;java.lang.String&quot;/> </format:typeMapping> <operation name=”GetEntry&quot;> <java:operation methodName=”GetEntry” methodType=&quot;instance&quot;/> <input name=&quot;getEntryIn&quot;/> <output name=“getEntryOut”/> </operation> </binding> </definitions> http://ws.apache.org/wsif/providers/wsdl_extensions/java_extension.html
    11. 12. WSDL Conclusions <ul><li>Can be used to describe many implementations </li></ul><ul><ul><li>Transport not necessarily SOAP over HTTP </li></ul></ul><ul><ul><li>Data encoding does not have to be XML </li></ul></ul><ul><ul><ul><li>Java Objects </li></ul></ul></ul><ul><ul><ul><li>String formats (e.g. csv) </li></ul></ul></ul><ul><ul><ul><li>Binary Files </li></ul></ul></ul><ul><li>Other WSDL Bindings: </li></ul><ul><ul><li>XQuery [Onose and Simeon 2004] </li></ul></ul><ul><ul><li>EJB, JMS, J2EE Connector Architecture (e.g. Cobol): from Apache WSIF </li></ul></ul><ul><li>Anything you like… </li></ul>
    12. 13. Type Adaptors <ul><li>Type Adaptors are components that: </li></ul><ul><ul><li>consume an input (source type) </li></ul></ul><ul><ul><li>produce an output (destination type) </li></ul></ul><ul><li>Functionality can be described at an abstract level: </li></ul><ul><ul><li>what goes in </li></ul></ul><ul><ul><li>what comes out </li></ul></ul><ul><li>Actual implementation can be described using a binding, e.g. </li></ul><ul><ul><li>XSLT script location </li></ul></ul><ul><ul><li>Java Class used </li></ul></ul><ul><li>Hence, we use WSDL to describe Type Adaptors </li></ul>
    13. 14. WSDL for Type Adaptors
    14. 15. Discovery of Type Adaptors
    15. 16. <ul><li>Simple solution: Adaptor for each compatible data format </li></ul><ul><ul><li>O(n 2 ) </li></ul></ul><ul><ul><li>Poor Scalability </li></ul></ul><ul><li>Alternative: Introduce intermediate representation </li></ul><ul><ul><li>O(n) </li></ul></ul><ul><ul><li>Less effort introducing new formats </li></ul></ul>Type Adaptor Approaches f c e b d a f c e b d a
    16. 17. Intermediate Representation <ul><li>Use OWL ontologies to capture semantics and structure of data formats </li></ul><ul><li>Proven technique </li></ul><ul><ul><li>TAMBIS Project [Stevens et al 2003] </li></ul></ul><ul><ul><ul><li>Complex query formulation over diverse information sources </li></ul></ul></ul><ul><ul><li>SEEK Project [Bowers and Ludascher 2004] </li></ul></ul><ul><ul><ul><li>An ontology-driven framework for data transformation in scientific workflows </li></ul></ul></ul>
    17. 18. Implementation <ul><li>Type Adaptor approach: </li></ul><ul><ul><li>Using OWL as intermediate representation </li></ul></ul><ul><li>Transformation Technology: </li></ul><ul><ul><li>Using bespoke mapping language FXML-M </li></ul></ul><ul><li>Registry Technology: </li></ul><ul><ul><li>GRIMOIRES </li></ul></ul><ul><ul><ul><li>Advertise </li></ul></ul></ul><ul><ul><ul><li>Discover </li></ul></ul></ul>
    18. 19. Mapping Mechanics <S> <X>foo</X> <X>bar</X> </S> <D> <Y>foo</Y> <Y>bar</Y> </D> Source Document Destination Document m 1 : S/X -> D/Y m 2 : X/$ -> Y/$ Mappings
    19. 20. Mapping Mechanics S X “ foo” S/* S/* xsd:string xsd:string X “ bar” D Y “ foo” D/* D/* xsd:string xsd:string Y “ bar” m 1 : S/X -> D/Y m 2 : X/$ -> Y/$
    20. 21. Example M-Binding <binding xmlns=&quot;http://www.ecs.soton.ac.uk/~mns03r/mapping/example&quot; xmlns:sns=&quot;http://jaco.ecs.soton.ac.uk/schema/source&quot; xmlns:dns=&quot;http://jaco.ecs.soton.ac.uk/schema/destination&quot;> <mapping id= &quot;1&quot; > <source match= &quot;sns:S/sns:X&quot; /> <destination create= &quot;dns:D[join]/dns:Y[branch]&quot; /> </mapping> <mapping id= ”2&quot; > <source match= &quot;sns:X/$&quot; /> <destination create= &quot;dns:Y[join]/$&quot; /> </mapping> </binding>
    21. 22. Transformation Technology <ul><li>Bespoke Mapping Language (FXML-M) </li></ul><ul><ul><li>Declarative </li></ul></ul><ul><ul><ul><li>Statements map schema elements from source to destination </li></ul></ul></ul><ul><ul><ul><li>Mappings are combined in an M-Binding Document </li></ul></ul></ul><ul><ul><li>Composable </li></ul></ul><ul><ul><ul><li>M-Bindings can include statements from other M-Bindings </li></ul></ul></ul><ul><ul><li>Predicate support (for complex relations) </li></ul></ul><ul><ul><li>Asymmetric relations (one-to-many, many-to-one) </li></ul></ul><ul><li>Implementation (FXML-T) </li></ul><ul><ul><li>Consumes M-Bindings, schemas and source document </li></ul></ul><ul><ul><li>Produces destination document </li></ul></ul>
    22. 23. Mappings with OWL <ul><li>Our Type Adaptor approach uses OWL for an intermediate representation </li></ul><ul><ul><li>But our transformation technology is XML to XML </li></ul></ul><ul><li>Solution, use canonical XML representation for OWL concept instances </li></ul><ul><li>OWL Instance Schema </li></ul><ul><ul><li>Automatically generated from OWL ontology </li></ul></ul><ul><ul><li>Concept hierarchies calculated </li></ul></ul><ul><ul><li>Elements for each concept and property </li></ul></ul>
    23. 24. Bio Example <ddbj:DDBJXML> <ddbj:ACCESSION>AB000059</ddbj:ACCESSION> <ddbj:FEATURES> <ddbj:source> <ddbj:location>1..1755</ddbj:location> <ddbj:qualifiers name=&quot;isolate&quot;>Som1</ddbj:qualifiers> <ddbj:qualifiers name=&quot;lab_host&quot;>Felis domesticus</ddbj:qualifiers> </ddbj:source> </ddbj:FEATURES> </ddbj:DDBJXML> <ont:Sequence_Data_Record> <ont:accession_id>AB000059</ont:accession_id> <ont:has_feature> <ont:Feature_Source> <ont:isolate>Som1</ont:isolate> <ont:lab_host>Felis domesticus</ont:lab_host> <ont:location> <ont:Feature_Location> <ont:start>1</ont:start> <ont:end>1755</ont:end> </ont:Feature_Location> </ont:location> </ont:Feature_source> </ont:has_feature> </ont:Sequence_Data_Record> Simple One-to-One Element and literal Many-to-Many Split literal value Predicate evaluation
    24. 25. Example M-Binding <binding xmlns=&quot;http://www.ecs.soton.ac.uk/~mns03r/mapping/ddbj-to-ont-mapping&quot; xmlns:sns=&quot;http://jaco.ecs.soton.ac.uk/schema/DDBJ&quot; xmlns:dns=&quot;http://jaco.ecs.soton.ac.uk/ont/sequencedata&quot;> <mapping id=&quot;1&quot;> <source match=&quot;sns:DDBJXML/sns:ACCESSION&quot;/> <destination create=&quot;dns:Sequence_Data_Record[join]/dns:accession_id[branch]/&quot;/> </mapping> <mapping id=“2”> <source match=&quot;sns:ACCESSION/$&quot;/> <destination create=&quot;dns:accession_id[join]/$&quot;/> </mapping> <mapping id=”3&quot;> <source match=&quot;sns:DDBJXML/sns:FEATURES/sns:source&quot;/> <destination create=&quot;dns:Sequence_Data_Record[join]/dns:has_feature[branch]/ dns:Feature_Source[branch]&quot;/> </mapping> <mapping id=”4&quot;> <source match='sns:source/sns:qualifiers[sns:qualifiers/sns:name/$ = &quot;lab_host&quot;]'/> <destination create=&quot;dns:Feature_Source[join]/dns:lab-host[branch]&quot;/> <mapping> <source match=&quot;sns:qualifiers/$&quot;/> <destination create=&quot;dns:lab-host[join]/$&quot;/> </mapping> </mapping> <mapping id=”5&quot;> <source match=&quot;sns:location/$^[^.]+&quot;/> <destination create=&quot;dns:Location[join]/dns:start[branch]/$&quot;/> </mapping> </binding>
    25. 26. Configurable Mediator
    26. 27. Discovery of M-Bindings
    27. 28. Example WSDL <?xml version='1.0' encoding='UTF-8'?> <definitions name='DDBJ-to-sequencedata' targetNamespace='http://jaco.ecs.soton.ac.uk:8080/Bindings/DDBJ-to-sequencedata' ... xmlns='http://schemas.xmlsoap.org/wsdl/'> <types> <xsd:schema targetNamespace='http://jaco.ecs.soton.ac.uk:8080/Bindings/DDBJ-to-sequencedata'> <xsd:import namespace='http://jaco.ecs.soton.ac.uk/schema/DDBJ'/> <xsd:import namespace='http://jaco.ecs.soton.ac.uk/ont/sequencedata'/> </xsd:schema> </types> <message name='sns#DDBJXML-to-dns#Sequence_Data_Record-IN'> <part name='in' element='sns:DDBJXML'/> </message> <message name='sns#DDBJXML-to-dns#Sequence_Data_Record-OUT'> <part name='in' element='dns:Sequence_Data_Record'/> </message> <portType name='TranslationPortType'> <operation name='sns#DDBJXML-to-dns#Sequence_Data_Record'> <input name='sns#DDBJXML-to-dns#Sequence_Data_Record-IN'/> <output name='sns#DDBJXML-to-dns#Sequence_Data_Record-OUT'/> </operation> </portType> <binding name='TranslationBinding' type='tns:TranslationPortType'> <operation name='sns#DDBJXML-to-dns#Sequence_Data_Record'> <input name='sns#DDBJXML-to-dns#Sequence_Data_Record-IN'/> <output name='sns#DDBJXML-to-dns#Sequence_Data_Record-OUT'/> </operation> </binding> <service name='TranslationService'> <port name='TranslationPort' binding='tns:TranslationBinding'> <fxml:binding location='http://jaco.ecs.soton.ac.uk/binding/DDBJ-to-sequencedata.xml'/> </port> </service> </definitions>
    28. 29. Conclusions <ul><li>Type Adaptors come in many flavours, all can be described using WSDL </li></ul><ul><li>GRIMOIRES can be used to advertise and discover WSDL Type Adaptors </li></ul><ul><li>We have shown this to work with our own Mapping Language (FXML-M) </li></ul><ul><ul><li>Practical </li></ul></ul><ul><ul><li>Scalable </li></ul></ul>
    29. 30. Questions and Comments?
    30. 31. FXML-T Performance
    31. 32. FXML-T Performance
    32. 33. FXML-T Performance
    33. 34. GRIMOIRES Performance 1.81 Total Mediation 0.27 Serialisation Translation 0.23 Serialisation Discovery 0.62 Jena Mediation 0.47 Realisation Translation 0.22 RealisationDiscovery 2.50 DDBJ Execution Average Time (S) Activity

    ×