One of the main question about using semantic web is related at why we should use it instead of a common fully functional DBMS. They are powerful, they are easy to use through age tested ORM, they are widely spread, they are solid solution. So why change them with an RDF repository, where actually there are few solutions (Jena and Sesame between all), few documentation, few real examples, and most of all few killer applications that shows the power of semantic web? Actually it is used for research projects, in university environments, and they are finding difficulties to break down into the real market.
The question now is obvious.
Should we enter in the semantic web world, or should we continue to use DBMS?
The answer is quite simple. If you are not curious and you don’t wanna risk your mental health, continue to use DBMS. If you are a bit crazy (in the good way), you like new technologies, and you trust to Barners Lee just because he is famous and has huge groups of people following him, why not try! I’m of course in the second group.
I’ve been reading quite a lot of papers and documents about Semantic web lately, but still I’m not sure about the power of this solution. It seems to be the solution to an open web, where intelligent agents can move from a page to another one, solving all your life questions. The typical example is the possibility to arrange a trip, telling to your agent when, the place, the upper level price and some other info. You will wait few seconds and your agent moving into the semantic web can give you an answer. Sounds cool of course, but in 7 years nothing close to this is born. Of course we need time to spread new technologies, but lot of people are becoming quite inpatient, and are thinking that the semantic web is not a solution, that the semantic web is just a nice idea, that will change the web, but that this change will never become true.
The reasons are several. We can find people that worked for lot of years on Semantic web and got tired to not have results, other people that read what is semantic web from wikipedia and they think this is enough to judge this technology, and other people that see too much complexity on RDF, SPARQL, SWRL, OWL and other strange acronym. The final point is that only who can spend lot of time on learning semantic web, can (maybe), understand its power (if there is). It’s not like learning Ajax, or like making a PHP page, and it takes long time to go into your mind.
The motivation is that Semantic Web sound cool, easy for the “web” word that it has inside, but in reality it is formed from technologies that are not easily spread. The people that work on Semantic Web (mainly university) do not care at all at us, poor developers. The just keep writing technical papers, huge detailed documents, but they forget to present their ideas in an easy way. Until this will not change, hardly the average developer will get into these technology, and hardly he will have the time to reach some results.
From my side I studied semantic web because it was sounding cool (doesn’t it?!) and because my professor wanted to use it for my master thesis. So I implemented a repository RDF and now I’ve a semantic storage system. And now? What can I do with all my triples? What can I do after loosing 2 months instead of 2 days to build up my storage system? As I loosed 2 *months* (and not 2 days) I’ll try to convince you that semantic web is good, and that DBMS is bad, so I’ll be a bit colored… hope you don’t mind.
The advantages of storing the knowledge through triple are many. First of all we can use *reasoners*. They are piece of software that are able to infer new knowledge, using the principles of Programming Logic. For example if I’m the son of my Rici, and Rici is the son of Alfi, then Alfi is my ganpa (also if the direct relation is not defined). I know, its basic, but is just for give you a sight of what prolog means. Then we can easily define some *rules*, through which we can define new knowledge. For example we can define a rule that allow us to say something like
if my son will be back at home later than 2, then tonight disable the heating system in his room
Sounds funny, but its something can be done, and something about I worked in my thesis (building automation).
But still… How many people need these functionalities? We are web developer, we have our framework that do everything for us, and makes us happy. True? For all the time I was implementing the RDF repository, building web services on top of him to make it easily accessible from different components, I was continuously thinking “Why am I not using my DBMS and my ORM… Am I stupid?… I could have done this in 1/20th of the time I’m spending… It would be much more well tested… more stable… bla bla bla”. I did this for long time, and then I said “ok, if people use it, there will be a reason”. Still… I wasn’t sure, and to be honest I’m not right now, but listen at this.
We said we can use reasoners and rule systems, and lot of other tools are available for semantic web, making it tempting. But what I’m thinking right now, what made me writing this article, is that the real power of the semantic web is the ability to make the web connected, in the real way. Lets make an example. Think at your typical web application. It has its DBMS and if you are a good guy it offers some web services through REST. But what happens if you wanna connect this information with something else?
Lets say we have an application that allow me to control my house, or any other building. It’s a cool application, where I can open the light and control my television, lets say all through my shiny new IPhone. Sounds cool, no? But we can do better… what If I wanna connect with the outside world? What if I wanna see information related to all my DVD? If I have a normal DBMS system the solution is this. I should modify the schema of some tables, I should add some functionalities, I should be able to access to a web service that give me back information and I should be able to show them to my IPhone. Sounds still cool, because we can do it, but its getting more complicated, more difficult, and I don’t like this. What if I wanna connect the fridge with a supermarket or even other things?
Lets port this example into the Semantic Web. Lets say all our devices are defined in RDF and that we have a link that identify each DVD we have at home. Then lets say I wanna some information about them. If there are RDF information that describe my DVD on the web I can retrieve these information almost automatically, show them to the user, and be happy because I’ve not done one change to my application. What I’ve done was following the link that represent my DVD, follow it, and find useful and meaningful information.
This mechanism is just powerful because if the web would be *semantic*, I could really move on it without limits. For example I could see the information related to my DVD, then move from them and read some information about the main author, and from these to the opinion of some users… This is the connected web, where we can move and see what we are interested in. It’s powerful, dynamic and flexible, and we do not need to change anything about the application structure.
Still I’m not sure this can be done only with semantic web. During this period I also read a book about RESTful web services, and I really do think that it has lot of common points with semantic web. Both think about a connected web, made from resource, where we move from one to another as the web do today with people. The difference is that this time REST and Semantic Web are thinking at a way to make information easily understandable to machines. I think this combination can be really interesting, but it would need another article :)
So, in the end, I can’t say the semantic web is the solution to all our problems. It’s still difficult, far away from being easily adopted from developers, and its idea is not well understood from people (me either). But I can say its not dead. It has the time to become reality. Maybe we need some new tools to integrate to our preferred frameworks, real and easy example that everybody can understand, or maybe something else… but probably this idea will become true.
Maybe it will change name (Linked Data?), but the web will not be the one we know today.