All the little things & This year of my life

No Gravatar

(This is kindof a double post, as I’ve not posted real stuff for some time)

Its very impressive how our life shapes with all the little things we learn. And its all those little things we change in our lives that makes everything a whole new experience. You think I’m on drugs? Nope, I ain’t!

The most time of my life, I’ve been a logical person who had difficulties in understanding human nature and human behaviour. As a logical person, I advocated that no man should ever lie in no situation, and the world would be a better place. Teachers laughted, schoolmates laughted, some tried to persuade me that this just isn’t true. I only trusted upon my logical view of things and nobody could change my perception. Guess what? The human race would be long eradicated by a nuclear war if no man could lie.

Poldi at the window

These were the times when I trusted my own beliefs most, even when people told me something else. It was a very long stage of my life, but I finally made the next level: trying to understand, why people have another opinion, “try out” for some time if this opinion works for me and then accepting or rejecting that opinion/position/view.

For example: I have always had long hair and split ends. Guess that I didn’t understand that I need to use conditioner to make that go away. My opinion was: chemical stuff can’t help my health or the health of my hair. And I was wrong. When I began using conditioner, the split ends were getting better.

So many things just seem like utter nonsense when you see how people behave sometimes. Like watching casting shows in TV. Like smoking. Like going drinking and dancing in a discotheque. Like making music. I even thought listening to music was a strange behaviour when I was about 14 years old. But after some time, you try things out, and some work for you while others don’t. I began liking music and going out to parties for example, but I never liked smoking even if I tried. Well and then after some time, you even try to understand women - a hopeless attempt, some men might think - but even there you can make progress if you really try to understand their point of view.

What I changed this year

Its just that I have a little bit of free time for the first time in about one year - therefore I’m writing this post. And I’m reflecting on what I changed this very year. Change is usually something people don’t like, because their instincts tell them that change is dangerous and that they should just keep everything as it is, because it won’t get worse that way - that is good for survival, the instinct implies. This instinct is called fear. A small interlude from Dune:

I must not fear.
Fear is the mind-killer.
Fear is the little-death that brings total obliteration.
I will face my fear.
I will permit it to pass over me and through me.
And when it has gone past I will turn the inner eye to see its path.
Where the fear has gone there will be nothing.
Only I will remain.

If you understand that you can choose what you want to change, if you conquer this instinct, you’ll recognize that every change that you do is a positive change in the end. Otherwise you wouldn’t have accepted it … or you just undo it and change back.

And I changed a lot of little things this year. My dear. I hope you my dear reader can reflect the changes you went through this year too. If you want, you should also make a small blog post about what happend this year in your life, because I’d really like to read that. I came to the point where I can say that I love changes - and hearing about them. So this year:

  • I began my diploma thesis on 01.01.2009 and over the course of the year, I needed to unclutter my life to be able to get it done. Some would call this lifehacking. I just stopped playing computer games. Boom. 30% more time. I stopped organizing my week and began organizing my day. Boom. 100% more things got done. I began struturing my online information-digestion through feeds and twitter. Boom. Learning stuff while keeping yourself informed in the shortest time possible. All impressive changes, and needed ones, if you want to use time more effectively.
  • I found a job at the local software company Abelssoft. My salary is fine and didn’t need a car to get to work - again a lot of money saved. My colleagues are very nice and I like working with them - and I also like the work itself, which is a very important matter in being happy, I believe. I also just learned a new programming language (C# .NET) and Abelssoft paid a certificate that measures this skill. Thanks again! You can follow @Abelssoft on Twitter, and this is the website (german verison here).
  • I bought a flat with my girlfriend. A big one. In the times of economic crisis and a drop in (bank) interests, it seemed the smartest thing from a economic perspective. But if you think about the non-economic perspective, its a way more binding statement towards my girlfriend, than a marriage would be. And I’m very happy about my decision. Believe me, the flat is completely new, big and I feel superb when I’m there.
  • I left the church. That means approximately +400€ per year. Nice. I never really believes in god anyways, and if I did, I don’t think Jesus would love me more if I paid the church’s fees.
  • Now for some more little things which changed in my information-digestion: Feedly. After learning what feeds are and how to use them via the Firefox-addon Brief, I just switched to Google Reader to be able to synchronize my feeds (and mainly let those that I have already read not show up anymore) with my iPhone feed-reader. Now that I use Google Reader which in my opinion has a cluttered and unintuitive interface, I found the Feedly-firefox plugin, that lets my feeds look like a newspaper. Hooray, the times of dead paper are gone - and with this kind of interface, maybe I can teach my girlfriend to use feeds someday too.
  • I began listening to podcasts on the bike. Used music before, but riding bike is pretty boring, and I more like listening to music while I’m cleaning up or doing the dishes or something. Fould the following podcasts (both german) to be very interesting: Z and Bitsundso.
  • Another small thing that impact my personal life more than I would have ever imagined: the iPhone. I learned how to use this device as personal organizer (respectively main calendar), ToDo-list, shopping list, feedreader, client for all social networks I use (Twitter, Facebook, Xing, StudiVZ), TV-guide, online-banking-client (damn, I can do bank transfers everywhere with this thing!), (video) camera, instant messenger, radio, podcast-player, music player, navigation-device, pdf-document-reader, voice recorder, gaming device (did you know we have Command and Conquer, Duke Nukem, Need for Speed and many more really good things?), weather information service, eBay-client (which works better and more intuitive than the actual ebay-website), wireless USB-stick, translator, YouTube-client and even TV-reciever (okay, I don’t get too many channels with it). And I can use it as telephone too. You wouldn’t believe it! In one tiny device. All very usable. Thats definitely an upgrade for my personal management.

So I hope your lives got some upgrades too, I’m very pleased with mine this year. For the next year, I’ll have a small list of goals that I want to get done (and that I just entered in my ToDo’s goals section):

  • Try getting more professional at my job.
  • Buy some stuff, so the new flat isn’t all that empty.
  • Write some more blog posts.
  • Main point: I’ll try meeting more friends - I kinda lost sight of them this year and definitely have to change that. But from now on, I’ll have at least my weekends free to tackle that.
  • Play more pen and paper role-playing-games. I miss that, was always fun.
  • Go on vacation with my girl.
  • Get a private server-machine running 24/7. Needs to be low-energy-comsuming and not too expensive. And needs to be silent.
  • Set up a new blog. This wordpress thingy here is too slow, the design isn’t what I want now, and I plain hate PHP. Whats your pick for another blogging platform?
  • Buy a playstation 3 - the Wii has too many bad games, I want more good stuff. And a blueray player too.
  • Pay back the money my parents borrowed me.
  • Upgrade iPhone when there’s time. If you’ll jailbreak, its more time investment, so you gotta plan wisely.

Feel free to answer with your own changes from this year or your plans for next year. Expect to hear more from me more regularly, like every week. Or something like that. Over and out for this week.

Learning to Code - You Really Want to be a Programmer?

No Gravatar

There is a lot that you can do wrong. A lot that I did wrong and that took its time. But after all I think I made it. So here are some simple rules that you should follow if you’re trying to become someone who touches keyboards a lot:

Have a goal. If you just want to be a programmer but don’t know anything that you’d like to program, you’ll have problems keeping yourself motivated. Going into a certain direction of technology is a good idea too, so you know what you can concentrate on.

Just do it. (In fact, this statement is the best you can do in any situation of life.) Every time that you’ll write code, you’ll learn something new that will get you closer to your target.

Never miss an opportunity to code. If you have a project where you’re working / studying, try to take responsibility for some functional piece of software. Documentation or user-testing won’t get you further.

Use an IDE. I began with writing java code in a text editor, compiled it by hand and did so for some time, because I thought “Eclipse looks … complex”. It was an error that cost me soo much time. Embrace all help that you can get, if its an IDE, a build tool or whatever tools you’re friends and colleagues use. They all save time, and thats the stuff life is made of.

Don’t forget to use a console too. There are a lot of graphical things out there that want to make you move the mouse more and the keyboard, but often there are no better solutions than just using the command line. Don’t be afraid of it, you’ll have to learn all the commands sooner or later anyways.

Make a list of skills & experiences that you’d like to have. Making your first objects, Unit-testing, working with threads, building a gui, parsing some HTML or XML, getting data into a database or out of it, using the twitter API, building a website, writing a firefox-plugin; HTTP, HTML, CSS, JavaScript, Flash, (a lot more Web-Technologies), Frameworks of all kinds … write down what you think would be useful whenever you meet something new you want to learn … and then make it some kind of long-term-To-Do-List.

Don’t think too much about inheritance, interfaces, reflection, … you can first live without that or just use it by-the-book and will understand what they do soon.

There’s no magic involved. Just code. Like in JUnit, I somehow thought it would verify that my code has no errors if I just configure it correctly - plain wrong, no magic inside! You have to write code that checks everything in your other code. I also thought Struts2 would make websites by magic - again, just code. There’s nothing visible that you don’t code, its just makes just need very few code to get those websites running.

Framework is a signal word. Its means “Software that makes something easier for you”, but you should be aware that you’ll need to invest some time to learn how to use it. Framework should give you a positive feeling, when you hear it, like “I’m here to help you!”. Again, no magic involved. Usually ;-)

