<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Mon, 11 Apr 2005 03:17:11 GMT -->
<rss version="2.0">
	<channel>
		<title>EPimentl: WebServices</title>
		<link>http://radio.weblogs.com/0105060/categories/webservices/</link>
		<description>WebServices - Service Oriented Architecture</description>
		<language>en</language>
		<copyright>Copyright 2005 EPimentl</copyright>
		<lastBuildDate>Mon, 11 Apr 2005 03:17:11 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>ed@edpimentel.com</managingEditor>
		<webMaster>ed@edpimentel.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>2</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>6</hour>
			<hour>12</hour>
			<hour>17</hour>
			<hour>7</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<title>IBM Business Transformation</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/04/10.html#a189</link>
			<description>&lt;a href=&quot;http://www.emergic.org/archives/2005/04/11/index.html#ibms_business_transformation&quot;&gt;IBM&apos;s Business Transformation&lt;/a&gt;. &lt;p&gt;&lt;a href=&quot;http://www.businessweek.com/magazine/content/05_16/b3929001_mz001.htm&quot;&gt;Business Week&lt;/a&gt;
writes about IBM&apos;s focus on business transformation services: &quot;BM, with
its legions of PhDs and closets full of patents, is not built to duke
it out with the likes of Dell. Palmisano&apos;s strategy promises a neat
escape. Instead of battling in cutthroat markets, he takes advantage of
all the low-cost technology by packaging it, augmenting it with
sophisticated hardware and software, and selling it to customers in a
slew of what he calls business transformation services. That way IBM
rides atop the commodity wave -- and avoids drowning in it.&quot;&lt;/p&gt; [&lt;a href=&quot;http://www.emergic.org/&quot;&gt;E M E R G I C . o r g&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/04/10.html#a189</guid>
			<pubDate>Mon, 11 Apr 2005 03:16:40 GMT</pubDate>
			<source url="http://www.emergic.org/index.xml">E M E R G I C . o r g</source>
			</item>
		<item>
			<title>Is the SUN setting on CLECs ? How will they survive in a UNEP-LESS Post ERA?</title>
			<link>http://vnap.ws</link>
			<description>In the good old days 199x - 2004  a typical CLEC with a 50 central
office (CO) HDSL build-out, the CLEC is able to  break even with
just 20 business customers, show  net EBITDA &lt;br&gt;
 (earnings before interest, taxes, depreciation and amortization)
of 20-plus percent over three years and become cash-positive in
less  than two years.&lt;br&gt;
With the recent UNEP ruling how will these xLECs navigate the vehement
tumultous telecom sea and steer their company/ship  away from the
regulatory rocks so as not  to shipwreck?&lt;br&gt;
&lt;br&gt;
One solution is VNAP  &lt;a href=&quot;http://vnap.ws&quot;&gt;http://vnap.ws&lt;/a&gt;  and
&lt;a href=&quot;http://dv4.agileco.net/BizLocity&quot;&gt;http://dv4.agileco.net/BizLocity&lt;/a&gt; Now Virtual Operators, xLECs, xSPs,
Mobile, Wireless and Cable MSOs, and others can leverage this Virtual
Network Infrastructure to redefine how  services and products will
be created and offer and break the tyranny of the DS0 and and the
shackles of the unwilling partner.&lt;br&gt;
&lt;br&gt;
I will have more to say about this at a later time.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/03/23.html#a188</guid>
			<pubDate>Thu, 24 Mar 2005 00:43:49 GMT</pubDate>
			</item>
		<item>
			<title>Ten To Watch in Mobile Content</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/03/07.html#a172</link>
			<description>Ten To Watch in Mobile Content. &lt;p&gt;This is not a definitive list, just
a list of smart young blood in the mobile content sector. Notice that
except for one, none of them are CEOs (yet), but you&amp;acirc;&amp;#128;&amp;#153;ll hear a lot
from and about them in the next few years (that was the criteria). Just
a way of recognizing the people in the second wave of mobile content
(in no particular order):&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.ctiawireless.com/education/speaker_bios.cfm?speakerID=6924&quot;&gt;Greg Clayman&lt;/a&gt;, Vice President, Wireless Strategy and Operations, MTV Networks&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://new.umusic.com/News.aspx?NewsId=244&quot;&gt;Rio Caraeff&lt;/a&gt;, mobile head at Universal Music&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.digitalmusicforum.com/ryan_bio.html&quot;&gt;Thomas Ryan&lt;/a&gt;, Senior VP, Mobile Development, EMI Music&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.digitalmusicforum.com/levy_bio.html&quot;&gt;Mark Levy&lt;/a&gt;, VP content at InfoSpace Mobile&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.ctiawireless.com/education/speaker_bios.cfm?speakerID=6903&quot;&gt;Lucy Hood&lt;/a&gt;, VP, Content, News Corp&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.digitalhollywood.com/%231DHSpring05/DHSp05FriTwelve.html&quot;&gt;Shawn Conahan&lt;/a&gt; (end of page), CEO, Intercasting Corp&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.airborne-e.com/website/news/index.php?loc=detail&amp;amp;id=84&quot;&gt;Adam Flick&lt;/a&gt;, Chief Marketing Officer, Airborne Entertainment&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.digitalentertainmentawards.com/tercekbio.htm&quot;&gt;Robert Tercek&lt;/a&gt;, Chief Strategy Office, mForma&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.wirelessit.com/education/speaker_bios.cfm?speakerID=2818&quot;&gt;Manish Jha&lt;/a&gt;, Senior VP, ESPN Mobile&lt;br&gt;
&lt;small&gt;&lt;b&gt;&amp;Acirc;&amp;#187;&lt;/b&gt;&lt;/small&gt;&amp;Acirc;  &lt;a href=&quot;http://www.russellbeattie.com/notebook/&quot;&gt;Russell Beattie&lt;/a&gt;, Yahoo Mobile&lt;/p&gt;
	&lt;p&gt;I
realize this is a US-centric list, and if you want to add to my list of
the people influencing our fast growing sector, post them in the &lt;a href=&quot;http://www.moconews.net/?p=1528#comments&quot;&gt;comments below&lt;/a&gt;&amp;acirc;&amp;#128;&amp;#166;
&lt;/p&gt; [&lt;a href=&quot;http://www.unmediated.org/&quot;&gt;unmediated&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/03/07.html#a172</guid>
			<pubDate>Tue, 08 Mar 2005 01:58:47 GMT</pubDate>
			<source url="http://www.unmediated.org/index.xml">unmediated</source>
			</item>
		<item>
			<title>SODA</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/03/06.html#a161</link>
			<description>&lt;a href=&quot;http://www.soaprpc.com/archives/000043.html&quot;&gt;SODA&lt;/a&gt;. A month
or so ago, I was reading a Gartner handout for a conference, and came
across an acronym they invented- SODA[1]. SODA (Service-Oriented
Development of Applications), as Gartner defines it, consists of the
following areas:... [&lt;a href=&quot;http://www.soaprpc.com/&quot;&gt;&lt;soaprpc&gt;&lt;/soaprpc&gt;&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/03/06.html#a161</guid>
			<pubDate>Sun, 06 Mar 2005 16:32:57 GMT</pubDate>
			<source url="http://www.soaprpc.com/index.rdf">&lt;soaprpc/&gt;</source>
			</item>
		<item>
			<title>Yahoo Web Service API</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/03/06.html#a160</link>
			<description>&lt;a href=&quot;http://www.soaprpc.com/archives/000049.html&quot;&gt;Yahoo Web Service API&lt;/a&gt;.
Yahoo joins the growing number of web sites exposing their API as Web
Services. Their API is available from Yahoo Developer Network.... [&lt;a href=&quot;http://www.soaprpc.com/&quot;&gt;&lt;soaprpc&gt;&lt;/soaprpc&gt;&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/03/06.html#a160</guid>
			<pubDate>Sun, 06 Mar 2005 16:31:44 GMT</pubDate>
			<source url="http://www.soaprpc.com/index.rdf">&lt;soaprpc/&gt;</source>
			</item>
		<item>
			<title>Yahoo! Web Services</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/03/01.html#a150</link>
			<description>&lt;a href=&quot;http://www.oreillynet.com/pub/a/network/2005/02/28/yahoo.html&quot;&gt;Yahoo! Web Services&lt;/a&gt;.
Paul Bausch takes a look at the new Yahoo! Web Services interface and
shows how to tap into the API with a sample application. [&lt;a href=&quot;http://www.oreillynet.com/&quot;&gt;O&apos;Reilly Network ONJava.com&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/03/01.html#a150</guid>
			<pubDate>Tue, 01 Mar 2005 13:10:38 GMT</pubDate>
			<source url="http://www.oreillynet.com/cs/xml/query/q/295?x-ver=1.0">O&apos;Reilly Network ONJava.com</source>
			</item>
		<item>
			<title>Yahoo opens up search platform to external developers.</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/03/01.html#a147</link>
			<description>&lt;a href=&quot;http://www.infoworld.com/cgi-bin/redirect?source=rss&amp;amp;url=http://www.infoworld.com/article/05/03/01/HNyahooopensup_1.html&quot;&gt;Yahoo opens up search platform to external developers&lt;/a&gt;.
Yahoo is for the first time opening up its search platform so that
external developers can create search applications that tap the
vendor&apos;s search infrastructure, Yahoo is announcing Tuesday. Yahoo is
also expanding access to the Overture ad network to more developers. [&lt;a href=&quot;http://www.infoworld.com/news/index.html&quot;&gt;InfoWorld: Top News&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/03/01.html#a147</guid>
			<pubDate>Tue, 01 Mar 2005 13:02:09 GMT</pubDate>
			<source url="http://www.infoworld.com/rss/news.xml">InfoWorld: Top News</source>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/28.html#a142</link>
			<description>&lt;a href=&quot;http://safari.oreilly.com/0131477498&quot;&gt;Developing Quality Technical Information: A Handbook for Writers and Editors, 2nd Edition&lt;/a&gt;.
The #1 guide to excellence in documentation--now completely updated!
Direct from IBM&apos;s own documentation experts, this is the definitive
guide to developing outstanding technical documentation--for the Web
and for print. Using extensive before-and-after examples,
illustrations, and checklists, the authors show exactly how to create
documentation that&apos;s easy to find, understand, and use. This edition
includes extensive new coverage of topic-based information, simplifying
search and retrievability, internationalization, visual effectiveness,
and much more. Coverage includes: Focusing on the tasks and topics
users care about most Saying more with fewer words Using organization
and other means to deliver faster access to information Presenting
information in more visually inviting ways Improving the effectiveness
of your review process Learning from example: sample text, screen
captures, illustrations, tables, and much more Whether you&apos;re a writer,
editor, designer, or reviewer, if you want to create great
documentation, this book shows you how! [&lt;a href=&quot;http://safari.oreilly.com/&quot;&gt;O&apos;Reilly Network Safari Bookshelf&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/28.html#a142</guid>
			<pubDate>Tue, 01 Mar 2005 01:27:38 GMT</pubDate>
			<source url="http://safari.oreilly.com/rss/">O&apos;Reilly Network Safari Bookshelf</source>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/28.html#a130</link>
			<description>&lt;a href=&quot;http://www.infoworld.com/cgi-bin/redirect?source=rss&amp;amp;url=http://www.infoworld.com/article/05/02/28/09NNbpo_1.html&quot;&gt;BPO battle heats up&lt;/a&gt;.
BPO (business process outsourcing) is quickly becoming a frontline
solution for CIOs desperate to reduce costs and automate business
processes.&lt;p&gt;ADVERTISEMENT&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://ad.doubleclick.net/ad/idg.us.ifw.general/bmcrsstco;sz=1x1;ord=200301151450?&quot; border=&quot;0&quot; height=&quot;1&quot; width=&quot;1&quot;&gt;&lt;a href=&quot;http://ad.doubleclick.net/clk;12678010;10650044;o?http://www.infoworld.com/spotlights/intel/itproductivity.html?lpid0122036700750427idlp&quot;&gt;Reducing the Total Cost of Ownership&lt;/a&gt;&lt;br&gt;Learn how to reduce the total coast of ownership in enterprise data
management in this case study.&lt;/p&gt; [&lt;a href=&quot;http://www.infoworld.com/news/index.html&quot;&gt;InfoWorld: Top News&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/28.html#a130</guid>
			<pubDate>Mon, 28 Feb 2005 21:31:01 GMT</pubDate>
			<source url="http://www.infoworld.com/rss/news.xml">InfoWorld: Top News</source>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/27.html#a126</link>
			<description>&lt;p&gt;&lt;b&gt;Planet Roller internals&lt;/b&gt;&lt;br&gt; 
    &lt;span style=&quot;color: gray; font-size: 10px;&quot;&gt;
        [Blogging]
            &lt;a href=&quot;http://rollerweblogger.org/page/roller/20050215#planet_roller_internals&quot; title=&quot;Permanent link to this weblog entry&quot; class=&quot;entrypermalink&quot;&gt;Permalink&lt;/a&gt;
             |                     &lt;a href=&quot;http://rollerweblogger.org/comments/roller/blog/planet_roller_internals#comments&quot; class=&quot;entrycommentslink&quot;&gt;Comments [2]&lt;/a&gt;
        &lt;/span&gt;
&lt;!-- &lt;a href=
&quot;http://www.technorati.com/cosmos/search.html?rank=&amp;sub=mtcosmos&amp;url=http:///page/roller/20050215#planet_roller_internals&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/resources/roller/cosmos.gif&quot; border=&quot;0&quot; alt=&quot;Technorati&quot; /&gt;&lt;/a&gt; --&gt;
                                 &lt;/p&gt;
&lt;p&gt;I promised some details on PlanetTool (the command-line tool that generates &lt;a href=&quot;http://rollerweblogger.org/planet&quot;&gt;Planet Roller&lt;/a&gt;) internals, so here goes. This is what happens when PlanetTool runs:&lt;/p&gt;


&lt;img src=&quot;http://www.rollerweblogger.org/resources/roller/aggregator.png&quot; alt=&quot;diagram of PlanetTool&quot;&gt;

&lt;p&gt;

&lt;b&gt;Startup&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(1)&lt;/b&gt; We start by reading the XML configuration file (via JDOM and XPath)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(2)&lt;/b&gt; From the config, we create a config object, subscriptions and groups&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(3)&lt;/b&gt; A group has subscriptions&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(4)&lt;/b&gt; And a subscription can belong to more than one group&lt;/p&gt;


&lt;b&gt;Refresh subscription data&lt;/b&gt;
&lt;p&gt;&lt;b&gt;(5)&lt;/b&gt; For each subscription, call the Rome Fetcher&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(6)&lt;/b&gt; Fetcher uses Conditional Get and Etags and caches feeds on disk&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(7)&lt;/b&gt; Feeds parsed into entries objects and added to subscription objects&lt;/p&gt;


&lt;b&gt;File generation&lt;/b&gt;
&lt;p&gt;&lt;b&gt;(8)&lt;/b&gt; Call Velocity Texen with name of a control template&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(9)&lt;/b&gt; Texen calls our control template&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(10)&lt;/b&gt; Control template calls file generation templates&lt;/p&gt;

&lt;p&gt;&lt;b&gt;(11)&lt;/b&gt; Templates calls planet object to get config, group,
subscription, and entry objects needed to generates files needed for
aggregated site (HTML, RSS, OPML, etc.)&lt;/p&gt;
</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/27.html#a126</guid>
			<pubDate>Mon, 28 Feb 2005 00:24:48 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/15.html#a90</link>
			<description>&lt;h1 class=&quot;faqSubject&quot;&gt;Which interface should I use: XML/HTTP (REST) or SOAP ?&lt;/h1&gt;


&lt;p&gt;The Amazon Web Services (AWS) program offers two interfaces to
(largely) the same basic services.  One is an XML over HTTP interface
(sometimes called a REST interface), while the other is an API
adhering to the SOAP standards.&lt;/p&gt;

&lt;p&gt;Which interface should you use?&lt;/p&gt;

&lt;h2&gt;The very short answer&lt;/h2&gt;

&lt;p&gt;If in doubt, use the XML/HTTP (a.k.a. REST) interface.&lt;/p&gt;

&lt;h2&gt;The slightly longer answer&lt;/h2&gt;

&lt;p&gt;Both XML/HTTP and SOAP are good, standards-based interfaces, and there
is a priori little to choose between the two.  The table below
attempts to summarize some of the strengths and weaknesses of each
type of interface.&lt;/p&gt;

&lt;table class=&quot;borderexpo&quot;&gt;

&lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt; &lt;br&gt;
&lt;/th&gt;&lt;th&gt;Pro&lt;/th&gt;&lt;th&gt;Contra&lt;/th&gt;
&lt;/tr&gt;
&lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;
&lt;tr&gt;
 &lt;th&gt;XML/HTTP&lt;/th&gt;
 &lt;td&gt;
  &lt;ul&gt;&lt;li&gt;Simplicity: Easy to read and debug the messages between the
   client and servers.&lt;/li&gt;&lt;li&gt;Access to the full AWS functionality.&lt;/li&gt;&lt;li&gt;The fastest interface.&lt;/li&gt;&lt;/ul&gt;
 &lt;/td&gt;
 &lt;td&gt;
  &lt;ul&gt;&lt;li&gt;Lower-level interface than SOAP and therefore often more work
   for the programmer.&lt;/li&gt;&lt;li&gt;Using UTF-8 characters in query strings can be a little tricky
   in some environments.&lt;/li&gt;&lt;/ul&gt;
 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;
 &lt;th&gt;SOAP&lt;/th&gt;
 &lt;td&gt;
  &lt;ul&gt;&lt;li&gt;High level interface, often with excellent support in the
   development environment (e.g. .NET)&lt;/li&gt;&lt;li&gt;Often easier to code (as above)&lt;/li&gt;&lt;/ul&gt;
 &lt;/td&gt;
 &lt;td&gt;
  &lt;ul&gt;&lt;li&gt;Does not provide access to the full AWS functionality
   (specifically the XSLT service is not available through SOAP)&lt;/li&gt;&lt;li&gt;Can be slightly harder to debug due to additional SOAP encoding
   of the messages between your application and Amazon&apos;s servers.&lt;/li&gt;&lt;li&gt;Is slightly slower than the XML/HTTP interface: I find an
   overhead of about 15%.  With un-careful coding (e.g. by creating a
   connection object for each request, referencing the WSDL file on
   Amazon&apos;s servers each time, instead of re-using the object), it can be
   &lt;em&gt;much&lt;/em&gt; slower, especially if network bandwidth is an
   issue.&lt;/li&gt;&lt;li&gt;In the Amazon implementation, SOAP is more unreliable than
   XML/HTTP, i.e. the SOAP service has a much higher down time.
   Presumably this will be fixed in the future. &lt;/li&gt;&lt;/ul&gt;
 &lt;/td&gt;
&lt;/tr&gt;
&lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;I propose the following little decision table to help you decide
between XML/HTTP and SOAP :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
  Do you need the XSLT service? &lt;br&gt;
  &lt;span class=&quot;conclusion&quot;&gt;If so, then you must use the XML/HTTP interface.&lt;/span&gt;
 &lt;/li&gt;&lt;li&gt;
  Are you familiar with either XML and HTTP or SOAP already? &lt;br&gt;
  &lt;span class=&quot;conclusion&quot;&gt;If so, use that.  Programmer efficiency is
  likely to be much more important that anything else.&lt;/span&gt;
 &lt;/li&gt;&lt;li&gt;
  Do you need every last bit of performance? &lt;br&gt;
  &lt;span class=&quot;conclusion&quot;&gt;Really?  Buy a bigger server / invest in
  more bandwidth.  Consider caching of important data.&lt;/span&gt;
 &lt;/li&gt;&lt;li&gt;
  Is SOAP and WSDL well-supported by your development environment? &lt;br&gt;
  &lt;span class=&quot;conclusion&quot;&gt;If so, use SOAP.&lt;/span&gt;
 &lt;/li&gt;&lt;li&gt;
  Still unsure? &lt;br&gt;
  &lt;span class=&quot;conclusion&quot;&gt;If still in doubt, use XML/HTTP.&lt;/span&gt;
 &lt;/li&gt;
&lt;/ol&gt;
</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/15.html#a90</guid>
			<pubDate>Tue, 15 Feb 2005 23:30:54 GMT</pubDate>
			</item>
		<item>
			<title>eXtreme eXtensibility</title>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/15.html#a89</link>
			<description>&lt;center&gt;
&lt;h1&gt;eXtreme eXtensibility&lt;br&gt;&lt;/h1&gt;&lt;h2&gt;(XML Schema Design for the Semantic Web)&lt;/h2&gt;
&lt;h2&gt;by Roger L. Costello&lt;/h2&gt;
&lt;h3&gt;January 25, 2003&lt;/h3&gt;
&lt;/center&gt;


&lt;i&gt;Issue: how do we design an XML Schema so that it places no restrictions on the vocabulary that 
instance documents employ, and which facilitates the growth of data in a highly distributed fashion?&lt;/i&gt;

&lt;h2&gt;Uses of the eXtreme eXtensibility Design Pattern&lt;/h2&gt;


This document describes a way of designing XML Schemas which enables
data to be collected (and stored as XML) in an independent, distributed fashion, and with no 
restrictions on the XML vocabulary.  The &lt;i&gt;design
pattern&lt;/i&gt; that is presented is especially useful for situations where: 

&lt;ul&gt;
&lt;li&gt;you would like to  collect data about something (and store the data as XML), and&lt;/li&gt;&lt;li&gt;you would like to allow for the data to be collected by various people (that is, the data
is collected in a distributed fashion), and&lt;/li&gt;&lt;li&gt;you would like to allow for unforeseen data (that is, no limits on the XML vocabulary employed), and&lt;/li&gt;&lt;li&gt;you would like to be able to aggregate all the distributed data to generate a consolidated picture.&lt;/li&gt;
&lt;/ul&gt;


Here are some examples of situations that would benefit from this design pattern:

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Describing a Geographic Resource:&lt;/b&gt; for example, there may be several independent teams of
scientists collecting data about an active volcano.  It would be beneficial to enable
each team to publish their data independently, and then at a later time aggregate all the data.  
Another example in this category is the collection
of data about a river.  I will use this as my example throughout this paper.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Providing Biographical Data about a Person:&lt;/b&gt; for example, suppose that you are in charge
of a small team of people tasked to collect biographical data about Albert Einstein.  This
schema design pattern is ideally suited, as it allows each member of the team to work and
publish independently.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Intelligence Collecting:&lt;/b&gt; by nature, collecting intelligence data is a distributed activity.
This schema design pattern supports that data collection activity.&lt;/li&gt;
&lt;/ul&gt;


These are just a few uses of the schema design pattern that will be presented in this paper.
In general, whenever you want your data collection and publication activities to take advantage of the Web environment
then this is a good design pattern.
Clearly, its use is limited only by your imagination.

&lt;h2&gt;Classical XML Schema Design&lt;/h2&gt;

Classical XML Schema design is &lt;i&gt;prescriptive&lt;/i&gt;.  That is, the schema identifies a
resource type and prescribes what data is allowed for that resource type.  For example,
consider this data about China&apos;s Yangtze river:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&amp;gt;&lt;br&gt;     &amp;lt;Length&amp;gt;6300 kilometers&amp;lt;/Length&amp;gt;&lt;br&gt;     &amp;lt;StartingLocation&amp;gt;western China&apos;s Qinghai-Tibet Plateau&amp;lt;/StartingLocation&amp;gt;&lt;br&gt;     &amp;lt;EndingLocation&amp;gt;East China Sea&amp;lt;/EndingLocation&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Classical schema design would declare a River element, comprised of a 
sequence of child elements - Length, StartingLocation, and EndingLocation.  For example,
here&apos;s an XML Schema that follows the classical design approach:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;element name=&quot;River&quot;&amp;gt;&lt;br&gt;    &amp;lt;complexType&amp;gt;&lt;br&gt;        &amp;lt;sequence&amp;gt;&lt;br&gt;            &amp;lt;element name=&quot;Length&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;            &amp;lt;element name=&quot;StartingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;            &amp;lt;element name=&quot;EndingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;        &amp;lt;/sequence&amp;gt;&lt;br&gt;        &amp;lt;attribute name=&quot;id&quot; type=&quot;ID&quot; use=&quot;required&quot;/&amp;gt;&lt;br&gt;    &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;lt;/element&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


&lt;h2&gt;Deficiencies of the Classical Schema Design in a Web Environment&lt;/h2&gt;


XML instance documents and, by implication, XML Schemas are intended to be used within a Web environment.  
Yet classical XML Schema design is at odds with the Web environment, as we shall see below.

&lt;h3&gt;The Web Approach to Data - eXtreme eXtensibility!&lt;/h3&gt;


Suppose that you create a Web page containing data about the Yangtze river.
Independent of you, and without your knowledge, I can create a Web page that contains other data about the Yangtze river.
And I can link my Web page to your Web page.  Your Web page &lt;b&gt;adds value&lt;/b&gt; to my Web page and
vice versa.  A third person can create still another Web page containing more data about
the Yangtze river, and link it to both of our Web pages.  A rich Web of data about the Yangtze river
is emerging.

Note the characteristics of this Web approach to providing data about the Yangtze river:

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Distributed Data:&lt;/b&gt; the data about the Yangtze river is distributed over multiple Web pages.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Unlimited Vocabulary:&lt;/b&gt; the richness and amount of data that is available to describe the Yangtze river
    is limited only by the imagination of the Web page designers.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Unordered:&lt;/b&gt; there is no order to the data about the Yangtze river.  The hyperlinked Web pages
    comprises an unordered collection of data.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Aggregation:&lt;/b&gt; the sum total data about the Yangtze river is obtained by aggregating the disparate Web page data.&lt;/li&gt;
&lt;/ol&gt;


The Web is the classic example of what Dee Hock refers to as a &lt;b&gt;&quot;chaord&quot;&lt;/b&gt; (a system that has a mix of chaos and order).

&lt;h3&gt;The Classical XML Schema Approach to Data&lt;/h3&gt;


A typical XML Schema for defining the structure and type of allowable data about the Yangtze river is shown here:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;element name=&quot;River&quot;&amp;gt;&lt;br&gt;    &amp;lt;complexType&amp;gt;&lt;br&gt;        &amp;lt;sequence&amp;gt;&lt;br&gt;            &amp;lt;element name=&quot;Length&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;            &amp;lt;element name=&quot;StartingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;            &amp;lt;element name=&quot;EndingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;        &amp;lt;/sequence&amp;gt;&lt;br&gt;        &amp;lt;attribute name=&quot;id&quot; type=&quot;ID&quot; use=&quot;required&quot;/&amp;gt;&lt;br&gt;    &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;lt;/element&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


The XML Schema specifies what data is allowed (&quot;you can give the Length of the river, its StartingLocation,
and its EndingLocation&quot;), and in what order.  If you create an XML Web page, 
and the page conforms to the above schema then it must necessarily be limited to the type of data dictated by
the schema, e.g.:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&amp;gt;&lt;br&gt;     &amp;lt;Length&amp;gt;6300 kilometers&amp;lt;/Length&amp;gt;&lt;br&gt;     &amp;lt;StartingLocation&amp;gt;western China&apos;s Qinghai-Tibet Plateau&amp;lt;/StartingLocation&amp;gt;&lt;br&gt;     &amp;lt;EndingLocation&amp;gt;East China Sea&amp;lt;/EndingLocation&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


If I create an XML Web page then my page will look the same.  And if a third person
creates an XML Web page it too will look the same.  The schema imposes uniformity, regulated, controlled data design.

Let&apos;s note the characteristics of the classic XML Schema approach to defining data about the Yangtze river:

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Centralized Data:&lt;/b&gt; even though there may be multiple Web sites containing  data about the Yangtze river 
    they all contain the same data (vocabulary).  Thus, there is effectively one, centralized data.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Limited Vocabulary:&lt;/b&gt; the richness and amount of data that is provided for describing the Yangtze river
    is strictly limited by the XML Schema.  Unforeseen ways of describing the Yangtze river is not enabled.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Ordered:&lt;/b&gt; there is strict ordering of the data about the Yangtze river.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Collection:&lt;/b&gt; the sum total data about the Yangtze river is obtained by going to any one of the
    Web sites and collecting the data.&lt;/li&gt;
&lt;/ol&gt;



&lt;h3&gt;Recap: Web Data Design vs. Classic XML Schema Data Design&lt;/h3&gt;


Below is a table which summarizes the above discussion.

&lt;table border=&quot;1&quot;&gt;

&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;XML Schemas&lt;/th&gt;
&lt;th&gt;Web&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;controlled growth of data&lt;/td&gt;
&lt;td&gt;anarchical growth of data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;centralized data&lt;/td&gt;
&lt;td&gt;distributed data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;collect data&lt;/td&gt;
&lt;td&gt;aggregate data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vertical data design&lt;/td&gt;
&lt;td&gt;lateral data design&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;h2&gt;Effective Use of XML and XML Schemas in a Web World&lt;/h2&gt;


To make XML, and by implication XML Schemas, usable in a Web world requires a shift in how we
design XML Schemas and in how we think about data.  

Below are the requirements on an XML Schema for describing the Yangtze river where we make effective use of the
Web environment:

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Unlimited Vocabulary:&lt;/b&gt; There can be no restriction on the contents of the River element.  This will allow
    for unforeseen data.  Any vocabulary that the schema provides should be considered as merely a starting point.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Unordered:&lt;/b&gt; There can be no restriction on the order of the data&lt;/li&gt;
&lt;/ul&gt;


[Note: complete anarchy would place absolutely no restrictions on the content of the River element.  For example,
it would allow the River element to contain a &quot;fuselage&quot; element.  We don&apos;t want complete anarchy.  We want to allow 
any elements, as long
as they make sense for a River.]

Next we will see how to design a schema that takes into account these requirements.

&lt;h2&gt;XML Schema Design for eXtreme eXtensibility!&lt;/h2&gt;


Here&apos;s how to design a schema that meets the above requirements:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;element name=&quot;River&quot;&amp;gt;&lt;br&gt;    &amp;lt;complexType&amp;gt;&lt;br&gt;        &amp;lt;sequence&amp;gt;&lt;br&gt;            &amp;lt;any namespace=&quot;##targetNamespace&quot; maxOccurs=&quot;unbounded&quot;/&amp;gt;&lt;br&gt;        &amp;lt;/sequence&amp;gt;&lt;br&gt;        &amp;lt;attribute name=&quot;id&quot; type=&quot;ID&quot; use=&quot;required&quot;/&amp;gt;&lt;br&gt;    &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;lt;/element&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Length&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;StartingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;EndingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Let&apos;s point out the key features of this schema:

&lt;ul&gt;
&lt;li&gt;There is no restriction to the contents of River, other than to say that the contents must
    belong to this namespace (in other words, I only want to allow as content elements which make sense for
    the River element).&lt;/li&gt;&lt;li&gt;An &lt;i&gt;initial&lt;/i&gt; vocabulary - Length, StartingLocation, EndingLocation - is provided for use in the
    contents of the River element.  This vocabulary may be extended, as we shall see.&lt;/li&gt;
&lt;/ul&gt;


Let&apos;s go back to the example of the three people building Web pages:  &lt;i&gt;you&lt;/i&gt; create an &lt;b&gt;XML Web page&lt;/b&gt; that uses just
the vocabulary provided in the schema:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&amp;gt;&lt;br&gt;     &amp;lt;Length&amp;gt;6300 kilometers&amp;lt;/Length&amp;gt;&lt;br&gt;     &amp;lt;StartingLocation&amp;gt;western China&apos;s Qinghai-Tibet Plateau&amp;lt;/StartingLocation&amp;gt;&lt;br&gt;     &amp;lt;EndingLocation&amp;gt;East China Sea&amp;lt;/EndingLocation&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


It is important to note that there is no restriction on the ordering of the elements within River.
Further, there is no restriction on the number of occurrences of an element (we will see an example
of this below).  Thus, &lt;b&gt;this is a general technique for enabling the contents of an element to occur
in any order, and with any number of occurrences!  Note that this technique has similarities to the
&amp;lt;all&amp;gt; element, but is much more powerful!&lt;/b&gt;
Next, &lt;i&gt;I&lt;/i&gt; would also like to create an XML Web page about the Yangtze river but I would like to provide
different data - data about the famous Three Gorges Dam.  Here&apos;s my XML Web page:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&lt;br&gt;       xmlns:d=&quot;http://www.geodesy.org/dam&quot;&amp;gt;&lt;br&gt;     &amp;lt;Dam&amp;gt;&lt;br&gt;         &amp;lt;d:Name&amp;gt;The Three Gorges Dam&amp;lt;/d:Name&amp;gt;&lt;br&gt;         &amp;lt;d:Width&amp;gt;1.5 miles&amp;lt;/d:Width&amp;gt;&lt;br&gt;         &amp;lt;d:Height&amp;gt;610 feet&amp;lt;/d:Height&amp;gt;&lt;br&gt;         &amp;lt;d:Cost&amp;gt;$30 billion&amp;lt;/d:Cost&amp;gt;&lt;br&gt;     &amp;lt;/Dam&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


The Dam element is not one of the &lt;i&gt;initial vocabulary&lt;/i&gt; that the XML Schema declares,
so I will need to &lt;i&gt;supplement&lt;/i&gt; the initial vocabulary by creating my own schema that declares the Dam element:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;include schemaLocation=&quot;River.xsd&quot;/&amp;gt;&lt;br&gt;&amp;lt;import namespace=&quot;http://www.geodesy.org/dam&quot;&lt;br&gt;        schemaLocation=&quot;Dam.xsd&quot;/&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;element name=&quot;Dam&quot;&amp;gt;&lt;br&gt;    &amp;lt;complexType&amp;gt;&lt;br&gt;        &amp;lt;sequence&amp;gt;&lt;br&gt;            &amp;lt;any namespace=&quot;http://www.geodesy.org/dam&quot; maxOccurs=&quot;unbounded&quot;/&amp;gt;&lt;br&gt;        &amp;lt;/sequence&amp;gt;&lt;br&gt;    &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;lt;/element&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


The declaration for the Dam element says that its contents is anything, just as long as
the elements come from the &lt;i&gt;&lt;a href=&quot;http://www.geodesy.org/dam&quot;&gt;http://www.geodesy.org/dam&lt;/a&gt;&lt;/i&gt; namespace.  The schema, Dam.xsd,
defines that namespace.  Here&apos;s Dam.xsd:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;element name=&quot;Name&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Width&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Height&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Cost&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;



Finally, the &lt;i&gt;third person&lt;/i&gt; wants to provide data about the different names that the Yangtze river has acquired over time:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Dri Chu - Female Yak River&amp;lt;/Name&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Tongtian He, Travelling-Through-the-Heavens River&amp;lt;/Name&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Jinsha Jiang, River of Golden Sand&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Since this third person is also using vocabulary that is not present in the initial schema vocabulary list, he/she must
supplement the initial vocabulary by creating a schema:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;include schemaLocation=&quot;River.xsd&quot;/&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;element name=&quot;Name&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Note that since the River element placed no restrictions on its contents, we are able to use the Name
element repeatedly.

&lt;h2&gt;Recap of the Example&lt;/h2&gt;


The above example showed how an XML Schema can be designed to enable each XML Web page to be designed
independently and with no restriction on what or how much data is provided for the Yangtze river.  It
demonstrates a growing body of information about the Yangtze river.  Aggregator tools can
scoop up all the disparate pieces of (XML-structured) data to present a consolidated view of the Yangtze river.
Nice!

&lt;h2&gt;Characteristics of this Design Pattern&lt;/h2&gt;


This paper has presented a way of designing schemas that enables data to be collected (and represented using XML)
 in an independent,
distributed fashion, and with no restriction on the XML vocabulary.  It is important to highlight the key
characteristics of schemas that employ this design pattern:

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Schemas are Small:&lt;/b&gt; using this design pattern you create one schema for each resource (e.g., create a schema
for a river), and provide an initial set of vocabulary that may be used with that resource (e.g., 
Length, StartingLocation, and EndingLocation).  If you have a different resource (e.g., volcano) then
you would create a different schema (and provide an initial set of vocabulary that may be used with the volcano resource).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Namespace = Class:&lt;/b&gt; with this design pattern the schema&apos;s targetNamespace is essentially
defining a class (e.g., the targetNamespace for the River example was: &lt;i&gt;&lt;a href=&quot;http://www.geodesy.org/river&quot;&gt;http://www.geodesy.org/river&lt;/a&gt;&lt;/i&gt;. This
can be interpreted as, &quot;this schema is defining the river class&quot;)&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;Aggregation&lt;/h2&gt;


Earlier I referred to the ability of a tool to aggregate disparate pieces of data and to present
a consolidated view.  Let&apos;s now look at how to aggregate the disparate Yangtze river data.

In the example we had three people who created data about the Yangtze river.  We ended up with 3 schemas
and 3 instance documents:

&lt;h3&gt;The 3 Schemas&lt;/h3&gt;


&lt;b&gt;River.xsd:&lt;/b&gt; declared the River element, and declared the initial set of vocabulary that may be used to
populate the River element - Length, StartingLocation, and EndingLocation.

&lt;b&gt;River2.xsd:&lt;/b&gt; this schema supplemented the initial vocabulary with a Dam element.

&lt;b&gt;River3.xsd:&lt;/b&gt; this schema also supplemented the initial vocabulary with a Name element.

&lt;h3&gt;The 3 Instance Documents&lt;/h3&gt;


&lt;b&gt;Yangtze.xml:&lt;/b&gt; this instance document showed the Length, StartingLocation, and EndingLocation
of the River.

&lt;b&gt;Yangtze2.xml:&lt;/b&gt; this instance document described the River&apos;s Three Gorges Dam.

&lt;b&gt;Yangtze3.xml:&lt;/b&gt; this instance document listed the different names that the River has acquired.

&lt;h3&gt;Putting the data together&lt;/h3&gt;


An aggregator tool will assemble the various data about the River, to create a single document:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&lt;br&gt;       xmlns:d=&quot;http://www.geodesy.org/dam&quot;&amp;gt;&lt;br&gt;     &amp;lt;Length&amp;gt;6300 kilometers&amp;lt;/Length&amp;gt;&lt;br&gt;     &amp;lt;StartingLocation&amp;gt;western China&apos;s Qinghai-Tibet Plateau&amp;lt;/StartingLocation&amp;gt;&lt;br&gt;     &amp;lt;EndingLocation&amp;gt;East China Sea&amp;lt;/EndingLocation&amp;gt;&lt;br&gt;     &amp;lt;Dam&amp;gt;&lt;br&gt;         &amp;lt;d:Name&amp;gt;The Three Gorges Dam&amp;lt;/d:Name&amp;gt;&lt;br&gt;         &amp;lt;d:Width&amp;gt;1.5 miles&amp;lt;/d:Width&amp;gt;&lt;br&gt;         &amp;lt;d:Height&amp;gt;610 feet&amp;lt;/d:Height&amp;gt;&lt;br&gt;         &amp;lt;d:Cost&amp;gt;$30 billion&amp;lt;/d:Cost&amp;gt;&lt;br&gt;     &amp;lt;/Dam&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Dri Chu - Female Yak River&amp;lt;/Name&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Tongtian He, Travelling-Through-the-Heavens River&amp;lt;/Name&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Jinsha Jiang, River of Golden Sand&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Thus, this instance document is a composite of all the disparate data about the Yangtze river!

To validate the composite instance document the aggregator tool must 
compose all of the schema declarations 
into a single file.  Here&apos;s the
resulting schema:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;import namespace=&quot;http://www.geodesy.org/dam&quot;&lt;br&gt;        schemaLocation=&quot;Dam.xsd&quot;/&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;element name=&quot;River&quot;&amp;gt;&lt;br&gt;    &amp;lt;complexType&amp;gt;&lt;br&gt;        &amp;lt;sequence&amp;gt;&lt;br&gt;            &amp;lt;any namespace=&quot;##targetNamespace&quot; maxOccurs=&quot;unbounded&quot;/&amp;gt;&lt;br&gt;        &amp;lt;/sequence&amp;gt;&lt;br&gt;        &amp;lt;attribute name=&quot;id&quot; type=&quot;ID&quot; use=&quot;required&quot;/&amp;gt;&lt;br&gt;    &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;lt;/element&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Length&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;StartingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;EndingLocation&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Dam&quot;&amp;gt;&lt;br&gt;    &amp;lt;complexType&amp;gt;&lt;br&gt;        &amp;lt;sequence&amp;gt;&lt;br&gt;            &amp;lt;any namespace=&quot;http://www.geodesy.org/dam&quot; maxOccurs=&quot;unbounded&quot;/&amp;gt;&lt;br&gt;        &amp;lt;/sequence&amp;gt;&lt;br&gt;    &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;lt;/element&amp;gt;&lt;br&gt;&amp;lt;element name=&quot;Name&quot; type=&quot;string&quot;/&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Thus, the vocabulary that is now available for describing a River is - Length, StartingLocation,
EndingLocation, Dam, and Name!

&lt;h3&gt;Aggregation Problem&lt;/h3&gt;


The power of this design pattern is that it empowers each person to independently describe the
Yangtze river with no limitats on the vocabulary (i.e., the XML tags) that is employed to describe
the River (rather, the vocabulary must all belong to the &lt;i&gt;&lt;a href=&quot;http://www.geodesy.org/river&quot;&gt;http://www.geodesy.org/river&lt;/a&gt;&lt;/i&gt; namespace).

With that power comes potential problems when aggregating the disparate data. For example, suppose that
two people (independently) want to describe the river&apos;s Dam.  They each create their own schema 
which declares a Dam element.  Everything is fine.  Each person can separately validate their instance data. 
However, when an aggregator tool scoops up all the instance data, and all the schema declarations, then there
will be a problem - the schema will have two (most likely different) declarations of Dam.  That&apos;s a problem.

What&apos;s the solution?  Here are some ideas that I have (I welcome other people&apos;s ideas on this):

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Validate Separately, Well-Formedness Collectively:&lt;/b&gt; each person can individually validate their
data.  When the data is aggregated don&apos;t bother with validation (what&apos;s the point?).  Simply check for
well-formedness.  I suspect in 99% of the cases this approach is perfectly fine.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Wrap Duplicates:&lt;/b&gt; when there are duplicates, such as duplicate Dam elements, wrap each of them
within a unique element.  Do this both in the instance document as well as the schema.  Obviously, this
will require a &lt;b&gt;much&lt;/b&gt; more intelligent aggregator tool.&lt;/li&gt;
&lt;/ol&gt;



&lt;h2&gt;Recommendation&lt;/h2&gt;


As we have seen, this Web-oriented  (eXtreme eXtensibility) XML Schema design pattern is
useful whenever there is a desire to &lt;i&gt;grow&lt;/i&gt; a body of information, especially when you want to
grow a body of data in a distributed fashion.  The above Yangtze River example is a perfect 
example of where, over time, you would like to grow a body of data about the river.  XML Schemas for geographic features
 is a good candidate for this design pattern.  XML Schemas for collecting information about a person is also a good candidate
(for example, if you want to create a biography of Albert Einstein you may want to &quot;grow&quot; this data in
an independent, distributed fashion).  There are many, many other examples of where this design pattern is 
useful.  Your imagination is truly the limit.

The goal of the Semantic Web is to enable anyone, anywhere, anytime to provide data about a resource.  Using the
design pattern presented in this paper will bring your data in alignment with the vision of the Semantic Web.  

&lt;h2&gt;Relation to RDF?&lt;/h2&gt;


&quot;This sure sounds a lot like RDF - identifying a resource (e.g., Yangtze river), providing data (property/value pairs)
for the resource.  Why &apos;fake it&apos; with XML Schemas?  Why not use the &apos;real thing&apos; ... RDF?&quot;  

Your observation is entirely correct.  Ideally, we probably should use RDF.  However, RDF is a less well understood
by the XML community, it does not provide the same level of type checking that XML Schemas provides,
and there is less support for it in terms of tools.  So, the above approach is an interim
solution.  Using this approach will help make the step to RDF (and the Semantic Web) less painful.

&lt;h3&gt;Unification of XML Schemas and RDF&lt;/h3&gt;


The best of all possible worlds would be to make instance documents usable &lt;b&gt;both&lt;/b&gt; by XML Schema tools
as well as RDF tools.  Interestingly, two of the instance documents from the Yangtze river example
are also perfectly fine RDF documents:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&amp;gt;&lt;br&gt;     &amp;lt;Length&amp;gt;6300 kilometers&amp;lt;/Length&amp;gt;&lt;br&gt;     &amp;lt;StartingLocation&amp;gt;western China&apos;s Qinghai-Tibet Plateau&amp;lt;/StartingLocation&amp;gt;&lt;br&gt;     &amp;lt;EndingLocation&amp;gt;East China Sea&amp;lt;/EndingLocation&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


as well as this one ...

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Dri Chu - Female Yak River&amp;lt;/Name&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Tongtian He, Travelling-Through-the-Heavens River&amp;lt;/Name&amp;gt;&lt;br&gt;     &amp;lt;Name&amp;gt;Jinsha Jiang, River of Golden Sand&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


The other instance document, however, is not good RDF:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&lt;br&gt;       xmlns:d=&quot;http://www.geodesy.org/dam&quot;&amp;gt;&lt;br&gt;     &amp;lt;Dam&amp;gt;&lt;br&gt;         &amp;lt;d:Name&amp;gt;The Three Gorges Dam&amp;lt;/d:Name&amp;gt;&lt;br&gt;         &amp;lt;d:Width&amp;gt;1.5 miles&amp;lt;/d:Width&amp;gt;&lt;br&gt;         &amp;lt;d:Height&amp;gt;610 feet&amp;lt;/d:Height&amp;gt;&lt;br&gt;         &amp;lt;d:Cost&amp;gt;$30 billion&amp;lt;/d:Cost&amp;gt;&lt;br&gt;     &amp;lt;/Dam&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


The reason is that RDF tries to treat the Dam element as a &lt;i&gt;property&lt;/i&gt;.  The Dam element is actually a
class (and Name, Width, Height, and Cost are properties of the Class).  The solution is to wrap the Dam element:

&lt;form action=&quot;&quot;&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;River id=&quot;Yangtze&quot;&lt;br&gt;       xmlns=&quot;http://www.geodesy.org/river&quot;&lt;br&gt;       xmlns:d=&quot;http://www.geodesy.org/dam&quot;&amp;gt;&lt;br&gt;     &amp;lt;RiverStructure&amp;gt;&lt;br&gt;         &amp;lt;Dam&amp;gt;&lt;br&gt;             &amp;lt;d:Name&amp;gt;The Three Gorges Dam&amp;lt;/d:Name&amp;gt;&lt;br&gt;             &amp;lt;d:Width&amp;gt;1.5 miles&amp;lt;/d:Width&amp;gt;&lt;br&gt;             &amp;lt;d:Height&amp;gt;610 feet&amp;lt;/d:Height&amp;gt;&lt;br&gt;             &amp;lt;d:Cost&amp;gt;$30 billion&amp;lt;/d:Cost&amp;gt;&lt;br&gt;         &amp;lt;/Dam&amp;gt;&lt;br&gt;     &amp;lt;/RiverStructure&amp;gt;&lt;br&gt;&amp;lt;/River&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/form&gt;


Now this instance document is also fine RDF!

Since the world is moving towards a Semantic Web it makes very good sense to give your data dual use - useable
both by XML Schema tools, and by RDF tools. (A friendly hint)

&lt;h3&gt;The Aggregation Problem Noted Above is not Present with RDF&lt;/h3&gt;


In the above section on Aggregation I noted a problem with aggregating disparate schema declarations
into a single schema when there are multiple different declarations of the same element (the example I gave
was of two people independently declaring a Dam element). This is an inherent problem with XML Schemas.

RDF, however, does not have this limitation.  Anyone, anywhere, and at anytime can define the same properties,
and when they are aggregated there will not be a problem.

&lt;h2&gt;Acknowledgements&lt;/h2&gt;


I would like to gratefully acknowledge the following people for their excellent insights, suggestions, and advice:

&lt;ul&gt;
&lt;li&gt;Dave Case&lt;/li&gt;&lt;li&gt;David Jacobs&lt;/li&gt;&lt;li&gt;Frank Manola&lt;/li&gt;
&lt;/ul&gt;
</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/15.html#a89</guid>
			<pubDate>Tue, 15 Feb 2005 23:19:13 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/13.html#a67</link>
			<description>&lt;a href=&quot;http://radio.weblogs.com/0110120/categories/egovernment/2004/05/21.html#a1328&quot;&gt;Federal Process Improvement Systems&lt;/a&gt;. &lt;p&gt;The U.S. federal government is a BIG enterprise.  With that in mind, OMB and &lt;a href=&quot;http://www.feapmo.gov/default.asp&quot;&gt;FEAPMO&lt;/a&gt; have created the Federal Enterprise Architecture Management System (FEAMS).  &lt;a href=&quot;http://www.feapmo.gov/feams/&quot;&gt;FEAMS&lt;/a&gt;
is supposed to help agencies during the budget process discover other
e-government initiatives within the federal enterprise that might be
leveraged by a given agency. In a large enterprise, this is very
important. Agencies often do not know what their peers are doing which
limits the development of cross-agency and enterprise initiatives.&lt;/p&gt;
&lt;p&gt;The latest quarterly&lt;a href=&quot;http://www.results.gov/agenda/scorecard.html&quot;&gt; federal report cards&lt;/a&gt; came out last week.  It shows that almost every agency is making progress in eGov.  However, only &lt;a href=&quot;http://www.state.gov/&quot;&gt;State&lt;/a&gt; and &lt;a href=&quot;http://www.usaid.gov/&quot;&gt;AID&lt;/a&gt; made enough progress to improve their overall egov status grade.  Both moved from red to yellow.&lt;/p&gt;
&lt;p&gt;In conjunction with &lt;a href=&quot;http://www.fedbizopps.gov&quot;&gt;FedBizOpps&lt;/a&gt;, the federal government has created the Business Partner Network.  &lt;a href=&quot;http://www.bpn.gov/&quot;&gt;BPN.gov&lt;/a&gt; refers to itself as the &quot;single source for vendor data for the Federal government.&quot;  BPN hosts the &lt;a href=&quot;http://www.ccr.gov/&quot;&gt;Central Contractor Registration system&lt;/a&gt; (CCR).&lt;/p&gt;
&lt;p&gt;Check out this &lt;a href=&quot;http://www.dlis.dla.mil/ProductSamplers/FEDLOG/FEDLOG.htm&quot;&gt;flash training&lt;/a&gt; on &lt;a href=&quot;http://www.dlis.dla.mil/fedlog/default.asp&quot;&gt;FEDLOG&lt;/a&gt;, a logistics support system that has increased search productivity by a factor of 60.  Quite effective.&lt;/p&gt;
&lt;p&gt;An Assistant Secretary of State gave&lt;a href=&quot;http://www.state.gov/g/oes/rls/rm/2004/32647.htm&quot;&gt; this address&lt;/a&gt; yesterday on &lt;a href=&quot;http://fossil.energy.gov/programs/sequestration/&quot;&gt;carbon sequestration&lt;/a&gt;.  &lt;a href=&quot;http://agrc.utah.gov&quot;&gt;AGRC&lt;/a&gt; and &lt;a href=&quot;http://www.its.utah.gov&quot;&gt;ITS&lt;/a&gt; are supporting several regional carbon sequestration projects.  &lt;a href=&quot;http://www.cslforum.org/documents/TSRMay2002.pdf&quot;&gt;This report&lt;/a&gt; from the&lt;a href=&quot;http://www.cslforum.org/&quot;&gt; Carbon Sequestration Leadership Forum&lt;/a&gt; provides some interesting background information.&lt;/p&gt; [&lt;a href=&quot;http://radio.weblogs.com/0110120/categories/egovernment/&quot;&gt;David Fletcher: eGovernment&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/13.html#a67</guid>
			<pubDate>Mon, 14 Feb 2005 02:02:46 GMT</pubDate>
			<source url="http://radio.weblogs.com/0110120/categories/egovernment/rss.xml">David Fletcher: eGovernment</source>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/13.html#a61</link>
			<description>&lt;a href=&quot;http://www.emergic.org/archives/2005/02/12/index.html#web_services&quot;&gt;Web Services&lt;/a&gt;. &lt;p&gt;&lt;a href=&quot;http://www.businessweek.com/technology/content/feb2005/tc2005028_8000_tc203.htm&quot;&gt;Business Week&lt;/a&gt;
has a special report on Web services: &quot;Web services refer to a set of
programming standards used to make different types of software talk to
each other over the Internet, without human intervention...Unlike the
ASPs, which were building out massive data centers and basically
running rental services for other people&apos;s software, today&apos;s
Web-service companies design their software from the ground up to be
delivered over the Internet as a service. That&apos;s a big difference. It
means their business model can scale, and the bigger they get, the more
profitable they become because they&apos;re building on that initial
research and development investment.&quot;&lt;/p&gt; [&lt;a href=&quot;http://www.emergic.org/&quot;&gt;E M E R G I C . o r g&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/13.html#a61</guid>
			<pubDate>Mon, 14 Feb 2005 01:13:45 GMT</pubDate>
			<source url="http://www.emergic.org/index.xml">E M E R G I C . o r g</source>
			</item>
		<item>
			<link>http://radio.weblogs.com/0105060/categories/webservices/2005/02/13.html#a52</link>
			<description>&lt;a href=&quot;http://www.securityfocus.com/infocus/1818?ref=rss&quot;&gt;Infocus: Apache 2 with SSL/TLS: Step-by-Step, Part 1&lt;/a&gt;.
This article begins a series of three articles dedicated to configuring
Apache 2.0 with SSL/TLS support, in order to ensure maximum security
and optimal performance of secure web communication. This part
introduces key aspects of SSL/TLS and then shows how to compile and
configure Apache 2.0 with support for these protocols. [&lt;a href=&quot;http://www.securityfocus.com&quot;&gt;SecurityFocus News&lt;/a&gt;]</description>
			<guid>http://radio.weblogs.com/0105060/categories/webservices/2005/02/13.html#a52</guid>
			<pubDate>Mon, 14 Feb 2005 00:54:46 GMT</pubDate>
			<source url="http://www.securityfocus.com/rss/news.xml">SecurityFocus News</source>
			</item>
		</channel>
	</rss>

