<?xml version="1.0" encoding="UTF-8" ?>
<!--RDF based XML document generated By OpenLink Virtuoso-->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <rss:channel xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/">
  <rss:title>Kingsley Idehen&#39;s Blog Data Space</rss:title>
  <rss:link>http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/</rss:link>
  <rss:description>I have seen the future and it&#39;s full of Linked Data! :-)</rss:description>
  <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">kidehen@openlinksw.com</dc:creator>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2026-06-12T10:22:41Z</dc:date>
  <rss:items>
   <rdf:Seq>
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-25#1655" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-21#1653" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-20#1652" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-19#1651" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-08-03#1406" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-04-28#1342" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-04-10#1334" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-11#973" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-05#968" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-10-26#882" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-01-28#673" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-04-16#523" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-07-31#224" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-06-25#187" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-05-16#30" />
      <rdf:li rdf:resource="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-05-16#303" />
   </rdf:Seq>
  </rss:items>
 </rss:channel>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-25#1655">
  <rss:title>SPARQL Guide for the Perl Developer</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2011-01-25T16:05:17Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">What? A simple guide usable by any Perl developer seeking to exploit SPARQL without hassles. Why? SPARQL is a powerful query language, results serialization format, and an HTTP based data access protocol from the W3C. It provides a mechanism for accessing and integrating data across Deductive Database Systems (colloquially referred to as triple or quad stores in Semantic Web and Linked Data circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. How? SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing. Steps: Determine which SPARQL endpoint you want to access e.g. DBpedia or a local Virtuoso instance (typically: http://localhost:8890/sparql). If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;SPARQL_SPONGE&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access). Script: # # Demonstrating use of a single query to populate a # Virtuoso Quad Store via Perl. # # # HTTP URL is constructed accordingly with CSV query results format as the default via mime type. # use CGI qw/:standard/; use LWP::UserAgent; use Data::Dumper; use Text::CSV_XS; sub sparqlQuery(@args) { my $query=shift; my $baseURL=shift; my $format=shift; %params=( &quot;default-graph&quot; =&gt; &quot;&quot;, &quot;should-sponge&quot; =&gt; &quot;soft&quot;, &quot;query&quot; =&gt; $query, &quot;debug&quot; =&gt; &quot;on&quot;, &quot;timeout&quot; =&gt; &quot;&quot;, &quot;format&quot; =&gt; $format, &quot;save&quot; =&gt; &quot;display&quot;, &quot;fname&quot; =&gt; &quot;&quot; ); @fragments=(); foreach $k (keys %params) { $fragment=&quot;$k=&quot;.CGI::escape($params{$k}); push(@fragments,$fragment); } $query=join(&quot;&amp;&quot;, @fragments); $sparqlURL=&quot;${baseURL}?$query&quot;; my $ua = LWP::UserAgent-&gt;new; $ua-&gt;agent(&quot;MyApp/0.1 &quot;); my $req = HTTP::Request-&gt;new(GET =&gt; $sparqlURL); my $res = $ua-&gt;request($req); $str=$res-&gt;content; $csv = Text::CSV_XS-&gt;new(); foreach $line ( split(/^/, $str) ) { $csv-&gt;parse($line); @bits=$csv-&gt;fields(); push(@rows, [ @bits ] ); } return \@rows; } # Setting Data Source Name (DSN) $dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;; # Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET using the IRI in # FROM clause as Data Source URL en route to DBMS # record Inserts. $query=&quot;DEFINE get:soft \&quot;replace\&quot;\n # Generic (non Virtuoso specific SPARQL # Note: this will not add records to the # DBMS SELECT DISTINCT * FROM &lt;$dsn&gt; WHERE {?s ?p ?o}&quot;; $data=sparqlQuery($query, &quot;http://localhost:8890/sparql/&quot;, &quot;text/csv&quot;); print &quot;Retrieved data:\n&quot;; print Dumper($data); Output Retrieved data: $VAR1 = [ [ &#39;s&#39;, &#39;p&#39;, &#39;o&#39; ], [ &#39;http://dbpedia.org/resource/DBpedia&#39;, &#39;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&#39;, &#39;http://www.w3.org/2002/07/owl#Thing&#39; ], [ &#39;http://dbpedia.org/resource/DBpedia&#39;, &#39;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&#39;, &#39;http://dbpedia.org/ontology/Work&#39; ], [ &#39;http://dbpedia.org/resource/DBpedia&#39;, &#39;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&#39;, &#39;http://dbpedia.org/class/yago/Software106566077&#39; ], ... Conclusion CSV was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a Perl developer that already knows how to use Perl for HTTP based data access within HTML. SPARQL just provides an added bonus to URL dexterity (delivered via URI abstraction) with regards to constructing Data Source Names or Addresses. Related RDF::Query::Client Guide SPARQL Guide for the Perl Developer SPARQL Guide for the PHP Developer SPARQL Guide for the Python Developer SPARQL Guide for the Ruby Developer Simple Guide for using SPARQL with Virtuoso General SPARQL Tutorial Collection Virtuoso Specific SPARQL Tutorial Collection The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3>What?</h3> 
<p>A simple guide usable by any <a class="auto-href" href="http://dbpedia.org/resource/Perl" id="link-id0x1bdcab80">Perl</a> developer seeking to exploit <a class="auto-href" href="http://dbpedia.org/resource/SPARQL" id="link-id0x17b447e8">SPARQL</a> without hassles.</p>

