Tuesday, July 20, 2010

Tuesday, July 13, 2010

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

Monday, May 24, 2010

Monday, May 10, 2010


Copy this HTML to embed it in your webpage or blog:





Thursday, June 14, 2007

installing jesstab jess protege

install jess - unzip the file you downloaded (jess71p8.zip) and thats it installed! To run JessTab, copy the jess.jar file from the place you unzipped the file into the Protege_3.1.1/plugins/JessTab folder.

Friday, October 27, 2006

create complex (semantic web) web service that use library - in IBM websphere

make sure required application library jars (jena's for example) are made available in the following place
web project -> WebContent -> lib

otherwise, exception may happen at server side during server start up

In IBM websphere, it seems that the server do NOT use pre-set external JDK, as can be noticed from the server's prompt below:

** Starting the server ***
************ Start Display Current Environment ************
WebSphere Platform 5.1 [BASE 5.1.0.3 cf30412.02] [JDK 1.4.1 b0344.02] running with process name localhost\localhost\server1 and process id 5276
Host Operating System is Windows XP, version 5.1
Java version = J2RE 1.4.1 IBM Windows 32 build cn1411-20031011 (JIT enabled: jitc), Java Compiler = jitc, Java VM name = Classic VM
was.install.root = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51
user.install.root = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51
Java Home = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51\java\jre
ws.ext.dirs = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/java/lib;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/classes;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/classes;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/lib;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/lib/ext;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/web/help;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime;C:/Program Files/IBM/SQLLIB/java/db2java.zip;C:/Program Files/IBM/WebSphere Studio/Application Developer/v5.1.2/wstools/eclipse/plugins/com.ibm.etools.webservice_5.1.2.3/runtime/worf.jar
Classpath = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/properties;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/properties;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/lib/bootstrap.jar;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/lib/j2ee.jar;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/lib/lmproxy.jar;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/lib/urlprotocols.jar;C:/Program Files/IBM/WebSphere Studio/Application Developer/v5.1.2/wstools/eclipse/plugins/com.ibm.etools.websphere.tools.common_5.1.1.1/runtime/wteServers.jar;C:/Program Files/IBM/WebSphere Studio/Application Developer/v5.1.2/wstools/eclipse/plugins/com.ibm.etools.websphere.tools.common_5.1.1.1/runtime/wasToolsCommon.jar
Java Library path = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/bin;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/java/bin;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51/java/jre/bin;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\eclipse\jre\bin;.;C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\eclipse\jre\bin;c:\ruby\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Symantec\pcAnywhere\;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\ATI Technologies\ATI.ACE\;C:\Program Files\Rational\common;C:\Program Files\Rational\ClearCase\bin;C:\Program Files\QuickTime\QTSystem\;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\PROGRA~1\IBM\SQLLIB\BIN;C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\SSH Communications Security\SSH Secure Shell;C:\Program Files\CVSNT\;C:\java\jdk1.5.0_04\bin

Solution to solve the following error:
java.lang.NoSuchFieldError: actualValueType at com.hp.hpl.jena.datatypes.xsd.XSDDatatype.convertValidatedDataValue(XSDDatatype.java:370)
This is caused by the system's not using jena's xercesImpl.jar and maybe also other xerces jars.
therefore, because we can see from the prompt that the system is using the following jre
JavaHome = C:\Program Files\IBM\WebSphere Studio\Application Developer\v5.1.2\runtimes\base_v51\java\jre
We therefore copy all the jars in D:\APIs\Jena-2.4\lib\*.* to JavaHome\lib\endorsed\



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).



Deploy EAR Web service application in IBM Websphere Application Server:
install the IBM WAS 5.1 - when asking for user ID and password (to start WAS as a service), it means the one that you use to login the windows OS.

Servers --> Application Servers --> server1 --> Process Definition --> Java Virtual Machine --> Generic JVM arguments = -Djava.endorsed.dirs=C:\Progra~1\WebSphere\AppServer\java\jre\lib\endorsed
This is the place that all jars in D:\APIs\Jena-2.4\lib\*.* should be copied into! to override the xercesImpl. Otherwise the following error would be raised at server side when the semantic web service is called:
java.lang.NoSuchFieldError: actualValueType at com.hp.hpl.jena.datatypes.xsd.XSDDatatype.convertValidatedDataValue(XSDDatatype.java:370)

Server configuration bakup:
C:\Program Files\WebSphere\AppServer\bin\backupConfig.bat
C:\Program Files\WebSphere\AppServer\bin\restoreConfig.bat

if can not deploy as Web Service or generate WDSL from the java file, prompting IWAB0398E error in generating WSDL file from java com.ibm.ws.webservices.wsdl.fromJava.Emitter then you need to uninstall Websphere studio application developer , then delete C:\Program Files\IBM\WebSphere Studio, then re-install the WSAD.

-------------------------------

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"