220 likes | 358 Views
CMPE588 Term Project Presentation. Discovery of Composable Web Services. Presented by: Vassilya Abdulova. Discovery of Composable Web Services. Introduction. Introduction. Aim of the project: Application extracting relationships between Web Services
E N D
CMPE588 Term Project Presentation Discovery of Composable Web Services Presented by: Vassilya Abdulova
Discovery of Composable Web Services Introduction
Introduction • Aim of the project: • Application • extracting relationships between Web Services • deciding whether services are composable • Parts of the project: • creating Web Services using OWL-S • writing Java code for the extraction of relationships between Web Services • JSP (Java Server Pages)/HTML code development of user interface Presented by Vassilya Abdulova
Discovery of Composable Web Services Web Services using OWL-S
Developed Web Services • Book Finder WS • takes name of the book as an input and returns ISBN of the book • Book Price WS • takes ISBN of a book as an input and returns the price of the book Presented by Vassilya Abdulova
Developed Web Services • Car Finder WS • takes make and model of the car as an input and returns the information about the car • Car Price WS • takes information about the car as an input and returns the price of the car • Currency Converter WS • takes currency and price as an input and returns converted price as an output Presented by Vassilya Abdulova
OWL-S • set of ontologies for describing web services • consists of three main upper ontologies • Profile • essentially used for describing the non-functional properties (service name, category, etc.); • Process • gives a detailed description of a service operation, its inputs and outputs • Grounding • provides details on how to interoperate with a service via messages. Presented by Vassilya Abdulova
<!-- Service description --> <service:Service rdf:ID="BookFinderService"> <service:presents rdf:resource="#BookFinderProfile"/> <service:describedBy rdf:resource="#BookFinderProcess"/> <service:supports rdf:resource="#BookFinderGrounding"/> </service:Service> <!-- Profile description --> <mind:BookInformationService rdf:ID="BookFinderProfile"> <service:presentedBy rdf:resource="#BookFinderService"/> <profile:serviceName xml:lang="en">Book Finder</profile:serviceName> <profile:textDescription xml:lang="en"> This service returns the ISBN of a book whose title best matches the given string. </profile:textDescription> <profile:hasInput rdf:resource="#BookName"/> <profile:hasOutput rdf:resource="#BookISBN"/> </mind:BookInformationService> <!-- Process description --> <process:AtomicProcess rdf:ID="BookFinderProcess"> <service:describes rdf:resource="#BookFinderService"/> <process:hasInput rdf:resource="#BookName"/> <process:hasOutput rdf:resource="#BookISBN"/> </process:AtomicProcess> <process:Input rdf:ID="BookName"> <process:parameterType rdf:datatype="&xsd;#anyURI"> &xsd;#string </process:parameterType> <rdfs:label>Book Name</rdfs:label> </process:Input> <process:Output rdf:ID="BookISBN"> <process:parameterType rdf:datatype="&xsd;#anyURI"> &bibtex;#Book </process:parameterType> <rdfs:label>Book ISBN</rdfs:label> </process:Output> Book Finder WS Presented by Vassilya Abdulova
<!-- Service description --> <service:Servicerdf:ID="BookPriceService"> <service:presentsrdf:resource="#BookPriceProfile"/> <service:describedByrdf:resource="#BookPriceProcess"/> <service:supportsrdf:resource="#BookPriceGrounding"/> </service:Service> <!-- Profile description --> <mind:BookInformationServicerdf:ID="BookPriceProfile"> <service:presentedByrdf:resource="#BookPriceService"/> <profile:serviceNamexml:lang="en">Book Price</profile:serviceName> <profile:textDescriptionxml:lang="en"> This service returns the price of a book.</profile:textDescription> <profile:hasInputrdf:resource="#BookISBN"/> <profile:hasOutputrdf:resource="#Price"/> </mind:BookInformationService> <!-- Process description --> <process:AtomicProcessrdf:ID="BookPriceProcess"> <service:describesrdf:resource="#BookPriceService"/> <process:hasInputrdf:resource="#BookISBN"/> <process:hasOutputrdf:resource="#Price"/> </process:AtomicProcess> <process:Inputrdf:ID="BookISBN"> <process:parameterTyperdf:datatype="&xsd;#anyURI"> &bibtex;#Book </process:parameterType> <rdfs:label>Book ISBN</rdfs:label> </process:Input> <process:Outputrdf:ID="Price"> <process:parameterTyperdf:datatype="&xsd;#anyURI"> &concepts;#Price </process:parameterType> <rdfs:label>Book Price</rdfs:label> </process:Output> Book Price WS Presented by Vassilya Abdulova
<!-- Service description --> <service:Service rdf:ID="CarFinderService"> <service:presents rdf:resource="#CarFinderProfile"/> <service:describedBy rdf:resource="#CarFinderProcess"/> <service:supports rdf:resource="#CarFinderGrounding"/> </service:Service> <!-- Profile description --> <mind:CarInformationService rdf:ID="CarFinderProfile"> <service:presentedBy rdf:resource="#CarFinderService"/> <profile:serviceName xml:lang="en">Car Finder</profile:serviceName> <profile:textDescription xml:lang="en">This service returns the information of a car whose make and model best matches the given string. </profile:textDescription> <profile:hasInput rdf:resource="#CarMake"/> <profile:hasInput rdf:resource="#CarModel"/> <profile:hasOutput rdf:resource="#CarInfo"/> </mind:CarInformationService> <!-- Process description --> <process:AtomicProcess rdf:ID="CarFinderProcess"> <service:describes rdf:resource="#CarFinderService"/> <process:hasInput rdf:resource="#CarMake"/> <process:hasInput rdf:resource="#CarModel"/> <process:hasOutput rdf:resource="#CarInfo"/> </process:AtomicProcess> <process:Input rdf:ID="CarMake"> <process:parameterType rdf:datatype="&xsd;#anyURI">&xsd;#string </process:parameterType> <rdfs:label>Car Make</rdfs:label> </process:Input> <process:Input rdf:ID="CarModel"> <process:parameterType rdf:datatype="&xsd;#anyURI">&xsd;#string </process:parameterType> <rdfs:label>Car Model</rdfs:label> </process:Input> <process:Output rdf:ID="CarInfo"> <process:parameterType rdf:datatype="&xsd;#anyURI">&xsd;#string </process:parameterType> <rdfs:label>Car Info</rdfs:label> </process:Output> Car Finder WS Presented by Vassilya Abdulova
<!-- Service description --> <service:Service rdf:ID="CarPriceService"> <service:presents rdf:resource="#CarPriceProfile"/> <service:describedBy rdf:resource="#CarPriceProcess"/> <service:supports rdf:resource="#CarPriceGrounding"/> </service:Service> <!-- Profile description --> <mind:CarInformationService rdf:ID="CarPriceProfile"> <service:presentedBy rdf:resource="#CarPriceService"/> <profile:serviceName xml:lang="en">Car Price</profile:serviceName> <profile:textDescription xml:lang="en"> This service returns the price of a car.</profile:textDescription> <profile:hasInput rdf:resource="#CarInfo"/> <profile:hasOutput rdf:resource="#Price"/> </mind:CarInformationService> <!-- Process description --> <process:AtomicProcess rdf:ID="CarPriceProcess"> <service:describes rdf:resource="#CarPriceService"/> <process:hasInput rdf:resource="#CarInfo"/> <process:hasOutput rdf:resource="#Price"/> </process:AtomicProcess> <process:Input rdf:ID="CarInfo"> <process:parameterType rdf:datatype="&xsd;#anyURI"> &xsd;#string </process:parameterType> <rdfs:label>Car Info</rdfs:label> </process:Input> <process:Output rdf:ID="Price"> <process:parameterType rdf:datatype="&xsd;#anyURI"> &concepts;#Price </process:parameterType> <rdfs:label>Car Price</rdfs:label> </process:Output> Car Price WS Presented by Vassilya Abdulova
<!-- Service description --> <service:Service rdf:ID="CurrencyConverterService"> <service:presents rdf:resource="#CurrencyConverterProfile"/> <service:describedBy rdf:resource="#CurrencyConverterProcess"/> <service:supports rdf:resource="#CurrencyConverterGrounding"/> </service:Service> <!-- Profile description --> <mind:CurrencyService rdf:ID="CurrencyConverterProfile"> <service:isPresentedBy rdf:resource="#CurrencyConverterService"/> <profile:serviceName xml:lang="en">Price Converter</profile:serviceName> <profile:textDescription xml:lang="en">Converts the given price to another currency.</profile:textDescription> <profile:hasInput rdf:resource="#Price"/> <profile:hasInput rdf:resource="#Currency"/> <profile:hasOutput rdf:resource="#ConvertedPrice"/> </mind:CurrencyService> <!-- Process description --> <process:AtomicProcess rdf:ID="CurrencyConverterProcess"> <service:describes rdf:resource="#CurrencyConverterService"/> <process:hasInput rdf:resource="#Price"/> <process:hasInput rdf:resource="#Currency"/> <process:hasOutput rdf:resource="#ConvertedPrice"/> </process:AtomicProcess> <process:Input rdf:ID="Price"> <process:parameterType rdf:datatype="&xsd;#anyURI"> &concepts;#Price</process:parameterType> <rdfs:label>Price</rdfs:label> </process:Input> <process:Input rdf:ID="Currency"> <process:parameterType rdf:datatype="&xsd;#anyURI"> ¤cy;#Currency</process:parameterType> <rdfs:label>Currency</rdfs:label> </process:Input> <process:Output rdf:ID="ConvertedPrice"> <process:parameterType rdf:datatype="&xsd;#anyURI"> &concepts;#Price</process:parameterType> <rdfs:label>Converted Price</rdfs:label> </process:Output> Currency Converter WS Presented by Vassilya Abdulova
Discovery of Composable Web Services Composability of Web Services
Composability of Web Services Presented by Vassilya Abdulova
Example Scenario Presented by Vassilya Abdulova
Discovery of Composable Web Services Web Application
Web Application • Developed using Java Server Pages and HTML • JSP technology • separates user interface from content generation • enables designers to change the overall page layout without altering the underlying dynamic content Presented by Vassilya Abdulova
Web Application in JSP Presented by Vassilya Abdulova
Web Application in JSP Presented by Vassilya Abdulova
Discovery of Composable Web Services Conclusion
Conclusion • Successfully implemented an application that extracts relationships between Web Services and decides on whether these services are composable. • Developed five Web Services using OWL-S and tested their composability using the developed application • Developed a web application using JSP, which allows users to select some Web Services and provides composability report to the user. Presented by Vassilya Abdulova
Discovery of Composable Web Services Thank you…