One of the questions I’m being asked somewhat frequently these days, probably because I write about it a lot, is "what can the Semantic Web do for this product/idea/whatever?"
My reaction is always a brief pause while I realize that the person asking the question doesn’t really understand what it’s about. In the end, they’re the one who has to figure that out. The short answer is "it depends on what you’re building". It’s like asking "What will learning how to read and write do for me?" It depends on what you want to do with it, trying to ask somebody else is pointless.
I think this is ultimately a mindset problem. Relational databases have placed limitations on software development that have been in place for so long that people aren’t even conscious of them, they’re just accepted. Like the earth being flat. Or the "fact" that man cannot fly. Software engineers have these limitations drilled into their heads from the time they’re in high school until they graduate college, and then they perpetuate these ideas. When a couple of guys sit around drinking a beer and drawing flowcharts on bar napkins, they have the limitations of a relational database in mind without even consciously thinking about it.
People think of the Semantic Web/Linked Data Web as something tangible and easy to point at, like rounded corners, or AJAX, or software that runs in a browser. Or, more often than not, something "better than Google" in a nebulous kind of way. It’s not.
In my brain, I think of it as a direct replacement for relational databases. This is from a programmer’s perspective, of course. I view it as something that you will plug in in place of the relational database that used to hold all of your stuff. It is a means to let your applications use the Internet itself as its database.
I don’t know what connections between your data and the outside world make sense, unless I’m involved in brainstorming the product. But if you use a relational database you can’t make any of those connections, they’re precluded by your platform. There’s a ton of useful data out there for you to connect to, but it’s up to you to figure out what you need. You must know where you’re going in order to get there.
To me, the Semantic Web is a fundamental shift in software architecture. I’ve said this before, and I’m still convinced of it: I will never build another application on a relational database, even if I don’t plan to use any outside data. Why would I consciously cripple my application?
UPDATE: Kingsley has reminded me that there is indeed a line that needs to be drawn between the RDF store and the old relational database. There is, already, middleware available that will facilitate mixing and matching RDF and relational databases in cases where the relational database is already entrenched. I have corrected the flowchart









