How Drupal Implements the Semantic Web Layers
While working on a paper about Drupal as an Electronic Lab Notebook that utilizes Semantic Web technologies, a graduate student asked me for more visuals about what I was trying to do. In response, I came up with the graphic above to describe how Drupal currently relates to the Semantic Web. To me, it presents an interesting focal point for thinking about Drupal as a platform for the Semantic Web. How much is really implemented at this point? And how much of the layer cake does it really make sense to implement with Drupal?
First of all, I think it is important to take into account the strengths and weaknesses of Drupal in the context of an ELN.
Strengths of Drupal
- The Drupal platform has tremendous momentum. It is strong in the areas of education and government, which will probably not be changing platforms in many cases, and so will continue to be a part of and improve upon the Drupal platform. And the commercial sector is growing and will no doubt continue to provide new modules and innovation. This is significant for any application based on Drupal, like our ELN, because it bodes well for a continually thriving ecosystem where different applications can harvest and adapt from one another for relatively little effort. A rising tide will lift all boats.
- The Drupal architecture is adaptable and elegant. This is no doubt one of the reasons for its success and it continues to improve with every iteration.
- Ease of use due to the PHP scripting language and the ubiquity of that and the relative ease of setup and modification.
We could talk around those points at length, mentioning the plethora of modules, the ever-improving security, the great community support as well as commercial offerings for support and so forth. But I believe that in one sense those are derivatives of these major advantages of Drupal listed above.
Weaknesses of Drupal (IMHO)
- The relative slowness of the PHP scripting language. Here is one write-up that explains how PHP lags all of the others in performance.
- Although this is just my opinion, I also find the PHP language less elegant and fun than most of the other scripting languages. It is not a big deal, except that it is more fun to write more object oriented code in Ruby or Python where I can also run and debug the code from the command line and then easily adapt it to a website or a desktop app as needed.
- As a result of the first two, I believe, there are many more code libraries and artifacts written in Ruby, Python, C++ or Java for scientific and technical purposes than there are for PHP. In terms of the Semantic Web, this is probably most relevant for reasoners, but for an ELN this has wider implications.
So for a semantic ELN based on Drupal, what does this mean? How much of the Semantic Web stack should be implemented in Drupal and how much should not? I would suggest the following approach.
- Implement the layers of the Semantic Web that do not require strong computational capabilities in Drupal. These include the parts that are already implemented in Drupal 7 (RDF, RDFa, SPARQL), as well as the upper parts of the diagram like trust (related to social networking) as well the user interface and applications (areas where Drupal already excels).
- For computationally intensive aspects of the Semantic Web stack (e.g., reasoners), use web services or some wrapper for integration of native code (e.g., for rApache) to obtain the functionality while not experiencing the relatively slow execution speeds of PHP (compared to C++ or Java).
- This would seem to be the most feasible approach going forward for how to use Drupal as an ELN, building on its strengths and compensating for its weaknesses by using web services. A little semantics goes a long way, and the contribution that Drupal can make in this area can thus be significant, including as a platform for an ELN that is useful in many situations. It is just important to stay real about what makes sense.