<h3>Why?</h3>
<p>SPARQL is a powerful query language, results serialization format, and an HTTP based <a href="http://dbpedia.org/resource/Data">data</a> access protocol from the W3C. It provides a mechanism for accessing and integrating data across <a href="http://en.wikipedia.org/wiki/Deductive_database" id="link-id0x1cc76540">Deductive Database Systems</a> (colloquially referred to as triple or quad stores in <a class="auto-href" href="http://dbpedia.org/resource/Semantic_Web" id="link-id0x1d944d78">Semantic Web</a> and <a class="auto-href" href="http://dbpedia.org/resource/Linked_Data" id="link-id0x1c7a87c8">Linked Data</a> circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. </p>

<h3>How?</h3>
<p>SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing.</p>

<h4>Steps:</h4>
<ol>
<li>Determine which SPARQL endpoint you want to access e.g. <a href="http://dbpedia.org/sparql" id="link-id0x1d476520">DBpedia</a> or a local <a class="auto-href" href="http://virtuoso.openlinksw.com" id="link-id0x1bcfe140">Virtuoso</a> instance (typically: http://localhost:8890/sparql).
</li>
<li>If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access).</li>
</ol>

<h4>Script:</h4>

<pre>
#
# Demonstrating use of a single query to populate a 
# Virtuoso Quad Store via Perl. 
#

# 
# HTTP <a href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x1d6465e8">URL</a> is constructed accordingly with CSV query results format as the default via mime type.
#

use CGI qw/:standard/;
use LWP::UserAgent;
use Data::Dumper;
use Text::CSV_XS;

sub sparqlQuery(@args) {
  my $query=shift;
  my $baseURL=shift;
  my $format=shift;
	
	%params=(
		&quot;default-graph&quot; =&gt; &quot;&quot;, &quot;should-sponge&quot; =&gt; &quot;soft&quot;, &quot;query&quot; =&gt; $query,
		&quot;debug&quot; =&gt; &quot;on&quot;, &quot;timeout&quot; =&gt; &quot;&quot;, &quot;format&quot; =&gt; $format,
		&quot;save&quot; =&gt; &quot;display&quot;, &quot;fname&quot; =&gt; &quot;&quot;
	);
	
	@fragments=();
	foreach $k (keys %params) {
		$fragment=&quot;$k=&quot;.CGI::escape($params{$k});
		push(@fragments,$fragment);
	}
	$query=join(&quot;&amp;&quot;, @fragments);
	
	$sparqlURL=&quot;${baseURL}?$query&quot;;
	
	my $ua = LWP::UserAgent-&gt;new;
	$ua-&gt;agent(&quot;MyApp/0.1 &quot;);
	my $req = HTTP::Request-&gt;new(GET =&gt; $sparqlURL);
	my $res = $ua-&gt;request($req);
	$str=$res-&gt;content;
	
	$csv = Text::CSV_XS-&gt;new();
	
	foreach $line ( split(/^/, $str) ) {
		$csv-&gt;parse($line);
		@bits=$csv-&gt;fields();
	  push(@rows, [ @bits ] );
	}
	return \@rows;
}


# Setting Data Source Name (DSN)

$dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;;

# Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET using the IRI in
# FROM clause as Data Source URL en route to DBMS
# record Inserts.

$query=&quot;DEFINE get:soft \&quot;replace\&quot;\n

# Generic (non Virtuoso specific SPARQL
# Note: this will not add records to the 
# DBMS 

SELECT DISTINCT * FROM &lt;$dsn&gt; WHERE {?s ?p ?o}&quot;; 

$data=sparqlQuery($query, &quot;http://localhost:8890/sparql/&quot;, &quot;text/csv&quot;);

print &quot;Retrieved data:\n&quot;;
print Dumper($data);
</pre>
<h4>Output</h4>
<pre>
Retrieved data:
$VAR1 = [
          [
            &#39;s&#39;,
            &#39;p&#39;,
            &#39;o&#39;
          ],
          [
            &#39;http://dbpedia.org/resource/DBpedia&#39;,
            &#39;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&#39;,
            &#39;http://www.w3.org/2002/07/owl#Thing&#39;
          ],
          [
            &#39;http://dbpedia.org/resource/DBpedia&#39;,
            &#39;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&#39;,
            &#39;http://dbpedia.org/ontology/Work&#39;
          ],
          [
            &#39;http://dbpedia.org/resource/DBpedia&#39;,
            &#39;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&#39;,
            &#39;http://dbpedia.org/class/yago/Software106566077&#39;
          ],
...
</pre>
<h3>Conclusion</h3>
<p>
CSV was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a Perl developer that already knows how to use Perl for HTTP based data access within HTML. SPARQL just provides an added bonus to URL dexterity (delivered via <a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1d29da98">URI</a> abstraction) with regards to constructing Data Source Names or Addresses.</p>
<h3>Related</h3>
<ul>
<li>
  <a href="http://cpansearch.perl.org/src/TOBYINK/RDF-Query-Client-0.103/README" id="link-id0x1c279130">RDF::Query::Client Guide</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1653" id="link-id0x1cf307f0">SPARQL Guide for the Perl Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1652" id="link-id0x1b0ffb28">SPARQL Guide for the PHP Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1651" id="link-id0x1a8c5ae0">SPARQL Guide for the Python Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1648" id="link-id0x1b86ad28">SPARQL Guide for the Ruby Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1646" id="link-id0x1c7af188">Simple Guide for using SPARQL with Virtuoso</a> 
</li>
<li>
  <a href="http://www.delicious.com/kidehen/sparql_tutorial" id="link-id0x1ac1ba48">General SPARQL Tutorial Collection</a> </li>
<li>
  <a href="http://www.delicious.com/kidehen/virtuoso_sparql_tutorial" id="link-id0x1c7be660">Virtuoso Specific SPARQL Tutorial Collection</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1567" id="link-id0x1c52b438">The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI</a>.
</li>
</ul>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-21#1653">
  <rss:title>SPARQL Guide for the Javascript Developer </rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2011-01-21T19:59:49Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">What? A simple guide usable by any Javascript developer seeking to exploit SPARQL without hassles. Why? SPARQL is a powerful query language, results serialization format, and an HTTP based data access protocol from the W3C. It provides a mechanism for accessing and integrating data across Deductive Database Systems (colloquially referred to as triple or quad stores in Semantic Web and Linked Data circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. How? SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing. Steps: Determine which SPARQL endpoint you want to access e.g. DBpedia or a local Virtuoso instance (typically: http://localhost:8890/sparql). If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;SPARQL_SPONGE&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access). Script: /* Demonstrating use of a single query to populate a # Virtuoso Quad Store via Javascript. */ /* HTTP URL is constructed accordingly with JSON query results format as the default via mime type. */ function sparqlQuery(query, baseURL, format) { if(!format) format=&quot;application/json&quot;; var params={ &quot;default-graph&quot;: &quot;&quot;, &quot;should-sponge&quot;: &quot;soft&quot;, &quot;query&quot;: query, &quot;debug&quot;: &quot;on&quot;, &quot;timeout&quot;: &quot;&quot;, &quot;format&quot;: format, &quot;save&quot;: &quot;display&quot;, &quot;fname&quot;: &quot;&quot; }; var querypart=&quot;&quot;; for(var k in params) { querypart+=k+&quot;=&quot;+encodeURIComponent(params[k])+&quot;&amp;&quot;; } var queryURL=baseURL + &#39;?&#39; + querypart; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); } xmlhttp.open(&quot;GET&quot;,queryURL,false); xmlhttp.send(); return JSON.parse(xmlhttp.responseText); } /* setting Data Source Name (DSN) */ var dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;; /* Virtuoso pragma &quot;DEFINE get:soft &quot;replace&quot; instructs Virtuoso SPARQL engine to perform an HTTP GET using the IRI in FROM clause as Data Source URL with regards to DBMS record inserts */ var query=&quot;DEFINE get:soft \&quot;replace\&quot;\nSELECT DISTINCT * FROM &lt;&quot;+dsn+&quot;&gt; WHERE {?s ?p ?o}&quot;; var data=sparqlQuery(query, &quot;/sparql/&quot;); Output Place the snippet above into the &lt;script/&gt; section of an HTML document to see the query result. Conclusion JSON was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a Javascript developer that already knows how to use Javascript for HTTP based data access within HTML. SPARQL just provides an added bonus to URL dexterity (delivered via URI abstraction) with regards to constructing Data Source Names or Addresses. Related SPARQL Guide for the PHP Developer SPARQL Guide for the Python Developer SPARQL Guide for the Ruby Developer Simple Guide for using SPARQL with Virtuoso General SPARQL Tutorial Collection Virtuoso Specific SPARQL Tutorial Collection The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3>What?</h3> 
<p>A simple guide usable by any Javascript developer seeking to exploit <a class="auto-href" href="http://dbpedia.org/resource/SPARQL" id="link-id0x17b447e8">SPARQL</a> without hassles.</p>

<h3>Why?</h3>
<p>SPARQL is a powerful query language, results serialization format, and an HTTP based <a href="http://dbpedia.org/resource/Data">data</a> access protocol from the W3C. It provides a mechanism for accessing and integrating data across <a href="http://en.wikipedia.org/wiki/Deductive_database" id="link-id0x1cc76540">Deductive Database Systems</a> (colloquially referred to as triple or quad stores in <a class="auto-href" href="http://dbpedia.org/resource/Semantic_Web" id="link-id0x1d944d78">Semantic Web</a> and <a class="auto-href" href="http://dbpedia.org/resource/Linked_Data" id="link-id0x1c7a87c8">Linked Data</a> circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. </p>

<h3>How?</h3>
<p>SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing.</p>

<h4>Steps:</h4>
<ol>
<li>Determine which SPARQL endpoint you want to access e.g. <a href="http://dbpedia.org/sparql" id="link-id0x1d476520">DBpedia</a> or a local <a class="auto-href" href="http://virtuoso.openlinksw.com" id="link-id0x1bcfe140">Virtuoso</a> instance (typically: http://localhost:8890/sparql).
</li>
<li>If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access).</li>
</ol>

<h4>Script:</h4>

<pre>
/*
Demonstrating use of a single query to populate a # Virtuoso Quad Store via Javascript. 
*/

/* 
HTTP <a href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x1bc27a18">URL</a> is constructed accordingly with JSON query results format as the default via mime type.
*/

function sparqlQuery(query, baseURL, format) {
	if(!format)
		format=&quot;application/json&quot;;
	var params={
		&quot;default-graph&quot;: &quot;&quot;, &quot;should-sponge&quot;: &quot;soft&quot;, &quot;query&quot;: query,
		&quot;debug&quot;: &quot;on&quot;, &quot;timeout&quot;: &quot;&quot;, &quot;format&quot;: format,
		&quot;save&quot;: &quot;display&quot;, &quot;fname&quot;: &quot;&quot;
	};
	
	var querypart=&quot;&quot;;
	for(var k in params) {
		querypart+=k+&quot;=&quot;+encodeURIComponent(params[k])+&quot;&amp;&quot;;
	}
	var queryURL=baseURL + &#39;?&#39; + querypart;
	if (window.XMLHttpRequest) {
  	xmlhttp=new XMLHttpRequest();
  }
  else {
  	xmlhttp=new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
  }
  xmlhttp.open(&quot;GET&quot;,queryURL,false);
  xmlhttp.send();
  return JSON.parse(xmlhttp.responseText);
}

/*
setting Data Source Name (DSN)
*/

var dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;;

/*
Virtuoso pragma &quot;DEFINE get:soft &quot;replace&quot; instructs Virtuoso SPARQL engine to perform an HTTP GET using the IRI in FROM clause as Data Source URL with regards to 
DBMS record inserts
*/

var query=&quot;DEFINE get:soft \&quot;replace\&quot;\nSELECT DISTINCT * FROM &lt;&quot;+dsn+&quot;&gt; WHERE {?s ?p ?o}&quot;; 
var data=sparqlQuery(query, &quot;/sparql/&quot;);
</pre>
<h4>Output</h4>
<p>
Place the snippet above into the &lt;script/&gt; section of an HTML document to see the <a href="http://twitpic.com/3s2vs3/full" id="link-id0x1cff2288">query result</a>.
</p>
<h3>Conclusion</h3>
<p>
JSON was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a Javascript developer that already knows how to use Javascript for HTTP based data access within HTML. SPARQL just provides an added bonus to URL dexterity (delivered via <a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1d29da98">URI</a> abstraction) with regards to constructing Data Source Names or Addresses.</p>
<h3>Related</h3>
<ul>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1652" id="link-id0x1b0ffb28">SPARQL Guide for the PHP Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1651" id="link-id0x1a8c5ae0">SPARQL Guide for the Python Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1648" id="link-id0x1b86ad28">SPARQL Guide for the Ruby Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1646" id="link-id0x1c7af188">Simple Guide for using SPARQL with Virtuoso</a> 
</li>
<li>
  <a href="http://www.delicious.com/kidehen/sparql_tutorial" id="link-id0x1ac1ba48">General SPARQL Tutorial Collection</a> </li>
<li>
  <a href="http://www.delicious.com/kidehen/virtuoso_sparql_tutorial" id="link-id0x1c7be660">Virtuoso Specific SPARQL Tutorial Collection</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1567" id="link-id0x1c52b438">The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI</a>.
</li>
</ul>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-20#1652">
  <rss:title>SPARQL Guide for the PHP Developer</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2011-01-20T21:25:49Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">What? A simple guide usable by any PHP developer seeking to exploit SPARQL without hassles. Why? SPARQL is a powerful query language, results serialization format, and an HTTP based data access protocol from the W3C. It provides a mechanism for accessing and integrating data across Deductive Database Systems (colloquially referred to as triple or quad stores in Semantic Web and Linked Data circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. How? SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing e.g. local object binding re. PHP. Steps: From your command line execute: aptitude search &#39;^PHP26&#39;, to verify PHP is in place Determine which SPARQL endpoint you want to access e.g. DBpedia or a local Virtuoso instance (typically: http://localhost:8890/sparql). If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;SPARQL_SPONGE&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access). Script: #!/usr/bin/env php &lt;?php # # Demonstrating use of a single query to populate a # Virtuoso Quad Store via PHP. # # HTTP URL is constructed accordingly with JSON query results format in mind. function sparqlQuery($query, $baseURL, $format=&quot;application/json&quot;) { $params=array( &quot;default-graph&quot; =&gt; &quot;&quot;, &quot;should-sponge&quot; =&gt; &quot;soft&quot;, &quot;query&quot; =&gt; $query, &quot;debug&quot; =&gt; &quot;on&quot;, &quot;timeout&quot; =&gt; &quot;&quot;, &quot;format&quot; =&gt; $format, &quot;save&quot; =&gt; &quot;display&quot;, &quot;fname&quot; =&gt; &quot;&quot; ); $querypart=&quot;?&quot;; foreach($params as $name =&gt; $value) { $querypart=$querypart . $name . &#39;=&#39; . urlencode($value) . &quot;&amp;&quot;; } $sparqlURL=$baseURL . $querypart; return json_decode(file_get_contents($sparqlURL)); }; # Setting Data Source Name (DSN) $dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;; #Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET #using the IRI in FROM clause as Data Source URL $query=&quot;DEFINE get:soft \&quot;replace\&quot; SELECT DISTINCT * FROM &lt;$dsn&gt; WHERE {?s ?p ?o}&quot;; $data=sparqlQuery($query, &quot;http://localhost:8890/sparql/&quot;); print &quot;Retrieved data:\n&quot; . json_encode($data); ?&gt; Output Retrieved data: {&quot;head&quot;: {&quot;link&quot;:[],&quot;vars&quot;:[&quot;s&quot;,&quot;p&quot;,&quot;o&quot;]}, &quot;results&quot;: {&quot;distinct&quot;:false,&quot;ordered&quot;:true, &quot;bindings&quot;:[ {&quot;s&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/resource\/DBpedia&quot;},&quot;p&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type&quot;},&quot;o&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/2002\/07\/owl#Thing&quot;}}, {&quot;s&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/resource\/DBpedia&quot;},&quot;p&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type&quot;},&quot;o&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/ontology\/Work&quot;}}, {&quot;s&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/resource\/DBpedia&quot;},&quot;p&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type&quot;},&quot;o&quot;: {&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/class\/yago\/Software106566077&quot;}}, ... Conclusion JSON was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a PHP developer that already knows how to use PHP for HTTP based data access. SPARQL just provides an added bonus to URL dexterity (delivered via URI abstraction) with regards to constructing Data Source Names or Addresses. Related SPARQL Guide for the Python Developer SPARQL Guide for the Ruby Developer Simple Guide for using SPARQL with Virtuoso General SPARQL Tutorial Collection Virtuoso Specific SPARQL Tutorial Collection The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3>What?</h3> 
<p>A simple guide usable by any <a class="auto-href" href="http://dbpedia.org/resource/PHP_programming_language" id="link-id0x1bdca7b8">PHP</a> developer seeking to exploit <a class="auto-href" href="http://dbpedia.org/resource/SPARQL" id="link-id0x1c894338">SPARQL</a> without hassles.</p>

<h3>Why?</h3>
<p>SPARQL is a powerful query language, results serialization format, and an HTTP based <a href="http://dbpedia.org/resource/Data">data</a> access protocol from the W3C. It provides a mechanism for accessing and integrating data across <a href="http://en.wikipedia.org/wiki/Deductive_database" id="link-id0x1c319af0">Deductive Database Systems</a> (colloquially referred to as triple or quad stores in <a class="auto-href" href="http://dbpedia.org/resource/Semantic_Web" id="link-id0x1d944d78">Semantic Web</a> and <a class="auto-href" href="http://dbpedia.org/resource/Linked_Data" id="link-id0x1c7a87c8">Linked Data</a> circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. </p>

<h3>How?</h3>
<p>SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing e.g. local object binding re. PHP.</p>

<h4>Steps:</h4>
<ol>
<li>
From your command line execute: aptitude search &#39;^PHP26&#39;, to verify PHP is in place
</li>
<li>Determine which SPARQL endpoint you want to access e.g. <a href="http://dbpedia.org/sparql" id="link-id0x1d476520">DBpedia</a> or a local <a class="auto-href" href="http://virtuoso.openlinksw.com" id="link-id0x1bcfe140">Virtuoso</a> instance (typically: http://localhost:8890/sparql).
</li>
<li>If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access).</li>
</ol>

<h4>Script:</h4>

<pre>
#!/usr/bin/env php
&lt;?php
#
# Demonstrating use of a single query to populate a # Virtuoso Quad Store via PHP. 
#

# HTTP <a href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x1ce1d6d8">URL</a> is constructed accordingly with JSON query results format in mind.

function sparqlQuery($query, $baseURL, $format=&quot;application/json&quot;)

  {
	$params=array(
		&quot;default-graph&quot; =&gt;  &quot;&quot;,
		&quot;should-sponge&quot; =&gt;  &quot;soft&quot;,
		&quot;query&quot; =&gt;  $query,
		&quot;debug&quot; =&gt;  &quot;on&quot;,
		&quot;timeout&quot; =&gt;  &quot;&quot;,
		&quot;format&quot; =&gt;  $format,
		&quot;save&quot; =&gt;  &quot;display&quot;,
		&quot;fname&quot; =&gt;  &quot;&quot;
	);

	$querypart=&quot;?&quot;;	
	foreach($params as $name =&gt; $value) 
  {
		$querypart=$querypart . $name . &#39;=&#39; . urlencode($value) . &quot;&amp;&quot;;
	}
	
	$sparqlURL=$baseURL . $querypart;
	
	return json_decode(file_get_contents($sparqlURL));
};



# Setting Data Source Name (DSN)
$dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;;

#Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET
#using the IRI in FROM clause as Data Source URL

$query=&quot;DEFINE get:soft \&quot;replace\&quot;
SELECT DISTINCT * FROM &lt;$dsn&gt; WHERE {?s ?p ?o}&quot;; 

$data=sparqlQuery($query, &quot;http://localhost:8890/sparql/&quot;);

print &quot;Retrieved data:\n&quot; . json_encode($data);

?&gt;
</pre>
<h4>Output</h4>
<pre>
Retrieved data:
  {&quot;head&quot;:
  {&quot;link&quot;:[],&quot;vars&quot;:[&quot;s&quot;,&quot;p&quot;,&quot;o&quot;]},
  &quot;results&quot;:
		{&quot;distinct&quot;:false,&quot;ordered&quot;:true,
		&quot;bindings&quot;:[
			{&quot;s&quot;:
			{&quot;type&quot;:&quot;<a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1ca44a98">uri</a>&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/resource\/DBpedia&quot;},&quot;p&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type&quot;},&quot;o&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/2002\/07\/owl#Thing&quot;}},
			{&quot;s&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/resource\/DBpedia&quot;},&quot;p&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type&quot;},&quot;o&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/ontology\/Work&quot;}},
			{&quot;s&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/resource\/DBpedia&quot;},&quot;p&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type&quot;},&quot;o&quot;:
			{&quot;type&quot;:&quot;uri&quot;,&quot;value&quot;:&quot;http:\/\/dbpedia.org\/class\/yago\/Software106566077&quot;}},
...
</pre>
<h3>Conclusion</h3>
<p>
JSON was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a PHP developer that already knows how to use PHP for HTTP based data access. SPARQL just provides an added bonus to URL dexterity (delivered via URI abstraction) with regards to constructing Data Source Names or Addresses.</p>
<h3>Related</h3>
<ul>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1651" id="link-id0x1a8c5ae0">SPARQL Guide for the Python Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1648" id="link-id0x1b86ad28">SPARQL Guide for the Ruby Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1646" id="link-id0x1c7af188">Simple Guide for using SPARQL with Virtuoso</a> 
</li>
<li>
  <a href="http://www.delicious.com/kidehen/sparql_tutorial" id="link-id0x1ac1ba48">General SPARQL Tutorial Collection</a> </li>
<li>
  <a href="http://www.delicious.com/kidehen/virtuoso_sparql_tutorial" id="link-id0x1c7be660">Virtuoso Specific SPARQL Tutorial Collection</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1567" id="link-id0x1c52b438">The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI</a>.
</li>
</ul>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-19#1651">
  <rss:title>SPARQL Guide for Python Developer</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2011-01-19T17:13:30Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">What? A simple guide usable by any Python developer seeking to exploit SPARQL without hassles. Why? SPARQL is a powerful query language, results serialization format, and an HTTP based data access protocol from the W3C. It provides a mechanism for accessing and integrating data across Deductive Database Systems (colloquially referred to as triple or quad stores in Semantic Web and Linked Data circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. How? SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing e.g. local object binding re. Python. Steps: From your command line execute: aptitude search &#39;^python26&#39;, to verify Python is in place Determine which SPARQL endpoint you want to access e.g. DBpedia or a local Virtuoso instance (typically: http://localhost:8890/sparql). If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;SPARQL_SPONGE&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access). Script: #!/usr/bin/env python # # Demonstrating use of a single query to populate a # Virtuoso Quad Store via Python. # import urllib, json # HTTP URL is constructed accordingly with JSON query results format in mind. def sparqlQuery(query, baseURL, format=&quot;application/json&quot;): params={ &quot;default-graph&quot;: &quot;&quot;, &quot;should-sponge&quot;: &quot;soft&quot;, &quot;query&quot;: query, &quot;debug&quot;: &quot;on&quot;, &quot;timeout&quot;: &quot;&quot;, &quot;format&quot;: format, &quot;save&quot;: &quot;display&quot;, &quot;fname&quot;: &quot;&quot; } querypart=urllib.urlencode(params) response = urllib.urlopen(baseURL,querypart).read() return json.loads(response) # Setting Data Source Name (DSN) dsn=&quot;http://dbpedia.org/resource/DBpedia&quot; # Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET # using the IRI in FROM clause as Data Source URL query=&quot;&quot;&quot;DEFINE get:soft &quot;replace&quot; SELECT DISTINCT * FROM &lt;%s&gt; WHERE {?s ?p ?o}&quot;&quot;&quot; % dsn data=sparqlQuery(query, &quot;http://localhost:8890/sparql/&quot;) print &quot;Retrieved data:\n&quot; + json.dumps(data, sort_keys=True, indent=4) # # End Output Retrieved data: { &quot;head&quot;: { &quot;link&quot;: [], &quot;vars&quot;: [ &quot;s&quot;, &quot;p&quot;, &quot;o&quot; ] }, &quot;results&quot;: { &quot;bindings&quot;: [ { &quot;o&quot;: { &quot;type&quot;: &quot;uri&quot;, &quot;value&quot;: &quot;http://www.w3.org/2002/07/owl#Thing&quot; }, &quot;p&quot;: { &quot;type&quot;: &quot;uri&quot;, &quot;value&quot;: &quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&quot; }, &quot;s&quot;: { &quot;type&quot;: &quot;uri&quot;, &quot;value&quot;: &quot;http://dbpedia.org/resource/DBpedia&quot; } }, ... Conclusion JSON was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a Python developer that already knows how to use Python for HTTP based data access. SPARQL just provides an added bonus to URL dexterity (delivered via URI abstraction) with regards to constructing Data Source Names or Addresses. Related SPARQL Guide for the Ruby Developer Simple Guide for using SPARQL with Virtuoso General SPARQL Tutorial Collection Virtuoso Specific SPARQL Tutorial Collection The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3>What?</h3> 
<p>A simple guide usable by any <a class="auto-href" href="http://dbpedia.org/resource/Python_programming_language" id="link-id0x1bdca7b8">Python</a> developer seeking to exploit <a class="auto-href" href="http://dbpedia.org/resource/SPARQL" id="link-id0x1c894338">SPARQL</a> without hassles.</p>

<h3>Why?</h3>
<p>SPARQL is a powerful query language, results serialization format, and an HTTP based <a href="http://dbpedia.org/resource/Data">data</a> access protocol from the W3C. It provides a mechanism for accessing and integrating data across <a href="http://en.wikipedia.org/wiki/Deductive_database" id="link-id0x1c319af0">Deductive Database Systems</a> (colloquially referred to as triple or quad stores in <a class="auto-href" href="http://dbpedia.org/resource/Semantic_Web" id="link-id0x1d944d78">Semantic Web</a> and <a class="auto-href" href="http://dbpedia.org/resource/Linked_Data" id="link-id0x1c7a87c8">Linked Data</a> circles) -- database systems (or data spaces) that manage proposition oriented records in 3-tuple (triples) or 4-tuple (quads) form. </p>

<h3>How?</h3>
<p>SPARQL queries are actually HTTP payloads (typically). Thus, using a RESTful client-server interaction pattern, you can dispatch calls to a SPARQL compliant data server and receive a payload for local processing e.g. local object binding re. Python.</p>

<h4>Steps:</h4>
<ol>
<li>
From your command line execute: aptitude search &#39;^python26&#39;, to verify Python is in place
</li>
<li>Determine which SPARQL endpoint you want to access e.g. <a href="http://dbpedia.org/sparql" id="link-id0x1d476520">DBpedia</a> or a local <a class="auto-href" href="http://virtuoso.openlinksw.com" id="link-id0x1bcfe140">Virtuoso</a> instance (typically: http://localhost:8890/sparql).
</li>
<li>If using Virtuoso, and you want to populate its quad store using SPARQL, assign &quot;<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>&quot; privileges to user &quot;SPARQL&quot; (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access).</li>
</ol>

<h4>Script:</h4>

<pre>
#!/usr/bin/env python
#
# Demonstrating use of a single query to populate a # Virtuoso Quad Store via Python. 
#

import urllib, json

# HTTP <a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x1bd91cf0">URL</a> is constructed accordingly with JSON query results format in mind.

def sparqlQuery(query, baseURL, format=&quot;application/json&quot;):
	params={
		&quot;default-graph&quot;: &quot;&quot;,
		&quot;should-sponge&quot;: &quot;soft&quot;,
		&quot;query&quot;: query,
		&quot;debug&quot;: &quot;on&quot;,
		&quot;timeout&quot;: &quot;&quot;,
		&quot;format&quot;: format,
		&quot;save&quot;: &quot;display&quot;,
		&quot;fname&quot;: &quot;&quot;
	}
	querypart=urllib.urlencode(params)
	response = urllib.urlopen(baseURL,querypart).read()
	return json.loads(response)

# Setting Data Source Name (DSN)
dsn=&quot;http://dbpedia.org/resource/DBpedia&quot;

# Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET
# using the IRI in FROM clause as Data Source URL

query=&quot;&quot;&quot;DEFINE get:soft &quot;replace&quot;
SELECT DISTINCT * FROM &lt;%s&gt; WHERE {?s ?p ?o}&quot;&quot;&quot; % dsn 

data=sparqlQuery(query, &quot;http://localhost:8890/sparql/&quot;)

print &quot;Retrieved data:\n&quot; + json.dumps(data, sort_keys=True, indent=4)

#
# End
</pre>
<h4>Output</h4>
<pre>
Retrieved data:
{
    &quot;head&quot;: {
        &quot;link&quot;: [], 
        &quot;vars&quot;: [
            &quot;s&quot;, 
            &quot;p&quot;, 
            &quot;o&quot;
        ]
    }, 
    &quot;results&quot;: {
        &quot;bindings&quot;: [
            {
                &quot;o&quot;: {
                    &quot;type&quot;: &quot;<a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1b1470b8">uri</a>&quot;, 
                    &quot;value&quot;: &quot;http://www.w3.org/2002/07/owl#Thing&quot;
                }, 
                &quot;p&quot;: {
                    &quot;type&quot;: &quot;uri&quot;, 
                    &quot;value&quot;: &quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&quot;
                }, 
                &quot;s&quot;: {
                    &quot;type&quot;: &quot;uri&quot;, 
                    &quot;value&quot;: &quot;http://dbpedia.org/resource/DBpedia&quot;
                }
            }, 
...
</pre>
<h3>Conclusion</h3>
<p>
JSON was chosen over XML (re. output format) since this is about a &quot;no-brainer installation and utilization&quot; guide for a Python developer that already knows how to use Python for HTTP based data access. SPARQL just provides an added bonus to URL dexterity (delivered via URI abstraction) with regards to constructing Data Source Names or Addresses.</p>
<h3>Related</h3>
<ul>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1648" id="link-id0x1c9e26b0">SPARQL Guide for the Ruby Developer</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1646" id="link-id0x1c7af188">Simple Guide for using SPARQL with Virtuoso</a> 
</li>
<li>
  <a href="http://www.delicious.com/kidehen/sparql_tutorial" id="link-id0x1ac1ba48">General SPARQL Tutorial Collection</a> </li>
<li>
  <a href="http://www.delicious.com/kidehen/virtuoso_sparql_tutorial" id="link-id0x1c7be660">Virtuoso Specific SPARQL Tutorial Collection</a>
</li>
<li>
<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1567" id="link-id0x1c52b438">The URI, URL, and Linked Data Meme&#39;s Generic HTTP URI</a>.
</li>
</ul>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-08-03#1406">
  <rss:title>Virtuoso&#39;s Universal Server Architecture (Conceptual &amp; Technical)</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2008-08-03T13:07:12Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">As they say, a picture speaks a thousand words, so I am exposing two views of Virtuoso that have been on the Web for while. Remember, Virtuoso offers data management, data access, web application server, enterprise service bus, and virtualization of disparate and heterogeneous data sources, as part of a single, multi threaded, cross-platform server solution; hence it&#39;s description as a &quot;Universal Server&quot;. Conceptual View: Technical View (kinda missing PHP, Perl, Python runtime hosting in the Virtual Application Sever realm): Virtuoso&#39;s architecture is not a reaction to current trends. The diagrams above are pretty old (with minor touch ups in recent times). At OpenLink Software, we&#39;ve have a consistent world-view re. standards and the vital role they play when it comes to developing software that enables the construction and exploitation of &quot;Context Lenses&quot; that tap into a substrate of Virtualized Logical Data Sources (SQL, XML, RDF, Web Services, Full Text etc.).</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[As they say, a picture speaks a thousand words, so I am exposing two views of <a href="http://virtuoso.openlinksw.com" id="link-id13fe7df8">Virtuoso</a> that have been on the <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> for while. <br />
<br />Remember, <a href="http://virtuoso.openlinksw.com" id="link-id13f53ed0">Virtuoso</a> offers <a href="http://dbpedia.org/resource/Data">data</a> management, data access, web <a href="http://dbpedia.org/resource/Application_server" id="link-id109f04b0">application server</a>, enterprise service bus, and virtualization of disparate and heterogeneous data sources, as part of a single, multi threaded, cross-platform server solution; hence it&#39;s description as a &quot;<a href="http://dbpedia.org/resource/Virtuoso_Universal_Server" id="link-id104d2e48">Universal Server</a>&quot;.<br />
<br />Conceptual View:<br />
<br />
<img style="max-width: 800px;" src="http://virtuoso.openlinksw.com/images/vconc650.jpg" />
<br />
<br />Technical View (kinda missing <a href="http://dbpedia.org/resource/PHP" id="link-id10660110">PHP</a>, <a href="http://dbpedia.org/resource/Perl" id="link-id1053d9b8">Perl</a>, <a href="http://dbpedia.org/resource/Python_programming_language" id="link-id107bc9c0">Python</a> runtime hosting in the Virtual Application Sever realm):<br />
<br />
<img style="max-width: 800px;" src="http://virtuoso.openlinksw.com/images/virtuoso3arch.gif" />
<br />
<br />
<br />
<a href="http://virtuoso.openlinksw.com" id="link-id0x13cf3798">Virtuoso</a>&#39;s architecture is not a reaction to current trends. The diagrams above are pretty old (with minor touch ups in recent times). At <a href="http://www.openlinksw.com/dataspace/organization/openlink#this" id="link-id13e194c0">OpenLink Software</a>, we&#39;ve have a consistent world-view re. standards and the vital role they play when it comes to developing software that enables the construction and exploitation of &quot;<a href="http://dbpedia.org/resource/Context_%28language_use%29" id="link-id133c84a8">Context</a> Lenses&quot; that tap into a substrate of Virtualized Logical Data Sources (<a href="http://dbpedia.org/resource/SQL" id="link-id104d1c30">SQL</a>, XML, RDF, Web Services, Full Text etc.).<br />
<br />
<br />
<br />
<br />]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-04-28#1342">
  <rss:title>Linked Data Illustrated and a Virtuoso Functionality Reminder</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2008-04-28T17:32:47Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel Lewis has put together a nice collection of Linked Data related posts that illustrate the fundamentals of the Linked Data Web and the vital role that Virtuoso plays as a deployment platform. Remember, Virtuoso was architected in 1998 (see Virtuoso History) in anticipation of the eventual Internet, Intranet, and Extranet level requirements for a different kind of Server. At the time of Virtuoso&#39;s inception, many thought our desire to build a multi-protocol, multi-model, and multi-purpose, virtual and native data server was sheer craziness, but we pressed on (courtesy of our vision and technical capabilities). Today, we have a very sophisticated Universal Server Platform (in Open Source and Commercial forms) that is naturally equipped to do the following via very simple interfaces: - Produce RDF Linked Data from non RDF Data Sources (Heterogeneous SQL, XML, Web Services) - Provide highly scalable RDF Data Management via a Quad Store (DBpedia is an example of a live demonstration) - Sophisticated Deployment of Linked Data that exploits the power of SPARQL - Powerful WebDAV innovations that simplify read-write mode interaction with Linked Data - Use Web Data Virtualization to address the pain and frustration associated with Web Data Silos (e.g. OpenLink Data Spaces layer stop Virtuoso that delivers Personal Data Spaces / Unified Storage in the Clouds) - Deliver a Linked Data development and deployment platform to .NET (VB, C#) , Java, PHP, Ruby, Perl, Python, &#39;C&#39;, C++, and other developers - More...</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<a href="http://myopenlink.net/dataspace/person/danieljohnlewis#this" id="link-id156ceb30">Daniel Lewis</a> has put together a nice <a href="http://vanirsystems.com/danielsblog/2008/04/27/linked-data-the-role-of-the-data-server/" id="link-id10456040">collection of Linked Data related posts</a> that illustrate the fundamentals of the <a href="http://dbpedia.org/resource/Linked_Data" id="link-id1033f6f0">Linked Data</a> <a href="http://dbpedia.org/resource/Giant_Global_Graph" id="link-id106fa168">Web</a> and the vital role that <a href="http://virtuoso.openlinksw.com" id="link-id10141c20">Virtuoso</a> plays as a deployment platform.

Remember, <a href="http://virtuoso.openlinksw.com" id="link-id10301e38">Virtuoso</a> was architected in 1998 (see <a href="http://virtuoso.openlinksw.com/wiki/main/Main/VOSHistory" id="link-id10c44088">Virtuoso History</a>) in anticipation of the eventual <a href="http://dbpedia.org/resource/Internet" id="link-id1383a1e8">Internet</a>, <a href="http://dbpedia.org/resource/Intranet" id="link-id1028e770">Intranet</a>, and <a href="http://dbpedia.org/resource/Extranet" id="link-id14b07b40">Extranet</a> level requirements for a different kind of Server. At the time of <a href="http://virtuoso.openlinksw.com" id="link-id14ad24a8">Virtuoso</a>&#39;s inception, many thought our desire to build a multi-protocol, multi-model, and multi-purpose, virtual and native <a href="http://dbpedia.org/resource/Data" id="link-id108dac48">data</a> server was sheer craziness, but we pressed on (courtesy of our vision and technical capabilities). 

Today, we have a very sophisticated <a href="http://dbpedia.org/resource/Virtuoso_Universal_Server" id="link-id14a65d48">Universal Server</a> Platform (in Open Source and Commercial forms) that is naturally equipped to do the following via very simple interfaces: 
<ul>
- Produce <a href="http://dbpedia.org/resource/Resource_Description_Framework" id="link-id11fb1170">RDF</a> <a href="http://dbpedia.org/resource/Linked_Data" id="link-id10871da8">Linked Data</a> from non <a href="http://dbpedia.org/resource/Resource_Description_Framework" id="link-id156ec3d0">RDF</a> <a href="http://dbpedia.org/resource/Data" id="link-id10f0ca38">Data</a> Sources (Heterogeneous <a href="http://dbpedia.org/resource/SQL" id="link-id15133078">SQL</a>, XML, <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> Services)</ul>
<ul>
- Provide highly scalable <a href="http://dbpedia.org/resource/Resource_Description_Framework" id="link-id10585940">RDF</a> <a href="http://dbpedia.org/resource/Data" id="link-id15151e10">Data</a> Management via a Quad Store (<a href="http://dbpedia.org/resource/DBpedia" id="link-id1530d640">DBpedia</a> is an example of a live demonstration)</ul>
<ul>
- Sophisticated Deployment of <a href="http://dbpedia.org/resource/Linked_Data" id="link-id10141c80">Linked Data</a> that exploits the power of <a href="http://dbpedia.org/resource/SPARQL" id="link-id1064fa18">SPARQL</a>
</ul>
<ul>
- Powerful WebDAV innovations that simplify read-write mode interaction with <a href="http://dbpedia.org/resource/Linked_Data" id="link-id1396ff68">Linked Data</a>
</ul>
<ul>
- Use Web <a href="http://dbpedia.org/resource/Federated_database_system" id="link-id108256e8">Data Virtualization</a> to address the pain and frustration associated with Web <a href="http://dbpedia.org/resource/Data" id="link-id147e65f8">Data</a> Silos (e.g. <a href="http://dbpedia.org/resource/OpenLink_Data_Spaces" id="link-idffaf078">OpenLink Data Spaces</a> layer stop <a href="http://virtuoso.openlinksw.com" id="link-id14ae8fe8">Virtuoso</a> that delivers <a href="http://dbpedia.org/resource/OpenLink_Data_Spaces" id="link-id0xa0fb5e40">Personal Data Spaces</a> / Unified Storage in the Clouds)
</ul>
<ul>
- Deliver a <a href="http://dbpedia.org/resource/Linked_Data" id="link-id10869700">Linked Data</a> development and deployment platform to .<a href="http://dbpedia.org/resource/.NET_Framework" id="link-id1514cac0">NET</a> (<a href="http://dbpedia.org/resource/Visual_Basic" id="link-id10c107a8">VB</a>, <a href="http://dbpedia.org/resource/C_(programming_language)" id="link-id101f3c68">C</a>#) , Java, <a href="http://dbpedia.org/resource/PHP" id="link-id106e4710">PHP</a>, <a href="http://dbpedia.org/resource/Ruby_programming_language" id="link-id10277448">Ruby</a>, <a href="http://dbpedia.org/resource/Perl" id="link-id10a75748">Perl</a>, <a href="http://dbpedia.org/resource/Python_programming_language" id="link-id12fdb118">Python</a>, &#39;<a href="http://dbpedia.org/resource/C_(programming_language)" id="link-id10c9d9e0">C</a>&#39;, <a href="http://dbpedia.org/resource/C%2B%2B" id="link-id10392400">C++</a>, and other developers </ul>
<ul>- More...</ul>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-04-10#1334">
  <rss:title>Linked Data enabling PHP Applications</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2008-04-10T18:09:49Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel lewis has penned a variation of post about Linked Data enabling PHP applications such as: Wordpress, phpBB3, MediaWiki etc. Daniel simplifies my post by using diagrams to depict the different paths for PHP based applications exposing Linked Data - especially those that already provide a significant amount of the content that drives Web 2.0. If all the content in Web 2.0 information resources are distillable into discrete data objects endowed with HTTP based IDs (URIs), with zero &quot;RDF handcrafting Tax&quot;, what do we end up with? A Giant Global Graph of Linked Data; the Web as a Database. So, what used to apply exclusively, within enterprise settings re. Oracle, DB2, Informix, Ingres, Sybase, Microsoft SQL Server, MySQL, PostrgeSQL, Progress Open Edge, Firebird, and others, now applies to the Web. The Web becomes the &quot;Distributed Database Bus&quot; that connects database records across disparate databases (or Data Spaces). These databases manage and expose records that are remotely accessible &quot;by reference&quot; via HTTP. As I&#39;ve stated at every opportunity in the past, Web 2.0 is the greatest thing that every happened to the Semantic Web vision :-) Without the &quot;Web 2.0 Data Silo Conundrum&quot; we wouldn&#39;t have the cry for &quot;Data Portability&quot; that brings a lot of clarity to some fundamental Web 2.0 limitations that end-users ultimately find unacceptable. In the late &#39;80s, the SQL Access Group (now part of X/Open) addressed a similar problem with RDBMS silos within the enterprise that lead to the SAG CLI which is exists today as Open Database Connectivity. In a sense we now have WODBC (Web Open Database Connectivity), comprised of Web Services based CLIs and/or traditional back-end DBMS CLIs (ODBC, JDBC, ADO.NET, OLE-DB, or Native), Query Language (SPARQL Query Language), and a Wire Protocol (HTTP based SPARQL Protocol) delivering Web infrastructure equivalents of SQL and RDA, but much better, and with much broader scope for delivering profound value due to the Web&#39;s inherent openness. Today&#39;s PHP, Python, Ruby, Tcl, Perl, ASP.NET developer is the enterprise 4GL developer of yore, without enterprise confinement. We could even be talking about 5GL development once the Linked Data interaction is meshed with dynamic languages (delivering higher levels of abstraction at the language and data interaction levels). Even the underlying schemas and basic design will evolve from Closed World (solely) to a mesh of Closed &amp; Open World view schemas.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>
<a href="http://myopenlink.net/dataspace/person/danieljohnlewis#this" id="link-id10820610">Daniel lewis</a> has penned a variation of post about <a href="http://vanirsystems.com/danielsblog/2008/04/10/simplified-adding-wordpress-blogs-into-the-linked-data-web-using-virtuoso/" id="link-id10827948">Linked Data enabling PHP applications</a> such as: <a href="http://dbpedia.org/resource/WordPress" id="link-id10426278">Wordpress</a>, <a href="http://dbpedia.org/resource/PhpBB" id="link-id13f431c0">phpBB3</a>, <a href="http://dbpedia.org/resource/MediaWiki" id="link-id10dd8760">MediaWiki</a> etc.</p>

<p>Daniel simplifies my post by using diagrams to depict the different paths for <a href="http://dbpedia.org/resource/PHP" id="link-id10adcc08">PHP</a> based applications exposing <a href="http://dbpedia.org/resource/Linked_Data" id="link-id107b4e60">Linked Data</a> - especially those that already provide a significant amount of the content that drives <a href="http://dbpedia.org/resource/World_Wide_Web" id="link-id13b0ab48">Web</a> 2.0.</p>

<p>If all the content in <a href="http://dbpedia.org/resource/World_Wide_Web" id="link-id0x1d499470">Web</a> 2.0 <a href="http://dbpedia.org/resource/Information" id="link-id12bd3b10">information</a> resources are distillable into discrete <a href="http://dbpedia.org/resource/Data" id="link-id10962060">data</a> objects endowed with <a href="http://dbpedia.org/resource/Hypertext_Transfer_Protocol" id="link-id176a30e8">HTTP</a> based IDs (URIs), with zero &quot;<a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=rdf%20tax&type=text&output=html" id="link-id1098bcd8">RDF handcrafting Tax</a>&quot;, what do we end up with? A <a href="http://dbpedia.org/resource/Giant_Global_Graph" id="link-id1372ce88">Giant Global Graph</a> of <a href="http://dbpedia.org/resource/Linked_Data" id="link-id0xa29f0658">Linked Data</a>; the <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> as a Database.</p> <p>So, what used to apply exclusively, within enterprise settings re. <a href="http://dbpedia.org/resource/Oracle_Database" id="link-id12d91448">Oracle</a>, <a href="http://dbpedia.org/resource/IBM_DB2" id="link-id13dd27d8">DB2</a>, <a href="http://dbpedia.org/resource/IBM_Informix" id="link-id108e6b98">Informix</a>, <a href="http://dbpedia.org/resource/Ingres" id="link-id13383708">Ingres</a>, <a href="http://dbpedia.org/resource/Sybase" id="link-idfed8aa8">Sybase</a>, <a href="http://dbpedia.org/resource/Microsoft_SQL_Server" id="link-id10b8b190">Microsoft SQL Server</a>, <a href="http://dbpedia.org/resource/MySQL" id="link-id13066ea8">MySQL</a>, PostrgeSQL, Progress Open Edge, <a href="http://dbpedia.org/resource/Firebird_database_server" id="link-id104f0a78">Firebird</a>, and others, now applies to the Web. The Web becomes the &quot;<a href="http://dbpedia.org/resource/federated_database_system" id="link-id105a5340">Distributed Database</a> Bus&quot; that connects database records across disparate databases (or <a href="http://dbpedia.org/resource/Data" id="link-id0xc706c68">Data</a> Spaces). These databases manage and expose records that are remotely accessible &quot;by reference&quot; via <a href="http://dbpedia.org/resource/Hypertext_Transfer_Protocol" id="link-id0x1c8f7fe0">HTTP</a>.</p>

<p>As I&#39;ve stated at every opportunity in the past, Web 2.0 is the greatest thing that every happened to the <a href="http://dbpedia.org/resource/Semantic_Web" id="link-id13d65278">Semantic Web</a> vision :-) Without the &quot;<a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=Web%202.0%20%20conundrum&type=text&output=html" id="link-id100d16d0">Web 2.0 Data Silo Conundrum</a>&quot; we wouldn&#39;t have the cry for &quot;<a href="http://dbpedia.org/resource/Data">Data</a> Portability&quot; that brings a lot of clarity to some fundamental Web 2.0 limitations that end-users ultimately find unacceptable.</p> 
<p>
In the late &#39;80s, the <a href="http://dbpedia.org/resource/SQL" id="link-idff4f0d0">SQL</a> <a href="http://dbpedia.org/resource/SQL_Access_Group" id="link-id138fbd40">Access Group</a> (now part of <a href="http://dbpedia.org/resource/X/Open" id="link-id104ee010">X</a>/<a href="http://dbpedia.org/resource/X/Open" id="link-id0xac9eab8">Open</a>) addressed a similar problem with <a href="http://dbpedia.org/resource/Relational_database_management_system" id="link-id106d2008">RDBMS</a> silos within the enterprise that lead to the SAG <a href="http://dbpedia.org/resource/Call_Level_Interface" id="link-id105d45d0">CLI</a> which is exists today as Open Database Connectivity.</p>

<p>In a sense we now have WODBC (Web Open Database Connectivity), comprised of Web Services based CLIs and/or traditional back-end DBMS CLIs (<a href="http://dbpedia.org/resource/Open_Database_Connectivity" id="link-id13f58708">ODBC</a>, <a href="http://dbpedia.org/resource/Java_Database_Connectivity" id="link-id10aa81e0">JDBC</a>, <a href="http://dbpedia.org/resource/ADO.NET" id="link-id5fddb68">ADO</a>.<a href="http://dbpedia.org/resource/ADO.NET" id="link-id0x9f085a10">NET</a>, OLE-DB, or Native),  Query Language (<a href="http://dbpedia.org/resource/SPARQL" id="link-id10adb5c8">SPARQL</a> Query Language), and a Wire Protocol (<a href="http://dbpedia.org/resource/Hypertext_Transfer_Protocol">HTTP</a> based <a href="http://www.w3.org/TR/rdf-sparql-protocol/" id="link-id126fa068">SPARQL Protocol</a>) delivering Web infrastructure equivalents of <a href="http://dbpedia.org/resource/SQL" id="link-id0x1d0a5fc8">SQL</a> and RDA, but much better, and with much broader scope for delivering profound value due to the Web&#39;s inherent openness. Today&#39;s <a href="http://dbpedia.org/resource/PHP" id="link-id0xc88ed68">PHP</a>, <a href="http://dbpedia.org/resource/Python_programming_language" id="link-id10a70530">Python</a>, <a href="http://dbpedia.org/resource/Ruby_programming_language" id="link-id13d9da18">Ruby</a>, <a href="http://dbpedia.org/resource/Tcl" id="link-id10a3c2a8">Tcl</a>, <a href="http://dbpedia.org/resource/Perl" id="link-id13e1b6f0">Perl</a>, <a href="http://dbpedia.org/resource/ASP.NET" id="link-id10810388">ASP</a>.<a href="http://dbpedia.org/resource/ASP.NET" id="link-id0xa22ce378">NET</a>  developer is the enterprise <a href="http://dbpedia.org/resource/4GL" id="link-id1396a500">4GL</a> developer of yore, without enterprise confinement. We could even be talking about <a href="http://dbpedia.org/resource/5GL" id="link-id1077f250">5GL</a> development once the <a href="http://dbpedia.org/resource/Linked_Data">Linked Data</a> interaction is meshed with dynamic languages (delivering higher levels of abstraction at the language and data interaction levels). Even the underlying schemas and  basic design will evolve from <a href="http://dbpedia.org/resource/Closed_world_assumption" id="link-id10b280c8">Closed World</a> (solely) to a mesh of Closed &amp; <a href="http://dbpedia.org/resource/Open_world_assumption" id="link-id104b9978">Open World</a> view schemas.</p>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-11#973">
  <rss:title>SPARQL Parameterized Queries (Virtuoso using SPARQL in SQL)</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2006-05-11T18:54:47Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">SPARQL with SQL (Inline) Virtuoso extends its SQL3 implementation with syntax for integrating SPARQL into queries and subqueries.Thus, as part of a SQL SELECT query or subquery, one can write the SPARQL keyword and a SPARQL query as part of query text processed by Virtuoso&#39;s SQL Query Processor. Example 1 (basic) : Using Virtuoso&#39;s Command line or the Web Based ISQL utility type in the following (note: &quot;SQL&gt;&quot; is the command line prompt for the native ISQL utility): SQL&gt; sparql select distinct ?p where { graph ?g { ?s ?p ?o } }; Which will return the following: p varchar ---------- http://example.org/ns#b http://example.org/ns#d http://xmlns.com/foaf/0.1/name http://xmlns.com/foaf/0.1/mbox ... Example 2 (a subquery variation): SQL&gt; select distinct subseq (p, strchr (p, &#39;#&#39;)) as fragment from (sparql select distinct ?p where { graph ?g { ?s ?p ?o } } ) as all_predicates where p like &#39;%#%&#39; ; fragment varchar ---------- #query #data #name #comment ... Parameterized Queries: You can pass parameters to a SPARQL query using a Virtuoso-specific syntax extension. &#39;??&#39; or &#39;$?&#39; indicates a positional parameter similar to &#39;?&#39; in standard SQL. &#39;??&#39; can be used in graph patterns or anywhere else where a SPARQL variable is accepted. The value of a parameter should be passed in SQL form, i.e. this should be a number or an untyped string. An IRI ID can not be passed, but an absolute IRI can. Using this notation, a dynamic SQL capable client (ODBC, JDBC, ADO.NET, OLEDB, XMLA, or others) can execute parametrized SPARQL queries using parameter binding concepts that are common place in dynamic SQL. Which implies that existing SQL applications and development environments (PHP, Ruby, Python, Perl, VB, C#, Java, etc.) are capable of issuing SPARQL queries via their existing SQL bound data access channels against RDF Data stored in Virtuoso. Note: This is the Virtuoso equivalent of a recently published example using Jena (a Java based RDF Triple Store). Example: Create a Virtuoso Function by execting the following: SQL&gt; create function param_passing_demo (); { declare stat, msg varchar; declare mdata, rset any; exec (&#39;sparql select ?s where { graph ?g { ?s ?? ?? }}&#39;, stat, msg, vector (&#39;http://www.w3.org/2001/sw/DataAccess/tests/data/Sorting/sort-0#int1&#39;, 4 ), -- Vector of two parameters 10, -- Max. result-set rows mdata, -- Variable for handling result-set metadata rset -- Variable for handling query result-set ); return rset[0][0]; } Test new &quot;param_passing_demo&quot; function by executing the following: SQL&gt; select param_passing_demo (); Which returns: callret VARCHAR _______________________________________________________________________________ http://www.w3.org/2001/sw/DataAccess/tests/data/Sorting/sort-0#four 1 Rows. -- 00000 msec. Â  Using SPARQL in SQL Predicates: A SPARQL ASK query can be used as an argument of the SQL EXISTS predicate. create function sparql_ask_demo () returns varchar { if (exists (sparql ask where { graph ?g { ?s ?p 4}})) return &#39;YES&#39;; else return &#39;NO&#39;; }; Test by executing: SQL&gt; select sparql_ask_demo (); Which returns: _________________________ YES</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>SPARQL with SQL (Inline) </h2>

<p>Virtuoso extends its SQL3 implementation with syntax for integrating SPARQL into queries and subqueries.Thus, as part of a SQL SELECT query or subquery, one can write the SPARQL keyword and a SPARQL query as part of query text processed by Virtuoso&#39;s SQL Query Processor.</p>

<h4>Example 1 (basic) : </h4>
<p>Using Virtuoso&#39;s  Command line or the Web Based ISQL utility type in the following (note: &quot;SQL&gt;&quot; is the command line prompt for the native ISQL utility): </p>
<pre>SQL&gt; sparql select distinct ?p where { graph ?g { ?s ?p ?o } };</pre>
<p>Which will return the following: </p>
<blockquote>
  <pre>	  p varchar
     ----------
     http://example.org/ns#b
     http://example.org/ns#d
     http://xmlns.com/foaf/0.1/name
     http://xmlns.com/foaf/0.1/mbox
     ...   </pre>
</blockquote>
<h4>Example 2 (a subquery variation):</h4>

<pre>SQL&gt; select distinct subseq (p, strchr (p, &#39;#&#39;)) as fragment
 from (sparql select distinct ?p where { graph ?g { ?s ?p ?o } } ) as all_predicates
 where p like &#39;%#%&#39; ;</pre>
<blockquote>
  <pre>
     fragment varchar
     ----------
     #query
     #data
     #name
     #comment
     ...</pre>
</blockquote>
<h3>Parameterized Queries:</h3>
 <p>You can pass parameters to a SPARQL query using a Virtuoso-specific syntax extension. &#39;??&#39; or &#39;$?&#39; indicates a positional parameter similar to &#39;?&#39; in standard SQL. &#39;??&#39; can be used in graph patterns or anywhere else where a SPARQL variable is accepted. The value of a parameter should be passed in SQL form, i.e. this should be a number or an untyped string. An IRI ID can not be passed, but an absolute IRI can.
Using this notation, a dynamic SQL capable client (ODBC, JDBC, ADO.NET, OLEDB, XMLA, or others) can execute parametrized SPARQL queries using parameter binding concepts that are common place in dynamic SQL. Which implies that existing SQL applications and development environments (PHP, Ruby, Python, Perl, VB, C#, Java, etc.) are capable of issuing SPARQL queries via their existing SQL bound data access channels against RDF Data stored in Virtuoso. </p>
 <p>Note: This is the Virtuoso equivalent of a <a href="http://seaborne.blogspot.com/2006/05/parameterized-queries_07.html">recently published example using Jena </a>(a Java based RDF Triple Store).</p>
 <h3>Example:</h3>

<p>Create a Virtuoso Function by execting the following: </p>

<pre>SQL&gt; create function param_passing_demo ();
 {
 	declare stat, msg varchar;
 	declare mdata, rset any;
 	exec (&#39;sparql select ?s where { graph ?g { ?s ?? ?? }}&#39;,
 			stat, msg,
 			vector (&#39;http://www.w3.org/2001/sw/DataAccess/tests/data/Sorting/sort-0#int1&#39;,
 		  		   4 ),	-- Vector of two parameters 
			10,			-- Max. result-set rows
			mdata, 		-- Variable for handling result-set metadata
 		 	rset   		-- Variable for handling query result-set
		 ); 
     return rset[0][0];
 }

</pre>
Test new &quot;param_passing_demo&quot; function by executing the following: <br />
<pre>SQL&gt; select param_passing_demo ();
</pre>
<p>Which returns: </p>
<blockquote>
  <pre>
callret VARCHAR
 _______________________________________________________________________________</pre>
  <pre>http://www.w3.org/2001/sw/DataAccess/tests/data/Sorting/sort-0#four</pre>
  <pre>1 Rows. -- 00000 msec.</pre>
</blockquote>
<h3>Â </h3>

<h3>Using SPARQL in SQL Predicates:</h3>

<p>A SPARQL ASK query can be used as an argument of the SQL EXISTS predicate.</p>

<pre>create function sparql_ask_demo () returns varchar
  {
 		if (exists (sparql ask where { graph ?g { ?s ?p 4}})) return &#39;YES&#39;;
 		else return &#39;NO&#39;;
   };
</pre>

<p>
<br />
    Test by executing: </p>
<pre>SQL&gt; select sparql_ask_demo ();
</pre>
<p>Which returns:</p>
<pre>_________________________
YES</pre>
]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-05#968">
  <rss:title>&quot;Free&quot; Databases: Express vs. Open-Source RDBMSs</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2006-05-05T16:02:17Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Very detailed and insightful peek into the state of affairs re. database engines (Open &amp; Closed Source). I added the missing piece regarding the &quot;Virtuoso Conductor&quot; (the Web based Admin UI for Virtuoso) to the original post below. I also added a link to our live SPARQL Demo so that anyone interested can start playing around with SPARQL and SPARQL integrated into SQL right away. Another good thing about this post is the vast amount of valuable links that it contains. To really appreciate this point simply visit my Linkblog (excuse the current layout :-) - a Tab if you come in via the front door of this Data Space (what I used to call My Weblog Home Page). &quot;Free&quot; Databases: Express vs. Open-Source RDBMSs: &quot;Open-source relational database management systems (RDBMSs) are gaining IT mindshare at a rapid pace. As an example, BusinessWeek&#39;s February 6, 2006 &#39; Taking On the Database Giants &#39; article asks &#39;Can open-source upstarts compete with Oracle, IBM, and Microsoft?&#39; and then provides the answer: &#39;It&#39;s an uphill battle, but customers are starting to look at the alternatives.&#39; There&#39;s no shortage of open-source alternatives to look at. The BusinessWeek article concentrates on MySQL, which BW says &#39;is trying to be the Ikea of the database world: cheap, needs some assembly, but has a sleek, modern design and does the job.&#39; The article also discusses Postgre[SQL] and Ingres, as well as EnterpriseDB, an Oracle clone created from PostgreSQL code*. Sun includes PostgreSQL with Solaris 10 and, as of April 6, 2006, with Solaris Express.** *Frank Batten, Jr., the investor who originally funded Red Hat, invested a reported $16 million into Great Bridge with the hope of making a business out of providing paid support to PostgreSQL users. Great Bridge stayed in business only 18 months , having missed an opportunity to sell the business to Red Hat and finding that selling $50,000-per-year support packages for an open-source database wasn&#39;t easy. As Batten concluded, &#39;We could not get customers to pay us big dollars for support contracts.&#39; Perhaps EnterpriseDB will be more successful with a choice of $5,000, $3,000, or $1,000 annual support subscriptions . **Interestingly, Oracle announced in November 2005 that Solaris 10 is &#39;its preferred development and deployment platform for most x64 architectures, including x64 (x86, 64-bit) AMD Opteron and Intel Xeon processor-based systems and Sun&#39;s UltraSPARC(R)-based systems.&#39; There is a surfeit of reviews of current MySQL, PostgreSQL andâto a lesser extentâIngres implementations. These three open-source RDBMSs come with their own or third-party management tools. These systems compete against free versions of commercial (proprietary) databases: SQL Server 2005 Express Edition (and its MSDE 2000 and 1.0 predecessors), Oracle Database 10g Express Edition, IBM DB2 Express-C, and Sybase ASE Express Edition for Linux where database size and processor count limitations aren&#39;t important. Click here for a summary of recent InfoWorld reviews of the full versions of these four databases plus MySQL, which should be valid for Express editions also. The FTPOnline Special Report article, &#39;Microsoft SQL Server Turns 17,&#39; that contains the preceding table is here (requires registration.) SQL Server 2005 Express Edition SP-1 Advanced Features SQL Server 2005 Express Edition with Advanced Features enhances SQL Server 2005 Express Edition (SQL Express or SSX) dramatically, so it deserves special treatment here. SQL Express gains full text indexing and now supports SQL Server Reporting Services (SSRS) on the local SSX instance. The SP-1 with Advanced Features setup package, which Microsoft released on April 18, 2006, installs the release version of SQL Server Management Studio Express (SSMSE) and the full version of Business Intelligence Development Studio (BIDS) for designing and editing SSRS reports. My &#39;Install SP-1 for SQL Server 2005 and Express&#39; article for FTPOnline&#39;s SQL Server Special Report provides detailed, illustrated installation instructions for and related information about the release version of SP-1. SP-1 makes SSX the most capable of all currently available Express editions of commercial RDBMSs for Windows. OpenLink Software&#39;s Virtuoso Open-Source Edition OpenLink Software announced an open-source version of it&#39;s Virtuoso Universal Server commercial DBMS on April 11, 2006. On the initial date of this post, May 2, 2006, Virtuoso Open-Source Edition (VOS) was virtually under the radar as an open-source product. According to this press release, the new edition includes: SPARQL compliant RDF Triple Store SQL-200n Object-Relational Database Engine (SQL, XML, and Free Text) Integrated BPEL Server and Enterprise Service Bus WebDAV and Native File Server Web Application Server that supports PHP, Perl, Python, ASP.NET, JSP, etc. Runtime Hosting for Microsoft .NET, Mono, and Java VOS only lacks the virtual server and replication features that are offered by the commercial edition. VOS includes a Web-based administration tool called the &quot;Virtuoso Conductor&quot; According to Kingsley Idehen&#39;s Weblog, &#39;The Virtuoso build scripts have been successfully tested on Mac OS X (Universal Binary Target), Linux, FreeBSD, and Solaris (AIX, HP-UX, and True64 UNIX will follow soon). A Windows Visual Studio project file is also in the works (ETA some time this week).&#39; InfoWorld&#39;s Jon Udell has tracked Virtuoso&#39;s progress since 2002, with an additional article in 2003 and a one-hour podcast with Kingsley Idehen on April 26, 2006. A major talking point for Virtuoso is its support for Atom 0.3 syndication and publication, Atom 1.0 syndication and (forthcoming) publication, and future support for Google&#39;s GData protocol, as mentioned in this Idehen post. Yahoo!&#39;s Jeremy Zawodny points out that the &#39;fingerprints&#39; of Adam Bosworth, Google&#39;s VP of Engineering and the primary force behind the development of Microsoft Access, &#39;are all over GData.&#39; Click here to display a list of all OakLeaf posts that mention Adam Bosworth. One application for the GData protocol is querying and updating the Google Base database independently of the Google Web client, as mentioned by Jeremy: &#39;It&#39;s not about building an easier onramp to Google Base. ... Well, it is. But, again, that&#39;s the small stuff.&#39; Click here for a list of posts about my experiences with Google Base. Watch for a future OakLeaf post on the subject as the GData APIs gain ground. Open-Source and Free Embedded Database Contenders Open-source and free embedded SQL databases are gaining importance as the number and types of mobile devices and OSs proliferate. Embedded databases usually consist of Java classes or Windows DLLs that are designed to minimize file size and memory consumption. Embedded databases avoid the installation hassles, heavy resource usage and maintenance cost associated with client/server RDBMSs that run as an operating system service. Andrew Hudson&#39;s December 2005 &#39;Open Source databases rounded up and rodeoed&#39; review for The Enquirer provides brief descriptions of one commercial and eight open source database purveyors/products: Sleepycat, MySQL, PostgreSQL, Ingres, InnoBase, Firebird, IBM Cloudscape (a.k.a, Derby), Genezzo, and Oracle. Oracle Sleepycat* isn&#39;t an SQL Database, Oracle InnoDB* is an OEM database engine that&#39;s used by MySQL, and Genezzo is a multi-user, multi-server distributed database engine written in Perl. These special-purpose databases are beyond the scope of this post. * Oracle purchased Sleepycat Software, Inc. in February 2006 and purchased Innobase OY in October 2005 . The press release states: &#39;Oracle intends to continue developing the InnoDB technology and expand our commitment to open source software.&#39; Derby is an open-source release by the Apache Software Foundation of the Cloudscape Java-based database that IBM acquired when it bought Informix in 2001. IBM offers a commercial release of Derby as IBM Cloudscape 10.1. Derby is a Java class library that has a relatively light footprint (2 MB), which make it suitable for client/server synchronization with the IBM DB2 Everyplace Sync Server in mobile applications. The IBM DB2 Everyplace Express Edition isn&#39;t open source or free*, so it doesn&#39;t qualify for this post. The same is true for the corresponding Sybase SQL Anywhere components.** * IBM DB2 Everyplace Express Edition with synchronization costs $379 per server (up to two processors) and $79 per user. DB2 Everyplace Database Edition (without DB2 synchronization) is $49 per user. (Prices are based on those when IBM announced version 8 in November 2003.) ** Sybase&#39;s iAnywhere subsidiary calls SQL Anywhere &#39;the industry&#39;s leading mobile database.&#39; A Sybase SQL Anywhere Personal DB seat license with synchronization to SQL Anywhere Server is $119; the cost without synchronization wasn&#39;t available from the Sybase Web site. Sybase SQL Anywhere and IBM DB2 Everyplace perform similar replication functions. Sun&#39;s Java DB, another commercial version of Derby, comes with the Solaris Enterprise Edition, which bundles Solaris 10, the Java Enterprise System, developer tools, desktop infrastructure and N1 management software. A recent Between the Lines blog entry by ZDNet&#39;s David Berlind waxes enthusiastic over the use of Java DB embedded in a browser to provide offline persistence. RedMonk analyst James Governor and eWeek&#39;s Lisa Vaas wrote about the use of Java DB as a local data store when Tim Bray announced Sun&#39;s Derby derivative and Francois Orsini demonstrated Java DB embedded in the Firefox browser at the ApacheCon 2005 conference. Firebird is derived from Borland&#39;s InterBase 6.0 code, the first commercial relational database management system (RDBMS) to be released as open source. Firebird has excellent support for SQL-92 and comes in three versions: Classic, SuperServer and Embedded for Windows, Linux, Solaris, HP-UX, FreeBSD and MacOS X. The embedded version has a 1.4-MB footprint. Release Candidate 1 for Firebird 2.0 became available on March 30, 2006 and is a major improvement over earlier versions. Borland continues to promote InterBase, now at version 7.5, as a small-footprint, embedded database with commercial Server and Client licenses. SQLite is a featherweight C library for an embedded database that implements most SQL-92 entry- and transitional-level requirements (some through the JDBC driver) and supports transactions within a tiny 250-KB code footprint. Wrappers support a multitude of languages and operating systems, including Windows CE, SmartPhone, Windows Mobile, and Win32. SQLite&#39;s primary SQL-92 limitations are lack of nested transactions, inability to alter a table design once committed (other than with RENAME TABLE and ADD COLUMN operations), and foreign-key constraints. SQLite provides read-only views, triggers, and 256-bit encryption of database files. A downside is the the entire database file is locked when while a transaction is in progress. SQLite uses file access permissions in lieu of GRANT and REVOKE commands. Using SQLite involves no license; its code is entirely in the public domain. The Mozilla Foundation&#39;s Unified Storage wiki says this about SQLite: &#39;SQLite will be the back end for the unified store [for Firefox]. Because it implements a SQL engine, we get querying &#39;for free&#39;, without having to invent our own query language or query execution system. Its code-size footprint is moderate (250k), but it will hopefully simplify much existing code so that the net code-size change should be smaller. It has exceptional performance, and supports concurrent access to the database. Finally, it is released into the public domain, meaning that we will have no licensing issues.&#39; Vieka Technology, Inc.&#39;s eSQL 2.11 is a port of SQLite to Windows Mobile (Pocket PC and Smartphone) and Win32, and includes development tools for Windows devices and PCs, as well as a .NET native data provider. A conventional ODBC driver also is available. eSQL for Windows (Win32) is free for personal and commercial use; eSQL for Windows Mobile requires a license for commercial (for-profit or business) use. HSQLDB isn&#39;t on most reviewers&#39; radar, which is surprising because it&#39;s the default database for OpenOffice.org (OOo) 2.0&#39;s Base suite member. HSQLDB 1.8.0.1 is an open-source (BSD license) Java dembedded database engine based on Thomas Mueller&#39;s original Hypersonic SQL Project. Using OOo&#39;s Base feature requires installing the Java 2.0 Runtime Engine (which is not open-source) or the presence of an alternative open-source engine, such as Kaffe. My prior posts about OOo Base and HSQLDB are here, here and here. The HSQLDB 1.8.0 documentation on SourceForge states the following regarding SQL-92 and later conformance: HSQLDB 1.8.0 supports the dialect of SQL defined by SQL standards 92, 99 and 2003. This means where a feature of the standard is supported, e.g. left outer join, the syntax is that specified by the standard text. Many features of SQL92 and 99 up to Advanced Level are supported and here is support for most of SQL 2003 Foundation and several optional features of this standard. However, certain features of the Standards are not supported so no claim is made for full support of any level of the standards. Other less well-known embedded databases designed for or suited to mobile deployment are Mimer SQL Mobile and VistaDB 2.1 . Neither product is open-source and require paid licensing; VistaDB requires a small up-front payment by developers but offers royalty-free distribution. Java DB, Firebird embedded, SQLite and eSQL 2.11 are contenders for lightweight PC and mobile device database projects that aren&#39;t Windows-only. SQL Server 2005 Everywhere If you&#39;re a Windows developer, SQL Server Mobile is the logical embedded database choice for mobile applications for Pocket PCs and Smartphones. Microsoft&#39;s April 19, 2006 press release delivered the news that SQL Server 2005 Mobile Editon (SQL Mobile or SSM) would gain a big brotherâSQL Server 2005 Everywhere Edition. Currently, the SSM client is licensed (at no charge) to run in production on devices with Windows CE 5.0, Windows Mobile 2003 for Pocket PC or Windows Mobile 5.0, or on PCs with Windows XP Tablet Edition only. SSM also is licensed for development purposes on PCs running Visual Studio 2005. Smart Device replication with SQL Server 2000 SP3 and later databases has been the most common application so far for SSM. By the end of 2006, Microsoft will license SSE for use on all PCs running any Win32 version or the preceding device OSs. A version of SQL Server Management Studio Express (SSMSE)âupdated to support SSEâis expected to release by the end of the year. These features will qualify SSE as the universal embedded database for Windows client and smart-device applications. For more details on SSE, read John Galloway&#39;s April 11, 2006 blog post and my &#39;SQL Server 2005 Mobile Goes Everywhere&#39; article for the FTPOnline Special Report on SQL Server.&quot; (Via OakLeaf Systems.)</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
 <p>Very detailed and insightful peek into the state of affairs re. database engines (Open &amp; Closed Source).</p>   <p>I added the missing piece regarding the &quot;Virtuoso Conductor&quot; (the Web based Admin UI for Virtuoso) to the original post below. I also added a link to our live SPARQL Demo so that anyone interested can start playing around with SPARQL and SPARQL integrated into SQL right away.</p>  <p>Another good thing about this post is the vast amount of valuable links that it contains. To really appreciate this point simply visit my Linkblog (excuse the current layout :-) - a Tab if you come in via the front door of this <a href="http://www.infoworld.com/opinions/index.html">Data Space</a> (what I used to call <a href="http://www.openlinksw.com/blog/%7Ekidehen/">My Weblog Home Page</a>).</p>   <blockquote>  <p>   <a href="http://oakleafblog.blogspot.com/2006/05/free-databases-express-vs-open-source.html">&quot;Free&quot; Databases: Express vs. Open-Source RDBMSs</a>: &quot;<span style="font-family: verdana;">Open-source relational database management systems (RDBMSs) are gaining IT mindshare at a rapid pace. As an example, <em>BusinessWeek</em>&#39;s February 6, 2006 &#39;</span>   <a href="http://www.businessweek.com/technology/content/feb2006/tc20060206_918648.htm"><span style="font-family: verdana;">Taking On the Database Giants</span>   </a><span style="font-family: verdana;">&#39; article asks &#39;Can open-source upstarts compete with Oracle, IBM, and Microsoft?&#39; and then provides the answer: &#39;It&#39;s an uphill battle, but customers are starting to look at the alternatives.&#39;</span>   <br />   <span style="font-family: Verdana;"></span>   <br />   <span style="font-family: Verdana;">There&#39;s no shortage of open-source alternatives to look at. The <em>BusinessWeek</em> article concentrates on <a href="http://www.mysql.com/">MySQL</a>, which <em>BW</em> says &#39;is trying to be the Ikea of the database world: cheap, needs some assembly, but has a sleek, modern design and does the job.&#39; The article also discusses <a href="http://www.postgresql.org/">Postgre[SQL]</a> and <a href="http://www.ingres.com/products/Prod_Ingres_2006.html">Ingres</a>, as well as <a href="http://www.enterprisedb.com/">EnterpriseDB</a>, an Oracle clone created from PostgreSQL code*. Sun includes <a href="http://www.sun.com/software/solaris/postgres.jsp">PostgreSQL with Solaris 10</a> and, as of April 6, 2006, with <a href="http://docs.sun.com/app/docs/doc/819-2183/6n4g726uc?a=view">Solaris Express</a>.**</span>   <br />   <span style="font-family: Verdana;"></span>   <br />   <span style="font-family: Verdana;"><span style="font-size: 85%;">*Frank Batten, Jr., the investor who originally funded Red Hat, invested a reported </span>    <a href="http://www.theinquirer.net/?article=28201"><span style="font-size: 85%;">$16 million into Great Bridge</span>    </a><span style="font-size: 85%;"> with the hope of making a business out of providing paid support to PostgreSQL users. </span>    <a href="http://news.com.com/2100-1001-272715.html"><span style="font-size: 85%;">Great Bridge stayed in business only 18 months</span>    </a><span style="font-size: 85%;">, having </span>    <a href="http://news.com.com/2100-1001-268915.html"><span style="font-size: 85%;">missed an opportunity to sell the business to Red Hat</span>    </a><span style="font-size: 85%;"> and finding that selling </span>    <a href="http://news.com.com/2100-1001-269729.html"><span style="font-size: 85%;">$50,000-per-year support packages</span>    </a><span style="font-size: 85%;"> for an open-source database wasn&#39;t easy. As Batten concluded, &#39;We could not get customers to pay us big dollars for support contracts.&#39; Perhaps EnterpriseDB will be more successful with a choice of </span>    <a href="http://www.enterprisedb.com/shop.do?cID=10000&pID=10001"><span style="font-size: 85%;">$5,000, $3,000, or $1,000 annual support subscriptions</span>    </a><span style="font-size: 85%;">.</span>   </span>   <br />   <span style="font-family: Verdana;"></span><span style="font-family: Verdana;"></span><span style="font-family: Verdana;"></span>   <br />   <span style="font-family: Verdana; font-size: 85%;">**Interestingly, <a href="http://www.sun.com/smi/Press/sunflash/2005-11/sunflash.20051115.4.xml">Oracle announced in November 2005</a> that Solaris 10 is &#39;its preferred development and deployment platform for most x64 architectures, including x64 (x86, 64-bit) AMD Opteron and Intel Xeon processor-based systems and Sun&#39;s UltraSPARC(R)-based systems.&#39;</span>   <br />   <br />   <span style="font-family: Verdana;">There is a surfeit of reviews of current MySQL, PostgreSQL andâto a lesser extentâIngres implementations. These three open-source RDBMSs come with their own or third-party management tools. These systems compete against free versions of commercial (proprietary) databases: <a href="http://msdn.microsoft.com/vstudio/express/sql/">SQL Server 2005 Express Edition</a> (and its MSDE 2000 and 1.0 predecessors), <a href="http://www.oracle.com/technology/products/database/xe/index.html" target="_blank">Oracle Database 10g Express Edition</a>, <a href="http://www-306.ibm.com/software/data/db2/udb/db2express/download.html" target="_blank">IBM DB2 Express-C</a>, and <a href="http://www.sybase.com/linux_promo" target="_blank">Sybase ASE Express Edition for Linux</a> where database size and processor count limitations aren&#39;t important. Click <a href="http://www.ftponline.com/special/sqlserver/rjennings-overview/table4.aspx">here</a> for a summary of recent <em>InfoWorld</em> reviews of the full versions of these four databases plus MySQL, which should be valid for Express editions also. The <a href="http://www.ftponline.com/special/sqlserver/">FTPOnline Special Report</a> article, &#39;Microsoft SQL Server Turns 17,&#39; that contains the preceding table is <a href="http://www.ftponline.com/special/sqlserver/rjennings-overview/">here</a> (requires registration.)</span>   <br />   <br />  </p>  <p>   <strong><span style="font-family: verdana;">SQL Server 2005 Express Edition SP-1 Advanced Features</span>   </strong>  </p>  <p>   <span style="font-family: Verdana;"><a href="http://www.microsoft.com/downloads/details.aspx?familyid=4C6BA9FD-319A-4887-BC75-3B02B5E48A40&displaylang=en">SQL Server 2005 Express Edition with Advanced Features</a> enhances SQL Server 2005 Express Edition (SQL Express or SSX) dramatically, so it deserves special treatment here. SQL Express gains full text indexing and now supports SQL Server Reporting Services (SSRS) on the local SSX instance. The SP-1 with Advanced Features setup package, which Microsoft released on April 18, 2006, installs the release version of SQL Server Management Studio Express (SSMSE) and the full version of Business Intelligence Development Studio (BIDS) for designing and editing SSRS reports. My &#39;<a href="http://www.ftponline.com/special/sqlserver/rjennings-sp1/">Install SP-1 for SQL Server 2005 and Express</a>&#39; article for FTPOnline&#39;s <a href="http://www.ftponline.com/special/sqlserver/">SQL Server Special Report</a> provides detailed, illustrated installation instructions for and related information about the release version of SP-1. SP-1 makes SSX the most capable of all currently available Express editions of commercial RDBMSs for Windows.</span>  </p>  <p>   <strong><span style="font-family: verdana;">OpenLink Software&#39;s Virtuoso Open-Source Edition</span>   </strong>   <br />   <span style="font-family: verdana;"></span>   <br />   <span style="font-family: verdana;"><a href="http://openlinksw.com/">OpenLink Software</a> announced an <a href="http://virtuoso.openlinksw.com/wiki/main/Main/">open-source version</a> of it&#39;s <a href="http://virtuoso.openlinksw.com/">Virtuoso Universal Server</a> commercial DBMS on April 11, 2006. On the initial date of this post, May 2, 2006, Virtuoso Open-Source Edition (VOS) was virtually under the radar as an open-source product. According to <a href="http://www.openlinksw.com/press/VOSPressRelease.htm">this press release</a>, the new edition includes:</span> <span style="font-family: Verdana;"></span>  </p>  <blockquote>   <span style="font-family: Verdana;"></span>  </blockquote> <blockquote></blockquote> <blockquote></blockquote>  <ul>   <li>     <a href="http://demo.openlinksw.com/sparql_demo/">SPARQL compliant RDF Triple Store</a> </li>   <li>SQL-200n Object-Relational Database Engine (SQL, XML, and Free Text) </li>   <li>Integrated BPEL Server and Enterprise Service Bus</li>   <li>WebDAV and Native File Server </li>   <li>Web Application Server that supports PHP, Perl, Python, ASP.NET, JSP, etc. </li>   <li>Runtime Hosting for Microsoft .NET, Mono, and Java </li>  </ul>VOS only lacks the virtual server and replication features that are offered by the commercial edition. VOS includes a Web-based administration tool called the &quot;Virtuoso Conductor&quot; According to <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=951&sid=&realm=">Kingsley Idehen&#39;s Weblog</a>, &#39;The Virtuoso build scripts have been successfully tested on Mac OS X (Universal Binary Target), Linux, FreeBSD, and Solaris (AIX, HP-UX, and True64 UNIX will follow soon). A Windows Visual Studio project file is also in the works (ETA some time this week).&#39;<br /> <br /> <em>InfoWorld</em>&#39;s Jon Udell has tracked Virtuoso&#39;s progress since <a href="http://www.infoworld.com/article/02/04/12/020415plvirtuoso_1.html">2002</a>, with an <a href="http://www.infoworld.com/article/03/03/21/12virtuoso_1.html">additional article in 2003</a> and a <a href="http://weblog.infoworld.com/udell/2006/04/28.html#a1437">one-hour podcast with Kingsley Idehen</a> on April 26, 2006. A major talking point for Virtuoso is its support for Atom 0.3 syndication and publication, Atom 1.0 syndication and (forthcoming) publication, and future support for Google&#39;s <a href="http://code.google.com/apis/gdata/overview.html">GData protocol</a>, as mentioned in <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=965">this Idehen post</a>. Yahoo!&#39;s <a href="http://jeremy.zawodny.com/blog/archives/006687.html">Jeremy Zawodny</a> points out that the &#39;fingerprints&#39; of <a href="http://oakleafblog.blogspot.com/2005/11/adam-bosworth-learning-from-web-and.html">Adam Bosworth</a>, Google&#39;s VP of Engineering and the primary force behind the development of Microsoft Access, &#39;are all over GData.&#39; Click <a href="http://search.blogger.com/?as_q=bosworth&ie=UTF-8&ui=blg&amp;bl_url=oakleafblog.blogspot.com&x=50&y=10">here</a> to display a list of all OakLeaf posts that mention Adam Bosworth.<br /> <br />One application for the GData protocol is querying and updating the Google Base database independently of the Google Web client, as mentioned by Jeremy: &#39;It&#39;s not about building an easier onramp to Google Base. ... Well, it is. But, again, that&#39;s the small stuff.&#39; Click <a href="http://search.blogger.com/?as_q=%22google+base%22&ie=UTF-8&x=50&y=9&q=%22google+base%22+blogurl:oakleafblog.blogspot.com&filter=0&ui=blg&sa=N&start=0">here</a> for a list of posts about my experiences with Google Base. Watch for a future OakLeaf post on the subject as the GData APIs gain ground.<br /> <span style="font-family: Verdana;"></span> <br />  <span style="font-family: Verdana;"><strong>Open-Source and Free Embedded Database Contenders</strong>  </span> <br /> <span style="font-family: Verdana;"></span> <br /> <span style="font-family: Verdana;">Open-source and free embedded SQL databases are gaining importance as the number and types of mobile devices and OSs proliferate. Embedded databases usually consist of Java classes or Windows DLLs that are designed to minimize file size and memory consumption. Embedded databases avoid the installation hassles, heavy resource usage and maintenance cost associated with client/server RDBMSs that run as an operating system service.</span> <br /> <br /> <span style="font-family: Verdana;">Andrew Hudson&#39;s December 2005 &#39;<a href="http://www.theinquirer.net/?article=28201">Open Source databases rounded up and rodeoed</a>&#39; review for The Enquirer provides brief descriptions of one commercial and eight open source database purveyors/products: Sleepycat, MySQL, PostgreSQL, Ingres, InnoBase, Firebird, IBM Cloudscape (a.k.a, Derby), Genezzo, and Oracle. Oracle <a href="http://www.sleepycat.com/">Sleepycat</a>* isn&#39;t an SQL Database, Oracle <a href="http://www.innodb.com/index.php">InnoDB</a>* is an OEM database engine that&#39;s used by MySQL, and <a href="http://www.genezzo.com/">Genezzo</a> is a multi-user, multi-server distributed database engine written in Perl. These special-purpose databases are beyond the scope of this post.</span> <br /> <br />  <span style="font-family: Verdana;"><span style="font-size: 85%;">* Oracle <a href="http://www.oracle.com/sleepycat/index.html">purchased Sleepycat Software, Inc. in February 2006</a> and </span>   <a href="http://www.oracle.com/innodb/index.html"><span style="font-size: 85%;">purchased Innobase OY in October 2005</span>   </a><span style="font-size: 85%;">. The press release states: &#39;Oracle intends to continue developing the InnoDB technology and expand our commitment to open source software.&#39; </span>  </span> <br /> <span style="font-family: Verdana; font-size: 85%;"></span> <br /> <span style="font-family: Verdana;">   <a href="http://db.apache.org/derby/"><strong>Derby</strong>   </a> is an open-source release by the <a href="http://www.apache.org/">Apache Software Foundation</a> of the <a href="http://www.infoworld.com/article/04/08/03/HNcloudscape_1.html">Cloudscape Java-based database that IBM acquired</a> when it bought Informix in 2001. IBM offers a commercial release of Derby as <a href="http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0408cline/">IBM Cloudscape 10.1</a>. Derby is a Java class library that has a relatively light footprint (2 MB), which make it suitable for <a href="http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0503stumpf/">client/server synchronization</a> with the IBM DB2 Everyplace Sync Server in <a href="http://www-128.ibm.com/developerworks/library/wi-cloud/">mobile applications</a>. The IBM DB2 Everyplace Express Edition isn&#39;t open source or free*, so it doesn&#39;t qualify for this post. The same is true for the corresponding Sybase SQL Anywhere components.**</span> <br /> <br /> <br />  <p>   <span style="font-family: verdana; font-size: 85%;">* IBM DB2 Everyplace Express Edition with synchronization costs $379 per server (up to two processors) and $79 per user. DB2 Everyplace Database Edition (without DB2 synchronization) is $49 per user. (Prices are based on those when </span>   <a href="http://news.earthweb.com/wireless/article.php/3107101"><span style="font-family: verdana; font-size: 85%;">IBM announced version 8</span>   </a><span style="font-family: verdana; font-size: 85%;"> in November 2003.)</span>  </p>  <p>   <span style="font-family: verdana; font-size: 85%;">** Sybase&#39;s iAnywhere subsidiary calls SQL Anywhere &#39;the industry&#39;s leading mobile database.&#39; A Sybase SQL Anywhere Personal DB seat license with synchronization to SQL Anywhere Server is $119; the cost without synchronization wasn&#39;t available from the Sybase Web site. Sybase SQL Anywhere and IBM DB2 Everyplace perform similar replication functions.</span>  </p>  <p>   <span style="font-family: Verdana;">Sun&#39;s <a href="http://developers.sun.com/prodtech/javadb/"><strong>Java DB</strong></a>, another commercial version of Derby, comes with the <a href="http://www.sun.com/software/solaris/">Solaris Enterprise Edition</a>, which bundles Solaris 10, the Java Enterprise System, developer tools, desktop infrastructure and N1 management software. A recent Between the Lines blog entry by ZDNet&#39;s David Berlind waxes enthusiastic over the use of <a href="http://blogs.zdnet.com/BTL/?p=2298">Java DB embedded in a browser</a> to provide offline persistence. RedMonk analyst <a href="http://www.redmonk.com/jgovernor/archives/001151.html">James Governor</a> and <em>eWeek</em>&#39;s <a href="http://www.eweek.com/article2/0,1895,1902407,00.asp">Lisa Vaas</a> wrote about the use of Java DB as a local data store when <a href="http://www.sauria.com/blog/2005/12/13#1440">Tim Bray announced Sun&#39;s Derby derivative</a> and <a href="http://blogs.sun.com/roller/page/FrancoisOrsini?entry=derby_apachecon_demo">Francois Orsini</a> demonstrated Java DB embedded in the Firefox browser at the ApacheCon 2005 conference.</span>   <br />   <span style="font-family: Verdana;"></span>   <br />   <span style="font-family: Verdana;">    <a href="http://www.firebirdsql.org/"><strong>Firebird</strong>    </a> is derived from Borland&#39;s InterBase 6.0 code, the first commercial relational database management system (RDBMS) to be released as open source. Firebird has excellent support for SQL-92 and comes in three versions: Classic, SuperServer and Embedded for Windows, Linux, Solaris, HP-UX, FreeBSD and MacOS X. The embedded version has a 1.4-MB footprint. Release Candidate 1 for Firebird 2.0 became available on March 30, 2006 and is a major improvement over earlier versions. <a href="http://www.borland.com/us/products/interbase/index.html">Borland continues to promote InterBase</a>, now at version 7.5, as a small-footprint, embedded database with commercial Server and Client licenses.</span>   <br />   <span style="font-family: Verdana;"></span>   <br />   <span style="font-family: Verdana;">    <a href="http://www.sqlite.org/index.html"><strong>SQLite</strong>    </a> is a featherweight C library for an embedded database that implements most SQL-92 entry- and transitional-level requirements (some through the JDBC driver) and supports transactions within a tiny 250-KB code footprint. <a href="http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers">Wrappers</a> support a multitude of languages and operating systems, including Windows CE, SmartPhone, Windows Mobile, and Win32. SQLite&#39;s primary <a href="http://www.sqlite.org/omitted.html">SQL-92 limitations</a> are lack of nested transactions, inability to alter a table design once committed (other than with RENAME TABLE and ADD COLUMN operations), and foreign-key constraints. SQLite provides read-only views, triggers, and 256-bit encryption of database files. A downside is the the entire database file is <a href="http://weblogs.asp.net/jgalloway/archive/2006/04/12/442615.aspx">locked when while a transaction is in progress</a>. SQLite uses file access permissions in lieu of GRANT and REVOKE commands. Using SQLite involves no license; its code is entirely in the public domain.</span>  </p>  <p>   <span style="font-family: Verdana; font-size: 85%;">The Mozilla Foundation&#39;s <a href="http://wiki.mozilla.org/Mozilla2:Unified_Storage">Unified Storage wiki</a> says this about SQLite: &#39;SQLite will be the back end for the unified store [for Firefox]. Because it implements a SQL engine, we get querying &#39;for free&#39;, without having to invent our own query language or query execution system. Its code-size footprint is moderate (250k), but it will hopefully simplify much existing code so that the net code-size change should be smaller. It has exceptional performance, and supports concurrent access to the database. Finally, it is released into the public domain, meaning that we will have no licensing issues.&#39;</span>  </p>  <p>   <span style="font-family: verdana;">Vieka Technology, Inc.&#39;s <a href="http://vieka.com/esql.htm"><strong>eSQL 2.11</strong></a> is a port of SQLite to Windows Mobile (Pocket PC and Smartphone) and Win32, and includes development tools for Windows devices and PCs, as well as a .NET native data provider. A conventional ODBC driver also is available. eSQL for Windows (Win32) is free for personal and commercial use; eSQL for Windows Mobile requires a license for commercial (for-profit or business) use.</span>  </p>  <p>   <span style="font-family: verdana;">    <a href="http://hsqldb.org/"><strong>HSQLDB</strong>    </a> isn&#39;t on most reviewers&#39; radar, which is surprising because it&#39;s the default database for <a href="http://www.openoffice.org/">OpenOffice.org</a> (OOo) 2.0&#39;s <a href="http://www.openoffice.org/product/base.html">Base</a> suite member. HSQLDB 1.8.0.1 is an open-source (BSD license) Java dembedded database engine based on Thomas Mueller&#39;s original Hypersonic SQL Project. Using OOo&#39;s Base feature requires installing the Java 2.0 Runtime Engine (which is not open-source) or the presence of an alternative open-source engine, such as Kaffe. My prior posts about OOo Base and HSQLDB are <a href="http://oakleafblog.blogspot.com/2005/10/openoffice-base-20-vs-microsoft-access.html">here</a>, <a href="http://oakleafblog.blogspot.com/2005/10/openoffice-base-20-vs-microsoft-access_22.html">here</a> and <a href="http://oakleafblog.blogspot.com/2005/10/openoffice-20-base-matches-microsoft.html">here</a>.</span>  </p>  <p>   <span style="font-family: verdana;">The <a href="http://hsqldb.sourceforge.net/web/hsqlDocsFrame.html">HSQLDB 1.8.0 documentation</a> on SourceForge states the following regarding SQL-92 and later conformance:</span>  </p>  <span style="font-family: verdana;">   <blockquote>    <p>     <span style="font-family: verdana;">HSQLDB 1.8.0 supports the dialect of SQL defined by SQL standards 92, 99 and 2003. This means where a feature of the standard is supported, e.g. left outer join, the syntax is that specified by the standard text. Many features of SQL92 and 99 up to Advanced Level are supported and here is support for most of SQL 2003 Foundation and several optional features of this standard. However, certain features of the Standards are not supported so no claim is made for full support of any level of the standards. </span>    </p>   </blockquote>   <span style="font-family: verdana;"><span style="font-size: 85%;">Other less well-known embedded databases designed for or suited to mobile deployment are </span>    <a href="http://www.mimer.com/leftright.asp?secId=172"><span style="font-size: 85%;">Mimer SQL Mobile</span>    </a><span style="font-size: 85%;"> and </span>    <a href="http://www.vistadb.net/"><span style="font-size: 85%;">VistaDB 2.1</span>    </a><span style="font-size: 85%;">. Neither product is open-source and require paid licensing; VistaDB requires a small up-front payment by developers but offers royalty-free distribution.</span>   </span> <br /> <br /> <span style="font-family: Verdana;">Java DB, Firebird embedded, SQLite and eSQL 2.11 are contenders for lightweight PC and mobile device database projects that aren&#39;t Windows-only.</span> <br /> <br />   <strong>    <span style="font-family: verdana;">SQL Server 2005 Everywhere<br />    </span><span style="font-family: Verdana;"></span>   </strong> <br /> <span style="font-family: verdana;">If you&#39;re a Windows developer, SQL Server Mobile is the logical embedded database choice for mobile applications for Pocket PCs and Smartphones. Microsoft&#39;s April 19, 2006 press release delivered the news that SQL Server 2005 Mobile Editon (SQL Mobile or SSM) would gain a big brotherâSQL Server 2005 Everywhere Edition. </span> <br /> <span style="font-family: verdana;"></span> <br /> <span style="font-family: verdana;">Currently, the SSM client is licensed (at no charge) to run in production on devices with Windows CE 5.0, Windows Mobile 2003 for Pocket PC or Windows Mobile 5.0, or on PCs with Windows XP Tablet Edition only. SSM also is licensed for development purposes on PCs running Visual Studio 2005.</span>   <span style="font-family: verdana;"> Smart Device replication with SQL Server 2000 SP3 and later databases has been the most common application so far for SSM.<br /> <br />   </span><span style="font-family: verdana;">By the end of 2006, Microsoft will license SSE for use on <em>all</em> PCs running any Win32 version or the preceding device OSs. A version of SQL Server Management Studio Express (SSMSE)âupdated to support SSEâis expected to release by the end of the year. These features will qualify SSE as <em>the universal embedded database</em> for Windows client and smart-device applications. </span> <br /> <br /> <span style="font-family: verdana;">For more details on SSE, read <a href="http://weblogs.asp.net/jgalloway/archive/2006/04/11/442451.aspx">John Galloway&#39;s April 11, 2006 blog post</a> and my &#39;<a href="http://www.ftponline.com/special/sqlserver/rjennings-mobile/">SQL Server 2005 Mobile Goes Everywhere</a>&#39; article for the <a href="http://www.ftponline.com/special/sqlserver/">FTPOnline Special Report on SQL Server</a>.</span><span style="font-family: verdana;"></span>&quot;  <p>(Via <a href="http://oakleafblog.blogspot.com">OakLeaf Systems</a>.)</p>  </span> </blockquote> 
]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-10-26#882">
  <rss:title>Breaking the Web Wide Open! </rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-10-26T19:28:47Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Marc Canter&#39;s Breaking the Web Wide Open! article is something I found pretty late (by my normal discovery standards). This was partly due to the pre- and post- Web 2.0 event noise levels that have dumped the description of an important industry inflection into the &quot;Bozo Bin&quot; of many. Personally, I think we shouldn&#39;t confuse the Web 2.0 traditional-pitch-fest conference with an attempt to identify an important industry inflection). Anyway, Marc&#39;s article is a very refreshing read because it provides a really good insight into the general landscape of a rapidly evolving Web alongside genuine appreciation of our broader timeless pursuit of &quot;Openness&quot;. To really help this document provide additional value have scrapped the content of the original post and dumped it below so that we can appreciate the value of the links embedded within the article (note: thanks to Virtuoso I only had to paste the content into my blog, the extraction to my Linkblog and Blog Summary Pages are simply features of my Virtuoso based Blog Engine):Breaking the Web Wide Open! (complete story)Even the web giants like AOL, Google, MSN, and Yahoo need to observe these open standards, or they&#39;ll risk becoming the &quot;walled gardens&quot; of the new web and be coolio no more.Marc Canter [Broadband Mechanics, Inc.] | POSTED: 09.26.05 @12:00Editorial Note: Several months ago, AlwaysOn got a personal invitation from Yahoo founder Jerry Yang &quot;to see and give us feedback on our new social media product, y!360.&quot; We were happy to oblige and dutifully showed up, joining a conference room full of hard-core bloggers and new, new media types. The geeks gave Yahoo 360 an overwhelming thumbs down, with comments like, &quot;So the only services I can use within this new network are Yahoo services? What if I don&#39;t use Yahoo IM?&quot; In essence, the Yahoo team was booed for being &quot;closed web,&quot; and we heartily agreed. With Yahoo 360, Yahoo continues building its own &quot;walled garden&quot; to control its 135 million customersÂan accusation also hurled at AOL in the early 1990s, before AOL migrated its private network service onto the web. As theÂ  Economist recently noted, &quot;Yahoo, in short, has old media plans for the new-media era.&quot;The irony to our view here is, of course, that today&#39;s AO Network is also a &quot;closed web.&quot; In the end, Mr. Yang&#39;s thoughtful invitation and our ensuing disappointment in his new service led to the assignment of this article. It also confirmed our existing plan to completely revamp the AO Network around open standards. To tie it all together, we recruited the chief architect of our new site, the notorious Marc Canter, to pen this piece. We look forward to our reader feedback.Breaking the Web Wide Open!By Marc CanterFor decades, &quot;walled gardens&quot; of proprietary standards and content have been the strategy of dominant players in mainframe computer software, wireless telecommunications services, and the World Wide WebÂit was their successful lock-in strategy of keeping their customers theirs. But like it or not, those walls are tumbling down. Open web standards are being adopted so widely, with such value and impact, that the web giantsÂAmazon, AOL, eBay, Google, Microsoft, and YahooÂare facing the difficult decision of opening up to what they don&#39;t control.The online world is evolving into a new open web (sometimes called the Web 2.0), which is all about being personalized and customized for each user. Not only open source software, but open standardsÂ are becoming an essential component. Many of the web giants have been using open source software for years. Most of them use at least parts of the LAMP (Linux, Apache, MySQL, Perl/Python/PHP) stack, even if they aren&#39;t well-known for giving back to the open source community. For these incumbents that grew big on proprietary web services, the methods, practices, and applications of open source software development are difficult to fully adopt. And the next open source movementsÂwhich will be as much about open standards as about codeÂwill be a lot harder for the incumbents to exploit.While the incumbents use cheap open source software to run their back-ends systems, their business models largely depend on proprietary software and algorithms. But our view a new slew of open software, open protocols, and open standards will confront the incumbents with the classic Innovator&#39;s Dilemma.Â  Should they adopt these tools and standards, painfully cannibalizing their existing revenue for a new unproven concept, or should they stick with their currently lucrative model with the risk that eventually a bunch of upstarts eat their lunch? Credit should go to several of the web giants who have been making efforts to &quot;open up.&quot; Google, Yahoo, eBay, and Amazon all have Open APIs (Application Programming Interfaces) built into their data and systems. Any software developer can access and use them for whatever creative purposes they wish. This means that the API provider becomes an open platform for everyone to use and build on top of. This notion has expanded like wildfire throughout the blogosphere, so nowadays, Open APIs are pretty much required.Other incumbents also have open strategies. AOL has got the RSS religion, providing a feedreader and RSS search in order to escape the &quot;walled garden of content&quot; stigma. Apple now incorporates podcasts, the &quot;personal radio shows&quot; that are latest rage in audio narrowcasting, into iTunes. Even Microsoft is supporting open standards, for example by endorsing SIP (Session Initiation Protocol) for internet telephony and conferencing over Skype&#39;s proprietary format or one of its own devising.But new open standards and protocols are in use, under construction, or being proposed every day, pushing the envelope of where we are right now. Many of these standards are coming from startup companies and small groups of developers, not from the giants. Together with the Open APIs, those new standards will contribute to a new, open infrastructure. Tens of thousands of developers will use and improve this open infrastructure to create new kinds of web-based applications and services, to offer web users a highly personalized online experience.A Brief History of OpennessAt this point, I have to admit that I am not just a passive observer, full-time journalist or &quot;just some blogger&quot;Âbut an active evangelist and developer of these standards. It&#39;s the vision of &quot;open infrastructure&quot; that&#39;s driving my company and the reason why I&#39;m writing this article. This article will give you some of the background behind on these standards, and what the evolution of the next generation of open standards will look like.Starting back in the 1980s, establishing a software standard was a key strategy for any software company. My former company, MacroMind (which became Macromedia), achieved this goal early on with Director. As Director evolved into Flash, the world saw that other companies besides Microsoft, Adobe, and Apple could establish true cross-platform, independent media standards.Then Tim Berners-Lee and Marc Andreessen came along, and changed the rules of the software business and of entrepreneurialism. No matter how entrenched and &quot;standardized&quot; software was, the rug could still get pulled out from under it. Netscape did it to Microsoft, and then Microsoft did it backÂ  to Netscape. The web evolved, and lots of standards evolved with it. The leading open source standards (such as the LAMP stack) became widely used alternatives to proprietary closed-source offerings. Open standards are more than just technology. Open standards mean sharing, empowering, and community support. Someone floats a new idea (or meme) and the community runs with it â with each person making their own contributions to the standard â evolving it without a moment&#39;s hesitation about &quot;giving away their intellectual property.&quot;One good example of this was Dave Sifry, who built the Technorati blog-tracking technology inspired by the Blogging Ecosystem, a weekend project by young hacker Phil Pearson. Dave liked what he saw and he ran with itÂturning Technorati into what it is today.Dave Winer has contributed enormously to this area of open standards. He defined and personally created several open standards and protocolsÂsuch as RSS, OPML, and XML-RPC. Dave has also helped build the blogosphere through his enthusiasm and passion.By 2003, hundreds of programmers were working on creating and establishing new standards for almost everything. The best of these new standards have evolved into compelling web services platforms â such as del.icio.us, Webjay, or Flickr. Some have even spun off formal standards â like XSPF (a standard for playlists) or instant messaging standard XMPP (also known as Jabber).Today&#39;s Open APIs are complemented by standardized SchemasÂthe structure of the data itself and its associated meta-data. Take for example a podcasting feed. It consists of: a) the radio show itself, b) information on who is on the show, what the show is about and how long the show is (the meta-data) and also c) API calls to retrieve a show (a single feed item) and play it from a specified server. The combination of Open APIs, standardized schemas for handling meta-data, and an industry which agrees on these standards are breaking the web wide open right now. So what new open standards should the web incumbentsÂand youÂbe watching? Keep an eye on the following developments:IdentityAttentionOpen MediaMicrocontent PublishingOpen Social NetworksTagsPinging RoutingOpen CommunicationsDevice Management and Control1. IdentityRight now, you don&#39;t really control your own online identity. At the core of just about every online piece of software is a membership system. Some systems allow you to browse a site anonymouslyÂbut unless you register with the site you can&#39;t do things like search for an article, post a comment, buy something, or review it. The problem is that each and every site has its own membership system. So you constantly have to register with new systems, which cannot share dataÂeven you&#39;d want them to. By establishing a &quot;single sign-on&quot; standard, disparate sites can allow users to freely move from site to site, and let them control the movement of their personal profile data, as well as any other data they&#39;ve created. With Passport, Microsoft unsuccessfully attempted to force its proprietary standard on the industry. Instead, a world is evolving where most people assume that users want to control their own data, whether that data is their profile, their blog posts and photos, or some collection of their past interactions, purchases, and recommendations. As long as users can control their digital identity, any kind of service or interaction can be layered on top of it.Identity 2.0 is all about users controlling their own profile data and becoming their own agents. This way the users themselves, rather than other intermediaries, will profit from their ID info. Once developers start offering single sign-on to their users, and users have trusted places to store their dataÂwhich respect the limits and provide access controls over that data, users will be able to access personalized services which will understand and use their personal data.Identity 2.0 may seem like some geeky, visionary future standard that isn&#39;t defined yet, but by putting each user&#39;s digital identity at the core of all their online experiences, Identity 2.0 is becoming the cornerstone of the new open web. The Initiatives:Right now, Identity 2.0 is under construction through various efforts from Microsoft (the &quot;InfoCard&quot; component built into the Vista operating system and its &quot;Identity Metasystem&quot;), Sxip Identity, Identity Commons, Liberty Alliance, LID (NetMesh&#39;s Lightweight ID), and SixApart&#39;s OpenID.More Movers and Shakers:Identity Commons and Kaliya Hamlin, Sxip Identity and Dick Hardt, the Identity Gang and Doc Searls, Microsoft&#39;s Kim Cameron, Craig Burton, Phil Windley, and Brad Fitzpatrick, to name a few.2. AttentionHow many readers know what their online attention is worth? If you don&#39;t, Google and Yahoo doÂthey make their living off our attention. They know what we&#39;re searching for, happily turn it into a keyword, and sell that keyword to advertisers. They make money off our attention. We don&#39;t. Technorati and friends proposed an attention standard, Attention.xml, designed to &quot;help you keep track of what you&#39;ve read, what you&#39;re spending time on, and what you should be paying attention to.&quot; AttentionTrust is an effort by Steve Gillmor and Seth Goldstein to standardize on how captured end-user performance, browsing, and interest data are used. Blogger Peter Caputa gives a good summary of AttentionTrust: &quot;As we use the web, we reveal lots of information about ourselves by what we pay attention to. Imagine if all of that information could be stored in a nice neat little xml file. And when we travel around the web, we can optionally share it with websites or other people. We can make them pay for it, lease it ... we get to decide who has access to it, how long they have access to it, and what we want in return. And they have to tell us what they are going to do with our Attention data.&quot;So when you give your attention to sites that adhere to the AttentionTrust, your attention rights (you own your attention, you can move your attention, you can pay attention and be paid for it,Â  and you can see how your attention is used) are guaranteed. Attention data is crucial to the future of the open web, and Steve and Seth are making sure that no one entity or oligopoly controls it. Movers and Shakers:Steve Gillmor, Seth Goldstein, Dave Sifry and the other Attention.xml folks. 3. Open MediaProprietary media standardsÂFlash, Windows Media, and QuickTime, to name a few Âhelped liven up the web. But they are proprietary standards that try to keep us locked in, and they weren&#39;t created from scratch to handle today&#39;s online content. That&#39;s why, for many of us, an Open Media standard has been a holy grail. Yahoo&#39;s new Media RSS standard brings us one step closer to achieving open media, as do Ogg Vorbis audio codecs, XSPF playlists, or MusicBrainz. And several sites offer digital creators not only a place to store their content, but also to sell it. Media RSS (being developed by Yahoo with help from the community) extends RSS and combines it with &quot;RSS enclosures&quot; Âadds metadata to any media itemÂto create a comprehensive solution for media &quot;narrowcasters.&quot; To gain acceptance for Media RSS, Yahoo knows it has to work with the community. As an active member of this community, I can tell you that we&#39;ll create Media RSS equivalents for rdf (an alternative subscription format) and Atom (yet anotherÂ  subscription format), so no one will be able to complain that Yahoo is picking sides in format wars.When Yahoo announced the purchase of Flickr, Yahoo founder Jerry Yang insinuated that Yahoo is acquiring &quot;open DNA&quot; to turn Yahoo into an open standards player. Yahoo is showing what happens when you take a multi-billion dollar company and make openness one of its core valuesÂso Google, beware, even if Google does have more research fellows and Ph.D.s. The open media landscape is far and wide, reaching from game machine hacks and mobile phone downloads to PC-driven bookmarklets, players, and editors, and it includes many other standardization efforts. XSPF is an open standard for playlists, and MusicBrainz is an alternative to the proprietary (and originally effectively stolen) database that Gracenote licenses. Ourmedia.org is a community front-end to Brewster Kahle&#39;s Internet Archive. Brewster has promised free bandwidth and free storage forever to any content creators who choose to share their content via the Internet Archive. Ourmedia.org is providing an easy-to-use interface and community to get content in and out of the Internet Archive, giving ourmedia.org users the ability to share their media anywhere they wish, without being locked into a particular service or tool. Ourmedia plans to offer open APIs and an open media registry that interconnects other open media repositories into a DNS-like registry (just like the www domain system), so folks can browse and discover open content across many open media services. Systems like Brightcove and Odeo support the concept of an open registry, and hope to work with digital creators to sell their work to fulfill the financial aspect of the &quot;Long Tail.&quot;More Movers and Shakers:Creative Commons, the Open Media Network, Jay Dedman, Ryanne Hodson, Michael Verdi, Eli Chapman, Kenyatta Cheese, Doug Kaye, Brad Horowitz, Lucas Gonze, Robert Kaye, Christopher Allen, Brewster Kahle, JD Lasica, and indeed, Marc Canter, among others.4. Microcontent PublishingUnstructured content is cheap to create, but hard to search through. Structured content is expensive to create, but easy to search. Microformats resolve the dilemma with simple structures that are cheap to use and easy to search.The first kind of widely adopted microcontent is blogging. Every post is an encapsulated idea, addressable via a URL called a permalink. You can syndicate or subscribe to this microcontent using RSS or an RSS equivalent, and news or blog aggregators can then display these feeds in a convenient readable fashion. But a blog post is just a block of unstructured textânot a bad thing, but just a first step for microcontent. When it comes tostructuredÂ data, such as personal identity profiles, product reviews, or calendar-type event data, RSS was not designed to maintain the integrity of the structures. Right now, blogging doesn&#39;t have the underlying structure necessary for full-fledged microcontent publishing. But that will change. Think of local information services (such as movie listings, event guides, or restaurant reviews) that any college kid can access and use in her weekend programming project to create new services and tools.Today&#39;s blogging tools will evolve into microcontent publishing systems, and will help spread the notion of structured data across the blogosphere. New ways to store, represent and produce microcontent will create new standards, such as Structured Blogging and Microformats. Microformats differ from RSS feeds in that you can&#39;t subscribe to them. Instead, Microformats are embedded into webpages and discovered by search engines like Google or Technorati. Microformats are creating common definitions for &quot;What is a review or event? What are the specific fields in the data structure?&quot; They can also specify what we can do with all this information.OPML (Outline Processor Markup Language) is a hierarchical file format for storing microcontent and structured data. It was developed by Dave Winer of RSS and podcast fame.Events are one popular type of microcontent. OpenEvents is already working to create shared databases of standardized events, which would get used by a new generation of event portalsâsuch as Eventful/EVDB, Upcoming.org, and WhizSpark. The idea of OpenEvents is that event-oriented systems and services can work together to establish shared events databases (and associated APIs) that any developer could then use to create and offer their own new service or application. OpenReviews is still in the conceptual stage, but it would make it possible to provide open alternatives to closed systems like Epinions, and establish a shared database of local and global reviews. Its shared open servers would be filled with all sorts of reviews for anyone to access. Why is this important? Because I predict that in the future, 10 times more people will be writing reviews than maintaining their own blog. The list of possible microcontent standards goes on: OpenJobpostings, OpenRecipes, and even OpenLists. Microsoft recently revealed that it has been working on an important new kind of microcontent: Listsâso OpenLists will attempt to establish standards for the kindÂ of lists we all use, such as lists of Links, lists of To Do Items, lists of People, Wish Lists, etc.Movers and Shakers:Tantek Ãelik and Kevin Marks of Technorati, Danny Ayers, Eric Meyer, Matt Mullenweg, Rohit Khare, Adam Rifkin, Arnaud Leene, Seb Paquet, Alf Eaton, Phil Pearson, Joe Reger, Bob Wyman among others.5. Open Social NetworksI&#39;ll never forget the first time I met Jonathan Abrams, the founder of Friendster. He was arrogant and brash and he claimed he &quot;owned&quot;Â  all his users, and that he was going to monetize them and make a fortune off them. This attitude robbed Friendster of its momentum, letting MySpace, Facebook, and other social networks take Friendster&#39;s place.Jonathan&#39;s notion of social networks as a way to control users is typical of the Web 1.0 business model and its attitude towards users in general. Social networks have become one of the battlegrounds between old and new ways of thinking. Open standards for Social Networking will define those sides very clearly. Since meeting Jonathan, I have been working towards finding and establishing open standards for social networks. Instead of closed, centralized social networks with 10 million people in them, the goal is making it possible to have 10 million social networks that each have 10 people in them.FOAF (which stands for Friend Of A Friend, and describes people and relationships in a way that computers can parse) is a schema to represent not only your personal profile&#39;s meta-data, but your social network as well. Thousands of researchers use the FOAF schema in their &quot;Semantic Web&quot; projects to connect people in all sorts of new ways. XFN is a microformat standard for representing your social network, while vCard (long familiar to users of contact manager programs like Outlook) is a microformat that contains your profile information. Microformats are baked into any xHTML webpage, which means thatanyÂ blog, social network page, or any webpage in general can &quot;contain&quot; your social network in itÂand be used byanyÂ compatible tool, service or application. PeopleAggregator is an earlier project now being integrated into open content management framework Drupal. The PeopleAggregator APIs will make it possible to establish relationships, send messages, create or join groups, and post between different social networks. (Sneak preview: this technology will be available in the upcoming GoingOn Network.) All of these open social networking standards mean that inter-connected social networks will form a mesh that will parallel the blogosphere. This vibrant, distributed, decentralized world will be driven by open standards: personalized online experiences are what the new open web will be all aboutÂand what could be more personalized than people&#39;s networks?Movers and Shakers:Eric Sigler, Joel De Gan, Chris Schmidt, Julian Bond, Paul Martino, Mary Hodder, Drummond Reed, Dan Brickley, Randy Farmer, and Kaliya Hamlin, to name a few.6. TagsNowadays, no self-respecting tool or service can ship without tags. Tags are keywords or phrases attached to photos, blog posts, URLs, or even video clips. These user- and creator-generated tags are an open alternative to what used to be the domain of librarians and information scientists: categorizing information and content using taxonomies. Tags are instead creating &quot;folksonomies.&quot;The recently proposed OpenTags concept would be an open, community-owned version of the popular Technorati Tags service. It would aggregate the usage of tags across a wide range of services, sites, and content tools. In addition to Technorati&#39;s current tag features, OpenTags would let groups of people share their tags in &quot;TagClouds.&quot; Open tagging is likely to include some of the open identity features discussed above, to create a tag system that is resilient to spam, and yet trustable across sites all over the web.OpenTags owes a debt to earlier versions of shared tagging systems, which include Topic Exchange and something called the k-collectorÂa knowledge management tag aggregatorÂfrom Italian company eVectors. Movers &amp; Shakers:Phil Pearson, Matt Mower , Paolo Valdemarin, and Mary Hodder and Drummond Reed again, among others.7. PingingWebsites used to be mostly static. Search engines that crawled (or &quot;spidered&quot;) them every so often did a good enough job to show reasonably current versions of your cousin&#39;s homepage or even TimeÂ magazine&#39;s weekly headlines. But when blogging took off, it became hard for search engines to keep up. (Google has only just managed to offer blog-search functionality, despite buying Blogger back in early 2003.)To know what was new in the blogosphere, users couldn&#39;t depend on services that spidered webpages once in a while. The solution: a way for blogs themselves to automatically notify blog-tracking sites that they&#39;d been updated. Weblogs.com was the first blog &quot;ping service&quot;: it displayed the name of a blog whenever that blog was updated. Pinging sites helped the blogosphere grow, and more tools, services, and portals started using pinging in new and different ways. Dozens of pinging services and sitesÂmost of which can&#39;t talk to each otherÂsprang up. Matt Mullenweg (the creator of open source blogging software WordPress) decided that a one-stop service for pinging was needed. He created Ping-o-MaticÂwhich aggregates ping services and simplifies the pinging process for bloggers and tool developers. With Ping-o-Matic, any developer can alert all of the industry&#39;s blogging tools and tracking sites at once. This new kind of open standard, with shared infrastructure, is a critical to the scalability of Web 2.0 services.As Matt said:There are a number of services designed specifically for tracking and connecting blogs. However it would be expensive for all the services to crawl all the blogs in the world all the time. By sending a small ping to each service you let them know you&#39;ve updated so they can come check you out. They get the freshest data possible, you don&#39;t get a thousand robots spidering your site all the time. Everybody wins.Movers and Shakers:Matt Mullenweg, Jim Winstead, Dave Winer8. RoutingBloggers used to have to manually enter the links and content snippets of blog posts or news items they wanted to blog. Today, some RSS aggregators can send a specified post directly into an associated blogging tool: as bloggers browse through the feeds they subscribe to, they can easily specify and send any post they wish to &quot;reblog&quot; from their news aggregator or feed reader into their blogging tool. (This is usually referred to as &quot;BlogThis.&quot;) As structured blogging comes into its own (see the section on Microcontent Publishing), it will be increasingly important to maintain the structural integrity of these pieces of microcontent when reblogging them. Promising standard RedirectThis will combine a &quot;BlogThis&quot;-like capability while maintaining the integrity of the microcontent. RedirectThis will let bloggers and content developers attach a simple &quot;PostThis&quot; button to their posts. Clicking on that button will send that post to the reader/blogger&#39;s favorite blogging tool. This favorite tool is specified at the RedirectThis web service, where users register their blogging tool of choice. RedirectThis also helps maintain the integrity and structure of microcontentÂthen it&#39;s just up to the user to prefer a blogging tool that also attains that lofty goal of microcontent integrity. OutputThis is another nascent web services standard, to let bloggers specify what &quot;destinations&quot; they&#39;d like to have as options in their blogging tool. As new destinations are added to the service, more checkboxes would get added to their blogging toolÂallowing them to route their published microcontent to additional destinations.Movers and Shakers:Michael Migurski, Lucas Gonze9. Open CommunicationsLikely, you&#39;ve experienced the joys of finding friends on AIM or Yahoo Messenger, or the convenience of Skyping with someone overseas. Not that you&#39;re about to throw away your mobile phone or BlackBerry, but for many, also having access to Instant Messaging (IM) and Voice over IP (VoIP) is crucial. IM and VoIP are mainstream technologies that already enjoy the benefits of open standards. Entire industries are bornÂright this secondÂbased around these open standards. Jabber has been an open IM technology for yearsÂin fact, as XMPP, it was officially dubbed a standard by the IETF. Although becoming an official IETF standard is usually the kiss of death, Jabber looks like it&#39;ll be around for a while, as entire generations of collaborative, work-group applications and services have been built on top of its messaging protocol. For VoIP, Skype is clearly the leading standard todayÂthough one could argue just how &quot;open&quot; it is (and defenders of the IETF&#39;s SIP standard often do). But it is free and user-friendly, so there won&#39;t be much argument from usersÂ  about it being insufficiently open. Yet there may be a cloud on Skype&#39;s horizon: web behemoth Google recently released a beta of Google Talk, an IM client committed to open standards. It currently supports XMPP, and will support SIP for VoIP calls.Movers and Shakers:Jeremie Miller, Henning Schulzrinne, Jon Peterson, Jeff Pulver10. Device Management and ControlTo access online content, we&#39;re using more and more devices. BlackBerrys, iPods, Treos, you name it. As the web evolves, more and more different devices will have to communicate with each other to give us the content we want when and where we want it. No-one wants to be dependent on one vendor anymoreÂlike, say, SonyÂfor their laptop, phone, MP3 player, PDA, and digital camera, so that it all works together. We need fully interoperable devices, and the standards to make that work. And to fully make use of how content is moving online content and innovative web services, those standards need to be open.MIDI (musical instrument digital interface), one of the very first open standards in music, connected disparate vendors&#39; instruments, post-production equipment, and recording devices. But MIDI is limited, and MIDI II has been very slow to arrive. Now a new standard for controlling musical devices has emerged: OSC (Open SoundControl). This protocol is optimized for modern networking technology and inter-connects music, video and controller devices with &quot;other multimedia devices.&quot; OSC is used by a wide range of developers, and is being taken up in the mainstream MIDI marketplace.Another open-standards-based device management technology is ZigBee, for building wireless intelligence and network monitoring into all kinds of devices. ZigBee is supported by many networking, consumer electronics, and mobile device companies.Â  Â  Â  Â· Â· Â· Â· Â· Â· Â  Â  The Change to OpennessThe rise of open source software and its &quot;architecture of participation&quot; are completely shaking up the old proprietary-web-services-and-standards approach. Sun MicrosystemsÂwhose proprietary Java standard helped define the Web 1.0Âis opening its Solaris OS and has even announced the apparent paradox of an open-source Digital Rights Management system.Today&#39;s incumbents will have to adapt to the new openness of the Web 2.0. If they stick to their proprietary standards, code, and content, they&#39;ll become the new walled gardensÂplaces users visit briefly to retrieve data and content from enclosed data silos, but not where users &quot;live.&quot; The incumbents&#39; revenue models will have to change. Instead of &quot;owning&quot; their users, users will know they own themselves, and will expect a return on their valuable identity and attention. Instead of being locked into incompatible media formats, users will expect easy access to digital content across many platforms. Yesterday&#39;s web giants and tomorrow&#39;s users will need to find a mutually beneficial new balanceÂbetween open and proprietary, developer and user, hierarchical and horizontal, owned and shared, and compatible and closed. Marc Canter is an active evangelist and developer of open standards. Early in his career, Marc founded MacroMind, which became Macromedia. These days, he is CEO of Broadband Mechanics, a founding member of the Identity Gang and of ourmedia.org. Broadband Mechanics is currently developing the GoingOn Network (with the AlwaysOn Network), as well as an open platform for social networking called the PeopleAggregator.A version of the above post appears in the Fall 2005 issue of AlwaysOn&#39;s quarterly print blogozine, and ran as a four-part series on the AlwaysOn Network website.(Via Marc&#39;s Voice.)</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://marc.blogs.it/">Marc Canter</a>&#39;s <a href="http://marc.blogs.it/archives/2005/10/breaking_the_we.html">Breaking the Web Wide Open! </a> article is something I found pretty late (by my normal discovery standards). This was partly due to the pre- and post- Web 2.0 event noise levels that have dumped the description of an important industry inflection into the &quot;Bozo Bin&quot; of many. Personally, I think we shouldn&#39;t confuse the Web 2.0 traditional-pitch-fest conference with an attempt to identify an important industry inflection).</p><p> Anyway, Marc&#39;s article is a very refreshing read because it provides a really good insight into the general landscape of a rapidly evolving Web alongside genuine appreciation of our broader timeless pursuit of &quot;Openness&quot;. </p><p>To really help this document provide additional value have scrapped the content of the original post and dumped it below so that we can appreciate the value of the links embedded within the article (note: thanks to Virtuoso I only had to paste the content into my blog, the extraction to my <a href="http://www.openlinksw.com/blog/~kidehen/index.vspx?page=linkblog">Linkblog</a> and <a href="http://www.openlinksw.com/blog/~kidehen/index.vspx?page=summary">Blog Summary</a> Pages are simply features of my <a href="http://www.openlinksw.com/virtuos">Virtuoso </a>based Blog Engine):</p><blockquote><h3 class="hed2" style="padding-bottom: 10px">Breaking the Web Wide Open! (complete story)</h3><p>Even the web giants like AOL, Google, MSN, and Yahoo need to observe these open standards, or they&#39;ll risk becoming the &quot;walled gardens&quot; of the new web and be coolio no more.</p><p class="byline"><b><a href="http://community.alwayson-network.com/cgi-bin/WebObjects/AlwaysOn.woa/wa/display?id=9254:Person">Marc Canter</a></b> [<a href="http://community.alwayson-network.com/cgi-bin/WebObjects/AlwaysOn.woa/wa/display?id=9254:Person"><b>Broadband Mechanics, Inc.</b></a>] | POSTED: 09.26.05 @12:00</p><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="TOP" class="copy1"><img src="http://community.alwayson-network.com/ao/images/thumb/19433429363e7cd6b1ecfb7.jpg" align="LEFT" border="0" width="80" style="margin: 0px 10px 5px 0px" alt="" /><i><b>Editorial Note:</b> Several months ago, AlwaysOn got a personal invitation from Yahoo founder Jerry Yang &quot;to see and give us feedback on our new social media product, y!360.&quot; We were happy to oblige and dutifully showed up, joining a conference room full of hard-core bloggers and new, new media types. The geeks gave Yahoo 360 an overwhelming thumbs down, with comments like, &quot;So the only services I can use within this new network are Yahoo services? What if I don&#39;t use Yahoo IM?&quot; In essence, the Yahoo team was booed for being &quot;closed web,&quot; and we heartily agreed. With Yahoo 360, Yahoo continues building its own &quot;walled garden&quot; to control its 135 million customersÂan accusation also hurled at AOL in the early 1990s, before AOL migrated its private network service onto the web. As the</i>Â  <a href="http://bernardmoon.blogspot.com/2005/08/yahoos-personality-crisis.html" target="_blank">Economist<i> recently noted</i></a>, &quot;Yahoo, in short, has old media plans for the new-media era.&quot;<br /><br />The irony to our view here is, of course, that today&#39;s AO Network is also a &quot;closed web.&quot; In the end, Mr. Yang&#39;s thoughtful invitation and our ensuing disappointment in his new service led to the assignment of this article. It also confirmed our existing plan to completely revamp the AO Network around open standards. To tie it all together, we recruited the chief architect of our new site, <a href="http://www.corante.com/amateur/articles/20030211-3564.html" target="_blank">the notorious Marc Canter</a>, to pen this piece. We look forward to our reader feedback.<br /><br /><b>Breaking the Web Wide Open!</b><br />By Marc Canter<br /><br />For decades, &quot;walled gardens&quot; of proprietary standards and content have been the strategy of dominant players in mainframe computer software, wireless telecommunications services, and the World Wide WebÂit was their successful lock-in strategy of keeping their customers theirs. But like it or not, those walls are tumbling down. Open web standards are being adopted so widely, with such value and impact, that the web giantsÂAmazon, AOL, eBay, Google, Microsoft, and YahooÂare facing the difficult decision of opening up to what they don&#39;t control.<br /><br />The online world is evolving into a new open web (sometimes called the Web 2.0), which is all about being personalized and customized for each user. Not only open source software, but <i>open standards</i>Â are becoming an essential component. <br /><br />Many of the web giants have been using open source software for years. Most of them use at least parts of the <a href="http://www.onlamp.com/pub/a/onlamp/2001/01/25/lamp.html" target="_blank">LAMP</a> (Linux, Apache, MySQL, Perl/Python/PHP) stack, even if they aren&#39;t well-known for giving back to the open source community. For these incumbents that grew big on proprietary web services, the methods, practices, and applications of open source software development are difficult to fully adopt. And the next open source movementsÂwhich will be as much about open standards as about codeÂwill be a lot harder for the incumbents to exploit.<br /><br />While the incumbents use cheap open source software to run their back-ends systems, their business models largely depend on proprietary software and algorithms. But our view a new slew of open software, open protocols, and open standards will confront the incumbents with the classic <i><a href="http://www.businessweek.com/chapter/christensen.htm" target="_blank">Innovator&#39;s Dilemma</a></i>.Â  Should they adopt these tools and standards, painfully cannibalizing their existing revenue for a new unproven concept, or should they stick with their currently lucrative model with the risk that eventually a bunch of upstarts eat their lunch? <br /><br />Credit should go to several of the web giants who have been making efforts to &quot;open up.&quot; Google, Yahoo, eBay, and Amazon all have Open APIs (Application Programming Interfaces) built into their data and systems. Any software developer can access and use them for whatever creative purposes they wish. This means that the API provider becomes an open platform for everyone to use and build on top of. This notion has expanded like wildfire throughout the blogosphere, so nowadays, Open APIs are pretty much required.<br /><br />Other incumbents also have open strategies. AOL has got the RSS religion, <a href="http://www.siliconbeat.com/entries/2005/07/27/aol_gets_rss_religion_with_my_aoland_feedsters_help.html" target="_blank">providing a feedreader and RSS search</a> in order to escape the &quot;walled garden of content&quot; stigma. <a href="http://www.apple.com/podcasting/" target="_blank">Apple now incorporates podcasts</a>, the &quot;personal radio shows&quot; that are latest rage in audio narrowcasting, into iTunes. Even Microsoft is supporting open standards, for example <a href="http://www.microsoft.com/technet/prodtechnol/winxppro/plan/rtcprot.mspx#EKAA" target="_blank">by endorsing SIP (Session Initiation Protocol) for internet telephony and conferencing</a> over Skype&#39;s proprietary format or one of its own devising.<br /><br />But new open standards and protocols are in use, under construction, or being proposed every day, pushing the envelope of where we are right now. Many of these standards are coming from startup companies and small groups of developers, not from the giants. Together with the Open APIs, those new standards will contribute to a new, open infrastructure. Tens of thousands of developers will use and improve this open infrastructure to create new kinds of web-based applications and services, to offer web users a highly personalized online experience.<br /><br /><b>A Brief History of Openness</b><br /><br />At this point, I have to admit that I am not just a passive observer, full-time journalist or &quot;just some blogger&quot;Âbut an active evangelist and developer of these standards. It&#39;s the vision of &quot;open infrastructure&quot; that&#39;s driving <a href="http://www.broadbandmechanics.com/bbm2005.htm" target="_blank">my company </a> and the reason why I&#39;m writing this article. This article will give you some of the background behind on these standards, and what the evolution of the next generation of open standards will look like.<br /><br />Starting back in the 1980s, establishing a software standard was a key strategy for any software company. My former company, MacroMind (which became Macromedia), achieved this goal early on with Director. As <a href="http://webmonkey.wired.com/webmonkey/99/27/index3a_page6.html?tw=multimedia" target="_blank">Director evolved into Flash</a>, the world saw that other companies besides Microsoft, Adobe, and Apple could establish true cross-platform, independent media standards.<br /><br />Then <a href="http://www.w3.org/People/Berners-Lee/" target="_blank">Tim Berners-Lee</a> and <a href="http://www.ibiblio.org/pioneers/andreesen.html" target="_blank">Marc Andreessen</a> came along, and changed the rules of the software business and of entrepreneurialism. No matter how entrenched and &quot;standardized&quot; software was, the rug could still get pulled out from under it. <a href="http://geekphilosopher.com/MainPage/WebBrowserWars.htm?q=Stocks" target="_blank">Netscape did it to Microsoft, and then Microsoft did it <i>back</i>Â  to Netscape</a>. The web evolved, and lots of standards evolved with it. The leading open source standards (such as the LAMP stack) became widely used alternatives to proprietary closed-source offerings. <br /><br />Open standards are more than just technology. Open standards mean sharing, empowering, and community support. Someone floats a new idea (or <a href="http://en.wikipedia.org/wiki/Meme" target="_blank">meme</a>) and the community runs with it â with each person making their own contributions to the standard â evolving it without a moment&#39;s hesitation about &quot;giving away their intellectual property.&quot;<br /><br />One good example of this was <a href="http://www.sifry.com/alerts/" target="_blank">Dave Sifry</a>, who built the Technorati blog-tracking technology inspired by the <a href="http://www.myelin.co.nz/ecosystem/" target="_blank">Blogging Ecosystem</a>, a weekend project by young hacker <a href="http://marc.blogs.it/archives/2005/07/phil_pearson_jo.html" target="_blank">Phil Pearson</a>. Dave liked what he saw and he ran with itÂturning Technorati into what it is today.<br /><br /><a href="http://en.wikipedia.org/wiki/Dave_Winer" target="_blank">Dave Winer</a> has contributed enormously to this area of open standards. He defined and personally created several open standards and protocolsÂsuch as RSS, OPML, and XML-RPC. Dave has also <a href="http://newhome.weblogs.com/historyOfWeblogs" target="_blank">helped build</a> the blogosphere through his enthusiasm and passion.<br /><br />By 2003, hundreds of programmers were working on creating and establishing new standards for almost everything. The best of these new standards have evolved into compelling web services platforms â such as <a href="http://del.icio.us/" target="_blank">del.icio.us</a>, <a href="http://webjay.org/about" target="_blank">Webjay</a>, or <a href="http://www.flickr.com/photos/tags/ao2005/" target="_blank">Flickr</a>. Some have even spun off formal standards â like XSPF (a standard for playlists) or instant messaging standard XMPP (also known as Jabber).<br /><br />Today&#39;s Open APIs are complemented by standardized SchemasÂthe structure of the data itself and its associated meta-data. Take for example a <a href="http://www.ipodder.org/whatIsPodcasting" target="_blank">podcasting feed</a>. It consists of: a) the radio show itself, b) information on who is on the show, what the show is about and how long the show is (the meta-data) and also c) API calls to retrieve a show (a single feed item) and play it from a specified server. <br /><br />The combination of Open APIs, standardized schemas for handling meta-data, and an industry which agrees on these standards are breaking the web wide open right now. So what new open standards should the web incumbentsÂand youÂbe watching? Keep an eye on the following developments:<br /><br /><b>Identity<br />Attention<br />Open Media<br />Microcontent Publishing<br />Open Social Networks<br />Tags<br />Pinging <br />Routing<br />Open Communications<br />Device Management and Control</b><br /><br /><br /><b>1.	Identity</b><br /><br />Right now, you don&#39;t really control your own online identity. At the core of just about every online piece of software is a membership system. Some systems allow you to browse a site anonymouslyÂbut unless you register with the site you can&#39;t do things like search for an article, post a comment, buy something, or review it. The problem is that each and every site has its own membership system. So you constantly have to register with new systems, which cannot share dataÂeven you&#39;d want them to. By establishing a <a href="http://www.wired.com/news/privacy/0,1848,68329-2,00.html?tw=wn_story_page_next1" target="_blank">&quot;single sign-on&quot; standard</a>, disparate sites can allow users to freely move from site to site, and let them control the movement of their personal profile data, as well as any other data they&#39;ve created. <br /><br />With <a href="http://www.thehindubusinessline.com/2005/01/03/stories/2005010301440200.htm" target="_blank">Passport, Microsoft unsuccessfully attempted</a> to force its proprietary standard on the industry. Instead, a world is evolving where most people assume that users want to control their own data, whether that data is their profile, their blog posts and photos, or some collection of their past interactions, purchases, and recommendations. As long as users can control their digital identity, any kind of service or interaction can be layered on top of it.<br /><br /><a href="http://www.identity20.com/media/OSCON2005/" target="_blank">Identity 2.0</a> is all about users controlling their own profile data and becoming their own agents. This way the users themselves, rather than other intermediaries, will profit from their ID info. Once developers start offering single sign-on to their users, and users have trusted places to store their dataÂwhich respect the limits and provide access controls over that data, users will be able to access personalized services which will understand and use their personal data.<br /><br />Identity 2.0 may seem like some geeky, visionary future standard that isn&#39;t defined yet, but by putting each user&#39;s digital identity at the core of all their online experiences, Identity 2.0 is becoming the cornerstone of the new open web. <br /><br /><b>The Initiatives:</b><br />Right now, Identity 2.0 is under construction through various efforts from Microsoft (the <a href="http://msdn.microsoft.com/webservices/webservices/understanding/advancedwebservices/default.aspx?pull=/library/en-us/dnwebsrv/html/identitymetasystem.asp" target="_blank">&quot;InfoCard&quot; component built into the Vista operating system</a> and its &quot;<a href="http://garage.docsearls.com/node/605" target="_blank">Identity Metasystem</a>&quot;), <a href="http://sxip.com" target="_blank">Sxip Identity</a>, <a href="http://www.identtycommons.net" target="_blank">Identity Commons</a>, <a href="http://www.projectliberty.org/" target="_blank">Liberty Alliance</a>, <a href="http://lid.netmesh.org/" target="_blank">LID</a> (NetMesh&#39;s Lightweight ID), and SixApart&#39;s <a href="http://openid.net/" target="_blank">OpenID</a>.<br /><br /><b>More Movers and Shakers:</b><br />Identity Commons and <a href="http://www.identitywoman.net" target="_blank">Kaliya Hamlin</a>, Sxip Identity and <a href="http://blame.ca/dick/" target="_blank">Dick Hardt</a>, the <a href="http://www.identitygang.org/" target="_blank"> Identity Gang</a> and <a href="http://www.searls.com/dochome.html#Bio" target="_blank">Doc Searls</a>, Microsoft&#39;s <a href="http://www.identityblog.com/" target="_blank">Kim Cameron</a>, <a href="http://www.craigburton.com/" target="_blank">Craig Burton</a>, <a href="http://phil.windley.org/" target="_blank">Phil Windley</a>, and <a href="http://slashdot.org/article.pl?sid=05/07/05/2020221&from=rss" target="_blank">Brad Fitzpatrick</a>, to name a few.<br /><br /><br /><b>2.	Attention</b><br /><br />How many readers know what their online attention is worth? If you don&#39;t, Google and Yahoo doÂthey make their living off our attention. They know what we&#39;re searching for, happily turn it into a keyword, and sell that keyword to advertisers. They make money off our attention. We don&#39;t. <br /><br />Technorati and friends proposed <a href="http://blogs.zdnet.com/Gillmor/index.php?p=74" target="_blank">an attention standard, Attention.xml</a>, designed to &quot;help you keep track of what you&#39;ve read, what you&#39;re spending time on, and what you should be paying attention to.&quot; <a href="http://attentiontrust.org/" target="_blank">AttentionTrust</a> is an effort by <a href="http://blogs.zdnet.com/Gillmor/?p=132" target="_blank">Steve Gillmor</a> and <a href="http://majestic.typepad.com/seth/2005/07/attentiontrusto.html" target="_blank">Seth Goldstein </a>to standardize on how captured end-user performance, browsing, and interest data are used. <br /><br />Blogger <a href="http://worcester.typepad.com/pc4media/2005/07/attentiontrusto_1.html" target="_blank">Peter Caputa gives a good summary</a> of AttentionTrust: <blockquote>&quot;As we use the web, we reveal lots of information about ourselves by what we pay attention to. Imagine if all of that information could be stored in a nice neat little xml file. And when we travel around the web, we can optionally share it with websites or other people. We can make them pay for it, lease it ... we get to decide who has access to it, how long they have access to it, and what we want in return. And they have to tell us what they are going to do with our Attention data.&quot;</blockquote><br />So when you give your attention to sites that adhere to the AttentionTrust, your attention rights (<i>you own your attention, you can move your attention, you can pay attention and be paid for it</i>,Â  and <i>you can see how your attention is used</i>) are guaranteed. Attention data is crucial to the future of the open web, and Steve and Seth are making sure that no one entity or oligopoly controls it. <br /><br /><b>Movers and Shakers:</b><br /><a href="http://blogs.zdnet.com/Gillmor/" target="_blank">Steve Gillmor</a>, <a href="http://majestic.typepad.com/about.html" target="_blank">Seth Goldstein</a>, <a href="http://www.sifry.com/alerts/" target="_blank">Dave Sifry</a> and the <a href="http://developers.technorati.com/wiki/attentionxml" target="_blank">other Attention.xml folks</a>. <br /><br /><br /><b>3.	Open Media</b><br /><br />Proprietary media standardsÂFlash, Windows Media, and QuickTime, to name a few Âhelped liven up the web. But they are proprietary standards that try to keep us locked in, and they weren&#39;t created from scratch to handle today&#39;s online content. That&#39;s why, for many of us, an Open Media standard has been a holy grail. Yahoo&#39;s new Media RSS standard brings us one step closer to achieving open media, as do <a href="http://www.vorbis.com/faq/#what" target="_blank">Ogg Vorbis</a> audio codecs, <a href="http://webjay.org/" target="_blank">XSPF playlists</a>, or <a href="http://musicbrainz.org/" target="_blank">MusicBrainz</a>. And several sites offer digital creators not only a place to store their content, but also to sell it. <br /><br /><a href="http://search.yahoo.com/mrss" target="_blank">Media RSS </a>(being developed by Yahoo with help from the community) extends RSS and combines it with &quot;RSS enclosures&quot; Âadds metadata to any media itemÂto create a comprehensive solution for media &quot;narrowcasters.&quot; To gain acceptance for Media RSS, Yahoo knows it has to work with the community. As an active member of this community, I can tell you that we&#39;ll create Media RSS equivalents for <a href="http://www.xml.com/pub/a/2001/01/24/rdf.html" target="_blank">rdf</a> (an alternative subscription format) and <a href="http://www.atomenabled.org/" target="_blank">Atom</a> (yet <i>another</i>Â  subscription format), so no one will be able to complain that Yahoo is picking sides in format wars.<br /><br />When Yahoo announced the purchase of Flickr, Yahoo founder Jerry Yang insinuated that Yahoo is acquiring &quot;open DNA&quot; to turn Yahoo into <a href="http://www.flickr.com/services/api/" target="_blank">an open standards player</a>. Yahoo is showing what happens when you take a multi-billion dollar company and make openness one of its core valuesÂso Google, beware, even if Google does have more research fellows and Ph.D.s. <br /><br />The open media landscape is far and wide, reaching from game machine hacks and mobile phone downloads to PC-driven bookmarklets, players, and editors, and it includes many other standardization efforts. <a href="http://www.xspf.org/" target="_blank">XSPF</a> is an open standard for playlists, and MusicBrainz is an alternative to the proprietary (and originally effectively stolen) database that <a href="http://en.wikipedia.org/wiki/Gracenote" target="_blank">Gracenote</a> licenses. <br /><br /><a href="http://www.ourmedia.org/" target="_blank">Ourmedia.org</a> is a community front-end to Brewster Kahle&#39;s <a href="http://www.archive.org" target="_blank">Internet Archive</a>. Brewster has promised free bandwidth and free storage forever to any content creators who choose to share their content via the Internet Archive. Ourmedia.org is providing an easy-to-use interface and community to get content in and out of the Internet Archive, giving ourmedia.org users the ability to share their media anywhere they wish, without being locked into a particular service or tool. Ourmedia plans to offer open APIs and an open media registry that interconnects other open media repositories into a DNS-like registry (just like the www domain system), so folks can browse and discover open content across many open media services. Systems like <a href="http://www.brightcove.com/" target="_blank">Brightcove</a> and <a href="http://www.evhead.com/2005/02/how-odeo-happened.asp" target="_blank">Odeo</a> support the concept of an open registry, and hope to work with digital creators to sell their work to fulfill the financial aspect of <a href="http://en.wikipedia.org/wiki/The_Long_Tail" target="_blank">the &quot;Long Tail.&quot;</a><br /><br /><b>More Movers and Shakers:</b><br /><a href="http://creativecommons.org/about/people" target="_blank">Creative Commons</a>, the <a href="http://www.omn.org/" target="_blank">Open Media Network</a>, <a href="http://www.momentshowing.net/about.html" target="_blank">Jay Dedman</a>, <a href="http://ryanedit.blogspot.com/" target="_blank">Ryanne Hodson</a>, <a href="http://michaelverdi.com/index.php" target="_blank">Michael Verdi</a>, <a href="http://www.chapmanlogic.com/blog/aboutEli.html" target="_blank">Eli Chapman</a>, <a href="http://www.unmediated.org/" target="_blank">Kenyatta Cheese</a>, <a href="http://www.itconversations.com/about.html" target="_blank">Doug Kaye</a>, <a href="http://www.wired.com/wired/archive/13.09/yahoo.html" target="_blank">Brad Horowitz</a>, <a href="http://webjay.org/about#colophon" target="_blank">Lucas Gonze</a>, <a href="http://musicbrainz.org/wd/MusicBrainzBio" target="_blank">Robert Kaye</a>,  <a href="http://www.lifewithalacrity.com/" target="_blank">Christopher Allen</a>, <a href="http://en.wikipedia.org/wiki/Brewster_Kahle" target="_blank">Brewster Kahle</a>, <a href="http://www.newmediamusings.com/" target="_blank">JD Lasica</a>, and indeed, <a href="http://www.corante.com/amateur/articles/20030211-3564.html" target="_blank">Marc Canter</a>, among others.<br /><br /><br /><b>4.	Microcontent Publishing</b><br /><br />Unstructured content is cheap to create, but hard to search through. Structured content is expensive to create, but easy to search. <a href="http://developers.technorati.com/wiki/MicroFormats" target="_blank">Microformats</a> resolve the dilemma with simple structures that are cheap to use and easy to search.<br /><br />The first kind of widely adopted microcontent is blogging. Every post is an encapsulated idea, addressable via a URL called a permalink. You can syndicate or subscribe to this microcontent using RSS or an RSS equivalent, and news or blog aggregators can then display these feeds in a convenient readable fashion. But a blog post is just a block of unstructured textânot a bad thing, but just a first step for microcontent. When it comes to<i>structured</i>Â data, such as personal identity profiles, product reviews, or calendar-type event data, RSS was not designed to maintain the integrity of the structures. <br /><br />Right now, blogging doesn&#39;t have the underlying structure necessary for full-fledged microcontent publishing. But that will change. Think of local information services (such as movie listings, event guides, or restaurant reviews) that any college kid can access and use in her weekend programming project to create new services and tools.<br /><br />Today&#39;s blogging tools will evolve into microcontent publishing systems, and will help spread the notion of structured data across the blogosphere. New ways to store, represent and produce microcontent will create new standards, such as <a href="http://structuredblogging.org/" target="_blank">Structured Blogging</a> and <a href="http://microformats.org/" target="_blank">Microformats</a>. Microformats differ from RSS feeds in that you can&#39;t subscribe to them. Instead, Microformats are embedded into webpages and discovered by search engines like Google or Technorati. Microformats are creating common definitions for &quot;What is a review or event? What are the specific fields in the data structure?&quot; They can also specify what we can do with all this information.<a href="http://www.opml.org/spec" target="_blank">OPML (Outline Processor Markup Language)</a> is a hierarchical file format for storing microcontent and structured data. It was developed by <a href="http://en.wikipedia.org/wiki/Dave_Winer" target="_blank">Dave Winer</a> of RSS and podcast fame.<br /><br />Events are one popular type of microcontent. <a href="http://www.openevents.com" target="_blank">OpenEvents</a> is already working to create shared databases of standardized events, which would get used by a new generation of event portalsâsuch as <a href="http://eventful.com/gotevents/" target="_blank">Eventful/EVDB</a>, <a href="http://upcoming.org/" target="_blank">Upcoming.org</a>, and <a href="http://www.whizspark.com/" target="_blank">WhizSpark</a>. The idea of OpenEvents is that event-oriented systems and services can work together to establish shared events databases (and associated APIs) that any developer could then use to create and offer their own new service or application. <a href="http://marc.blogs.it/archives/2005/04/rvw_redux_openr.html" target="_blank">OpenReviews</a> is still in the conceptual stage, but it would make it possible to provide open alternatives to closed systems like Epinions, and establish a shared database of local and global reviews. Its shared open servers would be filled with all sorts of reviews for anyone to access. <br /><br />Why is this important? Because I predict that in the future, 10 times more people will be writing reviews than maintaining their own blog. The list of possible microcontent standards goes on: OpenJobpostings, OpenRecipes, and even OpenLists. Microsoft <a href="http://www.reallysimplesyndication.com/2005/06/22" target="_blank">recently revealed</a> that it has been working on an important new kind of microcontent: Listsâso OpenLists will attempt to establish standards for the <i>kind</i>Â of lists we all use, such as lists of Links, lists of To Do Items, lists of People, Wish Lists, etc.<br /><br /><b>Movers and Shakers:</b><br /><a href="http://tantek.com/log/2005/09.html" target="_blank">Tantek Ãelik</a> and <a href="http://en.wikipedia.org/wiki/Kevin_Marks" target="_blank">Kevin Marks</a> of <a href="http://developers.technorati.com/wiki/MicroFormats" target="_blank">Technorati</a>, <a href="http://dannyayers.com/" target="_blank">Danny Ayers</a>, <a href="http://www.meyerweb.com/" target="_blank">Eric Meyer</a>, <a href="http://photomatt.net/" target="_blank">Matt Mullenweg</a>, <a href="http://zlab.commerce.net/" target="_blank">Rohit Khare</a>, <a href="http://ifindkarma.typepad.com/relax/" target="_blank">Adam Rifkin</a>, <a href="http://www.sivas.com/aleene/" target="_blank">Arnaud Leene</a>, <a href="http://radio.weblogs.com/0110772/" target="_blank">Seb Paquet</a>, <a href="http://hublog.hubmed.org/" target="_blank">Alf Eaton</a>, <a href="http://www.myelin.co.nz/post/" target="_blank">Phil Pearson</a>, <a href="http://www.joereger.com/" target="_blank">Joe Reger</a>, <a href="http://bobwyman.pubsub.com/" target="_blank">Bob Wyman</a> among others.<br /><br /><br /><b>5.	Open Social Networks</b><br /><br />I&#39;ll never forget the first time I met <a href="http://www.jabrams.com/" target="_blank">Jonathan Abrams</a>, the founder of Friendster. He was arrogant and brash and he claimed he &quot;<i>owned</i>&quot;Â  all his users, and that he was going to monetize them and make a fortune off them. This attitude robbed Friendster of its momentum, letting MySpace, Facebook, and other social networks take Friendster&#39;s place.<br /><br />Jonathan&#39;s notion of social networks as a way to control users is typical of the Web 1.0 business model and its attitude towards users in general. Social networks have become one of the battlegrounds between old and new ways of thinking. Open standards for Social Networking will define those sides very clearly. Since meeting Jonathan, I have been working towards finding and establishing open standards for social networks. Instead of closed, centralized social networks with 10 million people in them, the goal is making it possible to have 10 million social networks that each have 10 people in them.<br /><br />FOAF (which stands for Friend Of A Friend, and describes people and relationships in a way that computers can parse) is a schema to represent not only your personal profile&#39;s meta-data, but your social network as well. Thousands of researchers use the <a href="http://www.foaf-project.org/" target="_blank">FOAF schema</a> in their &quot;Semantic Web&quot; projects to connect people in all sorts of new ways. <a href="http://gmpg.org/xfn/" target="_blank">XFN</a> is a microformat standard for representing your social network, while <a href="http://www.imc.org/pdi/" target="_blank">vCard</a> (long familiar to users of contact manager programs like Outlook) is a microformat that contains your profile information. Microformats are baked into any xHTML webpage, which means that<i>any</i>Â blog, social network page, or any webpage in general can &quot;contain&quot; your social network in itÂand be used by<i>any</i>Â compatible tool, service or application. <br /><br />PeopleAggregator is an earlier project now being integrated into <a href="http://drupal.org/" target="_blank">open content management framework Drupal</a>. The <a href="http://www.broadbandmechanics.com/PeopleAggregator/" target="_blank">PeopleAggregator APIs</a> will make it possible to establish relationships, send messages, create or join groups, and post between different social networks. (Sneak preview: this technology will be available in the upcoming GoingOn Network.) <br /><br />All of these open social networking standards mean that inter-connected social networks will form a mesh that will parallel the blogosphere. This vibrant, distributed, decentralized world will be driven by open standards: personalized online experiences are what the new open web will be all aboutÂand what could be more personalized than people&#39;s networks?<br /><br /><b>Movers and Shakers:</b><br /><a href="http://esigler.2nw.net/" target="_blank">Eric Sigler</a>, <a href="http://lucifer.intercosmos.net/index.php?view=about" target="_blank">Joel De Gan</a>, <a href="http://crschmidt.net/" target="_blank">Chris Schmidt</a>, <a href="http://voidstar.com/" target="_blank">Julian Bond</a>, <a href="http://people.tribe.net/paul?_click_path=Application%5Btribe%5D.Person%5Bf2232c95-e123-43a3-b48d-24a5f11f09dc%5D&r=10535" target="_blank">Paul Martino</a>, <a href="http://napsterization.org/stories/archives/000513.html" target="_blank">Mary Hodder</a>, <a href="http://public.2idi.com/=Drummond.Reed" target="_blank">Drummond Reed</a>, <a href="http://danbri.org/" target="_blank">Dan Brickley</a>, <a href="http://360.yahoo.com/profile-9lciejI3aafX1stHPoIRNmkmv4EowQ--" target="_blank">Randy Farmer</a>, and <a href="http://www.kaliyasblogs.net/Iwoman/" target="_blank">Kaliya Hamlin</a>, to name a few.<br /><br /><br /><b>6.	Tags</b><br /><br />Nowadays, no self-respecting tool or service can ship without <a href="http://www.salon.com/tech/feature/2005/02/08/tagging/index_np.html" target="_blank">tags</a>. Tags are keywords or phrases attached to photos, blog posts, URLs, or even video clips. These user- and creator-generated tags are an open alternative to what used to be the domain of librarians and information scientists: categorizing information and content using taxonomies. Tags are instead creating <a href="http://www.wired.com/wired/archive/13.04/view.html?pg=4" target="_blank">&quot;folksonomies.&quot;</a><br /><br />The recently proposed OpenTags concept would be an open, community-owned version of the popular <a href="http://www.technorati.com/tag/" target="_blank">Technorati Tags service</a>. It would aggregate the usage of tags across a wide range of services, sites, and content tools. In addition to Technorati&#39;s current tag features, OpenTags would let groups of people share their tags in &quot;<a href="http://www.zeldman.com/daily/0405d.shtml/" target="_blank">TagClouds</a>.&quot; Open tagging is likely to include some of the open identity features discussed above, to create a tag system that is resilient to spam, and yet trustable across sites all over the web.<br /><br />OpenTags owes a debt to earlier versions of shared tagging systems, which include <a href="http://www.topicexchange.com/" target="_blank">Topic Exchange</a> and something called the <a href="http://www.evectors.com/itkcollector/" target="_blank">k-collector</a>Âa knowledge management tag aggregatorÂfrom Italian company eVectors. <br /><br /><b>Movers &amp; Shakers:</b><br /><a href="http://www.myelin.co.nz/notes/" target="_blank">Phil Pearson</a>, <a href="http://matt.blogs.it/" target="_blank">Matt Mower </a>, <a href="http://paolo.evectors.it/" target="_blank">Paolo Valdemarin</a>, and <a href="http://marc.blogs.it/archives/2005/03/opentopics.html" target="_blank">Mary Hodder</a> and <a href="http://www.equalsdrummond.name/index.php?p=39" target="_blank"> Drummond Reed</a> again, among others.<br /><br /><br /><b>7. Pinging</b><br /><br />Websites used to be mostly static. Search engines that <a href="http://en.wikipedia.org/wiki/Web_crawler" target="_blank">crawled</a> (or &quot;spidered&quot;) them every so often did a good enough job to show reasonably current versions of your cousin&#39;s homepage or even <i>Time</i>Â magazine&#39;s weekly headlines. But when blogging took off, it became hard for search engines to keep up. (Google has only <a href="http://searchenginewatch.com/searchday/article.php/3548411" target="_blank">just managed</a> to offer <a href="http://www.google.com/help/about_blogsearch.html" target="_blank">blog-search functionality</a>, despite <a href="http://www.alwayson-network.com/comments.php?id=325_0_2_0_C" target="_blank">buying Blogger</a> back in early 2003.)<br /><br />To know what was new in the blogosphere, users couldn&#39;t depend on services that spidered webpages once in a while. The solution: a way for blogs themselves to automatically notify blog-tracking sites that they&#39;d been updated. <a href="http://weblogs.com/" target="_blank">Weblogs.com</a> was the first blog &quot;ping service&quot;: it displayed the name of a blog whenever that blog was updated. Pinging sites helped the blogosphere grow, and <a href="http://blo.gs/" target="_blank">more tools</a>, services, and portals started using pinging in new and different ways. Dozens of pinging services and sitesÂmost of which can&#39;t talk to each otherÂsprang up. <br /><br />Matt Mullenweg (the creator of open source blogging software WordPress) decided that a one-stop service for pinging was needed. He created <a href="http://pingomatic.com/" target="_blank">Ping-o-Matic</a>Âwhich aggregates ping services and simplifies the pinging process for bloggers and tool developers. With Ping-o-Matic, any developer can alert all of the industry&#39;s blogging tools and tracking sites at once. This new kind of open standard, with shared infrastructure, is a critical to the scalability of Web 2.0 services.<br /><br />As <a href="http://pingomatic.com/about/" target="_blank">Matt said</a>:<br /><blockquote>There are a number of services designed specifically for tracking and connecting blogs. However it would be expensive for all the services to crawl all the blogs in the world all the time. By sending a small ping to each service you let them know you&#39;ve updated so they can come check you out. They get the freshest data possible, you don&#39;t get a thousand robots spidering your site all the time. Everybody wins.</blockquote><br /><b>Movers and Shakers:</b><br /><a href="http://photomatt.net/about/" target="_blank">Matt Mullenweg</a>, <a href="http://trainedmonkey.com/entry/2251" target="_blank">Jim Winstead</a>, <a href="http://newhome.weblogs.com/faq" target="_blank">Dave Winer</a><br /><br /><br /><b>8. Routing</b><br /><br />Bloggers used to have to manually enter the links and content snippets of blog posts or news items they wanted to blog. Today, some RSS aggregators can send a specified post directly into an associated blogging tool: as bloggers browse through the feeds they subscribe to, they can easily specify and send any post they wish to &quot;<a href="http://www.microsoftmonitor.com/archives/010209.html" target="_blank">reblog</a>&quot; from their news aggregator or feed reader into their blogging tool. (This is usually referred to as &quot;<a href="http://help.blogger.com/bin/answer.py?answer=152&topic=17" target="_blank">BlogThis</a>.&quot;) As structured blogging comes into its own (see the section on Microcontent Publishing), it will be increasingly important to maintain the structural integrity of these pieces of microcontent when reblogging them. <br /><br />Promising standard <a href="http://redirectthis.com/" target="_blank">RedirectThis</a> will combine a &quot;BlogThis&quot;-like capability while maintaining the integrity of the microcontent. RedirectThis will let bloggers and content developers attach a simple &quot;PostThis&quot; button to their posts. Clicking on that button will send that post to the reader/blogger&#39;s favorite <a href="http://ecto.kung-foo.tv/archives/000990.php" target="_blank">blogging tool</a>. This favorite tool is specified at the RedirectThis web service, where users register their blogging tool of choice. RedirectThis also helps maintain the integrity and structure of microcontentÂthen it&#39;s just up to the user to prefer a blogging tool that also attains that lofty goal of microcontent integrity. <br /><br />OutputThis is another nascent web services standard, to let bloggers specify what &quot;destinations&quot; they&#39;d like to have as options in their blogging tool. As new destinations are added to the service, more checkboxes would get added to their blogging toolÂallowing them to route their published microcontent to additional destinations.<br /><br /><b>Movers and Shakers:</b><br /><a href="http://reblog.org/" target="_blank">Michael Migurski</a>, <a href="http://www.gonze.com/about" target="_blank">Lucas Gonze</a><br /><br /><br /><b>9. Open Communications</b><br /><br />Likely, you&#39;ve experienced the joys of finding friends on AIM or Yahoo Messenger, or the convenience of Skyping with someone overseas. Not that you&#39;re about to throw away your mobile phone or BlackBerry, but for many, also having access to Instant Messaging (IM) and Voice over IP (VoIP) is crucial. <br /><br />IM and VoIP are mainstream technologies that already enjoy the benefits of open standards. Entire industries are bornÂright this secondÂbased around these open standards. <a href="http://www.jabber.org/" target="_blank">Jabber</a> has been an open IM technology for yearsÂin fact, <a href="http://www.xmpp.org/history.html" target="_blank">as XMPP</a>, it was officially dubbed a standard by <a href="http://www.ietf.org/overview.html" target="_blank">the IETF</a>. Although becoming an <a href="http://en.wikipedia.org/wiki/IETF" target="_blank">official IETF standard</a> is usually the kiss of death, Jabber looks like it&#39;ll be around for a while, as entire generations of collaborative, work-group applications and services have been built on top of its messaging protocol. For VoIP, <a href="http://skype.com/helloagain.html" target="_blank">Skype</a> is clearly the leading standard todayÂthough one could <a href="http://socialsoftware.weblogsinc.com/entry/1234000923058521/" target="_blank">argue just how &quot;open&quot; it is</a> (and defenders of the IETF&#39;s <a href="http://www.cs.columbia.edu/sip/" target="_blank">SIP standard</a> often do). But it is free and user-friendly, so there won&#39;t be much argument from <i>users</i>Â  about it being insufficiently open. Yet there may be a cloud on Skype&#39;s horizon: web behemoth Google recently released a beta of <a href="http://www.google.com/talk/developer.html" target="_blank">Google Talk, an IM client committed to open standards</a>. It currently <a href="http://radar.oreilly.com/archives/2005/08/google_talk_rel.html" target="_blank">supports XMPP, and will support SIP</a> for VoIP calls.<br /><br /><b>Movers and Shakers:</b><br /><a href="http://www.jabber.org/people/jer.shtml" target="_blank">Jeremie Miller</a>, <a href="http://www.cs.columbia.edu/~hgs/" target="_blank">Henning Schulzrinne</a>, <a href="http://www.von.com/schedule_eos11114704148.html" target="_blank">Jon Peterson</a>, <a href="http://www.pulver.com/jeff/" target="_blank">Jeff Pulver</a><br /><br /><br /><b>10. Device Management and Control</b><br /><br />To access online content, we&#39;re using more and more devices. BlackBerrys, iPods, Treos, you name it. As the web evolves, more and more different devices will have to communicate with each other to give us the content we want when and where we want it. No-one wants to be dependent on one vendor anymoreÂlike, <a href="http://www.alwayson-network.com/comments.php?id=P9409_0_6_0_C" target="_blank">say, Sony</a>Âfor their laptop, phone, MP3 player, PDA, and digital camera, so that it all works together. We need fully interoperable devices, and the standards to make that work. And to fully make use of how content is moving online content and innovative web services, those standards need to be open.<br /><br /><a href="http://en.wikipedia.org/wiki/Midi" target="_blank">MIDI (musical instrument digital interface)</a>, one of the very first open standards in music, connected disparate vendors&#39; instruments, post-production equipment, and recording devices. But MIDI is limited, and <a href="http://www.oreillynet.com/pub/wlg/8015" target="_blank">MIDI II has been very slow to arrive</a>. Now a new standard for controlling musical devices has emerged: <a href="http://www.cnmat.berkeley.edu/OpenSoundControl/" target="_blank">OSC (Open SoundControl)</a>. This protocol is optimized for modern networking technology and inter-connects music, video and controller devices with &quot;other multimedia devices.&quot; OSC is used by a wide range of developers, and is being taken up in the mainstream MIDI marketplace.<br /><br />Another open-standards-based device management technology is <a href="http://www.zigbee.org" target="_blank">ZigBee</a>, for building wireless intelligence and network monitoring into all kinds of devices. ZigBee is supported by many networking, consumer electronics, and mobile device companies.<br /><br /><br />Â  Â  Â  Â· Â· Â· Â· Â· Â· Â  Â  <br /><br /><b>The Change to Openness</b><br /><br />The rise of open source software and its &quot;<a href="http://www.oreillynet.com/pub/a/oreilly/tim/articles/architecture_of_participation.html" target="_blank">architecture of participation</a>&quot; are completely shaking up the old proprietary-web-services-and-standards approach. Sun MicrosystemsÂwhose proprietary Java standard helped define the Web 1.0Âis opening its Solaris OS and has even announced the apparent paradox of an <a href="http://blogs.zdnet.com/open-source/?p=418" target="_blank">open-source Digital Rights Management</a> system.<br /><br />Today&#39;s incumbents will have to adapt to the new openness of the Web 2.0. If they stick to their <a href="http://www.gartner.com/DisplayDocument?doc_cd=131038" target="_blank">proprietary standards</a>, code, and content, they&#39;ll become the new walled gardensÂplaces users visit briefly to retrieve data and content from enclosed data silos, but not where users &quot;live.&quot; The incumbents&#39; revenue models will have to change. Instead of &quot;owning&quot; their users, users will know they own themselves, and will expect a return on their valuable identity and attention. Instead of being locked into incompatible media formats, users will expect easy access to digital content across many platforms. <br /><br />Yesterday&#39;s web giants and tomorrow&#39;s users will need to find a mutually beneficial new balanceÂbetween open and proprietary, developer and user, hierarchical and horizontal, owned and shared, and compatible and closed. <br /><br /><br /><i>Marc Canter is an active evangelist and developer of open standards. Early in his career, Marc founded MacroMind, which became Macromedia. These days, he is CEO of Broadband Mechanics, a founding member of the Identity Gang and of ourmedia.org. Broadband Mechanics is currently developing the <a href="http://www.alwayson-network.com/comments.php?id=11262_0_1_0_C" target="_blank">GoingOn Network</a> (with the AlwaysOn Network), as well as an open platform for social networking called the PeopleAggregator.</i><br /><br />A version of the above post appears in the Fall 2005 issue of AlwaysOn&#39;s quarterly print blogozine, and ran as <a href="http://www.alwayson-network.com/comments.php?id=12063_0_1_0_C" target="_blank">a four-part series</a> on the AlwaysOn Network website.</td></tr></table><br /><p>(Via <a href="http://marc.blogs.it/">Marc&#39;s Voice</a>.)</p></blockquote>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-01-28#673">
  <rss:title>Google Ups Web 2.0 Ante with Web Services edition of  AdWords</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-28T23:36:17Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Google has just unveiled a Web 2.0 initiative in the form of a Web Services interface for its AdWords service. You can now programmatically interact with Google&#39;s keyword based advertising service using SOAP calls (with service signature described using WSDL). An immediate implication is that you can generate Google AdWords based adds using any development environment (Virtuoso&#39;s SQL Stored Procedure Language,  any .NET bound language, Java, C/C++, PHP, Ruby, Perl, Python, TCL etc.) that supports SOAP, WSDL, and I would presume WS-Security. An even more interesting offshoot of this initiative from Google, is the fact that it could bring a degree of clarity to the issue of multi-protocol and multi-purpose servers (what I call Universal Servers e.g. OpenLink Virtuoso). For instance, you could manage AdWords campaigns across product portfolios using Triggers (the SQL database kind) or Notification Services.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Google has just unveiled&nbsp;a <a href="http://www.openlinksw.com/blog/~kidehen/index.vspx?id=373">Web 2.0</a>&nbsp;initiative in the form of&nbsp;a <a href="http://www.google.com/apis/adwords/">Web Services&nbsp;interface for its&nbsp;AdWords service</a>.&nbsp;You can now programmatically interact with Google's keyword based advertising service using <a href="http://answers.com/main/ntquery?dym=0&cid=984588381&method=6">SOAP</a> calls (with service <a href="http://answers.com/main/ntquery?dym=2&cid=396232605&method=6">signature</a> described using <a href="http://answers.com/main/ntquery?s=wsdl">WSDL</a>).</p>
<p>An immediate implication is that you can generate Google AdWords based adds using any development environment (<a href="http://docs.openlinksw.com/virtuoso/sqlprocedures.html">Virtuoso's SQL Stored Procedure Language</a>, &nbsp;any .NET bound language, Java, C/C++, PHP, Ruby, Perl, Python, TCL etc.) that supports SOAP, WSDL, and I would presume <a href="http://answers.com/main/ntquery?s=ws-security">WS-Security</a>.</p>
<p>An even more interesting offshoot of this initiative from Google, is the fact that&nbsp;it&nbsp;could bring a degree of clarity to the issue of multi-protocol and multi-purpose servers (what I call <a href="   http://en.wikipedia.org/wiki/Universal_server">Universal Servers</a> e.g. <a href="http://virtuoso.openlinksw.com">OpenLink Virtuoso</a>). For instance, you could manage AdWords campaigns across product portfolios using Triggers (the SQL database kind) or Notification Services.</p>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-04-16#523">
  <rss:title>SQL Support in Mozilla?</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2004-04-16T16:13:30Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Mozilla&#39;s SQL Support allows applications to directly connect to SQL databases. A web application no longer needs to pass information through a scripting language, such as Perl or Python, in order to recieve information it can use. The removal of the layer seperating applications and data simplifies the job of the programmer. Somehow I missed this effort, and only stumbled across it today after experimenting with Virtuoso&#39;s SyncML features (and then pondering about OutLook, WinFS, and what may or may not happen with SyncML support - another story). As usual the SQL binding to Mozilla caught my attention (I do recall trying to get Marc and Jim Clark to head down this path many years ago via an email; at least Jim acknowledged not knowing that much about SQL and past it on.., and as for Marc well... nothing happened). A few</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><a href="http://www.mozilla.org/projects/sql/">Mozilla&#39;s SQL Support </a>allows applications to directly connect to SQL databases. A web application no longer needs to pass information through a scripting language, such as Perl or Python, in order to recieve information it can use. The removal of the layer seperating applications and data simplifies the job of the programmer. </p></blockquote>
<p dir="ltr">Somehow I missed this effort, and only stumbled across it today after experimenting with <a href="http://www.openlinksw.com/virtuoso/whatis.htm">Virtuoso&#39;s SyncML features</a> (and then pondering about OutLook, WinFS, and what may or may not happen with SyncML support - another story).</p>
<p dir="ltr">As usual the SQL binding to Mozilla caught my attention (I do recall trying to get Marc and Jim Clark to head down this path many years ago via an email; at least Jim acknowledged not knowing that much about SQL and past it on.., and as for Marc well... nothing happened).</p>
<p dir="ltr">A few</p>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-07-31#224">
  <rss:title>Email: Killer App Or Just A Killer?</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2003-07-31T18:28:28Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">The current state of e-mail is one of the travesties of the Internet in my opinion, the excerpt below pretty much sums this up&quot; Email: Killer App Or Just A Killer? While many people consider email to be the &quot;killer app&quot; that brought the internet into homes and businesses, now some are saying that email has become annoying and costly. The most obvious issue is with spam, but there are other things as well. Maintaining an email server is a pain, and keeping email free from viruses is an additional cost. For companies that monitor email (and there are more and more), that&#39;s yet another expense. Finally, since there are questions about email security, some companies are telling employees not to use email for sensitive material. Thus, for many companies, email is only useful for informal communications, and you can only find those messages once you wade through all the spam and viruses - or so this article would have you believe. It&#39;s really not that bad - and there are reasonable technology solutions that should be able to keep most companies afloat with minimal costs. Yes, it&#39;s annoying, but the benefits of having email certainly outweigh the annoyances associated with it. [via Techdirt] One of the reasons for e-mail enabling Virtuoso (circa. 2000) was to set the stage for addressing what I anticipated would ultimately become the Spam Monster. This is how the solution was envisioned. Build a Driver/Sink that could be attached to the SMTP Agents such as Sendmail, Excim, Exchange etc.. such that the mail received is actually stored in a DBMS Engine (in this case Virtuoso or an ODBC accessible database). Once the mail is in the database it is then possible for Triggers to handle filtering of the Mime headers and mail body (using regular experessions). The end result being that Spam and Virulent mails are already filtered prior to POP or IMAP retrieval. With the emergence of Bayesian Spam Filters and other Anti Spam solutions there remains a possibility for this pursuing the best of both worlds. Enhance the DB Engine via its extensions API (In the case of Virtuosowhich supports Python, Perl etc..), or enhance the Mail Driver/Sink by extending it in a similar manner (a little more work if extensibility isn&#39;t part of the original Mail Sink design). My preference is obviously to handle this at the database level so that the Bayesian spam filter becomes a Trigger on the table into which the mail is stored. With a database in the mix I pretty much have a rules based engine for e-mail and also a pretty flexible mechanism for dealing with false positives (nothing&#39;s perfect!) since they remain in the database too, but not automatically part of the IMAP or POP retrieval process. At the end of the day e-mail is data and we simply need to look at data</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p dir="ltr">The current state of e-mail is one of the travesties of the Internet in my opinion, the excerpt below pretty much sums this up"</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p dir="ltr"><a href="http://techdirt.com/articles/20030730/2334203.shtml">Email: Killer App Or Just A Killer?</a> While many people consider email to be the "killer app" that brought the internet into homes and businesses, now some are saying that <a href="http://www.globetechnology.com/servlet/story/RTGAM.20030731.ujack0731/BNStory/Technology/">email has become annoying and costly</a>. The most obvious issue is with spam, but there are other things as well. Maintaining an email server is a pain, and keeping email free from viruses is an additional cost. For companies that monitor email (and there are more and more), that's yet another expense. Finally, since there are questions about email security, some companies are telling employees not to use email for sensitive material. Thus, for many companies, email is only useful for informal communications, and you can only find those messages once you wade through all the spam and viruses - or so this article would have you believe. It's really not <i>that</i> bad - and there are reasonable technology solutions that should be able to keep most companies afloat with minimal costs. Yes, it's annoying, but the benefits of having email certainly outweigh the annoyances associated with it. [via <a href="http://www.techdirt.com/">Techdirt</a>]</p></blockquote>
<p dir="ltr">One of the reasons for e-mail enabling <a href="http://www.openlinksw.com/virtuoso/whatis.htm">Virtuoso</a> (circa. 2000) was to set the stage for addressing what I anticipated would ultimately become the Spam Monster. This is how the solution was envisioned.</p>
<p dir="ltr">Build a Driver/Sink that could be attached to the SMTP Agents such as Sendmail, Excim, Exchange etc.. such that the mail received is actually stored in a DBMS Engine (in this case Virtuoso or an ODBC accessible database). Once the mail is in the database it is then possible for Triggers to handle filtering of the Mime headers and mail body (using regular experessions). The end result being that Spam and Virulent mails are already filtered prior to POP or IMAP retrieval.</p>
<p dir="ltr">With the emergence of Bayesian Spam Filters and other Anti Spam solutions there remains a possibility for this pursuing the best of both worlds. Enhance the DB Engine via its extensions API (In the case of Virtuosowhich supports Python, Perl etc..), or enhance the Mail Driver/Sink by extending it in a similar manner (a little more work if extensibility isn't part of the original Mail Sink design). My preference is obviously to handle this at the database level so that the Bayesian spam filter becomes a Trigger on the table into which the mail is stored. </p>
<p dir="ltr">With a database in the mix I pretty much have a rules based engine for e-mail and also a pretty flexible mechanism for dealing with false positives (nothing's perfect!) since they remain in the database too, but not automatically part of the IMAP or POP retrieval process.</p>
<p dir="ltr">At the end of the day e-mail is data and we simply need to look at data </p>
<div align="right"></div>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-06-25#187">
  <rss:title>OpenLink Software Announces Virtuoso 3.2 </rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2003-06-25T21:35:54Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">OpenLink Software Announces Virtuoso 3.2 This Blog Site is actually powered by Virtuoso 3.2 (has been doing so prior to the announcement). Hmm. product utilization preceding press release? Why not? OpenLink adds Weblog client and server functionality to Virtual Database Engine for SQL, XML, and Web Services Burlington, MA. June 25, 2003 - OpenLink Software, Inc., a leading provider of universal data access and enterprise information integration middleware, announces Virtuoso 3.2  the latest edition of its cross platform Virtual Database for SQL, XML, and Web Services  for Mac® OS X. The new release incorporates full client and server support for the Blogger, Moveable Type, and MetaWeblog APIs, providing users with choice over location, format, data storage, development environment, and host operating system, for personal, community, and corporate Weblogs. The new release also facilitates the transparent integration of Weblog data with other enterprise data sources. Full Press Release Putting together the community site took 5 minutes and it basically involved the following steps: 1. Standard installation from installer program (Mac OS X in this case, but Windows, Linux, and UNIX supported) 2. Creation of WebDAV user account for WebDAV repository (where all the gems reside) 3. Clicking on the &quot;Generate Web Site&quot; button situated in the Weblog menu tree with the Virtuoso HTML based Admin UI 4. Filled up my channel and blogrolls by asking Virtuoso to use its very old web content aggregation functionality 5. Setup my upstreams (so that I post once and propagate to my numerous blog sites on a conditional basis) 6. Create a Virtuoso HTTP Virtual Domain for the community/personal Blog 7. Start blogging using any Blog Client that supports; Blogger API, MetaWeblog, or Moveable Type No more no less. Most importantly I have a choice of programming languages (VSP, VSX, PHP, ASP.NET, JSP, Perl, Python), operating systems, and databases that constitute the shape and form of my blog home. See the Virtuoso FAQ for how this all comes together.</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><A href="http://www.openlinksw.com/press/virt32_wwdc1.htm">OpenLink Software Announces Virtuoso 3.2 </a></span></p>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">This <A href="http://wwdc2003.openlinksw.com/"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'"><FONT face=Arial size=2>Blog Site</font></span></a> is actually powered by <A href="http://www.openlinksw.com/virtuoso">Virtuoso</a> 3.2 (has been doing so prior to the announcement). Hmm. product utilization preceding press release? Why not?</span><B><SPAN style="FONT-FAMILY: Arial"><FONT size=3></font></span></b></p>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><B><SPAN style="FONT-FAMILY: Arial">OpenLink adds Weblog client and server functionality to <BR>Virtual Database Engine for SQL, XML, and Web Services</span></b><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <BR><BR><B>Burlington, MA. June 25, 2003</b> - OpenLink Software, Inc., a leading provider of universal data access and enterprise information integration middleware, announces Virtuoso 3.2  the latest edition of its cross platform Virtual Database for SQL, XML, and Web Services  for Mac® OS X. <BR><BR>The new release incorporates full client and server support for the Blogger, Moveable Type, and MetaWeblog APIs, providing users with choice over location, format, data storage, development environment, and host operating system, for personal, community, and corporate Weblogs. The new release also facilitates the transparent integration of Weblog data with other enterprise data sources. </span></p>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><A href="http://www.openlinksw.com/press/virt32_wwdc1.htm"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'"><FONT face=Arial size=2>Full Press Release</font></span></a></span></p></blockquote>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Putting together the community site took 5 minutes and it basically involved the following steps:</span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">1. Standard installation from installer program (Mac OS X in this case, but Windows, Linux, and UNIX supported)</span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">2. Creation of WebDAV user account for WebDAV repository (where all the gems reside)</span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">3. Clicking on the "Generate Web Site" button situated in the Weblog menu tree with the Virtuoso HTML based Admin UI</span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">4. Filled up my channel and blogrolls by asking Virtuoso to use its <U>very old web</u> content aggregation functionality </span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">5. Setup my upstreams (so that I post once and propagate to my numerous blog sites on a conditional basis)</span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">6. Create a Virtuoso HTTP Virtual Domain for the community/personal Blog </span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">7. Start blogging using any Blog Client that supports; Blogger API, MetaWeblog, or Moveable Type</span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">No more no less. Most importantly I have a choice of programming languages (VSP, VSX, PHP, ASP.NET, JSP, Perl, Python), operating systems, and databases that constitute the shape and form of my blog home. </span></p>
<P dir=ltr><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">See the<A href="http://www.openlinksw.com/virtuoso/faqs.htm"> Virtuoso FAQ </a>for how this all comes together.</span></p>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-05-16#30">
  <rss:title>&lt;a href=&quot;http://dotnetweblogs.com/britchie/posts/3920.aspx&quot;&gt;.NET Languages Everywhere&lt;/a&gt;</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2003-05-16T22:23:07Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">.NET Languages Everywhere More .NET languages are popping up everyday.  I&#39;ve put together one of the most extensive lists of languages and posted it here.  Its pulled from many sources including: .NET Languages (ASP.NET), Cetus, Language Vendors (MS GotDotNET), .NET Language Group (MS GotDotNET), Visual Studio Partners: Language Vendors (MS), Mono-list, Google, SourceForge.net Ada A# - port of Ada to .NET (Dr. Martin C. Carlisle) APL Dyalog.Net - Dyalog APL (Dyadic) AsmL Abstract State Machine Language (MS Research) Visual Basic VB.NET (MS) mbas (Mono/Ximian) C# C# (MS) mcs (Mono/Ximian) cscc (DotGNU Portable.NET) Caml F# (ML and Caml), Abstract IL, ILX (MS Research) C++ Managed Extensions for C++ (MS) Managed and Unmanaged C++ (GotDotNet) Cobol NetCOBOL - COBOL for .NET (Fujitsu) Net Express (Micro Focus) Delphi Borland Delphi and C++Builder Support for .NET (Borland) Delphi.NET - interoperability tools (Marcus Schmidt) Eiffel Eiffel for .NET (Interactive Software Engineering) Forth Delta Forth .NET (Valer BOCAN) Fortran Lahey/Fujitsu Fortran for .NET (Lahey Computer Systems, Inc.) FTN95 - Fortran for Microsoft .NET (Salford Software Ltd.) Java Visual J# .NET (MS) IKVM.NET - Java VM for .NET JavaScript JScript .NET (GotDotNet) JANET - JavaScript-compatible language LOGO MonoLOGO (Richard Hestilow) Lua Lua.NET: Integrating Lua with Rotor (PUC-RIO Mercury Mercury on .NET Mondrian Mondrian and Haskell for .NET (Nigel Perry) Oberon Active Oberon for .net (ETH Zuerich) Perl Perl for .NET, PerlNET (ActiveState SRL.) Pascal Component Pascal (QUT) PHP PHP Sharp Python KOBRA Open Source Python for .NET (Mark Hammond) Ruby NetRuby RPG ASNA Visual RPG for .NET Scheme Scheme (Northwestern University) Small Talk S# (SmallScript LLC) SML (Standard Meta Language) SML.NET (MS Research, University of Cambridge) Visual Basic VB.NET (MS) mbas (Mono/Ximian) I&#39;ll try to keep this updated when I run across a new language.  If anyone knows of any others, let me know.[via Brian Ritchie&#39;s Blog]</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<A href="http://dotnetweblogs.com/britchie/posts/3920.aspx">.NET Languages Everywhere</A> 
<P>More .NET languages are popping up everyday.&nbsp; I've put together one of the most extensive lists of languages and posted it <A href="http://www12.brinkster.com/brianr/languages.aspx">here</A>.&nbsp;</P>
<P>Its pulled from many sources including: <A href="http://www.asp.net/Default.aspx?tabindex=8&amp;tabid=40"><FONT face=Verdana size=2>.NET Languages</FONT></A><FONT face=Verdana size=2>&nbsp;(ASP.NET), </FONT><A href="http://www.cetus-links.org/oo_dotnet.html#oo_dotnet_netlang"><FONT face=Verdana size=2>Cetus</FONT></A>, <A href="http://www.gotdotnet.com/community/resources/Default.aspx?ResourceTypeDropDownList=Language+vendors"><FONT face=Verdana size=2>Language Vendors</FONT></A><FONT face=Verdana size=2> (MS GotDotNET), </FONT><A href="http://www.gotdotnet.com/team/lang/"><FONT face=Verdana size=2>.NET Language Group</FONT></A><FONT face=Verdana size=2> (MS GotDotNET), </FONT><A href="http://msdn.microsoft.com/vstudio/partners/language/default.asp"><FONT face=Verdana size=2>Visual Studio Partners: Language Vendors</FONT></A><FONT face=Verdana size=2> (MS), </FONT><FONT face=Verdana size=2><A href="http://www.go-mono.com/mailing-lists.html">Mono-list</A>, </FONT><FONT face=Verdana size=2><A href="http://www.google.com/">Google</A>, </FONT><FONT face=Verdana size=2><A href="http://sourceforge.net/">SourceForge.net</A></FONT></P>
<UL>
<LI><FONT face=Verdana size=2>Ada </FONT>
<UL>
<LI class=sub><A href="http://www.usafa.af.mil/dfcs/bios/mcc_html/a_sharp.html"><FONT face=Verdana size=2>A# - port of Ada to .NET</FONT></A><FONT face=Verdana size=2> (Dr. Martin C. Carlisle) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>APL </FONT>
<UL>
<LI class=sub><A href="http://www.dyadic.com/"><FONT face=Verdana size=2>Dyalog.Net - Dyalog APL</FONT></A><FONT face=Verdana size=2> (Dyadic) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>AsmL </FONT>
<UL>
<LI><A href="http://research.microsoft.com/fse/asml/"><FONT face=Verdana size=2>Abstract State Machine Language</FONT></A><FONT face=Verdana size=2> (MS Research)</FONT></LI></UL>
<LI><FONT face=Verdana size=2>Visual Basic </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vbasic/"><FONT face=Verdana size=2>VB.NET</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://www.go-mono.com/mbas.html"><FONT face=Verdana size=2>mbas</FONT></A><FONT face=Verdana size=2> (Mono/Ximian) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>C# </FONT>
<UL>
<LI><A href="http://msdn.microsoft.com/vcsharp/"><FONT face=Verdana size=2>C#</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI><A href="http://www.go-mono.com/c-sharp.html"><FONT face=Verdana size=2>mcs</FONT></A><FONT face=Verdana size=2> (Mono/Ximian)</FONT> 
<LI><FONT face=Verdana size=2><A href="http://www.southern-storm.com.au/portable_net.html">cscc</A> (DotGNU Portable.NET)</FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Caml </FONT>
<UL>
<LI class=sub><A href="http://research.microsoft.com/projects/ilx/fsharp.htm"><FONT face=Verdana size=2>F# (ML and Caml), Abstract IL, ILX</FONT></A><FONT face=Verdana size=2> (MS Research) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>C++ </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vstudio/techinfo/articles/upgrade/managedext.asp"><FONT face=Verdana size=2>Managed Extensions for C++</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://www.gotdotnet.com/team/cplusplus/"><FONT face=Verdana size=2>Managed and Unmanaged C++</FONT></A><FONT face=Verdana size=2> (GotDotNet) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Cobol </FONT>
<UL>
<LI class=sub><A href="http://www.netcobol.com/"><FONT face=Verdana size=2>NetCOBOL - COBOL for .NET</FONT></A><FONT face=Verdana size=2> (Fujitsu) </FONT>
<LI class=sub><A href="http://www.microfocus.com/products/netexpress/"><FONT face=Verdana size=2>Net Express</FONT></A><FONT face=Verdana size=2> (Micro Focus) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Delphi </FONT>
<UL>
<LI class=sub><A href="http://borland.com/dotnet/"><FONT face=Verdana size=2>Borland Delphi and C++Builder Support for .NET</FONT></A><FONT face=Verdana size=2> (Borland) </FONT>
<LI class=sub><A href="http://sourceforge.net/projects/delphinet"><FONT face=Verdana size=2>Delphi.NET - interoperability tools</FONT></A><FONT face=Verdana size=2> (Marcus Schmidt) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Eiffel </FONT>
<UL>
<LI class=sub><A href="http://www.eiffel.com/"><FONT face=Verdana size=2>Eiffel for .NET</FONT></A><FONT face=Verdana size=2> (Interactive Software Engineering) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Forth </FONT>
<UL>
<LI class=sub><A href="http://www.dataman.ro/dforth/"><FONT face=Verdana size=2>Delta Forth .NET</FONT></A><FONT face=Verdana size=2> (Valer BOCAN) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Fortran </FONT>
<UL>
<LI class=sub><A href="http://www.lahey.com/dotnet.htm"><FONT face=Verdana size=2>Lahey/Fujitsu Fortran for .NET</FONT></A><FONT face=Verdana size=2> (Lahey Computer Systems, Inc.) </FONT>
<LI class=sub><A href="http://www.salfordsoftware.co.uk/compilers/ftn95/dotnet.shtml"><FONT face=Verdana size=2>FTN95 - Fortran for Microsoft .NET</FONT></A><FONT face=Verdana size=2> (Salford Software Ltd.) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Java </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vjsharp/"><FONT face=Verdana size=2>Visual J# .NET</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://weblog.ikvm.net/"><FONT face=Verdana size=2>IKVM.NET</FONT></A><FONT face=Verdana size=2> - Java VM for .NET </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>JavaScript </FONT></LI>
<UL>
<LI class=sub><A href="http://www.gotdotnet.com/team/jscript/"><FONT face=Verdana size=2>JScript .NET</FONT></A><FONT face=Verdana size=2> (GotDotNet) </FONT></LI>
<LI class=sub><A href="http://janet-js.sourceforge.net/"><FONT face=Verdana size=2>JANET</FONT></A><FONT face=Verdana size=2> - JavaScript-compatible language</FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>LOGO </FONT>
<UL>
<LI class=sub><A href="http://monologo.sourceforge.net/"><FONT face=Verdana size=2>MonoLOGO</FONT></A><FONT face=Verdana size=2> (Richard Hestilow) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Lua 
<UL>
<LI class=sub><A href="http://www.tecgraf.puc-rio.br/~rcerq/luadotnet/"><FONT face=Verdana size=2>Lua.NET: Integrating Lua with Rotor</FONT></A><FONT face=Verdana size=2> (PUC-RIO</FONT> </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Mercury </FONT>
<UL>
<LI class=sub><A href="http://www.cs.mu.oz.au/research/mercury/dotnet.html"><FONT face=Verdana size=2>Mercury on .NET</FONT></A></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Mondrian</FONT> 
<UL>
<LI class=sub><FONT face=Verdana size=2><A href="http://www.mondrian-script.org/"><FONT face=Verdana size=2>Mondrian and Haskell for .NET</FONT></A><FONT face=Verdana size=2> (Nigel Perry) </FONT></FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Oberon </FONT>
<UL>
<LI class=sub><A href="http://www.oberon.ethz.ch/oberon.net/"><FONT face=Verdana size=2>Active Oberon for .net</FONT></A><FONT face=Verdana size=2> (ETH Zuerich) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Perl </FONT>
<UL>
<LI class=sub><A href="http://aspn.activestate.com/ASPN/NET/"><FONT face=Verdana size=2>Perl for .NET, PerlNET</FONT></A><FONT face=Verdana size=2> (ActiveState SRL.) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Pascal </FONT>
<UL>
<LI class=sub><A href="http://www.fit.qut.edu.au/PLAS/ComponentPascal/"><FONT face=Verdana size=2>Component Pascal</FONT></A><FONT face=Verdana size=2> (QUT) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>PHP </FONT>
<UL>
<LI><A href="http://www.akbkhome.com/Projects/PHP_Sharp"><FONT face=Verdana size=2>PHP Sharp</FONT></A></LI></UL>
<LI><FONT face=Verdana size=2>Python </FONT>
<UL>
<LI><A href="http://home.attbi.com/~chetangadgil//DotNetWrapperForPython.htm"><FONT face=Verdana size=2>KOBRA</FONT></A><FONT face=Verdana size=2> </FONT>
<LI class=sub><A href="http://starship.python.net/crew/mhammond/dotnet/"><FONT face=Verdana size=2>Open Source Python for .NET</FONT></A><FONT face=Verdana size=2> (Mark Hammond) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Ruby </FONT>
<UL>
<LI><A href="http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/nrb.html"><FONT face=Verdana size=2>NetRuby</FONT></A></LI></UL>
<LI><FONT face=Verdana size=2>RPG </FONT>
<UL>
<LI><A href="http://msdn.microsoft.com/vstudio/partners/language/asna.asp"><FONT face=Verdana size=2>ASNA Visual RPG for .NET</FONT></A></LI></UL>
<LI><FONT face=Verdana size=2>Scheme </FONT>
<UL>
<LI class=sub><A href="http://rover.cs.nwu.edu/~scheme/"><FONT face=Verdana size=2>Scheme</FONT></A><FONT face=Verdana size=2> (Northwestern University) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Small&nbsp;Talk </FONT>
<UL>
<LI><A href="http://www.smallscript.org/"><FONT face=Verdana size=2>S#</FONT></A><FONT face=Verdana size=2>&nbsp;(SmallScript LLC)</FONT></LI></UL>
<LI><FONT face=Verdana size=2>SML (Standard Meta Language) </FONT>
<UL>
<LI class=sub><A href="http://www.cl.cam.ac.uk/Research/TSG/SMLNET/"><FONT face=Verdana size=2>SML.NET</FONT></A><FONT face=Verdana size=2> (MS Research, University of Cambridge) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Visual Basic </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vbasic/"><FONT face=Verdana size=2>VB.NET</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://www.go-mono.com/mbas.html"><FONT face=Verdana size=2>mbas</FONT></A><FONT face=Verdana size=2> (Mono/Ximian)</FONT></LI></UL></LI></UL>
<P class=sub><FONT face=Verdana size=2>I'll try to keep this updated when I run across a new language.&nbsp; If anyone knows of any others, let <A href="about:blankbrianlritchie@hotmail.com">me</A> know.</FONT>[via <A href="http://dotnetweblogs.com/britchie/">Brian Ritchie's Blog</A>]</P>
<DIV></DIV>]]></content:encoded>
 </rss:item>
 <rss:item xmlns:rss="http://purl.org/rss/1.0/" rdf:about="http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-05-16#303">
  <rss:title>&lt;a href=&quot;http://dotnetweblogs.com/britchie/posts/3920.aspx&quot;&gt;.NET Languages Everywhere&lt;/a&gt;</rss:title>
  <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2003-05-16T22:23:07Z</dc:date>
  <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">.NET Languages Everywhere More .NET languages are popping up everyday.  I&#39;ve put together one of the most extensive lists of languages and posted it here.  Its pulled from many sources including: .NET Languages (ASP.NET), Cetus, Language Vendors (MS GotDotNET), .NET Language Group (MS GotDotNET), Visual Studio Partners: Language Vendors (MS), Mono-list, Google, SourceForge.net Ada A# - port of Ada to .NET (Dr. Martin C. Carlisle) APL Dyalog.Net - Dyalog APL (Dyadic) AsmL Abstract State Machine Language (MS Research) Visual Basic VB.NET (MS) mbas (Mono/Ximian) C# C# (MS) mcs (Mono/Ximian) cscc (DotGNU Portable.NET) Caml F# (ML and Caml), Abstract IL, ILX (MS Research) C++ Managed Extensions for C++ (MS) Managed and Unmanaged C++ (GotDotNet) Cobol NetCOBOL - COBOL for .NET (Fujitsu) Net Express (Micro Focus) Delphi Borland Delphi and C++Builder Support for .NET (Borland) Delphi.NET - interoperability tools (Marcus Schmidt) Eiffel Eiffel for .NET (Interactive Software Engineering) Forth Delta Forth .NET (Valer BOCAN) Fortran Lahey/Fujitsu Fortran for .NET (Lahey Computer Systems, Inc.) FTN95 - Fortran for Microsoft .NET (Salford Software Ltd.) Java Visual J# .NET (MS) IKVM.NET - Java VM for .NET JavaScript JScript .NET (GotDotNet) JANET - JavaScript-compatible language LOGO MonoLOGO (Richard Hestilow) Lua Lua.NET: Integrating Lua with Rotor (PUC-RIO Mercury Mercury on .NET Mondrian Mondrian and Haskell for .NET (Nigel Perry) Oberon Active Oberon for .net (ETH Zuerich) Perl Perl for .NET, PerlNET (ActiveState SRL.) Pascal Component Pascal (QUT) PHP PHP Sharp Python KOBRA Open Source Python for .NET (Mark Hammond) Ruby NetRuby RPG ASNA Visual RPG for .NET Scheme Scheme (Northwestern University) Small Talk S# (SmallScript LLC) SML (Standard Meta Language) SML.NET (MS Research, University of Cambridge) Visual Basic VB.NET (MS) mbas (Mono/Ximian) I&#39;ll try to keep this updated when I run across a new language.  If anyone knows of any others, let me know.[via Brian Ritchie&#39;s Blog]</dc:description>
  <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<A href="http://dotnetweblogs.com/britchie/posts/3920.aspx">.NET Languages Everywhere</A> 
<P>More .NET languages are popping up everyday.&nbsp; I've put together one of the most extensive lists of languages and posted it <A href="http://www12.brinkster.com/brianr/languages.aspx">here</A>.&nbsp;</P>
<P>Its pulled from many sources including: <A href="http://www.asp.net/Default.aspx?tabindex=8&amp;tabid=40"><FONT face=Verdana size=2>.NET Languages</FONT></A><FONT face=Verdana size=2>&nbsp;(ASP.NET), </FONT><A href="http://www.cetus-links.org/oo_dotnet.html#oo_dotnet_netlang"><FONT face=Verdana size=2>Cetus</FONT></A>, <A href="http://www.gotdotnet.com/community/resources/Default.aspx?ResourceTypeDropDownList=Language+vendors"><FONT face=Verdana size=2>Language Vendors</FONT></A><FONT face=Verdana size=2> (MS GotDotNET), </FONT><A href="http://www.gotdotnet.com/team/lang/"><FONT face=Verdana size=2>.NET Language Group</FONT></A><FONT face=Verdana size=2> (MS GotDotNET), </FONT><A href="http://msdn.microsoft.com/vstudio/partners/language/default.asp"><FONT face=Verdana size=2>Visual Studio Partners: Language Vendors</FONT></A><FONT face=Verdana size=2> (MS), </FONT><FONT face=Verdana size=2><A href="http://www.go-mono.com/mailing-lists.html">Mono-list</A>, </FONT><FONT face=Verdana size=2><A href="http://www.google.com/">Google</A>, </FONT><FONT face=Verdana size=2><A href="http://sourceforge.net/">SourceForge.net</A></FONT></P>
<UL>
<LI><FONT face=Verdana size=2>Ada </FONT>
<UL>
<LI class=sub><A href="http://www.usafa.af.mil/dfcs/bios/mcc_html/a_sharp.html"><FONT face=Verdana size=2>A# - port of Ada to .NET</FONT></A><FONT face=Verdana size=2> (Dr. Martin C. Carlisle) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>APL </FONT>
<UL>
<LI class=sub><A href="http://www.dyadic.com/"><FONT face=Verdana size=2>Dyalog.Net - Dyalog APL</FONT></A><FONT face=Verdana size=2> (Dyadic) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>AsmL </FONT>
<UL>
<LI><A href="http://research.microsoft.com/fse/asml/"><FONT face=Verdana size=2>Abstract State Machine Language</FONT></A><FONT face=Verdana size=2> (MS Research)</FONT></LI></UL>
<LI><FONT face=Verdana size=2>Visual Basic </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vbasic/"><FONT face=Verdana size=2>VB.NET</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://www.go-mono.com/mbas.html"><FONT face=Verdana size=2>mbas</FONT></A><FONT face=Verdana size=2> (Mono/Ximian) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>C# </FONT>
<UL>
<LI><A href="http://msdn.microsoft.com/vcsharp/"><FONT face=Verdana size=2>C#</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI><A href="http://www.go-mono.com/c-sharp.html"><FONT face=Verdana size=2>mcs</FONT></A><FONT face=Verdana size=2> (Mono/Ximian)</FONT> 
<LI><FONT face=Verdana size=2><A href="http://www.southern-storm.com.au/portable_net.html">cscc</A> (DotGNU Portable.NET)</FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Caml </FONT>
<UL>
<LI class=sub><A href="http://research.microsoft.com/projects/ilx/fsharp.htm"><FONT face=Verdana size=2>F# (ML and Caml), Abstract IL, ILX</FONT></A><FONT face=Verdana size=2> (MS Research) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>C++ </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vstudio/techinfo/articles/upgrade/managedext.asp"><FONT face=Verdana size=2>Managed Extensions for C++</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://www.gotdotnet.com/team/cplusplus/"><FONT face=Verdana size=2>Managed and Unmanaged C++</FONT></A><FONT face=Verdana size=2> (GotDotNet) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Cobol </FONT>
<UL>
<LI class=sub><A href="http://www.netcobol.com/"><FONT face=Verdana size=2>NetCOBOL - COBOL for .NET</FONT></A><FONT face=Verdana size=2> (Fujitsu) </FONT>
<LI class=sub><A href="http://www.microfocus.com/products/netexpress/"><FONT face=Verdana size=2>Net Express</FONT></A><FONT face=Verdana size=2> (Micro Focus) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Delphi </FONT>
<UL>
<LI class=sub><A href="http://borland.com/dotnet/"><FONT face=Verdana size=2>Borland Delphi and C++Builder Support for .NET</FONT></A><FONT face=Verdana size=2> (Borland) </FONT>
<LI class=sub><A href="http://sourceforge.net/projects/delphinet"><FONT face=Verdana size=2>Delphi.NET - interoperability tools</FONT></A><FONT face=Verdana size=2> (Marcus Schmidt) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Eiffel </FONT>
<UL>
<LI class=sub><A href="http://www.eiffel.com/"><FONT face=Verdana size=2>Eiffel for .NET</FONT></A><FONT face=Verdana size=2> (Interactive Software Engineering) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Forth </FONT>
<UL>
<LI class=sub><A href="http://www.dataman.ro/dforth/"><FONT face=Verdana size=2>Delta Forth .NET</FONT></A><FONT face=Verdana size=2> (Valer BOCAN) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Fortran </FONT>
<UL>
<LI class=sub><A href="http://www.lahey.com/dotnet.htm"><FONT face=Verdana size=2>Lahey/Fujitsu Fortran for .NET</FONT></A><FONT face=Verdana size=2> (Lahey Computer Systems, Inc.) </FONT>
<LI class=sub><A href="http://www.salfordsoftware.co.uk/compilers/ftn95/dotnet.shtml"><FONT face=Verdana size=2>FTN95 - Fortran for Microsoft .NET</FONT></A><FONT face=Verdana size=2> (Salford Software Ltd.) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Java </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vjsharp/"><FONT face=Verdana size=2>Visual J# .NET</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://weblog.ikvm.net/"><FONT face=Verdana size=2>IKVM.NET</FONT></A><FONT face=Verdana size=2> - Java VM for .NET </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>JavaScript </FONT></LI>
<UL>
<LI class=sub><A href="http://www.gotdotnet.com/team/jscript/"><FONT face=Verdana size=2>JScript .NET</FONT></A><FONT face=Verdana size=2> (GotDotNet) </FONT></LI>
<LI class=sub><A href="http://janet-js.sourceforge.net/"><FONT face=Verdana size=2>JANET</FONT></A><FONT face=Verdana size=2> - JavaScript-compatible language</FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>LOGO </FONT>
<UL>
<LI class=sub><A href="http://monologo.sourceforge.net/"><FONT face=Verdana size=2>MonoLOGO</FONT></A><FONT face=Verdana size=2> (Richard Hestilow) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Lua 
<UL>
<LI class=sub><A href="http://www.tecgraf.puc-rio.br/~rcerq/luadotnet/"><FONT face=Verdana size=2>Lua.NET: Integrating Lua with Rotor</FONT></A><FONT face=Verdana size=2> (PUC-RIO</FONT> </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Mercury </FONT>
<UL>
<LI class=sub><A href="http://www.cs.mu.oz.au/research/mercury/dotnet.html"><FONT face=Verdana size=2>Mercury on .NET</FONT></A></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Mondrian</FONT> 
<UL>
<LI class=sub><FONT face=Verdana size=2><A href="http://www.mondrian-script.org/"><FONT face=Verdana size=2>Mondrian and Haskell for .NET</FONT></A><FONT face=Verdana size=2> (Nigel Perry) </FONT></FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Oberon </FONT>
<UL>
<LI class=sub><A href="http://www.oberon.ethz.ch/oberon.net/"><FONT face=Verdana size=2>Active Oberon for .net</FONT></A><FONT face=Verdana size=2> (ETH Zuerich) </FONT></LI></UL>
<LI class=sub><FONT face=Verdana size=2>Perl </FONT>
<UL>
<LI class=sub><A href="http://aspn.activestate.com/ASPN/NET/"><FONT face=Verdana size=2>Perl for .NET, PerlNET</FONT></A><FONT face=Verdana size=2> (ActiveState SRL.) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Pascal </FONT>
<UL>
<LI class=sub><A href="http://www.fit.qut.edu.au/PLAS/ComponentPascal/"><FONT face=Verdana size=2>Component Pascal</FONT></A><FONT face=Verdana size=2> (QUT) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>PHP </FONT>
<UL>
<LI><A href="http://www.akbkhome.com/Projects/PHP_Sharp"><FONT face=Verdana size=2>PHP Sharp</FONT></A></LI></UL>
<LI><FONT face=Verdana size=2>Python </FONT>
<UL>
<LI><A href="http://home.attbi.com/~chetangadgil//DotNetWrapperForPython.htm"><FONT face=Verdana size=2>KOBRA</FONT></A><FONT face=Verdana size=2> </FONT>
<LI class=sub><A href="http://starship.python.net/crew/mhammond/dotnet/"><FONT face=Verdana size=2>Open Source Python for .NET</FONT></A><FONT face=Verdana size=2> (Mark Hammond) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Ruby </FONT>
<UL>
<LI><A href="http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/nrb.html"><FONT face=Verdana size=2>NetRuby</FONT></A></LI></UL>
<LI><FONT face=Verdana size=2>RPG </FONT>
<UL>
<LI><A href="http://msdn.microsoft.com/vstudio/partners/language/asna.asp"><FONT face=Verdana size=2>ASNA Visual RPG for .NET</FONT></A></LI></UL>
<LI><FONT face=Verdana size=2>Scheme </FONT>
<UL>
<LI class=sub><A href="http://rover.cs.nwu.edu/~scheme/"><FONT face=Verdana size=2>Scheme</FONT></A><FONT face=Verdana size=2> (Northwestern University) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Small&nbsp;Talk </FONT>
<UL>
<LI><A href="http://www.smallscript.org/"><FONT face=Verdana size=2>S#</FONT></A><FONT face=Verdana size=2>&nbsp;(SmallScript LLC)</FONT></LI></UL>
<LI><FONT face=Verdana size=2>SML (Standard Meta Language) </FONT>
<UL>
<LI class=sub><A href="http://www.cl.cam.ac.uk/Research/TSG/SMLNET/"><FONT face=Verdana size=2>SML.NET</FONT></A><FONT face=Verdana size=2> (MS Research, University of Cambridge) </FONT></LI></UL>
<LI><FONT face=Verdana size=2>Visual Basic </FONT>
<UL>
<LI class=sub><A href="http://msdn.microsoft.com/vbasic/"><FONT face=Verdana size=2>VB.NET</FONT></A><FONT face=Verdana size=2> (MS) </FONT>
<LI class=sub><A href="http://www.go-mono.com/mbas.html"><FONT face=Verdana size=2>mbas</FONT></A><FONT face=Verdana size=2> (Mono/Ximian)</FONT></LI></UL></LI></UL>
<P class=sub><FONT face=Verdana size=2>I'll try to keep this updated when I run across a new language.&nbsp; If anyone knows of any others, let <A href="about:blankbrianlritchie@hotmail.com">me</A> know.</FONT>[via <A href="http://dotnetweblogs.com/britchie/">Brian Ritchie's Blog</A>]</P>
<DIV></DIV>]]></content:encoded>
 </rss:item>
</rdf:RDF>