



For a long time, researchers want to present their research work in the context of a domain, with citations to other related information. After publication, scientists often expect that data and other research materials can be shared with other interested readers. However, in most case, they will have to request and the authors then respond, both manually. The semantic web technology opens up possibilities to facilitate these processes, by enabling data owners to semantically enrich, share and interlink their resources more efficiently. In oceanography, this is even true as the work will often dependent on a long line of associated activities and stakeholders. National Oceanography Center (NOC) in Southampton has started a project called “Multiuse of Ocean data” that focuses on the semantic creation and linkage of special oceanography data [2]. E.g., In the Ferrybox project [1], a suite of environmental sensors are selected, tested and installed on ships in order to collect various observation data for scientific marine research. The operation involves quite a few processes in collaboration.
· Sensors and instruments – sensors and instrumental parts are tested in different workshops by many people, and assembled prior to deployment.
· Communication – different communication methods, e.g., rs232, wifi, or satellite, are needed to according to the deployment case.
· Deployment and ship management – engineers and marine resources are needed in coordination for a successful deployment.
· Service and maintenance – regular ship visits are planned to make sure the instrument is working in good order.
· Calibration - Due to bio-fouling and other inherit measurement drifting, sensors needed to be disintegrated from the instrument for calibration from time to time. This can be carried out in NOCS Lab or sent back to their manufactories for special calibration. In most cases, a record needs to be created in order to manage these operations.
· Data conversion and management – Special datasets are needed for different purposes ranging from real time status monitoring to long time observation datasets archive. The latter needs to be archive in a data center (BODC in this case).
· Scientific discovery – scientists carry out research by studying and analyzing these observation datasets. Scientific discoveries are often published with citation to datasets and deployment. Feedbacks are often provided to indicate what further observations are needed.
From the tasks above, several categories of roles can be identified, namely engineers, marine operator, data manager and scientists. A semantic annotation process can help them to describe their resources more efficiently. E.g., sensor engineers can describe sensor capability. This helps instrument engineers to decide which sensors to use for an instrument. It also indicates when calibration will be needed. Following successful deployment, data managers will need to indicate provenance information of the datasets so that they can be archived with a metadata record to help discovery and reuse. Scientists cite these datasets when producing scientific discovery can also interlink their scientific publication to other special research data such as the observation datasets and its provenance – elements related to their collection. In this way, stakeholders (roles) in above tasks will be able to generate RDF annotations using a shared and co-authored ontology. Resources presented in these different task aspects will be able to be described formally to form a semantic-rich and inter-connected graph. RDF and related standards such as RDFa, SKOS, FOAF and SPARQL can be used to enhance reuse and repurposing of research data. For example, an interested reader who read a scientific publication will be able to follow the semantic interlinks to reach the cited datasets, information of its hosting observation, provenance, and how it was used in other scientific publications for comparison, hence gain a better understanding of the network of resources underlying this piece of work. Special research data can be also used to generate other interesting aggregators and syndication, such as RSS and ATOM to encourage further external dissemination.
1. Hydes, David J, Campbell, Jon M, Dunning, Justin, Systematic Oceanographic Data Collected by FerryBox, Sea Technology, Feb 2004
2. Tao, Feng, Campbell, Jon, Pagnani, Maureen and Griffiths, Gwyn (2009) Collaborative ocean resource interoperability - multi-use of ocean data on the semantic web. In, The 6th Annual European Semantic Web Conference (ESWC2009). Heidelberg, Germany, Springer. (Lecture Notes in Computer Science). LNCS 5554, pp. 753–767, 2009
Client problem solution:
WS Client generated from WSDL, when run the client, it may report the following error:
java.lang.ExceptionInInitializerErrorat java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Unknown Source)at com.ibm.ws.webservices.engine.encoding.DefaultTypeMappingImpl
I would like to add that when you generate a web service from a WSDL in WSAD 5.1.2 you must also see this problem. This time, it was because the classpath is set to use WAS_50_PLUGINDIR/lib/webservices.jar which translates to D:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v5_stub\lib\webservices.jar in both the webapp and the client java app. I corrected this by changing webservices.jar to be picked up from D:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51\lib\webservices.jar and the problem vanished. I used IBM Java 1.4 successfully (maybe because I am using WSAD5.1.2).
-------------------------------
Note that OntRegistry uses protege owl api, which requires jdk 1.5. Make sure you are not using jdk 1.4, otherwise expect the following error:
java.lang.UnsupportedClassVersionError: edu/stanford/smi/protegex/owl/model/impl/DefaultRDFIndividual (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main"