I know that it's early days, and many of the experiences gained may prove to be 'what worked well with product X', but I'd like to know what your experiences have been in designing semantic web application architectures that are:
What good patterns did you find, and what did you try that bombed? (and why?) How much overlap did you find with standard patterns of enterprise architecture? Do you think that semantic web technologies are ready for large-scale roll out on the web, and if not what do you think is needed?
asked 27 Oct '09, 21:43
I think you are mixing different abstraction levels: patterns and architecture. Sure, there is the notion of architectural patterns.
However, I have been trying get Semantic Web people interested in patterns for a long time (3 years), and the old guard does not like them.
Luckily, people have accepted the term of "ontology design patterns". You can find papers and workshops on that topic.
On the other hand, the notion of architecture is a very important one to the old Semantic Web guard, as you can see by the number of papers about architectures of Semantic Web applications. This is also evident by the existence of the W3C document "Architecture of the World Wide Web: Volume One".
Now regarding the typical architecture of Semantic Web applications: You are lucky because I wrote a paper just about that. In a thinly veiled effort to get more citations, I will now link to this paper :)
Implementing Semantic Web applications: reference architecture and challenges
Abstract: To date, Semantic Web research has tended to focus on data modelling challenges, at the expense of software architecture and engi- neering issues. Our empirical analysis shows that implementing Semantic Web technologies creates challenges which can affect the whole applica- tion. Standard solutions and best practices for Semantic Web technologies are just emerging. The lack of these has been an obstacle for implementing and deploying applications which exploit Semantic Web technologies for real world use cases.
In this paper we conduct an empirical survey of Semantic Web applica- tions. We use this empirical data to propose a reference architecture for Semantic Web applications, and to identify the four main challenges for implementing the most common functionality related to Semantic Web technologies from a software engineering perspective: (i) the issues in- volved in integrating noisy and heterogeneous data, (ii) the mismatch of data models and APIs between components, (iii) immature and belated best practices and standards, and (iv) the distribution of application logic across components. We describe two orthogonal approaches for mitigating these challenges: (a) simplifying the application architecture by delegat- ing generic functionality to external service providers, and (b) assembling and customising of components provided by software frameworks for rapid development of complete applications.
answered 12 Nov '09, 17:29
One thing I stumpled upon several times is the use of blank nodes in RDF. In my opinion, whenever you model data with RDF/RDFS/OWL, you can do yourself some good avoiding blank nodes where you can. Sure there are use cases where they cannot be avoided, but it's a good idea to think twice about it.
answered 02 Nov '09, 23:22
You could just use the classical object oriented programming patterns and have your objects mapped to RDF (OTM, Object to Triples mapping) for persistence (like topazproject.org) or just for export only like sommer.dev.java.net
Other option is to move away from OOP patterns and embrace the web-like (robust, scalable, etc.) ROC (Resource Oriented Computing) approach, see http://1060research.com/netkernel/roc/
answered 02 Nov '09, 23:11
re Robust: This is maybe a bit obvious, but with a RDBMS backend, you will have tight control over your data, and that can be enforced in your database schema by the RDBMS. You have to code to live without that control if you are using an RDF backend, especially if you are retrieving 3rd party data over the web. RDF data can be a lot more heterogeneous (especially if merged from multiple sources), and you can't 'validate' it in the same way (you can't enforce that all instances of a type will have certain properties for example). This might mean you have to write more code for more possibilities depending on what properties a resource does or doesn't have. On the other hand, this means that the system can be a lot more tolerant in general of hairy data. You can query for only the triples you need (or only the ones that your application will understand), and ignore the rest.
answered 05 Nov '09, 00:18
I guess the one that everyone of use has to keep in mind is that object oriented programming is not the same as processing information in RDF/ontologies. I know I made this mistake in my early days with SW, long long time ago. Eyal Oren did nice research around it with his ActiveRDF. For those who can read Polish, see my review on that subject at http://www.semanticschool.com/2009/10/rdfschema-podsumowanie/
answered 30 Oct '09, 14:44