Ask. Use online forums, ask friends or people you work with. Google can’t always help (but don’t ask question that Google can answer easily). There is so much that could be known about technology, that noone knows everything (especially when you don’t have your master in computer sciences and 10 years of field-experience). Just accept that and also accept if others don’t have all your knowledge.

Teach. If someone asks you and you know a solution, then help him. Assume he didn’t understand something basic that you know and be sure that you teach it so he can solve the same task again later on. Never just give someone the code, they won’t gain anything from that.

Find someone to learn with. Someone who is the same stupid guy like you and also doesn’t know how to do that complicated stuff. Where one brain gets stuck, two often find a solution and both learn. Working together on a project is a great way to learn. Just make sure the other person keeps up with you, or vice versa.

Never stop learning. Technology evolves with lightspeed, new languages appear, new technology is invented. If you’re involved with computers, you’ll probably be one of the most-learning-and-training persons of the world. Never assume you’re ready to “just do work”. Where would be the fun then?

Get tech feeds. Or follow twitter-users who have the smae interests that you have. From time to time, there will be interesting articles that will teach you good new stuff.

Don’t be afraid to buy books or magazines. Its not always cheap , but if it saves you time learning you should just spend that little money. You’ll get that money back with your skills later.

Get your head around this object-orientation-thingy. Don’t use GOTO. Don’t put the whole code in the main-method. Classes are just there to produce objects and objects are nothing more than some fields and methods in one instance. If you write a main-method, produce an object that does that work from there. Objects can be tested nicely and are more useful.

Its not just coding. Software design, team management, data structures, design patterns, team-collaboration, algorithms, time management are all with you at that party. And much more. And don’t you ever forget your social skills. They might be the most important after all. Even programmers need friends ;-)

Be careful with your coffeine comsumption. A programmer is a person who converts coffee to code, after all. If you still want to code, connect with me on Twitter. What do you think I missed? Do you have more hints for the newbies? What was not ever told YOU, that you should have known from the start? Just add a comment …

Advertisement as recommendations in blogs

No Gravatar

I just wondered how much money I gained from the clicks on the one google-ad that I put up in the sidebar for over half a year now. Its not even 10$. Well I deacivated AdBlock PLUS for one moment and took a look at the ad, and wondered why anyone ever would click on such an ad - its not nice and the content is not even close to what I’m writing about. Well its main purpose was counting the visitors, but meanwhile I discovered other methods that I use for counting visitors now.

So I took it out. And thought about what could take its place. When I thought about that, I remembered seeing recommendations for books and music in other blogs and thought - why not make advertisements for books and stuff I really would recommend to my readers? So I googled to the amazon-website to take part in the affiliate program. This is the english website and this is the german one. First I saw that the english one give much more benefit to the user than the german one - but as most of my readers are from germany, I took the german program after all.

