|
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? |
|
I've started writing up some application patterns as part of this work here: |
|
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. |
|
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/ |
|
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/ |


NB: I'm after application architectures, rather than discussions about the usefulness of specific semantic web technologies. As such I'm interested in, for example, how you coped with load, what application designs (not frameworks) worked for you. And what adaptations you had to make (if any) to move from standard RDBMS-centric design practices to ones that utilise semantic web technologies. the answers should try to be relevant to those deciding if they can solve their problems using SW, and provide a common app-arch vocab for exchange of ideas.