Architecture
The architecture of the so called WSRF2OWL-S tool is shown below. The main components of the architecture are WSRF2OWL-S engine, translator and GOMOWL-S API. GOMOWL-S API is an extension of the Mindswap's OWL-S API; it defines additional vocabulary, converters and extensions needed by the WSRF (e.g. SimpleEffect, DataObjectInput, etc.). The translation procedure is quite complex and covers the areas already described in previous sections. The translation starts with a configuration and an URL of the WSDL document. The translator parses the WSDL document extracting the operations, port-types, inputs, outputs as well as resource properties. A combination of the WSDL4J, Axis WSDL and Globus Toolkit WSDL utilities are used in the process. The translator then generates for each WSDL operation a skeleton of the OWL-S document. Then it creates the inputs, outputs, preconditions and effects and maps the elements to the ontological concepts defined in the configuration. If needed, it will create an ontology, which models the resource properties of the given services. The GOMOWL-S API can be used to extend the OWL-S by the domain dependent constructs, e.g. FloodForecastingWSRFProfile, DataObjectInput, SimpleEffect, etc. The outcome of the process is OWL-S document describing the web service operations, which are then be composed into the workflow. Additionally a GridSphere portlet was developed to provide a graphical user interface for the tool. It supports browsing of the concepts for any given ontology, associating the concepts with the WSDL elements and generation of the OWL-S documents. An automated annotation procedure based on the case-based reasoning is also integrated.
Getting Started
After downloading the tarball, untar and setup the location of your java distribution, e.g. (in BASH):
Bash# export JAVA_HOME=/path_to_your_java/j2sdk1.4.2_02
Finally you can try to run the tool:
Bash# ./wsrf2owl-s.sh –help
If everything went well, you should be able to see this output:
WSRF2OWL-S tool by Marian.Babik@saske.sk
Usage: WSRF2OWLS [-i input_uri e.g. file:/home.../x_service.wsdl]
[-o output_dir] [-ns owl-s_namespace] [-help this_help]
[-p properties_file] [-n service_name - optional]
[-d dump_methods … given services into properties_file]
[-c process imports]
In order to explain the configuration and owl-s conversion we will use a sample wsdl file located at
Barnes & Nobles Price Finder. Barnes and Nobles Price Finder is a simple service, which returns the price of a book as advertised in Barnes and Nobles web site given the ISBN Number. A sample configuration file for the service is (sample.properties):
#Thu Sep 29 12:33:22 CEST 2005
BNQuoteService.getPrice.return=http://www.mindswap.org/2004/owl-s/concepts.owl#Price
BNQuoteService.getPrice.isbn=http://purl.oclc.org/NET/nknouf/ns/bibtex#Book
The configuration file is just a simple java Properties file. The format for the mapping is:
WSDLServiceName.WSDLOperation.WSDLInput/Output = URL_of_OWL_concept
The WSDL part (i.e. WSDLServiceName.WSDLOperation, etc.) can be generated by running:
./wsrf2owl-s.sh -i http://www.xmethods.net/sd/2001/BNQuoteService.wsdl
-ns "http://kwfgrid.net/dummy" -p sample.properties -d
This will create the sample.properties file containing following WSDL information:
#Thu Sep 29 12:56:20 CEST 2005
BNQuoteService.getPrice.return=
BNQuoteService.getPrice.isbn=
You should then manually type in the concepts, which these inputs/outputs will point to as was already shown. You can then generate the OWL-S by running:
./wsrf2owl-s.sh -i http://www.xmethods.net/sd/2001/BNQuoteService.wsdl
-ns "http://kwfgrid.net/sample.owl" -p sample.properties -o /output_dir/
Since sometimes you will need more then just simple input/output concepts mapping, you can further specify effects and preconditions as follows:
BNQuoteService.getPrice.return=effect|http://url.to.domain.ontology/sample.owl#hasPrice
BNQuoteService.getPrice.isbn=http://purl.oclc.org/NET/nknouf/ns/bibtex#Book,
condition|http://url.to.domain.ontology/sample.owl#hasISBN
You can find more examples in ffsc.properties (FFSC configuration file) located in the root of the release.
Support for the DataInputObjects and DataOutputObjects (see Data Ontology for more details) has been added to the current version of the tool. A sample configuration for the CTM VISSIMProxy service can be located in ctm.properties.
The current version also supports imports, e.g. for a given concept http://gom.kwfgrid.net/gom/ontology/DomainDataOntology/CTM#Excel it will load the ontology http://gom.kwfgrid.net/gom/ontology/DomainDataOntology/CTM and will put it into the OWL imports in the OWL-S file, thus producing valid OWL-S. This however means that this ontology and its concepts has to be valid and available online, otherwise an error or timeout will occur. If for the given ontology the referenced concept is missing, a fake one will be created in the OWL-S. This will result in the inconsistent GOM, so please, make sure you remove all the fake concepts before loading the ontology into the GOM. A sample session with imports enabled is shown below:
[bb@localhost wsrf2owls]$ sh wsrf2owl-s.sh -i http://zeus72.cyf-kr.edu.pl/CTM01/services/VISSIMProxy?wsdl
-ns "http://dummy.org/test.owl" -p sample2.properties -o . -c
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart).
Attachment support is disabled.
VISSIMProxyService_runSimulation_http://zeus72.cyf-kr.edu.pl/CTM01/services/VISSIMProxy?wsdl#params
Importing: http://gom.kwfgrid.net/gom/ontology/DomainApplicationOntology/CTM
VISSIMProxyService_runSimulation_http://zeus72.cyf-kr.edu.pl/CTM01/services/VISSIMProxy?wsdl#traffic_flow_data_url
Importing: http://gom.kwfgrid.net/ontology/ServiceOntology
Importing: http://gom.kwfgrid.net/gom/ontology/DomainDataOntology/CTM
Importing: http://gom.kwfgrid.net/ontology/DataOntology
VISSIMProxyService__runSimulation__http://zeus72.cyf-kr.edu.pl/CTM01/services/VISSIMProxy?wsdl#runSimulationReturn