man ray.

it has never been my object to record my dreams, just to realize them.

-man ray-

and thats why man ray is cool and I am not. I just dream all day long or read books.

found here:
http://flickr.com/photos/maggie_le_chat/sets/72057594137050128/

while a longer travel through flickr after searching for photos needed to illustrate powerpoints for this talk I have to give… when you take your time, work can be relaxing.

also click this pic, I can’t embed it here due to restricted copyright.

bringing things together

A way of social metadata and data integration: tagging by humans.

If you have a photo of somebody holding a camera, that somebody may also have uploaded that photo, which can be tagged to your photo. Now If you again take a photo of someone else…

Here a nice example how a chain can be started. Note the great idea of tagging the related photos by notes on the camera:

http://flickr.com/photos/anjeve/262175558/

(all rights reserved on that one, cannot blog it directly, click link)

Doing a dissertation on Semantic Desktop at DFKI

I am in the midst of writing my dissertation about “Information representation on the Semantic Desktop”, something I do since three years every day and which I really like doing.

Thomas Roth Berghofer has written a nice little story on how he sees Doctorate Studies at our research company. Its written in German.

I stumbled into this science business, when I found no other way to continue work on gnowsis, and after two years of doing it, I got somehow used to it and learned the “way of the force”, at least a little. Still, the biggest problem is writing. As you may notice, I don’t care much about grammar or cool wording. So, its a long endeavour to do this, and to do real science is even harder. Coming more from the systems engineering group (my diploma was done at distributed systems group Vienna), my work focusses on the engineering science: how can we build the semantic web. Alas, Today I meet my doctorate “supervisor” and colleague Thomas Roth Berghofer, to check my status.

Promise, I will blog more frequently about my scientific work from now on. For example, about my various publications.

SemWeb introductionary websites by Richard Cyganiak

Cygri posted some websites that show how the Semantic Web may work.

He collects them using the del.icio.us tag “semwebintro”, which I copy from him, so you find a list with more contributions (or also yours?) here:

del.icio.us/tag/semwebintro

The material is practically oriented and is not bloated by theoretical papers on what wishful thingies you may do sometimes in the future given a hypothetical semantic web. I like it as it is: showcases, demos, FAQ, TimBl.

hacking for nepomuk: getting SOAP to run in Eclipse’s OSGI

We are building the desktop semantic web server for Nepomuk at the moment, and I had a look how to use OSGI to start Java services as SOAP services.

At the end, we will start a RDF database, some ontology matchers, text indexing, Data Crawling (Aperture and Beagle++) and many other things using this code, so wait a little and you get a really cool Semantic Desktop platform. If everything works fine, it should be cooler than gnowsis 😉

The code will be open-source in December or January, but if you are really interested, I may bundle this as a zipfile for you (its not Nepomuk relevant, its only a hassle with Eclipse)

UPDATE (12.10.2006): Below oddysee is really odd, today Christopher Tuot informed me where the compiled bundles of knopflerfish are, the are in knopflerfish.org\osgi\jars\axis-osgi\axis-osgi_all-0.1.0.jar, I saw them but didn’t realize they were bundles. So if I just imported this bundle to the Eclipse plugins, it would have worked probably within one hour. Although I still don’t know how to add these precompiled bundles to a developing project like we have.

here is my oddysee:

Running SOAP services from OSGI

_The plan was to run SOAP services from OSGI, as announced:_

  • use Tomcat as webserver (a http server) on port X
  • wrap Tomcat as OSGI service (done already by eclipse)
  • start services as web-applications (done by tomcat)
  • let components (excample: comp-rdfdatabase) start inside this VM and register objects as services: the component registers a web-service (SOAP server object) using AXIS

Mikhail has already submitted some service for points one and two – this package might help me:
https://dev.nepomuk.semanticdesktop.org/browser/trunk/java/org.ungoverned.osgi.bundle.http

_Result: It works, checkout the newest NEPOMUK from https://dev.nepomuk.semanticdesktop.org/repos/trunk/java/_

It took me exactly three hours, here is the steps I took.

Step: read the documentation provided by Christopher Tuot.

good to read, sounds exactly what we need.

  • publish SOAP services
  • use SOAP services as client
  • create WSDL files

Step: checkout the SVN sources using eclipse from the SVN

