<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Whatley &#187; data</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/data/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>An Introduction to the Semantic Web</title>
		<link>http://www.simonwhatley.co.uk/an-introduction-to-the-semantic-web</link>
		<comments>http://www.simonwhatley.co.uk/an-introduction-to-the-semantic-web#comments</comments>
		<pubDate>Fri, 18 Jun 2010 12:20:49 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[DCMI]]></category>
		<category><![CDATA[Dublin Core]]></category>
		<category><![CDATA[Dublin Core Metadata Initiative]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[Friend of a Friend]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[machine readable]]></category>
		<category><![CDATA[Natural Language Processing]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[OpenCalais]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[PURL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDF query language]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[RDFs]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[semantic]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[subject-predicate-object]]></category>
		<category><![CDATA[Thomson Reuters]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[Triplestore]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Uniform Resource Locator]]></category>
		<category><![CDATA[Uniform Resource Name]]></category>
		<category><![CDATA[URI]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web of data]]></category>
		<category><![CDATA[Web Ontology Language]]></category>
		<category><![CDATA[world wide web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=3559</guid>
		<description><![CDATA[The Semantic Web is a web of data. There is lots of data we all use every day, and most of it is not part of the web. I can see my bank statements on the web, and my photographs, and I can see my appointments in a calendar. But can I see my photos in a calendar to see what I was doing when I took them and on a map so I know where I took them? Can I see bank statement lines in a calendar? The answer, right now, is no.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Semantic_Web" title="Wikipedia: Semantic Web" target="_blank" rel="nofollow">Semantic Web</a> is a <a href="http://en.wikipedia.org/wiki/Linked_Data" title="Wikipedia: Linked Data" target="_blank" rel="nofollow">web of data</a>. There is lots of data we all use every day, and most of it is not part of the web. I can see my bank statements on the web, and my photographs, and I can see my appointments in a calendar. But can I see my photos in a calendar to see what I was doing when I took them and on a map so I know where I took them? Can I see bank statement lines in a calendar? The answer, right now, is no.</p>
<p>But why not? Because we don&#8217;t have a web of data. Because data is controlled by applications, and each application keeps its data to itself; applications don&#8217;t like to share.</p>
<p>The original Web mainly concentrated on the interchange of documents, however, the Semantic Web is about two things: It is about common formats for integration and combination of data drawn from diverse sources. It is also about language for recording how the data relates to real world objects. That allows a person, or a machine, to start off in one database, and then move through an unending set of databases which are connected not by wires but by being about the same thing.</p>
<p>Tim Berners-Lee describes the Semantic Web vision as:</p>
<blockquote><p>I have a dream for the Web [in which computers] become capable of analysing all the data on the Web, the content, links, and transactions between people and computers. A Semantic Web, which should make this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The intelligent agents people have touted for ages will finally materialise.</p></blockquote>
<p>What are the ideas and technologies that facilitate this vision? Below I give an overview and links to a number of them:</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Linked Data</h3>
<p>Linked Data is about using the Web to connect related data that wasn&#8217;t previously linked, or using the Web to lower the barriers to linking data currently linked using other methods. More specifically, Wikipedia defines Linked Data as &#8220;a term used to describe a recommended best practice for exposing, sharing, and connecting pieces of data, information, and knowledge on the Semantic Web using <abbr title="Uniform Resource Identifier">URIs</abbr> and <abbr title="Resource Description Framework">RDF</abbr>.&#8221;</p>
<ul>
<li><a href="http://linkeddata.org" title="Linked Data: Connect Distributed Data Across The Web" target="_blank" rel="nofollow">http://linkeddata.org</a></li>
<li><a href="http://en.wikipedia.org/wiki/Linked_Data" title="Wikipedia: Linked Data" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Linked_Data</a></li>
</ul>
<h3>Resource Description Framework</h3>
<p>The Resource Description Framework (<abbr title="Resource Description Framework">RDF</abbr>) is a general-purpose language for representing information in the Web.</p>
<p>The <strong>Resource Description Framework Schema (<abbr title="Resource Description Framework Schema">RDF-S</abbr>)</strong> is a semantic extension of <abbr title="Resource Description Framework">RDF</abbr> that provides mechanisms for describing groups of related resources and the relationships between these resources.</p>
<ul>
<li><a href="http://www.w3.org/TR/rdf-schema/" title="World Wide Web Consortium: RDF Schema" target="_blank" rel="nofollow">http://www.w3.org/TR/rdf-schema/</a></li>
<li><a href="http://en.wikipedia.org/wiki/RDF_Schema" title="Wikipedia: RDF Schema" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/RDF_Schema</a></li>
</ul>
<p>The <strong>Resource Description Framework in Attributes (<abbr title="Resource Description Framework in Attributes">RDFa)</strong> allows authors to add meaning to web page elements. Using a few simple <abbr title="eXtensible HyperText Markup Language">XHTML</abbr> attributes, authors can mark up human-readable data with machine-readable indicators for browsers and other programs to interpret. A web page can include markup for items as simple as the title of an article, or as complex as a user&#8217;s complete social network.</p>
<ul>
<li><a href="http://www.w3.org/TR/xhtml-rdfa-primer/" title="World Wide Web Consortium: XHTML RDFa Primer" target="_blank" rel="nofollow">http://www.w3.org/TR/xhtml-rdfa-primer/</a></li>
<li><a href="http://en.wikipedia.org/wiki/RDFa" title="Wikipedia: RDFa" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/RDFa</a></li>
</ul>
<h3>Friend of a Friend (<abbr title="Friend of a Friend">FOAF</abbr>)</h3>
<p>The <em>Friend of a Friend</em> project is creating a Web of machine-readable pages describing people, the links between them and the things they create and do. <abbr title="Friend of a Friend">FOAF</abbr> is about your place in the Web, and the Web&#8217;s place in our world. <abbr title="Friend of a Friend">FOAF</abbr> is a simple technology that makes it easier to share and use information about people and their activities (eg. photos, calendars, weblogs), to transfer information between Web sites, and to automatically extend, merge and re-use it online.</p>
<ul>
<li><a href="http://www.foaf-project.org" title="FOAF Project" target="_blank" rel="nofollow">http://www.foaf-project.org</a></li>
<li><a href="http://en.wikipedia.org/wiki/FOAF_(software)" title="Wikipedia: FOAF (Software)" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/FOAF_(software)</a></li>
<li><a href="http://en.wikipedia.org/wiki/Friend_of_a_friend" title="Wikipedia: Friend of a Friend" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Friend_of_a_friend</a></li>
<li><a href="http://xmlns.com/foaf/spec/" title="FOAF Vocabulary Specification" target="_blank" rel="nofollow">http://xmlns.com/foaf/spec/</a></li>
</ul>
<h3>Web Ontology Language (<abbr title="Web Ontology Language">OWL</abbr>)</h3>
<p>The <abbr title="Web Ontology Language">OWL</abbr> Web Ontology Language is designed for use by applications that need to process the content of information instead of just presenting information to humans. <abbr title="Web Ontology Language">OWL</abbr> facilitates greater machine interpretability of Web content than that supported by <abbr title="eXtensible Markup Language">XML</abbr>, <abbr title="Resource Description Framework">RDF</abbr>, and <abbr title="Resource Description Framework">RDF</abbr> Schema (<abbr title="Resource Description Framework Schema">RDF-S</abbr>) by providing additional vocabulary along with a formal semantics.</p>
<ul>
<li><a href="http://www.w3.org/TR/owl-features/" title="World Wide Web Consortium: OWL Web Ontology Language" target="_blank" rel="nofollow">http://www.w3.org/TR/owl-features/</a></li>
<li><a href="http://en.wikipedia.org/wiki/Web_Ontology_Language" title="Wikipedia: Web Ontology Language" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Web_Ontology_Language</a></li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Dublin Core Metadata Initiative (<abbr title="Dublin Core Metadata Initiative">DCMI</abbr>)</h3>
<p>The Dublin Core set of metadata elements provides a small and fundamental group of text elements through which most resources can be described and catalogued. Using only 15 base text fields, a Dublin Core metadata record can describe physical resources such as books, digital materials such as video, sound, image, or text files, and composite media like web pages. Metadata records based on Dublin Core are intended to be used for cross-domain information resource description and have become standard in the fields of library science and computer science. Implementations of Dublin Core typically make use of <abbr title="eXtensible Markup Language">XML</abbr> and are Resource Description Framework (<abbr title="Resource Description Framework">RDF</abbr>) based.</p>
<ul>
<li><a href="http://dublincore.org" title="Dublin Core Metadata Initiative" target="_blank" rel="nofollow">http://dublincore.org</a></li>
<li><a href="http://en.wikipedia.org/wiki/Dublin_core" title="Wikipedia: Dublin Core" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Dublin_core</a></li>
</ul>
<h3>Triplestore</h3>
<p>A triplestore is a purpose-built database for the storage and retrieval of Resource Description Framework (<abbr title="Resource Description Framework">RDF</abbr>) metadata.</p>
<p>Much like a relational database, information is stored in a triplestore and retrieved via a query language called <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr>. Unlike a relational database, a triplestore is optimised for the storage and retrieval of many short statements called triples, in the form of subject-predicate-object, like &#8220;Bob is 35&#8243; or &#8220;Bob knows Fred&#8221;.</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Triplestore" title="Wikipedia: Triplestore" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Triplestore</a></li>
</ul>
<h3>SPARQL Protocol and RDF Query Language (<abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr>)</h3>
<p><abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> is an <abbr title="Resource Description Framework">RDF</abbr> query language, which can be used to express queries across diverse data sources, whether the data is stored natively as <abbr title="Resource Description Framework">RDF</abbr> or viewed as <abbr title="Resource Description Framework">RDF</abbr> via middleware. <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> contains capabilities for querying required and optional graph patterns along with their conjunctions and disjunctions. <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> also supports extensible value testing and constraining queries by source <abbr title="Resource Description Framework">RDF</abbr> graph. The results of <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> queries can be results sets or <abbr title="Resource Description Framework">RDF</abbr> graphs.</p>
<ul>
<li><a href="http://www.w3.org/TR/rdf-sparql-query/" title="World Wide Web Consortium: SPARQL Query" target="_blank" rel="nofollow">http://www.w3.org/TR/rdf-sparql-query/</a></li>
<li><a href="http://en.wikipedia.org/wiki/Sparql" title="Wikipedia: SPARQL" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Sparql</a></li>
</ul>
<h3>Simple Knowledge Organization System (<abbr title="Simple Knowledge Organization System">SKOS</abbr>) </h3>
<p><abbr title="Simple Knowledge Organization System">SKOS</abbr> is a family of formal languages designed for representation of thesauri, classification schemes, taxonomies, subject-heading systems, or any other type of structured controlled vocabulary. <abbr title="Simple Knowledge Organization System">SKOS</abbr> is built upon <abbr title="Resource Description Framework">RDF</abbr> and <abbr title="Resource Description Framework Schema">RDF-S</abbr>, and its main objective is to enable easy publication of controlled structured vocabularies for the Semantic Web.</p>
<ul>
<li><a href="http://www.w3.org/2004/02/skos/" title="World Wide Web Consortium: SKOS" target="_blank" rel="nofollow">http://www.w3.org/2004/02/skos/</a></li>
<li><a href="http://en.wikipedia.org/wiki/Simple_Knowledge_Organization_System" title="Wikipedia: Simple Knowledge Organisation System" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Simple_Knowledge_Organization_System</a></li>
</ul>
<h3>Persistent Uniform Resource Locator (<abbr title="Persistent Uniform Resource Locator">PURL</abbr>)</h3>
<p>A <abbr title="Persistent Uniform Resource Locator">PURL</abbr> is a type of Uniform Resource Locator (<abbr title="Uniform Resource Locator">URL</abbr>) that does not directly describe the location of the resource to be retrieved but instead describes an intermediate, more persistent location which, when retrieved, results in redirection (e.g. via a 302 <abbr title="HyperText Transfer Protocol">HTTP</abbr> status code) to the current location of the final resource.</p>
<p><abbr title="Persistent Uniform Resource Locator">PURLs</abbr> are an interim measure, while Uniform Resource Names (<abbr title="Uniform Resource Names">URNs</abbr>) are being mainstreamed, to solve the problem of transitory <abbr title="Uniform Resource Identifier">URIs</abbr> in location-based <abbr title="Uniform Resource Identifier">URI</abbr> schemes like <abbr title="HyperText Transfer Protocol">HTTP</abbr>.</p>
<ul>
<li><a href="http://purl.org/docs/index.html" title="Persistent Uniform Resource Locators" target="_blank" rel="nofollow">http://purl.org/docs/index.html</a></li>
<li><a href="http://en.wikipedia.org/wiki/Persistent_Uniform_Resource_Locator" title="Wikipedia: Persistent Uniform Resource Locator" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Persistent_Uniform_Resource_Locator</a></li>
</ul>
<h3>Thomson Reuters OpenCalais</h3>
<p>OpenCalais is a rapidly growing toolkit of capabilities that allow you to readily incorporate state-of-the-art semantic functionality within your blog, content management system, website or application.</p>
<p>The OpenCalais Web Service automatically creates rich semantic metadata for the content you submit. Using Natural Language Processing (<abbr title="Natural Language Processing">NLP</abbr>), machine learning and other methods, Calais analyses your document and finds the entities within it. Calais goes beyond classic entity identification returning the facts and events hidden within your text as well.</p>
<ul>
<li><a href="http://www.opencalais.com" title="Thomson Reuters OpenCalais" target="_blank" rel="nofollow">http://www.opencalais.com</a></li>
</ul>
<p>If you have any more suggestions that should be included above, I&#8217;ll be happy to hear them.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/an-introduction-to-the-semantic-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL User-Defined Function: ListToTable</title>
		<link>http://www.simonwhatley.co.uk/sql-user-defined-function-listtotable</link>
		<comments>http://www.simonwhatley.co.uk/sql-user-defined-function-listtotable#comments</comments>
		<pubDate>Mon, 22 Sep 2008 10:58:30 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database server]]></category>
		<category><![CDATA[extend]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[sub-routine]]></category>
		<category><![CDATA[subroutine]]></category>
		<category><![CDATA[t-sql]]></category>
		<category><![CDATA[tabular]]></category>
		<category><![CDATA[UDF]]></category>
		<category><![CDATA[user defined function]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=426</guid>
		<description><![CDATA[A common need in SQL is the ability to iterate over a list as if it were an array. In SQL it is not possible to declare arrays, unlike other programming languages such as ColdFusion, ActionScript and Java. Fortunately, there is a way around this problem: use a User-Defined Functions (UDFs) to create a tabular version of the data. Arrays are, after all, essentially tabular data (at their simplest, one dimension level).]]></description>
			<content:encoded><![CDATA[<p>A common need in <abbr title="Structured Query Language">SQL</abbr> is the ability to iterate over a list as if it were an <a href="http://en.wikipedia.org/wiki/Array" title="Wikipedia: Array" target="_blank" rel="nofollow">array</a>. In <abbr title="Structured Query Language">SQL</abbr> it is not possible to declare arrays, unlike other programming languages such as ColdFusion, ActionScript and Java. Fortunately, there is a way around this problem: use a <a href="http://en.wikipedia.org/wiki/User-defined_function" title="Wikipedia: User-Defined Functions" target="_blank" rel="nofollow">User-Defined Functions</a> (<abbr title="User Defined Functions">UDF</abbr>s) to create a tabular version of the data. Arrays are, after all, essentially tabular data (at their simplest, one dimension level).</p>
<p>A User-Defined Function, is a function provided by the user of a program or environment. In <abbr title="Structured Query Language">SQL</abbr> databases, a user-defined function provides a mechanism for extending the functionality of the database server by adding a function that can be evaluated in <abbr title="Structured Query Language">SQL</abbr> statements.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>The Function Code</h3>
<p>Below is the complete function definition:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><<span style="color: #0000ff;">|</span>/1/>CREATE</span> <<span style="color: #0000ff;">|</span>/1/>FUNCTION</span> dbo.udf_ListToTable
<span style="color: #66cc66;">&#40;</span>
	@LIST 		<<span style="color: #0000ff;">|</span>/2/>NVARCHAR</span><span style="color: #66cc66;">&#40;</span><<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">4000</span><span style="color: #66cc66;">&#41;</span>,
	@DELIMITER 	<<span style="color: #0000ff;">|</span>/2/>NVARCHAR</span><span style="color: #66cc66;">&#40;</span><<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">=</span> <span style="color: #ff0000;">','</span>
<span style="color: #66cc66;">&#41;</span>
<<span style="color: #0000ff;">|</span>/1/>RETURNS</span> @ListTable <<span style="color: #0000ff;">|</span>/1/>TABLE</span>
<span style="color: #66cc66;">&#40;</span>
	Item <<span style="color: #0000ff;">|</span>/2/>NVARCHAR</span><span style="color: #66cc66;">&#40;</span><<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>
<<span style="color: #0000ff;">|</span>/1/>AS</span>
<<span style="color: #0000ff;">|</span>/1/>BEGIN</span>
	<<span style="color: #0000ff;">|</span>/1/>DECLARE</span> @LenDel 	<<span style="color: #0000ff;">|</span>/2/>INT</span>
	<<span style="color: #0000ff;">|</span>/1/>DECLARE</span> @Pos 		<<span style="color: #0000ff;">|</span>/2/>INT</span>
	<<span style="color: #0000ff;">|</span>/1/>DECLARE</span> @Item 		<<span style="color: #0000ff;">|</span>/2/>NVARCHAR</span><span style="color: #66cc66;">&#40;</span><<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
	<span style="color: #808080;">--Get the length of the delimiter, use hack to get around LEN(' ') = 0 issue</span>
	<<span style="color: #0000ff;">|</span>/1/>SET</span> @LenDel <span style="color: #0000ff;">=</span> <span style="color: #ff00ff;">LEN</span><span style="color: #66cc66;">&#40;</span>@DELIMITER <span style="color: #0000ff;">+</span> <span style="color: #ff0000;">'|'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">-</span> <<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">1</span>
&nbsp;
	<<span style="color: #0000ff;">|</span>/1/>SET</span> @Pos <span style="color: #0000ff;">=</span> <span style="color: #ff00ff;">CHARINDEX</span><span style="color: #66cc66;">&#40;</span>@DELIMITER, @LIST<span style="color: #66cc66;">&#41;</span>
	<<span style="color: #0000ff;">|</span>/1/>WHILE</span> @Pos <span style="color: #66cc66;">&gt;</span> <<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">0</span>
	<<span style="color: #0000ff;">|</span>/1/>BEGIN</span>
		<span style="color: #808080;">--Get the item</span>
		<<span style="color: #0000ff;">|</span>/1/>SET</span> @Item <span style="color: #0000ff;">=</span> <span style="color: #ff00ff;">SUBSTRING</span><span style="color: #66cc66;">&#40;</span>@LIST, <<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">1</span>, @Pos-<<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #808080;">--Add it to the table (if not empty string)</span>
		<<span style="color: #0000ff;">|</span>/1/>IF</span> <span style="color: #ff00ff;">LEN</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff00ff;">LTRIM</span><span style="color: #66cc66;">&#40;</span>@Item<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">0</span>
			<<span style="color: #0000ff;">|</span>/1/>INSERT</span> @ListTable <span style="color: #66cc66;">&#40;</span>Item<span style="color: #66cc66;">&#41;</span> <<span style="color: #0000ff;">|</span>/1/>VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff00ff;">LTRIM</span><span style="color: #66cc66;">&#40;</span>@Item<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #808080;">--Remove the item from the list</span>
		<<span style="color: #0000ff;">|</span>/1/>SET</span> @LIST <span style="color: #0000ff;">=</span> <span style="color: #ff00ff;">STUFF</span><span style="color: #66cc66;">&#40;</span>@LIST, <<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">1</span>, @Pos+@LenDel-<<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">1</span>, <span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #808080;">--Get the position of the next delimiter</span>
		<<span style="color: #0000ff;">|</span>/1/>SET</span> @Pos <span style="color: #0000ff;">=</span> <span style="color: #ff00ff;">CHARINDEX</span><span style="color: #66cc66;">&#40;</span>@DELIMITER, @LIST<span style="color: #66cc66;">&#41;</span>
	<<span style="color: #0000ff;">|</span>/1/>END</span>
&nbsp;
	<span style="color: #808080;">--Add the last item to the table (if not empty string)</span>
	<<span style="color: #0000ff;">|</span>/1/>IF</span> <span style="color: #ff00ff;">LEN</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff00ff;">LTRIM</span><span style="color: #66cc66;">&#40;</span>@LIST<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <<span style="color: #0000ff;">|</span> style<span style="color: #66cc66;">=</span>"color: #cc66cc;">0</span>
		<<span style="color: #0000ff;">|</span>/1/>INSERT</span> @ListTable <span style="color: #66cc66;">&#40;</span>Item<span style="color: #66cc66;">&#41;</span> <<span style="color: #0000ff;">|</span>/1/>VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff00ff;">LTRIM</span><span style="color: #66cc66;">&#40;</span>@LIST<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
	<<span style="color: #0000ff;">|</span>/1/>RETURN</span>
<<span style="color: #0000ff;">|</span>/1/>END</span>
<<span style="color: #0000ff;">|</span>/1/>GO</span></pre></div></div>

<p>The function simply loops over the list passed into the function. Each list item is then inserted into the variable named <code>@ListTable</code>, which is of type <code>TABLE</code>. The <code>@ListTable</code> variable is then returned out of the function and can be handled the same as any other table.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>The Function In Use</h3>
<p>A simple demonstration is as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><<span style="color: #0000ff;">|</span>/1/>INSERT</span> <<span style="color: #0000ff;">|</span>/1/>INTO</span> tableName <span style="color: #66cc66;">&#40;</span>column1, column2, column3, column4<span style="color: #66cc66;">&#41;</span>
<<span style="color: #0000ff;">|</span>/1/>SELECT</span> @variable1, @variable2, myTable.item, <span style="color: #ff00ff;">GETDATE</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<<span style="color: #0000ff;">|</span>/1/>FROM</span> dbo.udf_ListToTable<span style="color: #66cc66;">&#40;</span>@list,<span style="color: #ff0000;">','</span><span style="color: #66cc66;">&#41;</span> <<span style="color: #0000ff;">|</span>/1/>AS</span> myTable</pre></div></div>

<p>In this example, we insert the same information (<code>@variable1</code>, <code>@variable2</code>) for every instance of an item found in <code>myTable</code>.</p>
<p>This is useful, for example, if you want to apply a setting to a group of users. The group of users could be contained in a list that needs to be parsed as a table, whilst the individual setting details are contained in the other variables.</p>
<h3>Download the Code</h3>
<p><a href="/examples/sql/functions/udf_ListToTable.txt" title="Download the code">Download the code</a>, rename the file to .sql and run on your database instance. You will then be able to reference the function in your Stored Procedures.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/sql-user-defined-function-listtotable/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Future Directions for Rich Internet Applications</title>
		<link>http://www.simonwhatley.co.uk/future-directions-for-rich-internet-applications</link>
		<comments>http://www.simonwhatley.co.uk/future-directions-for-rich-internet-applications#comments</comments>
		<pubDate>Thu, 19 Jul 2007 18:31:09 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[disparate systems]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[gears]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[integrated applications]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Internet Applications Rich Internet Applications]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[manual processing]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[performance solutions]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Service Orientated Architecture]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[Software as a Service]]></category>
		<category><![CDATA[software orientated architecture]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Web industry]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=296</guid>
		<description><![CDATA[Rich Internet Applications are just the beginning. A key trend taking place throughout the Web industry is the urgency to integrate disparate systems and software tools to reduce costs, increase developer productivity, reduce the need for manual processing and intervention in transactions, and decrease time to market. To achieve these objectives, organisations have endorsed the adoption of standards-based systems combined with the migration to Web Services and Service Orientated Architecture. This has led to a requirement to create a consistent and intuitive interface to applications, data and services. The immediate goal of these efforts is to provide simpler, quicker and more efficient access and processing of information.]]></description>
			<content:encoded><![CDATA[<p>Rich Internet Applications (<acronym title="Rich Internet Application">RIA</acronym>s) are just the beginning. A key trend taking place throughout the Web industry is the urgency to integrate disparate systems and software tools to reduce costs, increase developer productivity, reduce the need for manual processing and intervention in transactions, and decrease time to market. To achieve these objectives, organisations have endorsed the adoption of standards-based systems (e.g. <acronym title="eXtensible Markup Language">XML</acronym>, Design Patterns, <acronym title="Cascading Style Sheets">CSS</acronym>, <acronym title="European Computer Manufacturers Association">ECMA</acronym>Script) combined with the migration to Web Services and Service Orientated Architecture (<acronym title="Software Orientated Architecture">SOA</acronym>). This has led to a requirement to create a consistent and intuitive interface to applications, data and services. The immediate goal of these efforts is to provide simpler, quicker and more efficient access and processing of information. Increasingly, Web applications are also offering customers application interfaces that are more personalised and customised to each individual&#8217;s specific requests and requirements.</p>
<p>It is clear that <acronym title="Rich Internet Application">RIA</acronym>s offer the potential to fundamentally change the user experience and in doing so, yield significant business benefits. However, in order for <acronym title="Rich Internet Application">RIA</acronym>s to be widely employed, and for more companies to receive these kinds of returns, technologies to build <acronym title="Rich Internet Application">RIA</acronym>s will need to appeal to a wider range of developers. The ability to cost effectively create rich, engaging user experiences that support corporate objectives and reach a broader developer audience without sacrificing development productivity require a new generation of <acronym title="Rich Internet Application">RIA</acronym> tools. These tools are being developed by a large number of organisations with Adobe, Microsoft, Google, Apple and Sun leading the way with the <a href="http://labs.adobe.com/technologies/air/" title="Adobe AIR" target="_blank" rel="nofollow">AIR</a>/<a href="http://www.adobe.com/products/flash/" rel="nofollow" target="_blank" title="Flash">Flash</a>/<a href="http://www.adobe.com/products/flex/" rel="nofollow" target="_blank" title="Flex">Flex</a> combination, <a href="http://silverlight.net/" rel="nofollow" target="_blank" title="Silverlight">Silverlight</a>, <a href="http://gears.google.com/" rel="nofollow" target="_blank" title="Google Gears">Gears</a>, <a href="http://www.apple.com/quicktime/" rel="nofollow" target="_blank" title="Apple's Quicktime">Quicktime</a> and <a href="http://www.sun.com/software/javafx/index.jsp" rel="nofollow" target="_blank" title="Sun's JavaFX">JavaFX</a> respectively.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>The new generation of <acronym title="Rich Internet Application">RIA</acronym> tools being developed by the likes of Adobe and Microsoft must do the following to allow developers to truely harness the power of <acronym title="Rich Internet Application">RIA</acronym>s in the commercial environment:</p>
<ol>
<li>Allow developers to write applications using familiar development models to utilise and extend their current skills without requiring them to adopt entirely new or different skills</li>
<li>Use standard and standards-based technologies</li>
<li>Use industry specific programming models and patterns</li>
<li>Use and/or leverage the existing IT infrastructure through wrap and reuse rather than rip and replace</li>
<li>Provide pervasive, familiar programming models and an expressive user interface across platforms and devices; and</li>
<li>Allow developers to create a solution that delivers scalable, secure, high performance solutions that are bandwidth efficient</li>
</ol>
<p>These new <acronym title="Rich Internet Application">RIA</acronym> tools will need to provide the features that enhance IT developer&#8217;s abilities to be more creative and to accomplish <acronym title="Rich Internet Application">RIA</acronym> development with the same or less effort than the tools they use to create other types of applications. What is required are the tools that can help developers achieve these objectives without relying on only <acronym title="HyperText Markup Language">HTML</acronym> or other scripting languages, or having to learn a completely new development approach.</p>
<p>Two vendors which have the technology and capaibility to fully deliver Rich Internet Applications are Adobe and Microsoft. With Microsoft&#8217;s <a href="http://silverlight.net/" rel="nofollow" target="_blank" title="Silverlight">Silverlight</a> and <acronym title="Extensible Application Markup Language">XAML</acronym>, developing rich internet applications to run on Windows platforms will progress at a fast rate. In turn, Adobe has had a head start with the aquisition of Macromedia and the subsequent addition of <a href="http://www.adobe.com/products/flash/" rel="nofollow" target="_blank" title="Flash">Flash</a> and <a href="http://www.adobe.com/products/flex/" rel="nofollow" target="_blank" title="Flex">Flex</a> to its product offering. Flash and its relative ubiquity across platforms and devices ensures that <acronym title="Rich Internet Application">RIA</acronym> development and production will be accessible to a large user base and as such puts Adobe at a distinct advantage over Microsoft.<br />
<script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/future-directions-for-rich-internet-applications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wise Up to Mashups</title>
		<link>http://www.simonwhatley.co.uk/wise-up-to-mashups</link>
		<comments>http://www.simonwhatley.co.uk/wise-up-to-mashups#comments</comments>
		<pubDate>Tue, 28 Nov 2006 23:03:03 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[inexpensive]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[Mashups]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[shopping]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[third-party]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[web-based]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=149</guid>
		<description><![CDATA[A new breed of Web-based data integration applications is emerging across the Internet. Colloquially known as mashups, their popularity stems from the emphasis on interactive user participation and the manner in which they aggregate third-party data. A mashup is a website or web application that seamlessly combines content from more than one source into an integrated experience. Mashups are an exciting genre of interactive Web applications that are characterised by, and draw upon, content and functionality retrieved from external data sources to create entirely new and innovative services. They are a hallmark of the second generation of Web applications widely known as Web 2.0.]]></description>
			<content:encoded><![CDATA[<p>A new breed of Web-based data integration applications is emerging across the Internet. Colloquially known as &#8220;mashups&#8221;, their popularity stems from the emphasis on interactive user participation and the manner in which they aggregate third-party data.</p>
<blockquote cite="http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29"><p>A mashup is a website or web application that seamlessly combines content from more than one source into an integrated experience.</p></blockquote>
<p>Mashups are an exciting genre of interactive Web applications that are characterised by, and draw upon, content and functionality retrieved from external data sources to create entirely new and innovative services. They are a hallmark of the second generation of Web applications widely known as <a title="Web 2.0" href="http://en.wikipedia.org/wiki/Web_2.0" rel="nofollow">Web 2.0</a>.</p>
<p>This vague data-integration definition of a mashup certainly isn&#8217;t a rigorous one. A good insight as to what makes a mashup is to look at the etymology of the term:</p>
<blockquote cite="http://www.answers.com/topic/mashup-music"><p>Mashup, or bastard pop, is a musical genre which, in its purest form, consists of the combination (usually by digital means) of the music from one song with the a cappella from another. Typically, the music and vocals belong to completely different genres. At their best, bastard pop songs strive for musical epiphanies that add up to considerably more than the sum of their parts.</p></blockquote>
<p>Like these songs, a mashup is an unusual or innovative composition of content (often from unrelated data sources), made for human (rather than computerized) consumption.</p>
<p><strong>Mapping mashups</strong></p>
<p>In this age of information technology, people are collecting a immense amount of data about things, activities, events, all of which can be annotated with locations. These diverse data sets that contain location data, are wanting to be presented graphically using maps. One of the big catalysts for the advent of mashups was Google&#8217;s introduction of its <a title="Google Maps API" href="http://www.google.com/apis/maps/" rel="nofollow">Google Maps API</a>. This opened the floodgates, allowing Web developers to mash all sorts of data (everything from <a title="Nuclear Disasters Mashup" href="http://www.lastingnews.com/maps/nuclear_accidents.php" rel="nofollow">nuclear disasters</a> to <a title="Weather Bonk" href="http://www.weatherbonk.com" rel="nofollow">Weather Bonk</a> and <a title="Keotag" href="http://www.keotag.com/" rel="nofollow">Keotag</a>) onto maps. Not to be left out, APIs from Microsoft (<a title="Live Search - Virtual Earth" href="http://maps.live.com/" rel="nofollow">Virtual Earth</a>), Yahoo (<a title="Yahoo Maps API" href="http://developer.yahoo.com/maps/" rel="nofollow">Yahoo Maps</a>), and AOL (<a title="MapQuest" href="http://www.mapquest.com/" rel="nofollow">MapQuest</a>) shortly followed.</p>
<p><strong>Video and photo mashups</strong></p>
<p>The emergence of photo hosting and social networking sites like <a title="Flickr" href="http://www.flickr.com/" rel="nofollow">Flickr</a> with <acronym title="Application Programming Interface">APIs</acronym> that expose photo sharing has led to a variety of interesting mashups. Because these content providers have metadata associated with the images they host (such as who took the picture, what it is a picture of, where and when it was taken, user-defined tags for describing the image and more), mashup designers can mash photos with other information that can be associated with the metadata. For example, a mashup might analyse song or poetry lyrics and create a mosaic or collage of relevant photos, or display social networking graphs based upon common photo metadata (subject, timestamp, and other metadata.). Yet another example might take as input a Web site (such as a news site like <a title="CNN" href="http://www.cnn.com" rel="nofollow">CNN</a>) and render the text in photos by matching tagged photos to words from the news. <a title="Education Search" href="http://educationsearch.net/" rel="nofollow">EducationSearch</a> is an education search tool which enables you to search by: Location, Career, Industry/Salary and provides personalized searches to save for future reference. <a title="Education Search" href="http://educationsearch.net/" rel="nofollow">EducationSearch</a> Utilises <a title="Flickr" href="http://www.flickr.com/" rel="nofollow">Flickr</a>, <a title="Google Maps" href="http://maps.google.co.uk" rel="nofollow">Google Maps</a> and <a title="YouTube" href="http://www.youtube.com" rel="nofollow">YouTube</a>.</p>
<p><strong>Search and Shopping mashups</strong></p>
<p>Search and shopping mashups have existed long before the term mashup was coined. Before the days of Web <acronym title="Application Programming Interface">APIs</acronym>, comparative shopping tools such as <a title="BizRate" href="http://www.bizrate.co.uk" rel="nofollow">BizRate</a>, <a title="PriceGrabber" href="http://www.pricegrabber.co.uk/" rel="nofollow">PriceGrabber</a>, <a title="MySimon" href="http://www.mysimon.com/" rel="nofollow">MySimon</a>, <a title="CrowdStorm" href="http://www.crowdstorm.com/" rel="nofollow">CrowdStorm</a>, <a title="Shopping.com" href="http://www.shopping.com" rel="nofollow">Shopping.com</a> and Google&#8217;s <a title="Froogle" href="http://froogle.google.co.uk/" rel="nofollow">Froogle</a> used combinations of business-to-business (<acronym title="Business to Business">B2B</acronym>) technologies or screen-scraping to aggregate comparative price data. To facilitate mashups and other interesting Web applications, consumer marketplaces such as <a title="eBay" href="http://www.ebay.co.uk" rel="nofollow">eBay</a> and <a title="Amazon" href="http://www.amazon.co.uk" rel="nofollow">Amazon</a> have released APIs for programmatically accessing their content.</p>
<p><strong>News mashups</strong></p>
<p>News sources (such as the <a title="New York Times" href="http://www.nytimes.com/" rel="nofollow">New York Times</a>, the <a title="BBC News" href="http://news.bbc.co.uk/" rel="nofollow">BBC</a>, or <a title="Reuters" href="http://today.reuters.com/news/" rel="nofollow">Reuters</a>) have used syndication technologies like <acronym title="Really Simple Syndication">RSS</acronym> and Atom since 2002 to disseminate news feeds related to various topics. Syndication feed mashups can aggregate a user&#8217;s feeds and present them over the Web, creating a personalized newspaper that caters to the reader&#8217;s particular interests. An example includes <a title="Diggdot.us" href="http://diggdot.us/" rel="nofollow">Diggdot.us</a>, which combines feeds from the techie-oriented news sources <a title="Digg" href="http://www.digg.com" rel="nofollow">Digg.com</a>, <a title="Slashdot" href="http://slashdot.org" rel="nofollow">Slashdot.org</a>, and <a title="Del.icio.us" href="http://del.icio.us" rel="nofollow">Del.icio.us</a>. This is in contrast to <a title="Google News" href="http://news.google.com/" rel="nofollow">Google News</a> which aggregates news content through complex search algorithms.</p>
<p>Mashups represent huge benefits and challenges to software companies. No longer is the web simply a collection of web pages that a user &#8216;surfs&#8217; through on a day to day basis. The web is becoming an omnipotent tool, a global application along the mold of Microsoft&#8217;s Windows <acronym title="Operating System">OS</acronym>. People are learning to develop Web 2.0 with much the same energy as seen in the early innovations of the personal computer market. The more people seize control of this new paradigm, the more the long-delayed promise of software and services that can be tapped on demand is realised.</p>
<p>At the same time these bottom-up efforts represent a tough challenge to the service providers upon which the mashup is based. Mashups often use data with out licence, and present this data in unintended ways. For example, Yahoo initially blocked the use of its <acronym title="Application Programming Interface">API</acronym> by one mashup website that was using it&#8217;s content in conjunction with the Google Maps <acronym title="Application Programming Interface">API</acronym>. Amazon blocked the use of it&#8217;s <acronym title="Application Programming Interface">API</acronym> by <a title="Amazon Light" href="http://www.kokogiak.com/amazon/" rel="nofollow">Amazon Light</a> until it changed how it linked to rival sites and the <a title="Grease Monkey Firefox Extension" href="https://addons.mozilla.org/firefox/748/" rel="nofollow">GreaseMonkey</a> extension for the <a title="Firefox Browser" href="http://www.mozilla.com/en-US/firefox/" rel="nofollow">Firefox Browser</a>, which allows the quick installation of scripts to manipulate web pages, represents a security threat if exposed to malicious scripts.</p>
<p><strong>Inexpensive Research &#038; Development</strong></p>
<p>Amazon and other giants in the web business are embracing the mashup phenomenon by allowing easier access to their data services. Indeed, these companies are programming their interfaces so that much of the computations are made on the client&#8217;s computer rather than a server located on potentially another continent. This allows developer&#8217;s to make their own tweaks.</p>
<p>The appeal to web sites is clear. Mashups represent a way to develop creativity, software, tools and communicate messages to the community.</p>
<p>However, mashup business models don&#8217;t extend beyond running a few Google ads and collecting fees for sending buyers to e-commerce sites. One reason is that most Web sites don&#8217;t allow for-profit use of their data by outsiders. But as traffic to mash-ups grows, companies may cut deals, especially if mash-up sites spur new markets. Map-based mash-ups, for instance, may finally attract local businesses to advertise on the Web.</p>
<p><strong>Link(s)</strong></p>
<p><a title="Programmable Web - The Mashup Resource" href="http://www.programmableweb.com" rel="nofollow">http://www.programmableweb.com</a></p>
<p align="center"><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/wise-up-to-mashups/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

