http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/
Kingsley Idehen's Blog Data Space
I have seen the future and it's full of Linked Data! :-)
kidehen@openlinksw.com
kidehen@openlinksw.com
2024-03-29T06:17:14Z
Virtuoso Universal Server 08.03.3327
http://www.openlinksw.com:443/weblog/public/images/vbloglogo.gif
SPARQL Guide for the Perl Developer
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-25#1655
2011-01-25T16:05:17Z
2011-01-26T18:11:13-05:00
<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 "<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>" privileges to user "SPARQL" (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=( "default-graph" => "", "should-sponge" => "soft", "query" => $query, "debug" => "on", "timeout" => "", "format" => $format, "save" => "display", "fname" => "" ); @fragments=(); foreach $k (keys %params) { $fragment="$k=".CGI::escape($params{$k}); push(@fragments,$fragment); } $query=join("&", @fragments); $sparqlURL="${baseURL}?$query"; my $ua = LWP::UserAgent->new; $ua->agent("MyApp/0.1 "); my $req = HTTP::Request->new(GET => $sparqlURL); my $res = $ua->request($req); $str=$res->content; $csv = Text::CSV_XS->new(); foreach $line ( split(/^/, $str) ) { $csv->parse($line); @bits=$csv->fields(); push(@rows, [ @bits ] ); } return \@rows; } # Setting Data Source Name (DSN) $dsn="http://dbpedia.org/resource/DBpedia"; # 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="DEFINE get:soft \"replace\"\n # Generic (non Virtuoso specific SPARQL # Note: this will not add records to the # DBMS SELECT DISTINCT * FROM <$dsn> WHERE {?s ?p ?o}"; $data=sparqlQuery($query, "http://localhost:8890/sparql/", "text/csv"); print "Retrieved data:\n"; print Dumper($data); </pre> <h4>Output</h4> <pre> Retrieved data: $VAR1 = [ [ 's', 'p', 'o' ], [ 'http://dbpedia.org/resource/DBpedia', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'http://www.w3.org/2002/07/owl#Thing' ], [ 'http://dbpedia.org/resource/DBpedia', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'http://dbpedia.org/ontology/Work' ], [ 'http://dbpedia.org/resource/DBpedia', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'http://dbpedia.org/class/yago/Software106566077' ], ... </pre> <h3>Conclusion</h3> <p> CSV was chosen over XML (re. output format) since this is about a "no-brainer installation and utilization" 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's Generic HTTP URI</a>. </li> </ul>
SPARQL Guide for the Javascript Developer
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-21#1653
2011-01-21T19:59:49Z
2011-01-26T18:10:28-05:00
<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 "<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>" privileges to user "SPARQL" (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="application/json"; var params={ "default-graph": "", "should-sponge": "soft", "query": query, "debug": "on", "timeout": "", "format": format, "save": "display", "fname": "" }; var querypart=""; for(var k in params) { querypart+=k+"="+encodeURIComponent(params[k])+"&"; } var queryURL=baseURL + '?' + querypart; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET",queryURL,false); xmlhttp.send(); return JSON.parse(xmlhttp.responseText); } /* setting Data Source Name (DSN) */ var dsn="http://dbpedia.org/resource/DBpedia"; /* Virtuoso pragma "DEFINE get:soft "replace" 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="DEFINE get:soft \"replace\"\nSELECT DISTINCT * FROM <"+dsn+"> WHERE {?s ?p ?o}"; var data=sparqlQuery(query, "/sparql/"); </pre> <h4>Output</h4> <p> Place the snippet above into the <script/> 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 "no-brainer installation and utilization" 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's Generic HTTP URI</a>. </li> </ul>
SPARQL Guide for the PHP Developer
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-20#1652
2011-01-20T21:25:49Z
2011-01-25T10:36:58-05:00
<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 '^PHP26', 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 "<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>" privileges to user "SPARQL" (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 <?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="application/json") { $params=array( "default-graph" => "", "should-sponge" => "soft", "query" => $query, "debug" => "on", "timeout" => "", "format" => $format, "save" => "display", "fname" => "" ); $querypart="?"; foreach($params as $name => $value) { $querypart=$querypart . $name . '=' . urlencode($value) . "&"; } $sparqlURL=$baseURL . $querypart; return json_decode(file_get_contents($sparqlURL)); }; # Setting Data Source Name (DSN) $dsn="http://dbpedia.org/resource/DBpedia"; #Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET #using the IRI in FROM clause as Data Source URL $query="DEFINE get:soft \"replace\" SELECT DISTINCT * FROM <$dsn> WHERE {?s ?p ?o}"; $data=sparqlQuery($query, "http://localhost:8890/sparql/"); print "Retrieved data:\n" . json_encode($data); ?> </pre> <h4>Output</h4> <pre> Retrieved data: {"head": {"link":[],"vars":["s","p","o"]}, "results": {"distinct":false,"ordered":true, "bindings":[ {"s": {"type":"<a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1ca44a98">uri</a>","value":"http:\/\/dbpedia.org\/resource\/DBpedia"},"p": {"type":"uri","value":"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type"},"o": {"type":"uri","value":"http:\/\/www.w3.org\/2002\/07\/owl#Thing"}}, {"s": {"type":"uri","value":"http:\/\/dbpedia.org\/resource\/DBpedia"},"p": {"type":"uri","value":"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type"},"o": {"type":"uri","value":"http:\/\/dbpedia.org\/ontology\/Work"}}, {"s": {"type":"uri","value":"http:\/\/dbpedia.org\/resource\/DBpedia"},"p": {"type":"uri","value":"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type"},"o": {"type":"uri","value":"http:\/\/dbpedia.org\/class\/yago\/Software106566077"}}, ... </pre> <h3>Conclusion</h3> <p> JSON was chosen over XML (re. output format) since this is about a "no-brainer installation and utilization" 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's Generic HTTP URI</a>. </li> </ul>
SPARQL Guide for Python Developer
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-19#1651
2011-01-19T17:13:30Z
2011-01-25T10:35:46-05:00
<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 '^python26', 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 "<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>" privileges to user "SPARQL" (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="application/json"): params={ "default-graph": "", "should-sponge": "soft", "query": query, "debug": "on", "timeout": "", "format": format, "save": "display", "fname": "" } querypart=urllib.urlencode(params) response = urllib.urlopen(baseURL,querypart).read() return json.loads(response) # Setting Data Source Name (DSN) dsn="http://dbpedia.org/resource/DBpedia" # Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET # using the IRI in FROM clause as Data Source URL query="""DEFINE get:soft "replace" SELECT DISTINCT * FROM <%s> WHERE {?s ?p ?o}""" % dsn data=sparqlQuery(query, "http://localhost:8890/sparql/") print "Retrieved data:\n" + json.dumps(data, sort_keys=True, indent=4) # # End </pre> <h4>Output</h4> <pre> Retrieved data: { "head": { "link": [], "vars": [ "s", "p", "o" ] }, "results": { "bindings": [ { "o": { "type": "<a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1b1470b8">uri</a>", "value": "http://www.w3.org/2002/07/owl#Thing" }, "p": { "type": "uri", "value": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" }, "s": { "type": "uri", "value": "http://dbpedia.org/resource/DBpedia" } }, ... </pre> <h3>Conclusion</h3> <p> JSON was chosen over XML (re. output format) since this is about a "no-brainer installation and utilization" 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's Generic HTTP URI</a>. </li> </ul>
SPARQL for the Ruby Developer
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2011-01-18#1648
2011-01-18T19:48:34Z
2011-01-25T10:17:12.000002-05:00
<h3>What?</h3> <p>A simple guide usable by any <a class="auto-href" href="http://dbpedia.org/resource/Ruby_programming_language" id="link-id0x1bb88908">Ruby</a> developer seeking to exploit <a class="auto-href" href="http://dbpedia.org/resource/SPARQL" id="link-id0x1ae67500">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-id0x1bc61d88">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-id0x1cc11420">Semantic Web</a> and <a class="auto-href" href="http://dbpedia.org/resource/Linked_Data" id="link-id0x1b2e7780">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. Ruby. </p> <h4>Steps:</h4> <ol> <li> From your command line execute: aptitude search '^ruby', to verify Ruby 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 "<a href="http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri" id="link-id0x1c7630b8">SPARQL_SPONGE</a>" privileges to user "SPARQL" (this is basic control, more sophisticated WebID based ACLs are available for controlling SPARQL access).</li> </ol> <h4>Script:</h4> <pre> #!/usr/bin/env ruby # # Demonstrating use of a single query to populate a # Virtuoso Quad Store. # require 'net/http' require 'cgi' require 'csv' # # We opt for CSV based output since handling this format is straightforward in Ruby, by default. # HTTP <a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x1acee348">URL</a> is constructed accordingly with CSV as query results format in mind. def sparqlQuery(query, baseURL, format="text/csv") params={ "default-graph" => "", "should-sponge" => "soft", "query" => query, "debug" => "on", "timeout" => "", "format" => format, "save" => "display", "fname" => "" } querypart="" params.each { |k,v| querypart+="#{k}=#{CGI.escape(v)}&" } sparqlURL=baseURL+"?#{querypart}" response = Net::HTTP.get_response(<a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1d24dfd8">URI</a>.parse(sparqlURL)) return CSV::parse(response.body) end # Setting Data Source Name (DSN) dsn="http://dbpedia.org/resource/DBpedia" #Virtuoso pragmas for instructing SPARQL engine to perform an HTTP GET #using the IRI in FROM clause as Data Source URL query="DEFINE get:soft \"replace\" SELECT DISTINCT * FROM <#{dsn}> WHERE {?s ?p ?o} " #Assume use of local installation of Virtuoso #otherwise you can change URL to that of a public endpoint #for example DBpedia: http://dbpedia.org/sparql data=sparqlQuery(query, "http://localhost:8890/sparql/") puts "Got data:" p data # # End </pre><h4>Output</h4> <pre> Got data: [["s", "p", "o"], ["http://dbpedia.org/resource/DBpedia", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://www.w3.org/2002/07/owl#Thing"], ["http://dbpedia.org/resource/DBpedia", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://dbpedia.org/ontology/Work"], ["http://dbpedia.org/resource/DBpedia", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://dbpedia.org/class/yago/Software106566077"], ... </pre> <h3>Conclusion</h3> <p> <a href="http://en.wikipedia.org/wiki/Comma-separated_values" id="link-id0x1cac8420">CSV</a> was chosen over XML (re. output format) since this is about a "no-brainer installation and utilization" guide for a Ruby developer that already knows how to use Ruby 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.taxonconcept.org/how-to/ruby-code-examples/how-do-i-use-ruby-to-query-a-sparql-endpoint.html" id="link-id0x1aa83678">SPARQL and Ruby SPARQL Client Library Example</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's Generic HTTP URI</a>. </li> </ul>
Virtuoso Linked Data Deployment In 3 Simple Steps
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2010-10-29#1642
2010-10-29T22:54:32Z
2010-11-02T11:55:31.000005-04:00
<p>Injecting <a class="auto-href" href="http://dbpedia.org/resource/Linked_Data" id="link-id0x17012e18">Linked Data</a> into the <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> has been a major pain point for those who seek personal, service, or organization-specific variants of <a class="auto-href" href="http://dbpedia.org/resource/DBpedia" id="link-id0x196518a8">DBpedia</a>. Basically, the sequence goes something like this: </p> <ol> <li> You encounter DBpedia or the <a class="auto-href" href="http://community.linkeddata.org/dataspace/organization/lod#this" id="link-id0x1b26d008">LOD</a> Cloud Pictorial.</li> <li> You look around (typically following your nose from link to link). </li> <li> You attempt to publish your own stuff. </li> <li> You get stuck. </li> </ol> <p>The problems typically take the following form:</p> <ol> <li> Functionality confusion about the complementary Name and Address functionality of a single <a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0xa108a00">URI</a> abstraction </li> <li> Terminology confusion due to conflation and over-loading of terms such as Resource, <a class="auto-href" href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x1b3d08f8">URL</a>, Representation, Document, etc. </li> <li> Inability to find robust tools with which to generate Linked Data from existing <a href="http://dbpedia.org/resource/Data">data</a> sources such as relational databases, CSV files, XML, Web Services, etc. </li> </ol> <p>To start addressing these problems, here is a simple guide for generating and publishing Linked Data using <a class="auto-href" href="http://virtuoso.openlinksw.com" id="link-id0x1a7841e0">Virtuoso</a>.</p> <h3>Step 1 - RDF Data Generation</h3> <p>Existing RDF data can be added to the Virtuoso RDF Quad Store via a variety of built-in data loader utilities.</p> <p>Many options allow you to easily and quickly generate RDF data from other data sources:</p> <ul> <li> Install the Sponger Bookmarklet for the <a href="http://uriburner.com" id="link-id0x1aa50800">URIBurner service</a>. Bind this to your own <a class="auto-href" href="http://dbpedia.org/resource/SPARQL" id="link-id0x1a4255e0">SPARQL</a>-compliant backend RDF database (in this scenario, your local Virtuoso instance), and then Sponge some HTTP-accessible resources. </li> <li> Convert relational DBMS data to RDF using the Virtuoso RDF Views Wizard. </li> <li> Starting with CSV files, you can <ul> <li>Place them at an HTTP-accessible location, and use the Virtuoso <a class="auto-href" href="http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html" id="link-id0x16f7ba58">Sponger</a> to convert them to RDF or; </li> <li> Use the CVS import feature to import their content into Virtuoso's relational data engine; then use the built-in RDF Views Wizard as with other <a class="auto-href" href="http://dbpedia.org/resource/Relational_database_management_system" id="link-id0x1982ea80">RDBMS</a> data. </li> </ul> </li> <li> Starting from XML files, you can <ul> <li> Use Virtuoso's inbuilt XSLT-Processor for manual XML to RDF/XML transformation or;</li> <li>Leverage the Sponger Cartridge for <a class="auto-href" href="http://dbpedia.org/resource/GRDDL" id="link-id0x1b350968">GRDDL</a>, if there is a transformation service associated with your XML data source, or;</li> <li>Let the Sponger analyze the XML data source and make a best-effort transformation to RDF.</li> </ul> </li> </ul> <h3>Step 2 - Linked Data Deployment</h3> <p> Install the <a href="http://download.openlinksw.com/packages/6.2/virtuoso/fct_dav.vad" id="link-id0x19845ad0">Faceted Browser VAD package (<code>fct_dav.vad</code>)</a> which delivers the following:</p> <ol> <li> Faceted Browser Engine UI</li> <li> Dynamic Hypermedia Resource Generator <ul> <li>delivers descriptor resources for every <a class="auto-href" href="http://dbpedia.org/resource/Entity" id="link-id0x1b3a69f0">entity</a> (data object) in the Native or Virtual Quad Stores</li> <li>supports a broad array of output formats, including HTML+<a class="auto-href" href="http://dbpedia.org/resource/RDFa" id="link-id0x1a92d2f8">RDFa</a>, RDF/XML, N3/Turtle, NTriples, RDF-JSON, OData+Atom, and OData+JSON. </li> </ul> </li> </ol> <h3>Step 3 - Linked Data Consumption & Exploitation</h3> <p> Three simple steps allow you, your enterprise, and your customers to consume and exploit your newly deployed Linked Data -- </p> <ol> <li> Load a page like this in your browser: <code>http://<cname>[:<port>]/describe/?uri=<entity-uri></code> <ul> <li> <code><cname>[:<port>]</code> gets replaced by the host and port of your Virtuoso instance</li> <li> <code><entity-uri></code> gets replaced by the URI you want to see described -- for instance, the URI of one of the resources you let the Sponger handle. </li> </ul> </li> <li> Follow the links presented in the descriptor page. </li> <li>If you ever see a blank page with a hyperlink subject name in the About: section at the top of the page, simply add the parameter "&sp=1" to the URL in the browser's Address box, and hit [ENTER]. This will result in an "on the fly" resource retrieval, transformation, and descriptor page generation.</li> <li> Use the navigator controls to page up and down the data associated with the "in scope" resource descriptor. </li> </ol> <h3>Related</h3> <ul> <li> <a href="http://linkeddata.uriburner.com/describe/?url=http%3A%2F%2Flinkeddata.uriburner.com%2Fabout%2Fid%2Fentity%2Fhttp%2Fwww.amazon.com%2Fo%2FASIN%2F006251587X" id="link-id0x1a8aeaf8">Sample Descriptor Page</a> (what you see post completion of the steps in this post) </li> <li> <a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1639" id="link-id0x1af66f38">What is Linked Data, really?</a> </li> <li> <a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1613" id="link-id0x1acdbc58">Painless Linked Data Generation via URIBurner</a> </li> <li> <a href="http://www.openlinksw.com/dataspace/dav/wiki/Main/VirtRDFInsert" id="link-id0x1abe3b18">How To Load RDF Data Into Virtuoso</a> (various methods)</li> <li> <a href="http://www.openlinksw.com/dataspace/dav/wiki/Main/VirtBulkRDFLoader" id="link-id0x1a441ff0">Virtuoso Bulk Loader Script for RDF</a> </li> <li> <a href="http://www.openlinksw.com/dataspace/dav/wiki/Main/VirtCsvFileBulkLoader" id="link-id0x190382e8">Bulk Loader Script for CSV</a> </li> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtRdb2RDFViewsGeneration#OneClickLinkedDataGenerationAndDemployment" id="link-id0x1ac9c9c0">Wizard based generation of RDF based Linked Data from ODBC accessible Relational Databases </a> </li> </ul>
Solving Real Problems by Leveraging Linked Data: Unambiguous & Verifiable Identity for HTTP Networks
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2010-07-11#1625
2010-07-12T03:25:03Z
2010-07-12T07:22:02.000018-04:00
<h3>Problem: Unambiguous Verifiable Network Identity.</h3> <p>How Does <a href="http://dbpedia.org/resource/Linked_Data" id="link-id0x1b1ad1d0">Linked Data</a> Address This Problem? It provides critical infrastructure for the WebID Protocol that enables an innovative tweak of SSL/TLS. </p> <p>What about OpenID? The WebID Protocol embraces and extends OpenID (<strong><em>in an open and positive way</em></strong>) via the WebID + OpenID Hybrid variant of the protocol -- basic effect is that OpenID calls are re-routed to the WebID aspect which simply removes Username and Password Authentication from the authentication challenge interaction pattern.</p> <h3>WebID Components</h3> <ol> <li> X.509 Certificate and Private Key Generator </li> <li> Structured Profile Document (e.g. a <a href="http://dbpedia.org/resource/Friend_of_a_friend" id="link-id0x1a301338">FOAF</a> based Profile) published to an HTTP Network (e.g. <a href="http://dbpedia.org/resource/World_Wide_Web" id="link-id0x1ba50e10">World Wide Web</a>) and accessible at an Address (<a href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id0x12ded2e0">URL</a>) </li> <li> An Agent Identifier aka. WebID (an HTTP Name Reference re. <a href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id0x1b197378">URI</a> variant) that's the Subject of a Structured Profile Document (actually a Descriptor Resource)</li> <li> Mechanism for persisting Public Key data from X.509 Certificate to Structured Profile Document and associating it with Subject WebID (e.g. SPARUL or other HTTP based methods) </li> <li> Mechanism for de-referencing Public Key data associated with a WebID (from its Structured Profile Document) for comparison against Public Key data following successful standard SSL/TLS protocol handshake (e.g. via <a href="http://dbpedia.org/resource/SPARQL" id="link-id0x16d26ec8">SPARQL</a> Query). </li> </ol> <h3>Demo</h3> <ul> <li> <a href="http://www.youtube.com/watch?v=mjgXsjd8PDE" id="link-id0x1b9cc4d8">WebID + OpenID Hybrid Protocol Demo using ODS, Stackoverflow.com, and identi.ca.</a> - YouTube Screencast Demo Part 1 using Firefox</li> <li> <a href="http://www.youtube.com/watch?v=eXoxUo7Py4M " id="link-id0x1a2db140">WebID + OpenID Hybrid Protocol Demo using ODS, Stackoverflow.com, and identi.ca.</a> - YouTube Screencast Demo Part 2 using Safari </li> </ul> <h3>Related</h3> <ul> <li> <a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=webid&type=text&output=html" id="link-id0x1bc37a58">Prior Posts about WebIDs</a> </li> <li> <a href="http://payswarm.com/webid/drafts/ED-webid-20100711/" id="link-id0x1a0eecb8">Draft WebID Spec</a> </li> </ul>
Linked Data & Socially Enhanced Collaboration (Enterprise or Individual) -- Update 1
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2010-03-02#1610
2010-03-02T20:47:54Z
2010-03-03T19:50:37-05:00
<p>Socially enhanced enterprise and invididual collaboration is becoming a focal point for a variety of solutions that offer erswhile distinct content managment features across the realms of Blogging, Wikis, Shared Bookmarks, Discussion Forums etc.. as part of an integrated platform suite. Recently, <a href="http://www.socialtext.com/" id="link-id112be850">Socialtext</a> has caught my attention courtesy of its nice <a href="http://www.socialtext.com/products/socialnetworking.php" id="link-id145d9850">features and benefits page</a> . In addition, I've also found the <a href="http://mike2.openmethodology.org/" id="link-id14103cc8">Mike 2.0 portal</a> immensely interesting and valuable, for those with an enterprise collaboration bent.</p> <p>Anyway, Socialtext and Mike 2.0 (they aren't identical and juxtaposition isn't seeking to imply this) provide nice demonstrations of socially enhanced collaboration for individuals and/or enterprises is all about:</p> <ol> <li>Identifying Yourself</li> <li>Identifying Others (key contributors, peers, collaborators)</li> <li>Serendipitous Discovery of key contributors, peers, and collaborators</li> <li>Serendipitous Discovery by key contributors, peers, and collaborators</li> <li>Develop and sustain relationships via socially enhanced professional network hybrid</li> <li>Utilize your new "trusted network" (which you've personally indexed) when seeking help or propagating a <a href="http://dbpedia.org/resource/Meme" id="link-id13ad00d0">meme</a>.</li> </ol> <p>As is typically the case in this emerging realm, the critical issue of discrete "identifiers" (record keys in sense) for <a href="http://dbpedia.org/resource/Data">data</a> items, data containers, and data creators (individuals and groups) is overlooked albeit unintentionally. </p> <h3>How HTTP based <a href="http://dbpedia.org/resource/Linked_Data" id="link-id112e1ba8">Linked Data</a> Addresses the Identifier Issue</h3> <p>Rather than using platform constrained identifiers such as: </p> <ul> <li>email address (a "mailto" scheme identifier), </li> <li>a dbms user account, </li> <li>application specific account, or</li> <li>OpenID.</li> </ul> <p>It enables you to leverage the platform independence of HTTP scheme Identifiers (Generic URIs) such that Identifiers for: </p> <ol> <li>You, </li> <li>Your Peers, </li> <li>Your Groups, and </li> <li>Your Activity Generated Data, </li> </ol> <p>simply become conduits into a mesh of <a href="http://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/images/My_Data_Spaces.png" id="link-id13fe1168">HTTP -- referencable and accessible -- Linked Data Objects</a> endowed with High SDQ (Serendipitious Discovery Quotient). For example my <a href="http://kingsley.idehen.name/dataspace/person/kidehen#this" id="link-id13bdcc80">Personal WebID </a>is all anyone needs to know if they want to explore:</p> <ol> <li>My Profile (which includes references to data objects associated with my interests, social-network, calendar, bookmarks etc.)</li> <li>Data generated by my activities across various data spaces (via data objects associated with my online accounts e.g. <a href="http://linkeddata.uriburner.com/about/id/entity/http/feeds.delicious.com/v2/rss/kidehen?count=15" id="link-id141cce38">Del.icio.us</a>, <a href="http://linkeddata.uriburner.com/about/id/entity/http/twitter.com/kidehen" id="link-id11802ce8">Twitter</a>, <a href="http://linkeddata.uriburner.com/about/id/entity/http/www.last.fm/user/kidehen" id="link-id118bf470">Last.FM</a>)</li> <li> <a href="http://uriburner.com/fct/rdfdesc/usage.vsp?g=http%3A%2F%2Fkingsley.idehen.name%2Fdataspace%2Fperson%2Fkidehen%23this&tp=4" id="link-id13c0f528">Linked Data Meshups via URIBurner</a> (or any other <a href="http://virtuoso.openlinksw.com" id="link-id11334f00">Virtuoso</a> instance) that provide an extend view of my profile</li> </ol> <h3>How <a href="http://dbpedia.org/resource/Friend_of_a_friend" id="link-id14324eb0">FOAF</a>+SSL adds Socially aware Security </h3> <p>Even when you reach a point of equilibrium where: your daily activities trigger orchestratestration of CRUD (Create, Read, Update, Delete) operations against Linked Data Objects within your socially enhanced collaboration network, you still have to deal with the thorny issues of security, that includes the following: </p> <ol> <li>Single Sign On, </li> <li>Authentication, and </li> <li>Data Access Policies.</li> </ol> <p>FOAF+SSL, an application of HTTP based Linked Data, enables you to enhance your Personal HTTP scheme based Identifer (or WebID) via the following steps (peformed by a FOAF+SSL compliant platform):</p> <ol> <li>Imprint WebID within a self-signed x.509 based public key (certificate) associated with your private key (generated by FOAF+SSL platform or manually via OpenSSL)</li> <li>Store public key components (modulous and exponent) into your FOAF based profile document which references your Personal HTTP Identifier as its primary topic</li> <li>Leverage HTTP <a href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id141f8b30">URL</a> component of WebID for making public key components (modulous and exponent) available for x.509 certificate based authentication challenges posed by systems secured by FOAF+SSL (directly) or OpenID (indirectly via FOAF+SSL to OpenID proxy services).</li> </ol> <p>Contrary to conventional experiences with all things PKI (Public Key Infrastructure) related, FOAF+SSL compliant platforms typically handle the PKI issues as part of the protocol implementation; thereby protecting you from any administrative tedium without compromising security.</p> <h3>Conclusions</h3> <p>Understanding how new technology innovations address long standing problems, or understanding how new solutions inadvertently fail to address old problems, provides time tested mechanisms for product selection and value proposition comprehension that ultimately save scarce resources such as time and money. </p> <p>If you want to understand real world problem solution #1 with regards to HTTP based Linked Data look no further than the issues of secure, socially aware, and platform independent identifiers for data objects, that build bridges across erstwhile data silos.</p> <p>If you want to cost-effectively experience what I've outlined in this post, take a look at <a href="http://ods.openlinksw.com/wiki/ODS/" id="link-id13c21220">OpenLink Data Spaces</a> (<a href="http://ods.openlinksw.com/wiki/ODS/" id="link-id1422cdd8">ODS</a>) which is a distributed collaboration engine (enterprise of individual) built around the <a href="http://virtuoso.openlinksw.com" id="link-id14211c98">Virtuoso</a> database engines. It simply enhances existing collaboration tools via the following capabilities:</p> <p>Addition of Social Dimensions via HTTP based <a href="http://dbpedia.org/resource/Identity_(object-oriented_programming)" id="link-id116ecd88">Data Object Identifiers</a> for all Data Items (if missing)</p> <ol> <li>Ability to integrate across a myriad of Data Source Types rather than a select few across RDBM Engines, LDAP, <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> Services, and various HTTP accessible Resources (Hypermedia or Non Hypermedia content types)</li> <li>Addition of FOAF+SSL based authentication</li> <li>Addition of FOAF+SSL based Access Control Lists (ACLs) for policy based data access.</li> </ol> <h3>Related:</h3> <ul> <li> <a href="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/GetAPersonalURIIn5MinutesOrLess" id="link-id117b2610">Get Yourself A WebID in 5 Minutes or Less</a> via OpenLink Data Spaces (an application layer built atop Virtuoso)</li> <li> <a href="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/ODSBriefcaseFOAFSSL" id="link-id140311a0">How To Share Resources Securely Using FOAF+SSL</a> </li> <li> <a href="http://www.youtube.com/watch?v=CRbdeNMPCug" id="link-id11ad5448">FOAF+SSL & WebID Demonstration</a> </li> <li> <a href="http://www.slideshare.net/kidehen/linked-data-spaces-data-portability-access" id="link-id141f43a8">OpenLink Data Spaces & Data Portability</a>.</li> </ul>
Re-introducing the Virtuoso Virtual Database Engine
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2010-02-17#1608
2010-02-17T21:38:01Z
2010-02-17T16:46:53-05:00
<p>In recent times a lot of the commentary and focus re. <a href="http://virtuoso.openlinksw.com" id="link-id16a22f48">Virtuoso</a> has centered on the RDF Quad Store and <a href="http://dbpedia.org/resource/Linked_Data" id="link-id112d82a0">Linked Data</a>. What sometimes gets overlooked is the sophisticated <a href="http://dbpedia.org/resource/Virtual_Database" id="link-id6493cc8">Virtual Database</a> Engine that provides the foundation for all of Virtuoso's <a href="http://dbpedia.org/resource/Data">data</a> integration capabilities.</p> <p>In this post I provide a brief re-introduction to this essential aspect of Virtuoso.</p> <h3>What is it?</h3> <p>This component of Virtuoso is known as the Virtual Database Engine (VDBMS). It provides transparent high-performance and secure access to disparate data sources that are external to Virtuoso. It enables federated access and integration of data hosted by any <a href="http://dbpedia.org/resource/Open_Database_Connectivity" id="link-id13c26008">ODBC</a>- or <a href="http://dbpedia.org/resource/Java_Database_Connectivity" id="link-id166604c0">JDBC</a>-accessible <a href="http://dbpedia.org/resource/Relational_database_management_system" id="link-id139dfdb8">RDBMS</a>, RDF Store, XML database, or Document (Free Text)-oriented Content Management System. In addition, it facilitates integration with <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> Services (SOAP-based SOA RPCs or REST-fully accessible Web Resources). </p> <h3>Why is it important?</h3> <p>In the most basic sense, you shouldn't need to upgrade your existing database engine version simply because your current DBMS and Data Access Driver combo isn't compatible with ODBC-compliant desktop tools such as Microsoft Access, Crystal Reports, BusinessObjects, Impromptu, or other of ODBC, JDBC, <a href="http://dbpedia.org/resource/ADO.NET" id="link-id13c7ceb8">ADO</a>.NET, or OLE DB-compliant applications. Simply place Virtuoso in front of your so-called "legacy database," and let it deliver the compliance levels sought by these tools</p> <p>In addition, it's important to note that today's enterprise, through application evolution, company mergers, or acquisitions, is often faced with disparately-structured data residing in any number of line-of-business-oriented data silos. Compounding the problem is the exponential growth of user-generated data via new social media-oriented collaboration tools and platforms. For companies to cost-effectively harness the opportunities accorded by the increasing intersection between line-of-business applications and social media, virtualization of data silos must be achieved, and this virtualization must be delivered in a manner that doesn't prohibitively compromise performance or completely undermine security at either the enterprise or personal level. Again, this is what you get by simply installing Virtuoso.</p> <h3>How do I use it?</h3> <p>The VDBMS may be used in a variety of ways, depending on the data access and integration task at hand. Examples include: </p> <h4>Relational Database Federation</h4> <p>You can make a single ODBC, JDBC, ADO.NET, OLE DB, or XMLA connection to multiple ODBC- or JDBC-accessible RDBMS data sources, concurrently, with the ability to perform intelligent distributed joins against externally-hosted database tables. For instance, you can join internal human resources data against internal sales and external stock market data, even when the HR team uses <a href="http://dbpedia.org/resource/Oracle_Database" id="link-id16706720">Oracle</a>, the Sales team uses <a href="http://dbpedia.org/resource/IBM_Informix" id="link-ide5a15c8">Informix</a>, and the Stock Market figures come from <a href="http://dbpedia.org/resource/Ingres" id="link-id13c0e138">Ingres</a>!</p> <h4>Conceptual Level Data Access using the RDF Model</h4> <p>You can construct RDF Model-based Conceptual Views atop Relational Data Sources. This is about generating HTTP-based <a href="http://dbpedia.org/resource/Entity-attribute-value_model" id="link-id115150f8">Entity</a>-Attribute-Value (E-A-V) graphs using data culled "on the fly" from native or external data sources (Relational Tables/Views, XML-based Web Services, or User Defined Types).</p> <p>You can also derive RDF Model-based Conceptual Views from Web Resource transformations "on the fly" -- the Virtuoso <a href="http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html" id="link-id1675db50">Sponger</a> (RDFizing middleware component) enables you to generate RDF Model Linked Data via a RESTful Web Service or within the process pipeline of the <a href="http://dbpedia.org/resource/SPARQL" id="link-id166b8d90">SPARQL</a> query engine (i.e., you simply use the <a href="http://dbpedia.org/resource/Uniform_Resource_Locator" id="link-id167d00c8">URL</a> of a Web Resource in the FROM clause of a SPARQL query).</p> <p>It's important to note that Views take the form of HTTP links that serve as both Data Source Names and Data Source Addresses. This enables you to query and explore relationships across entities (i.e., People, Places, and other Real World Things) via HTTP clients (e.g., Web Browsers) or directly via SPARQL Query Language constructs transmitted over HTTP.</p> <h4>Conceptual Level Data Access using ADO.NET <a href="http://dbpedia.org/resource/Entity" id="link-id13c6bb60">Entity</a> <a href="http://dbpedia.org/resource/ADO.NET_Entity_Framework" id="link-id16ad3f68">Frameworks</a> </h4> <p>As an alternative to RDF, Virtuoso can expose ADO.NET Entity Frameworks-based Conceptual Views over Relational Data Sources. It achieves this by generating Entity Relationship graphs via its native ADO.NET Provider, exposing all externally attached ODBC- and JDBC-accessible data sources. In addition, the ADO.NET Provider supports direct access to Virtuoso's native RDF database engine, eliminating the need for resource intensive Entity Frameworks model transformations.</p> <h3>Related</h3> <ul> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtLinkRemoteTables" id="link-id1183acd8">Attaching ODBC or JDBC accessible Relational Tables to Virtuoso</a> </li> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtRdb2RDFViewsGeneration#One-Click%20Linked%20Data%20Generation%20&%20Deployment" id="link-id113f2fd8">Using an HTML based Wizard to Generate RDF based Linked Views over Relational Tables</a> </li> <li> <a href="http://www.youtube.com/watch?v=bj7AbJ0ZYCk&feature=channel" id="link-id16ad4480">Screencast Demonstrating Wizard based generation of RDF based Linked Data Views Part 1</a> </li> <li> <a href="http://www.youtube.com/watch?v=yXNlcISS0aY&feature=channel" id="link-id114eb720">Screencast Demonstrating Wizard based generation of RDF based Linked Data Views Part 1</a> </li> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSponger" id="link-id116e5810">Generating RDF based Linked Data from non RDF based Web Resources via the Sponger</a> </li> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtAdoNet35Provider" id="link-id16706118">Building ADO.NET based Entity Frameworks Views over Relational Data</a> </li> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSilverlightSPARQLExample" id="link-id139c1278">Building Silverlight Rich Internat Applicaitons using ADO.NET, Entity Frameworks, and RDF based Linked Data</a>.</li> </ul>
Virtuoso Chronicles from the Field: Nepomuk, KDE, and the quest for a sophisticated RDF DBMS.
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2010-01-28#1602
2010-01-28T16:14:04Z
2010-02-01T09:02:55-05:00
<p>For this particular user experience chronicle, I've simply inserted the content of <a href="http://trueg.wordpress.com" id="link-id1368b4d8">Sebastian Trueg</a>'s post titled: <a href="http://trueg.wordpress.com/2010/01/26/what-we-did-last-summer-and-the-rest-of-2009-a-look-back-onto-the-nepomuk-development-year-with-an-obscenely-long-title/#comments" id="link-id139dddb0">What We Did Last Summer (And the Rest of 2009) â A Look Back Onto the Nepomuk Development Year ...</a>, directly into this post, without any additional commentary or modification.</p> <div class="snap_preview"> <p>2009 is over. <em>Yeah, sure, trueg, we know that, it has been over for a while now!</em> Ok, ok, I am a bit late, but still I would like to get this one out - if only for my archive. So here goes.</p> <h2> <a href="http://virtuoso.openlinksw.com" id="link-id64672f0">Virtuoso</a> </h2> <p>Letâs start with the major topic of 2009 (and also the beginning of 2010): The new Nepomuk database backend: <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/" id="link-id13cc47e0">Virtuoso</a>. Everybody who used Nepomuk had the same problems: you either used the <a href="http://openrdf.org/" id="link-id13a4ac88">sesame2</a> backend which depends on Java and steals all of your memory or you were stuck with <a href="http://librdf.org/" id="link-id11b6a550">Redland</a> which had the worst performance and missed some <a href="http://dbpedia.org/resource/SPARQL" id="link-id139d82b8">SPARQL</a> features making important parts of Nepomuk like queries unusable. So more than a year ago I had the idea to use the one GPLâed database server out there that supported RDF in a professional manner: <a href="http://www.openlinksw.com/" id="link-id139fd948">OpenLin</a>kâs <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/" id="link-id12329590">Virtuoso</a>. It has all the features we need, has a very good performance, and scales up to dimensions we will probably never reach on the desktop (<em>yeah, right, and 64k main memory will be enough forever!</em>). So very early I started coding the necessary Soprano plugin which would talk to a locally running Virtuoso server through <a href="http://en.wikipedia.org/wiki/Open_Database_Connectivity" id="link-id14930d90">ODBC</a>. But since I ran into tons of small problems (as always) and got sidetracked by other tasks I did not finish it right away. OpenLink, however, was very interested in the idea of their server being part of every KDE installation (why wouldnât they ;)). So they not only introduced a <a href="http://docs.openlinksw.com/virtuoso/databaseadmsrv.html#ini_Parameters" id="link-id136763c0">lite-mode</a> which makes Virtuoso suitable for the desktop but also helped in debugging all the problems that I had left. Many test runs, patches, and a Virtuoso 5.0.12 release later <a href="http://trueg.wordpress.com/2009/10/22/virtuoso-once-more-with-feeling/" id="link-id13c5a5a0">I could finally announce the Virtuoso integration</a> as usable.</p> <p>Then end of last year I dropped the support for sesame2 and redland. Virtuoso is now the only supported database backend. The reason is simple: Virtuoso is way more powerful than the rest - not only in terms of performance - and it is fully implemented in <a href="http://dbpedia.org/resource/C%2B%2B" id="link-id13a17cd8">C</a>(++) without any traces of Java. Maybe even more important is the integration of the full text index which makes the previously used CLucene index unnecessary. Thus, we can finally combine full text and graph queries in one SPARQL query. This results in a cleaner API and way faster return of search results since there is no need to combine the results from several queries anymore. A direct result of that is the new <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/namespaceNepomuk_1_1Query.html" id="link-id149a9fd8">Nepomuk Query API</a> which I will discuss later.</p> <p>So now the only thing I am waiting for is the first bugfix release of Virtuoso 6, i.e. 6.0.1 which will fix the bugs that make 6.0.0 fail with Nepomuk. Should be out any day now. :)</p> <h2>The Nepomuk Query API</h2> <p>Querying <a href="http://dbpedia.org/resource/Data">data</a> in Nepomuk pre-KDE-4.4 could be done in one of two ways: 1. Use the very limited capabilities of the <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1ResourceManager.html" id="link-id139ad3d0">ResourceManager</a> to list resources with certain properties or of a certain type; or 2. Write your own <a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/AdvancedQueries" id="link-id13c74608">SPARQL query using ugly QString::arg replacements</a>.</p> <p>With the introduction of Virtuoso and its awesome power we can now do pretty much everything in one query. This allowed <a href="http://myopenlink.net/dataspace/person/kidehen#this" id="link-id13c4cf18">me</a> to finally create a query API for KDE: <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Query_1_1Query.html" id="link-id602e818">Nepomuk::Query::Query</a> and friends. I wonât go into much detail here since I did that <a href="http://trueg.wordpress.com/2009/12/07/convenient-querying-in-libnepomuk/" id="link-id11282ff8">before</a>.</p> <p>All in all you should remember one thing: whenever you think about writing your own SPARQL query in a KDE application - have a look at libnepomukquery. It is very likely that you can avoid the hassle of debugging a query by using the query API.</p> <p>The first nice effect of the new API (apart from me using it all over the place obviously) is the new query interface in Dolphin. Internally it simply combines a bunch of <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Query_1_1Term.html" id="link-id11952270">Nepomuk::Query::Term</a> objects into a <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Query_1_1AndTerm.html" id="link-id13aa85b8">Nepomuk::Query::AndTerm</a>. All very readable and no ugly query strings.</p> <div id="attachment_234" class="wp-caption aligncenter" style="width: 610px"> <a href="http://trueg.files.wordpress.com/2010/01/dolphin-kde-4-4-search-panel.png" id="link-id11454028"><img class="size-full wp-image-234" title="Dolphin Search Panel in KDE SC 4.4" src="http://trueg.files.wordpress.com/2010/01/dolphin-kde-4-4-search-panel.png?w=600&h=208" alt="" width="600" height="208" /> </a> <p class="wp-caption-text">Dolphin Search Panel in KDE SC 4.4</p> </div> <h2>Shared Desktop Ontologies</h2> <p>An important part of the <a href="http://nepomuk.semanticdesktop.org/" id="link-id13a35a90">Nepomuk research project</a> was the creation of a set of <a href="http://www.semanticdesktop.org/ontologies/" id="link-id123a6700">ontologies</a> for describing desktop resources and their metadata. After the <a href="http://xesam.org/main/XesamAbout" id="link-id13c70ab8">Xesam</a> project under the umbrella of <a href="http://www.freedesktop.org/" id="link-id139e2108">freedesktop.org</a> had been convinced to use RDF for describing file metadata they developed their own ontology. Thanks to Evgeny (phreedom) Egorochkin and Antonie Mylka both the Xesam ontology and the Nepomuk <a href="http://dbpedia.org/resource/Information" id="link-id119be318">Information</a> Elements Ontology were already very close in design. Thus, it was relatively easy to merge the two and be left with only one ontology to support. Since then not only KDE but also <a href="http://strigi.sourceforge.net/" id="link-id123b63f0">Strigi</a> and <a href="http://projects.gnome.org/tracker/" id="link-id13d02a30">Tracker</a> are using the Nepomuk ontologies.</p> <p>At the Gran Canaria Desktop Summit I met some of the guys from Tracker and we tried to come up with a plan to create a joint project to maintain the ontologies. This got off to a rough start as nobody really felt responsible. So I simply took the initiative and released the <a href="http://sourceforge.net/projects/oscaf/files/" id="link-id148d7078">shared-desktop-ontologies</a> version 0.1 in November 2009. The result was a s***-load of hate-mails and bug reports due to me breaking KDE build. But in the end it was worth it. Now the package is established and other projects can start to pick it up to create data compatible to the Nepomuk system and Tracker.</p> <p>Today the ontologies (and the shared-desktop-ontologies package) are maintained in the <a href="http://sourceforge.net/apps/trac/oscaf/" id="link-id10ce1038">Oscaf project at Sourceforge</a>. The situation is far from perfect but it is a good start. If you need specific properties in the ontologies or are thinking about creating one for your own application - come and join us in the <a href="http://sourceforge.net/apps/trac/oscaf/report/1" id="link-id11413910">bug tracker</a>â¦</p> <h2>Timeline KIO Slave</h2> <p>It was at the Akonadi meeting that Will Stephenson and myself got into talking about mimicking some <a href="http://live.gnome.org/Zeitgeist" id="link-id116888b0">Zeitgeist</a> functionality through Nepomuk. Basically it meant gathering some data when opening and when saving files. We quickly came up with a hacky patch for KIO and <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/kio/html/classKFileDialog.html" id="link-id13637348">KFileDialog</a> which covered most cases and allowed us to track when a file was modified and by which application. This little experiment did not leave that state though (it will, however, this year) but another one did: Zeitgeist also provides a fuse filesystem which allows to browse the files by modification dates. Well, whatever fuse can do, KIO can do as well. <a href="http://trueg.wordpress.com/2009/10/26/just-another-way-of-browsing-your-files/" id="link-id13cf58c0">Introducing the timeline:/ KIO slave</a> which gives a calendar view onto your files.</p> <p> <a href="http://trueg.wordpress.com/2009/10/26/just-another-way-of-browsing-your-files/" id="link-id113d4988"><img class="aligncenter size-medium wp-image-208" title="timeline-october" src="http://trueg.files.wordpress.com/2009/10/timeline-october.png?w=300&h=235" alt="" width="300" height="235" /> </a> </p> <h2>Tips And Tricks</h2> <p>Well, I thought I would mention the <a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/TipsAndTricks" id="link-id116357d0">Tips And Tricks</a> section I wrote for the <a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk" id="link-id14473520">techbase</a>. It might not be a big deal but I think it contains some valuable information in case you are using Nepomuk as a developer.</p> <h2>Google Summer Of Code 2009</h2> <p>This time around I had the privilege to <a href="http://trueg.wordpress.com/2009/04/22/nepomuk-in-the-summer-x2/" id="link-id116b0cf8">mentor two students</a> in the Google Summer of Code. Alessandro Sivieri and Adam Kidder did outstanding work on <a href="http://trueg.wordpress.com/2009/08/25/gsoc-wrap-up-part-1/" id="link-id13c9f2f8">Improved Virtual Folders</a> and the <a href="http://trueg.wordpress.com/2009/08/28/gsoc-wrap-up-part-2/" id="link-id123bac00">Smart File Dialog</a>.</p> <p>Adamâs work lead me to some heavy improvements in the Nepomuk KIO slaves myself which I only finished this week (more details on that coming up). Alessandro continued his work on faceted file browsing in KDE and created:</p> <h3>Sembrowser</h3> <p>Alessandro is following up on his work to make faceted file browsing a reality in 2010 (and KDE SC 4.5). Since it was too late to get faceted browsing into KDE SC 4.4 he is working on <a href="http://www.kde-apps.org/content/show.php/Sembrowser?content=117692" id="link-id117c67d0">Sembrowser</a>, a stand-alone faceted file browser which will be the grounds for experiments until the code is merged into Dolphin.</p> <div id="attachment_238" class="wp-caption aligncenter" style="width: 310px"> <a href="http://trueg.files.wordpress.com/2010/01/sembrowser.png" id="link-id13aa8e80"><img class="size-medium wp-image-238" title="sembrowser" src="http://trueg.files.wordpress.com/2010/01/sembrowser.png?w=300&h=189" alt="" width="300" height="189" /> </a> <p class="wp-caption-text">Faceted Browsing in KDE with Sembrowser</p> </div> <h2>Nepomuk Workshops</h2> <p>In 2009 I organized the first Nepomuk workshop in Freiburg, Germany. And also the second one. While <a href="http://trueg.wordpress.com/2009/06/23/the-first-nepomuk-workshop-its-a-wrap/" id="link-id13b553e0">I reported properly on the first one</a> I still owe a summary for the second one. I will get around to that - sooner or later. ;)</p> <h2>CMake Magic</h2> <p> <a href="http://soprano.sourceforge.net/" id="link-id148bfad8">Soprano</a> gives us a nice command line tool to create a C++ namespace from an ontology file: <a href="http://soprano.sourceforge.net/apidox/trunk/soprano_devel_tools.html" id="link-iddac3b58">onto2vocabularyclass</a>. It produces nice convenience namespaces like <a href="http://soprano.sourceforge.net/apidox/trunk/namespaceSoprano_1_1Vocabulary_1_1NAO.html" id="link-idfd4b970">Soprano::Vocabulary::NAO</a>. Nepomuk adds another tool named <a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/ResourceGenerator" id="link-id11b60200">nepomuk-rcgen</a>. Both were a bit clumsy to use before. Now we have nice cmake macros which make it very simple to use both.</p> <p>See the <a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/ResourceGenerator" id="link-id11963490">techbase article</a> on how to use the new macros.</p> <h2>Bangarang</h2> <p>Without my <a href="http://dbpedia.org/resource/Knowledge" id="link-iddcbd7c8">knowledge</a> (imagine that!) Andrew Lake created an amazing new media player named <a href="http://bangarangkde.wordpress.com/" id="link-id113d9500">Bangarang</a> - <em>a Jamaican word for noise, chaos or disorder.</em> This player is Nepomuk-enabled in the sense that it has a media library which lets you browse your media files based on the Nepomuk data. It remembers the number of times a song or a video has been played and when it was played last. It allows to add detail such as the TV series name, season, episode number, or actors that are in the video - all through Nepomuk (I hope we will soon get <a href="http://thetvdb.com/" id="link-id1154d7a0">tvdb</a> integration).</p> <div id="attachment_242" class="wp-caption aligncenter" style="width: 310px"> <a href="http://trueg.files.wordpress.com/2010/01/bangarang2.png" id="link-id148bcdb8"><img class="size-medium wp-image-242" title="bangarang2" src="http://trueg.files.wordpress.com/2010/01/bangarang2.png?w=300&h=208" alt="" width="300" height="208" /> </a> <p class="wp-caption-text">Edit metadata directly in Bangarang</p> </div> <div id="attachment_243" class="wp-caption aligncenter" style="width: 303px"> <a href="http://trueg.files.wordpress.com/2010/01/bangarang-dolphin-fileinfo.png" id="link-id11c70a48"><img class="size-full wp-image-243" title="bangarang-dolphin-fileinfo" src="http://trueg.files.wordpress.com/2010/01/bangarang-dolphin-fileinfo.png?w=293&h=242" alt="" width="293" height="242" /> </a> <p class="wp-caption-text">Dolphin showing TV episode metadata created by Bangarang</p> </div> <div id="attachment_245" class="wp-caption aligncenter" style="width: 310px"> <a href="http://trueg.files.wordpress.com/2010/01/bangarang-dolphin-search.png" id="link-id149200f8"><img class="size-medium wp-image-245" title="bangarang-dolphin-search" src="http://trueg.files.wordpress.com/2010/01/bangarang-dolphin-search.png?w=300&h=212" alt="" width="300" height="212" /> </a> <p class="wp-caption-text">And of course searching for it works, too...</p> </div> <div id="attachment_244" class="wp-caption aligncenter" style="width: 310px"> <a href="http://trueg.files.wordpress.com/2010/01/bangarang1.png" id="link-id114f7c80"><img class="size-medium wp-image-244" title="bangarang1" src="http://trueg.files.wordpress.com/2010/01/bangarang1.png?w=300&h=225" alt="" width="300" height="225" /> </a> <p class="wp-caption-text">And it is pretty, too...</p> </div> <p>I am especially excited about this since finally applications not written or mentored by me start contributing Nepomuk data.</p> <h2>Gran Canaria Desktop Summit</h2> <p>2009 was also the year of the first Gnome-KDE joint-conference. Let me make a bulletin for completeness and refer to <a href="http://trueg.wordpress.com/2009/07/13/gran-canaria-desktop-summit-2009-the-nepomuk-perspective/" id="link-id143ff668">my previous blog post reporting on my experiences on the island</a>.</p> <p>Well, that was by far not all I did in 2009 but I think I covered most of the important topics. And after all it is âjust a blog entryâ - there is no need for completeness. Thanks for reading.</p> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/232/" id="link-id118a1950"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/232/" id="link-id148ffb08"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/232/" id="link-id13c65a88"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/232/" id="link-id119b85a0"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/232/" id="link-id13f5d6b8"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&blog=6648236&post=232&subd=trueg&ref=&feed=1" /> </div>"
Virtuoso, PHP Runtime Hosting: phpBB, Wordpress, Drupal, MediaWiki, and Linked Data
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-10-24#1461
2008-10-24T19:55:00Z
2010-03-25T21:19:59-04:00
<p> Runtime hosting is functionality realm of <a href="http://virtuoso.openlinksw.com" id="link-id1189fee8">Virtuoso</a> that is sometimes easily overlooked. In this post I want to provide a simple no-hassles HOWTO guide for installing Virtuoso on Windows (32 or 64 Bit), Mac OS X (Universal or Native 64 Bit), and Linux (32 or 64 Bit). The installation guide also covers the instantiation of <a href="http://dbpedia.org/resource/PhpBB" id="link-id118af3a8">phpBB3</a> as verification of the Virtuoso hosted <a href="http://dbpedia.org/resource/PHP" id="link-id12736b88">PHP</a> 3.5 runtime.</p> <h3> What are the benefits of PHP Runtime Hosting?</h3> <p> Like <a href="http://dbpedia.org/resource/Apache" id="link-id111ca408">Apache</a>, Virtuoso is a bona-fide <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> <a href="http://dbpedia.org/resource/Application_server" id="link-id110d2aa8">Application Server</a> for PHP based applications. Unlike Apache, Virtuoso is also the following:</p> <ul> <li> a Hybrid Native DBMS Engine (Relational, RDF-Graph, and Document models) that is accessible via industry standard interfaces (solely)</li> <li> a Virtual DBMS or Master <a href="http://dbpedia.org/resource/Data">Data</a> Manager (MDM) that virtualizes heterogeneous data sources (<a href="http://dbpedia.org/resource/Open_Database_Connectivity" id="link-id0x22b6f0c8">ODBC</a>, <a href="http://dbpedia.org/resource/Java_Database_Connectivity" id="link-id0x23af98c8">JDBC</a>, Web Services, Hypermedia Resources, Non Hypermedia Resources)</li> <li> an <a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=rdf%20middleware&type=text&output=html" id="link-id1116aad8">RDF Middleware</a> solution for RDF-zation of non RDF resources across the Web and enterprise Intranets and/or Extranets (in the form of Cartridges for data exposed via REST or SOA oriented SOAP interfaces)</li> <li> an RDF <a href="http://dbpedia.org/resource/Linked_Data" id="link-id10fbe088">Linked Data</a> Server (meaning it can deploy RDF Linked Data based on its native and/or virtualized data)</li> </ul> <p> As result of the above, when you deploy a PHP application using Virtuoso, you inherit the following benefits:</p> <ol> <li> Use of PHP-<a href="http://www.iodbc.org" id="link-id1159e070">iODBC</a> for in-process communication with Virtuoso</li> <li> Easy generation of RDF Linked Data Views atop the <a href="http://dbpedia.org/resource/SQL" id="link-id0x24f44c98">SQL</a> schemas of PHP applications</li> <li> Easy deployment of RDF Linked Data from virtualized data sources</li> <li> Less <a href="http://dbpedia.org/resource/LAMP_stack" id="link-id1179dff0">LAMP</a> monoculture (*there is no such thing as virtuous monoculture*) when dealing with PHP based Web applications.</li> </ol> <p> As indicated in prior posts, producing RDF Linked Data from the existing Web, where a lot of content is deployed by PHP based content managers, should simply come down to RDF Views over the SQL Schemas and deployment / publishing of the RDF Views in RDF Linked data form. In a nutshell, this is what Virtuoso delivers via its PHP runtime hosting and pre packaged VADs (Virtuoso Application Distribution packages), for popular PHP based applications such as: <a href="http://blogs.usnet.private:8893/weblog/kidehen@openlinksw.com/127/dbpedia.org/resource/PhpBB" id="link-id120cc6368">phpBB3</a>, <a href="http://dbpedia.org/resource/Drupal" id="link-id111ff1c0">Drupal</a>, <a href="http://dbpedia.org/resource/WordPress" id="link-id111e26f8">WordPress</a>, and <a href="http://dbpedia.org/resource/MediaWiki" id="link-id10ea0258">MediaWiki</a>.</p> <p> In addition, to the RDF Linked Data deployment, we've also taken the traditional LAMP installation tedium out of the typical PHP application deployment process. For instance, you don't have to rebuild PHP 3.5 (32 or 64 Bit) on Windows, Mac OS X, or Linux to get going, simply install Virtuoso, and then select a VAD package for the relevant application and you're set. If the application of choice isn't pre packaged by us, simply install as you would when using Apache, which comes dow to situating the PHP files in your Web structure under the Web Application's root directory.</p> <h3> Installation Guide</h3> <ol> <li> Download the Virtuoso installer for Windows (<a href="http://download.openlinksw.com/downwiz/login.vsp?pfam=2&pform=26&pcat=47&prod=virtuoso-uim-unisvr-ent&os=i686-generic-win-32&os2=i686-generic-win-32&xpfam=virtuoso&xpform=personal&xpcat=unisvr&xos=i686-generic-win-32&release-dbms=6.1-virt61" id="link-id11d084578">32 Bit msi file</a> or <a href="http://download.openlinksw.com/downwiz/login.vsp?pfam=2&pform=26&pcat=47&prod=virtuoso-uim-unisvr-ent&os=x86_64-generic-win-64&os2=x86_64-generic-win-64&xpfam=virtuoso&xpform=personal&xpcat=unisvr&xos=x86_64-generic-win-64&release-dbms=6.1-virt61" id="link-id11aea67a8">64 Bit msi file</a>), Mac OS X (<a href="http://download.openlinksw.com/downwiz/login.vsp?pfam=2&pform=26&pcat=47&prod=virtuoso-uim-unisvr-ent&os=universal-apple-macosx10.6-32&os2=universal-apple-macosx10.6-32&xpfam=virtuoso&xpform=personal&xpcat=unisvr&xos=universal-apple-macosx10.6-32&release-dbms=6.1-virt61" id="link-id11a93bef8">Universal Binary dmg file</a>), or instantiate the <a href="http://www.openlinksw.com/oat/wiki/main/Main/ODSInstallationEC2" id="link-id111fe248">Virtuoso EC2 AMI</a> (*search for pattern: "Virtuoso when using the Firefox extension for EC2 as the AMI ID is currently: ami-7c31d515 and name: virtuoso-test/virtuoso-cloud-beta-9-i386.manifest.xml, for latest cut*)</li> <li> Run the installer (or download the movies using the links in the related section below)</li> <li> Go to the Virtuoso Conductor (*which will show up at the end of the installation process* or go to http://localhost:8890/conductor)</li> <li> Go to the "Admin" tab within the (X)HTML based UI and select the "Packages" sub-menu item (a Tab)</li> <li> Pick phpBB3 (or any other pre-packaged PHP app) and then click on "Install/Upgrase"</li> <li> The watch one of my silent movies or read the initial startup guides for Virtuoso hosted phpBB3, Drupal, Wordpress, MediaWiki.</li> </ol> <h3> Related</h3> <p> At the current time, I've only provided links to ZIP files containing the Virtuoso installation "silent movies". This approach is a short-term solution to some of my current movie publishing challenges re. YouTube and Vimeo -- where the compressed output hasn't been of acceptable visual quality. Once resolved, I will publish much more "Multimedia Web" friendly movies :-)</p> <ul> <li> <a href="http://my-movies.s3.amazonaws.com/Virtuoso_PHPBB3_Vista_Linked_Data_Demo.mov.zip" id="link-id11642450">Windows Vista (x64) Installation Movie</a> </li> <li> <a href="http://my-movies.s3.amazonaws.com/Virtuoso_PHPBB3_MacOSX_Linked_Data_Demo.mov.zip" id="link-id11210498">Mac OS X (x64 & Universal binary) Installation Movie</a> </li> <li> <a href="http://my-movies.s3.amazonaws.com/Virtuoso_PHPBB3_EC2_AMI_Linked_Data_Demo.zip" id="link-id111ff268">Virtuoso EC2 Cloud Edition Installation Movie</a> </li> <li> <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtuosoPHP" id="link-id12038b6c8">Guide for PHP based Application Deployment using Virtuoso</a> </li> </ul>
The Calamitous Nature of Opportunity
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-10-10#1456
2008-10-10T16:30:53Z
2008-10-23T22:20:17-04:00
<p>As articulated in timeless fashion by <a href="http://dbpedia.org/resource/Albert_Einstein" id="link-id160b76b8">Albert Einstein</a>: </p> <blockquote> <cite>The significant problems we face cannot be solved at the same level of thinking we were at when we created them. </cite> </blockquote> <p>This quote also applies to the current global financial mess because the essence of this crisis remains inextricably linked to dependency on outdated "<a href="http://dbpedia.org/resource/Closed_world_assumption" id="link-id14a6b6c0">closed world</a>" systems.</p> <h3>How we got here (5,000 ft. view)</h3> <p>We have a global human network that depends on systems driven by, and confined to, <a href="http://dbpedia.org/resource/Data">data</a> silos! Every time you hear a CEO, Government Official, work colleague, neighbor, sibling, or relative tell you they didn't see it coming, just remember: </p> <ul> <li>For every action, there is an equal and opposite reaction</li> <li>For every debit there is a credit</li> <li>What goes around, comes around</li> <li> <a href="http://www.quotedb.com/quotes/245" id="link-id12ace758">No man is an Island</a> (little tweak: Human)</li> <li>We are all Linked whether we like it or not</li> <li>System preserving reboots are a feature of all intelligently designed systems.</li> </ul> <h3>Why there won't be a Depression</h3> <p>There won't be a depression because we can't afford one. Just like we couldn't afford to continue with the manner in which our systems work today. Unlike the '30s, we all know that there are no absolute safe havens right now, we have enough <a href="http://dbpedia.org/resource/Information" id="link-id13d0c258">information</a> at our disposal to eventually understand (post panic) that stuffing the mattress isn't an option (even government bonds won't cut it, ditto money market accounts).</p> <h3>The Opportunity</h3> <p>Take a deep breadth and tell traditional media to "shut up". As per usual, the traditional mass media wants to have it both ways by stoking the panic and maxing out on the frenzy with reckless abandon (as per usual). If there is a time to appreciate the blogosphere and quality journalism etc.. It's now.</p> <p> Anyway, as the saying goes: "It's always darkest before dawn", and as bizarre as this may sound in some quarters, things will ultimately change for the better. It just so happened that a really big cane was required in order for us to change our dysfunctional ways :-(</p> <p>I recently wrote a post about "<a href="http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1440" id="link-id115387f8">zero based cognition</a>" that sought to bring attention to the power of "Human Thought" in relation to value creation.</p> <p>Innovative creation and dissemination of value is how we will eventually get out of the current mess (as we've done in the past). The predictability of the aforementioned reality is significantly increased by the sheer link density and resulting "network effects" potential of the <a href="http://dbpedia.org/resource/Internet" id="link-id14a595e8">Internet</a> and <a href="http://dbpedia.org/resource/World_Wide_Web" id="link-id1112a570">World Wide Web</a>. Our ability to "connect the dots" as part of our value creation, dissemination, and consumption processing pipelines is what will ultimately separate the winners from the losers (individuals, enterprises, nations).</p> <h3>Related</h3> <ul> <li> <a href="http://yihongs-research.blogspot.com" id="link-id14b0fb90">Yihong Ding</a>'s insightful <a href="http://yihongs-research.blogspot.com/2008/10/financial-crisis-who-will-be-winner.html" id="link-id112197b0">perspectives</a> </li> <li> <a href="http://www.jasonkolb.com/" id="link-id112d4ad8">Jason Kolb</a>'s poignant piece titled: <a href="http://www.jasonkolb.com/weblog/2008/10/the-year-the-innovation-died.html" id="link-id10fe7008">The Year Innovation Died</a> </li> <li> <a href="http://www.portfolio.com/views/blogs/the-tech-observer/2008/10/09/tech-start-ups-and-the-economys-best-hope?tid=true" id="link-id14a80788">Tech Start-ups and the Economy's Best Hope</a> </li> <li> <a href="http://video.google.com/videoplay?docid=-9050474362583451279" id="link-id11053b90">Money as Debt</a> - (a documentary spotted by <a href="http://hyperdata.org/blog/" id="link-id114c0e30">Danja</a>)</li> <li> <a href="http://www.alleyinsider.com/peter_kafka" id="link-id10f01b10">Peter Kalfka</a>'s post: <a href="http://www.alleyinsider.com/2008/12/startup-advice-how-to-make-the-collapse-work-for-you" id="link-id10de8058">Smart Startup Advice: Don't Panic - Profit</a> </li> <li> <a href="http://www.huffingtonpost.com/nathan-gardels/soros-end-of-financial-cr_b_134008.html" id="link-id10fef1e8">George Soros Interview</a> </li> <li>Mark Cuban (<a href="http://blogmaverick.com/" id="link-ide8b5298">Blog Maverick</a>) echoing "<a href="http://blogmaverick.com/2008/10/23/the-cure-to-our-economic-problems/" id="link-id10e630d8">Entrepreneurship is the key"</a> sentiment.</li> </ul>
Linked Data, Ubiquity Commands, and Resource Descriptions (Update 3)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-09-05#1430
2008-09-05T05:43:00Z
2008-09-08T09:00:51-04:00
<div><p><a href="http://labs.mozilla.com/2008/08/introducing-ubiquity/" id="link-id11258ea0">Ubiquity</a> from <a href="http://labs.mozilla.com/" id="link-id112ebe28">Mozilla Labs</a>, provides an alternative entry point for experiencing the "Controller" aspect of the <a href="http://dbpedia.org/resource/World_Wide_Web" id="link-id0xa0d2ccd0">Web</a>'s natural compatibility with the <a href="http://dbpedia.org/resource/Model-view-controller" id="link-id10ec1a08">MVC</a> development pattern. As I've noted (in <a href="http://myopenlink.net/weblog/public/search.vspx?blogid=kidehen-blog-0&q=mvc&type=text&output=html" id="link-id15390f28">various posts</a>) <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> Services, as practiced by the REST oriented Web 2.0 community or SOAP oriented SOA community within the enterprise, is fundamentally about the ("Controller" aspect of <a href="http://dbpedia.org/resource/Model-view-controller" id="link-id13c0d758">MVC</a>. </p><p>Ubiquity provides a commandline interface for direct invocation of Web Services. For instance, in our case, we can expose the <a href="http://virtuoso.openlinksw.com" id="link-id10b04708">Virtuoso</a>'s in-built <a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=rdf%20middleware&type=text&output=html" id="link-id1113ae38">RDF Middleware</a> ("Sponger") and <a href="http://dbpedia.org/resource/Linked_Data" id="link-id1457b3b8">Linked Data</a> deployment services via a single command of the form: describe-resource <url> </p><p>To experience this neat addition to Firefox you need to do the following:</p><ol><li><a href="https://people.mozilla.com/%7Eavarma/ubiquity-0.1.1.xpi" id="link-id13b15e88">Download</a> and install the Ubiquity Extension for Firefox</li><li><a href="http://demo.openlinksw.com/ubiq" id="link-id10e85880">Subscribe</a> to the OpenLink Command for Resource Description</li><li>Click on CTRL+Space (Windows / Linux) or Option+Space (Mac OS X)</li><li>Type in: describe-resource <a-web-resource-url> </li></ol><h3>How to unsubscribe</h3> At the current time, you need to do this if you've installed commands using ubiquity 0.1.0 and seek to use newer versions of the same commands after upgrading to ubiquity 0.1.1. <ol><li>To unsubscribe use type "about:ubiquity" into browser</li><li>Click on unsubscribe links associated with you command subscription list</li></ol> <p>Enjoy!</p></div>
The Essence of the Matter re. Information Overload
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-08-28#1425
2008-08-28T12:17:55Z
2008-08-28T15:56:20-04:00
<p>The title of this post is an expression of my gut reaction to the quotes below, which originate from <a href="http://leobard.twoday.net/" id="link-id104b2308">Leo Sauermann</a>'s post about the <a href="http://leobard.twoday.net/stories/5151765/" id="link-id1889d5d8">Nepomuk Semantic Desktop for KDE</a>:</p> <blockquote> <cite><strong>Ansgar Bernardi</strong>, deputy head of the <a href="http://dbpedia.org/resource/Knowledge" id="link-id16d79970">Knowledge</a> Management Department at Deutsches Forschungszentrum für Künstliche Intelligenz (DFKI, or the German Research Center for Artificial Intelligence) and Nepomuk's coordinator, explains, "The basic problem that we all face nowadays is how to handle vast amounts of <a href="http://dbpedia.org/resource/Information" id="link-id13a01b58">information</a> at a sensible rate." According to Bernardi, Nepomuk takes a traditional approach by creating a meta-<a href="http://dbpedia.org/resource/Data">data</a> layer with well-defined elements that services can be built upon to create and manipulate the <a href="http://dbpedia.org/resource/Information" id="link-id102433e8">information</a>.</cite> </blockquote> <p> The comment above echoes my sentiments about the imminence of "<a href="http://dbpedia.org/resource/Information" id="link-id0x10dd6c20">information</a> overload" due to the vast amounts of user generated content on the <a href="http://dbpedia.org/resource/Internet" id="link-id139926b0">Internet</a> as a whole. We are going to need to process more an more data within a fixed 24 hour timeframe, while attempting to balance our professional and personal lives. Be rest assured, this is a very serious issue, and you cannot event begin to address it without a <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> of <a href="http://dbpedia.org/resource/Linked_Data" id="link-id188ebc20">Linked Data</a>.</p> <blockquote> <cite>"The first idea of building the semantic desktop arose from the fact that one of our colleagues could not remember the girlfriends of his friends," Bernard says, more than half-seriously. "Because they kept changing -- you know how it is. The point is, you have a vast amount of <a href="http://dbpedia.org/resource/Information">information</a> on your desktop, hidden in files, hidden in emails, hidden in the names and structures of your folders. Nepomuk gives a standard way to handle such information."</cite> </blockquote> <p>If you get a personal <a href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id171dd2e0">URI</a> for <a href="http://dbpedia.org/resource/Entity" id="link-id18294318">Entity</a> "You", via a <a href="http://dbpedia.org/resource/Linked_Data" id="link-id188a1b10">Linked Data</a> aware platform (e.g. <a href="http://dbpedia.org/resource/OpenLink_Data_Spaces" id="link-id167ad840">OpenLink Data Spaces</a>) that virtualizes data across your existing Web data spaces (blogs, feed subscriptions, wikis, shared bookmarks, photo galleries, calendars, etc.), you then only have to remember your <a href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id171c3ef0">URI</a> whenever you need to "Find" something, imagine that!</p> <p>To conclude, "information overload" is the imminent challenge of our time, and the keys to challenge alleviation lie in our ability to construct and maintain (via solutions) few <a href="http://dbpedia.org/resource/Context_%28language_use%29" id="link-id1074ade0">context</a> lenses (URIs) that provide coherent conduits into the dense mesh of structured <a href="http://dbpedia.org/resource/Linked_Data" id="link-id0xd30b090">Linked Data</a> on the Web. </p>
Comments about recent Semantic Gang Podcast
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-05-02#1357
2008-05-02T21:44:31Z
2008-05-05T20:06:42.000004-04:00
<p>After listening to the <a href="http://semanticgang.talis.com/2008/05/02/april-2008-the-semantic-web-gang-discuss-a-wikipedia-for-data/" id="link-id1089e218">latest Semantic Web Gang podcast</a>, I found myself agreeing with some of the points made by <a href="http://www.linkedin.com/in/iskold" id="link-id10b91e58">Alex Iskold</a>, specifically: </p> <ul>-- <a href="http://dbpedia.org/resource/Linked_Data" id="link-id106e24e0">Linked Data</a> does not implicitly imply making all your <a href="http://dbpedia.org/resource/Data" id="link-id17ab3d48">data</a> public</ul> <ul>-- <a href="http://dbpedia.org/resource/Linked_Data" id="link-id11fdcef0">Linked Data</a> principles benefit <a href="http://dbpedia.org/resource/Intranet" id="link-id109756e8">Intranet</a> and <a href="http://dbpedia.org/resource/Extranet" id="link-id1099cfd8">Extranet</a> style <a href="http://dbpedia.org/resource/Data" id="link-id10cd25b0">data</a> integration (trumps alternative <a href="http://dbpedia.org/resource/federated_database_system" id="link-id14f29940">distributed database</a> integration approaches any day)</ul> <ul>-- Business exploitation of <a href="http://dbpedia.org/resource/Linked_Data" id="link-id0xca51940">Linked Data</a> on the <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> will certainly be driven by the correlation of opportunity costs (which is more than likely what Alex meant by "use cases") associated with the lack of URIs originating from the domain of a given business (Tom Heath: also effectively alluded to this via his <a href="http://dbpedia.org/resource/BBC" id="link-id16f33348">BBC</a> and <a href="http://dbpedia.org/resource/Uniform_Resource_Identifier" id="link-id10decf38">URI</a> land grab anecdotes; same applies Georgi's examples)</ul> <ul>-- History is a great tutor, answers to many of today's problems always lie somewhere in plain sight of the past.</ul> <p>Of course, I also believe that <a href="http://dbpedia.org/resource/Linked_Data">Linked Data</a> serves Web <a href="http://dbpedia.org/resource/Data" id="link-id0x1afebd58">Data</a> Integration across the <a href="http://dbpedia.org/resource/Internet" id="link-id10aa5668">Internet</a> very well too, and the fact that it will be beneficial to businesses in a big way. No individual or organization is an island, I think the <a href="http://dbpedia.org/resource/Internet" id="link-id0xb25fbd0">Internet</a> and Web have done a good job of demonstrating that thus far :-) We're all <a href="http://dbpedia.org/resource/Data">data</a> nodes in a <a href="http://dbpedia.org/resource/Giant_Global_Graph" id="link-id5d8a3a8">Giant Global Graph</a>.</p> <p> <a href="http://myopenlink.net/dataspace/person/danieljohnlewis#this" id="link-id17cac8a0">Daniel lewis</a> did shed light on the read-write aspects of the Linked Data <a href="http://dbpedia.org/resource/Giant_Global_Graph" id="link-id10be8590">Web</a>, which is actually very close to the callout for a Wikipedia for Data. <a href="http://www.w3.org/People/Berners-Lee/card#i" id="link-id10a810c0">TimBL</a> has been working on this via <a href="http://dig.csail.mit.edu/2005/ajar/release/tabulator/0.8/tab.html" id="link-id184b7108">Tabulator</a> (see <a href="http://dig.csail.mit.edu/2007/tab/tutorial/editing.mov" id="link-id1416f1e8">Tabulator Editing Screencast</a>), <a href="http://bnode.org/about" id="link-id17e33750">Bengamin Nowack</a> also added <a href="http://arc.semsol.org/download/plugins/data_wiki" id="link-id1688cc40">similar functionality to ARC</a>, and of course we support the same <a href="http://dbpedia.org/resource/SPARQL" id="link-id10bff7c8">SPARQL</a> UPDATE into an <a href="http://dbpedia.org/resource/Resource_Description_Framework" id="link-id168ace08">RDF</a> <a href="http://dbpedia.org/resource/Information" id="link-id10641878">information</a> resource via the <a href="http://dbpedia.org/resource/Resource_Description_Framework" id="link-id0xddb5240">RDF</a> Sink feature of our WebDAV and <a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/OdsBriefcase" id="link-id0x11199310">ODS</a>-Briefcase implementations.</p>
The Cost of doing the Right Thing
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2008-03-27#1330
2008-03-27T18:41:43Z
2008-03-29T00:50:07.000002-04:00
<p>One of the biggest impediments to the adoption of technology is the cost burden typically associated with doing the right thing. For instance, requirements for making the <a href="http://dbpedia.org/resource/Linked_Data">Linked Data</a> <a href="http://dbpedia.org/resource/World_Wide_Web">Web</a> (<a href="http://dbpedia.org/resource/Giant_Global_Graph">GGG</a>) buzz would include the following (paraphrasing <a href="http://www.w3.org/People/Berners-Lee/card#i">TimBL</a>'s original <a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data meme</a>): </p> <ul>-- identifying the things you observe, or stumble upon, using URIs (aka <a href="http://dbpedia.org/resource/Entity">Entity</a> IDs)</ul> <ul>-- construct URIs using <a href="http://dbpedia.org/resource/Hypertext_Transfer_Protocol">HTTP</a> so that the Web provides a channel for referencing things elsewhere (remote object referencing)</ul> <ul>-- Expose things in your <a href="http://dbpedia.org/resource/Data">Data</a> <a href="http://en.wikipedia.org/wiki/Data_Spaces">Space</a>(s) that are potentially useful to other Web users via URIs</ul> <ul>-- Link to other Web accessible things using their URIs.</ul> <p>The list is nice, but actual execution can be challenging. For instance, when writing a <a href="http://dbpedia.org/resource/Blog">blog</a> post, or constructing a <a href="http://dbpedia.org/resource/WikiWord">WikiWord</a>, would you have enough disposable time to go searching for these URIs? Or would you compromise and continue to inject "Literal" values into the Web, leaving it to the reasoning endowed human reader to connect the dots?</p> <p>Anyway, <a href="http://dbpedia.org/resource/OpenLink_Data_Spaces">OpenLink Data Spaces</a> is now equipped with a <a href="http://dbpedia.org/resource/Glossary">Glossary</a> system that allows me to manage terms, meaning of terms, and hyper-linking of phrases and words matching associated with my terms. The great thing about all of this is that everything I do is scoped to <a href="http://myopenlink.net/dataspace/kidehen">my Data Space</a> (my universe of discourse), I don't break or impede the other meanings of these terms outside my Data Space. The Glossary system can be shared with anyone I choose to share it with, and even better, it makes my upstreaming (rules based replication) style of blogging even more productive :-) </p> <p>Remember, on the Linked Data Web, who you know doesn't matter as much as what your are connected to, directly or indirectly. <a href="http://www.jasonkolb.com/">Jason Kolb</a> covers this issue in his post: <a href="http://www.jasonkolb.com/weblog/2008/03/users-as-data-c.html" id="link-id1586a468">People as Data Connectors</a>, and so doesFrederick Giasson via a recent post titled: <a href="http://fgiasson.com/blog/index.php/2008/03/11/networks-are-everywhere/" id="link-id108b9010">Networks are everywhere</a>. For instance, this blog post (or the entire Blog) is a bona fide <a href="http://dbpedia.org/resource/Resource_Description_Framework">RDF</a> Linked Data Source, you can use it as the Data Source of a <a href="http://dbpedia.org/resource/SPARQL">SPARQL</a> Query to find things that aren't even mentioned in this post, since all you are doing is beaming a query through my Data Space (a container of Linked Data Graphs). On that note, let's re-watch <a href="http://blog.jonudell.net/">Jon Udell</a>'s <a href="http://weblog.infoworld.com/udell/gems/queryingBlogs.html" id="link-id108c0908">"On-Demand-Blogosphere" screencast from 2006</a> :-)</p>
Hello Data Web (Take 2 - with Screenshots)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2007-02-09#1137
2007-02-09T01:46:50Z
2007-02-18T10:23:42-05:00
<p>While I continue to wrestle with screencast production etc.. Here is are some screenshots that guide you through the process of providing Data Web URIs to the SPARQL Query Builder (first cut of an MS Query or MS ACCESS type tool for the Data Web).</p> <ol> <li> <a href="http://www.openlinksw.com/blog/~kidehen/briefcase/Public/Screenshots/sparql_qbe1.png">Step 1 - Enter a Data Source URI</a> </li> <li> <a href="http://www.openlinksw.com/blog/~kidehen/briefcase/Public/Screenshots/sparql_qbe2.png">Step 2 - Click on the Run Control (">" video control icon)</a> </li> <li> <a href="http://www.openlinksw.com/blog/~kidehen/briefcase/Public/Screenshots/sparql_qbe3.png">Step 3 - Interact with Custom Grid hosted results (comprised of Resource Identifiers (S), Properties (P), and Property Values (O).</a> </li> </ol> <p>Once you grasp the concept of entering values into the "Default Data Source URI field", take a look at: http://programmableweb.com and other URIs (hint: scroll through the results grid to the QEDWiki demo item)</p>
Hello Data Web!
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2007-02-08#1134
2007-02-08T19:13:48Z
2008-02-04T23:22:04.000001-05:00
<p>The simple demo use our Ajax based Visual Query Builder for the SPARQL Query Language (this isn't Grandma's Data Web UI, but not to worry, that is on it's way also). Here goes:</p> <ol> <li> go to http://demo.openlinksw.com/isparql </li> <li> Enter any of the following values into the "Default Data URI"; field: </li> <ul>- http://www.mkbergman.com/?p=336</ul> <ul>- http://radar.oreilly.com/archives/2007/02/pipes_and_filte.html</ul> <ul>- http://jeremy.zawodny.com/blog/archives/008513.html</ul> <ul>- Other URIs </ul> </ol> <p> What I am demonstrating is how existing Web Content hooks transperently into the <a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=data%20web&type=text&output=html">"Data Web"</a>. Zero RDF Tax :-) Everything is good!</p> <p>Note: Please look to the bottom of the screen for the "Run Query" Button. Remember, it not quite Grandma's UI but should do for Infonauts etc.. A screencast will follow.</p>
Semantic Web & Data Integration
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2007-01-18#1122
2007-01-18T00:36:25Z
2007-01-18T09:25:51.000006-05:00
<p> <a href="http://www.betaversion.org/~stefano/">Stefano Mazzocchi</a>, via his blog: <a href="http://www.betaversion.org/~stefano/linotype/">Stefano's Linotype</a>, delivers <a href="http://www.betaversion.org/~stefano/linotype/news/99/">insightful contribution</a> to the ongoing effort to recapture the essence of the original <a href="http://en.wikipedia.org/wiki/Semantic_Web">Semantic Web </a>vision.</p> <p>The Semantic Web is about granular exposure of the underlying web-of-data that fuels the World Wide Web. It models "<a href="http://www.w3.org/1999/04/WebData">Web Data</a>" using a <a href="http://en.wikipedia.org/wiki/Graph_(mathematics)">Directed Graph</a> Data Model (back-to-the-future: <a href="http://en.wikipedia.org/wiki/Network_model">Network Model Database</a>) called <a href="http://www.w3.org/TR/rdf-primer/">RDF</a>.</p> <p>In line with contemporary database technology thinking, the Semantic Web also seeks to expose Web Data to architects, developers, and users via a concrete <a href="http://en.wikipedia.org/wiki/Conceptual_schema">Conceptual Layer</a> that is defined using <a href="http://www.w3.org/TR/rdf-schema/">RDF Schema</a>.</p> <p>The abstract nature of Conceptual Models implies that actual instance data (<a href="http://en.wikipedia.org/wiki/Entity-relationship_diagrams">Entities, Attributes, and Relationships/Associations</a>) occurs by way of "Logical to Conceptual" schema mapping and data generation that can involve a myriad of logical data sources (SQL, XML, Object databases, traditional web content, <a href="http://en.wikipedia.org/wiki/Rss_%28file_format%29">RSS</a>/<a href="http://en.wikipedia.org/wiki/Atom_%28standard%29">Atom</a> feeds etc.). Thus, by implication, it is safe assume that the Semantic Web's construction is basically a <a href="http://en.wikipedia.org/wiki/Data_integration">Data Integration</a> and exposure effort. The point that Stefano alludes to in the blog post excerpts that follow: </p> <blockquote> <p>The semantic web is really just data integration at a global scale. Some of this data might end up being consistent, detailed and small enough to perform symbolic reasoning on, but even if this is the case, that would be such a small, expensive and fragile island of knowledge that it would have the same impact on the world as calculus had on deciding to invade Iraq.</p> <p>The biggest problem we face right now is a way to 'link' information that comes from different sources that can scale to hundreds of millions of statements (and hundreds of thousands of equivalences). Equivalences and subclasses are the only things that we have ever needed of <a href="http://www.w3.org/TR/owl-features/">OWL</a> and RDFS, we want to 'connect' dots that otherwise would be unconnected. We want to suggest people to use whatever ontology pleases them and then think of just mapping it against existing ones later. This is easier to bootstrap than to force them to agree on a conceptualization before they even know how to start!</p> </blockquote> <p>Additional insightful material from Stefano:</p> <ol> <li> <a href="http://www.betaversion.org/~stefano/linotype/news/57/">A No-Nonsense Guide to Semantic Web Specs for XML People [Part I]</a> </li> <li> <a href="http://www.betaversion.org/~stefano/linotype/news/78/">A No-nonsense Guide to Semantic Web Specs for XML People [Part II]</a> </li> </ol> <p> <a href="http://bnode.org/blog/sw_en">Benjamin Nowack</a> also chimes into this conversation via his <a href="http://rdfer.com/swk/data-information-knowledge">simple guide to understanding Data, Information, and Knowledge</a> in relation so the Semantic Web.</p>
SPARQL, Ajax, Tagging, Folksonomies, Share Ontologies and Semantic Web
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-12-07#1095
2006-12-07T17:35:29Z
2006-12-13T15:09:50-05:00
<p>A quick dump that demonstrates how I integrate tags and links from del.icio.us with links from my local bookmark database via one of my public Data Spaces (this demo uses the <a href="http://myopenlink.net:8890/dataspace/kidehen">kidehen Data Space</a>).</p> <p> <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> (query language for the Semantic Web) basically enables me to query a collection of typed links (predicates/properties/attributes) in my Data Space (<a href="http://virtuoso.openlinksw.com/wiki/main/Main/OdsIndex">ODS</a> based of course) without breaking my existing local bookmarks database or the one I maintain at del.icio.us.</p> <p>I am also demonstrating how <a href="http://en.wikipedia.org/wiki/Web_2.0">Web 2.0</a> concepts such as <a href="http://en.wikipedia.org/wiki/Tags">Tagging</a> mesh nicely with the more formal concepts of Topics in the Semantic Web realm. The key to all of this is the ability to generate <a href="http://www.w3.org/TR/rdf-primer/">RDF Data Model</a> Instance Data based on <a href="http://en.wikipedia.org/wiki/Upper_ontology_(computer_science)">Shared Ontologies</a> such as <a href="http://rdfs.org/sioc/spec/">SIOC</a> (from <a href="http://www.semanticweb.org/">DERI</a>'s <a href="http://sioc-project.org/">SIOC Project</a>) and <a href="http://www.w3.org/2004/02/skos/">SKOS</a> (again showing that <a href="http://tomgruber.org/writing/ontology-of-folksonomy.htm">Ontologies and Folksonomies</a> are complimentary).</p> <p>This demo also shows that Ajax also works well in the Semantic Web realm (or <a href="http://www.openlinksw.com/blog/~kidehen/?id=1037">web dimension of interaction 3.0</a>) especially when you have a toolkit with Data Aware controls (for SQL, RDF, and XML) such as OAT (<a href="http://demo.openlinksw.com/DAV/JS/demo/index.html">OpenLink Ajax Toolkit</a>). For instance, we've successfully used this to build a <a href="http://myopenlink.net:8890/isparl/">Visual Query Building Tool for SPARQL</a> (alpha) that really takes a lot of the pain out of constructing SPARQL Queries (there is much more to come on this front re. handling of DISTINCT, FILTER, ORDER BY etc..). </p> <p>For now, take a look at the SPARQL Query dump generated by this <a href="http://myopenlink.net:8890/DAV/home/kidehen/gallery/my_photos/sparql_qbe_sioc_skos_shot1.png">SIOC & SKOS SPARQL QBE Canvas Screenshot</a>. </p> <p>You can cut and paste the queries that follow into the Query Builder or use the screenshot to build your variation of this query sample. Alternatively, you can simply click on *<a href="http://myopenlink.net:8890/sparql?default-graph-uri=http%3A%2F%2Fmyopenlink.net%2Fdataspace&query=PREFIX+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0D%0APREFIX+sioc%3A+++%3Chttp%3A%2F%2Frdfs.org%2Fsioc%2Fns%23%3E%0D%0APREFIX+dct%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0D%0APREFIX+skos%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23%3E%0D%0A%0D%0ASELECT+distinct+%3Fforum_name%2C+%3Fowner%2C+%3Fpost%2C+%3Ftitle%2C+%3Flink%2C+%3Furl+%3Ftag%0D%0AFROM+%3Chttp%3A%2F%2Fmyopenlink.net%2Fdataspace%3E%0D%0AWHERE+%7B%0D%0A++++++++%3Fforum+a+sioc%3AForum.%0D%0A++++++++%3Fforum+sioc%3Atype+%22bookmark%22.%0D%0A++++++++%3Fforum+sioc%3Aid+%3Fforum_name.%0D%0A++++++++%3Fforum+sioc%3Ahas_member+%3Fowner.%0D%0A++++++++%3Fowner+sioc%3Aid+%22kidehen%22.%0D%0A++++++++%3Fforum+sioc%3Acontainer_of+%3Fpost+.%0D%0A++++++++%3Fpost++dct%3Atitle+%3Ftitle+.%0D%0A++++++++optional+%7B+%3Fpost+sioc%3Atopic+%3Ftopic.%0D%0A+++++++++++++++++++%3Ftopic+a+skos%3AConcept%3B%0D%0A+++++++++++++++++++++++++skos%3AprefLabel+%3Ftag.+%7D%0D%0A++++++++optional%7B+%3Fpost+sioc%3Alink+%3Flink++%7D+.%0D%0A++++++++optional%7B+%3Fpost+sioc%3Alinks_to+%3Furl+%7D%0D%0A++++++%7D%0D%0AORDER+BY+%3Ftitle&format=text%2Fhtml">This</a>* <a href="http://www.w3.org/TR/rdf-sparql-protocol/">SPARQL Protocol</a> URL to see the query results in a basic HTML Table. And one last thing, you can grab the <a href="http://myopenlink.net:8890/DAV/home/kidehen/SPARQL/tagging_sioc_skos_delicios_my_bookmarks.rq">SPARQL Query File</a> saved into my <a href="http://virtuoso.openlinksw.com/wiki/main/Main/OdsBriefcase">ODS-Briefcase</a> (the <a href="http://en.wikipedia.org/wiki/WebDAV">WebDAV</a> repository aspect of my Data Space). </p> <p> <b>Note the following SPARQL Protocol Endpoints:</b> </p> <ol> <li> <a href="http://myopenlink.net:8890/sparql/">MyOpenLink Data Space</a> </li> <li> <a href="http://myopenlink.net:8890/isparql/">Experimental Data Space SPARQL Query Builder</a> (you need to register at http://myopenlink.net:8890/ods to use this version)</li> <li> <a href="http://demo.openlinksw.com/sparql/">Live Demo Sever</a> </li> <li> <a href="http://demo.openlinksw.com/isparql/">Demo Server SPARQL Query Builder</a> (use: demo for both username and pwd when prompted)</li> </ol> <p>My beautified Version of the SPARQL Generated by QBE (you can cut and paste into "Advanced Query" section of QBE) is presented below:</p> <pre> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX sioc: <http://rdfs.org/sioc/ns#> PREFIX dct: <http://purl.org/dc/elements/1.1/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> <br /> SELECT distinct ?forum_name, ?owner, ?post, ?title, ?link, ?url, ?tag FROM <http://myopenlink.net/dataspace> WHERE { ?forum a sioc:Forum; sioc:type "bookmark"; sioc:id ?forum_name; sioc:has_member ?owner. ?owner sioc:id "kidehen". ?forum sioc:container_of ?post . ?post dct:title ?title . optional { ?post sioc:link ?link } optional { ?post sioc:links_to ?url } optional { ?post sioc:topic ?topic. ?topic a skos:Concept; skos:prefLabel ?tag}. } </pre> <p>Unmodified dump from the QBE (this will be beautified automatically in due course by the QBE):</p> <pre> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX sioc: <http://rdfs.org/sioc/ns#> PREFIX dct: <http://purl.org/dc/elements/1.1/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> <br /> SELECT ?var8 ?var9 ?var13 ?var14 ?var24 ?var27 ?var29 ?var54 ?var56 WHERE { graph ?graph { ?var8 rdf:type sioc:Forum . ?var8 sioc:container_of ?var9 . ?var8 sioc:type "bookmark" . ?var8 sioc:id ?var54 . ?var8 sioc:has_member ?var56 . ?var9 rdf:type sioc:Post . OPTIONAL {?var9 dc:title ?var13} . OPTIONAL {?var9 sioc:links_to ?var14} . OPTIONAL {?var9 sioc:link ?var29} . ?var9 sioc:has_creator ?var37 . OPTIONAL {?var9 sioc:topic ?var24} . ?var24 rdf:type skos:Concept . OPTIONAL {?var24 skos:prefLabel ?var27} . ?var56 rdf:type sioc:User . ?var56 sioc:id "kidehen" . } } </pre> <p> Current missing items re. Visual QBE for SPARQL are:</p> <ol> <li> Ability to Save properly to WebDAV so that I can then expose various saved SPARQL Queries (.rq file) from my Data Space via URIs </li> <li> Handling of DISTINCT, FILTERS (note: OPTIONAL is handled via dotted predicate-links) </li> <li>General tidying up re. click event handling etc. </li> </ol> Note: You can even open up your own account (using our <a href="http://demo.openlinksw.com/ods">Live Demo</a> or <a href="http://myopenlink.net:8890/ods">Live Experiment Data</a> Space servers) which enables you to repeat this demo by doing the following (post registration/sign-up): <ol> <li>Export some bookmarks from your local browser to the usual HTML bookmarks dump file</li> <li>Create an ODS-Bookmarks Instance using your new ODS account</li> <li>Use the ODS-Bookmark Instance to import your local bookmarks from the HTML dump file</li> <li>Repeat the same import sequence using the ODS-Bookmark Instance, but this time pick the del.icio.us option</li> <li>Build your query (change 'kidehen' to your ODS-user-name)</li> <li>That's it you now have Semantic Web presence in the form of a Data Space for your local and del.icio.us hosted bookmarks with tags integrated</li> </ol> <p>Quick Query Builder Tip: You will need to import the following (using the Import Button in the Ontologies & Schemas side-bar); </p> <ol> <li> <a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a> (<a href="http://www.w3.org/TR/rdf-primer/">RDF</a>)</li> <li> <a href="http://rdfs.org/sioc/ns#">http://rdfs.org/sioc/ns#</a> (<a href="http://rdfs.org/sioc/spec/">SIOC</a>)</li> <li> <a href="http://purl.org/dc/elements/1.1/">http://purl.org/dc/elements/1.1/</a> (<a href="http://dublincore.org/">Dublin Core</a>)</li> <li> <a href="http://www.w3.org/2004/02/skos/core#">http://www.w3.org/2004/02/skos/core#</a> (<a href="http://www.w3.org/TR/2005/WD-swbp-skos-core-guide-20050510/">SKOS</a>)</li> </ol> <p>Browser Support: The SPARQL QBE is SVG based and currently works fine with the following browsers; Firefox 1.5/2.0, Camino (Cocoa variant of Firefox for Mac OS X), Webkit (Safari pre-release / advanced sibling), Opera 9.x. We are evaluating the use of the Adobe SVG plugin re. IE 6/7 support.</p> <p>Of course this should be a screencast, but I am the middle of a plethora of things right now :-) </p>
GeoRSS & Geonames for Philanthropy re. Kiva Microfinance
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-07-15#1006
2006-07-15T14:11:47Z
2006-07-15T10:48:36.000002-04:00
<p>(Via <a href="http://www.geospatialsemanticweb.com">Geospatial Semantic Web Blog</a>.)</p> <p> <a href="http://www.geospatialsemanticweb.com/2006/07/14/georss-geonames-for-philanthropy#comments">GeoRSS & Geonames for Philanthropy</a>: "</p> <p>I heard about <a title="kiva.org" href="http://www.kiva.org">Kiva.ORG</a> in a BusinessWeek podcast. After visiting its website, I think there are few places where GeoRSS (in the RDF/A syntax) and Geonames can be used to enhance the siteâs functionality.</p> <h5>Kiva.ORG Background</h5> <h5> <img align="left" title="kiva.org" id="image92" alt="kiva.org" src="http://www.geospatialsemanticweb.com/wp-content/uploads/2006/07/kiva-bannersmall.png" /> </h5> <p>Itâs a microfinance website for people in the developing countries. Its business model is in the intersection between peer-to-peer financing and philanthropy. The goal is to help developing country businesses to borrow small loans from a large group of Web users, so that they can avoid paying high interests to the banks.</p> <p>For example, a person in Uganda can <a target="_blank" title="Kiva Loan Request" href="http://kiva.org/app.php?page=businesses&action=about&id=564">request</a> a $500 loan and use it for buying and selling more poultry. One or more lenders (anyone on the Web) may decide to grant loans to that person in increments as tiny as $25. After few years, that person will pay back the loans to the lenders.</p> <h5>How GeoRSS and Geonames Can Help</h5> <p>I went to the website and discovered the site has a relative weak search and browsing interface. In particular, there is no way to group loan requests based on geographical locations (e.g., countries, cities and regions).<br /> <a id="more-90"></a> <br /> Took a look at individual loan pages. Each page actually has standard ways to describe location information â e.g., <strong>Location:</strong> Mbale, Uganda.</p> <p>It should be relative easy to add <a title="GeoRSS" target="_blank" href="http://www.georss.org/">GeoRSS</a> points (in <a title="Mixing GeoRSS with RDF/A" target="_blank" href="http://www.geospatialsemanticweb.com/2006/06/08/mixing-rdfa-with-georss">the RDF/A syntax</a>) to describe these location information (an alternative maybe using <a title="geocode with microformat" target="_blank" href="http://www.geospatialsemanticweb.com/2006/01/03/how-to-geocode-your-blog">Microformat Geo</a> or <a title="w3c geo" target="_blank" href="http://www.w3.org/2003/01/geo/">W3C Geo</a>). Once the location information is annotated, one can imagine building a map mashup to display loan requests in a geospatial perspective. One can also build search engines to support spatial queries such as âfind me all loans with from Mbaleâ.</p> <p>Since Kiva.ORG webmasters may not be GIS experts, it will be nice if we can find ways to automatically geocode location information and describe that using GeoRSS. This automatic geocoding procedure can be developed using <a title="geonames webservices" target="_blank" href="http://www.geonames.org/export/geonames-search.html">Geonamesâs webservices</a>. Take a string âMbaleâ or âUgandaâ, and send to Geonamesâs search service. The procedure will get back <a target="_blank" title="geonames json saerch" href="http://ws.geonames.org/searchJSON?q=Mbale&maxRows=10">JSON</a> or <a target="_blank" title="geonames xml search" href="http://ws.geonames.org/search?q=Mbale&maxRows=10">XML</a> description of the location, which include latitude and longitude. This will then be used to annotate the location information in a Kiva loan page.</p> <p>Can you think of other ways to help Kiva.ORG to become more âgeospatially intelligentâ?<br /> You can learn more about <a title="kiva.org" target="_blank" href="http://www.kiva.org">Kiva.ORG</a> at its website and listen to <a title="An eBay for Microfinance" target="_blank" href="http://www.businessweek.com/mediacenter/podcasts/innovation/innovation_07_11_06.htm">this podcast</a>. </p>"
Contd: Ajax Database Connectivity Demos
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-06-01#988
2006-06-02T02:48:00Z
2006-06-22T08:56:58-04:00
<p> Last week I put out a series of screencast style demos that sought to demonstrate the core elements of our soon to be released Javascript Toolkit called OAT (<a href="http://www.openlinksw.com/oat/">OpenLink Ajax Toolkit</a>) and its Ajax Database Connectivity layer. </p> <p> The screencasts covered the following functionality realms: </p> <ol> <li> <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=982">SQL Query By Example (basic)</a> </li> <li> <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=983">SQL Query By Example (advanced - pivot table construction)</a> </li> <li> <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=981">Web Form Design (basic database driven map based mashup)</a> </li> <li> <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=985">Web Form Design (advanced database driven map based mashup)</a> </li> </ol> <p> To bring additional clarity to the screencasts demos and OAT in general, I have saved a number of documents that are the by products of activities in the screenvcasts: </p> <ol> <li> <a href="http://demo.openlinksw.com/public_demos/queries/customer_qry1.xml">Live XML Document produced using SQL Query By Example (basic)</a> (you can use drag and drop columns across the grid to reorder and sort presentation)</li> <li> <a href="http://demo.openlinksw.com/public_demos/reports/Pivots/employee_sales_by_ship_country_pivot.xml">Live XML Document produced using QBE and Pivot Functionality</a> (you can drag and drop the aggregate columns and rows to create your own views etc..)</li> <li> <a href="http://demo.openlinksw.com/public_demos/reports/MapMashups/country_flags_google_frm2.xml">Basic database driven map based mashup</a> (works with FireFox, Webkit, Camino; click on pins to see national flag)</li> <li> <a href="http://demo.openlinksw.com/public_demos/reports/MapMashups/employee_sales_by_ship_country_pivot_google.xml">Advanced database driven map based mashup</a> (works with FireFox, Webkit, Camino; records, 36, 87, and 257 will unveil pivots via lookup pin)</li> </ol> <p> Notes: </p> <ul> <li>âAdvancedâ, as used above, simply means that I am embedding images (employee photos and national flags) and a database driven pivot into the map pins that serve as details lookups in classic SQL master/details type scenarios.</li> <li>The âAjax Call In Progress..â dialog is there to show live interaction with a remote database (in this case <a href="http://virtuoso.openlinksw.com">Virtuoso</a> but this could be any ODBC, JDBC, OLEDB, ADO.NET, or XMLA accessible data source)</li> <li>The data access magic source (if you want to call it that) is XMLA - a standard that has been in place for years but completely misunderstood and as a result under utilized</li> </ul> <p> You can see a full collection of saved documents at the following locations: </p> <ul> <li> <a href="http://demo.openlinksw.com/public_demos/reports/MapMashups/">My Mashups demo directory</a> (Google and Yahoo! demo variants but note these do not work with Safari or IE at the current time. IE7 issues will be resolved in the next day or so) </li> <li> <a href="http://demo.openlinksw.com/public_demos/reports/Pivots/">My Pivots demo directory</a> (other Pivots will be added as I build and save them) </li> <li> <a href="http://demo.openlinksw.com/public_demos/queries/">My Saved Queries</a> (a collection of saved QBE generated queries)</li> </ul>
Screencast: Yahoo! Maps variation of Ajax Database Connectivity Maps Mash-up
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#986
2006-05-26T22:49:00Z
2006-06-22T08:56:58-04:00
This is a Yahoo! maps variation of the <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=985">Google Maps based Forms Designer mash-up screencast</a>.<br /> <br /> <br />
Screencast: Building Database Centric Web 2.0 Mash-ups using Ajax Database Connectivity
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#985
2006-05-26T22:38:00Z
2006-06-22T08:56:58-04:00
This screencast covers the actual codeless process of building a database centric Web 2.0 mash-up using OAT's database-aware Forms Designer. This is basically the simplicity of Paradox or Microsoft ACCESS form building delivered via Ajax without any database or operating system lock-in. This demo uses the Google Mapping Service (note: there is a <a href="http://www.openlinksw.com/dataspace/%7Ekidehen/blog/public/Screencasts/oat-formdesigner-mashup-yahoo-maps-demo1.mov">Yahoo! Mapping Service screencast demo</a> that follows this post). Also note that fact that in this demonstration I actually incorporate the Pivot building functionality from an earlier <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=983">Ajax based Pivot Building screencast</a>.<br /> <br />
Building Pivot Tables using Ajax Database Connectivity
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#983
2006-05-26T22:08:00Z
2008-02-04T20:43:35.000004-05:00
This screencast demo (enclosure attached) is a continuation from my earlier <a href="http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&id=982">Ajax and QBE screencast</a> demo. This time the focus is on building Excel like Pivot tables using data exposed via Ajax Database Connectivity.<br />
Screencast: Ajax Database Connectivity and SQL Query By Example
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#982
2006-05-26T21:59:00Z
2006-06-22T08:56:58-04:00
AJAX Database Connectivity is the Data Access Component of OAT (<a href="http://www.openlinksw.com/oat/">OpenLink AJAX Toolkit</a>). It's basically an <a href="http://www.xmla.org/">XML for Analysis</a> (XMLA) client that enables the development and deployment of database independent Rich Internet Applications (RIAs). Thus, you can now develop database centric AJAX applications without lock-in at the Operating System, Database Connectivity mechanism (ODBC, JDBC, OLEDB, ADO.NET), or back-end Database levels. <br /> <br />XMLA has been around for a long time. Its fundamental goal was to provide Web Applications with Tabular and Multi-dimensional data access before it fell off the radar (a story too long to tell in this post).<br /> <br />AJAX Database connectivity only requires your target DBMS to be XMLA (direct), ODBC, JDBC, OLEDB, or ADO.NET accessible. <br /> <br />I have attached a Query By Example (QBE) screencast movie enclosure to this post (should you be reading this post Web 1.0 style). The demo shows how Paradox-, Quattro Pro-, Access-, and MS Query-like user friendly querying is achieved using AJAX Database Connect Connectivity<br /> <br />
A Web 2.0 Style Mash-up using the OpenLink Ajax Toolkit (OAT)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-25#981
2006-05-25T20:47:00Z
2006-06-22T08:56:58-04:00
We are now on the verge of finally releasing one of the many items discussed in my recent <a href="http://www.usnet.private:8889/weblog/kidehen@openlinksw.com/127/index.vspx?page=&id=965&sid=e295397b4a9d07fa9c12baf31569aa97&realm=wa">chat with Jon Udell</a>. The item in question is the OpenLink Ajax Toolkit (OAT) that enables the rapid development of Database Independent Rich Internet Applications. My very first public screencast is deliberately silent (since its a live work in progress etc.). <br /> <br />The screencast style demo covers the production of a map based mashup that simply unveils the national flag of each country underneath its map marker (a lookup associated with geocoded map pin).<br /> <br />This post is also a deliberate test of the automatic production of IPod and Yahoo RSS sytle syndication gems based on the content of my blog post. Naturally, this is a demonstration of the soon to be unveiled OpenLink Data Spaces technology (the one that supports GData and SPARQL Query Services).<br /> <br />BTW - The the Data Space that is this blog has been <a href="http://www.openlinksw.com/dataspace/%7Ekidehen/GData">GData</a> aware for a few weeks now (I digress, just watch the movie!):<br /> <br />Note: If you are reading this post Web 1.0 style (i.e. via traditional non aggregating browser UI) then click on the "enclosure" link to grab the quicktime movie file. If on the other hand your are reading via a Web 2.0 aggregator, note that the Podcast Gem should alert you to the existence of the movie enclosure.<br />
Two graphs that explain most IT dysfunction (Part I)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-05-15#974
2006-05-15T16:06:05Z
2006-06-22T08:56:58-04:00
<p>Dumped verbatim below, is a timeless post by <a href="http://www.breakawayrepublic.com/blog">Louche Cannon</a>. It is especially poignant in light of the many <a href="http://www.oreillynet.com/xml/blog/2006/05/wheres_the_semantic_web_excite.html">misguided perceptions about the mutual exclusivity of Web 2.0 and the Semantic Web</a>. Enjoy!</p> <blockquote> <p> <a href="http://www.breakawayrepublic.com/blog/?p=42#comments">Two graphs that explain most IT dysfunction (Part I)</a>: "</p> <p>Inspired by reading about other peopleâs <a href="http://edu-blogger.blogspot.com/2005/05/my-blogging-weakness.html">blogging weaknesses</a>, Iâve decided to finally get this one off the back burner and post it. Iâm pretty sure that this isnât original, but I started thinking about this way back in 1996 (pre-social-bookmarking) and Iâve lost my pointer to whatever influenced it. Anybody who can set me straight- Iâd appreciate it.</p> <p>So here goes.</p> <p>There are two graphs which, when seen together, explain a hell of a lot about various forms of dysfunction that you see in the technology world.</p> <p>In this first graph, <strong>X</strong> represents relative âtechnical expertiseâ and <strong>Y</strong> represents the âperceived benefitâ in the introduction of a new technology:</p> <p> <a href="http://www.breakawayrepublic.com/blog/wp-content/benefit.png" onclick="window.open('http://www.breakawayrepublic.com/blog/wp-content/benefit.png','popup','width=676,height=600,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://www.breakawayrepublic.com/blog/wp-content/benefit-tm.jpg" height="100" width="112" border="1" hspace="4" vspace="4" alt="Benefit" /> </a> </p> <p>The summary is that technical neophytes (A) tend to see high potential benefit in new technologies, while people who have a bit of technology experience (B) grow increasingly cynical about technology claims and can rattle-off the names of technologies that they have seen over-hyped and that have under-delivered. The interesting thing though, is that, as people become really expert in technology (C), their view of the potential benefits in new technology starts to increase again. At the far right of this scale Iâm talking about the real experts- the alpha-geeks of the world.</p> <p>In the second graph, <strong>X</strong> again represents technical expertise, but <strong>Y</strong> represents âperceived riskâ associated with the introduction of a new technology:</p> <p> <a href="http://www.breakawayrepublic.com/blog/wp-content/risk.png" onclick="window.open('http://www.breakawayrepublic.com/blog/wp-content/risk.png','popup','width=676,height=600,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://www.breakawayrepublic.com/blog/wp-content/risk-tm.jpg" height="100" width="112" border="1" hspace="4" vspace="4" alt="Risk" /> </a> </p> <p>Here the curve is inverted, but the basic pattern is the same. The neophytes (A) are blissfully unaware of the things that can go wrong with the introduction of a new technology. The tech-savvy (B) are battle-scarred and have seen (and possibly caused) countless disasters. The alpha-geeks (C) have also seen their share of problems, but they have also learned from their mistakes and know how to avoid them in the future. The alpha-geeks understand how to manage the risk.</p> <p>Now things get interesting when you map these two dynamics against each other:</p> <p> <a href="http://www.breakawayrepublic.com/blog/wp-content/benefit_risk.png" onclick="window.open('http://www.breakawayrepublic.com/blog/wp-content/benefit_risk.png','popup','width=676,height=600,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://www.breakawayrepublic.com/blog/wp-content/benefit_risk-tm.jpg" height="100" width="112" border="1" hspace="4" vspace="4" alt="Benefit Risk" /> </a> </p> <p>You see that neophytes in group A have essentially the same world view as the alpha-geeks in group C, but for completely different reasons. The trouble starts when you realize that most of senior executives, venture capitalists and members of the popular press are in group A. At the other extreme, most R&D groups, architecture groups, independent consultancies, technology pundits, etc. are in group C . There are a few problems with this:</p> <ul> <li>People in group A will often talk to and solicit advice from people in group C</li> <li>There are relatively few people in group C</li> <li>Most of the people who actually have to implement new technologies are in group B.</li> </ul> <p>So you can start to see the problem.</p> <p>In <strong><a href="http://www.breakawayrepublic.com/blog/?p=44">Part II</a></strong> Iâl talk some more about group B and Iâll discuss some of the classic patterns that emerge when A, B and C try to work with each other. </p>" </blockquote>
Virtuoso is Officially Open Source!
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-04-11#951
2006-04-11T18:01:44Z
2006-07-21T07:22:20.000001-04:00
<p>I am pleased to unveil (officially) the fact that <a href="http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/04-11-2006/0004338324&EDATE=">Virtuoso is now available in Open Source form</a>.</p> <p></p> <h4>What Is Virtuoso?</h4> <p>A powerful next generation server product that implements otherwise distinct server functionality within a single server product. Think of Virtuoso as the server software analog of a dual core processor where each core represents a traditional server functionality realm.</p> <p></p> <h4>Where did it come from?</h4> <p>The <a href="http://virtuoso.openlinksw.com/wiki/main/Main/VOSHistory">Virtuoso History page</a> tells the whole story.</p> <p></p> <h4>What Functionality Does It Provide?</h4> The following: <ul> 1. Object-Relational DBMS Engine (ORDBMS like PostgreSQL and DBMS engine like MySQL) </ul> <ul> 2. XML Data Management (with support for XQuery, XPath, XSLT, and XML Schema) </ul> <ul> 3. RDF Triple Store (or Database) that supports SPARQL (Query Language, Transport Protocol, and XML Results Serialization format) </ul> <ul> 4. Service Oriented Architecture (it combines a BPEL Engine with an ESB) </ul> <ul> 5. Web Application Server (supports HTTP/WebDAV) </ul> <ul> 6. NNTP compliant Discussion Server </ul> And more. (see: <a href="http://virtuoso.openlinksw.com">Virtuoso Web Site</a>) <p> 90% of the aforementioned functionality has been available in Virtuoso since 2000 with the RDF Triple Store being the only 2006 item.</p> <p></p> <h4>What Platforms are Supported</h4> <p> 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).</p> <p></p> <h4>Why Open Source?</h4> <p>Simple, there is no value in a product of this magnitude remaining the "best kept secret". That status works well for our competitors, but absolutely works against the legions of new generation developers, systems integrators, and knowledge workers that need to be aware of what is actually achievable today with the right server architecture.</p> <p></p> <h4>What Open Source License is it under?</h4> <p>GPL version 2.</p> <p></p> <h4>What's the business model?</h4> <p>Dual licensing.</p> <p>The Open Source version of Virtuoso includes all of the functionality listed above. While the Virtual Database (distributed heterogeneous join engine) and Replication Engine (across heterogeneous data sources) functionality will only be available in the commercial version. </p> <p></p> <h4>Where is the Project Hosted?</h4> <p>On <a href="http://sourceforge.net/projects/virtuoso">SourceForge.</a> </p> <p></p> <h4>Is there a product Blog?</h4> <p>Of course! </p> <p>Up until this point, the <a href="http://virtuoso.openlinksw.com/blog/">Virtuoso Product Blog</a> has been a covert live demonstration of some aspects of Virtuoso (Content Management). My Personal Blog and the Virtuoso Product Blog are actual Virtuoso instances, and have been so since I started blogging in 2003.</p> <p>Is There a product Wiki?</p> <p>Sure! <a href="http://virtuoso.openlinksw.com/wiki/main/">The Virtuoso Product Wiki</a> is also an instance of Virtuoso demonstrating another aspect of the Content Management prowess of Virtuoso.</p> <p></p> <h4>What About Online Documentation?</h4> <p>Yep! <a href="http://docs.openlinksw.com/virtuoso/">Virtuoso Online Documentation</a> is hosted via yet another Virtuoso instance. This particular instance also attempts to demonstrate Free Text search combined with the ability to repurpose well formed content in a myriad of forms (Atom, RSS, RDF, OPML, and OCS).</p> <p></p> <h4>What about Tutorials and Demos?</h4> <p>The <a href="http://demo.openlinksw.com/tutorial/">Virtuoso Online Tutorial</a> Site has operated as a live demonstration and tutorial portal for a numbers of years. During the same timeframe (circa. 2001) we also assembled a few Screencast style demos (their look feel certainly show their age; updates are in the works).</p> <p>BTW - We have also updated the <a href="http://virtuoso.openlinksw.com/FAQ/">Virtuoso FAQ</a> and also released a number of missing <a href="http://virtuoso.openlinksw.com/Whitepapers/">Virtuoso White Papers</a> (amongst many long overdue action items).</p>
Getting Closer (Booting solved): WinXP and OSX dual boot in MacBook Pro
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-03-19#941
2006-03-19T22:40:55Z
2006-07-21T07:23:10.000001-04:00
<p>(Directly From <a href="http://nirlog.com">Nirlog.com</a>:)</p> <p> <a href="http://nirlog.com/2006/03/18/winxp-and-osx-dual-boot-in-macbook-pro/#comments">WinXP and OSX dual boot in MacBook Pro</a>: "</p> <p> <img height="332" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-start2.gif" /> </p> <p>Finally Iâve succeeded in installing Windows XP in MacBook Pro. Now it can dual boot between Windows XP and MacOS X. Thereâre few issues with windows xp but being able to boot smoothly between these 2 OSes are really amazing. Iâve followed this <a href="http://wiki.onmac.net/index.php/HOWTO">HOWTO</a> where more and more information is being added every few hours. I think most of the minor problems will be solved soon. If you want to install it for your self or want more information <a href="http://wiki.onmac.net/index.php/Main_Page">this wiki</a> is the best place to go. Here Iâm posting the photos of major installation sequence and some problems I encountered.</p> <p> <a id="more-96"></a> </p> <p> <strong>Installation</strong> </p> <p> 1. Downloaded <a href="http://download.onmac.net/Winxponmac_0.1.zip">winxponmac0.1.zip</a> </p> <p>Windows XP Pro CD that came with my Samsung Notebook is SP1 but the patch works only with SP2. So this is what I did:</p> <p> 2. Downloaded <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=049C9DBE-3B8E-4F30-8245-9E368D3CDB5A&displaylang=en">WinXP SP2</a> separately.</p> <p> 3. Used the free tool <a href="http://www.nliteos.com/nlite.html">nLite</a> to integrate the WinXP SP2 with the XP Pro CD (SP1) and created the WinXP SP2 CD source.</p> <p> 4. Then followed <a href="http://wiki.onmac.net/index.php/HOWTO#Step-by-step_Instructions">Step-by-step-instruction</a> </p> <ul> <li> Burned the customized WinXP CD.</li> <li> Partitioned the disk using OSX CD.</li> <li> Installed OSX.</li> </ul> <p> <img height="282" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-burn-cd.gif" /> </p> <p> 5. Started Windows XP installation.</p> <p> <img height="356" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-xpinstall.gif" /> </p> <p> 6. I encountered a problem with the partition listing. I was presented with following options.</p> <ul> <li> C: Partition 1 (EFI) [FAT32]</li> <li> unpartitioned space</li> <li> E: Partition 2 [unknown]</li> <li> unpartitioned space</li> </ul> <p> <img height="341" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-partition-problem.gif" /> </p> <p>According to the guide the correct option should be as following:</p> <ul> <li>E: Partition1 (EFI) [FAT32]</li> <li>C: Partition2 [Unknown]</li> <li>F: Partition3 [Unknown]</li> </ul> <p>If you choose the Partition2 then youâll get follwing error:</p> <p> <img height="344" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-partition-problem1.gif" /> </p> <p> 7. To solve the above problem I selected the first 'unpartitioned space,' then pressed 'C' to create a new partition. As described in <a href="http://www.macfixit.com/article.php?story=20060317100333451">this solution</a>. After this things went smoothly.</p> <p> <img height="360" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-partition-ok.gif" /> </p> <p> 8. Finally itâs installed</p> <p> <img height="332" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-start1.gif" /> </p> <p>9. System Properties</p> <p> <img height="531" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-sys-prop.gif" /> </p> <p>10. Device Manager with unrecognized devices.</p> <p> <img height="399" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-device.gif" /> </p> <p>11. Downloaded the drivers from <a href="http://wiki.onmac.net/index.php/Drivers">here</a>. Ethernet works fine. Wireless doesnât work. If I press restart it will shutdown.</p> <p>12. Browsing my blog.</p> <p> <img height="363" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-firefox.gif" /> </p> <p>13. Boot Choice: Mac OSX</p> <p> <img height="360" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-apple.gif" /> </p> <p>14. Boot Choice: Windows XP</p> <p> <img height="360" width="484" style="margin:5px;" alt="" src="http://nirlog.com/wp-content/uploads/2006/03/xponmac-12.gif" /> </p> <p>Now thereâre few driver issues Iâm quite sure theyâll be solved soon.</p>"
WINE Arrives for Intel Macs
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2006-02-09#932
2006-02-09T14:29:16Z
2006-06-22T08:56:58-04:00
<p><a href="http://www.osx86project.org/index.php?option=com_content&task=view&id=112&Itemid=2">WINE Arrives for Intel Macs</a>: " Though the precious dream of dual-booting our Intel Macs has not descended, a convenient alternative has arrived. Although fully functional on developers releases of OS X for Intel, the WINE compatibility layer, which allows Windows programs to run on *nix systems including OS X, was not available for the public release of 10.4.4. However, thanks to the hard work of the folks at Darwine (http://darwine.opendarwin.org/) and their contributors, it appears this barrier has been broken! Find out how to compile WINE and view screenshots in our forum (http://forum.osx86project.org/index.php?showtopic=8699). "</p> <p>(Via <a href="http://www.osx86project.org">The OSx86 Project</a>.)</p>
Saving the Net from the pipeholders
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-11-16#904
2005-11-16T18:23:13Z
2006-06-22T08:56:58-04:00
<p>An interesting post that I have place verbatim for the following reasons: </p><ul>1. Its Importance (generally speaking)</ul><ul>2. Lot's of Link Love (A-List Blogger Style see: <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">Summary</a> to see what <a href="http://www.openlinksw.com/blog/~kidehen">My Blog</a> does with these links)</ul><ul>3. Time-to-show on <a href="http://memeorandum.com">Memeorandum</a> (how, when, and if at all, are results that are of personal interest)</ul><p>Anyway, read the post from <a href="http://doc.weblogs.com/">Doc Searls</a> titled: <a href="http://doc.weblogs.com/2005/11/16#savingTheNetFromThePipeholders">Saving the Net from the pipeholders</a></p><p>"I've spent much of the last two weeks writing an essay that just went up at <a href="http://linuxjournal.com">Linux Journal</a>: <a href="http://www.linuxjournal.com/article/8673">Saving the Net: How to Keep the Carriers from Flushing the Net Down the Tubes</a>. It's probably the longest post I've ever put up on the Web. It's certainly the most important. And not just to me.</p><p>I started writing it after a recent surprise visit by <a href="http://www.isen.com/blog/">David Isenberg</a> to Santa Barbara. He's the one who got me â and, I hope, us â going.</p><p>I finished writing it yesterday after <a href="http://blogs.zdnet.com/BTL/">David Berlind</a> published <a href="http://blogs.zdnet.com/BTL/?p=2160">three</a><a href="http://blogs.zdnet.com/BTL/?p=2161">excellent</a><a href="http://blogs.zdnet.com/BTL/?p=2157">pieces</a>, which I highly recommend reading, and acting upon.</p><p>For guidance during the rest of this thing (whether they knew it or not), I also want to thank <a href="http://www.hyperorg.com/blogger/">David Weinberger</a>, <a href="http://scripting.com/">Dave Winer</a>, <a href="http://blogs.zdnet.com/Gillmor/">Steve Gillmor</a>, <a href="http://werblog.com/">Kevin Werbach</a>, <a href="http://craphound.com/">Cory Doctorow</a>, <a href="http://zgp.org/~dmarti/">Don Marti</a>, <a href="http://www.stallman.org/">Richard M. Stallman</a>, <a href="http://esr.ibiblio.org/">Eric S. Raymond</a>, <a href="http://scrawford.blogware.com/blog">Susan Crawford</a>, <a href="http://lessig.org/blog/">Larry Lessig</a>, <a href="http://blogs.law.harvard.edu/palfrey/">John Palfrey</a>, <a href="http://www.spot-on.com/nolan/">Chris Nolan</a>, <a href="http://www.buzzmachine.com/">Jeff Jarvis</a>, <a href="http://www.craigburton.com/">Craig Burton</a>,<a href="http://www.andrewsullivan.com/"> Andrew Sullivan</a>, <a href="http://arstechnica.com/news.ars/post/20011210-2489.html">Paul Kunz</a>, <a href="http://blog.deanland.com/">Dean Landsman</a>, <a href="http://www.mattwelch.com/warblog.html">Matt Welch</a>, <a href="http://www.projo.com/shenews">Sheila Lennon</a>, <a href="http://www.georgelakoff.com/">George Lakoff</a>, <a href="http://gigaom.com/">Om Malik</a>, <a href="http://www.ssc.com/xstatic/corporate/staff/phil.html">Phil Hughes</a>, <a href="http://www.newmediamusings.com/">J.D. Lasica</a>, <a href="http://www.dynamist.com/weblog/">Virginia Postrel</a>, <a href="http://longtail.typepad.com/the_long_tail/">Chris Anderson</a>, <a href="http://www.release1-0.com/esther/">Esther Dyson</a>, <a href="http://www.smallworks.com/">Jim Thompson</a>, <a href="http://micah.sifry.com/">Micah Sifry</a>, <a href="http://blog.barlowfriendz.net/">John Perry Barlow</a>, <a href="http://www.eff.org/">The EFF</a>, <a href="http://cyber.law.harvard.edu">the Berkman Center</a>, the <a href="http://www.personaldemocracy.com/">Personal Democracy Forum</a> and others I'm overlooking but will fill in later when I have the time.</p><p>Although it's kinda huge, <a href="http://www.linuxjournal.com/article/8673">Saving the Net</a> wasn't written as a Finished Work, but rather as a conversation starter â a way to change a rock we're pushing uphill to a <a href="http://doc.weblogs.com/2005/03/28#betOnTheSnowball">snowball</a> we're rolling downhill.</p><p><a href="http://randomfoo.net/oscon/2002/lessig/">Larry Lessig started rolling</a> it at OSCON in 2002, and in various other ways before that, and the whole thing has been too damn <a href="http://en.wikipedia.org/wiki/Sisyphus">sisyphean</a> for too damn long. Time to change that.</p><p>There's a thesis involved: that the Net is in danger of becoming what <a href="http://werblog.com/">Kevin Werbach</a><a href="http://werbach.com/blog/archives/2005/11/not_the_interne.html">calls</a>'a private toiled garden for the phone companies', but that the real enemy is in how we understand the Net itself. We have choices there, and those choices may mean life or death for the Net as most of us have known it â and taken it for granted â for the last decade or more.</p><p>A couple days ago I spoke to a group of about thirty local citizens here in Santa Barbara County, gathered in the County supervisors' conference room to discuss forming a broadband task force. Early on, I asked people what the Net was. The answers were varied, but had one thing in common: it was a <i>place</i>, and not just fiber and copper." </p>
Self Annotation of Semantic Web (BBC Demo)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-10-28#887
2005-10-28T22:54:44Z
2006-06-22T08:56:58-04:00
<blockquote><p><a href="http://theobvious.typepad.com/blog/2005/10/stop_whatever_y.html">Stop whatever you are doing ...</a>: " </p><div xmlns="http://www.w3.org/1999/xhtml"><p>.. and go and read <a href="http://www.plasticbag.org/archives/2005/10/on_the_bbc_annotatable_audio_project.shtml">Tom Coates' explanation</a> of his last project with the BBC. After 21 years working in broadcasting Ireckon this is one of the coolest things to happen for a very, very long time.</p><p>The ramifications of this will go very deep indeed."</p></div> <p>(Spotted Via <a href="http://theobvious.typepad.com/blog/">The Obvious?</a>.)</p></blockquote><p> Yes, the ramifications are deep! <a href="http://www.plasticbag.org/">Tom Coates'</a> screencast demonstrates an internal variation of an activity that is taking place on many fronts (concurrently) across the NET. I tend to refer to this effort as "<a href="http://www.openlinksw.com/weblog/kidehen@openlinksw.com/127/index.vspx?page=&id=849">Self Annotation</a>"; the very process that will ultimately take us straight to "<a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=#39semantic%20web#39%20&type=text&output=html">Semantic Web</a>". It is going to happen much quicker than anticipated because technology is taking the pain out of metadata annotation (e.g. what you do when you tag everything that is ultimately URI accessible). Technology is basically delivering what <a href="http://weblog.infoworld.com/udell">Jon Udell</a> calls: <a href="http://weblog.infoworld.com/udell/2004/11/08.html">"reducing the activation threshold"</a>.</p><p>Using my comments above for context placement, I suggest you take a look at, or re-read <a href="http://weblog.infoworld.com/udell/2005/10/27.html#a1330">Jon Udell's post titled: Many Meanings of Metadata</a>. </p><p>Once again, the Web 2.0 brouhaha (in every sense of the word) is a reaction to a critical inflection that ultimately transitions the "Semantic Web" from "Mirage" to "Nirvana". Put differently (with humor in mind solely!), Web 2.0 is what I tend to call a "John the Baptist" paradigm, and we all know what happened to him :-)</p><p>Web 2.0 is a conduit to a far more important destination. The tendency to treat Web 2.0 as a destination rather than a conduit has contributed to the recent spate of <a href="http://c2.com/cgi/wiki?SetTheBozoBit">Bozo bit</a> flipping posts all over the blogosphere (is this an attempt to behead John, metaphorically speaking?). Humor aside, a really important thing about the Web 2.0 situation is that when we make the quantum <a href="http://www.pbs.org/wgbh/nova/link/evolution.html">evolutionary leap (internet time, mind you) to the "Semantic Web"</a> (or whatever groovy name we dig up for it in due course) we will certainly have a plethora of reference points (I mean <a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&q=#39web%202.0#39&type=text&output=html">Web 2.0 URIs</a>) ensuring that we do not revisit the "Missing Link" evolutionary paradox :-)</p><p> BTW - You can see some example of my contribution to the ongoing annotation process by looking at: </p><ul><a href="http://www.openlinksw.com/weblog/kidehen@openlinksw.com/127/index.vspx?page=summary">My Blog Summary Page</a></ul><ul><a href="http://www.openlinksw.com/weblog/kidehen@openlinksw.com/127/index.vspx?page=linkblog">My Linkblog</a></ul><ul><a href="http://www.openlinksw.com/weblog/public/search.vspx?blogid=127">My Blog Search</a></ul><ul><a href="http://www.openlinksw.com/BlogAPI/services.vsmx">My Blog Query Service</a> (click on the enhanced view if you're a SOAP geek; also note blogid=127)</ul>
A Webpage is Not An API or a Platform (The Populicio.us Remix)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-09-16#867
2005-09-16T17:47:38Z
2006-06-22T08:56:58-04:00
<blockquote><p><a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=9e1811b8-f4f9-4407-aff7-92b3cd170f73">A Webpage is Not An API or a Platform (The Populicio.us Remix)</a>: "</p><p> A few months ago in my post <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=87ad1fa6-08a9-491f-90c3-c77b22002c0c">GMail Domain Change Exposes Bad Design and Poor Code</a>, I wrote <em>Repeat after me, a web page is not an API or a platform</em>. It seems some people are still learning this lesson the hard way. In the post <a href="http://www.readwriteweb.com/archives/002829.php">The danger of running a remix service</a> Richard MacManus writes </p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p> <a href="http://populicio.us/">Populicio.us</a> was a service that used data from social bookmarking site <a href="http://del.icio.us/">del.icio.us</a>, to create a site with enhanced statistics and a better variety of 'popular' links. However the Populicio.us service has just been taken off air, because its developer can no longer get the required information from del.icio.us. <a href="http://populicio.us/">The developer of Populicio.us wrote</a>: </p> <p> 'Del.icio.us doesn't serve its homepage as it did and I'm not able to get all needed data to continue Populicio.us. Right now Del.icio.us doesn't show all the bookmarked links in the homepage so there is no way I can generate real statistics.' </p> <p> This plainly illustrates the danger for remix or mash-up service providers who rely on third party sites for their data. del.icio.us can not only giveth, it can taketh away. </p> </blockquote> <p dir="ltr"> It seems Richard Macmanus has missed the point. The issue isn't depending on a third party site for data. The problem is depending on screen scraping their HTML webpage. An API is a service contract which is unlikely to be broken without warning. A web page can change depending on the whims of the web master or graphic designer behind the site. </p> <p dir="ltr"> Versioning APIs is hard enough, let alone trying to figure out how to version an HTML website so screen scrapers are not broken. Web 2.0 isn't about screenscraping. Turning the Web into an online platform isn't about legitimizing bad practices from the early days of the Web. Screen scraping needs to die a horrible death. Web APIs and Web feeds are the way of the future. </p>" <p>(Via <a href="http://www.25hoursaday.com/weblog/">Dare Obasanjo aka Carnage4Life</a>.)</p></blockquote> Amen!
World Wide Web of Junk
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-05-20#849
2005-05-20T23:07:38Z
2006-06-22T08:56:58-04:00
<div align="left">After digesting <a href="http://obliqueangle.blogspot.com/">Oblique Angle</a>'s post titled: <a href="http://obliqueangle.blogspot.com/2005/05/world-wide-web-of-junk.html">World Wide Web of Junk</a>, it was nice to be reassured that I am not part of a shrinking minority of increasingly peturbed Web users. The post excerpt below is what compelled me to contribute some of my thoughts about the current state of the Web and a future "Semantic Web".</div> <blockquote style="margin-right: 0px;" dir="ltr"> <div align="left">The value of the Internet as a repository of useful information is very low. <a href="http://faculty.haas.berkeley.edu/shapiro/">Carl Shapiro </a>in <a href="http://www.inforules.com/">âInformation Rulesâ</a> suggests that the amount of actually useful information on the Internet would fit within roughly 15,000 books, which is about half the size of an average mall bookstore. To put this in perspective: there are over 5 billion unique, static & publicly accessible web pages on the www. Apparently Only 6% of web sites have educational content (Maureen Henninger, <a href="http://www.mja.com.au/public/bookroom/1999/mullins/mullins.html">âDonât just surf the net: Effective research strategiesâ. </a>UNSW Press). Even of the educational content only a fraction is of significant informational value.</div></blockquote> <div dir="ltr" align="left">Noise is taking over the Web at an alarming rate (to be expected in a sense ), and even though <a href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a> (TBL) had the foresight to create the Web, many see nothing but futility in his vision for a "Semantic Web" (I don't!). A recent example of such commentary comes from Eric Nee's CIO article, titled: <span class="print_article_title"><a href="http://www.cioinsight.com/print_article2/0,2533,a=151806,00.asp">Web Future is Not Semantic, Or Overly Orderly</a>. I take issue with this article because, like most (who have been bitten at least once), I don't like mono culture</span><span class="print_article_title">. </span>This article inadvertently promotes "Google Mono Culture". I have excerpted the more frustrating parts of this article below:</div> <blockquote style="margin-right: 0px;" dir="ltr"> <div dir="ltr" align="left"> <p><em>..As Stanford students, Larry Page and Sergey Brin looked at the same problemâhow to impart meaning to all the content on the Webâand decided to take a different approach. The two developed sophisticated software that relied on other clues to discover the meaning of content, such as which Web sites the information was linked to. And in 1998 they launched Google..</em></p></div></blockquote> <p dir="ltr">You mean noise ranking. Now, I don't think Larry and Sergey set out to do this, but Google page ranks are ultimately based on the concept of "Google Juice" (aka links). The value quotient of this algorithm is accelerating at internet speed (ironically, but naturally). Human beings are smarter than computers, we just process data (not information!) much slower that's all. Thus, we can conjure up numerous ways to bubble up the google link ranking algorithms in no time (as is the case today). </p> <blockquote style="margin-right: 0px;" dir="ltr"> <p dir="ltr" align="left"><em>..What most differentiates Google's approach from Berners-Lee's is that Google doesn't require people to change the way they post content..</em></p></blockquote> <p dir="ltr" align="left">The Semantic Web doesn't require anyone to change how they post content either! It just provides a roadmap for intelligent content managment and consumption through innovative products. </p><blockquote style="margin-right: 0px;" dir="ltr"> <p dir="ltr" align="left"><em>..As Sergey Brin told Infoworld's 2002 CTO Forum, "I'd rather make progress by having computers under-stand what humans write, than by forcing -humans to write in ways that computers can understand." In fact, Google has not participated at all in the W3C's formulation of Semantic Web standards, says Eric Miller.. </em></p></blockquote> <p dir="ltr" align="left">Semantic Content generated by next generation content managers will make more progress, and they certainly won't require humans to write any differently. If anything, humans will find the process quite refreshing as and when participation is required e.g. clicking bookmarklets associated with tagging services such as '<a href="http://del.icio.us">del.icio.us</a>', <a href="http://de.lirio.us">'de.lirio.us</a>', or <a href="http://www.unalog.com">Unalog</a> and others. But this is only the beginning, if I can click on a bookmarklet to post this blog post to a tagging service, then why wouldn't I be able to incorporate the "tag service post" into the same process that saves my blog post (the post is content that ends up in a <a href="http://virtuoso.openlinksw.com">content management system</a> aka blog server)? </p><blockquote style="margin-right: 0px;" dir="ltr"> <p dir="ltr" align="left"><em>Yet Google's impact on the Web is so dramatic that it probably makes more sense to call the next generation of the Web the "Google Web" rather than the "Semantic Web."</em></p></blockquote> <p dir="ltr" align="left">Ah! so you think we really want the noisy "Google Web" as opposed to a federation of distributed Information- and Knowledgbases ala the "Semantic Web"? I don't think so somehow!</p> <p dir="ltr" align="left">Today we are generally excited about "tagging" but fail to see its correlation with the "Semantic Web", somehow? I have said this before, and I will say it again, the "Semantic Web" is going to be self-annotated by humans with the aid of intelligent and unobtrusive annotation technology solutions. These solutions will provide context and purpose by using our our social essence as currency. The annotation effort will be subliminal, there won't be a "Semantic Web Day" parade or anything of the like. It will appear before us all, in all its glory, without any fanfare. Funnily enough, we might not even call it "The Semantic Web", who cares? But it will have the distinct attributes of being very "Quiet" and highly "Valuable"; with no burden on "how we write", but constructive burden on "why we write" as part of the content contribution process (less Google/Yahoo/etc juice chasing for more knowledge assembly and exchange). </p><p dir="ltr" align="left">We are social creatures at our core. The Internet and Web have collectively reduced the connectivity hurdles that once made social network oriented solutions implausible. The eradication of these hurdles ultimately feeds the very impulses that trigger the critical self-annotation that is the basis of my fundamental belief in the realization of TBL's Semantic Web vision. </p><p dir="ltr" align="left"> </p>
A Collection of PHP and ODBC How-To Links
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-05-01#831
2005-05-01T15:46:45Z
2006-06-22T08:56:58-04:00
<p>In 2005 I am somewhat surprised at the steady level of emails and commentary expressing confusion about the use of PHP and ODBC.</p> <p>Here are a few links that resolve any confusion about this matter:</p> <ol> <li>OpenLink's PHP and iODBC HOWTO doc: <a href="http://www.iodbc.org/index.php?page=languages/php/odbc-phpHOWTO">http://www.iodbc.org/index.php?page=languages/php/odbc-phpHOWTO</a><br></li> <li>PHP Everywhere's guide: <a href="http://phplens.com/phpeverywhere/node/view/9">http://phplens.com/phpeverywhere/node/view/9</a><br></li> <li>Zili Zhang's piece from 1999 (time flies!): <a href="http://www.tldp.org/HOWTO/MSSQL6-Openlink-PHP-ODBC.html">http://www.tldp.org/HOWTO/MSSQL6-Openlink-PHP-ODBC.html</a><br></li> <li>Zend's ODBC Tutorial: <a href="http://www.zend.com/zend/tut/odbc.php">http://www.zend.com/zend/tut/odbc.php</a> </li></ol> <p>Or simple google on PHP and ODBC or PHP and iODBC ...</p>
Ajax, Hard Facts, Brass Tacks ... and Bad Slacks
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-04-29#825
2005-04-29T20:11:22Z
2006-06-22T08:56:58-04:00
<p>By <a href="http://internet-apps.blogspot.com/">Mark Bierbeck</a>:</p> <p><a href="http://internet-apps.blogspot.com/2005/04/ajax-hard-facts-brass-tacks-and-bad.html">Ajax, Hard Facts, Brass Tacks ... and Bad Slacks</a> </p> <div xmlns="http://www.w3.org/1999/xhtml">A number of people have contacted me recently about Ajax [<a href="about:blank#20050426-1">1</a>] -- a catchy name -- coined to provide an umbrella term for a particular group of technologies used to build web applications. The use of the word comes from Jesse James Garrett in a recent blog [<a href="about:blank#20050426-2">2</a>], and describes a class of internet applications written using JavaScript in a browser. By using JavaScript these apps have full access to the DOM, and as a consequence are able to make all sorts of changes to the page that the user is interacting with, without having to go back to the server.<br><br>When the application <em>does</em> need to go back to the server -- to deliver some data and get a response -- the idea is to keep the DOM intact so that the user has a smooth experience. This means that all communication with the server needs to take place outside of the normal HTML form mechanism, since this would obviously replace the current page.<br><br>Ajax addressed this, with what it calls 'asynchronous-JavaScript' -- retrieve only the data you need, and then directly manipulate the DOM to get the effect you want. 'Asynchronous-JavaScript' accounts for the first few letters of the name, with the remainder being the obligatory 'X' for XML (although XML is not really key to this technology, and many of the applications that are often cited as Ajax-apps don't use XML as the data medium).<br><br> <h2>Buzzing</h2>The response to Ajax has been pretty positive. In fact the only negatives have been either to suggest a change of name or to moan a little that "I've been doing this for years, why hasn't anyone noticed me?" (I won't put any links to those sort of articles, since they are a little embarassing -- after all, <em>everyone</em> has been doing this for years!)<br><br>Anyway, despite a couple of sour-pusses, the software community is almost universally excited, and the blog wires have glowed over the last few months with descriptions of Google Maps, GMail, and so on.<br><br>Just about everyone who has asked me about Ajax has expected me to be disappointed. Surely, they say, this makes the case for XForms weaker? But my answer is the exact opposite -- XForms and standards-based web applications are in every way superior to the techniques described as Ajax, since the whole <em>raison d'être</em> of XForms and XHTML 2 is to address the very problems that Ajax-like techniques suffer from.<br><br>That may come across as a little bold...so perhaps I should explain.<br><br> <h2>From Workaround to Feature</h2>We've all been using HTML mark-up for years now, and the language hasn't changed much in that time. As a consequence, the increasing demand for more complex web-pages has meant that the balance in our documents has shifted increasingly from vanilla mark-up to 'the workaround'. <br><br>Whether it's providing tooltips, dynamic/repeating data sections, or small portions of our page that change without having to request a new document, we've generally had to dive into script. But the shift from mark-up to script has meant that the mark-up language itself has been relegated to a mere carrier for programs.<br><br>Unfortunately this means that no-one gains -- it's annoying for the programmer to have to produce ever more convoluted spaghetti JavaScript to meet the demands of their audience, but it's also annoying for the non-programmer, who probably only wants a tooltip. And its particularly annoying for those who want to use documents on the web for more ambitious applications to find that most of the important stuff in a document is hidden away in script.<br><br>All is not lost, however, since this collection of 'workarounds' provides a rich source of real-life patterns that appear for authors and programmers, time and again. They may be workarounds, but they are much-needed ones.<br><br>The aim of the new generation of languages like XForms and XHTML 2 is to take these 'common patterns' and turn them into mark-up. Just like the HTML elements <code><a></code> and <code><form></code> pack an enormous amount of functionality into deceptively simple tags, so too can new declarative mark-up capture patterns that have emerged 'in the wild'.<br><br>(Note that this is the opposite of so-called folksonomies, where popular practice that occurs in the wild is left it the wild, and codification is regarded as a dirty word.)<br><br> <h2>The XML HTTP Request Object</h2>Let's take the much talked about XML HTTP Request Object (XMLHttpRequest). If you are not familiar with it, it was originally part of Microsoft's XML parser, and allows you to send and receive data outside of the normal HTML form processing. Since it's a handy feature to have in a client, other browsers have followed suit and it's now becoming the 'standard' way to communicate with servers without messing up your page. It's a corner-stone of Ajax. (A good summary with examples is on Jim Ley's jibbering.com site [<a href="about:blank#20050426-3">3</a>].)<br><br>But...we need to be clear that we're using XMLHttpRequest to get round a weakness in HTML forms. The problem we have is that even if you know that a server is about to give you some data, and the <em>server</em> knows it's about to give you some data, there's no way to tell your <em>form</em> that -- instead your page will be wiped out and replaced with whatever the server sends back.<br><br>Of course, constant round-tripping doesn't make it completely impossible to produce applications, and a lot of books and airline tickets are bought every day without the facility to get 'just the data'. But we all know it would reduce network traffic and create a smoother user experience if we could just send a list of books or seats, rather than a whole new page.<br><br>Over the years applications such as Microsoft's <em>Outlook Web Access</em> (OWA), have had to step around the HTML form to get just the data they need. But, whilst OWA considerably predates GMail, until the advent of XMLHttpRequest, the techniques used were quite difficult to manage. (Google Suggest is often cited as a good example of an Ajax-app, but interestingly merges old and new techniques; XMLHttpRequest is used to obtain a piece of JavaScript from a server, and this script contains a call to a client-side function, but using server-provided parameters. It's one of the techniques you might have used in the past with a hidden frame.)<br><br>So as many have said on their blogs, XMLHttpRequest is not a newly devised technique, but rather a generally accepted replacement for a very old technique. But ultimately that technique is a workaround since the <em>real</em> problem is that HTML forms will always replace the current page.<br><br><br> <h2>Beyond HTML Forms</h2>Whilst XMLHttpRequest gives us a way to get data to and from the server without losing our document, we've unfortunately thrown the baby out with the bath-water; whatever the weaknesses of HTML forms, you have to acknowledge that they are pretty simple to use. Here's an abbreviated version of Google's search form (note that the mark-up is HTML, not XML):<br><code><pre><br><form action=/search name=f><br> <input type=hidden name=hl value=en><br> <input maxLength=256 size=55 name=q value=""><br> <input type=submit value="Google Search" name=btnG><br></form><br> </pre></code><br>As you can see, the simple problem with HTML forms is that we don't say anything about where the data should go when we've received it from the server. The assumption in HTML of old is that we are just doing a kind of 'super-navigation', and no matter what we send to the server, it will only ever give us back a new web-page. (To put it a different way, you could say that <code><a></code> and <code><form></code> are pretty much the same thing.)<br><br>To see how this problem is resolved, let's code the same Google search in XForms:<br><code><pre><br><xf:submission id="sub-search"<br> action="http://www.google.com/complete/search?hl=en"<br> method="get" separator="&"<br> replace="all"<br>/><br> <br><xf:input ref="q"><br> <xf:label>Query:</xf:label><br></xf:input><br> <br><xf:submit submission="sub-search"><br> <xf:label>Google Search</xf:label><br></xf:submit><br> </pre></code><br>Although it will do exactly the same -- right down to replacing the current page -- it's a little different to the HTML mark-up. But the changes in structure have given us some major benefits, from accessible labels on our form controls, to the possibility of many different submissions for the same data.<br><br>But what it has also given us is the possibility of solving our data update problem. The <code>replace</code> attribute is actually optional in XForms, but I showed it in the previous mark-up so that you can compare it to this:<br><code><pre><br><xf:submission id="sub-search"<br> action="http://www.google.com/complete/search?hl=en"<br> method="get" separator="&"<br> replace="<span style="COLOR: red">instance</span>"<br>/><br> </pre></code><br>In this example the data returned from the server will just replace the instance that was sent, and our page will remain completely intact. (The <code>replace</code> attribute can take the values <code>all</code>, <code>instance</code>, or <code>none</code>.)<br><br>I won't show the full equivalent using XMLHttpRequest since it's pretty large, but I'll give a flavour of it. (Jim Ley's page -- referenced earlier -- shows how to search Google with XMLHttpRequest.)<br><br> <h3>The Script Version</h3>First we need to create an XMLHttpRequest object, but we need to do it in such a way that it will work on both Mozilla and IE:<br><code><pre><br>var req;<br> <br>function loadXMLDoc(url) {<br> // native XMLHttpRequest object<br> if (window.XMLHttpRequest) {<br> req = new XMLHttpRequest();<br> req.onreadystatechange = readyStateChange;<br> req.open("GET", url, true);<br> req.send(null);<br> // IE/Windows ActiveX version<br> } else if (window.ActiveXObject) {<br> req = new ActiveXObject("Microsoft.XMLHTTP");<br> if (req) {<br> req.onreadystatechange = readyStateChange;<br> req.open("GET", url, true);<br> req.send();<br> }<br> }<br>}<br> </pre></code><br>When a document is loaded via this function, the <code>readyStateChange()</code> method is invoked:<br><code><pre><br>function readyStateChange() {<br> // '4' means document "loaded"<br> if (req.readyState == 4) {<br> // 200 means "OK"<br> if (req.status == 200) {<br> // do something here<br> } else {<br> // error processing here<br> }<br> }<br>}<br> </pre></code><br>From a <em>programming</em> point of view, I guess you could say that there isn't a lot wrong with this, but then from a programming point of view there wasn't a lot wrong with Z80 or 6502 assembly languages -- I just wouldn't want to go back to them!<br><br>But the most important issue is that we have lost the very thing that was responsible for HTML's success -- the use of simple, clear, declarative mark-up, in which we simply state our intent, without having to write a program to do it for us. After all, the web took off because authors only had to master <code><a></code> in order to enter the exciting new world of 'hypertext' -- but XMLHttpRequest raises the bar again, and takes us right back into the heart of geek-world.<br><br> <h2>Beyond XMLHttpRequest</h2>But in keeping with the principle that I outlined above -- that XForms and XHTML 2 try to provide mark-up for commonly existing design patterns -- let's see if there are any other patterns that XMLHttpRequest has thrown up.<br><br>You will have noticed in the earlier script that we had tests for success and failure:<br><code><pre><br>if (req.status == 200) {<br> // do something here<br>} else {<br> // error processing here<br>}<br> </pre></code><br>XForms provides the same functionality through the use of events -- on success do this, on failure do that. This is far more powerful, since it hides the protocol-specific aspects of this code ("200" may be 'success' for HTTP, but it isn't 'success' when saving data to the hard-drive or sending an email).<br><br>XForms uses declarative mark-up to express those events, which again dramatically reduces coding:<br><code><pre><br><xf:action ev:observer="sub-search" ev:event="xforms-submit-error"><br> <xf:message level="modal"><br> Submission failed<br> </xf:message><br></xf:action><br> </pre></code><br>But there's lots, lots more in the <code>submission</code> part of XForms:<br> <ul><br> <li>it can provide full XML Schema validation before submitting the data;</li><br> <li>there is built in support for numerous types of serialisation, such as <code>multipart/related</code>;</li><br> <li>abstract methods are used so the code is independent of protocol. For example, since <code>put</code> means the same thing whether the target URL begins <code>http:</code> or <code>file:</code>, a form with relative paths will run unchanged on a local machine or a web server;</li><br> <li>it's extensible -- in formsPlayer 2.0 we have used the <code>submission</code> element to read and write from an ADO database, allowing programmers to convert forms from using the web to using a local database by doing nothing more than changing a single target URL. (Try doing that with XMLHttpRequest!)</li><br></ul><br><br>The <code>submission</code> part of XForms is in fact so powerful that it will eventually form a separate specification, for use in other languages.<br><br> <h2>From Patterns to Mark-up</h2>And there are plenty more patterns out there that were crying out to be turned into mark-up, and which are now incorporated into XForms and XHTML 2. Do you remember the days when if we wanted a tooltip that contained mark-up -- perhaps an image, or bold text -- we had to use a carefully placed <code><div></code>, a CSS <code>display: none;</code>, a <code>mouseover</code> event handler and a timer? Nowadays the programmer with better things to do than work with spaghetti-JavaScript just uses the XForms <code><hint></code> element, and for free they get platform independence (and therefore accessibility), as well as the ability to insert any mark-up.<br><br>And what about the days when we had to write code to open up a text-to-speech engine, and then invoke the various methods on the object to get it to speak its mind? Nowadays who wouldn't just use a CSS property on their XForms' <code>message</code>s?<br><br> <h3>Bad Slacks</h3>And do you remember...I'm sorry, this one always makes me laugh...do you remember how we used to write lots of JavaScript to recalculate the shopping-cart when a new item was added? I know it's hard to believe -- it's like looking at old photos of us all wearing flares. Anyway, thank God for straight trousers and the XForms dependency-engine.<br><br><img border="1" src="http://www.npr.org/programs/morning/features/2004/sep/fashion_week/satfever_nano140.jpg"> <br>But enough of the good old days, the days of assembly language, C and JavaScript...let's stick with the new.<br><br> <h2>Do Try This at Home</h2><br>To round all of this off, we'll take a look at Google Suggest, and we'll use XForms to implement it. I'll walk through the demo in a separate blog [<a href="about:blank#20050426-4">4</a>] so that this one doesn't get too cluttered -- and hopefully by disecting this simple but useful application, we can show how declarative mark-up scores over scripting.<br><br><br><a name="20050426-1">[1] Will AJAX help Google clean up?, c|net, <a href="http://news.com.com/Will+AJAX+help+Google+clean+up/2100-1032_3-5621010.html">http://news.com.com/Will+AJAX+help+Google+clean+up/2100-1032_3-5621010.html</a> <br><br><a name="20050426-2">[2] Ajax: A New Approach to Web Applications, Jesse James Garrett, Adaptive Path blog, <a href="http://www.adaptivepath.com/publications/essays/archives/000385.php">http://www.adaptivepath.com/publications/essays/archives/000385.php</a> <br><br><a name="20050426-3">[3] Using the XML HTTP Request object, <a href="http://jibbering.com/2002/4/httprequest.html">http://jibbering.com/2002/4/httprequest.html</a> <br><br><a name="20050426-4">[4] "Google Suggest" Using XForms, <a href="http://internet-apps.blogspot.com/2005/04/google-suggest-using-xforms.html">http://internet-apps.blogspot.com/2005/04/google-suggest-using-xforms.html</a> <br><br>Tags: <a href="http://technorati.com/tag/xforms" rel="tag">xforms</a> | <a href="http://technorati.com/tag/xbl" rel="tag">xbl</a> | <a href="http://technorati.com/tag/webapps" rel="tag">webapps</a> | <a href="http://technorati.com/tag/ajax" rel="tag">ajax</a> | <a href="http://technorati.com/tag/javascript" rel="tag">javascript</a> </div> <div align="right">[via <a href="http://internet-apps.blogspot.com/">Internet Applications</a>]</div>
OpenSearch & Potential Patent Abuse?
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-03-17#754
2005-03-17T22:47:49Z
2006-06-22T08:56:58-04:00
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>It finally dawned on me what <a href="http://www.reallysimplesyndication.com/2005/03/15#a379">OpenSearch</a> does. Basically you tell it about different search engines by showing it how to query something in each, and get back an RSS return. Then when you search for some term, say foo+bar, it performs the search in all the engines you have configured it for. So it's a way to group a bunch of search engines together and command them all to look for the same thing. It is clever. It is something that hasn't been done before, to my knowledge. That's the good news. The bad news is that Amazon is a leading patent abuser. So as good as this idea is, it's bad for all the rest of us, unless they tell us that they're granting us some kind of license to use the idea. [via <a href="http://www.scripting.com/">Scripting News</a>]</p></blockquote> <div align="right"> </div> <div align="left">I am no fan of Amazon's moves in the patent arena. At the same time I am very confident that OpenSearch isn't headed down this part. Virtualization isn't new or unique (irrespective of context), and the prior art defense should be pretty trivial. </div> <div align="left"> </div> <div align="left">For now, I like what OpenSearch offers, and would continue do so as long as there is no patent abuse associated with this (I certainly understand Dave Winer's concern; their track record isn't great re. this matter). </div> <div align="left"> </div> <div align="left">I should have an OpenSearch variant of this dynamic <a href="http://www.openlinksw.com/blog/search.vspx?blogid=127&q=amazon+patent%0D%0A&type=text&output=html">collection</a> of Amazon and patents related blog posts in the coming days (you will see a new OpenSearch gem alongside RSS/Atom/RDF).</div> <div align="left"> </div> <div align="left">BTW - <a href="http://www.openlinksw.com/blog/search.vspx?blogid=127&q=amazon%0D%0A&type=text&output=html">Here</a> is the dynamic collection of all my Amazon.com posts to date.</div> <div align="left"> </div> <div align="left"> </div>
An Interesting Marketing & PR Inflection In Progress
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-03-08#746
2005-03-08T19:50:00Z
2006-06-22T08:56:58-04:00
<p>Wikis, Blogs, and Search Engines are collectively fuelling a huge inflection across the interrelated realms of Technology Marketing and PR.</p> <p>When putting together a <a href="http://www.openlinksw.com/blog/~kidehen/index.vspx?id=736">post yesterday about "Virtualization"</a>, I instinctively looked to <a href="http://www.gurunet.com/">Gurunet</a>'s "<a href="http://answers.com/">answers.com</a>" service for information on the subject: Enterprise Information Integration (EII). Woe and behold! Here is what I found at the tail end of the answers.com <a href="http://www.answers.com/main/ntquery?s=eii&method=2&gwp=13">article</a> on this subject: </p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <div class="boilerplate metadata" id="cleanup" style="BORDER-RIGHT: rgb(119,153,187) 1px solid; PADDING-RIGHT: 1em; BORDER-TOP: rgb(119,153,187) 1px solid; PADDING-LEFT: 1em; BACKGROUND: rgb(247,251,255) 0% 50%; PADDING-BOTTOM: 0pt; MARGIN: 0.5em 2.5%; BORDER-LEFT: rgb(119,153,187) 1px solid; PADDING-TOP: 0pt; BORDER-BOTTOM: rgb(119,153,187) 1px solid; TEXT-ALIGN: justify; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial"> <p><b>This article needs <a class="extiw" href="http://en.wikipedia.org/wiki/Wikipedia:Cleanup" target="wpext" title="Wikipedia:Cleanup">cleanup</a></b>.<br>This article needs to be edited to conform to a <a class="extiw" href="http://en.wikipedia.org/wiki/Wikipedia:Style_and_How-to_Directory" target="wpext" title="Wikipedia:Style and How-to Directory">higher standard</a> of article quality. After the article has been cleaned up, you may remove this message. For help, see <a class="extiw" href="http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page" target="wpext" title="Wikipedia:How to edit a page">How to Edit a Page</a> and the <a class="extiw" href="http://en.wikipedia.org/wiki/Wikipedia:Style_and_How-to_Directory" target="wpext" title="Wikipedia:Style and How-to Directory">style and How-to Directory</a> <span class="nslink">.</span></p></div></blockquote> <p>Now, I knew this was <a href="http://en.wikipedia.org/">Wikipedia</a> content repurposed by "answers.com", and I proceeded to clean up the article. The <a href="http://en.wikipedia.org/wiki/EII">wikified article</a> took a while to complete, because true to the "Wikipedia" ethos, I had to contribute knowledge as opposed to the original weenie marketing gunk. Its naturally easier to cut and paste marketing fluff for a misguided quick win attempt than it is to embed links, add knowledge, and discern Wiki Markup (but "Wiki" <a href="http://www.tvtome.com/tvtome/servlet/ShowMainServlet/showid-893/In_Living_Color/">don't play that</a>!).</p> <p>This little exercise has broader implications for marketing as a whole, especially for the IT sector. The end of days for "Misinformation based Marketing" are nigh! Wikis, Blogs, Search Engines, Web Services, and Social Networking are rapidly destroying the historically prohibitive costs associated with customer pursuit of facts.</p> <p>I am very confident that product quality will soon overshadow market share as the key determinant for both product selection on the part of customers (this is no longer a pipe dream!). I also have increased hope that IT product development and associated product marketing by technology vendors will veer in the same direction. </p>
TECH TALK: Multi-Model Minds: Correcting Education
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-02-14#687
2005-02-14T14:56:27Z
2006-06-22T08:56:58-04:00
<a href="http://www.emergic.org/archives/2005/02/11/index.html#tech_talk_multimodel_minds_correcting_education">TECH TALK: Multi-Model Minds: Correcting Education</a> <p>While each of us can alter and build our own multiple models, it is an uphill struggle once we are past the initial years in educational institutions. We stand at the crossroads in India. We have the advantage of demographics on our side. We need to address the twin challenges of educating India's youth and doing it right. Education done right can be IndiaÃÂs biggest change agent. Conversely, putting people with limited and incomplete mental models in decision-making positions can worsen the situation dramatically. </p> <p>So, what does it take for us to fix the problem at the source? <a href="http://www.deeshaa.org/archives/2005/01/10/index.html#006395">Atanu Dey</a> wrote about how to re-invent the education system recently on his blog: <br> <blockquote><br>I think that at a minimum, an educational system must teach people how to think. How to fast and how to wait would be good but perhaps it is too much to ask for right now. Does such a system exist anywhere in the world? I don't know for sure but I doubt it very sincerely. I realize of course that there are people who have gone through the current educational systems and they are also able to think. But I would be wary of ascribing that result to the present setup. It is more likely that despite the present system, those people have learnt how to think. <p></p> <p>I believe that learning how to think may be something alike to learning a language. It appears that we have a language learning sub-system in our brains which shuts down sometime around age 12 or so. Before reaching that age, you can very easily learn languages; after that, learning languages is extremely hard. So also, I believe that if you catch a kid early enough, you can teach him or her to think. It is as if the brain circuits are just a lot of firmware in early childhood and then as one grows up, the firmware hardens and become hardware that cannot be re-programmed. </p> <p>Here is my prescription for a good education. Focus primarily on teaching how to think and on teaching people how to learn. Teaching how to think is like giving kids a very high powered CPU. Teaching them how to learn gives them control of a very broadband channel through which they can have access to content that the CPU can process. Alternative analogy: good thinking skills is like have a good operating system. And good learning skills is like having a great set of applications. <br></p></blockquote><br>A multi-model mind can be our greatest asset as we seek to build both our careers and the new India around us. But for that to happen, we will have to shed some of the baggage from the past and that is not going to be easy. We need to make a start with the world inside us, and then the outside. We have the benefit of technological revolutions that are happening around us giving us the ability to compress time -- we don't have a generation to effect this change. <p></p> <p><b>Recommended Reading:</b></p> <p> <li>My earlier Tech Talk series: <a href="http://www.emergic.org/collections/tech_talk_my_mental_model.html">My Mental Model</a><br> <li><a href="http://www.deeshaa.org/">Atanu Dey's Blog</a><br> <li>Robert Hagstrom, <a href="http://www.amazon.com/exec/obidos/ASIN/1587991381/emergicorg-20">Investing: The Last Liberal Art</a> <p></p> <div align="right">[via <a href="http://www.emergic.org/">E M E R G I C . o r g</a>]</div></li>
Exploring Network Economics
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-02-12#685
2005-02-12T22:00:57Z
2006-06-22T08:56:58-04:00
<a href="http://www.emergic.org/archives/2004/11/29/index.html#exploring_network_economics">Exploring Network Economics</a> <p>[via Abhay Bhagat] <a href="http://www.leggmason.com/funds/ourfunds/whats_new/MaubExplNtwkEcon_1104_Final.pdf">Michael Mauboussin</a> writes:<br> <blockquote><br>Economists have successfully described the economics of both information and networks. These economic principles appear durable. It is the combination of information and network properties that creates opportunities for businesses and investors. Most investors have not internalized these ideas. <p></p> <p>We believe the importance of information-based networks is increasing in todayÂs global economy for four reasons:</p> <p>1. Physical capital needs are lower than they were in the past. Information-based networks require less capital as they grow than physical networks do.</p> <p>2. Networks demonstrate increasing returns. Most industries benefit from supply-side increasing returns to scale: higher volume leads to lower unit costs, up to a point. In contrast, successful networks generate increasing returns from the demand-side as users beget users.</p> <p>3. Networks can form faster and more frequently than in the past. Because of plummeting communication and computing costs, the barriers to creating a network are declining. But even though the barriers to entry are low, the barriers to success remain high.</p> <p>4. Networks can spread globally. Because many networks have high upfront costs and low incremental costs, they can expand rapidly within countries and across borders.</p> <p>This report focuses on how to categorize networks, how they affect economic value, and how they form.<br></p></blockquote> <p></p> <div align="right">[via <a href="http://www.emergic.org/">E M E R G I C . o r g</a>]</div>
Avoid Reinventing Wheels: Look Up for XML Schemata and Web Services
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-02-11#684
2005-02-11T22:00:04Z
2006-06-22T08:56:58-04:00
<font size="2"> <p>By Uche Ogbuji, IBM developerWorks</p> <p>The world of XML and Web services is huge, and growing. developerWorks does much to map it out for you, but when you're looking for a schema or a public Web service to meet some pressing need, it's useful to have handy several key resources. This tip shows you how to comb through the enormous variety of Internet resources to find schemata and Web services using common search criteria. The best known source for finding public SOAP Web services is XMethods. It has a comprehensive list of SOAP services that you can sort by several criteria. It also provides a demo client so you can try out the services right from the index site. You can also keep track of the listings on XMethods programmatically using UDDI, RSS, and other means.sites that provide directories of Web services include RemoteMethods.com and Web Service List. A chronicle of interesting Web services is Web service of the Day.</p> <p>One resource that straddles the Web services/Semantic Web is WSindex.org, a directory of Web services, XML, SOAP, UDDI, WSDL, and Semantic Web resources. This site is a hierarchical and searchable directory. </p> <p></font><a href="http://www-106.ibm.com/developerworks/xml/library/x-tiplkws.html"><u><font color="#0000ff" size="2">http://www-106.ibm.com/developerworks/xml/library/x-tiplkws.html</u></font></a></p>
Hacking Open Office
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2005-01-27#668
2005-01-27T14:46:02Z
2006-06-22T08:56:58-04:00
<font size="2"> <p>By Peter Sefton, XML.org</p> <p>The author explores some of the ways that OpenOffice.org's Writer application is open to customization and configuration. He coveres a few techniques that will be of interest to template maintainers working with OpenOffice.org writer: how to crack open the file format, how to maintain large sets of styles, and how to customize menus and macros, all without using anything except standard tools, zip, an XSLT processor, and a text editor. All this can, of course, be further automated with a programming language of some kind, even a batch file.</p> <p>There are some changes coming in version 2 of OpenOffice.org, but all these techniques will be forwards compatible, although some things like the location and name of the menu-bar files look like they will change. If you are also trying to store and manipulate content in XML but want to use a word processing environment for authoring, then well-crafted templates are even more important.</p> <p></font><a href="http://www.xml.com/pub/a/2005/01/26/hacking-ooo.html"><u><font color="#0000ff" size="2">http://www.xml.com/pub/a/2005/01/26/hacking-ooo.html</u></font></a></p><font size="2"> <p>See also the OpenDocument 1.0 CD: </font><a href="http://xml.coverpages.org/ni2005-01-04-a.html"><u><font color="#0000ff" size="2">http://xml.coverpages.org/ni2005-01-04-a.html</u></font></a></p><font size="2"></font>
How Blogs Can Supercharge Your Business
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-12-20#651
2004-12-20T21:13:11Z
2006-06-22T08:56:58-04:00
<a href="http://blogforfunandprofit.blogware.com/blog/_archives/2004/12/11/202992.html">How Blogs Can Supercharge Your Business</a> How Blogs Can Supercharge Your Business <br /><br />Blogs in business is a new idea and a strategy that is evolving very quickly. There many new products and services emerging to service everyone interesting in blogs and blogging. While there are new opportunities being created because of blogs, small and large businesses as well as solo entrepreneurs are deeply interested how blogs can help their bottom line as well. Blogs were once thought to be the domain of computer geeks and teens interested in publishing their personal ideas, poetry, commentary and the like. Blogs are no longer "personal" publishing tools anymore. <br /><br />Blogs are now business publishing tools and powerful ones at that. You learned in Lesson One that blogs allow you publish quickly, easily, efficiently and instantly. This has transformed business communications online. Now all companies large and small can create a very low cost content communication and publishing strategy online. <br /><br />You see, blogs don't have the same overhead as a large scale information site or e-commerce site. Blogs are not complex content management systems that require a paid staff of webmasters and programmers to support. <br /><br />Blogs are low as $14.95 a month to use, require only one person the manage easily and yet the content of blog will outperform the content of a more established site both in speed of distribution and in search engine rankings. <br /><br />Businesses and entrepreneurs benefit in 3 BIG ways from a blog. <br /><br />Information. <br /><br />Blogs allow you to distributed information instantly and frequently. Speed of communications is critical in this day and age. You need to communicate information about your products and services quickly. Blogs allow you to educate your markets and engage in real-time two-way conversations with customers and prospects around topics that relate to you and them. <br /><br />As an information tool for businesses and entrepreneurs, blogs allow you to build recurring relationships with prospects and customers by establishing rapport. As you publish content that your customers and prospect come to know and trust the will return to you as their expert and vote with wallets. <br /><br />Reputation. <br /><br />Blogs build reputation. Blogs are considered honest communication tools. Blogs are two-way communications tools and people have come to expect blogs to provide high value, useful content and honest. transparent communications. <br /><br />Your level of integrity will weigh heavily on how you build authority and credibility regarding your blogs subject matter. What you publish will serve as the basis for others to formulate an opinion about your expertise, knowledge and character in general. <br /><br />Communication. <br /><br />Blogs allow you to communicate at the speed of business. You can literally communicate relevant information to partners, personnel and prospects in real-time and as events occur in your business. Literally. How powerful is that?! <br /><br />What greater way to maintain and competitive advantage than to alert those your customers to new and useful information about your business. This keeps customers engaged in conversations with you and less susceptible to the influences of competitor marketing messages. <br /><br /><br />Information, reputation and communication are the three things every business must build in order to success online. <br /><br />A business blog allows you build a bigger information depot that can draw a continuous flow of visitors looking for your content. <br /><br />A business blog allows you build reputation by publishing high value information about and around your industry, your products and services. As you frequently demonstrate your expertise, experience and know-how you can gain recognition in your market niches. <br /><br />If you aren't using a blog in your business and marketing endeavors you are surely being left behind. I can almost guarantee you that one or more of your competitors is using a blog to communicate and distribution information on products and services that compete with yours. <br /><br />If you aren't using a blog but you are using a regular web site, you competition is going to whoop you in the search engine rankings game. For any online business, getting your content indexed and found by your target is a bottom line activity. Blogs have changed the game of search engine optimization in an upcoming article I will talk about the SEO benefits of blogs <br /><br />To recap, a blog is great business accelerator. A acceleration in communications can translation into an acceleration in business and entrepreneurial processes that impact your bottom line. Blogs allow businesses and entrepreneurs to share information instantly and frequently. Blogs allows business to build reputation and by demonstrating subject matter expertise and finally, blogs allow businesses to communication in real-time as their business happens. <br /><br /><br /> <center><font face="Arial" size="2"><b>"If You Want To Learn How To Blog For Fun and Profits...</b></font> <br /><font face="Arial" size="2">Then <span style="BACKGROUND-COLOR: #ffff00"><a href="http://www.how2blog.com/at/go.php?c=h2b&s=BFFPBG" target="_blank">CLICK HERE NOW</a></span> and I'll <u>Show You Step-By-Step</u>!"!</font></center><br /><br />----------------------------------------------- <br />
Questions about Longhorn, part 3: Avalon's enterprise mission
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-06-09#559
2004-06-09T21:48:25Z
2006-06-22T08:56:58-04:00
<p>A Blog post for the ages, from <a href="http://weblog.infoworld.com/udell">Jon Udell</a>. I expect to refer back to this post a number of times in the future, as I have the same concerns across related realms; for instance data access API usage and evolution.</p> <p>Enjoy!</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p><a href="http://weblog.infoworld.com/udell/2004/06/09.html#a1019">Questions about Longhorn, part 3: Avalon's enterprise mission</a> </p> <p><a href="http://weblog.infoworld.com/udell/gems/WinformsVsAvalon.jpg"><img align="right" hspace="6" src="http://weblog.infoworld.com/udell/gems/WinformsVsAvalon_s.jpg" vspace="6" /></a> The slide shown at the right comes from a presentation entitled <a href="http://www.ineta.org/DesktopDefault.aspx?tabindex=2&tabid=41&FileID=125">Windows client roadmap</a>, given last month to the International .NET Association (<a href="http://www.ineta.org/DesktopDefault.aspx">INETA</a>). When I see slides like this, I always want to change the word "How" to "Why" -- so, in this case, the question would become "Why do I have to pick between Windows Forms and Avalon?" Similarly, MSDN's Channel 9 ran a video clip of Joe Beda, from the Avalon team, entitled <a href="http://www.microsoft.com/winme/0404/22606/Joe_Beda_prepare_300k.asx">How should developers prepare for Longhorn/Avalon?</a> that, at least for me, begs the question "Why should developers prepare for Longhorn/Avalon?" </p> <p>I've been looking at decision trees like the one shown in this slide for more than a decade. It's always the same yellow-on-blue PowerPoint template, and always the same message: here's how to manage your investment in current Windows technologies while preparing to assimilate the new stuff. For platform junkies, the internal logic can be compelling. The INETA presentation shows, for example, how it'll be possible to use XAML to write WinForms apps that host combinations of WinForms and Avalon components, or to write Avalon apps that host either or both style of component. Cool! But...huh? Listen to how Joe Beda frames the "rich vs. reach" debate: </p> <blockquote class="personQuote JoeBeda">Avalon will be supplanting WinForms, but WinForms is more reach than it is rich. It's the reach versus rich thing, and in some ways there's a spectrum. If you write an ASP.NET thing and deploy via the browser, that's really reach. If you write a WinForms app, you can go down to Win98, I believe. Avalon's going to be Longhorn only. </blockquote> <p>So developers are invited to classify degrees of reach -- not only with respect to the Web, but even within Windows -- and to code accordingly. What's more, they're invited to consider WinForms, the post-MFC (Microsoft Foundation Classes) GUI framework in the .NET Framework, as "reachier" than Avalon. That's true by definition since Avalon's not here yet, but bizarre given that mainstream Windows developers can't yet regard .NET as a ubiquitous foundation, even though many would like to. </p> <p>Beda recommends that developers isolate business logic and data-intensive stuff from the visual stuff -- which is always smart, of course -- and goes on to sketch an incremental plan for retrofitting Avalon goodness into existing apps. He concludes: </p><blockquote class="personQuote JoeBeda">Avalon, and Longhorn in general, is Microsoft's stake in the ground, saying that we believe power on your desktop, locally sitting there doing cool stuff, is here to stay. We're investing on the desktop, we think it's a good place to be, and we hope we're going to start a wave of excitement leveraging all these new technologies that we're building. </blockquote> <p></p> <p>It's not every decade that the Windows presentation subsystem gets a complete overhaul. As a matter of fact, it's never happened before. Avalon will retire the hodge-podge of DLLs that began with 16-bit Windows, and were carried forward (with accretion) to XP and Server 2003. It will replace this whole edifice with a new one that aims to unify three formerly distinct modes: the document, the user interface, and audio-visual media. This is a great idea, and it's a big deal. If you're a developer writing a Windows application that needs to deliver maximum consumer appeal three or four years from now, this is a wave you won't want to miss. But if you're an enterprise that will have to buy or build such applications, deploy them, and manage them, you'll want to know things like: </p><ul> <li> <p>How much fragmentation can my developers and users tolerate <i>within</i> the Windows platform, never mind across platforms?</p></li> <li> <p>Will I be able to remote the Avalon GUI using Terminal Services and Citrix?</p></li> <li> <p>Is there any way to invest in Avalon without stealing resources from the Web and mobile stuff that I still have to support?</p></li></ul> <p></p> <p>Then again, why even bother to ask these questions? It's not enough to believe that the return of rich-client technology will deliver compelling business benefits. (Which, by the way, I think it will.) You'd also have to be shown that Microsoft's brand of rich-client technology will trump all the platform-neutral variations. Perhaps such a case can be made, but the concept demos shown so far don't do so convincingly. The Amazon demo at the Longhorn PDC (Professional Developers Conference) was indeed cool, but you can see similar stuff happening in <a href="http://www.ultrasaurus.com/sarahblog/archives/000140.html">Laszlo</a>, Flex, and other RIA (rich Internet application) environments today. Not, admittedly, with the same 3D effects. But if enterprises are going to head down a path that entails more Windows lock-in, Microsoft will have to combat the perception that the 3D stuff is gratuitous eye candy, and show order-of-magnitude improvements in users' ability to absorb and interact with information-rich services. </p></blockquote> <div align="right">[via <a href="http://weblog.infoworld.com/udell/">Jon's Radio</a>]</div>
Comparison of RDF Query Languages
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-06-09#1100
2004-06-09T18:32:42Z
2006-12-14T15:53:29-05:00
<p>The W3C RDF Data Access Working Group recently released an initial public Working Draft specification for "<a href="http://www.w3.org/TR/2004/WD-rdf-dawg-uc-20040602/"><font color="#000000">RDF Data Access Use Cases and Requirements</font></a>". Naturally, this triggered discussion on the RDF mailing list along the following lines:</p> <blockquote dir="ltr" style="margin-right: 0px;"> <p>In section, 4.1 Human-friendly Syntax, you say<font size="4"><b> </b></font>"There must be a text-based form of the query language which can be read and written by users of the language", and you list the status as "pending".</p> <p>As background for section 4.1, you may be interested in <a href="http://www.aifb.uni-karlsruhe.de/WBS/pha/rdf-query/">RDFQueryLangComparison1</a> (original text replaced with live link).<br /> <br />It shows how to write queries in a form that includes English meanings.<br /> <br />The example queries can be run by pointing a browser to <a eudora="autourl" href="http://www.reengineeringllc.com/" title="http://www.reengineeringllc.com/">www.reengineeringllc.com</a> .<br /> <br />Perhaps importantly, given the intricacy of RDF for nonprogrammers, one can get an English explanation of the result of each query.<br /> <br />-- Dr. Adrian Walker of <a href="https://www.reengineeringllc.com/ibl_login.html#about">Internet Business Logic </a> </p> </blockquote> <p dir="ltr">The Semantic Web continues to take shape, and Infonauts (information centric agents) are already taking <a href="http://www.reengineeringllc.com/IBL_tutorial_part1.html">shape</a>.</p> <p dir="ltr">A great thing about the net is the "back to the future" nature of most Web and Internet technology. For instance we are now frenzied about Service Oriented Architecture (SOA), Event Drivent Architecture (EDA), Loose Coupling of Composite Services etc. Basically rehashing the CORBA vision.</p> <p dir="ltr">I see the Semantic Web playing a similar role in relation to artificial intelligence. </p> <p dir="ltr">BTW - It still always comes down to data, and as you can imagine <a href="http://www.openlinksw.com/virtuoso">Virtuoso</a> will be playing its usual role of alleviating the practical implementation and ulization challenges of all of the above :-)</p> <p dir="ltr"> </p>
Comparison of RDF Query Languages
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-06-09#557
2004-06-09T17:32:42Z
2006-06-22T08:56:58-04:00
<p>The W3C RDF Data Access Working Group recently released an initial public Working Draft specification for "<a href="http://www.w3.org/TR/2004/WD-rdf-dawg-uc-20040602/"><font color="#000000">RDF Data Access Use Cases and Requirements</font></a>". Naturally, this triggered discussion on the RDF mailing list along the following lines:</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>In section, 4.1 Human-friendly Syntax, you say<font size="4"><b> </b></font>"There must be a text-based form of the query language which can be read and written by users of the language", and you list the status as "pending".</p> <p>As background for section 4.1, you may be interested in <a href="http://www.aifb.uni-karlsruhe.de/WBS/pha/rdf-query/">RDFQueryLangComparison1</a> (original text replaced with live link).<br><br>It shows how to write queries in a form that includes English meanings.<br><br>The example queries can be run by pointing a browser to <a eudora="autourl" href="http://www.reengineeringllc.com/" title="http://www.reengineeringllc.com/">www.reengineeringllc.com</a> .<br><br>Perhaps importantly, given the intricacy of RDF for nonprogrammers, one can get an English explanation of the result of each query.<br><br>-- Dr. Adrian Walker of <a href="https://www.reengineeringllc.com/ibl_login.html#about">Internet Business Logic </a></p></blockquote> <p dir="ltr">The Semantic Web continues to take shape, and Infonauts (information centric agents) are already taking <a href="http://www.reengineeringllc.com/IBL_tutorial_part1.html">shape</a>.</p> <p dir="ltr">A great this about the net is the "back to the future" nature of most Web and Internet technology. For instance we are now frenzied about Service Oriented Architecture (SOA), Event Drivent Architecture (EDA), Loose Coupling of Composite Services etc. Basically rehashing the CORBA vision.</p> <p dir="ltr">I see the Semantic Web playing a similar role in relation to artificial intelligence. </p> <p dir="ltr">BTW - It still always comes down to data, and as you can imagine <a href="http://www.openlinksw.com/virtuoso">Virtuoso</a> will be playing its usual role of alleviating the practical implementation and ulization challenges of all of the above :-)</p> <p dir="ltr"> </p>
XML, the New Database Heresy
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-06-04#555
2004-06-04T04:04:48Z
2006-06-22T08:56:58-04:00
<p dir="ltr">A great <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d28ce1fb-7b27-407d-b1a3-0b9a34831ca1">post </a>by Dare, especially his bringing into context the essence of this matter refrred to by C.J. Date as "XML the New Database Heresy".</p> <p dir="ltr">I have little to add to this matter as our understanding and vision is aptly expressed via the architecture and feature set of <a href="http://www.openlinksw.com/virtuoso">Virtuoso</a> (this area was actually addressed circa 1999).</p> <p dir="ltr">We are heading into a era of multi-model databases, these are single database engines that are capable of effectively serving the requirements of the Hierarchical, Network, Relational, and Object database <a href="http://www.web-dictionary.org/encyclopedia/db/DBMS.html#Navigational_databases">models</a> . As we get closer to the unravelling of universal storage, hopefully this will get clearer.</p> <p dir="ltr">Back to Dare's commentary:</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p><a href="http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/d/Date:C=_J=.html">C.J. Date</a>, one of the most influential names in the relational database world, had some harsh words about XML's encroachment into the world of relational databases in a recent article entitled <a href="http://searchdatabase.techtarget.com/originalContent/0,289142,sid13_gci962948,00.html">Date defends relational model </a> that appeared on SearchDatabases.com. Key parts of the article are excerpted below </p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>Date reserved his harshest criticism for the competition, namely object-oriented and XML-based DBMSs. Calling them "the latest fashions in the computer world," Date said he rejects the argument that relational DBMSs are yesterday's news. Fans of object-oriented database systems "see flaws in the relational model because they don't fully understand it," he said. </p> <p>Date also said that XML enthusiasts have gone overboard. </p> <p>"XML was invented to solve the problem of data interchange, but having solved that, they now want to take over the world," he said. "With XML, it's like we forget what we are supposed to be doing, and focus instead on how to do it." </p> <p>Craig S. Mullins, the director of technology planning at BMC Software and a SearchDatabase.com expert, shares Date's opinion of XML. It can be worthwhile, Mullins said, as long as XML is only used as a method of taking data and putting it into a DBMS. But Mullins cautioned that XML data that is stored in relational DBMSs as whole documents will be useless if the data needs to be queried, and he stressed Date's point that XML is not a real data model. </p></blockquote> <p dir="ltr">Craig Mullins points are more straightforward to answer since his comments don't jibe with the current state of the art in the XML world. He states that you can't query XML documents stored in databases but this is untrue. Almost three years ago, I was writing articles about <a href="http://features.slashdot.org/article.pl?sid=01/10/29/0725214&mode=thread&tid=156">querying XML documents stored in relational databases</a>. Storing XML in a relational database doesn't mean it has to be stored in as an opaque binary BLOB or as a big, bunch of text which cannot effectively be queried. The next version of SQL Server will have extensive capabilities for querying XML data in relational database and doing joins across relational and XML data, a lot of this functionality is described in the article on <a href="http://msdn.microsoft.com/xml/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5xml.asp">XML Support in SQL Server 2005</a>. As for XML not having a data model, I beg to differ. There is a data model for XML that many applications and people adhere to, often without realizing that they are doing so. This data model is the <a href="http://www.w3.org/TR/1999/REC-xpath-19991116#data-model">XPath 1.0 data model</a>, which is being updated to handled typed data as the <a href="http://www.w3.org/TR/2003/WD-xpath-datamodel-20031112/">XQuery and XPath 2.0 data model</a>. </p> <p dir="ltr">Now to tackle the meat of C.J. Date's criticisms which is that XML solves the problem of data interchange but now is showing up in the database. The thing first point I'd like point out is that there are two broad usage patterns of XML, it is used to represent both rigidly structured tabular data (e.g., relational data or serialized objects) and semi-structured data (e.g., office documents). The latter type of data will only grow now that office productivity software like <a href="http://www.microsoft.com/office">Microsoft Office</a> have enabled users to save their documents as XML instead of proprietary binary formats. In many cases, these documents cannot simply shredded into relational tables. Sure you can shred an Excel spreadsheet written in spreadsheetML into relational tables but is the same really feasible for a Word document written in WordprocessingML? Many enterprises would rather have their important business data being stored and queried from a unified location instead of the current situation where some data is in document management systems, some hangs around as random files in people's folders while some sits in a database management system. </p> <p dir="ltr">As for stating that critics of the relational model don't understand it, I disagree. One of the major benefits of using XML in relational databases is that it is a lot easier to deal with fluid schemas or data with sparse entries with XML. When the shape of the data tends to change or is not fixed the relational model is simply not designed to deal with this. Constantly changing your database schema is simply not feasible and there is no easy way to provide the extensibility of XML where one can say "after the <font face="Courier New">X </font>element, any element from any namespace can appear". How would one describe the capacity to store âany dataâ in a traditional relational database without resorting to an opaque blob? </p> <p dir="ltr">I do tend to agree that some people are going overboard and trying to model their data hierarchically instead of relationally which experience has thought us is a bad idea. Recently on the XML-DEV mailing list entitled <a href="http://lists.xml.org/archives/xml-dev/200405/msg00216.html">Designing XML to Support Information Evolution </a>where Roger L. Costello described his travails trying to model his data which was being transferred as XML in a hierarchical manner. Micheal Champion accurately described the process Roger Costello went through as having "rediscovered the relational model". In a response to that thread I wrote "Hierarchical databases failed for a reason". </p> <p dir="ltr">Using hierarchy as a primary way to model data is bad for at least the following reasons </p> <ol dir="ltr"> <li> <div>Hierarchies tend to encourage redundancy. Imagine I have a <Customer> element who has one or more <ShippingAddress> elements as children as well as one or more <Order> elements as children as well. Each order was shipped to an address, so if modelled hierarchically each <Order> element also will have a <ShippingAddress> element which leads to a lot of unnecessary duplication of data. </div></li> <li> <div>In the real world, there are often multiple groups to which a piece of data belongs which often cannot be modelled with a single hierarchy. </div></li> <li> <div>Data is too tightly coupled. If I delete a <Customer> element, this means I've automatically deleted his entire order history since all the <Order> elements are children of <Customer>. Similarly if I query for a <Customer>, I end up getting all the <Order> information as well. </div></li></ol> <p>To put it simply, experience has taught the software world that the relational model is a better way to model data than the hierarchical model. Unfortunately, in the rush to embrace XML many a repreating the mistakes from decades ago in the new millenium. </p></blockquote> <div align="right">[via <a href="http://www.25hoursaday.com/weblog/">Dare Obasanjo aka Carnage4Life</a>]</div>
INSTEAD-OF Triggers
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-04-23#526
2004-04-24T00:52:50Z
2006-06-22T08:56:58-04:00
<p>During a session with a potential customer/partner I was posed the following question re. <a href="http://www.openlinksw.com/virtuoso/whatis.htm">Virtuoso's Virtual Database</a> functionality:</p> <p>"Can I create an updateable SQL VIEW in Virtuoso that would comprise columns from 3rd party databases such as Oracle, SQL Server, and say MySQL".</p> <p>The answer was yes, based on the fact that Virtuoso does support SQL <a href="http://docs.openlinksw.com/virtuoso/TRIGGERS.html#TRIGGERS">INSTEAD-OF Triggers</a> - even in Virtual Database mode. </p> <p>I am certainly keen to see if any other Virtual Database style products achieve this feat (which is trying for many homogeneous SQL database engines).</p> <p>Dr. Paul Dorsey of <a href="http://www.dulcian.com/">Dulcian, Inc</a>. wrote a very <a href="http://www.dulcian.com/papers/INSTEAD%20OF%20Trigger%20Views_ODTUG.htm">good article about this subject</a>, and here is an excerpt from his article overiew:</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>Views are an important part of application development. Since Oracle 7.3, we quickly recognized the importance of using Oracleâs updateable view feature. An updateable view allows you to join several tables and perform updates against the driving table. For example, if you join EMP and DEPT in the traditional way and display columns from both tables, DML operations are possible against EMP but not DEPT. </p> <p class="Text">For traditional relational database designs, this is enough functionality. For example, in a typical Forms application, when you are basing a block on a table, the additional columns that you want to display are lookups from other tables and can therefore be easily supported using traditional updateable views. These views are built using a combination of joins and outer joins or,<span> </span>in extreme cases, looking up additional information through functions embedded in the views. Under no circumstances should post query triggers be used to support this functionality. Post query triggers cause unnecessary network traffic and also embed the logic in the application rather than in the database or somewhere else where it can easily be reused.</p> <p class="Text">What happens in a situation where the information you want to display in the block requires a query that is so complex that your ability to maintain (insert, update, delete) that information using a simple updateable view is eliminated? The updateable views are relatively restrictive. Only a single table can be updated. Joins must be created carefully and based on Foreign Key constraints in the database. No set operators such as UNION or MINUS can be used. For these reasons, it is common to end up with a block that cannot be updated as required. How do most developers handle this situation?</p> <p class="Text" style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"><!--[if !supportLists]-->a)<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> </span><!--[endif]-->By placing complex logic in the form (WHEN-VALIDATE-ITEM triggers)</p> <p class="Text" style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"><!--[if !supportLists]-->b)<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> </span><!--[endif]-->By writing procedures that access Formsâ ability to replace the Insert, Update, Delete routines and place that logic in the form</p> <p class="Text">These practices are just as undesirable as using POST-QUERY triggers. The logic is in the wrong place and is not reusable. </p> <p class="Text">The INSTEAD-OF trigger views feature was introduced by Oracle in version 8.15. This feature enables developers to create views on single or multiple tables or any other view imaginable by writing INSTEAD-OF triggers that tell the view how to behave when Inserts, Updates or Deletes are issued. Peter Koletzke and I first wrote about this feature in our Oracle Press book <i>Oracle Developer: Advanced Forms & Reports</i> (2000). At the time, we gave the feature relatively brief mention because we believed that most of the systems we were building included blocks based on traditional updateable views, which allow updates to a single table. Now, there is a good reason to look more closely at INSTEAD-OF trigger views. </p></blockquote> <p class="Text" dir="ltr">Database Journal also has an <a href="http://www.databasejournal.com/features/mssql/article.php/1437741">article on this subject</a>.</p>
Metadata? Thesauri? Taxonomies? Topic Maps! Making Sense Of It All.
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-03-24#493
2004-03-24T15:43:12Z
2006-06-22T08:56:58-04:00
<font size="2"> <p>By Lars Marius Garshol, Ontopia Technical Report</p> <p>Information Architecture is the discipline dealing with the modern version of this problem: how to organize web sites so that users actually can find what they are looking for. Information architects have so far applied known and well-tried tools from library science to solve this problem, and now topic maps are sailing up as another potential tool for information architects. This raises the question of how topic maps compare with the traditional solutions. The paper argues that topic maps go beyond the traditional solutions in the sense that it provides a framework within which they can be represented as they are, but also extended in ways which significantly improve information retrieval. The paper tries to show that topic maps provide a common reference model that can be used to explain how to understand many common techniques from library science and information architecture.</p> <p></font><a href="http://www.ontopia.net/topicmaps/materials/tm-vs-thesauri.html"><u><font color="#0000ff" size="2">http://www.ontopia.net/topicmaps/materials/tm-vs-thesauri.html</u></font></a></p><font size="2"> <p>See also (XML) Topic Maps: </font><a href="http://xml.coverpages.org/topicMaps.html"><u><font color="#0000ff" size="2">http://xml.coverpages.org/topicMaps.html</u></font></a></p>
Remember WebDAV
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2004-02-03#462
2004-02-03T21:04:10Z
2006-06-22T08:56:58-04:00
<P><A href="http://www.webdav.org">WebDAV</A> is one of those interesting standards that sometimes gets lost in the broader industry hoopla. Well I finally decided to take a look at <A href="http://www.mozilla.org/projects/calendar/">Mozilla's Calendar project </A>as more open solution for sharing my calendar. After browsing around a little I came a across the following <A href="http://www.mozilla.org/projects/calendar/faq.html#share">piece</A>:</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <P><!--StartFragment --><EM>To share your calendars, you need access to a </EM><A href="http://www.webdav.org/"><EM>webDAV server</EM></A><EM>. If you run your own web server, you can install </EM><A href="http://www.webdav.org/mod_dav"><EM>mod_dav</EM></A><EM>, a free Apache module that will turn your web server into a webDAV server. Instructions on how to set it up are on their website. Once you set up your webDAV server, you can publish your calendar to the site, then subscribe to it from any other Mozilla Calendar. Automatically updating the calendar will give you a poor man's calendar server.</EM></P></BLOCKQUOTE> <P>Through WebDAV we will be able to share calendars across disparate calendaring tools (albeit with some degree of pain when Outlook is in the mix). Even better for me, I can post my shared calendar data via a <A href="http://www.openlinksw.com/virtuoso">Virtuoso</A> instance (internally and externally since <A href="http://www.openlinksw.com/virtuoso/whatis.htm#webdav">WebDAV is one of the many protocols that it implements</A>), in short I could even seriously consider generating this on the fly and sharing it via this blog (Wow!).</P> <P>We aren't too many miles away from open and standards compliant Unified Data Storage thanks to WebDAV.</P> <P> </P>
Creating RSS Using SQLX
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-11-11#423
2003-11-11T23:33:50Z
2006-06-22T08:56:58-04:00
<P>Here is a <A href="http://www.openlinksw.com/articles/rssvirtsqlx.htm">practical example of how to create RSS on the fly from SQL </A>data sources leveraging Virtuoso 3.2's SQLX implementation.</P> <P>This is further illuminates the content of my <A href="http://www.openlinksw.com/weblogs/virtuoso/index.vspx?id=426">earlier post</A> on this subject.</P> <P> </P>
Replace and defend -- Contd
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-10-31#410
2003-10-31T20:58:52Z
2006-06-22T08:56:58-04:00
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <P dir=ltr style="MARGIN-RIGHT: 0px">Reading the Longhorn SDK docs is a disorienting experience. Everything's familiar but different. Consider these three examples: </P> <P dir=ltr style="MARGIN-RIGHT: 0px">[Full story: <A href="http://weblog.infoworld.com/udell/2003/10/31.html#a836">Replace and defend</A> via <A href="http://weblog.infoworld.com/udell/">Jon's Radio</A>]</P></BLOCKQUOTE> <P dir=ltr style="MARGIN-RIGHT: 0px">"Replace & Defend" is certainly a strategy that would have awakened the entire non Microsoft Developer world during the recent PDC event. I know these events are all about preaching to the choir (Windows only developers), but as someone who has worked with Microsoft technologies as an ISV since the late 80's there is something about this events announcements that leave me concerned. </P> <P dir=ltr style="MARGIN-RIGHT: 0px">Ironically these concerns aren't about the competitive aspects of their technology disruptions, but more along the lines of how Microsoft (I hope inadvertently) generates the kinds of sentiments echoed in the <A href="http://longhornblogs.com/scobleizer/posts/345.aspx#FeedBack">comments thread </A>from <A href="http://longhornblogs.com/">Scobles</A> recent <A href="http://longhornblogs.com/scobleizer/posts/345.aspx">"How to hate Microsoft"</A> post. As indicated in my response to this post, I don't believe Microsoft is as bad or evil as is instinctively assumed in many quarters, but I can certainly understand why they are hated by others which is really unfortunate, especially bearing in mind that they have done more good than harm to date (in my humble opinion) . </P> <P dir=ltr style="MARGIN-RIGHT: 0px">Anyway, back to my concerns post PDC which I break down as follows:</P> <OL dir=ltr> <LI> <DIV style="MARGIN-RIGHT: 0px">Disruptive assaults on existing standards with the only benefit being Microsoft platform centricity. <A href="http://weblog.infoworld.com/udell/2003/10/31.html#a836">Jon Udell addressed this in his "Replace and Defend" post </A>(which kicked of this post), and I see exactly what he sees here, and I don't see any reason for this approach whatsoever. Even if one of these standards was deficient what stops the Microsoft from addressing these deficiencies, and then should the W3C's standards acceptance and ratification process bogs things down at least let the industry know you gave it openness a chance but have to move on etc.. <BR><BR></DIV></LI> <LI> <DIV style="MARGIN-RIGHT: 0px">Gradual obsolescence of existing Microsoft standards which used to provide interfaces for 3rd party ISV partners, and replacing these with totally closed infrastructure implementations that bind to Microsoft products only. A good example is <A href="http://msdn.microsoft.com/longhorn/default.aspx?pull=/msdnmag/issues/04/01/WinFS/default.aspx">WinFS</A>, I believe in the unified data storage concept, <A href="http://www.openlinksw.com/blog/~kidehen/index.vspx?id=406">it's a vision that I've believed in for many years</A>, but there is no notion from any PDC presentation or Blog that I have read so far (I aggregate a serious number of feeds) that Microsoft is committed to an architectural strategy that enables 3rd party ISVs to hook their data stores and data sources into this storage infrastructure - it's simply about <A href="http://www.openlinksw.com/blog/~kidehen/index.vspx?id=407">Yukon (SQL Server)</A> and that's basically it.</DIV></LI></OL> <P style="MARGIN-RIGHT: 0px">WinFS needs to architecturally separate the <STRONG>System Provider</STRONG> from the <STRONG>Data Provider</STRONG> (pretty much the OLE-DB architecture) with Microsoft naturally providing reference System Provider (pretty much what was demonstrated at PDC) and Data Provider (ADO.NET, OLE DB, and ODBC) implementations. Third parties can choose to produce custom WinFS Service or Data Providers which serve their data access needs. It's impractical to want to force every non SQL Server customer over to SQL Server in order them to exploit WinFS, and I certainly hope this isn't the definitive strategy at Microsoft.</P>
HOWTO: Apache-PHP-ODBC on Mac OS X
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-10-24#399
2003-10-24T20:55:06Z
2006-06-22T08:56:58-04:00
<DIV class=Section1> <P><FONT face="Times New Roman"><SPAN style="FONT-SIZE: 12pt"><FONT size=2>There is a new </FONT><A href="http://www.iodbc.org/iodbc-phposxHOWTO.html"><FONT size=2>HOWTO document</FONT></A><FONT size=2> that addresses an area of frequent confusion on Mac OS X, which is how do you build PHP with an ODBC data access layer binding (</FONT><A href="http://www.iodbc.org/"><FONT size=2>iODBC</FONT></A><FONT size=2> variant) using Mac OS X Frameworks as opposed to Darwin Shared Libraries. </FONT></SPAN></FONT></P> <P><FONT face="Times New Roman"><SPAN style="FONT-SIZE: 12pt"></SPAN></FONT><FONT face="Times New Roman" size=2><SPAN style="FONT-SIZE: 12pt"><FONT size=2>This document basically brings clarity to both the Frameworks and Darwin Shared library approaches</FONT>.</SPAN></FONT></P></DIV>
Multimedia Blogging
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-09-04#247
2003-09-04T17:49:37Z
2006-06-22T08:56:58-04:00
While reading <a href="http://www.vnunet.com">computing magazine</a> I stumbled across an article titled: <a href="http://www.vnunet.com/lite/News/1142978">Picture Messaging Comes To The Rescue</a>. The interesting this about this article is that it is inadvertently brings attention to the breadth of blogging. Here are some article excerpts: <blockquote>Lives could be saved if pioneering messaging trial is a success Mobile phone photo messaging could help to save lives at the scene of an accident if a new service being tested in Scotland is successful. Fife Fire & Rescue Service has started trials using photo messaging to receive advice from doctors on how to deal with critical injuries at major incidents. Rescue officers will send photo messages of accidents via GPRS to the Accident and Emergency (A&E) unit at Dunfermline's Queen Margaret hospital, preparing emergency wards for the arrival of casualties and receiving help in return. 'We plan to send pictures of traffic accidents directly to the hospital, in order to get advice about how best to deal with the accident victims,' said Fife Fire & Rescue Service firemaster Mike Bitcon. Using the photographs, doctors can assess the injuries and prepare appropriately, as well as deciding if a doctor should be present at the scene of the accident. 'We're confident that this initiative will help to save lives,' said Bitcon.</blockquote> This can all happen right now, and independent of any particular network carrier or device via the inherent power of blogging (using mobile or multimedia blogging technology).
RSS: INJAN (It's not just about news)
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-08-21#241
2003-08-21T15:41:25Z
2006-06-22T08:56:58-04:00
<p><span style="font-size: 10pt; font-family: Arial;">When Virtuoso first unleashed support for XML (in-built XSL, Native XML Storage, Validating XML Parser, XPath, and XQuery) the core message was the delivery of a single server solution that would address the challenges of creating XML data.</span></p><p xmlns="o"></p> <p><span style="font-size: 10pt; font-family: Arial;">In the year 2000 the question of the shape and form of XML data was unclear to many, and reading the article below basically took me back in time to when we released <a href="http://www.it-director.com/article.php?articleid=916">Virtuoso 2.0</a> (we are now at <a href="http://www.openlinksw.com/virtuoso">release 3.0</a> commercially with a <a href="http://www.openlinksw.com/press/virt32_wwdc1.htm">3.2 beta </a>dropping any minute).</span></p><p xmlns="o"></p> <p><span style="font-size: 10pt; font-family: Arial;">RSS is a great XML application, and it does a great job of demonstrating how XML --the new data access foundation layer-- will galvanize the next generation Web (I refer to this as Web 2.0.). </span></p> <blockquote dir="ltr" style="margin-right: 0px;"><span style="font-size: 10pt; font-family: Arial;"> <p><a href="http://jena.hpl.hp.com:3030/blojsom-hp/blog/technologies/blogging/metadata/?permalink=1214847A10C1966396472E816A7A4243.textile">RSS: INJAN (It's not just about news)</a> </p> <p><span class="caps">RSS</span> is not just about news, according to <a href="http://groups.yahoo.com/group/rss-dev/message/5764">Ian Davis on rss-dev</a>.<br />He presents a nice list of alternatives, which I reproduce here (and to which I�d add, of course, bibliography management)</p> <ul> <li>Sitemaps: one of the S�s in <span class="caps">RSS</span> stands for summary. A sitemap is a summary of the content on a site, the items are pages or content areas. This is clearly a non-chronological ordering of items. Is a hierarchy of <span class="caps">RSS</span> sitemaps implied here � how would the linking between them work? How hard would it be to hack a web browser to pick up the <span class="caps">RSS</span> sitemap and display it in a sidebar when you visit the site?</li> <li>Small ads: also known as classifieds. These expire so there�s some kind of dynamic going on here but the ordering of items isn�t necessarily chronological. How to describe the location of the seller, or the condition of the item or even the price. Not every ad is selling something � perhaps it�s to rent out a room.</li> <li>Personals: similar model to the small ads. No prices though (I hope). Comes with a ready made vocabulary of terms that could be converted to an <span class="caps">RDF</span> schema. Probably should do that just for the hell of it anyway � gsoh</li> <li>Weather reports: how about a week�s worth of weather in an <span class="caps">RSS</span> channel. If an item is dated in the future, should an aggregator display it before time? Alternate representations include maps of temperature and pressure etc.</li> <li>Auctions: again, related to small ads, but these are much more time limited since there is a hard cutoff after which the auction is closed. The sequence of bids could be interesting � would it make sense to thread them like a discussion so you can see the tactics?</li> <li>TV listings: this is definitely chronological but with a twist � the items have durations. They also have other metadata such as cast lists, classification ratings, widescreen, stereo, program type. Some types have additional information such as director and production year.</li> <li>Top ten listings: top ten singles, books, dvds, richest people, ugliest, rear of the year etc. Not chronological, but has definate order. May update from day to day or even more often.</li> <li>Sales reporting: imagine if every department of a company reported their sales figures via <span class="caps">RSS</span>. Then the divisions aggregate the departmental figures and republish to the regional offices, who aggregate and add value up the chain. The chairman of the company subscribes to one super-aggregate feed.</li> <li>Membership lists / buddy lists: could I publish my buddy list from Jabber or other instant messengers? Maybe as an interchange format or perhaps could be used to look for shared contacts. Lots of potential overlap with <span class="caps">FOAF</span> here.</li> <li>Mailing lists: or in fact any messaging system such as usenet. There are some efforts at doing this already (e.g. yahoogroups) but we need more information � threads; references; headers; links into archives.</li> <li>Price lists / inventory: the items here are products or services. No particular ordering but it�d be nice to be able to subscribe to a catalog of products and prices from a company. The aggregator should be able to pick out price rises or bargains given enough history.</li> <div align="right">[via <a href="http://jena.hpl.hp.com:3030/blojsom-hp/blog/">Semantic Blogging Demonstrator</a>] </div></ul></span></blockquote> <p><span style="font-size: 10pt; font-family: Arial;">Thus, if we can comprehend RSS (the blog article below does a great job) we should be able to see the fundamental challenges that are before any organization seeking to exploit the potential of the imminent Web 2.0 inflection; how will you cost-effectively create XML data from existing data sources? Without upgrading or switching database engines, operating systems, programming languages? Put differently how can you exploit this phenomenon without losing your ever dwindling technology choices (believe me choices are dwindling fast but most are oblivious to this fact).</span></p><p xmlns="o"></p> <p> </p> <a href="index.vspx?tag=xml" rel="tag" style="display:none;">xml</a><a href="index.vspx?tag=rss" rel="tag" style="display:none;">rss</a><a href="index.vspx?tag=syndication" rel="tag" style="display:none;">syndication</a>
Tim O'Reilly about network aware software
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-07-07#201
2003-07-07T20:51:35Z
2006-06-22T08:56:58-04:00
<p><a href="http://blog.bitflux.ch/p1077.html">Tim O'Reilly about network aware software</a> </p> <p>Tim O'Reilly wrote some thoughts about network aware software. Good sumup and nice ideas, why not only blogs should be net-aware (and where even blogs can be improved ;) ) </p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <div align="left">"<i>For the desktop, my personal vision is to see existing software instrumented to become increasingly web aware. It seems that Apple are doing a good job with this. (What does web aware mean for me? Being able to grok URIs, speaking WebDAV, and using open standard data formats.)</i>" -- <strong>Edd Dumbill</strong> </div> <div align="left"></div> <div align="left">[via <a href="http://blog.bitflux.ch/">Bitflux Blog</a>]</div></blockquote> <div align="left">I agree, but you do have to add Open Data Access formats (such as ODBC and to some degree JDBC) to this mix otherwise the you will need to create data for Open Standard Data Formats from sratch (tough for any enterprise irrespective of size).</div> <div align="left"></div> <div align="left">Tim O'Reilly added the following items to Edd's list:</div> <div align="left"> <ul> <li> <p>Rendezvous-like functionality for automatic discovery of and potential synchronization with other instances of the application on other computers. Apple is showing the power of this idea with iChat and iTunes, but it really could be applied in so many other places. For example, if every PIM supported this functionality, we could have the equivalent of "phonester" where you could automatically ask peers for contact information. Of course, that leads to guideline 2. </p></li></ul></div> <p>Another application is discovery of <a href="http://www.openlinksw.com/info/docs/uda50/mt/features.html#features">ODBC data sources</a>, and database servers. Rendezvous can also simply security and administration of data sources accessible by either one of these standards data access mechanisms. It can also apply to XML databases and data sources exposed by <a href="http://www.openlinksw.com/virtuoso/whatis.htm">XML Databases</a>.</p> <p></p> <p></p> <ul> <li>If you assume ad-hoc networking, you have to automatically define levels of access. I've always thought that the old Unix ugo (user, group, other) three-level permission system was simple and elegant, and if you replace the somewhat arbitrary "group" with "on my buddy list", you get something quite powerful. Which leads me to... <p></p> <p></p></li> <ul> <li>Buddy lists ought to be supported as a standard feature of many apps, and in a consistent way. What's more, our address books really ought to make it easy to indicate who is in a "buddy list" and support numerous overlapping lists for different purposes. <br></li></ul> <li>Every application ought to expose some version of its data as an XML feed via some well-defined and standard access mechanism. It strikes me that one of the really big wins that fueled the early web was a simple naming scheme: you could go to a site called www.foo.com, and you'd find a web server there. While it wasn't required, it made web addresses eminently guessable. We missed the opportunity for xml.foo.com to mean "this is where you get the data feed" but it's probably still possible to come up with a simple, consistent naming scheme. And of course, if we can do it for web sites, we also need to think about how to do it for local applications, since... </li></ul> <p>The very point I continue to make about Internet Points of Presence beingactual data acces points, in short these end points should be served by database serverprocesses. This is the very basis of <a href="http://www.openlinksw.com/virtuoso">Virtuoso</a>, the inevitability of this realization remains the undepinings of this product. There are other products out there that have some sense of this vision too, but there is a little snag (at least so far in my research efforts), and that is the tendency to create dedicated independent server per protocol (an ultimate integration, administration, and maintenance nightmare).</p> <ul> <li>We ought to be able to have the expectation that all applications, whether local or remote (web) will be set up for two-way interactions. That is, they can be either a source or sink of online data. So, for example, the natural complement to amazon's web services data feeds is data input (for example, the ability to comment on a book on your local blog, and syndicate the review via RSS to amazon's detail page for the book.) And that leads to: <p></p> <p></p></li> <li>We really need to understand who owns what, and come up with mechanisms that protect the legitimate rights of individuals and businesses to their own data, while creating the "liquidity" and free movement of data that will fuel the next great revolution in computer functionality. (I'm doing a panel on this subject at next week's Open Source Convention, entitled "<a href="http://conferences.oreillynet.com/cs/os2003/view/e_sess/4526">We Need a Bill of Rights for Web Services</a>.") <p></p> <p></p></li> <li>We need easy gateways between different application domains. I was recently in Finland at a Nokia retreat, and we used camera-enabled cell phones to create a mobile photoblog. That was great. But even more exciting was the ease with which I could send a photo from the phone not just to another phone but also to an email address. This is the functionality that enabled the blog gateway, but it also made it trivial to send photos home to my family and friends. Similarly, I often blog things that I hear on mailing lists, and read many web sites via screen-scraping enabled email lists. It would be nice to have cross-application gateways be a routine part of software, rather than something that has to be hacked on after the fact.</li></ul> <div align="left">The wish list is pretty much a clear articulation of key items that should matter most to decision makers (CTOs and CIOs) ; in particular those that continue to wrestle with the identification and isolation of relevantcomponentsfor their enterprisearchitectures. </div>
Lack Of Internet Skills A Barrier To Progress At Work
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-06-25#182
2003-06-25T13:27:02Z
2006-06-22T08:56:58-04:00
<P><A href="http://techdirt.com/articles/20030625/0124245.shtml">Lack Of Internet Skills A Barrier To Progress At Work</A></P> <P>We need to get with the program, technology is no silver bullet, we have brains for a reason, we simply need to exercise the brain muscle (this activity has been in rapid decline). The piece below pretty much sums up this sentiment:</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <P><A href="http://techdirt.com/articles/20030625/0124245.shtml">Lack Of Internet Skills A Barrier To Progress At Work</A> I would guess this really depends on what your job entails, but a new survey has found that many people who lack internet "skills" feel that it has <A href="http://www.ananova.com/news/story/sm_793495.html">held them back at work</A>. There are plenty of jobs where I would assume it would be a requirement that you know how to use the internet, while there are plenty of others where it shouldn't matter one way or the other. Also, I imagine this problem will begin to decrease over time as a new generation of workers shows up who were brought up on the internet. Of course, then we'll find out that a lack of "mobile phone text messaging" or some other random tech skill will be holding people back at work. These are all skills that can be picked up with a little bit of effort. If people think they need them to advance in their job, isn't it their responsibility to learn these skills? You make yourself employable by keeping up-to-date. [via <A href="http://www.techdirt.com/">Techdirt</A>]</P></BLOCKQUOTE></BLOCKQUOTE> <P dir=ltr>I say, "Get with the Program!".</P> <P dir=ltr> </P>
Ingres - A Forgotten Database, the untold story
http://www.openlinksw.com:443/blog/kidehen@openlinksw.com/blog/?date=2003-06-17#279
2003-06-17T11:18:57Z
2006-06-22T08:56:58-04:00
<P><A href="http://www.it-director.com/article.php?articleid=10951">Ingres - A Forgottent Database The Untold Story</A></P> <P><EM>Ingres (technically, Advantage Ingres Enterprise) is, arguably, the forgotten database. There used to be five major databases: Oracle, DB2, Sybase, Informix and Ingres. Then along came Microsoft and, if you listened to most press comment (or the lack of it), you would think that there were only two of these left, plus SQL Server</EM>. [From <A href="http://www.it-director.com/article.php?articleid=10951">IT-Director</A>]</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Oracle, Microsoft, and IBM would certainly like the illusion of a 3 horse race, as this is the only way they can induce Ingres, Informix, and Sybase users to jump ship, and this, even though database migrations are by far the most risk prone and problematic aspects of any IT infrastructure. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P> <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Here is the interesting logic from the self-made big three, if you want to take advanatage of new paradigms and technologies such as XML, Web Services, and anything else in the pipeline you have to move all your data out of these databases, and then get all the mission critical applications re-associated with one of these databases, and by the way when you do so it is advisable that you use native interfaces (so that sometime in the future you have no chance whatsoever of repeating this folly at their expense).<o:p></o:p></SPAN></P> <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The simple fact of the matter (which the self-made big three do not want you to know) is that you can put ODBC, JDBC, even platform specific data access APIs such as OLE DB and ADO.NET atop any of these databases, and then explore and exploit the benefits of new technologies and paradigms as long as the tool pool supports one of more of these standards.<o:p></o:p></SPAN></P> <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Unfortunately the no-brainer above appears to be the more difficult of the choices before decision makers. In other words, many would rather dig themselves into a deeper hole (unknowingly i can only presume) that ultimately leads to technology lock-in.<o:p></o:p></SPAN></P> <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The biggest challenge before any RDBMS based infrastructure today isn't which of the self-made big three to migrate to wholesale, rather, how to make progressive use of the pool of disparate applications, and application databases that proliferate the enterprise. <o:p></o:p></SPAN></P> <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">This is another way of understanding the burgeoning market for Virtual Databases, which in my opiion present the new frontier in database technology.<o:p></o:p></SPAN></P> <P> </P></BLOCKQUOTE>