ha – the SVN is exactly where the doc came from, thats easy:

I decide to checkout the whole SOAP branch somewhere to my disk, outside eclipse. I go for the whole package, because there is an ANT file inside the parent folder of the sub-packages, which seems to indicate that they all belong together.

svn checkout https://www.knopflerfish.org/svn/knopflerfish.org/trunk/osgi/bundles_opt/soap

its 5.81 MB, 195 files, thats nothing.

Step: Legal Check – is the license ok?

at this point, I check if Knoplerfish has a compatible license – they use BSD, ok, no problem here.

Step: look inside axis-osgi

  • this package contains AXIS and WSDL stuff, very small, neat.
  • the bundle.manifest doesn’t require that many knoplerfish things. These two sound bad:
    • Import-Package:
    • org.knopflerfish.service.log,
    • org.knopflerfish.service.axis,

Step: import to eclipse/Nepomuk

I try to run the build.xml in the main soap dir. Fails, it needs the other knoplerfish dependencies “commons-logging”

  • I decide to ignore this and try to import it myself using eclipse.
  • I think again and checkout commons-logging from knoplerfish
  • 68kb, 29 files. nothing.
  • ok, now I have to stop: “java.io.FileNotFoundException: C:\ant\bundlebuild_include.xml (Das System kann den angegebenen Pfad nicht finden)” – the thingy seems to have weird dependencies. But wait, perhaps it just needs all of knoplerfish
  • I download the latest knopflerfish source distro, to get this running quicker (doing this via SVN may cause heavy server load for these guys, I avoid it)
  • At this moment, I notice I downloaded OSGI Knopflerfish already on 27.10.2005, when Mikhail Kotelnikov and I first talked about OSGI 🙂
    • I delete my old knopflerfish 1.3.4 and replace it with the newer 2.0
  • I notice they did not include the optional bundles (where SOAP is in) and I move my previously checkout of SVN to the right place. knopflerfish.org\osgi\bundles_opt
  • ANT still fails – BCEL misses. They said I needed it, but never trust them. Downloading BCEL.
  • OK – knopflerfish compiles: knopflerfish.org\osgi\bundles_opt\soap>ant
    • BUILD SUCCESSFUL
    • Total time: 19 seconds
  • The generated output is in knopflerfish.org\osgi\out and knopflerfish.org\osgi\out\jars

PROBLEMS ok, after all this rubble, I go for Graphical user interface and just start knopflerfish to start the HTTP services using Knopflerfish. Ok, this works and I can install HTTP and AXXIS using some clicks on bundles there: knopflerfish.org\osgi>java -jar framework.jar

Step: rethink how to get Knopflerfish stuff working in Eclipse

All that hassle says: someone did this before.

I decide to make new plugins for Eclipse OSGI, using the Eclipse IDE, and copy the sources and manifest files from knopflerfish.

at this point, I realise, that the Knopflerfish people use Eclipse to code Knopflerfish, so I install the Eclipse IDE plugin to see what it can do for me:

Revelation: all this Knopflerfish testing was useless

but I learned a lot.

I found no straightforward way to compile Knopflerfish into plugins that can be used conveniently from inside eclipse, so I just take the sourcecode of the plugins and make new Eclipse plugins from that, copying the Manifest files into the Eclipse manifests.

  • I copy the code now
  • this took me about 30 minutes, but surely was quicker than all above.
  • if knopflerfish has great new stuff, we cannot easily put it into Nepomuk, until someone finds a way to bundle their bundles as plugins for equinox/eclipse. but 30 minutes effort is affordable.

Step: finishing this and starting a soap service

Ok, until now I have these OSGI bundles in my eclipse:

  • the SOAP service in org.knopflerfish.bundle.axis-soap
  • the log service in org.knopflerfish.log
  • the rdfrepository in org.semanticdesktop.nepomuk.comp.rdfrepository

All of them seem to work, I only get one nullpointerexception when starting the axis-soap:

java.lang.NullPointerException
	at org.knopflerfish.bundle.axis.Activator.setupAxis(Activator.java:109)

This is easy, he wants to find the AXIS configuration in resource resources/axis/server-config.wsdd

I add this to the build.properties of the soap bundle, using the classy graphical editor of Eclipse, rocks.

