The semantic web. We have all heard about it, the buzz, the hype, and the excitement. Much of it seems well founded once you look deeper into the idea of organizing and making data available in a way that machines can find it, share it, and combine it in new ways that were not considered or even thought of when the data was being collected. This can yield amazing results and discoveries, but to do it, we need to move beyond theory and into practice. That is what this book is about.
Programming the Semantic Web starts with a clear and practical introduction to the idea of the semantic web that will give any web developer the background necessary to comprehend the potential and usefulness of the concept. This is not a book for complete novices as it does anticipate that the reader will have previous experience with programming for the web, including the concepts of relational databases, familiarity with HTML and XML and perhaps a little RDF, and it would be useful to have some knowledge of Python and/or other computer programming languages.
The first part of the book, about 20% of the text, is dedicated to a discussion of what semantics are, how they can be used to express meaning, and why they have the potential to make data storage easily searchable and allow the discovery of new connections that were not considered during the design or collection stages. We learn here how semantic modeling can be expanded with far less pain than a traditional relational database format, allowing the administrator to adjust interfaces and searches quickly in response to the needs of users.
In Part II, the book discusses the practical technological foundations necessary to begin using RDF and other formats to store data in semantic fashion and make it useful. This involves understanding the libraries available to various programming languages and sources of semantic data from which connections may be made or discovered. One of the really powerful aspects here is that you are not constrained to using data from only one database or server, but when the data is organized and stored in a standardized semantic format such as RDF, it may be made available for reading by anyone (if desired) without any risk of it being overwritten by using a query language like SPARQL instead of the better known SQL.
The rest of the book is where the real meat and uniqueness lie. We need the foundation of the previous parts to be certain that everyone has the same understanding of the philosophy and goal of the semantic web. However, the third part of the book is what makes this discussion unique and useful. Here we get a practical overview of toolkits and examples, both code and frameworks, to enable web designers and data wranglers to begin to use the ideas in real life scenarios. Finally we have a way to move beyond all of the discussions and evangelism into implementation! The examples given are clear, useful, practical, and cover all of the sorts of things one might want to do with data. This section is the reason anyone interested in the semantic web should buy the book, and it is also the reason that anyone buying the book should be familiar with coding for the web. The examples are often given in Python and/or Java, using specific toolkits and frameworks like Sesame. The section describes how to publish for internal use as well as how to format and publish data so that others may use it without risking it being corrupted or changed.
The book ends with a short section intended to separate hype from reality and give some vision for where semantic web design might fit in with other technologies already in use, coming alongside already useful tools, not to make them obsolete, but to make them even more beneficial.