date: 9 October author: Joost Architecture of Intelligent Web Applications Traditionally end-user applications (word processors spreadsheets etc.) are designed to perform a general, well defined task. Intelligent applications (mm presentation generation, natural language text generation, education systems, diagrams design, 'wizards' architecture... ), in contrast, differ from these in the sense that they perform specialistic tasks which require different sorts of expert knowledge. This makes intelligent applications scarce since the high(er) costs often overweight the relative limited number of users. The Internet and WWW have shown the value of uniformity which resulted in several document standards (data formats) (XML, HTML, SVG), designed for interoperability. Current activities however focus on uniform knowledge descriptions (semantic web) and sharing computational resources (grid). The INTERNET, and subsequently the interoperability developments change the way of software development. Programs are designed to work as components (or services) extending, or in cooperation with, other programs. (open source, plug-in, jdbc, corba, dot com) The reuse of existing components allow the development of intelligent applications at relatively low cost. Cuypers can be considered such an intelligent application since it uses different components. The software architecture nevertheless is rather ad hoc chosen, and needed to be extended several times during development (which resulted mostly in a complete rewrite). Due to the number of dependencies, which an intelligent system typically has, such a change is rather influential. A system architectures for intelligent applications is different from existing software architectures because it models interaction between systems rather then data structures. The granularity therefore is on the system level. This makes combining systems not a straight forward task since they have to 'fit', which means the systems should be able to interact. Most modern systems are 'open' in the sense that they provide a mechanism to allow system interaction but this often requires transformation of data format and a mapping of interfaces ('plumbing'). Especially when combining a number of systems this becomes a problem. In addition, when one of the components changes the whole system breaks down. For the integrity of intelligent applications this is a problem. The purpose of the semantic web is to make information explicit and therefore machine processable. The same analogue might be true for systems/components; Make the interfaces explicit by using a common vocabulary (using ontologies). Instead of a human programmer interpreting an interface and constructing data transformations might be done by a system itself. Besides that changes in interface don't break down the whole system which is in an intelligent system an important feature.