I entered german and english books that I can truely recommend, some of which are also available in the other language (like some of the HeadFirst books). I wrote a short comment about each item, chose an ad outfit and color - and copy-pasted the code to a wordpress-text-widget. I plan on writing reviews of the ad-items later on (I reviewed Super Smash Bros. Brawl for Wii on german here), but you can watch them now in the sidebar, if your adblocker is off and if you have flash installed.

This way I can recommend interesting things to you, have a nice flash-application and gain more rewards if someone buys on of those books on amazon. Hope you like it! I’d like to see your recommendations too, if its liked to amazon doesn’t matter much to me. Any comments?

OntoVis

No Gravatar

Mein individuelles Projekt “Visualisierung von Studienplänen auf Grundlage ontologiebasierter Studiengangsmodelle” wurde am 03.11.2008 abgegeben.Es werden aktuell noch leichte Änderungen durchgeführt, da ich zum Beispiel noch Fehler ausbügeln möchte und mich noch ein bisschen mit der Programmierung beschäftigen will. Sobald es eine neue Version gibt, lade ich diese hoch.

Meine Motivation für dieses IP war, zum ersten Mal an einem größeren Projekt die vielen erlernten Konzepte der Programmierung auch einmal praktisch anzuwenden und ein paar neue Technologien zu erlernen, die mich sowiso interessierten. Wissensdarstellungen in Ontologien in OWL, XML, HTML, CSS, Java, Struts2, Jena, …

Ich möchte mich bedanken bei Richard Hackelbusch, meinem Betreuer während des IPs. Er hat viele Stunden seiner Zeit geopfert, um mir wissenschaftliches Schreiben einzutrichtern und ist nicht verzweifelt, wenn ich mal wieder ein Problemchen mit meiner Programmierung oder mit einem Diagramm oder auch nur mit LaTex hatte. Er ist auch der Autor der Grundlage meiner Arbeit: der Curricula Mapping Ontology (CMO) und des CMO-Modellinterpreters. Die CMO ist eine Wissensdarstellung des Ablaufes von Studiengängen, in welcher alle vorstellbaren Arten von Veranstaltungen, Bedingungen, Studenten, Ergebnissen, usw. mit all ihren Zusammenhängen abgebildet werden können. Nutzen Universitäten diese in Zukunft zur Modellierung von Studiengängen, so können diese über den Modellinterpreter ausgelesen werden. Das würde bedeuten, dass man den optimalen Ablauf eines Studiums am Rechner durchplanen kann, sich den Ablauf eines Studiengangs mit allen Einzelheiten zu Hauseansehen kann, und vieles mehr.

Die Software OntoVis benutzt den Modellinterpreter zur Visualisierung von Studiengangsmodellen in einer Webanwendung. Studiengangsmodelle können dargestellt werden, und über den Modellinterpreter können Interpretationsschritte vollzogen werden, zum Beispiel die Auswahl eines Nebenfaches oder die Zuordnung eines Ergebnisses zu einer Veranstaltung, wodurch diese als bestanden oder nicht bestanden gewertet werden kann. Bei weiterem Interesse: Die Ausarbeitung können Sie auf Anfrage als PDF bekommen.

aktuelle Software (Stand:13.11.2008, ca. 27MB)

JavaDoc

Changlog 13.11.2008:

- Reperatur der Anzeige

- Optimierung der Geschwindigkeit der Berechnung der Zuordnung von zuweisbaren Results.

Links, die sich in neuen Fenstern (Tabs) öffnen

No Gravatar

Aus gegebenem Anlass eine kleine Umfrage:

Links die sich in neuen Fenstern öffnen...

View Results

Loading ... Loading ...

Mir ist irgendwann aufgefallen, dass man fast automatisch immer neue Fenster öffnen lässt, wenn man neue Links setzt, damit die Leser auf der eigenen Seite bleiben - und das, obwohl es mich auf anderen Seiten nervt! Daher diese Umfrage. Wenn sich genügend Leute entscheiden und ein eindeutiges Ergebnis rauskommt, werde ich das entsprechend hier anpassen.

Geschäftsidee - Wo führt die hin?

No Gravatar

Ihr kennt das doch - oder? Man sitzt bei einer Pizza zusammen, hat eine Idee und denkt sich… “DAS bräuchte man jetzt! DAS ist eine Marktlücke!” Eine kurze Zeit wird philosophiert, ein paar Probleme damit werden aufgezeigt, dann wird die Idee zu den Akten gelegt. Und vielleicht hätte man damit tatsächlich reich werden können. Und vermutlich wird irgendjemand in absehbarer Zukunft damit reich werden. Und dann sagt man: “Ich habs dir doch gesagt! Wir hättens durchziehen sollen!”

Ich bin nun ziemlich oft im Internet unterwegs, gucke mir Trends an, neue Plattformen, suche nach Seiten, die ich interessant finde, oder die mir einen Mehrwert geben. Neue Plattformen und Seiten und Companes mit Potential entstehen wie Sand am Meer, aber kaum eine bricht durch und hat Erfolg. Meist sieht man die Seite, liest sich durch, wozu man das wohl gebrauchen kann, überlegt, … und merkt, dass man damit nix anfangen kann. Zu spezielle Zielgruppe; zu wenig Nutzen um sich auch einer weiteren Community zu registrieren; zu wenig ansprechend; gute Idee - aber nicht gut genug umgesetzt; wichtiger Anwendungsfall, den man gebrauchen hätte können wurde nicht umgesetzt; etc. pp.

Ich hatte nun schon mehrfach den Effekt, dass ich vorm Computer saß und mir dachte, verdammt, das was du jetzt bräuchtest, das gibt es noch nicht, obwohl es dafür eine wirklich große Zielgruppe gäbe. Ich habe den Gedanken, wie man es auch beim Pizzaessen mit Freunden tut, verworfen. Lustigerweise war das aber nicht das letzte Mal, dass mir dieser Gedanke kam. Ich merkte mehrfach, dass ich genau in dieser Situation sogar Geld hätte ausgaben wollen, wenn mir ein solcher Service angeboten würde. Darauf begann ich mich etwas umfassender zu informieren, es gab zwar ähnliche Angebote, aber nicht das, was tatsächlich die breite Masse ansprechen würde. Nach einigen Recherchen glaube ich, einen großen Fisch an der Angel zu haben. Nun fehlt es am Mut und an den Resourcen, so etwas einfach durchzuziehen.

