OWLSBuilder is a library for building OWL-S service descriptions from java web services. The library supports the generation of service ontology descriptions from annotated java classes in much the same way as JAX-WS does for conventional web services.
Underlying services must be described according to JAX-WS conventions, these services can be deployed in any compatible JAX-WS container (e.g. CXF , AXIS2, Glassfish etc).
The tool supports the generation of OWL-S service descriptions (including profiles, atomic processes, and (currently WSDL and Java) groundings).
OWLSBuilder can be run in two modes: on-line or off-line. In on-line mode, it is deployed on the Apache CXF web service framework, and service descriptions can be generated on the fly for services deployed with OWLSBuilder annotations. Off-line mode is a simple command line interface which takes a compiled service with the appropriate annotations, and outputs a service description: it allows for loading ontologies from a local directory, making it of running truly off-line.
Getting the software
The sotware and source package is available from sourceforge:
You need to get:
- apache-cxf 2.2.x
- Owl-s API 3.0 (you need our modified version for WSDL groundings to work)
- JAX-WS (2.1 works, 2.0 (bundled in java 6) might not)
- ALIVE service repository tools > 0.2.5
all of the required dependencies can be checked out of SVN here:
To compile, edit
build.properties and, set
dep.dir to the location of the above jars, and
cxf.dir to the root of the CXF directory.
- "Fixed" Owl-S API: The library uses the OWL-S API v3.0 while working on the plugin we discovered a number of minor bugs, while they are being fixed in the main line please use our version of the library. The changes do not effect the interface.
- Qualified namespaces:
The OWL-S API and the generated groundings require that soap body elements are qualified by a namespace, this is not the case by default in JAXB, to fix this add the following to the package-info.java in your service classes:
@javax.xml.bind.annotation.XmlSchema( attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)