Most Helpful Customer Reviews
16 of 16 people found the following review helpful:
5.0 out of 5 stars
A very useful introduction to the topic with practical applications, July 30, 2009
This review is from: Programming the Semantic Web (Paperback)
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.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
34 of 41 people found the following review helpful:
3.0 out of 5 stars
Welcomed book, but some disappointments, August 17, 2009
This review is from: Programming the Semantic Web (Paperback)
While I am glad to see books about Semantic Web technologies that are written specifically for software developers, I am disappointed that I cannot give this book more than 3 stars. Why? The book contains misleading statements that may lead a developer new to these technologies astray and encourage non-optimal practices. I will give a few examples illustrating what I mean:
-On page 131, the example explaining property domains may lead the reader to believe that having two separate domain statements (ex:hasEyeColor rdfs: domain ex:Human and ex:hasEyeColor rdfs: domain ex:Animal) is "the" way to do things. Such a practice creates issues which are not properly explained. And the diagram 6-1 illustrating this modeling example is wrong. Looking at it, the reader is left believing that the domain of ex:hasEyeColor property is a universe of things that includes Humans and Animals, while in reality it is an intersection of Humans and Animals. If someone were now to add another domain triple such as ex:hasEyeColor rdfs: domain ex:Dog, the domain would become the intersection of Humans, Animals and Dogs and a conclusion could be drawn that Jamie Taylor is a dog - obviously, not what was intended.
-On page 140 it is stated that RDF schemas are usually stored in the same graph with the data they represent. This is not true and, to the contrary, is considered to be a poor practice - keeping schema and data separate is important for schema reuse. Did the writers intended to say that they are usually put in the same triple store? The statement is confusing and it is contradicted by the book examples such as those using FOAF. It is clear that FOAF schema and FOAF data files are separate graphs.
-While modularity is talked about ("semantic data model is not a monolithic thing"), the key mechanisms used for modularity (e.g., imports and named graphs) are not mentioned anywhere.
-Describing SPARQL as a "read only" language is not correct. While INSERT or DELETE keywords are not part of SPARQL 1.0, the CONSTRUCT keyword provides a way to create new triples. Developers can also use CONSTRUCT to identify triples to be deleted. I also believe it would have been useful to mention that Jena API (arguably the API most used by the developers building Semantic Web applications) already directly implements inserts and deletes and this implementation is being used in the upcoming SPARQL 2.0 spec. Perhaps, this was not known at the time certain chapters of the book were written.
-The cursory of SPARQL is disappointing. SPARQL mastery is as important to the developer working with the Semantic Web data as SQL mastery is to the developer working with the relational data.
-The blank node example of address raised a concern that the imprecise language used in describing the motivations for using the blank node does not make it clear that a blank nodes can never be referenced across graphs.
In conclusion, the book does a good job covering a broad range of topics in a very concrete, down-to-earth way. It directly addresses some of the key misconceptions about the Semantic Web standards. For example, it makes it very clear that RDF is a data model and RDF/XML is simply one serialization of it. The depth of coverage is insufficient and uneven impacting the book's effectiveness for developers. Some choices of the areas authors decided to focus on are questionable. For example, I would have preferred to see less coverage of Freebase and more of SPARQL. I am also left wondering how much of a peer review the book had received prior to publication. An even modestly rigorous review process would probably have caught the most notable errors, imprecisions and omissions and resulted in a stronger book.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
8 of 8 people found the following review helpful:
4.0 out of 5 stars
A solid and worthwhile introduction to semantic data and RDF, July 23, 2009
This review is from: Programming the Semantic Web (Paperback)
Note: this review is based on a pre-release copy of the book.
When I first encountered RDF years ago, I wrote it off. It seemed unlikely that it would get much use. But the recent arrival of collections of so-called 'semantic' data via organizations like Freebase, has made me rethink that position. Of course, figuring out how to make use of this data is another proposition, but Programming the Semantic Web serves as a solid introduction and survey of the tools and techniques necessary to make it into something worth your effort.
I can say that after reading this book, I finally get the concept of semantic data and the relationships it defines. The book begins by walking through the building of a basic triple-store (that is, a data store full of triples -- if you don't know what they are, you should read the book). This and the ensuing discussion of the graph structures built from these triples leads into an introduction to RDF. In this context, it really starts to make sense.
The examples in this book are quite useful and not too abstract. For instance, one of the examples shows how to take legacy data from an RDBMS and generate an RDF graph, going from implicit to explicit semantics. Another uses a programmatic version of the popular 'Six Degrees of Kevin Bacon' trivia game to show how you can use a semantic database of movie data to find the shortest path between two given actors (one, clearly, being the ever-popular Kevin Bacon). The final example in the book shows in brief how you might build a system for managing job listings for various companies. The example is thorough and reasonably complex, but still manages to cover a lot of ground, including integration with libraries for visualizing the data. The majority of the examples in the book are written in Python, though Java makes an appearance in the toolkit chapter, which covers various libraries available for working with RDF.
One item of note is that in the conclusion, the authors do stress caution about this technology or at least particular approaches or tools. It's important to sort out the hype from the real deal and it takes a realists perspective to understand that semantic web tools have been considered the 'next great thing' by various pundits for much of the last decade -- clearly it's not what some envisioned back when the ideas were first brought forth.
I can't say that I'm going to be rushing out and building next great application after having read this book, nor will I be looking at bring RDF into each system I build. But I do have an appreciation for what semantic data and RDF can bring to aspects of future projects I might work on. I would have enjoyed seeing more details about using external, non-semantic data source and using that data in a semantic graph, but given the range of material to cover, I can understand that this could be an entire book of it's own.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
|