Gibt es hier zufällig jede Menge arbeitslose Informatiker, Webdesigner und Sponsoren, die ein bisschen Geld sinnvoll anlegen möchten? Ich habe irgendwie grade keine Zeit für eine PR-Tour…

Web 3.0 - Semantic Web und KIs

No Gravatar

Auf der Suche nach einen Thema für meine Diplomarbeit brauche ich etwas Hilfe … von DIR, lieber Leser :-) … als Motivation bitte ich das Video auf dieser Seite anzusehen, was ein Paradebeispiel dafür ist, wie eine Suche im Semantic Web Google und Wikipedia ersetzen könnte (Link öffnet sich in neuem Fenster).

Normalerweise beschäftige ich mich in diesem Blog nicht mit technischen Themen, aber ein Blogpost ist für mich der beste Weg, meine Gedanken zu ordnen und vielleicht neue Ideen zu finden. Und euch Lesern vielleicht nahezubringen, wie der nächste Level von Informationen im Internet aussehen könnte. Das Thema meiner Diplomarbeit ist bisher grob umrissen mit den Worten “Web 3.0 made easy”. Diverse Fragen müssen aber zuerst geklärt werden, zum Beispiel, was ist erstmal Web 2.0 und wie kriegen wir einen Versionssprung hin? Was ist Semantic Web, und was ist überhaupt Semantik? Hierbei gilt zu beachten, dass dieser Post keine wissenschaftliche Arbeit darstellt, und vielleicht auch ein bisschen in Richtung Science Fiction abschweift, was hier steht stimmt also nicht erwiesenermaßen - ausserdem ist es recht viel Text und nicht nur ein Blogpost zwischen Tür und Angel.

Von Web 2.0 zu Web 3.0

Web 2.0 könnte im allgemeinen als Mitmach-Web bezeichnet werden. Dass es um Internet geht, sollte der Begriff Web im Namen “Web 2.0″ klar machen. Der Inhalt dieser Seiten wird von Anwendern der Seite gefüllt, und die ersten Exemplare dieser 2.0 Seiten waren EBay und YouTube. Web 2.0 war so erfolgreich, weil sehr viel Content geboten wird, und der Verantwortliche ihn nicht selber erstellen muss, sondern nur Werbe- und andere Gebühren kassiert. Im Gegensatz zur vielgehegten Meinung ist Web 2.0 nicht gleich AJAX, es wurde eher zur selben Zeit eingeführt und findet auf vielen Web 2.0 Seiten Einsatz, aber es handelt sich dabei lediglich um eine Technologie und nicht wie bei Web 2.0 um eine Art Philosophie.

Web 3.0 muss nicht nur im Sinne seiner Namensgebung auf den Web 2.0-Gedanken aufbauen, d. h. auch hier soll der Internetseitenbetreiber seinen Content nur in begrenztem Maße selber bauen müssen; vielmehr ist ein Semantic Web ohne User-Generated Content kaum denkbar. Der Versionssprung von 2.0 zu 3.0 soll erreicht werden, indem das Semantic Web genutzt wird und die semantischen Informationen im Internetähnlich wie bei Web 2.0 von den Usern selbst bereitgestellt wird. Der gewaltige Datenmüllberg, der unstrukturiert im Netz liegt, müsste nach diversen Merkmalen von Menschen strukturiert und mit Bedeutung versehen werden. Das Semantic Web ist hier das Buzzword, was die Nutzung von Bedeutung oder auch Semantik im Internet beschreibt.

Was ist Semantik?

Semantik und Syntax kennen wird vielleicht noch aus dem Deutschunterricht aus der Schule. Wenn ich “Ich bringe Geld zur Bank” sage, hat dies eine Syntax, die die zusammenstehenden Worte grammatisch korrekt beschreibt und mir zum Beispiel vorgibt, dass der Satz nicht “Geld Bank zu bringe ich” heisst. Die Semantik dieses Satze sagt aus, was ich meine, also dass ich etwas Geld nehme, damit zu einem Geldinstitut gehe, und es auf ein Konto einzahle. Die Syntax des Wortes Bank ist die richtige Aneinanderreihung der Buchstaben b a n und k, wobei noch aufgrund des Nomens der erste Buchstabe gross geschrieben werden muss. Die Semantik des Wortes Bank ist in diesem Zusammenhang ein Geldinstitut (das eigentlich sehr viel komplexer zu beschreiben wäre), wohlgemerkt aber nicht eine Parkbank, auf der man sich ausruhen kann.

Semantic Web und Ontologien

Eine Ontologie in dem Sinne ist eine Abbildung menschlichen Wissens einer bestimmten Domäne auf eine computerverständliche Weise. Durch eine Beschreibungssprache namens RDF (Resource Description Framework) kann man so Aussagen wie in natürlicher Sprache computerverständlich abspeichern. Der Satz “Barack Obama gewinnt die US-Wahlen 2008″ könnte in RDF wie folgt modelliert werden:

<rdf:Statement rdf:about="#triple123456">
  <rdf:subject rdf:resource="http://www.example.com/persons/famous/us#barackobama"/>
  <rdf:predicate rdf:resource="http://www.example.com/terms#wins"/>
  <rdf:object rdf:resource="http://www.example.com/2008/events#uselection" />
</rdf:Statement>

Wie man sieht handelt es sich um eine in XML dargestellte Aussage, bei der es ein Subjekt, ein Prädikat und ein Objekt gibt (genau, wie im Deutschunterricht). Dabei sind die einzelnen Elemente auch entsprechend zu beschreiben, damit sie irgendeinen Sinn machen. So gibt es Klassen von Objekten, wie zum Beispiel Personen oder Ereignisse, die man als Konzepte beschreibt. In den Beschreibungen der einzelnen Resourcen (oder Instanzen) unter den entsprechenden Adressen wird auf das Konzept der Resource verwiesen, um zu klären, worum es sich bei der Resource handelt. So könnte unter http://www.example.com/persons/famous/us#barackobama in einer ähnlichen XML-Form beschrieben werden, dass es sich um eine Person handelt, die vielleicht unter www.w3c.org/ontology#person beschrieben wird. Die einzelnen Resourcen werden mit einer URL beschrieben, damit diese einzigartig ist und damit man ihre Beschreibung theoretisch auch unter dieser URL ablegen kann.