bin.includes = META-INF/,\
...
resources/axis/

It seems the Eclipse building works differently from the Knopflerfish building process, so I move the contents of resources to the root of the plug-in, most important the resources/axis/.. is now axis/….

  • this makes the product not start, OSGI does not even show the console. We had this before. I delete the “run…” config for the product and start again, ok it starts.
  • now it doesn’t start because commons-logging misses, I notice that we probably have the commons logger already in Mikhail’s logging plugin and faithfully delete this plugin dependency from
  • start/stop

Step: Commit all to SVN

  • I commit the knopflerfish wrapped packages to our Nepomuk SVN. We can fix this later ™
  • I also updated the server product and the server app to start SOAP now

_DONE: We can start Java objects as SOAP services_
Go here to see the started SOAP services:

Go here to see the automatically created WSDL files for out example RDF repository component:

Summary

All in all this took three hours. It was hard, but not impossible. I would recon that it proves that our SOAP in OSGI approach can rock so hard the keyboards will fly. No guarantee that everything will workout, but this is the only code you have to write to start a SOAP service now:


// inside your Bundle Activator

 public void start(BundleContext context) throws Exception {
    // assume RDFRepositoryImpl is your Java Object that should be accessible via SOAP
    ServiceReference srRA = registerObject("remoteFW", new RDFRepositoryImpl(context));
 }

 private ServiceReference registerObject(String name, Object obj) {
    Hashtable ht = new Hashtable();     
    ht.put("SOAP.service.name", name);
    return (context.registerService(obj.getClass().getName(), obj, ht)).getReference();
 }

Java is great …

I wondered how to make the Semantic Web fly, so I wandered around looking for possible deployment of Java based semweb stuff (many semweb apps are written in Java). Reading about webhosting and possibilities to host services like gnowsis as a web-application, stumbling around in the world of tomcat web-hosters, a dicussion with a nice line catches my eye:

As someone said, “java is great for engineering next generation
solutions to enable maximization of developer income by means of enhanced buzzword use”.

Point there. Naively I wondered who the someone may be and googled for the phrase “java is …” resulting in an estimated 3,220,000 buzzword bullshitters. Oh, I forgot to quote the quote, so searching “java is …” with quotes it bakes down to 1 someone who said it.

What can you learn? As many people buzzword-pump-fill their web-writings with above terms, they may be highly paid Java people. I can only say:

Java is great for engineering next generation solutions to enable maximization of developer income by means of enhanced buzzword use.

will there be compilers in heaven?

The day I have infinite time, I can fix all the bugs in gnowsis. I can enter all my wisdom into my semantic desktop and I can exchange my knowledge with others. When I am dead, I am in heaven, because I trust in Jesus. So, when I am dead I have infinite time.

So, the burning question is: will there be computers in heaven? Important theological question, for sure, because worshipping god all day is important, but a relaxing round of starcraft or Quake2 in between would surely please. Ok, perhaps they have much cooler stuff in heaven, but at least coding would be good.

Lets read the relevant literature. The article “will there be harleys in heaven?” by John G. Stackhouse, and recommended to me by Michael Robb has this theory:


When I was 26, my wife and brother prevailed upon me to give up my black Honda motorbike. They were afraid of motorcycles and couldn’t have peace knowing I was traversing Chicago’s expressways and city streets on one. So I gave it up. And I did so with heaven in mind. I theologized that in the life to come, God would give me a whole stable of motorcycles, racing cars, powerboats, airplanes, and other mechanical pleasures I had forgone in this life because of their danger as well as their cost. And if there weren’t motorcycles in heaven, I reasoned, God would provide something better: perhaps airborne “speeders” as in the Star Wars movies.

Star wars speeders. If we have pods and speeders in heaven, we surely have eclipse and Gimp, perhaps infinite bandwith and processing power. So, all those fancy mashups will be free in heaven. cool.

Two things follow for me:
a) the outcome of gnowsis is not so important anyway, when I am dead it is just dust in the wind, soon forgotten
b) I probably won’t need compilers in heaven, when they have 74-Z speederbikes there.

so, if you desperately need a semantic desktop soon, code it yourself. Its all open source. After visiting burning man and knowing that I have 74-Z’s in heaven, there is no pressure to do this myself

😉