1.0 Overview SmartCode is essentially a Resource Description Framework (RDF) server. It utilizes the power of metadata in conjunction with XML and Java “to enable seamless cross-portal, cross-device communication through scalable, bidirectional flow of information and functionality.”i The SmartCode Framework separates content from mode of presentation and format decreasing the amount of effort needed to create and maintain documents published on the web. It especially excels in dealing with the expanding areas of dynamic web syndication, aggregation, and personalization. 1.1 Developers Information Architects, Inc. released SmartCode as a commercial product in June 2000. Their current CTO, Leon Shklar, developed an earlier version of the SmartCode framework, Metaphoria, while working at Pencom Web Works between 1996 and 1999. SmartCode and Metaphoria are loosely associated with GeoHarness and InfoHarness, two earlier systems developed by Shklar (ca. 1995) to provide web access to legacy data and heterogeneous metadata. 1.2 Motivation SmartCode was developed to address a fundamental problem in the rapidly evolving world of web development and publishing. Content that appears on the pages of an organization’s Internet site is generally replicated from sources that are already available in another format, perhaps on the company intranet or in sales literature. As duplicated content proliferates across the various mediums the organization uses to distribute information, it becomes more and more difficult to maintain and control. For example, the same content may be simultaneously available to customers via HTML, XML, Word, PDF, and WML/WAP. Organizations that want to take advantage of the latest technologies often encounter exponential maintenance costs. 2.0 Analysis The SmartCode Framework is implemented as a hierarchy of Java classes that work in conjunction with any web server that supports the Java Servlet API. SmartCode provides a GUI for setting up metadata repositories that hold all of the information about accessing and presenting the content used in a particular web application. Content is aggregated and served dynamically based on any number of variables including URL parameters, HTTP headers, state/session information, and node path (URL) and metadata. 2.1 Architecture The SmartCode Framework is designed around an RDF-based metadata repository. The repository is made up of hierarchical, logically related nodes. Each node contains two types of metadata, access-descriptive and contentdescriptive. The former stores information about the location and retrieval methods used to access a unit of information. The latter stores information about the content itself (author, subject, publication date, etc.). At the leaf level, these nodes point to a single piece of data (a paragraph from a file, a web resource, a database query, etc.). Higher-level nodes aggregate sub-nodes and act as virtual containers. SmartCode nodes are accessed using one or more URLs. Based on information contained in the URL, HTTP headers, state/session information, and node metadata, a responder dynamically builds and serves the resulting page. Responders use HTML or XML templates when generating pages. HTML templates use a syntax that complies with HTML comments. SmartCode tags are begin with “#MM” followed by a user directive. XML templates use element names that are pre-designated for SmartCode processing. SmartCode uses a number of techniques to improve run-time performance and automatic data integrity. Metadata repositories have an initialization phase in which data is read in and analyzed and the node structure and metadata are generated automatically. By doing this work at build-time, run-time web requests are processed more efficiently. Also, sophisticated multi-level caching system is used to speed up processing of requests. Automatic data consistency and integrity are maintained by continual comparison of redundant metadata attributes with the original data. When discrepancies are found, the SmartCode system re-parses the data immediately and/or marks all related nodes for rebuilding at the next scheduled maintenance. 2.2 API Unknown. 2.3 System Requirements SmartCode is currently available on all major platforms including Linux, Solaris, and Windows NT/2000. It can be used in conjunction with any web server that supports the Java servlet API. Some examples are Apache, Microsoft IIS, Netscape Enterprise Server, JRun, and Sun Java Web Server. 2.4 Example Applications The following are example applications that describe scenarios in which SmartCode might be used to aggregate and syndicate information via the web. “Suppose you are a provider of information in the areas of food and entertainment, and want to make the most out of your content. You derive revenue from reselling rights to your content and advertising, and are interested in signing up partners and attracting users to your site. These businesses are very competitive and you want to gain an edge on your competitors by minimizing pains for potential affiliates. Traditional solutions would at best help you to automate the distribution of content to your affiliates, forcing them to install compatible software and leaving them responsible for serving and customizing distributed content. SmartCode simplifies this process by serving customers of your affiliates directly from your site while customizing your content on-the-fly to the look and feel of affiliate sites. “Suppose now you are a content aggregator, like Yahoo!, Excite, or NetCenter. You are collecting data from hundreds of different sites to provide the best value for your customers. Your revenue comes from advertising and most of your expenses are from licensing, retrieving, maintaining and customizing aggregated content. Suppose now that you want to license food and entertainment content and you have a choice of competing providers. Providers that use SmartCode do not require you to install software, and make it unnecessary for you to pay for maintenance and customization their content, which gives them a definite edge in your selection process.”ii 3.0 Summary SmartCode decreases the costs associated with maintaining redundant copies of information and keeping up with the latest Internet publication standards by separating content from its format and presentation. It is the first server of its kind to take advantage of the power of RDF by storing metadata and dynamically constructing pages directly from the information contained in originating content. It enables simultaneous, customized/personalized publication of information on traditional and wireless devices without modification to or replication of the source(s). 3.1 Strengths SmartCode is well suited for web sites that publish content in multiple formats and for a variety of end-user devices. It is also ideal for sites that extensively aggregate content from numerous internal and external sources. SmartCode automatically maintains data integrity and stores only metadata in its repository, significantly decreasing overhead and maintenance requirements. SmartCode’s reliance on RDF, Java, and XML standards and its platform independence are additional strengths. 3.2 Weaknesses Perhaps the most obvious downside to SmartCode is its price tag, $140,000 per server. Also, given its commercial and proprietary implementation, it is somewhat difficult to gather details about the specification. Real-world examples are few and product reviews are almost nonexistent which creates some concern about the future of this software package. Finally, given the absence of independent performance tests, there is some reason to be concerned about SmartCode’s speed due to its heavy reliance on dynamic page generation. 3.3 Future Directions Unknown. 3.4 For More Information SmartCode – http://www.ia.com/ia/product/index.htm Metaphoria – http://www.cs.rutgers.edu/~shklar/isas98/ InfoHarness – http://www.dlib.org/dlib/april96/bellcore/04shklar.html Shklar, Leon. “Information Architects SmartCodeTM Framework Technical Whitepaper” (http://www.ia.com/whitepage_2.html). February 2000. ii Ibid. i