Wenn man nun alle wahren Aussagen zusammenfassen würde, so wäre das wissen der Welt für ein Computerprogramm verständlich und dieser könnte Lösungen für Probleme anbieten. Wobei dieses Computerprogramm praktisch eine künstliche Intelligenz sein müsste, weil es nicht wissen kann, wie das Wissen modelliert ist. Und soweit ist man bei der KI-Forschung noch nicht. Und bei den Ontologien wurden auch bisher nur relativ kleine Teilgebiete menschlichen Wissens dokumentiert, darunter Pizzen, amerikanische Präsidenten und demnächst auch Studiengänge. Für Personen wurden mit Sicherheit auch schon diverse Ontologien gebastelt.

Ontologien sind somit eine Art Datenansammlung wie in einer Datenbank, bei denen die einzelnen Tabellen Informationen enthalten und über Verbindungen zu anderen Tabellen Beziehungen geschaffen werden können. Ähnlich wie in Datenbanken kann Data Mining betrieben werden kann, d. h. man versucht über die bekannten Fakten und Informationen, die explizit in der Ontologie modelliert sind, automatisch Informationen zu gewinnen, die normalerweise nicht mittels Automatismen ausgewertet werden könnten und die sonst höchstens mit dem Gehirnschmalz von Menschen gewonnen werden können.

Hierbei haben Ontologien mehrere entscheidende Vorteile gegenüber Datenbanken:

  • Die bestehen aus Text, können also einfach von Menschen gelesen werden. Meist sind die Daten allerdings so komplex und verschachtelt, dass man sie im Endeffekt doch nicht wirklich lesen kann.
  • Text kann problemlos über HTTP übertragen werden und wohl von (fast) jeder Programmier- oder Skriptsprache manipuliert werden, ist also Technologie-”Freundlich”
  • Die Syntax ist standardisiert. So wie alle Datenbanken als Abfragesprache SQL-Dialekte benutzen, damit Menschen sich schnell an andere Datenbanken gewöhnen können, so ist die Syntax standardisiert, damit alle externen Quellen auch etwas mit den Daten anfangen können, ohne sich erst mit dem Daten-Französisch auseinandersetzen zu müssen.

Zukunftsmusik

Nun wäre es traumhaft, *irgendwie* bekanntes Wissen, das z. B. in Wikipedia-Artikeln abgelegt ist, in solche Aussagen zu verwandeln, denn diese sind ja beliebig kombinierbar. Wenn ich also die Aussagen erstelle, dass die Wichtigkeit eines Amtes mit dem Gehalt für die Person zusammenhängt; dass der Gewinn der US-Präsidentschaftswahl demjenigen, der diese Wahl gewinnt, das Amt des US-Präsidenten zuweist, und ich ausserdem modelliere, dass dieses Amt das wichtigste Amt der Welt ist (ja, alles hypothetisch!), dann kann ein Computer daraus ableiten, dass Barack Obama das höchste Gehalt der Welt verdient (da er ja nach obiger Aussage die Wahl gewinnt).

Hier zeigen sich allerdings wieder deutliche Probleme, die man mit der Wissensmodellierung in Ontologien hat:

  • Die Aussagen müssen wahr sein, sonst ist die Ontologie nicht konsistent. Das Wort Ontologie wird in der Logik für eine Aussage verwendet, die immer wahr ist. Wenn Barack Obama also die US-Präsidentschaftswahl nicht gewinnt, dann stimmen die oben angegebenen Zusammenhänge nicht mehr, da eine Aussage falsch ist.
  • Die Domänen müssen überschaubar sein. Wenn ich das Wissen abbilden will, nachdem eine US-Präsidentschaftswahl verläuft, dann scheint das Anfangs noch modellierbar zu sein: Die Personen haben eine Stimme, die sie für die Parteien abgeben können. Wenn mehr Stimmen für Obama abgegeben wurden, als für McCain, dann hat Obama gewonnen. Allerdings ist dieser Sachverhalt ein wenig reduziert im Vergleich zur Wahrheit. In Wirklichkeit müsste das komplette Wahlsystem der USA modelliert sein, mit allen Staaten, 300 Millionen Person-Instanzen mit den unterschiedlichsten Eigenschaften, lokalen Unterschieden und sämtlichen Sonderfällen - aber davon verstehe ich genauso wenig etwas wie der Leser dieses Artikels.
  • Diese können nicht automatisch erstellt werden. Wenn ich einen Text über den US-Wahlkampf in ein Computerprogramm gebe, können hieraus maximal Wahrscheinlichkeiten errechnet werden, welche Wörter zusammengehören könnten. Viele Projekte beschäftigen sich mit der Umwandlung von natürlicher Sprache in semantische Ausdrücke, doch wie man an semantischen Suchmaschinen sieht, funktioniert das nur sehr bedingt.

Wofür Ontologien? Und mehr Probleme!

Die Frage bleibt also: Wenn man sowiso nur kleine Domänen modelliert, lohnen sich dann Ontologien? In den seltensten Fällen, scheint die Antwort ja zu lauten. Denn theoretisch können wir weiterhin standardmäßige spezialisierte Anwendungen schreiben, die die entsprechenden Probleme der jeweiligen Anwendungsdomäne problemlos bewältigen können. Der Aufwand wäre geringer, Schnittstellen könnten einzeln für bestimmte Anwendungsfälle entwickelt werden und alles wäre wie gehabt.

Aber andererseits haben wir hier eine Art Datenbanksystem, dessen Struktur von allen Systemen verstanden wird, so dass Schnittstellen einfacher zu machen sind. Wenn also in dieser Form Informationen gesammelt werden, dann sind sie später benutzbar, in Gegensatz zu einer Word-Datei, aus der nicht sinnvoll Aussagen über ihren Inhalt geschlossen werden können. Das gesamte Wissen einer Domäne wäre extern durch entsprechende Programme auswertbar.

