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:

  • Robust
  • Scalable
  • Extensible
  • Secure
  • Maintainable
  • Reusable
  • *-able

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

Andrew's gravatar image

Andrew ♦♦
accept rate: 30%

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.

(03 Nov '09, 21:44) Andrew ♦♦ Andrew's gravatar image

I've started writing up some application patterns as part of this work here:


permanent link

answered 11 Jun '10, 15:14

ldodds's gravatar image

accept rate: 32%

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 :)

Link to PDF

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.

permanent link

answered 12 Nov '09, 17:29

2ndmetaman's gravatar image

accept rate: 50%

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.

permanent link

answered 02 Nov '09, 23:22

Bastian%20Spanneberg's gravatar image

Bastian Span...
accept rate: 21%

I agree and wrote on just this topic a couple of years back: http://iandavis.com/blog/2007/03/bnodes-out

(02 Nov '09, 23:25) Ian Davis Ian%20Davis's gravatar image

good thread on the topic :) and as a lot of people in the comments say, you don't lose anything when you build names for bnodes, but on the other side, you keep yourself out of a lot of potential trouble.

(03 Nov '09, 15:37) Bastian Span... Bastian%20Spanneberg's gravatar image

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/

permanent link

answered 02 Nov '09, 23:11

Laurian%20Gridinoc's gravatar image

Laurian Grid...
accept rate: 0%

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.

permanent link

answered 05 Nov '09, 00:18

kwijibo's gravatar image

accept rate: 16%

Very good answer kwijibo. As kidehen always propagates: "We have to build GDBMSs on top of RDBMSs." (GDBMS ... Graph DataBase Management System) That means we should use the knowledge of 30+ years of RDBMS development for further GDBMS development steps, e.g. Semantic Graph Views (RDF Views) on top of a RDBMS.

(29 Jun '10, 10:42) zazi zazi's gravatar image

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/

permanent link

answered 30 Oct '09, 14:44

Sebastian's gravatar image

accept rate: 0%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 27 Oct '09, 21:43

question was seen: 2,115 times

last updated: 11 Jun '10, 15:14