Der Hauptvorteil ist somit, dass diese semantischen Informationen etwas meinen oder bedeuten. So ist es theoretisch möglich, dass jeder Webseiten-Verantwortliche sich selbst als Person computerverständlich modelliert und diese Daten auf seinen Server hinterlegt. So könnte jemand automatisiert von meinem Server auslesen, wie mein Name oder meine Telefonnummer lauten, oder dass ich Student bin, für die Inhalte meiner Webseiten verantwortlich bin oder dass ich einen Führerschein habe. Über einen semantischen Webcrawler könnte man so auch semantische Informationen finden und aggregieren, um beispielsweise eine Statistik darüber anzufertigen, wieviele Leute einen Führerschein haben. Über ein ist_Freund_von-Prädikat könnten diese einzeln modellierten Menschen in einen solzialen Zusammenhang gebracht werden. Wenn ich und meine Freundin also als semantische Informationen auf meinem Webserver abgelegt sind und über eine parship-Beziehung verknüpft sind, dann sagen wir der Welt: Wir sind ein Paar! Ist das Web 3.0? Allein über das Konzept Person und einige Eigenschaften könnte so ein solziales Netzwerk entstehen, was nur noch von einem entsprechenden StudiVZ-Ersatz ausgelesen werden muss.

Wenn ich mich aber nun als Person beschreibe, und dabei ein Konzept nehme, dass als http://www.people.com/ontology#person modelliert wurde und jemand anderes sich als Person beschreibt, die nach einer anderen Ontologie (zum Beispiel http://www.w3c.org/ontology#person) modelliert wurde, dann können diese beiden Personen zuersteinmal nicht verglichen werden, obwohl beide dasselbe Konzept meinen, aber ein unterschiedliches benutzen.

Dies könnte man über ein istGleich-Prädikat zusammenführen, durch welches das eine Konzept als gleich mit einem anderen Konzept verbunden würde.  Trotzdem wären dann weitere Eigenschaften wie z. B. URL1#hat_Führerschein und URL2#besitzt_Führerschein vorhanden, die zwar dasselbe meinen, aber wiederrum nicht als gleich betrachtet werden können, bis sie als gleich identifiziert wurden. An dieser Stelle fehlt noch eine Art automatisches Tool, welches ausgehend von einem oder einer kleinen Menge identifizierter Konzepte beliebige durch Prädikate verbundene Konzepte als gleich erkennt und entsprechende Annotation vornimmt.

Mehr Zukunftsmusik

Wäre ein solches Tool vorhanden, könnte über einen Webcrawler automatisiert nach Ontologien gesucht werden und einem Menschen zwei ähnliche Konzepte vorgeschlagen werden. Je besser dieser Vorschlag-Algorithmus funktioniert, desto öfter würden hier nur sinnvolle Verbindungen abgefragt werden. Zum Beispiel: “URL1#hat_Führerschein istGleich URL2#besitzt_Führerschein?” Antwort ja des Menschen produziert ein entsprechendes Prädikat. Möglicherweise kann der Algorithmus sogar erkennen, dass diese Prädikate gleich sein müssen, wenn er über einen anderen Weg bereits die Semantik von Führerschein und Person auf beiden Seiten feststellen konnte.

Sobald dieser Algorithmus die Konzepte als gleich identifiziert hat, können in einer relativ kurzen Prozedur weitere ähnliche Elemente in beiden Ontologien identifiziert werden, die ebenfalls als gleich bezeichnet werden. Dies könnte helfen, identische Wissensatome als gleich zu erkennen und auf diesen Daten kann man arbeiten. Was für eine Revolution. A ist Gleich A.

Nun würden schnell sehr viele istGleich-Beziehungen entstehen. Um diese abzubauen könnte ein Webcrawler statistisch ermitteln, welches das meistbenutzte Prädikat (zum Beispiel für zusammen sein) bzw. das meistbenutzte Konzept (z. B. für Person) ist, und den für diese Dateien verantwortlichen Personen eine E-Mail schicken, mit Vorschlägen zur Angleichung ihrer Daten. Dies würde in einem Wikipeida ähnlichen Maßstab eine Einigung auf bestimmte Konzepte auslösen.

Wenn man nun noch seine persönliche Personen-Ontologie problemlos erweitern könnte, dann hätten wir eine Form von selbstwachsendem Wissen. Mal angenommen, ich will sagen, dass ich mit meiner Freundin zusammen bin (was vorher noch kein Computer ermitteln konnte) und verweise mittels eines parship-Prädikates auf die URI, unter der ihre Personen-Instanz eindeutig identifiziert ist. Der oben genannte Algorithmus könnte nun nachforschen, was ich damit eigentlich meine, und könnte ähnliche Prädikate anbieten, die andere Internetuser benutzen. Vielleicht ist togetherWith das allgemein benutzte Prädikat, und dieses wird mir zusammen mit einigen anderen Prädikaten zur Auswahl angeboten.

Noch mehr Probleme

Doch was ist mit Datenschutz? Wenn ich meine E-Mail-Adresse für alle sichtbar im Web hinterlege und meine persönlichen Daten mit dieser verknüpft sind und das auch noch in einer allgemein verständlichen Weise, dann würden mir die Semantic-Spammer wahrscheinlich bald die Tür einrennen. Auch möchte Sicherlich Barack Obama nicht alles Wissen, was über ihn existiert, im Internet wissen. Aber das sind natürlich Probleme, mit denen man sich im Informationszeitaler schon jetzt auseinandersetzen muss. Sicher ist aber, das nicht alle diese Daten unverschlüsselt im Web liegen werden. Auch das Firmenintere Wissen einer Firma wird aus offensichtlichen Gründen nicht offen zugänglich sein können, auch wenn es existiert.

Und was ist mit dem ganzen Kram, der bereits aufgeschrieben wurde? Viele Menschen haben sich soviel Mühe gemacht, Diplomarbeiten geschrieben, Erhebungen gemacht, Wissenaquisen durchgeführt … und sie in einem Worddokument oder auf Papier geschrieben. Kann man das nicht einfach in semantische Daten umwandeln?

Was man machen kann, ist beispielsweise statistisch zu ermitteln, wie oft ein Wort in einem Satz vorkommt, und zu welchem Prozentsatz ein anderes Wort in diesem Satz benutzt wird. Man kann möglicherweise auch die einzelnen Wort mit den Benennungen von Konzepten oder Instanzen vergleichen. Vielleicht kann man sogar zu einer Aussage kommen, dass das Wort “Bank” häufig mit dem Wort “Geld” in einem deutschen Satz vorkommt. Von den restlichen Worten eines Satzes könnten wir annehmen, dass es sich dabei um ein Prädikat handelt, oder dass eines darin vorkommt. Nun könnten wir jeden Satz nehmen, und versuchen, Aussagen daraus zu generieren. “Geld kann man bei einer Bank abheben” wäre hierbei schon zu kompliziert, “Banken handeln mit Geld” wäre vielleicht denkbar, wenn der Computer weiß, dass “Banken” auch “Bank” meint. Mit anderen Worten: hier haben wir statistisch Möglichkeiten, aber praktisch gesehen steht uns dass Problem im Weg, dass gemachte Aussagen wahr sein sollen, damit sie die Konsistenz der Ontologie nicht gefährden. Ein Computer kann leider natürliche Sprache nicht verstehen, ansonsten wäre der ganze Semantic Web-Kram ja längst überholt.

Zurück zum Gedanken Web 3.0

Was wäre nun, wenn Fakten semantisch Vorliegen würden? Wem würde das etwas bringen? Es gibt bereits Tools, mit denen man Ontologien anzeigen und erstellen kann, ich nutze momentan Protege, weil dies kostenlos nutzbar ist. Mit diesem oder auch anderen kostenpflichtigen Tools kann eine Ontologie gebaut und Instanzen erzeugt werden.  Freebase sammelt semantische Informationen. Um hier nocheinmal ein bisschen zu motivieren, wie Web 3.0 aussehen kann, würde ich empfehlen sich dieses Video anzusehen, bei der auf Freebase die Erschaffung neuen semantischen Wissens durch einen User auf der Weboberfläche von Freebase demonstriert wird.

Künstliche Intelligenz

So, nun haben wir also einen Haufen semantische Daten. Diese können von spezialisierten Programmen ausgelesen und genutzt werden. Mal angenommen eine recht komplexe Ontologie würde das Wissen von Gesetzestexten in den deutschen Gesetzbüchern beschreiben, könnte ein ebenfalls komplexes Programm bestimmte Umstände einer Straftat nehmen und versuchen, den Straftatbestand laut Gesetz zu ermitteln. Aus diesem und den Daten der beteiligten Personen könnte dann ein Strafmaß ermittelt werden. Dieses komplexe Programm müsste eine künstliche Intelligenz sein, um diverse nicht automatisch zu treffende Entscheidungen irgendwie entscheiden zu können - oder diese Aufgaben an einen Menschen, der das Programm bedient, abgeben.

Solche Entscheidungen können vom Menschen aufgrund seines Wissens getroffen werden. Nicht automatisch zu treffende Entscheidungen beruhen somit auf Fakten, die nicht in der Ontologie enthalten sind. Theoretisch sind aber alle denkbaren entscheidbaren in Ontologien modellierbar. Wenn nun also ein Computerprogramm im Falle einer aufgrund fehlender Bewertungslage nicht zu treffenden Entscheidung einen Menschen konsultiert, dann wird dieser Wissen anwenden, um die Entscheidung zu Fällen. Würde er statt dem Treffen der Entscheidung alle benötigten Konzepte und Prädikate modellieren, so könnte das Programm dieses Problem in Zukunft bei ausreichender Datenlage vermeiden. Hierbei geraten wir allerdings schon bald in die Bereiche von künstlicher Intelligenz. Dass ein Programm schon erkennt, dass Wissen fehlt und dass daher eine Entscheidung nicht zu treffen ist, wäre Teil eines KI-Modells. Wenn man nun einem Programm bzw. einem sogenannten “Agenten” mit der Ontologie spezielle Verfahrenshinweise geben würde, wie mit den Daten der Ontologie umzugehen ist, dann könnte dieser Agent mit diesen Vorgehenshinweisen möglicherweise sein Ziel erfüllen. Agenten sind hierbei Programme, die ein Ziel und bestimmte Vorgehensweisen kennen, um dieses Ziel zu erreichen.

Ein anderes Beispiel: Eine Reisefirma stellt dem Webanwender einen Urlaubsplanungsagenten zur Verfügung. Dieser nimmt bestimmte Eingaben über die Art, den Zeitpunkt und die maximalen Kosten sowie bestimmte Umgebungsparameter als Grundlage für seine Recherchen. Dies könnte er mit einer Datenbankabfrage über alle erfassten Daten des Reiseportals machen, und eine Antwort zurückliefern. Oder aber er bedient sich einer Ontologie, die eine Reise modelliert, und versucht Anhand dieser alle einzelen Punkte der Reise zu planen. Wenn er 7 Tage “Tauchurlaub” und “mediterranes Klima” bei maximal 1500€ für 2 Personen in der Herbstferien als Eingabe bekommt, muss er zuerst alle Orte in mediterranem Klima finden, an denen man Tauchen kann, dann überprüfen, wieviel Geld die einzelnen Hotels für eine Woche und 2 Personen Urlaub nehmen. Aufgrund der Tatsache, dass ein Tauchurlaub gewünscht wird muss ausserdem noch ein Preis für’s Tauchen im jeweiligen Ort bestimmt werden. Dann könnten noch Randbedingungen abgefragt werden. Wenn beispielsweise das Urlaubsland das Prädikat benötigt hat und dies auf eine Instanz von Einreiseerlaubnis zeigt, dann muss dem Agenten klar werden, dass dies dem Anwender weitergeleitet werden muss, zusätzlich zu der Information, wo man diese Einreiseerlaubnis bekommen kann, insofern solche Daten modelliert sind.

Die Prozedur des Datenabfragens ist hierbei vielleicht in einer Wissensdarstellung namens http:www.tui.de/ontology/reiseplanung.owl gespeichert. Dies würde die Prozedurale Logik von der Programmierung des Agenten auf die Wissensdarstellung des Reiseanbieters verlegen, so dass externe Agenten leichter verstehen könnten, was man mit den semantischen Daten der Webseite anfangen kann. Vielleicht könnt mit solchen Daten irgendwann ein generischer Browser-Agent auf eine Internetseite stoßen und dem Benutzer anbieten, eine Reise zu planen. Davon sind wir allerdings noch sehr weit entfernt, fürchte ich. Vielleicht fürchte ich auch, dass wir davon gar nicht mehr soweit entfernt sind ;-)

Auf dem Weg dorthin

Nun will ich ja keine Doktorarbeit schreiben, sondern eine Diplomarbeit, und die geht nicht über 3 Jahre sondern über 6 Monate. Außerdem habe ich die Möglichkeit, diese bei RedDot zu schreiben, und diese produzieren ein Content Management System mit einem entsprechenden dahinter laufenden Serverprodukt. Über dieses können Redakteure Internetseiten für ihre Firma erstellen bzw. Inhalte bereitstellen, ohne dafür etwas von HTML, CSS, PHP, o. ä. verstehen zu müssen. Das bedeutet erstens, dass die Redakteure, die mit diesem System arbeiten, kein technisches Verständnis haben müssen und mit Sicherheit niemals das Wort Ontologie hören wollen, und zweitens, dass man mit diesem System vielleicht die Semantik relativ unbemerkt von der Welt im Web streuen kann, ohne dass es jemanden stört. Andererseits bedeutet das auch, dass die anzustrebende Domäne einer Ontologie nicht festzulegen wäre, denn ein Kunde von Reddot könnte Autos herstellen, Reisen anbieten oder vielleicht Fernsehen machen.

Meine bisherigen Ideen sind, vielleicht eine Semantik-gestützte Personen-Verwaltung zu entwerfen, oder aber eine semantische Dateiverwaltung. Die Personen-Idee habe ich ja oben bereits vorgestellt, diese wäre wahrscheinlich sehr gut geeignet, eine “gewöhnliche” Personenverwaltung zu ersetzen. Hier kann man sich beliebige Verknüpfungen zu Themenbereichen, bisherigen Erfahrungen, Interessensgebieten, Qualifizierungen, Kontakten, Freundschaften und vielem mehr vorstellen - im Gegensatz zu festen Textfeldern. Die Dateiverwaltung könnte ähnlich sein: Ein Bild oder Video könnte so ähnlich wie beim Tagging einem Thema oder Bereich zugeordnet werden, einem Ort an dem es geschossen wurde, oder einem Zeitpunkt oder Zeitbereich. Der künstlerische Hintergrund könnte angegeben werden, die Beziehung zu Personen oder anderen Objekten der realen Welt. Wenn man beides zusammen einsetzen würde könnte zum Beispiel auch das Video-Team abgebildet werden. Dann wären Fragen des Chefs wie “Hey Redakteur, besorge mir mal die E-Mailadressen alle Videoregisseure, die Videos zum Thema US-Wahlen gemacht haben, ich will die was fragen” nicht mehr mit einem ratlosen Gesichtsausdruck des Redakteurs zu beantworten, sondern mit einer Anfrage an ein entsprechendes Programm, das diese Beziehungen ermitteln kann. Ähnlich wie in Paralax werden dann alle Videos gesucht, die als Thema die US-Wahlen 2008 haben, von diesen die Redakteure, und von denen die E-Mailadressen. Zukunftsmusik? Na ja, mit Datenbanken ist sowas ja heutzutage prinzipiell auch denkbar. Wenn aber nun der Redakteur von der Autofirma in die Reisefirma wechselt und dort dieselbe Anfrage stellen kann? Oder man auf externe semantische Daten zurückgreifen will?

Na ja als zweite Idee wäre da die Modellierung eine speziellen Anwendungsdomäne für einen Kunden von Reddot denkbar, um erstmal die Möglichkeiten auszuloten, wie man solche Informationen in einem CMS überhaupt nutzen kann.

Auch eine Anbindung an Freebase oder eine andere Ontologie wäre als dritte Idee denkbar. Vielleicht kann ein Kunde seine Webinhalte mit dort vorhandenen Instanzen verknüpfen. So könnte man sich bei einem Autohersteller vielleicht vorstellen, dass er eine kleine Box oder Sidebar mit zusätzlichen Informationen zum Thema auf der aktuellen Seite anbietet. Diese Box könnte dann entweder auf ein konkret semantisch modelliertes Thema Freebase abfragen und zusätzliche Links anbieten oder Informationen darstellen. Oder aber die Seite nach Text durchsuchen, welcher zu modellierten Instanzen in Freebase passt, und die dazu hinterlegten Informationen abfragt. Auch könnte man sich vorstellen, dass die Redakteure nicht verfügbare Informationen über das CMS in Freebase einstellen können, so dass eine solche Infobox auch mit zusätzlichen externen Informationen aufwarten kann, falls noch keine Benutzer-modellierten Daten vorliegen. In jedem Fall sollten die einzelnen erstellten Internetseiten sie selbst und das behandelte Thema beschreiben, sowie eine Metadaten semantisch Hinterlegen, die ansonsten nur in die Datenbank des CMS fliessen würden.

Hilfe

Nun wo ich ein paar Einblicke vermittelt habe und meine Sichtweise der Situation dargestellt habe, hoffe ich, dass dem einen oder anderen unter euch vielleicht eine Idee gekommen sein könnte, was man sonst noch so im Rahmen einer Diplomarbeit machen könnte, wenn man ein weitreichendes CMS zur Verfügung hat und vielleicht die großartigen Ideen des Semantic Web nutzen will. Dann schreibt mir bitte einen Kommentar oder nehmt über mein Kontaktformular oder über ideen(at)ithoughts.de Kontakt mit mir auf. Ich würde mich sehr freuen und definitiv Rückmeldung geben :-)

You seem to be using an unsafe, outdated browser. Click here to install the world's fastest and safest browser for free! X