<?xml version="1.0" encoding="UTF-8" ?>
<!--ATOM based XML document generated By OpenLink Virtuoso-->
<atom:feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:vi="http://www.openlinksw.com/weblog/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/">
<atom:id>http://www.openlinksw.com/weblog/dav/dav-blog-1/</atom:id>
<atom:title>OpenLink Community Blog</atom:title>
<atom:link href="http://www.openlinksw.com/weblog/dav/dav-blog-1/" type="text/html" rel="alternate" />
<atom:link href="http://www.openlinksw.com/weblog/dav/dav-blog-1/gems/atom_tag_arch.xml?:tag=jdbc&amp;:bid=dav-blog-1" type="application/atom+xml" rel="self" />
<atom:subtitle>A Collection of blogs by OpenLink Staff</atom:subtitle>
 <atom:author>
  <atom:name>kidehen@openlinksw.com</atom:name>
  <atom:email>kidehen@openlinksw.com</atom:email>
  </atom:author>
<atom:updated>2009-11-23T14:05:11Z</atom:updated>
<atom:generator>Virtuoso Universal Server 05.12.3041</atom:generator>
<atom:logo>http://www.openlinksw.com/weblog/public/images/vbloglogo.gif</atom:logo>
 <atom:entry>
  <atom:title>5 Very Important Things to Note about HTTP based Linked Data</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2009-11-19#1591</atom:id>
  <atom:published>2009-11-19T19:49:09Z</atom:published>
  <atom:updated>2009-11-23T07:04:19.000003-05:00</atom:updated>
  <atom:content type="html">&lt;ol&gt; &lt;li&gt; It isn&amp;#39;t &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id115dfd68&quot;&gt;World Wide Web&lt;/a&gt; Specific (HTTP != World Wide Web)&lt;/li&gt; &lt;li&gt; It isn&amp;#39;t Open &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;Data&lt;/a&gt; Specific &lt;/li&gt; &lt;li&gt; It isn&amp;#39;t about &amp;quot;Free&amp;quot; (Beer or Speech) &lt;/li&gt; &lt;li&gt; It isn&amp;#39;t about Markup (so don&amp;#39;t expect to grok it via &amp;quot;markup first&amp;quot; approach) &lt;/li&gt; &lt;li&gt;It&amp;#39;s about &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id13a6aa98&quot;&gt;Hyperdata&lt;/a&gt; - the use of HTTP and REST to deliver a powerful platform agnostic mechanism for Data Reference, Access, and Integration.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt; When trying to understand HTTP based &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id18aa1490&quot;&gt;Linked Data&lt;/a&gt;, especially if you&amp;#39;re well versed in DBMS technology use (User, Power User, Architect, Analyst, DBA, or Programmer) think:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; Open Database Connectivity (&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id1428fba0&quot;&gt;ODBC&lt;/a&gt;) without operating system, data model, or wire-protocol specificity or lock-in potential &lt;/li&gt; &lt;li&gt; Java Database Connectivity (&lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id18d3c2a8&quot;&gt;JDBC&lt;/a&gt;) without programming language specificity &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id125725b8&quot;&gt;ADO&lt;/a&gt;.NET without .NET runtime specificity and .NET bound language specificity &lt;/li&gt; &lt;li&gt; OLE-DB without Windows operating system &amp;amp; programming language specificity &lt;/li&gt; &lt;li&gt; XMLA without XML format specificity - with Tabular and Multidimensional results formats expressible in a variety of data representation formats. &lt;/li&gt; &lt;li&gt;All of the above scoped to the Record rather than Container level, with Generic HTTP scheme URIs associated with each Record, Field, and Field value (optionally) &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Remember the need for Data Access &amp;amp; Integration technology is the by product of the following realities:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; Human curated data is ultimately dirty, because: &lt;ul&gt; &lt;li&gt;our thick thumbs, inattention, distractions, and general discomfort with typing, make typos prevalent&lt;/li&gt; &lt;li&gt;database engines exist for a variety of data models - Graph, Relational, Hierarchical;&lt;/li&gt; &lt;li&gt;within databases you have different record container/partition names e.g. Table Names;&lt;/li&gt; &lt;li&gt;within a database record container you have records that are really aspects of the same thing (different keys exist in a plethora of operational / line of business systems that expose aspects of the same &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id13378338&quot;&gt;entity&lt;/a&gt; e.g., customer data that spans Accounts, CRM, ERP application databases);&lt;/li&gt; &lt;li&gt;different field names (one database has &amp;quot;EMP&amp;quot; while another has &amp;quot;Employee&amp;quot;) for the same record&lt;/li&gt;.&lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Units of measurement is driven by locale, the UK office wants to see sales in Pounds Sterling while the French office prefers Euros etc.&lt;/li&gt; &lt;li&gt;All of the above is subject to &lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id17e46398&quot;&gt;context&lt;/a&gt; halos which can be quite granular re. sensitivity e.g. staff travel between locations that alter locales and their roles; basically, profiles matters a lot.&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1364&quot; id=&quot;link-id128f0fe8&quot;&gt;ODBC and WODBC (Web Open Database Connectivity) Comparison&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1364&quot; id=&quot;link-id1367cd18&quot;&gt;Creating, Deploying, and Exploiting Linked Data Presentation&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.odata.org/&quot; id=&quot;link-id122ab708&quot;&gt;Open Data Protocol Project&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Short Recap of Virtuoso Basics (#3 of 5)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2009-04-30#1552</atom:id>
  <atom:published>2009-04-30T15:49:53Z</atom:published>
  <atom:updated>2009-04-30T12:11:45-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;(Third of five posts related to the &lt;a href=&quot;http://www2009.org/&quot; id=&quot;link-id0x14b582b8&quot;&gt;WWW 2009&lt;/a&gt; conference, held the week of April 20, 2009.) &lt;/p&gt; &lt;p&gt;There are some points that came up in conversation at WWW 2009 that I will reiterate here. We find there is still some lack of clarity in the product image, so I will here condense it.&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x14bf48b8&quot;&gt;Virtuoso&lt;/a&gt; is a DBMS. We pitch it primarily to the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x16bc4490&quot;&gt;data&lt;/a&gt; web space because this is where we see the emerging frontier. Virtuoso does both &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1223dc30&quot;&gt;SQL&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x170eec88&quot;&gt;SPARQL&lt;/a&gt; and can do both at large scale and high performance. The popular perception of &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x15a05fc0&quot;&gt;RDF&lt;/a&gt; and Relational models as mutually exclusive and antagonistic poles is based on the poor scalability of early RDF implementations. What we do is to have all the RDF specifics, like IRIs and typed literals as native SQL types, and to have a cost based optimizer that knows about this all.&lt;/p&gt; &lt;p&gt;If you want application-specific data structures as opposed to a schema-agnostic quad-store model (triple + graph-name), then Virtuoso can give you this too. &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/rdfsparqlintegrationmiddleware.html#rdfviews&quot; id=&quot;link-id14ddc7c8&quot;&gt;Rendering application specific data structures as RDF&lt;/a&gt; applies equally to relational data in non-Virtuoso databases because Virtuoso SQL can &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/qsvdbsrv.html&quot; id=&quot;link-id14aaea70&quot;&gt;federate tables from heterogenous DBMS&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;On top of this, there is a &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/qswebserver.html&quot; id=&quot;link-id16fcde60&quot;&gt;web server built in&lt;/a&gt;, so that no extra server is needed for web services, web pages, and the like.&lt;/p&gt; &lt;p&gt;Installation is simple, just one exe and one config file. There is a huge amount of code in &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/installation.html&quot; id=&quot;link-id16767b40&quot;&gt;installers&lt;/a&gt; â application code and test suites and such â but none of this is needed when you deploy. Scale goes from a 25MB memory footprint on the desktop to hundreds of gigabytes of RAM and endless terabytes of disk on shared-nothing clusters.&lt;/p&gt; &lt;p&gt;Clusters (coming in Release 6) and SQL federation are &lt;a href=&quot;http://download.openlinksw.com/download/product_matrix.vsp?p=l_os&amp;amp;c=39&amp;amp;df=16&quot; id=&quot;link-id16722550&quot;&gt;commercial only&lt;/a&gt;; the rest can be had &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=161622&quot; id=&quot;link-id131080a8&quot;&gt;under GPL&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;To condense further:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Scalable Delivery of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x1060ad98&quot;&gt;Linked Data&lt;/a&gt; &lt;/li&gt; &lt;li&gt;SPARQL and SQL &lt;ul&gt; &lt;li&gt;Arbitrary RDF Data + Relational&lt;/li&gt; &lt;li&gt;Also From 3rd Party &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0x16bbce60&quot;&gt;RDBMS&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Easy Deployment &lt;/li&gt; &lt;li&gt;Standard Interfaces &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x12e284d8&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xb5e1400&quot;&gt;JDBC&lt;/a&gt;, OLE DB, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x15a55db8&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/.NET_Framework&quot; id=&quot;link-id0x16beb070&quot;&gt;NET&lt;/a&gt;, XMLA&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x122b5008&quot;&gt;Jena&lt;/a&gt;, &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id0x148d4078&quot;&gt;Sesame&lt;/a&gt;, etc.&lt;/li&gt; &lt;li&gt;All Web Protocols &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Short Recap of Virtuoso Basics (#3 of 5)</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2009-04-30#1550</atom:id>
  <atom:published>2009-04-30T15:49:53Z</atom:published>
  <atom:updated>2009-04-30T12:11:43.000001-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;(Third of five posts related to the &lt;a href=&quot;http://www2009.org/&quot; id=&quot;link-id0x1081fe40&quot;&gt;WWW 2009&lt;/a&gt; conference, held the week of April 20, 2009.) &lt;/p&gt; &lt;p&gt;There are some points that came up in conversation at WWW 2009 that I will reiterate here. We find there is still some lack of clarity in the product image, so I will here condense it.&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xd0e85f0&quot;&gt;Virtuoso&lt;/a&gt; is a DBMS. We pitch it primarily to the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x14a294d8&quot;&gt;data&lt;/a&gt; web space because this is where we see the emerging frontier. Virtuoso does both &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x108042f8&quot;&gt;SQL&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x10889878&quot;&gt;SPARQL&lt;/a&gt; and can do both at large scale and high performance. The popular perception of &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x107d3b40&quot;&gt;RDF&lt;/a&gt; and Relational models as mutually exclusive and antagonistic poles is based on the poor scalability of early RDF implementations. What we do is to have all the RDF specifics, like IRIs and typed literals as native SQL types, and to have a cost based optimizer that knows about this all.&lt;/p&gt; &lt;p&gt;If you want application-specific data structures as opposed to a schema-agnostic quad-store model (triple + graph-name), then Virtuoso can give you this too. &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/rdfsparqlintegrationmiddleware.html#rdfviews&quot; id=&quot;link-id14ddc7c8&quot;&gt;Rendering application specific data structures as RDF&lt;/a&gt; applies equally to relational data in non-Virtuoso databases because Virtuoso SQL can &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/qsvdbsrv.html&quot; id=&quot;link-id14aaea70&quot;&gt;federate tables from heterogenous DBMS&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;On top of this, there is a &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/qswebserver.html&quot; id=&quot;link-id16fcde60&quot;&gt;web server built in&lt;/a&gt;, so that no extra server is needed for web services, web pages, and the like.&lt;/p&gt; &lt;p&gt;Installation is simple, just one exe and one config file. There is a huge amount of code in &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/installation.html&quot; id=&quot;link-id16767b40&quot;&gt;installers&lt;/a&gt; â application code and test suites and such â but none of this is needed when you deploy. Scale goes from a 25MB memory footprint on the desktop to hundreds of gigabytes of RAM and endless terabytes of disk on shared-nothing clusters.&lt;/p&gt; &lt;p&gt;Clusters (coming in Release 6) and SQL federation are &lt;a href=&quot;http://download.openlinksw.com/download/product_matrix.vsp?p=l_os&amp;amp;c=39&amp;amp;df=16&quot; id=&quot;link-id16722550&quot;&gt;commercial only&lt;/a&gt;; the rest can be had &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=161622&quot; id=&quot;link-id131080a8&quot;&gt;under GPL&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;To condense further:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Scalable Delivery of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x12211da8&quot;&gt;Linked Data&lt;/a&gt; &lt;/li&gt; &lt;li&gt;SPARQL and SQL &lt;ul&gt; &lt;li&gt;Arbitrary RDF Data + Relational&lt;/li&gt; &lt;li&gt;Also From 3rd Party &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0x168db0e0&quot;&gt;RDBMS&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Easy Deployment &lt;/li&gt; &lt;li&gt;Standard Interfaces &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x10473bf0&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x12187f58&quot;&gt;JDBC&lt;/a&gt;, OLE DB, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x10354e48&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/.NET_Framework&quot; id=&quot;link-id0x16eeadd0&quot;&gt;NET&lt;/a&gt;, XMLA&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x12e3fe08&quot;&gt;Jena&lt;/a&gt;, &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id0x15e62470&quot;&gt;Sesame&lt;/a&gt;, etc.&lt;/li&gt; &lt;li&gt;All Web Protocols &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Time for RDBMS Primacy Downgrade is Nigh! (No Embedded Images Edition - Update 1)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2009-01-27#1520</atom:id>
  <atom:published>2009-01-27T19:19:44Z</atom:published>
  <atom:updated>2009-03-17T11:50:58-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; As the world works it way through a &amp;quot;once in a generation&amp;quot; economic crisis, the long overdue downgrade of the &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id15750540&quot;&gt;RDBMS&lt;/a&gt;, from its pivotal position at the apex of the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x24ea3650&quot;&gt;data&lt;/a&gt; access and data management pyramid is nigh.&lt;/p&gt; &lt;h3&gt;What is the Data Access, and Data Management Value Pyramid?&lt;/h3&gt; &lt;p&gt; As depicted below, a top-down view of the data access and data management value chain. The term: apex, simply indicates value primacy, which takes the form of a data access API based entry point into a DBMS realm -- aligned to an underlying data model. Examples of data access APIs include: Native Call Level Interfaces (CLIs), &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id11c254c0&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id149b16a8&quot;&gt;JDBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id11451eb0&quot;&gt;ADO&lt;/a&gt;.NET, &lt;a href=&quot;http://dbpedia.org/resource/OLE_DB&quot; id=&quot;link-id15b02478&quot;&gt;OLE-DB&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/XML_for_Analysis&quot; id=&quot;link-id1181fa10&quot;&gt;XMLA&lt;/a&gt;, and &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id0x1f8394a8&quot;&gt;Web&lt;/a&gt; Services.&lt;/p&gt; See: &lt;a href=&quot;http://virtuoso.openlinksw.com/images/Agility_Value_Factors_Pyramid.png&quot; id=&quot;link-id146cadd8&quot;&gt; AVF Pyramid Diagram.&lt;/a&gt; &lt;p&gt; The degree to which ad-hoc views of data managed by a DBMS can be produced and dispatched to relevant data consumers (e.g. people), without compromising concurrency, data durability, and security, collectively determine the &amp;quot;Agility Value Factor&amp;quot; (AVF) of a given DBMS. Remember, agility as the cornerstone of environmental adaptation is as old as the concept of evolution, and intrinsic to all pursuits of primacy. &lt;/p&gt; &lt;p&gt;In simpler business oriented terms, look at AVF as the degree to which DBMS technology affects the ability to effectively implement &amp;quot;Market Leadership Discipline&amp;quot; along the following pathways: innovation, operation excellence, or customer intimacy. &lt;/p&gt; &lt;h3&gt;Why has RDBMS Primacy has Endured?&lt;/h3&gt; &lt;p&gt; Historically, at least since the late &amp;#39;80s, the RDBMS genre of DBMS has consistently offered the highest AVF relative to other DBMS genres en route to primacy within the value pyramid. The desire to improve on paper reports and spreadsheets is basically what DBMS technology has fundamentally addressed to date, even though conceptual level interaction with data has never been its forte.&lt;/p&gt; See: &lt;a href=&quot;http://virtuoso.openlinksw.com/images/Old_RDBMS_Primacy_Pyramid.png&quot; id=&quot;link-id134dab90&quot;&gt; RDBMS Primacy Diagram.&lt;/a&gt; &lt;p&gt; For more then 10 years -- at the very least -- limitations of the traditional RDBMS in the realm of conceptual level interaction with data across diverse data sources and schemas (enterprise, Web, and &lt;a href=&quot;http://dbpedia.org/resource/Internet&quot; id=&quot;link-id116001c0&quot;&gt;Internet&lt;/a&gt;) has been crystal clear to many RDBMS technology practitioners, as indicated by some of the quotes excerpted below:&lt;/p&gt; &lt;blockquote&gt; &lt;cite&gt; &lt;p&gt; &amp;quot;Future of Database Research is excellent, but what is the future of data?&amp;quot; &lt;/p&gt; &amp;quot;..it is hard for &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id14932398&quot;&gt;me&lt;/a&gt; to disagree with the conclusions in this report. It captures exactly the right thoughts, and should be a must read for everyone involved in the area of databases and database research in particular.&amp;quot; &lt;p&gt;-- &lt;a href=&quot;http://jhingran.typepad.com/anant_jhingrans_musings/&quot; id=&quot;link-id11334c50&quot;&gt;Dr. Anant Jingran&lt;/a&gt;, CTO, IBM &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id150c7970&quot;&gt;Information&lt;/a&gt; Management Systems, commenting on the &lt;a href=&quot;http://db.cs.berkeley.edu/claremont/&quot; id=&quot;link-id11c3b408&quot;&gt;2007 RDBMS technology retreat&lt;/a&gt; attended by a number of key DBMS technology pioneers and researchers.&lt;/p&gt; &lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;cite&gt; &lt;p&gt; &amp;quot;&lt;a href=&quot;http://www.databasecolumn.com/2007/09/one-size-fits-all.html&quot; id=&quot;link-id15c14f08&quot;&gt;One size fits all: A concept whose time has come and gone&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;ol&gt; &lt;li&gt; They are direct descendants of System R and &lt;a href=&quot;http://dbpedia.org/resource/Ingres&quot; id=&quot;link-id146da780&quot;&gt;Ingres&lt;/a&gt; and were architected more than 25 years ago&lt;/li&gt; &lt;li&gt; They are advocating &amp;quot;one size fits all&amp;quot;; i.e. a single engine that solves all DBMS needs. &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;-- Prof. &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Stonebraker&quot; id=&quot;link-id145c4e28&quot;&gt;Michael Stonebreaker&lt;/a&gt;, one of the founding fathers of the RDBMS industry.&lt;/p&gt; &lt;/cite&gt; &lt;/blockquote&gt; &lt;p&gt;Until this point in time, the requisite confluence of &amp;quot;circumstantial pain&amp;quot; and &amp;quot;open standards&amp;quot; based technology required to enable an objective &amp;quot;compare and contrast&amp;quot; of RDBMS engine virtues and viable alternatives hasn&amp;#39;t occurred. Thus, the RDBMS has endured it position of primacy albeit on a &amp;quot;one size fits all basis&amp;quot;. &lt;/p&gt; &lt;h4&gt;Circumstantial Pain&lt;/h4&gt; &lt;p&gt; As mentioned earlier, we are in the midst of an economic crisis that is ultimately about a consistent inability to connect dots across a substrate of interlinked data sources that transcend traditional data access boundaries with high doses of schematic heterogeneity. Ironically, in a era of the dot-com, we haven&amp;#39;t been able to make meaningful connections between relevant &amp;quot;real-world things&amp;quot; that extend beyond primitive data hosted database tables and content management style document containers; we&amp;#39;ve struggled to achieve this in the most basic sense, let alone evolve our ability to connect inline with the &lt;a href=&quot;http://www.vldb2007.org/program/slides/s1161-brodie.pdf&quot; id=&quot;link-id11a0dcf0&quot;&gt;exponential rate at which the Internet &amp;amp; Web are spawning &amp;quot;universes of discourse&amp;quot; (data spaces) that emanate from user activity&lt;/a&gt; (within the enterprise and across the Internet &amp;amp; Web). In a nutshell, we haven&amp;#39;t been able to upgrade our interaction with data such that &amp;quot;conceptual models&amp;quot; and resulting &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id12da4b00&quot;&gt;context&lt;/a&gt; lenses&amp;quot; (or facets) become concrete; by this I mean: real-world &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id146a48a8&quot;&gt;entity&lt;/a&gt; interaction making its way into the computer realm as opposed to the impedance we all suffer today when we transition from conceptual model interaction (real-world) to logical model interaction (when dealing with RDBMS based data access and data management). &lt;/p&gt; &lt;p&gt;Here are some simple examples of what I can only best describe as: &amp;quot;critical dots unconnected&amp;quot;, resulting from an inability to interact with data conceptually:&lt;/p&gt; &lt;strong&gt;Government (Globally) -&lt;/strong&gt; &lt;p&gt; Financial regulatory bodies couldn&amp;#39;t effectively discern that a &lt;a href=&quot;http://dbpedia.org/resource/Credit_default_swap&quot; id=&quot;link-id115ba0e0&quot;&gt;Credit Default Swap&lt;/a&gt; is an Insurance policy in all but literal name. And in not doing so the cost of an unregulated &lt;a href=&quot;http://dbpedia.org/resource/Insurance&quot; id=&quot;link-id158d4960&quot;&gt;insurance policy&lt;/a&gt; laid the foundation for exacerbating the toxicity of fatally flawed mortgage backed securities. Put simply: a flawed insurance policy was the fallback on a toxic security that financiers found exotic based on superficial packaging.&lt;/p&gt; &lt;strong&gt;Enterprises - &lt;/strong&gt; &lt;p&gt; Banks still don&amp;#39;t understand that capital really does exists in tangible and intangible forms; with the intangible being the variant that is inherently dynamic. For example, a tech companies intellectual capital far exceeds the value of fixture, fittings, and buildings, but you be amazed to find that in most cases this vital asset has not significant value when banks get down to the nitty gritty of debt collateral; instead, a buffer of flawed securitization has occurred atop a borderline static asset class covering the aforementioned buildings, fixtures, and fittings. &lt;/p&gt; &lt;p&gt; In the general enterprise arena, IT executives continued to &amp;quot;rip and replace&amp;quot; existing technology without ever effectively addressing the timeless inability to connect data across disparate data silos generated by internal enterprise applications, let alone the broader need to mesh data from the inside with external data sources. No correlations made between the growth of buzzwords and the compounding nature of data integration challenges. It&amp;#39;s 2009 and only a miniscule number of executives dare fantasize about being anywhere within distance of the: relevant information at your fingertips vision. &lt;/p&gt; &lt;p&gt; Looking more holistically at data interaction in general, whether you interact with data in the enterprise space (i.e., at work) or on the Internet or Web, you ultimately are delving into a mishmash of disparate computer systems, applications, service (Web or SOA), and databases (of the RDBMS variety in a majority of cases) associated with a plethora of disparate schemas. Yes, but even today &amp;quot;rip and replace&amp;quot; is still the norm pushed by most vendors; pitting one mono culture against another as exemplified by irrelevances such as: FOSS/LAMP vs Commercial or Web vs. Enterprise, when none of this matters if the data access and integration issues are recognized let alone addressed (see: &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1497?sid=0df0294caee8b37925c6a888bbbca136&amp;amp;realm=wa&quot; id=&quot;link-id15c27300&quot;&gt;Applications are Like Fish and Data Like Wine&lt;/a&gt;). &lt;/p&gt; &lt;p&gt; Like the current credit-crunch, exponential growth of data originating from disparate application databases and associated schemas, within shrinking processing time frames, has triggered a rethinking of what defines data access and data management value today en route to an inevitable RDBMS downgrade within the value pyramid.&lt;/p&gt; &lt;h3&gt;Technology&lt;/h3&gt; &lt;p&gt;There have been many attempts to address real-world modeling requirements across the broader DBMS community from Object Databases to Object-Relational Databases, and more recently the emergence of simple &lt;a href=&quot;http://dbpedia.org/resource/Entity-attribute-value_model&quot; id=&quot;link-id1128dad0&quot;&gt;Entity&lt;/a&gt;-Attribute-Value model DBMS engines. In all cases failure has come down to the existence of one or more of the following deficiencies, across each potential alternative:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Query language standardization - nothing close to &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id16002d60&quot;&gt;SQL&lt;/a&gt; standardization&lt;/li&gt; &lt;li&gt;Data Access API standardization - nothing close to ODBC, JDBC, OLE-DB, or ADO.NET&lt;/li&gt; &lt;li&gt;Wire protocol standardization - nothing close to HTTP&lt;/li&gt; &lt;li&gt;Distributed Identity infrastructure - nothing close to the non-repudiatable digital Identity that &lt;a href=&quot;http://dbpedia.org/resource/Friend_of_a_friend&quot; id=&quot;link-id14926b18&quot;&gt;foaf&lt;/a&gt;+ssl accords&lt;/li&gt; &lt;li&gt;Use of Identifiers as network based pointers to data sources - nothing close to RDF based &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id16180a28&quot;&gt;Linked Data&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Negotiable data representation - nothing close to Mime and HTTP based Content Negotiation&lt;/li&gt; &lt;li&gt;Scalability especially in the era of Internet &amp;amp; Web scale.&lt;/li&gt; &lt;/ol&gt; &lt;h4&gt;Entity-Attribute-Value with Classes &amp;amp; Relationships (&lt;a href=&quot;http://dbpedia.org/resource/Entity-attribute-value_model&quot; id=&quot;link-id13e741b8&quot;&gt;EAV&lt;/a&gt;/CR) data models&lt;/h4&gt; &lt;p&gt;A common characteristic shared by all post-relational DBMS management systems (from Object Relational to pure Object) is an orientation towards variations of EAV/CR based data models. Unfortunately, all efforts in the EAV/CR realm have typically suffered from at least one of the deficiencies listed above. In addition, the same &amp;quot;one DBMS model fits all&amp;quot; approach that lies at the heart of the RDBMS downgrade also exists in the EAV/CR realm.&lt;/p&gt; &lt;h3&gt;What Comes Next?&lt;/h3&gt; &lt;p&gt;The RDBMS is not going away (ever), but its era of primacy -- by virtue of its placement at the apex of the data access and data management value pyramid -- is over! I make this bold claim for the following reasons: &lt;/p&gt; &lt;ol&gt; &lt;li&gt; The Internet aided &amp;quot;Global Village&amp;quot; has brought &amp;quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Open_World_Assumption&quot; id=&quot;link-id1148e560&quot;&gt;Open World&lt;/a&gt;&amp;quot; vs &amp;quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Closed_World_Assumption&quot; id=&quot;link-id11967cd0&quot;&gt;Closed World&lt;/a&gt;&amp;quot; assumption issues to the fore e.g., the current global economic crisis remains centered on the inability to connect dots across &amp;quot;Open World&amp;quot; and &amp;quot;Closed World&amp;quot; data frontiers &lt;/li&gt; &lt;li&gt; Entity-Attribute-Value with Classes &amp;amp; Relationships (EAV/CR) based DBMS models are more effective when dealing with disparate data associated with disparate schemas, across disparate DBMS engines, host operating systems, and networks. &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Based on the above, it is crystal clear that a different kind of DBMS -- one with higher AVF relative to the RDBMS -- needs to sit atop today&amp;#39;s data access and data management value pyramid. The characteristics of this DBMS must include the following:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; Every item of data (Datum/Entity/Object/Resource) has Identity&lt;/li&gt; &lt;li&gt; Identity is achieved via Identifiers that aren&amp;#39;t locked at the DBMS, OS, Network, or Application levels&lt;/li&gt; &lt;li&gt; Object Identifiers and Object values are independent (extricably linked by association)&lt;/li&gt; &lt;li&gt; Object values should be de-referencable via Object Identifier&lt;/li&gt; &lt;li&gt; Representation of de-referenced value graph (entity, attributes, and values mesh) must be negotiable (i.e. content negotiation)&lt;/li&gt; &lt;li&gt;Structured query language must provide mechanism for Creation, Deletion, Updates, and Querying of data objects&lt;/li&gt; &lt;li&gt; Performance &amp;amp; Scalability across &amp;quot;Closed World&amp;quot; (enterprise) and &amp;quot;Open World&amp;quot; (Internet &amp;amp; Web) realms.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Quick recap, I am not saying that RDBMS engine technology is dead or obsolete. I am simply stating that the era of RDBMS primacy within the data access and data management value pyramid is over. &lt;/p&gt; &lt;p&gt;The problem domain (conceptual model views over heterogeneous data sources) at the apex of the aforementioned pyramid has simply evolved beyond the natural capabilities of the RDBMS which is rooted in &amp;quot;Closed World&amp;quot; assumptions re., data definition, access, and management. The need to maintain domain based conceptual interaction with data is now palpable at every echelon within our &amp;quot;Global Village&amp;quot; - Internet, Web, Enterprise, Government etc.&lt;/p&gt; &lt;p&gt;It is my personal view that an EAV/CR model based DBMS, with support for the seven items enumerated above, can trigger the long anticipated RDBMS downgrade. Such a DBMS would be inherently multi-model because you would need to the best of RDBMS and EAV/CR model engines in a single product, with in-built support for HTTP and other Internet protocols in order to effectively address data representation and serialization issues.&lt;/p&gt; &lt;h4&gt;EAV/CR Oriented Data Access &amp;amp; Management Technology&lt;/h4&gt; &lt;p&gt;Examples of contemporary EAV/CR frameworks that provide concrete conceptual layers for data access and data management currently include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id115d1cb0&quot;&gt; Resource Description Framework&lt;/a&gt; (RDF) - an EAV/CR based framework&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id116cf810&quot;&gt;RDF Linked Data &lt;/a&gt;- EAV/CR based framework that mandates de-referencable HTTP based Identifiers&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET_Entity_Framework&quot; id=&quot;link-id13daa160&quot;&gt;ADO.NET Entity Frameworks&lt;/a&gt; - Microsoft .NET based EAV/CR framework&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/page/Core_Data&quot; id=&quot;link-id11111838&quot;&gt;Core Data Services &lt;/a&gt;- Mac OS X based EAV/CR framework that evolved from NeXT&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/Enterprise_Objects_Framework&quot; id=&quot;link-id15c27df0&quot;&gt;Enterprise Object Frameworks&lt;/a&gt; (EOF).&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The frameworks above provide the basis for a revised AVF pyramid, as depicted below, that reflects today&amp;#39;s data access and management realities i.e., an Internet &amp;amp; Web driven global village comprised of interlinked distributed data objects, compatible with &amp;quot;Open World&amp;quot; assumptions.&lt;/p&gt; See: &lt;a href=&quot;http://virtuoso.openlinksw.com/images/New_EAV_RDBMS_Pyramid.png&quot; id=&quot;link-id158e0760&quot;&gt;New EAV/CR Primacy Diagram.&lt;/a&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://dynamicorange.com/2009/01/22/blueblog-how-and-why-glue-is-using-amazon-simpledb-instead-of-a-relational-database/&quot; id=&quot;link-id15e07c10&quot;&gt;How &amp;amp; Why Glue is Using Amazon SimpleDB&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.cs.cmu.edu/afs/cs.cmu.edu/user/clamen/OODBMS/Manifesto/htManifesto/node4.html#SECTION00022000000000000000&quot; id=&quot;link-id116cf450&quot;&gt;Object Database Manifesto (Identity excerpt)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.unixspace.com/context/databases.html&quot; id=&quot;link-id150b2c20&quot;&gt;Database Models Overview&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=WEj9vqVvHPc&amp;amp;feature=related&quot; id=&quot;link-id0x1135d978&quot;&gt;Ted Nelson Explaining Irregularity and Idiosyncrasy of Data Structures&lt;/a&gt; - ZigZag Demo &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>The Time for RDBMS Primacy Downgrade is Nigh!</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2009-01-24#1519</atom:id>
  <atom:published>2009-01-25T00:04:00Z</atom:published>
  <atom:updated>2009-06-03T18:09:58.000001-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; As the world works it way through a &amp;quot;once in a generation&amp;quot; economic crisis, the long overdue downgrade of the &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id15750540&quot;&gt;RDBMS&lt;/a&gt;, from its pivotal position at the apex of the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x66a74b8&quot;&gt;data&lt;/a&gt; access and data management pyramid is nigh.&lt;/p&gt; &lt;h3&gt;What is the Data Access, and Data Management Value Pyramid?&lt;/h3&gt; &lt;p&gt; As depicted below, a top-down view of the data access and data management value chain. The term: apex, simply indicates value primacy, which takes the form of a data access API based entry point into a DBMS realm -- aligned to an underlying data model. Examples of data access APIs include: Native Call Level Interfaces (CLIs), &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id11c254c0&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id149b16a8&quot;&gt;JDBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id11451eb0&quot;&gt;ADO&lt;/a&gt;.NET, &lt;a href=&quot;http://dbpedia.org/resource/OLE_DB&quot; id=&quot;link-id15b02478&quot;&gt;OLE-DB&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/XML_for_Analysis&quot; id=&quot;link-id1181fa10&quot;&gt;XMLA&lt;/a&gt;, and &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id0x2fef498&quot;&gt;Web&lt;/a&gt; Services.&lt;/p&gt; &lt;div&gt; &lt;img alt=&quot;Image&quot; src=&quot;http://virtuoso.openlinksw.com/images/Agility_Value_Factors_Pyramid.png&quot; /&gt; &lt;/div&gt; &lt;p&gt; The degree to which ad-hoc views of data managed by a DBMS can be produced and dispatched to relevant data consumers (e.g. people), without compromising concurrency, data durability, and security, collectively determine the &amp;quot;Agility Value Factor&amp;quot; (AVF) of a given DBMS. Remember, agility as the cornerstone of environmental adaptation is as old as the concept of evolution, and intrinsic to all pursuits of primacy. &lt;/p&gt; &lt;p&gt;In simpler business oriented terms, look at AVF as the degree to which DBMS technology affects the ability to effectively implement &amp;quot;Market Leadership Discipline&amp;quot; along the following pathways: innovation, operation excellence, or customer intimacy. &lt;/p&gt; &lt;h3&gt;Why has RDBMS Primacy has Endured?&lt;/h3&gt; &lt;p&gt; Historically, at least since the late &amp;#39;80s, the RDBMS genre of DBMS has consistently offered the highest AVF relative to other DBMS genres en route to primacy within the value pyramid. The desire to improve on paper reports and spreadsheets is basically what DBMS technology has fundamentally addressed to date, even though conceptual level interaction with data has never been its forte.&lt;/p&gt; &lt;div&gt; &lt;img alt=&quot;Image&quot; src=&quot;http://virtuoso.openlinksw.com/images/Old_RDBMS_Primacy_Pyramid.png&quot; /&gt; &lt;/div&gt; &lt;p&gt; For more then 10 years -- at the very least -- limitations of the traditional RDBMS in the realm of conceptual level interaction with data across diverse data sources and schemas (enterprise, Web, and &lt;a href=&quot;http://dbpedia.org/resource/Internet&quot; id=&quot;link-id116001c0&quot;&gt;Internet&lt;/a&gt;) has been crystal clear to many RDBMS technology practitioners, as indicated by some of the quotes excerpted below:&lt;/p&gt; &lt;blockquote&gt; &lt;cite&gt; &lt;p&gt; &amp;quot;Future of Database Research is excellent, but what is the future of data?&amp;quot; &lt;/p&gt; &amp;quot;..it is hard for &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id14932398&quot;&gt;me&lt;/a&gt; to disagree with the conclusions in this report. It captures exactly the right thoughts, and should be a must read for everyone involved in the area of databases and database research in particular.&amp;quot; &lt;p&gt;-- &lt;a href=&quot;http://jhingran.typepad.com/anant_jhingrans_musings/&quot; id=&quot;link-id11334c50&quot;&gt;Dr. Anant Jingran&lt;/a&gt;, CTO, IBM &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id150c7970&quot;&gt;Information&lt;/a&gt; Management Systems, commenting on the &lt;a href=&quot;http://db.cs.berkeley.edu/claremont/&quot; id=&quot;link-id11c3b408&quot;&gt;2007 RDBMS technology retreat&lt;/a&gt; attended by a number of key DBMS technology pioneers and researchers.&lt;/p&gt; &lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;cite&gt; &lt;p&gt; &amp;quot;&lt;a href=&quot;http://www.databasecolumn.com/2007/09/one-size-fits-all.html&quot; id=&quot;link-id15c14f08&quot;&gt;One size fits all: A concept whose time has come and gone&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;ol&gt; &lt;li&gt; They are direct descendants of System R and &lt;a href=&quot;http://dbpedia.org/resource/Ingres&quot; id=&quot;link-id146da780&quot;&gt;Ingres&lt;/a&gt; and were architected more than 25 years ago&lt;/li&gt; &lt;li&gt; They are advocating &amp;quot;one size fits all&amp;quot;; i.e. a single engine that solves all DBMS needs. &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;-- Prof. &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Stonebraker&quot; id=&quot;link-id145c4e28&quot;&gt;Michael Stonebreaker&lt;/a&gt;, one of the founding fathers of the RDBMS industry.&lt;/p&gt; &lt;/cite&gt; &lt;/blockquote&gt; &lt;p&gt;Until this point in time, the requisite confluence of &amp;quot;circumstantial pain&amp;quot; and &amp;quot;open standards&amp;quot; based technology required to enable an objective &amp;quot;compare and contrast&amp;quot; of RDBMS engine virtues and viable alternatives hasn&amp;#39;t occurred. Thus, the RDBMS has endured it position of primacy albeit on a &amp;quot;one size fits all basis&amp;quot;. &lt;/p&gt; &lt;h4&gt;Circumstantial Pain&lt;/h4&gt; &lt;p&gt; As mentioned earlier, we are in the midst of an economic crisis that is ultimately about a consistent inability to connect dots across a substrate of interlinked data sources that transcend traditional data access boundaries with high doses of schematic heterogeneity. Ironically, in a era of the dot-com, we haven&amp;#39;t been able to make meaningful connections between relevant &amp;quot;real-world things&amp;quot; that extend beyond primitive data hosted database tables and content management style document containers; we&amp;#39;ve struggled to achieve this in the most basic sense, let alone evolve our ability to connect inline with the &lt;a href=&quot;http://www.vldb2007.org/program/slides/s1161-brodie.pdf&quot; id=&quot;link-id11a0dcf0&quot;&gt;exponential rate at which the Internet &amp;amp; Web are spawning &amp;quot;universes of discourse&amp;quot; (data spaces) that emanate from user activity&lt;/a&gt; (within the enterprise and across the Internet &amp;amp; Web). In a nutshell, we haven&amp;#39;t been able to upgrade our interaction with data such that &amp;quot;conceptual models&amp;quot; and resulting &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id12da4b00&quot;&gt;context&lt;/a&gt; lenses&amp;quot; (or facets) become concrete; by this I mean: real-world &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id146a48a8&quot;&gt;entity&lt;/a&gt; interaction making its way into the computer realm as opposed to the impedance we all suffer today when we transition from conceptual model interaction (real-world) to logical model interaction (when dealing with RDBMS based data access and data management). &lt;/p&gt; &lt;p&gt;Here are some simple examples of what I can only best describe as: &amp;quot;critical dots unconnected&amp;quot;, resulting from an inability to interact with data conceptually:&lt;/p&gt; &lt;strong&gt;Government (Globally) -&lt;/strong&gt; &lt;p&gt; Financial regulatory bodies couldn&amp;#39;t effectively discern that a &lt;a href=&quot;http://dbpedia.org/resource/Credit_default_swap&quot; id=&quot;link-id115ba0e0&quot;&gt;Credit Default Swap&lt;/a&gt; is an Insurance policy in all but literal name. And in not doing so the cost of an unregulated &lt;a href=&quot;http://dbpedia.org/resource/Insurance&quot; id=&quot;link-id158d4960&quot;&gt;insurance policy&lt;/a&gt; laid the foundation for exacerbating the toxicity of fatally flawed mortgage backed securities. Put simply: a flawed insurance policy was the fallback on a toxic security that financiers found exotic based on superficial packaging.&lt;/p&gt; &lt;strong&gt;Enterprises - &lt;/strong&gt; &lt;p&gt; Banks still don&amp;#39;t understand that capital really does exists in tangible and intangible forms; with the intangible being the variant that is inherently dynamic. For example, a tech companies intellectual capital far exceeds the value of fixture, fittings, and buildings, but you be amazed to find that in most cases this vital asset has not significant value when banks get down to the nitty gritty of debt collateral; instead, a buffer of flawed securitization has occurred atop a borderline static asset class covering the aforementioned buildings, fixtures, and fittings. &lt;/p&gt; &lt;p&gt; In the general enterprise arena, IT executives continued to &amp;quot;rip and replace&amp;quot; existing technology without ever effectively addressing the timeless inability to connect data across disparate data silos generated by internal enterprise applications, let alone the broader need to mesh data from the inside with external data sources. No correlations made between the growth of buzzwords and the compounding nature of data integration challenges. It&amp;#39;s 2009 and only a miniscule number of executives dare fantasize about being anywhere within distance of the: relevant information at your fingertips vision. &lt;/p&gt; &lt;p&gt; Looking more holistically at data interaction in general, whether you interact with data in the enterprise space (i.e., at work) or on the Internet or Web, you ultimately are delving into a mishmash of disparate computer systems, applications, service (Web or SOA), and databases (of the RDBMS variety in a majority of cases) associated with a plethora of disparate schemas. Yes, but even today &amp;quot;rip and replace&amp;quot; is still the norm pushed by most vendors; pitting one mono culture against another as exemplified by irrelevances such as: FOSS/LAMP vs Commercial or Web vs. Enterprise, when none of this matters if the data access and integration issues are recognized let alone addressed (see: &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1497?sid=0df0294caee8b37925c6a888bbbca136&amp;amp;realm=wa&quot; id=&quot;link-id15c27300&quot;&gt;Applications are Like Fish and Data Like Wine&lt;/a&gt;). &lt;/p&gt; &lt;p&gt; Like the current credit-crunch, exponential growth of data originating from disparate application databases and associated schemas, within shrinking processing time frames, has triggered a rethinking of what defines data access and data management value today en route to an inevitable RDBMS downgrade within the value pyramid.&lt;/p&gt; &lt;h3&gt;Technology&lt;/h3&gt; &lt;p&gt;There have been many attempts to address real-world modeling requirements across the broader DBMS community from Object Databases to Object-Relational Databases, and more recently the emergence of simple &lt;a href=&quot;http://dbpedia.org/resource/Entity-attribute-value_model&quot; id=&quot;link-id1128dad0&quot;&gt;Entity&lt;/a&gt;-Attribute-Value model DBMS engines. In all cases failure has come down to the existence of one or more of the following deficiencies, across each potential alternative:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Query language standardization - nothing close to &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id16002d60&quot;&gt;SQL&lt;/a&gt; standardization&lt;/li&gt; &lt;li&gt;Data Access API standardization - nothing close to ODBC, JDBC, OLE-DB, or ADO.NET&lt;/li&gt; &lt;li&gt;Wire protocol standardization - nothing close to HTTP&lt;/li&gt; &lt;li&gt;Distributed Identity infrastructure - nothing close to the non-repudiatable digital Identity that &lt;a href=&quot;http://dbpedia.org/resource/Friend_of_a_friend&quot; id=&quot;link-id14926b18&quot;&gt;foaf&lt;/a&gt;+ssl accords&lt;/li&gt; &lt;li&gt;Use of Identifiers as network based pointers to data sources - nothing close to RDF based &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id16180a28&quot;&gt;Linked Data&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Negotiable data representation - nothing close to Mime and HTTP based Content Negotiation&lt;/li&gt; &lt;li&gt;Scalability especially in the era of Internet &amp;amp; Web scale.&lt;/li&gt; &lt;/ol&gt; &lt;h4&gt;Entity-Attribute-Value with Classes &amp;amp; Relationships (&lt;a href=&quot;http://dbpedia.org/resource/Entity-attribute-value_model&quot; id=&quot;link-id13e741b8&quot;&gt;EAV&lt;/a&gt;/CR) data models&lt;/h4&gt; &lt;p&gt;A common characteristic shared by all post-relational DBMS management systems (from Object Relational to pure Object) is an orientation towards variations of EAV/CR based data models. Unfortunately, all efforts in the EAV/CR realm have typically suffered from at least one of the deficiencies listed above. In addition, the same &amp;quot;one DBMS model fits all&amp;quot; approach that lies at the heart of the RDBMS downgrade also exists in the EAV/CR realm.&lt;/p&gt; &lt;h3&gt;What Comes Next?&lt;/h3&gt; &lt;p&gt;The RDBMS is not going away (ever), but its era of primacy -- by virtue of its placement at the apex of the data access and data management value pyramid -- is over! I make this bold claim for the following reasons: &lt;/p&gt; &lt;ol&gt; &lt;li&gt; The Internet aided &amp;quot;Global Village&amp;quot; has brought &amp;quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Open_World_Assumption&quot; id=&quot;link-id1148e560&quot;&gt;Open World&lt;/a&gt;&amp;quot; vs &amp;quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Closed_World_Assumption&quot; id=&quot;link-id11967cd0&quot;&gt;Closed World&lt;/a&gt;&amp;quot; assumption issues to the fore e.g., the current global economic crisis remains centered on the inability to connect dots across &amp;quot;Open World&amp;quot; and &amp;quot;Closed World&amp;quot; data frontiers &lt;/li&gt; &lt;li&gt; Entity-Attribute-Value with Classes &amp;amp; Relationships (EAV/CR) based DBMS models are more effective when dealing with disparate data associated with disparate schemas, across disparate DBMS engines, host operating systems, and networks. &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Based on the above, it is crystal clear that a different kind of DBMS -- one with higher AVF relative to the RDBMS -- needs to sit atop today&amp;#39;s data access and data management value pyramid. The characteristics of this DBMS must include the following:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; Every item of data (Datum/Entity/Object/Resource) has Identity&lt;/li&gt; &lt;li&gt; Identity is achieved via Identifiers that aren&amp;#39;t locked at the DBMS, OS, Network, or Application levels&lt;/li&gt; &lt;li&gt; Object Identifiers and Object values are independent (extricably linked by association)&lt;/li&gt; &lt;li&gt; Object values should be de-referencable via Object Identifier&lt;/li&gt; &lt;li&gt; Representation of de-referenced value graph (entity, attributes, and values mesh) must be negotiable (i.e. content negotiation)&lt;/li&gt; &lt;li&gt;Structured query language must provide mechanism for Creation, Deletion, Updates, and Querying of data objects&lt;/li&gt; &lt;li&gt; Performance &amp;amp; Scalability across &amp;quot;Closed World&amp;quot; (enterprise) and &amp;quot;Open World&amp;quot; (Internet &amp;amp; Web) realms.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Quick recap, I am not saying that RDBMS engine technology is dead or obsolete. I am simply stating that the era of RDBMS primacy within the data access and data management value pyramid is over. &lt;/p&gt; &lt;p&gt;The problem domain (conceptual model views over heterogeneous data sources) at the apex of the aforementioned pyramid has simply evolved beyond the natural capabilities of the RDBMS which is rooted in &amp;quot;Closed World&amp;quot; assumptions re., data definition, access, and management. The need to maintain domain based conceptual interaction with data is now palpable at every echelon within our &amp;quot;Global Village&amp;quot; - Internet, Web, Enterprise, Government etc.&lt;/p&gt; &lt;p&gt;It is my personal view that an EAV/CR model based DBMS, with support for the seven items enumerated above, can trigger the long anticipated RDBMS downgrade. Such a DBMS would be inherently multi-model because you would need to the best of RDBMS and EAV/CR model engines in a single product, with in-built support for HTTP and other Internet protocols in order to effectively address data representation and serialization issues.&lt;/p&gt; &lt;h4&gt;EAV/CR Oriented Data Access &amp;amp; Management Technology&lt;/h4&gt; &lt;p&gt;Examples of contemporary EAV/CR frameworks that provide concrete conceptual layers for data access and data management currently include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id115d1cb0&quot;&gt; Resource Description Framework&lt;/a&gt; (RDF) - an EAV/CR based framework&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id116cf810&quot;&gt;RDF Linked Data &lt;/a&gt;- EAV/CR based framework that mandates de-referencable HTTP based Identifiers&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET_Entity_Framework&quot; id=&quot;link-id13daa160&quot;&gt;ADO.NET Entity Frameworks&lt;/a&gt; - Microsoft .NET based EAV/CR framework&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/page/Core_Data&quot; id=&quot;link-id11111838&quot;&gt;Core Data Services &lt;/a&gt;- Mac OS X based EAV/CR framework that evolved from NeXT&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/Enterprise_Objects_Framework&quot; id=&quot;link-id15c27df0&quot;&gt;Enterprise Object Frameworks&lt;/a&gt; (EOF).&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The frameworks above provide the basis for a revised AVF pyramid, as depicted below, that reflects today&amp;#39;s data access and management realities i.e., an Internet &amp;amp; Web driven global village comprised of interlinked distributed data objects, compatible with &amp;quot;Open World&amp;quot; assumptions.&lt;/p&gt; &lt;div&gt; &lt;image src=&quot;http://virtuoso.openlinksw.com/images/New_EAV_RDBMS_Pyramid.png&quot;&gt;&lt;/image&gt; &lt;/div&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://allanslibrary.blogspot.com/2009/06/semantic-way.html&quot; id=&quot;link-id0xb8c5e498&quot;&gt;The Semantic Way&lt;/a&gt; - Alan Cho&amp;#39;s Summary of &lt;a href=&quot;http://www.pwc.com/extweb/home.nsf/docid/1308AF8EA7929CCA852575BA00720F26&quot; id=&quot;link-id0xb80f5e10&quot;&gt;PwC 2009 tech forecast report on the Semantic Web&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.readwriteweb.com/archives/is_the_relational_database_doomed.php&quot; id=&quot;link-id0xb8c20658&quot;&gt;Is the RDBMS Doomed&lt;/a&gt; - &lt;a href=&quot;http://www.readwriteweb.com&quot;&gt;ReadWriteWeb&lt;/a&gt; Article&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/&quot; id=&quot;link-id0x1ab4778&quot;&gt;Anti-RDBMS: a list of Distributed Key-Value Stores&lt;/a&gt; - by &lt;a href=&quot;http://www.last.fm/user/RJ&quot; id=&quot;link-id0x5a968060&quot;&gt;Richard Jones&lt;/a&gt; (CTO Last.FM)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dynamicorange.com/2009/01/22/blueblog-how-and-why-glue-is-using-amazon-simpledb-instead-of-a-relational-database/&quot; id=&quot;link-id15e07c10&quot;&gt;How &amp;amp; Why Glue is Using Amazon SimpleDB&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.cs.cmu.edu/afs/cs.cmu.edu/user/clamen/OODBMS/Manifesto/htManifesto/node4.html#SECTION00022000000000000000&quot; id=&quot;link-id116cf450&quot;&gt;Object Database Manifesto (Identity excerpt)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.unixspace.com/context/databases.html&quot; id=&quot;link-id150b2c20&quot;&gt;Database Models Overview&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=WEj9vqVvHPc&amp;amp;feature=related&quot; id=&quot;link-id0x66b0850&quot;&gt;Ted Nelson Explaining Irregularity and Idiosyncrasy of Data Structures&lt;/a&gt; - ZigZag Demo &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>New ADO.NET 3.x Provider for Virtuoso Released (Update 2)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2009-01-08#1514</atom:id>
  <atom:published>2009-01-08T04:36:47Z</atom:published>
  <atom:updated>2009-01-08T09:12:50.000006-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;I am pleased to announce the immediate availability of the &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtAdoNet35Provider&quot; id=&quot;link-id142e7390&quot;&gt;Virtuoso ADO.NET 3.5 data provider&lt;/a&gt; for Microsoft&amp;#39;s .NET platform.&lt;/p&gt; &lt;h3&gt;What is it?&lt;/h3&gt; &lt;p&gt;A data access driver/provider that provides conceptual &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id11c36c00&quot;&gt;entity&lt;/a&gt; oriented access to &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id12fb8618&quot;&gt;RDBMS&lt;/a&gt; data managed by Virtuoso. Naturally, it also uses Virtuoso&amp;#39;s in-built virtual / &lt;a href=&quot;http://dbpedia.org/resource/federated_database_system&quot; id=&quot;link-id115bedc8&quot;&gt;federated database&lt;/a&gt; layer to provide access to &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id15153c08&quot;&gt;ODBC&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id13418908&quot;&gt;JDBC&lt;/a&gt; accessible RDBMS engines such as: &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id134d72f0&quot;&gt;Oracle&lt;/a&gt; (7.x to latest), &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id15757b88&quot;&gt;SQL&lt;/a&gt; Server (4.2 to latest), &lt;a href=&quot;http://dbpedia.org/resource/Sybase&quot; id=&quot;link-id15ef8d48&quot;&gt;Sybase&lt;/a&gt;, IBM &lt;a href=&quot;http://dbpedia.org/resource/IBM_Informix&quot; id=&quot;link-id12f56aa0&quot;&gt;Informix&lt;/a&gt; (5.x to latest), IBM &lt;a href=&quot;http://dbpedia.org/resource/IBM_DB2&quot; id=&quot;link-id119feb38&quot;&gt;DB2&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Ingres&quot; id=&quot;link-id14e3d6c8&quot;&gt;Ingres&lt;/a&gt; (6.x to latest), Progress (7.x to OpenEdge), &lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-id11295630&quot;&gt;MySQL&lt;/a&gt;, PostgreSQL, &lt;a href=&quot;http://dbpedia.org/resource/Firebird_database_server&quot; id=&quot;link-id12f40448&quot;&gt;Firebird&lt;/a&gt;, and others using our ODBC or JDBC bridge drivers.&lt;/p&gt; &lt;h3&gt;Benefits?&lt;/h3&gt; &lt;h4&gt;Technical:&lt;/h4&gt; &lt;p&gt;It delivers an &lt;a href=&quot;http://dbpedia.org/resource/Entity-attribute-value_model&quot; id=&quot;link-id14012040&quot;&gt;Entity-Attribute-Value + Classes &amp;amp; Relationships model&lt;/a&gt; over disparate data sources that are materialized as .NET Entity Framework Objects, which are then consumable via ADO.NET Data Object Services, LINQ for Entities, and other ADO.NET data consumers.&lt;/p&gt; &lt;p&gt;The provider is fully integrated into Visual Studio 2008 and delivers the same &amp;quot;ease of use&amp;quot; offered by Microsoft&amp;#39;s own SQL Server provider, but across Virtuoso, Oracle, Sybase, DB2, Informix, Ingres, &lt;a href=&quot;http://dbpedia.org/resource/Progress_4GL&quot; id=&quot;link-id158d1fe8&quot;&gt;Progress (OpenEdge&lt;/a&gt;), MySQL, PostgreSQL, Firebird, and others. The same benefits also apply uniformly to Entity Frameworks compatibility.&lt;/p&gt; &lt;p&gt; Bearing in mind that Virtuoso is a multi-model (hybrid) data manager, this also implies that you can use .NET Entity Frameworks against all data managed by Virtuoso. Remember, Virtuoso&amp;#39;s SQL channel is a conduit to Virtuoso&amp;#39;s core; thus, RDF (courtesy of &lt;a href=&quot;http://esw.w3.org/topic/SPASQL&quot; id=&quot;link-id133c9b70&quot;&gt;SPASQL&lt;/a&gt; as already implemented re. &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtJenaProvider&quot; id=&quot;link-id11380b80&quot;&gt;Jena&lt;/a&gt;/&lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSesame2Provider&quot; id=&quot;link-id10fc0c88&quot;&gt;Sesame&lt;/a&gt;/&lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtRDFDriverRedland&quot; id=&quot;link-id1390f730&quot;&gt;Redland&lt;/a&gt; providers), XML, and other data forms stored in Virtuoso also become accessible via .NET&amp;#39;s Entity Frameworks.&lt;/p&gt; &lt;br /&gt; &lt;h4&gt;Strategic:&lt;/h4&gt; &lt;p&gt;You can choose which entity oriented data access model works best for you: RDF &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id151354f0&quot;&gt;Linked Data&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id15dc5eb0&quot;&gt;SPARQL&lt;/a&gt; or .NET Entity Frameworks &amp;amp; &lt;a href=&quot;http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework#Entity_SQL&quot; id=&quot;link-id14404e80&quot;&gt;Entity SQL&lt;/a&gt;. Either way, Virtuoso delivers a commercial grade, high-performance, secure, and scalable solution.&lt;/p&gt; &lt;br /&gt; &lt;h3&gt;How do I use it?&lt;/h3&gt; Simply follow one of guides below: &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtEntityFrameworkSchoolDbWinFormApp&quot; id=&quot;link-id15e5c580&quot;&gt;Using Visual Studio 2008 &amp;amp; Virtuoso to build an Entity Frameworks based Windows forms application&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtUsingMsAdoNetDataServicesWithVirtuoso&quot; id=&quot;link-id157912b0&quot;&gt;Using Visual Studio 2008 &amp;amp; Virtuoso to build an ADO.NET Data Services based application&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; &lt;b&gt;Note:&lt;/b&gt; When working with external or 3rd party databases, simply use the Virtuoso Conductor to link the external data source into Virtuoso. Once linked, the remote tables will simply be treated as though they are native Virtuoso tables leaving the &lt;a href=&quot;http://dbpedia.org/resource/Virtual_Database&quot; id=&quot;link-id15b04b18&quot;&gt;virtual database&lt;/a&gt; engine to handle the rest. This is similar to the role the Microsoft JET engine played in the early days of ODBC, so if you&amp;#39;ve ever linked an ODBC data source into Microsoft Access, you are ready to do the same using Virtuoso.&lt;/p&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1420&quot; id=&quot;link-id160afdd0&quot;&gt;Entity Oriented Data Access&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com%27s%20BLOG%20%5B127%5D/1474&quot; id=&quot;link-id113eeb50&quot;&gt;Yoda &amp;amp; the Data FORCE.&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Virtuoso RDF: A Getting Started Guide for the Developer</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-12-17#1505</atom:id>
  <atom:published>2008-12-17T12:31:34Z</atom:published>
  <atom:updated>2008-12-17T12:41:27.000006-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;It is a long standing promise of mine to dispel the false impression that using &lt;a href=&quot;http://virtuoso.openlinksw.com/&quot; id=&quot;link-id113506d0&quot;&gt;Virtuoso&lt;/a&gt; to work with &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id115d9528&quot;&gt;RDF&lt;/a&gt; is complicated.&lt;/p&gt; &lt;p&gt;The purpose of this presentation is to show a programmer how to put RDF into Virtuoso and how to query it. This is done programmatically, with no confusing user interfaces.&lt;/p&gt; &lt;p&gt;You should have a Virtuoso Open Source tree built and installed. We will look at the LUBM benchmark demo that comes with the package. All you need is a Unix shell. Running the shell under emacs (&lt;code&gt;m-x shell&lt;/code&gt;) is the best. But the open source &lt;code&gt;isql&lt;/code&gt; utility should have command line editing also. The emacs shell is however convenient for cutting and pasting things between shell and files.&lt;/p&gt; &lt;p&gt;To get started, cd into &lt;code&gt;binsrc/tests/lubm&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;To verify that this works, you can do &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;./test_server.sh virtuoso-t&lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This will test the server with the LUBM queries. This should report 45 tests passed. After this we will do the tests step-by-step.&lt;/p&gt; &lt;h2&gt;Loading the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id10f7bd90&quot;&gt;Data&lt;/a&gt; &lt;/h2&gt; &lt;p&gt;The file &lt;code&gt;lubm-load.sql&lt;/code&gt; contains the commands for loading the LUBM single university qualification database.&lt;/p&gt; &lt;p&gt;The data files themselves are in &lt;code&gt;lubm_8000&lt;/code&gt;, 15 files in RDFXML.&lt;/p&gt; &lt;p&gt;There is also a little ontology called &lt;code&gt;inf.nt&lt;/code&gt;. This declares the subclass and subproperty relations used in the benchmark.&lt;/p&gt; &lt;p&gt;So now let&amp;#39;s go through this procedure.&lt;/p&gt; &lt;p&gt;Start the server:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;$ virtuoso-t -f &amp;amp; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This starts the server in foreground mode, and puts it in the background of the shell.&lt;/p&gt; &lt;p&gt;Now we connect to it with the isql utility.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;$ isql 1111 dba dba &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This gives a &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt. The default username and password are both &lt;code&gt;dba&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;When a command is &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id1176ce70&quot;&gt;SQL&lt;/a&gt;, it is entered directly. If it is &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id156df468&quot;&gt;SPARQL&lt;/a&gt;, it is prefixed with the keyword &lt;code&gt;sparql&lt;/code&gt;. This is how all the SQL clients work. Any SQL client, such as any &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id152d0a00&quot;&gt;ODBC&lt;/a&gt; or &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id157ad6a0&quot;&gt;JDBC&lt;/a&gt; application, can use SPARQL if the SQL string starts with this keyword.&lt;/p&gt; &lt;p&gt;The &lt;code&gt;lubm-load.sql&lt;/code&gt; file is quite self-explanatory. It begins with defining an SQL procedure that calls the RDF/XML load function, &lt;code&gt;DB..RDF_LOAD_RDFXML&lt;/code&gt;, for each file in a directory.&lt;/p&gt; &lt;p&gt;Next it calls this function for the &lt;code&gt;lubm_8000&lt;/code&gt; directory under the server&amp;#39;s working directory.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;sparql CLEAR GRAPH &amp;lt;lubm&amp;gt;; sparql CLEAR GRAPH &amp;lt;inf&amp;gt;; load_lubm ( server_root() || &amp;#39;/lubm_8000/&amp;#39; ); &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Then it verifies that the right number of triples is found in the &amp;lt;lubm&amp;gt; graph.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;sparql SELECT COUNT(*) FROM &amp;lt;lubm&amp;gt; WHERE { ?x ?y ?z } ; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;The echo commands below this are interpreted by the isql utility, and produce output to show whether the test was passed. They can be ignored for now.&lt;/p&gt; &lt;p&gt;Then it adds some implied &lt;code&gt;subOrganizationOf&lt;/code&gt; triples. This is part of setting up the LUBM test database.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;sparql PREFIX ub: &amp;lt;http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#&amp;gt; INSERT INTO GRAPH &amp;lt;lubm&amp;gt; { ?x ub:subOrganizationOf ?z } FROM &amp;lt;lubm&amp;gt; WHERE { ?x ub:subOrganizationOf ?y . ?y ub:subOrganizationOf ?z . }; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Then it loads the ontology file, &lt;code&gt;inf.nt&lt;/code&gt;, using the Turtle load function, &lt;code&gt;DB.DBA.TTLP&lt;/code&gt;. The arguments of the function are the text to load, the default namespace prefix, and the &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id15835550&quot;&gt;URI&lt;/a&gt; of the target graph.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;DB.DBA.TTLP ( file_to_string ( &amp;#39;inf.nt&amp;#39; ), &amp;#39;http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl&amp;#39;, &amp;#39;inf&amp;#39; ) ; sparql SELECT COUNT(*) FROM &amp;lt;inf&amp;gt; WHERE { ?x ?y ?z } ; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Then we declare that the triples in the &lt;code&gt;&amp;lt;inf&amp;gt;&lt;/code&gt; graph can be used for inference at run time. To enable this, a SPARQL query will declare that it uses the &lt;code&gt;&amp;#39;inft&amp;#39;&lt;/code&gt; rule set. Otherwise this has no effect.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;rdfs_rule_set (&amp;#39;inft&amp;#39;, &amp;#39;inf&amp;#39;); &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This is just a log checkpoint to finalize the work and truncate the transaction log. The server would also eventually do this in its own time.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;checkpoint; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Now we are ready for querying.&lt;/p&gt; &lt;h2&gt;Querying the Data&lt;/h2&gt; &lt;p&gt;The queries are given in 3 different versions: The first file, &lt;code&gt;lubm.sql&lt;/code&gt;, has the queries with most inference open coded as &lt;code&gt;UNIONs&lt;/code&gt;. The second file, &lt;code&gt;lubm-inf.sql&lt;/code&gt;, has the inference performed at run time using the ontology &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id1109faf0&quot;&gt;information&lt;/a&gt; in the &lt;code&gt;&amp;lt;inf&amp;gt;&lt;/code&gt; graph we just loaded. The last, &lt;code&gt;lubm-phys.sql&lt;/code&gt;, relies on having the entailed triples physically present in the &lt;code&gt;&amp;lt;lubm&amp;gt;&lt;/code&gt; graph. These entailed triples are inserted by the SPARUL commands in the &lt;code&gt;lubm-cp.sql&lt;/code&gt; file.&lt;/p&gt; &lt;p&gt;If you wish to run all the commands in a SQL file, you can type &lt;code&gt;load &amp;lt;filename&amp;gt;;&lt;/code&gt; (e.g., &lt;code&gt;load lubm-cp.sql;&lt;/code&gt;) at the &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt. If you wish to try individual statements, you can paste them to the command line.&lt;/p&gt; &lt;p&gt;For example: &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;SQL&amp;gt; sparql PREFIX ub: &amp;lt;http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#&amp;gt; SELECT * FROM &amp;lt;lubm&amp;gt; WHERE { ?x a ub:Publication . ?x ub:publicationAuthor &amp;lt;http://www.Department0.University0.edu/AssistantProfessor0&amp;gt; }; VARCHAR _______________________________________________________________________ http://www.Department0.University0.edu/AssistantProfessor0/Publication0 http://www.Department0.University0.edu/AssistantProfessor0/Publication1 http://www.Department0.University0.edu/AssistantProfessor0/Publication2 http://www.Department0.University0.edu/AssistantProfessor0/Publication3 http://www.Department0.University0.edu/AssistantProfessor0/Publication4 http://www.Department0.University0.edu/AssistantProfessor0/Publication5 6 Rows. -- 4 msec. &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;To stop the server, simply type &lt;code&gt;shutdown;&lt;/code&gt; at the &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt.&lt;/p&gt; &lt;p&gt;If you wish to use a &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-protocol/&quot; id=&quot;link-id11384668&quot;&gt;SPARQL protocol&lt;/a&gt; end point, just enable the HTTP listener. This is done by adding a stanza like â&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;[HTTPServer] ServerPort = 8421 ServerRoot = . ServerThreads = 2 &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;â to the end of the &lt;code&gt;virtuoso.ini&lt;/code&gt; file in the &lt;code&gt;lubm&lt;/code&gt; directory. Then shutdown and restart (type &lt;code&gt;shutdown;&lt;/code&gt; at the &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt and then &lt;code&gt;virtuoso-t -f &amp;amp;&lt;/code&gt; at the shell prompt).&lt;/p&gt; &lt;p&gt;Now you can connect to the end point with a web browser. The &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Locator&quot; id=&quot;link-id113d02d8&quot;&gt;URL&lt;/a&gt; is &lt;code&gt;http://localhost:8421/sparql&lt;/code&gt;. Without parameters, this will show a human readable form. With parameters, this will execute SPARQL.&lt;/p&gt; &lt;p&gt;We have shown how to load and query RDF with Virtuoso using the most basic SQL tools. Next you can access RDF from, for example, &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id142d0ba0&quot;&gt;PHP&lt;/a&gt;, using the PHP ODBC interface.&lt;/p&gt; &lt;p&gt;To see how to use &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id117074f0&quot;&gt;Jena&lt;/a&gt; or &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id1103c9b0&quot;&gt;Sesame&lt;/a&gt; with Virtuoso, look at &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/rdfnativestorageproviders.html&quot; id=&quot;link-id15488ce8&quot;&gt;Native RDF Storage Providers&lt;/a&gt;. To see how RDF data types are supported, see &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/VirtuosoDriverJDBC.html#jdbcrdf&quot; id=&quot;link-id15784a40&quot;&gt;Extension datatype for RDF&lt;/a&gt; &lt;/p&gt; &lt;p&gt;To work with large volumes of data, you must add memory to the configuration file and use the row-autocommit mode, i.e., do &lt;code&gt;log_enableÂ (2);&lt;/code&gt; before the load command. Otherwise Virtuoso will do the entire load as a single transaction, and will run out of rollback space. See &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/&quot; id=&quot;link-id111410f0&quot;&gt;documentation&lt;/a&gt; for more.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Virtuoso RDF: A Getting Started Guide for the Developer</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-12-17#1504</atom:id>
  <atom:published>2008-12-17T12:31:34Z</atom:published>
  <atom:updated>2008-12-17T12:41:21.000001-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;It is a long standing promise of mine to dispel the false impression that using &lt;a href=&quot;http://virtuoso.openlinksw.com/&quot; id=&quot;link-id113506d0&quot;&gt;Virtuoso&lt;/a&gt; to work with &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id115d9528&quot;&gt;RDF&lt;/a&gt; is complicated.&lt;/p&gt; &lt;p&gt;The purpose of this presentation is to show a programmer how to put RDF into Virtuoso and how to query it. This is done programmatically, with no confusing user interfaces.&lt;/p&gt; &lt;p&gt;You should have a Virtuoso Open Source tree built and installed. We will look at the LUBM benchmark demo that comes with the package. All you need is a Unix shell. Running the shell under emacs (&lt;code&gt;m-x shell&lt;/code&gt;) is the best. But the open source &lt;code&gt;isql&lt;/code&gt; utility should have command line editing also. The emacs shell is however convenient for cutting and pasting things between shell and files.&lt;/p&gt; &lt;p&gt;To get started, cd into &lt;code&gt;binsrc/tests/lubm&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;To verify that this works, you can do &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;./test_server.sh virtuoso-t&lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This will test the server with the LUBM queries. This should report 45 tests passed. After this we will do the tests step-by-step.&lt;/p&gt; &lt;h2&gt;Loading the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id10f7bd90&quot;&gt;Data&lt;/a&gt; &lt;/h2&gt; &lt;p&gt;The file &lt;code&gt;lubm-load.sql&lt;/code&gt; contains the commands for loading the LUBM single university qualification database.&lt;/p&gt; &lt;p&gt;The data files themselves are in &lt;code&gt;lubm_8000&lt;/code&gt;, 15 files in RDFXML.&lt;/p&gt; &lt;p&gt;There is also a little ontology called &lt;code&gt;inf.nt&lt;/code&gt;. This declares the subclass and subproperty relations used in the benchmark.&lt;/p&gt; &lt;p&gt;So now let&amp;#39;s go through this procedure.&lt;/p&gt; &lt;p&gt;Start the server:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;$ virtuoso-t -f &amp;amp; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This starts the server in foreground mode, and puts it in the background of the shell.&lt;/p&gt; &lt;p&gt;Now we connect to it with the isql utility.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;$ isql 1111 dba dba &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This gives a &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt. The default username and password are both &lt;code&gt;dba&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;When a command is &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id1176ce70&quot;&gt;SQL&lt;/a&gt;, it is entered directly. If it is &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id156df468&quot;&gt;SPARQL&lt;/a&gt;, it is prefixed with the keyword &lt;code&gt;sparql&lt;/code&gt;. This is how all the SQL clients work. Any SQL client, such as any &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id152d0a00&quot;&gt;ODBC&lt;/a&gt; or &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id157ad6a0&quot;&gt;JDBC&lt;/a&gt; application, can use SPARQL if the SQL string starts with this keyword.&lt;/p&gt; &lt;p&gt;The &lt;code&gt;lubm-load.sql&lt;/code&gt; file is quite self-explanatory. It begins with defining an SQL procedure that calls the RDF/XML load function, &lt;code&gt;DB..RDF_LOAD_RDFXML&lt;/code&gt;, for each file in a directory.&lt;/p&gt; &lt;p&gt;Next it calls this function for the &lt;code&gt;lubm_8000&lt;/code&gt; directory under the server&amp;#39;s working directory.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;sparql CLEAR GRAPH &amp;lt;lubm&amp;gt;; sparql CLEAR GRAPH &amp;lt;inf&amp;gt;; load_lubm ( server_root() || &amp;#39;/lubm_8000/&amp;#39; ); &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Then it verifies that the right number of triples is found in the &amp;lt;lubm&amp;gt; graph.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;sparql SELECT COUNT(*) FROM &amp;lt;lubm&amp;gt; WHERE { ?x ?y ?z } ; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;The echo commands below this are interpreted by the isql utility, and produce output to show whether the test was passed. They can be ignored for now.&lt;/p&gt; &lt;p&gt;Then it adds some implied &lt;code&gt;subOrganizationOf&lt;/code&gt; triples. This is part of setting up the LUBM test database.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;sparql PREFIX ub: &amp;lt;http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#&amp;gt; INSERT INTO GRAPH &amp;lt;lubm&amp;gt; { ?x ub:subOrganizationOf ?z } FROM &amp;lt;lubm&amp;gt; WHERE { ?x ub:subOrganizationOf ?y . ?y ub:subOrganizationOf ?z . }; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Then it loads the ontology file, &lt;code&gt;inf.nt&lt;/code&gt;, using the Turtle load function, &lt;code&gt;DB.DBA.TTLP&lt;/code&gt;. The arguments of the function are the text to load, the default namespace prefix, and the &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id15835550&quot;&gt;URI&lt;/a&gt; of the target graph.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;DB.DBA.TTLP ( file_to_string ( &amp;#39;inf.nt&amp;#39; ), &amp;#39;http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl&amp;#39;, &amp;#39;inf&amp;#39; ) ; sparql SELECT COUNT(*) FROM &amp;lt;inf&amp;gt; WHERE { ?x ?y ?z } ; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Then we declare that the triples in the &lt;code&gt;&amp;lt;inf&amp;gt;&lt;/code&gt; graph can be used for inference at run time. To enable this, a SPARQL query will declare that it uses the &lt;code&gt;&amp;#39;inft&amp;#39;&lt;/code&gt; rule set. Otherwise this has no effect.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;rdfs_rule_set (&amp;#39;inft&amp;#39;, &amp;#39;inf&amp;#39;); &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;This is just a log checkpoint to finalize the work and truncate the transaction log. The server would also eventually do this in its own time.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;checkpoint; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;Now we are ready for querying.&lt;/p&gt; &lt;h2&gt;Querying the Data&lt;/h2&gt; &lt;p&gt;The queries are given in 3 different versions: The first file, &lt;code&gt;lubm.sql&lt;/code&gt;, has the queries with most inference open coded as &lt;code&gt;UNIONs&lt;/code&gt;. The second file, &lt;code&gt;lubm-inf.sql&lt;/code&gt;, has the inference performed at run time using the ontology &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id1109faf0&quot;&gt;information&lt;/a&gt; in the &lt;code&gt;&amp;lt;inf&amp;gt;&lt;/code&gt; graph we just loaded. The last, &lt;code&gt;lubm-phys.sql&lt;/code&gt;, relies on having the entailed triples physically present in the &lt;code&gt;&amp;lt;lubm&amp;gt;&lt;/code&gt; graph. These entailed triples are inserted by the SPARUL commands in the &lt;code&gt;lubm-cp.sql&lt;/code&gt; file.&lt;/p&gt; &lt;p&gt;If you wish to run all the commands in a SQL file, you can type &lt;code&gt;load &amp;lt;filename&amp;gt;;&lt;/code&gt; (e.g., &lt;code&gt;load lubm-cp.sql;&lt;/code&gt;) at the &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt. If you wish to try individual statements, you can paste them to the command line.&lt;/p&gt; &lt;p&gt;For example: &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;SQL&amp;gt; sparql PREFIX ub: &amp;lt;http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#&amp;gt; SELECT * FROM &amp;lt;lubm&amp;gt; WHERE { ?x a ub:Publication . ?x ub:publicationAuthor &amp;lt;http://www.Department0.University0.edu/AssistantProfessor0&amp;gt; }; VARCHAR _______________________________________________________________________ http://www.Department0.University0.edu/AssistantProfessor0/Publication0 http://www.Department0.University0.edu/AssistantProfessor0/Publication1 http://www.Department0.University0.edu/AssistantProfessor0/Publication2 http://www.Department0.University0.edu/AssistantProfessor0/Publication3 http://www.Department0.University0.edu/AssistantProfessor0/Publication4 http://www.Department0.University0.edu/AssistantProfessor0/Publication5 6 Rows. -- 4 msec. &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;To stop the server, simply type &lt;code&gt;shutdown;&lt;/code&gt; at the &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt.&lt;/p&gt; &lt;p&gt;If you wish to use a &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-protocol/&quot; id=&quot;link-id11384668&quot;&gt;SPARQL protocol&lt;/a&gt; end point, just enable the HTTP listener. This is done by adding a stanza like â&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;[HTTPServer] ServerPort = 8421 ServerRoot = . ServerThreads = 2 &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;â to the end of the &lt;code&gt;virtuoso.ini&lt;/code&gt; file in the &lt;code&gt;lubm&lt;/code&gt; directory. Then shutdown and restart (type &lt;code&gt;shutdown;&lt;/code&gt; at the &lt;code&gt;SQL&amp;gt;&lt;/code&gt; prompt and then &lt;code&gt;virtuoso-t -f &amp;amp;&lt;/code&gt; at the shell prompt).&lt;/p&gt; &lt;p&gt;Now you can connect to the end point with a web browser. The &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Locator&quot; id=&quot;link-id113d02d8&quot;&gt;URL&lt;/a&gt; is &lt;code&gt;http://localhost:8421/sparql&lt;/code&gt;. Without parameters, this will show a human readable form. With parameters, this will execute SPARQL.&lt;/p&gt; &lt;p&gt;We have shown how to load and query RDF with Virtuoso using the most basic SQL tools. Next you can access RDF from, for example, &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id142d0ba0&quot;&gt;PHP&lt;/a&gt;, using the PHP ODBC interface.&lt;/p&gt; &lt;p&gt;To see how to use &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id117074f0&quot;&gt;Jena&lt;/a&gt; or &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id1103c9b0&quot;&gt;Sesame&lt;/a&gt; with Virtuoso, look at &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/rdfnativestorageproviders.html&quot; id=&quot;link-id15488ce8&quot;&gt;Native RDF Storage Providers&lt;/a&gt;. To see how RDF data types are supported, see &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/VirtuosoDriverJDBC.html#jdbcrdf&quot; id=&quot;link-id15784a40&quot;&gt;Extension datatype for RDF&lt;/a&gt; &lt;/p&gt; &lt;p&gt;To work with large volumes of data, you must add memory to the configuration file and use the row-autocommit mode, i.e., do &lt;code&gt;log_enableÂ (2);&lt;/code&gt; before the load command. Otherwise Virtuoso will do the entire load as a single transaction, and will run out of rollback space. See &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/&quot; id=&quot;link-id111410f0&quot;&gt;documentation&lt;/a&gt; for more.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>See the Lite: Embeddable/Background Virtuoso starts at 25MB</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-12-17#1503</atom:id>
  <atom:published>2008-12-17T09:34:12Z</atom:published>
  <atom:updated>2008-12-17T12:03:49-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;We have received many requests for an embeddable-scale &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x1cd69650&quot;&gt;Virtuoso&lt;/a&gt;. In response to this, we have added a Lite mode, where the initial size of a server process is a tiny fraction of what the initial size would be with default settings. With 2MB of disk cache buffers (ini file setting, &lt;code&gt;NumberOfBuffers = 256&lt;/code&gt;), the process size stays under 30MB on 32-bit Linux.&lt;/p&gt; &lt;p&gt;The value of this is that one can now have &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x1ce89340&quot;&gt;RDF&lt;/a&gt; and full text indexing on the desktop without running a Java VM or any other memory-intensive software. And of course, all of &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1cfc9288&quot;&gt;SQL&lt;/a&gt; (transactions, stored procedures, etc.) is in the same embeddably-sized container.&lt;/p&gt; &lt;p&gt;The Lite executable is a full Virtuoso executable; the Lite mode is controlled by a switch in the configuration file. The executable size is about 10MB for 32-bit Linux. A database created in the Lite mode will be converted into a fully-featured database (tables and indexes are added, among other things) if the server is started with the Lite setting &amp;quot;off&amp;quot;; functionality can be reverted to Lite mode, though it will now consume somewhat more memory, etc.&lt;/p&gt; &lt;p&gt;Lite mode offers full SQL and &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x1c511da8&quot;&gt;SPARQL&lt;/a&gt;/SPARUL (via SPASQL), but disables all &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id0x1dac1950&quot;&gt;HTTP&lt;/a&gt;-based services (WebDAV, application hosting, etc.). Clients can still use all typical database access mechanisms (i.e., &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0xb19a488&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x1d93ee40&quot;&gt;JDBC&lt;/a&gt;, OLE-DB, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x1ce391c0&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/.NET_Framework&quot; id=&quot;link-id0xacf1168&quot;&gt;NET&lt;/a&gt;, and XMLA) to connect, including the &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0xaaf5b58&quot;&gt;Jena&lt;/a&gt; and &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id0x1b1e4328&quot;&gt;Sesame&lt;/a&gt; frameworks for RDF. ODBC now offers full support of RDF &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x1cfc9f78&quot;&gt;data&lt;/a&gt; types for &lt;a href=&quot;http://dbpedia.org/resource/C%2B%2B&quot; id=&quot;link-id0xa6059d8&quot;&gt;C&lt;/a&gt;-based clients. A Redland-compatible API also exists, for use with Redland v1.0.8 and later. &lt;/p&gt; &lt;p&gt;Especially for embedded use, we now allow restricting the listener to be a Unix socket, which allows client connections only from the localhost.&lt;/p&gt; &lt;p&gt;Shipping an embedded Virtuoso is easy. It just takes one executable and one configuration file. Performance is generally comparable to &amp;quot;normal&amp;quot; mode, except that Lite will be somewhat less scalable on multicore systems.&lt;/p&gt; &lt;p&gt;The Lite mode will be included in the next Virtuoso 5 Open Source release.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>See the Lite: Embeddable/Background Virtuoso starts at 25MB</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-12-17#1502</atom:id>
  <atom:published>2008-12-17T09:34:12Z</atom:published>
  <atom:updated>2008-12-17T12:03:43-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;We have received many requests for an embeddable-scale &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xa5aa1b38&quot;&gt;Virtuoso&lt;/a&gt;. In response to this, we have added a Lite mode, where the initial size of a server process is a tiny fraction of what the initial size would be with default settings. With 2MB of disk cache buffers (ini file setting, &lt;code&gt;NumberOfBuffers = 256&lt;/code&gt;), the process size stays under 30MB on 32-bit Linux.&lt;/p&gt; &lt;p&gt;The value of this is that one can now have &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x1db79ac8&quot;&gt;RDF&lt;/a&gt; and full text indexing on the desktop without running a Java VM or any other memory-intensive software. And of course, all of &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xa923298&quot;&gt;SQL&lt;/a&gt; (transactions, stored procedures, etc.) is in the same embeddably-sized container.&lt;/p&gt; &lt;p&gt;The Lite executable is a full Virtuoso executable; the Lite mode is controlled by a switch in the configuration file. The executable size is about 10MB for 32-bit Linux. A database created in the Lite mode will be converted into a fully-featured database (tables and indexes are added, among other things) if the server is started with the Lite setting &amp;quot;off&amp;quot;; functionality can be reverted to Lite mode, though it will now consume somewhat more memory, etc.&lt;/p&gt; &lt;p&gt;Lite mode offers full SQL and &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x1b388830&quot;&gt;SPARQL&lt;/a&gt;/SPARUL (via SPASQL), but disables all &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id0x1d56b618&quot;&gt;HTTP&lt;/a&gt;-based services (WebDAV, application hosting, etc.). Clients can still use all typical database access mechanisms (i.e., &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x1c5abc38&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x1dade1f8&quot;&gt;JDBC&lt;/a&gt;, OLE-DB, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x25d8e0f0&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/.NET_Framework&quot; id=&quot;link-id0x1d7a1a28&quot;&gt;NET&lt;/a&gt;, and XMLA) to connect, including the &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x1d929b98&quot;&gt;Jena&lt;/a&gt; and &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id0x1b7a9088&quot;&gt;Sesame&lt;/a&gt; frameworks for RDF. ODBC now offers full support of RDF &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xaf62aa0&quot;&gt;data&lt;/a&gt; types for &lt;a href=&quot;http://dbpedia.org/resource/C%2B%2B&quot; id=&quot;link-id0xa8784b0&quot;&gt;C&lt;/a&gt;-based clients. A Redland-compatible API also exists, for use with Redland v1.0.8 and later. &lt;/p&gt; &lt;p&gt;Especially for embedded use, we now allow restricting the listener to be a Unix socket, which allows client connections only from the localhost.&lt;/p&gt; &lt;p&gt;Shipping an embedded Virtuoso is easy. It just takes one executable and one configuration file. Performance is generally comparable to &amp;quot;normal&amp;quot; mode, except that Lite will be somewhat less scalable on multicore systems.&lt;/p&gt; &lt;p&gt;The Lite mode will be included in the next Virtuoso 5 Open Source release.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Introducing Virtuoso Universal Server (Cloud Edition) for Amazon EC2</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-11-28#1489</atom:id>
  <atom:published>2008-11-28T19:27:12Z</atom:published>
  <atom:updated>2008-11-28T16:06:02.000006-05:00</atom:updated>
  <atom:content type="html">&lt;h3&gt;What is it?&lt;/h3&gt; &lt;p&gt;A pre-installed edition of &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id14bea838&quot;&gt;Virtuoso&lt;/a&gt; for Amazon&amp;#39;s EC2 Cloud platform.&lt;/p&gt; &lt;h3&gt;What does it offer?&lt;/h3&gt; From a &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;Web&lt;/a&gt; Entrepreneur perspective it offers: &lt;ol&gt; &lt;li&gt; Low cost entry point to a game-changing Web 3.0+ (and beyond) platform that combines &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id11309b38&quot;&gt;SQL&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id135f7988&quot;&gt;RDF&lt;/a&gt;, XML, and Web Services functionality&lt;/li&gt; &lt;li&gt; Flexible variable cost model (courtesy of &lt;a href=&quot;http://aws.amazon.com/devpay/&quot; id=&quot;link-id17941018&quot;&gt;EC2 DevPay&lt;/a&gt;) tightly bound to revenue generated by your services&lt;/li&gt; &lt;li&gt; Delivers federated and/or centralized model flexibility for you SaaS based solutions&lt;/li&gt; &lt;li&gt; Simple entry point for developing and deploying sophisticated database driven applications (SQL or RDF &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id14ea6b10&quot;&gt;Linked Data Web&lt;/a&gt; oriented)&lt;/li&gt; &lt;li&gt; Complete framework for exploiting OpenID, OAuth (including Role enhancements) that simplifies exploitation of these vital Identity and &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;Data&lt;/a&gt; Access technologies&lt;/li&gt; &lt;li&gt;Easily implement RDF Linked Data based Mail, Blogging, Wikis, Bookmarks, Calendaring, Discussion Forums, Tagging, Social-Networking as &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id11519928&quot;&gt;Data Space&lt;/a&gt; (data containers) features of your application or service offering&lt;/li&gt; &lt;li&gt;Instant alleviation of challenges (e.g. service costs and agility) associated with &lt;a href=&quot;http://dbpedia.org/resource/DataPortability&quot; id=&quot;link-id111cb610&quot;&gt;Data Portability&lt;/a&gt; and Open Data Access across Web 2.0 data silos&lt;/li&gt; &lt;li&gt; LDAP integration for &lt;a href=&quot;http://dbpedia.org/resource/Intranet&quot; id=&quot;link-id114a8270&quot;&gt;Intranet&lt;/a&gt; / &lt;a href=&quot;http://dbpedia.org/resource/Extranet&quot; id=&quot;link-id10fe4f08&quot;&gt;Extranet&lt;/a&gt; style applications.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;From the DBMS engine perspective it provides you with one or more pre-configured instances of Virtuoso that enable immediate exploitation of the following services:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; RDF Database (a Quad Store with &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id11911bf8&quot;&gt;SPARQL&lt;/a&gt; &amp;amp; SPARUL Language &amp;amp; Protocol support)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id110544c8&quot;&gt;SQL&lt;/a&gt; Database (with &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id1524c7d0&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id14cfb658&quot;&gt;JDBC&lt;/a&gt;, OLE-DB, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id110ec6c8&quot;&gt;ADO&lt;/a&gt;.NET, and XMLA driver access)&lt;/li&gt; &lt;li&gt;XML Database (XML Schema, &lt;a href=&quot;http://dbpedia.org/resource/XQuery&quot; id=&quot;link-id10ebf218&quot;&gt;XQuery&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/XPath&quot; id=&quot;link-id142a7898&quot;&gt;Xpath&lt;/a&gt;, XSLT, Full Text Indexing)&lt;/li&gt; &lt;li&gt;Full Text Indexing.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;From a Middleware perspective it provides:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; RDF Views (Wrappers / Semantic Covers) over SQL, XML, and other data sources accessible via SOAP or REST style Web Services&lt;/li&gt; &lt;li&gt; Sponger Service for converting non RDF &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id11931c60&quot;&gt;information&lt;/a&gt; resources into RDF &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id118f7168&quot;&gt;Linked Data&lt;/a&gt; &amp;quot;on the fly&amp;quot; via a large collection of pre-installed RDFizer Cartridges.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;From the Web Server Platform perspective it provides an alternative to LAMP stack components such as &lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-id10f7b780&quot;&gt;MySQL&lt;/a&gt; and Apace by offering&lt;/p&gt; &lt;ol&gt; &lt;li&gt; HTTP Web Server&lt;/li&gt; &lt;li&gt; WebDAV Server&lt;/li&gt; &lt;li&gt; Web &lt;a href=&quot;http://dbpedia.org/resource/Application_server&quot; id=&quot;link-id1268daa8&quot;&gt;Application Server&lt;/a&gt; (includes &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id1585d238&quot;&gt;PHP&lt;/a&gt; runtime hosting)&lt;/li&gt; &lt;li&gt; SOAP or REST style Web Services Deployment&lt;/li&gt; &lt;li&gt; RDF Linked Data Deployment&lt;/li&gt; &lt;li&gt; SPARQL (SPARQL Query Language) and SPARUL (SPARQL Update Language) endpoints&lt;/li&gt; &lt;li&gt;Virtuoso Hosted PHP packages for &lt;a href=&quot;http://dbpedia.org/resource/MediaWiki&quot; id=&quot;link-id15568818&quot;&gt;MediaWiki&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Drupal&quot; id=&quot;link-id110bd7a8&quot;&gt;Drupal&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id10f66918&quot;&gt;Wordpress&lt;/a&gt;, and &lt;a href=&quot;http://dbpedia.org/resource/PhpBB&quot; id=&quot;link-id13fda4d0&quot;&gt;phpBB3&lt;/a&gt; (just install the relevant Virtuoso Distro. Package). &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;From the general System Administrator&amp;#39;s perspective it provides:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; Online Backups (Backup Set dispatched to S3 buckets, FTP, or HTTP/WebDAV server locations)&lt;/li&gt; &lt;li&gt;Synchronized Incremental Backups to Backup Set locations&lt;/li&gt; &lt;li&gt;Backup Restore from Backup Set location (without exiting to EC2 shell).&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Higher level user oriented offerings include:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;OpenLink Data Explorer front-end for exploring the burgeoning Linked Data &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id11646dc8&quot;&gt;Web&lt;/a&gt; &lt;/li&gt; &lt;li&gt; Ajax based SPARQL Query Builder (iSPARQL) that enables SPARQL Query construction by Example&lt;/li&gt; &lt;li&gt;Ajax based SQL Query Builder (QBE) that enables SQL Query construction by Example.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;For Web 2.0 / 3.0 users, developers, and entrepreneurs it offers it includes Distributed Collaboration Tools &amp;amp; Social Media realm functionality courtesy of &lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id11009930&quot;&gt;ODS&lt;/a&gt; that includes:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; Point of presence on the Linked Data Web that meshes your Identity and your Data via URIs&lt;/li&gt; &lt;li&gt; System generated Social Network Profile &amp;amp; Contact Data via &lt;a href=&quot;http://dbpedia.org/resource/Friend_of_a_friend&quot; id=&quot;link-id1185a1c0&quot;&gt;FOAF&lt;/a&gt;?&lt;/li&gt; &lt;li&gt; System generated &lt;a href=&quot;http://dbpedia.org/resource/SIOC&quot; id=&quot;link-id14791890&quot;&gt;SIOC&lt;/a&gt; (Semantically Interconnected Online Community) &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id1577cad8&quot;&gt;Data Space&lt;/a&gt; (that includes a Social Graph) exposing all your Web data in RDF Linked Data form&lt;/li&gt; &lt;li&gt; System generated OpenID and automatic integration with FOAF&lt;/li&gt; &lt;li&gt; Transparent Data Integration across Facebook, Digg, LinkedIn, FriendFeed, Twitter, and any other Web 2.0 data space equipped with RSS / Atom support and/or REST style Web Services&lt;/li&gt; &lt;li&gt; In-built support for SyncML which enables data synchronization with Mobile Phones.&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;How Do I Get Going with It?&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/ODSInstallationEC2&quot; id=&quot;link-id114e1600&quot;&gt;Standard Installation Guide&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtEC2AMIDBpediaInstall&quot; id=&quot;link-id110a98e8&quot;&gt;Personal or Service Specific DBpedia Installation Guide&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Virtuoso - Are We Too Clever for Our Own Good? (updated)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-10-26#1467</atom:id>
  <atom:published>2008-10-26T12:15:35Z</atom:published>
  <atom:updated>2008-10-27T12:07:58-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;&amp;quot;Physician, heal thyself,&amp;quot; it is said. We profess to say what the messaging of the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id0x1b4a25f0&quot;&gt;semantic web&lt;/a&gt; ought to be, but is our own perfect?&lt;/p&gt; &lt;p&gt;I will here engage in some critical introspection as well as amplify on some answers given to &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x1e4f9928&quot;&gt;Virtuoso&lt;/a&gt;-related questions in recent times.&lt;/p&gt; &lt;p&gt;I use some conversations from the &lt;a href=&quot;http://dbpedia.org/resource/Vienna&quot; id=&quot;link-id0x1e6c0ca8&quot;&gt;Vienna&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x1e56df88&quot;&gt;Linked Data&lt;/a&gt; Practitioners meeting as a starting point. These views are mine and are limited to the Virtuoso server. These do not apply to the &lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id0x1e680440&quot;&gt;ODS&lt;/a&gt; (&lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id0x1e140068&quot;&gt;OpenLink Data Spaces&lt;/a&gt;) applications line, &lt;a href=&quot;http://oat.openlinksw.com/&quot; id=&quot;link-id0x1f4ba630&quot;&gt;OAT&lt;/a&gt; (&lt;a href=&quot;http://oat.openlinksw.com/&quot; id=&quot;link-id0x1ba4bac8&quot;&gt;OpenLink Ajax Toolkit&lt;/a&gt;), or &lt;a href=&quot;http://ode.openlinksw.com/&quot; id=&quot;link-id0x1d4159b0&quot;&gt;ODE&lt;/a&gt; (&lt;a href=&quot;http://ode.openlinksw.com/&quot; id=&quot;link-id0x1e973c80&quot;&gt;OpenLink Data Explorer&lt;/a&gt;).&lt;/p&gt; &lt;h3&gt;&amp;quot;It is not always clear what the main thrust is, we get the impression that you are spread too thin,&amp;quot; said &lt;a href=&quot;http://www.informatik.uni-leipzig.de/~auer/foaf.rdf#me&quot; id=&quot;link-id0x1f8bafe0&quot;&gt;SÃ¶ren Auer&lt;/a&gt;.&lt;/h3&gt; &lt;p&gt;Well, personally, I am all for core competence. This is why I do not participate in all the online conversations and groups as much as I could, for example. Time and energy are critical resources and must be invested where they make a difference. In this case, the real core competence is running in the database race. This in itself, come to think of it, is a pretty broad concept.&lt;/p&gt; &lt;p&gt;This is why we put a lot of emphasis on Linked Data and the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x200bd1f0&quot;&gt;Data&lt;/a&gt; Web for now, as this is the emerging game. This is a deliberate choice, not an outside imperative or built-in limitation. More specifically, this means exposing any pre-existing relational data as linked data plus being the definitive &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x1fb03528&quot;&gt;RDF&lt;/a&gt; store.&lt;/p&gt; &lt;p&gt;We can do this because we own our database and &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1e7dcc70&quot;&gt;SQL&lt;/a&gt; and data access middleware and have a history of connecting to any &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0x1e9baf18&quot;&gt;RDBMS&lt;/a&gt; out there.&lt;/p&gt; &lt;p&gt;The principal message we have been hearing from the RDF field is the call for scale of triple storage. This is even louder than the call for relational mapping. We believe that in time mapping will exceed triple storage as such, once we get some real production strength mappings deployed, enough to outperform RDF warehousing.&lt;/p&gt; &lt;p&gt;There are also RDF middleware things like RDF-ization and demand-driven web harvesting (i.e, the so-called Sponger). These are &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x1f5f6b78&quot;&gt;SPARQL&lt;/a&gt; options, thus accessed via standard interfaces. We have little desire to create our own languages or APIs, or to tell people how to program. This is why we recently introduced &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id0x206818c8&quot;&gt;Sesame&lt;/a&gt;- and &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x202b3348&quot;&gt;Jena&lt;/a&gt;-compatible APIs to our RDF store. From what we hear, these work. On the other hand, we do not hesitate to move beyond the standards when there is obvious value or necessity. This is why we brought SPARQL up to and beyond SQL expressivity. It is not a case of E3 (Embrace, Extend, Extinguish).&lt;/p&gt; &lt;p&gt;Now, this message could be better reflected in our material on the web. This &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id0x1c82e508&quot;&gt;blog&lt;/a&gt; is a rather informal step in this direction; more is to come. For now we concentrate on delivering.&lt;/p&gt; &lt;p&gt;The conventional communications wisdom is to split the message by target audience. For this, we should split the RDF, relational, and web services messages from each other. We believe that a challenger, like the semantic web technology stack, must have a compelling message to tell for it to be interesting. This is not a question of research prototypes. The new technology cannot lack something the installed technology takes for granted.&lt;/p&gt; &lt;p&gt;This is why we do not tend to show things like how to insert and query a few triples: No business out there will insert and query triples for the sake of triples. There must be a more compelling story â for example, turning the whole world into a database. This is why our examples start with things like turning the &lt;a href=&quot;http://dbpedia.org/resource/TPC-H&quot; id=&quot;link-id0x20832510&quot;&gt;TPC-H&lt;/a&gt; database into RDF, queries and all. Anything less is not interesting. Why would an enterprise that has business intelligence and integration issues way more complex than the rather stereotypical TPC-H even look at a technology that pretends to be all for integration and all for expressivity of queries, yet cannot answer the first question of the entry exam?&lt;/p&gt; &lt;p&gt;The world out there is complex. But maybe we ought to make some simple tutorials? So, as a call to the people out there, tell us what a good tutorial would be. The question is more about figuring out what is out there and adapting these and making a sort of compatibility list. Jena and Sesame stuff ought to run as is. We could offer a webinar to all the data web luminaries showing how to promote the data web message with Virtuoso. After all, why not show it on the best platform?&lt;/p&gt; &lt;h3&gt;&amp;quot;You are arrogant. When I read your papers or documentation, the impression I get is that you say you are smart and the reader is stupid.&amp;quot;&lt;/h3&gt; &lt;p&gt;We should answer in multiple parts.&lt;/p&gt; &lt;p&gt;For general collateral, like web sites and documentation:&lt;/p&gt; &lt;p&gt;The web site gives a confused product image. For the Virtuoso product, we should divide at the top into&lt;/p&gt; &lt;ul&gt; &lt;li&gt; Data web and RDF - Host linked data, expose relational assets as linked data;&lt;/li&gt; &lt;li&gt; Relational Database - Full function, high performance, open source, Federated/Virtual Relational DBMS, expose heterogeneous RDB assets through one point of contact for integration;&lt;/li&gt; &lt;li&gt; Web Services - access all the above over standard protocols, dynamic web pages, web hosting.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;For each point, one simple statement. We all know what the above things mean?&lt;/p&gt; &lt;p&gt;Then we add a new point about scalability that impacts all the above, namely the Virtuoso version 6 Cluster, meaning that you can do all these things at 10 to 1000 times the scale. This means this much more data or in some cases this much more requests per second. This too is clear.&lt;/p&gt; &lt;p&gt;Far as I am concerned, hosting Java or .&lt;a href=&quot;http://dbpedia.org/resource/.NET_Framework&quot; id=&quot;link-id0x20283a88&quot;&gt;NET&lt;/a&gt; does not have to be on the front page. Also, we have no great interest in going against &lt;a href=&quot;http://dbpedia.org/resource/Apache&quot; id=&quot;link-id0x2024a068&quot;&gt;Apache&lt;/a&gt; when it comes to a web server only situation. The fact that we have a web listener is important for some things but our claim to fame does not rest on this.&lt;/p&gt; &lt;p&gt;Then for documentation and training materials: The documentation should be better. Specifically it should have more of a how-to dimension since nobody reads the whole thing anyhow. About online tutorials, the order of presentation should be different. They do not really reflect what is important at the present moment either.&lt;/p&gt; &lt;p&gt;Now for conference papers: Since taking the data web as a focus area, we have submitted some papers and had some rejected because these do not have enough references and do not explain what is obvious to ourselves.&lt;/p&gt; &lt;p&gt;I think that the communications failure in this case is that we want to talk about end to end solutions and the reviewers expect research. For us, the solution is interesting and exists only if there is an adequate functionality mix for addressing a specific use case. This is why we do not make a paper about query cost model alone because the cost model, while indispensable, is a thing that is taken for granted where we come from. So we mention RDF adaptations to cost model, as these are important to the whole but do not find these to be the justification for a whole paper. If we made papers on this basis, we would have to make five times as many. Maybe we ought to.&lt;/p&gt; &lt;h3&gt;&amp;quot;Virtuoso is very big and very difficult&amp;quot;&lt;/h3&gt; &lt;p&gt;One thing that is not obvious from the Virtuoso packaging is that the minimum installation is an executable under 10MB and a config file. Two files.&lt;/p&gt; &lt;p&gt;This gives you SQL and SPARQL out of the box. Adding &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x1ee61058&quot;&gt;ODBC&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x1b8c31c0&quot;&gt;JDBC&lt;/a&gt; clients is as simple as it gets. After this, there is basic database functionality. Tuning is a matter of a few parameters that are explained on this blog and elsewhere. Also, the full scale installation is available as an Amazon EC2 image, so no installation required.&lt;/p&gt; &lt;p&gt;Now for the difficult side:&lt;/p&gt; &lt;p&gt;Use SQL and SPARQL; use stored procedures whenever there is server side business logic. For some time critical web pages, use VSP. Do not use VSPX. Otherwise, use whatever you are used to â &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id0x20a13c00&quot;&gt;PHP&lt;/a&gt; or Java or anything else. For web services, simple is best. Stick to basics. &amp;quot;The engineer is one who can invent a simple thing.&amp;quot; Use SQL statements rather than admin UI.&lt;/p&gt; &lt;p&gt;Know that you can start a server with no database file and you get an initial database with nothing extra. The demo database, the way it is produced by installers is cluttered.&lt;/p&gt; &lt;p&gt;We should put this into a couple of use case oriented how-tos.&lt;/p&gt; &lt;p&gt;Also, we should create a network of &amp;quot;friendly local virtuoso geeks&amp;quot; for providing basic training and services so we do not have to explain these things all the time. To all you data-web-ers out there â please sign up and we will provide instructions, etc. Contact YrjÃ¤nÃ¤ Rankka (ghard[at-sign]openlinksw.com), or go through the mailing lists; do not contact me directly.&lt;/p&gt; &lt;h3&gt;&amp;quot;OK, we understand that you may be good at the large end of the spectrum but how do you reconcile this with the lightweight or embedded end, like the semantic desktop?&amp;quot;&lt;/h3&gt; &lt;p&gt;Now, what is good for one end is usually good for the other. Namely, a database, no matter the scale, needs to have space efficient storage, fast index lookup, and correct query plans. Then there are things that occur only at the high-end, like clustering, but these are separate things. For embedding, the initial memory footprint needs to be small. With Virtuoso, this is accomplished by leaving out some 200 built-in tables and 100,000 lines of SQL procedures that are normally in by default, supporting things such as DAV and diverse other protocols. After all, if SPARQL is all one wants these are not needed.&lt;/p&gt; &lt;p&gt;If one really wants to do one&amp;#39;s server logic (like web listener and thread dispatching) oneself, this is not impossible but requires some advice from us. On the other hand, if one wants to have logic for security close to the data, then using stored procedures is recommended; these execute right next to the data, and support inline SPARQL and SQL. Depending on the license status of the other code, some special licensing arrangements may apply.&lt;/p&gt; &lt;p&gt;We are talking about such things with different parties at present.&lt;/p&gt; &lt;h3&gt;&amp;quot;How webby are you? What is webby?&amp;quot;&lt;/h3&gt; &lt;p&gt;&amp;quot;Webby means distributed, heterogeneous, open; not monolithic consolidation of everything.&amp;quot;&lt;/p&gt; &lt;p&gt;We are philosophically webby. We come from open standards; we are after all called OpenLink; our history consists of connecting things. We believe in choice â the user should be able to pick the best of breed for components and have them work together. We cannot and do not wish to force replacement of existing assets. Transforming data on the fly and connecting systems, leaving data where it originally resides, is the first preference. For the data web, the first preference is a federation of independent SPARQL end points. When there is harvesting, we prefer to do it on demand, as with our Sponger. With the immense amount of data out there we believe in finding what is relevant &lt;i&gt;when&lt;/i&gt; it is relevant, preferably close at hand, leveraging things like social networks. With a data web, many things which are now siloized, such as marketplaces and social networks, will return to the open.&lt;/p&gt; &lt;p&gt;Google-style crawling of everything becomes less practical if one needs to run complex &lt;i&gt;ad hoc&lt;/i&gt; queries against the mass of data. For these types of scenarios, if one needs to warehouse, the data cloud will offer solutions where one pays for database on demand. While we believe in loosely coupled federation where possible, we have serious work on the scalability side for the data center and the compute-on-demand cloud.&lt;/p&gt; &lt;h3&gt;&amp;quot;How does OpenLink see the next five years unfolding?&amp;quot;&lt;/h3&gt; &lt;p&gt;Personally, I think we have the basics for the birth of a new inflection in the &lt;a href=&quot;http://dbpedia.org/resource/Knowledge&quot; id=&quot;link-id0x1fb9ae58&quot;&gt;knowledge&lt;/a&gt; economy. The &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id0x1f07c648&quot;&gt;URI&lt;/a&gt; is the unit of exchange; its value and competitive edge lie in the data it links you with. A name without context is worth little, but as a name gets more use, more &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id0x1f007d60&quot;&gt;information&lt;/a&gt; can be found through that name. This is anything from financial statistics, to legal precedents, to news reporting or government data. Right now, if the SEC just added one line of markup to the XBRL template, this would instantaneously make all SEC-mandated reporting into linked data via GRDDL.&lt;/p&gt; &lt;p&gt;The URI is a carrier of brand. An information brand gets traffic and references, and this can be monetized in diverse ways. The key word is &lt;i&gt;context&lt;/i&gt;. Information overload is here to stay, and only better context offers the needed increase in productivity to stay ahead of the flood.&lt;/p&gt; &lt;p&gt;Semantic technologies on the whole can help with this. Why these should be semantic web or data web technologies as opposed to just semantic is the linked data value proposition. Even smart islands are still islands. Agility, scale, and scope, depend on the possibility of combining things. Therefore common terminologies and dereferenceability and discoverability are important. Without these, we are at best dealing with closed systems even if they were smart. The expert systems of the 1980s are a case in point.&lt;/p&gt; &lt;p&gt;Ever since the .com era, the &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Locator&quot; id=&quot;link-id0x2048e670&quot;&gt;URL&lt;/a&gt; has been a brand. Now it becomes a URI. Thus, entirely hiding the URI from the user experience is not always desirable. The URI is a sort of handle on the provenance and where more can be found; besides, people are already used to these.&lt;/p&gt; &lt;p&gt;With linked data, information value-add products become easy to build and deploy. They can be basically just canned SPARQL queries combining data in a useful and insightful manner. And where there is traffic there can be monetization, whether by advertizing, subscription, or other means. Such possibilities are a natural adjunct to the blogosphere. To publish analysis, one no longer needs to be a think tank or media company. We could call this scenario the birth of a meshup economy.&lt;/p&gt; &lt;p&gt;For OpenLink itself, this is our roadmap. The immediate future is about getting our high end offerings like clustered RDF storage generally available, both on the cloud and for private data centers. Ourselves, we will offer the whole &lt;a href=&quot;http://community.linkeddata.org/dataspace/organization/lod#this&quot; id=&quot;link-id0x1c696170&quot;&gt;Linked Open Data&lt;/a&gt; cloud as a database. The single feature to come in version 2 of this is fully automatic partitioning and repartitioning for on-demand scale; now, you have to choose how many partitions you have.&lt;/p&gt; &lt;p&gt;This makes some things possible that were hard thus far.&lt;/p&gt; &lt;p&gt;On the mapping front, we go for real-scale data integration scenarios where we can show that SPARQL can unify terms and concepts across databases, yet bring no added cost for complex queries. Enterprises can use their existing warehouses and have an added level of abstraction, the possibility of cross systems interlinking, the advantages of using the same taxonomies and ontologies across systems, and so forth.&lt;/p&gt; &lt;p&gt;Then there will be developments in the direction of smarter web harvesting on demand with the Virtuoso &lt;a href=&quot;http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html&quot; id=&quot;link-id0x206ab780&quot;&gt;Sponger&lt;/a&gt;, and federation of heterogeneous SPARQL end points. The federation is not so unlike clustering, except the time scales are 2 orders of magnitude longer. The work on SPARQL end point statistics and data set description and discovery is a good development in the community.&lt;/p&gt; &lt;p&gt;Then there will be NLP integration, as exemplified by the Open Calais linked data wrapper and more.&lt;/p&gt; &lt;p&gt;Can we pull this off or is this being spread too thin? We know from experience that all this can be accomplished. Scale is already here; we show it with the billion triples set. Mapping is here; we showed it last in the Berlin Benchmark. We will also show some TPC-H results after we get a little quiet after the ISWC event. Then there is ongoing maintenance but with this we have shown a steady turnaround and quick time to fix for pretty much anything.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Virtuoso - Are We Too Clever for Our Own Good? (updated)</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-10-26#1465</atom:id>
  <atom:published>2008-10-26T12:15:35Z</atom:published>
  <atom:updated>2008-10-27T12:07:52-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;&amp;quot;Physician, heal thyself,&amp;quot; it is said. We profess to say what the messaging of the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id0x1fa3da18&quot;&gt;semantic web&lt;/a&gt; ought to be, but is our own perfect?&lt;/p&gt; &lt;p&gt;I will here engage in some critical introspection as well as amplify on some answers given to &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x1e1eecf0&quot;&gt;Virtuoso&lt;/a&gt;-related questions in recent times.&lt;/p&gt; &lt;p&gt;I use some conversations from the &lt;a href=&quot;http://dbpedia.org/resource/Vienna&quot; id=&quot;link-id0x1ec0b2e0&quot;&gt;Vienna&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x2045ac10&quot;&gt;Linked Data&lt;/a&gt; Practitioners meeting as a starting point. These views are mine and are limited to the Virtuoso server. These do not apply to the &lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id0x2045ac38&quot;&gt;ODS&lt;/a&gt; (&lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id0x14f63c58&quot;&gt;OpenLink Data Spaces&lt;/a&gt;) applications line, &lt;a href=&quot;http://oat.openlinksw.com/&quot; id=&quot;link-id0x14f63c80&quot;&gt;OAT&lt;/a&gt; (&lt;a href=&quot;http://oat.openlinksw.com/&quot; id=&quot;link-id0x1e536928&quot;&gt;OpenLink Ajax Toolkit&lt;/a&gt;), or &lt;a href=&quot;http://ode.openlinksw.com/&quot; id=&quot;link-id0x1eaed7f8&quot;&gt;ODE&lt;/a&gt; (&lt;a href=&quot;http://ode.openlinksw.com/&quot; id=&quot;link-id0x1edfff88&quot;&gt;OpenLink Data Explorer&lt;/a&gt;).&lt;/p&gt; &lt;h3&gt;&amp;quot;It is not always clear what the main thrust is, we get the impression that you are spread too thin,&amp;quot; said &lt;a href=&quot;http://www.informatik.uni-leipzig.de/~auer/foaf.rdf#me&quot; id=&quot;link-id0x1b8a9580&quot;&gt;SÃ¶ren Auer&lt;/a&gt;.&lt;/h3&gt; &lt;p&gt;Well, personally, I am all for core competence. This is why I do not participate in all the online conversations and groups as much as I could, for example. Time and energy are critical resources and must be invested where they make a difference. In this case, the real core competence is running in the database race. This in itself, come to think of it, is a pretty broad concept.&lt;/p&gt; &lt;p&gt;This is why we put a lot of emphasis on Linked Data and the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x1b85fa38&quot;&gt;Data&lt;/a&gt; Web for now, as this is the emerging game. This is a deliberate choice, not an outside imperative or built-in limitation. More specifically, this means exposing any pre-existing relational data as linked data plus being the definitive &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x1f5b4468&quot;&gt;RDF&lt;/a&gt; store.&lt;/p&gt; &lt;p&gt;We can do this because we own our database and &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x20076468&quot;&gt;SQL&lt;/a&gt; and data access middleware and have a history of connecting to any &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0x1ffd6f98&quot;&gt;RDBMS&lt;/a&gt; out there.&lt;/p&gt; &lt;p&gt;The principal message we have been hearing from the RDF field is the call for scale of triple storage. This is even louder than the call for relational mapping. We believe that in time mapping will exceed triple storage as such, once we get some real production strength mappings deployed, enough to outperform RDF warehousing.&lt;/p&gt; &lt;p&gt;There are also RDF middleware things like RDF-ization and demand-driven web harvesting (i.e, the so-called Sponger). These are &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x1316f720&quot;&gt;SPARQL&lt;/a&gt; options, thus accessed via standard interfaces. We have little desire to create our own languages or APIs, or to tell people how to program. This is why we recently introduced &lt;a href=&quot;http://sourceforge.net/projects/sesame/&quot; id=&quot;link-id0x20756a68&quot;&gt;Sesame&lt;/a&gt;- and &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x1ec01ac0&quot;&gt;Jena&lt;/a&gt;-compatible APIs to our RDF store. From what we hear, these work. On the other hand, we do not hesitate to move beyond the standards when there is obvious value or necessity. This is why we brought SPARQL up to and beyond SQL expressivity. It is not a case of E3 (Embrace, Extend, Extinguish).&lt;/p&gt; &lt;p&gt;Now, this message could be better reflected in our material on the web. This &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id0x2027b410&quot;&gt;blog&lt;/a&gt; is a rather informal step in this direction; more is to come. For now we concentrate on delivering.&lt;/p&gt; &lt;p&gt;The conventional communications wisdom is to split the message by target audience. For this, we should split the RDF, relational, and web services messages from each other. We believe that a challenger, like the semantic web technology stack, must have a compelling message to tell for it to be interesting. This is not a question of research prototypes. The new technology cannot lack something the installed technology takes for granted.&lt;/p&gt; &lt;p&gt;This is why we do not tend to show things like how to insert and query a few triples: No business out there will insert and query triples for the sake of triples. There must be a more compelling story â for example, turning the whole world into a database. This is why our examples start with things like turning the &lt;a href=&quot;http://dbpedia.org/resource/TPC-H&quot; id=&quot;link-id0x2051ff98&quot;&gt;TPC-H&lt;/a&gt; database into RDF, queries and all. Anything less is not interesting. Why would an enterprise that has business intelligence and integration issues way more complex than the rather stereotypical TPC-H even look at a technology that pretends to be all for integration and all for expressivity of queries, yet cannot answer the first question of the entry exam?&lt;/p&gt; &lt;p&gt;The world out there is complex. But maybe we ought to make some simple tutorials? So, as a call to the people out there, tell us what a good tutorial would be. The question is more about figuring out what is out there and adapting these and making a sort of compatibility list. Jena and Sesame stuff ought to run as is. We could offer a webinar to all the data web luminaries showing how to promote the data web message with Virtuoso. After all, why not show it on the best platform?&lt;/p&gt; &lt;h3&gt;&amp;quot;You are arrogant. When I read your papers or documentation, the impression I get is that you say you are smart and the reader is stupid.&amp;quot;&lt;/h3&gt; &lt;p&gt;We should answer in multiple parts.&lt;/p&gt; &lt;p&gt;For general collateral, like web sites and documentation:&lt;/p&gt; &lt;p&gt;The web site gives a confused product image. For the Virtuoso product, we should divide at the top into&lt;/p&gt; &lt;ul&gt; &lt;li&gt; Data web and RDF - Host linked data, expose relational assets as linked data;&lt;/li&gt; &lt;li&gt; Relational Database - Full function, high performance, open source, Federated/Virtual Relational DBMS, expose heterogeneous RDB assets through one point of contact for integration;&lt;/li&gt; &lt;li&gt; Web Services - access all the above over standard protocols, dynamic web pages, web hosting.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;For each point, one simple statement. We all know what the above things mean?&lt;/p&gt; &lt;p&gt;Then we add a new point about scalability that impacts all the above, namely the Virtuoso version 6 Cluster, meaning that you can do all these things at 10 to 1000 times the scale. This means this much more data or in some cases this much more requests per second. This too is clear.&lt;/p&gt; &lt;p&gt;Far as I am concerned, hosting Java or .&lt;a href=&quot;http://dbpedia.org/resource/.NET_Framework&quot; id=&quot;link-id0x1f297540&quot;&gt;NET&lt;/a&gt; does not have to be on the front page. Also, we have no great interest in going against &lt;a href=&quot;http://dbpedia.org/resource/Apache&quot; id=&quot;link-id0x1ea29578&quot;&gt;Apache&lt;/a&gt; when it comes to a web server only situation. The fact that we have a web listener is important for some things but our claim to fame does not rest on this.&lt;/p&gt; &lt;p&gt;Then for documentation and training materials: The documentation should be better. Specifically it should have more of a how-to dimension since nobody reads the whole thing anyhow. About online tutorials, the order of presentation should be different. They do not really reflect what is important at the present moment either.&lt;/p&gt; &lt;p&gt;Now for conference papers: Since taking the data web as a focus area, we have submitted some papers and had some rejected because these do not have enough references and do not explain what is obvious to ourselves.&lt;/p&gt; &lt;p&gt;I think that the communications failure in this case is that we want to talk about end to end solutions and the reviewers expect research. For us, the solution is interesting and exists only if there is an adequate functionality mix for addressing a specific use case. This is why we do not make a paper about query cost model alone because the cost model, while indispensable, is a thing that is taken for granted where we come from. So we mention RDF adaptations to cost model, as these are important to the whole but do not find these to be the justification for a whole paper. If we made papers on this basis, we would have to make five times as many. Maybe we ought to.&lt;/p&gt; &lt;h3&gt;&amp;quot;Virtuoso is very big and very difficult&amp;quot;&lt;/h3&gt; &lt;p&gt;One thing that is not obvious from the Virtuoso packaging is that the minimum installation is an executable under 10MB and a config file. Two files.&lt;/p&gt; &lt;p&gt;This gives you SQL and SPARQL out of the box. Adding &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x20a2e7d0&quot;&gt;ODBC&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x1e4cceb8&quot;&gt;JDBC&lt;/a&gt; clients is as simple as it gets. After this, there is basic database functionality. Tuning is a matter of a few parameters that are explained on this blog and elsewhere. Also, the full scale installation is available as an Amazon EC2 image, so no installation required.&lt;/p&gt; &lt;p&gt;Now for the difficult side:&lt;/p&gt; &lt;p&gt;Use SQL and SPARQL; use stored procedures whenever there is server side business logic. For some time critical web pages, use VSP. Do not use VSPX. Otherwise, use whatever you are used to â &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id0x20b03f08&quot;&gt;PHP&lt;/a&gt; or Java or anything else. For web services, simple is best. Stick to basics. &amp;quot;The engineer is one who can invent a simple thing.&amp;quot; Use SQL statements rather than admin UI.&lt;/p&gt; &lt;p&gt;Know that you can start a server with no database file and you get an initial database with nothing extra. The demo database, the way it is produced by installers is cluttered.&lt;/p&gt; &lt;p&gt;We should put this into a couple of use case oriented how-tos.&lt;/p&gt; &lt;p&gt;Also, we should create a network of &amp;quot;friendly local virtuoso geeks&amp;quot; for providing basic training and services so we do not have to explain these things all the time. To all you data-web-ers out there â please sign up and we will provide instructions, etc. Contact YrjÃ¤nÃ¤ Rankka (ghard[at-sign]openlinksw.com), or go through the mailing lists; do not contact me directly.&lt;/p&gt; &lt;h3&gt;&amp;quot;OK, we understand that you may be good at the large end of the spectrum but how do you reconcile this with the lightweight or embedded end, like the semantic desktop?&amp;quot;&lt;/h3&gt; &lt;p&gt;Now, what is good for one end is usually good for the other. Namely, a database, no matter the scale, needs to have space efficient storage, fast index lookup, and correct query plans. Then there are things that occur only at the high-end, like clustering, but these are separate things. For embedding, the initial memory footprint needs to be small. With Virtuoso, this is accomplished by leaving out some 200 built-in tables and 100,000 lines of SQL procedures that are normally in by default, supporting things such as DAV and diverse other protocols. After all, if SPARQL is all one wants these are not needed.&lt;/p&gt; &lt;p&gt;If one really wants to do one&amp;#39;s server logic (like web listener and thread dispatching) oneself, this is not impossible but requires some advice from us. On the other hand, if one wants to have logic for security close to the data, then using stored procedures is recommended; these execute right next to the data, and support inline SPARQL and SQL. Depending on the license status of the other code, some special licensing arrangements may apply.&lt;/p&gt; &lt;p&gt;We are talking about such things with different parties at present.&lt;/p&gt; &lt;h3&gt;&amp;quot;How webby are you? What is webby?&amp;quot;&lt;/h3&gt; &lt;p&gt;&amp;quot;Webby means distributed, heterogeneous, open; not monolithic consolidation of everything.&amp;quot;&lt;/p&gt; &lt;p&gt;We are philosophically webby. We come from open standards; we are after all called OpenLink; our history consists of connecting things. We believe in choice â the user should be able to pick the best of breed for components and have them work together. We cannot and do not wish to force replacement of existing assets. Transforming data on the fly and connecting systems, leaving data where it originally resides, is the first preference. For the data web, the first preference is a federation of independent SPARQL end points. When there is harvesting, we prefer to do it on demand, as with our Sponger. With the immense amount of data out there we believe in finding what is relevant &lt;i&gt;when&lt;/i&gt; it is relevant, preferably close at hand, leveraging things like social networks. With a data web, many things which are now siloized, such as marketplaces and social networks, will return to the open.&lt;/p&gt; &lt;p&gt;Google-style crawling of everything becomes less practical if one needs to run complex &lt;i&gt;ad hoc&lt;/i&gt; queries against the mass of data. For these types of scenarios, if one needs to warehouse, the data cloud will offer solutions where one pays for database on demand. While we believe in loosely coupled federation where possible, we have serious work on the scalability side for the data center and the compute-on-demand cloud.&lt;/p&gt; &lt;h3&gt;&amp;quot;How does OpenLink see the next five years unfolding?&amp;quot;&lt;/h3&gt; &lt;p&gt;Personally, I think we have the basics for the birth of a new inflection in the &lt;a href=&quot;http://dbpedia.org/resource/Knowledge&quot; id=&quot;link-id0x2018bd98&quot;&gt;knowledge&lt;/a&gt; economy. The &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id0x1ec110d8&quot;&gt;URI&lt;/a&gt; is the unit of exchange; its value and competitive edge lie in the data it links you with. A name without context is worth little, but as a name gets more use, more &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id0x1ecfba08&quot;&gt;information&lt;/a&gt; can be found through that name. This is anything from financial statistics, to legal precedents, to news reporting or government data. Right now, if the SEC just added one line of markup to the XBRL template, this would instantaneously make all SEC-mandated reporting into linked data via GRDDL.&lt;/p&gt; &lt;p&gt;The URI is a carrier of brand. An information brand gets traffic and references, and this can be monetized in diverse ways. The key word is &lt;i&gt;context&lt;/i&gt;. Information overload is here to stay, and only better context offers the needed increase in productivity to stay ahead of the flood.&lt;/p&gt; &lt;p&gt;Semantic technologies on the whole can help with this. Why these should be semantic web or data web technologies as opposed to just semantic is the linked data value proposition. Even smart islands are still islands. Agility, scale, and scope, depend on the possibility of combining things. Therefore common terminologies and dereferenceability and discoverability are important. Without these, we are at best dealing with closed systems even if they were smart. The expert systems of the 1980s are a case in point.&lt;/p&gt; &lt;p&gt;Ever since the .com era, the &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Locator&quot; id=&quot;link-id0x1c4c9248&quot;&gt;URL&lt;/a&gt; has been a brand. Now it becomes a URI. Thus, entirely hiding the URI from the user experience is not always desirable. The URI is a sort of handle on the provenance and where more can be found; besides, people are already used to these.&lt;/p&gt; &lt;p&gt;With linked data, information value-add products become easy to build and deploy. They can be basically just canned SPARQL queries combining data in a useful and insightful manner. And where there is traffic there can be monetization, whether by advertizing, subscription, or other means. Such possibilities are a natural adjunct to the blogosphere. To publish analysis, one no longer needs to be a think tank or media company. We could call this scenario the birth of a meshup economy.&lt;/p&gt; &lt;p&gt;For OpenLink itself, this is our roadmap. The immediate future is about getting our high end offerings like clustered RDF storage generally available, both on the cloud and for private data centers. Ourselves, we will offer the whole &lt;a href=&quot;http://community.linkeddata.org/dataspace/organization/lod#this&quot; id=&quot;link-id0x20791bf0&quot;&gt;Linked Open Data&lt;/a&gt; cloud as a database. The single feature to come in version 2 of this is fully automatic partitioning and repartitioning for on-demand scale; now, you have to choose how many partitions you have.&lt;/p&gt; &lt;p&gt;This makes some things possible that were hard thus far.&lt;/p&gt; &lt;p&gt;On the mapping front, we go for real-scale data integration scenarios where we can show that SPARQL can unify terms and concepts across databases, yet bring no added cost for complex queries. Enterprises can use their existing warehouses and have an added level of abstraction, the possibility of cross systems interlinking, the advantages of using the same taxonomies and ontologies across systems, and so forth.&lt;/p&gt; &lt;p&gt;Then there will be developments in the direction of smarter web harvesting on demand with the Virtuoso &lt;a href=&quot;http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html&quot; id=&quot;link-id0x1f27e6d8&quot;&gt;Sponger&lt;/a&gt;, and federation of heterogeneous SPARQL end points. The federation is not so unlike clustering, except the time scales are 2 orders of magnitude longer. The work on SPARQL end point statistics and data set description and discovery is a good development in the community.&lt;/p&gt; &lt;p&gt;Then there will be NLP integration, as exemplified by the Open Calais linked data wrapper and more.&lt;/p&gt; &lt;p&gt;Can we pull this off or is this being spread too thin? We know from experience that all this can be accomplished. Scale is already here; we show it with the billion triples set. Mapping is here; we showed it last in the Berlin Benchmark. We will also show some TPC-H results after we get a little quiet after the ISWC event. Then there is ongoing maintenance but with this we have shown a steady turnaround and quick time to fix for pretty much anything.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Where Are All the RDF-based Semantic Web Applications?</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-10-01#1447</atom:id>
  <atom:published>2008-10-01T23:09:00Z</atom:published>
  <atom:updated>2008-10-02T15:27:41-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; In response to the &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id15971040&quot;&gt;Semantic Web&lt;/a&gt; Technology&amp;quot; application classification scheme espoused by &lt;a href=&quot;http://www.readwriteweb.com&quot; id=&quot;link-id16391540&quot;&gt;ReadWriteWeb&lt;/a&gt; (RWW), emphasized in the post titled: &lt;a href=&quot;http://www.readwriteweb.com/archives/rdf_semantic_web_apps.php&quot; id=&quot;link-id1157eaa0&quot;&gt;Where are all the RDF-based Semantic Web Apps?&lt;/a&gt;, here is my attempt to clarify and reintroduce what &lt;a href=&quot;http://www.openlinksw.com/dataspace/organization/openlink#this&quot; id=&quot;link-id15a43758&quot;&gt;OpenLink Software&lt;/a&gt; offers (today) in relation to Semantic Web technology. &lt;/p&gt; &lt;p&gt; From the RWW Top-Down category, which I interpret as: technologies that produce RDF from non RDF &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt; sources. Our product portfolio is comprised of the following; &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id14f05818&quot;&gt;Virtuoso Universal Server&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id162c8630&quot;&gt;OpenLink Data Spaces&lt;/a&gt;, &lt;a href=&quot;http://oat.openlinksw.com&quot; id=&quot;link-id134e1a00&quot;&gt;OpenLink Ajax Toolkit&lt;/a&gt;, and &lt;a href=&quot;http://ode.openlinksw.com&quot; id=&quot;link-id160b3bf8&quot;&gt;OpenLink Data Explorer&lt;/a&gt; (which includes ubiquity commands).&lt;/p&gt; &lt;h3&gt;Virtuoso Universal Server functionality summary:&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Generation of RDF &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id161d5f50&quot;&gt;Linked Data&lt;/a&gt; Views of &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id161d5978&quot;&gt;SQL&lt;/a&gt;, XML, and &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;Web&lt;/a&gt; Services in general &lt;/li&gt; &lt;li&gt;Deployment of RDF Linked Data &lt;/li&gt; &lt;li&gt;&amp;quot;On the Fly&amp;quot; generation of RDF Linked Data from Document Web &lt;a href=&quot;http://www.w3.org/TR/webarch/&quot; id=&quot;link-id178bbc08&quot;&gt;information resources&lt;/a&gt; (i.e. distillation of entities from their containers e.g. Web pages) via Cartridges / Drivers&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id162c2118&quot;&gt;SPARQL&lt;/a&gt; query language support &lt;/li&gt; &lt;li&gt;SPARQL extensions that bring SPARQL closer to SQL e.g Aggregates, Update, Insert, Delete Named Graph support (i.e. use of logical names to partition RDF data within Virtuoso&amp;#39;s multi-model dbms engine) &lt;/li&gt; &lt;li&gt;Inference Engine (currently in use re. &lt;a href=&quot;http://dbpedia.org/resource/DBpedia&quot; id=&quot;link-id14f563c0&quot;&gt;DBpedia&lt;/a&gt; via Yago and &lt;a href=&quot;http://umbel.org/about/&quot; id=&quot;link-id113273b8&quot;&gt;UMBEL&lt;/a&gt;)&lt;/li&gt; &lt;li&gt;Host and exposes data from &lt;a href=&quot;http://dbpedia.org/resource/Drupal&quot; id=&quot;link-id123d3bd8&quot;&gt;Drupal&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id141adf40&quot;&gt;Wordpress&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/MediaWiki&quot; id=&quot;link-id1604b450&quot;&gt;MediaWiki&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/PhpBB&quot; id=&quot;link-id141013a8&quot;&gt;phpBB3&lt;/a&gt; as RDF Linked Data via in-built support for &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id14661e58&quot;&gt;PHP&lt;/a&gt; runtime&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/ODSInstallationEC2&quot; id=&quot;link-id146c84d0&quot;&gt;Available as an EC2 AMI&lt;/a&gt; &lt;/li&gt; &lt;li&gt;etc..&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;OpenLink Data Spaces functionality summary:&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Simple mechanism for Linked Data &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id15473770&quot;&gt;Web&lt;/a&gt; enabling yourself by giving you an &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/GetAPersonalURIIn5MinutesOrLess&quot; id=&quot;link-id15f6d278&quot;&gt;HTTP based User ID&lt;/a&gt; (a de-referencable &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id15aaeb68&quot;&gt;URI&lt;/a&gt;) that is linked to a &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen&quot; id=&quot;link-id15a7a840&quot;&gt;FOAF based Profile page&lt;/a&gt; and OpenID&lt;/li&gt; &lt;li&gt;Binds all your data sources (blogs, wikis, bookmarks, photos, calendar items etc. ) to your URI so can &amp;quot;Find&amp;quot; things by only remembering your URI&lt;/li&gt; &lt;li&gt;Makes your profile page and personal URI the focal point of Linked Data Web presence&lt;/li&gt; &lt;li&gt;Delivers Data Portability (using data access by value or &lt;a href=&quot;http://dbpedia.org/resource/Reference_(computer_science)&quot; id=&quot;link-id16212838&quot;&gt;data access by reference&lt;/a&gt;) across data silos (e.g. Web 2.0 style social networks)&lt;/li&gt; &lt;li&gt;Allows you make annotations about anything in your own &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id14668010&quot;&gt;Data Space&lt;/a&gt;(s) on the Web without exposure to RDF markup&lt;/li&gt; &lt;li&gt;A Briefcase feature that provides a WebDAV driven RDF Linked Data variant of functionality seen in Mac OS X Spotlight and WinFS with the addition of SPARQL compliance&lt;/li&gt; &lt;li&gt;Automatically generates &lt;a href=&quot;http://dbpedia.org/resource/RDFa&quot; id=&quot;link-id14691440&quot;&gt;RDFa&lt;/a&gt; in its (X)HTML pages&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id14fae7b8&quot;&gt;Blog&lt;/a&gt;, Wiki, WebDAV File Server, Shared Bookmarks, Calendar, and other applications that look and feel like Web 2.0 counterparts but emitt RDF Linked Data amongst a plethora of data exchange formats&lt;/li&gt; &lt;li&gt;Available as an EC2 AMI&lt;/li&gt; &lt;li&gt;etc..&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;OpenLink Ajax Toolkit functionality summary:&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Provides binding to SQL, RDF, XML, and Web Services via Ajax Database Connectivity Layer (you only need an &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id11550548&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id13ae5f68&quot;&gt;JDBC&lt;/a&gt;, OLE-DB, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id162803e8&quot;&gt;ADO&lt;/a&gt;.NET, XMLA Driver, or Web Service on the backend for dynamic data access from Javascript)&lt;/li&gt; &lt;li&gt;All controls are Ajax Database Connectivity bound (widgets get their data from Ajax Database Connectivity data sources)&lt;/li&gt; &lt;li&gt;Bundled with Virtuoso and &lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Data_Spaces&quot; id=&quot;link-id161dfe90&quot;&gt;ODS&lt;/a&gt; installations.&lt;/li&gt; &lt;li&gt;etc.&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;OpenLink Data Explorer functionality summary&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Distills entities associated with information resource style containers (e.g. Web Pages or files) as RDF Linked Data&lt;/li&gt; &lt;li&gt;Exposes the RDF based &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id12a42ed8&quot;&gt;Linked Data graph&lt;/a&gt; associated with information resources (see the Linked Data behind Web pages)&lt;/li&gt; &lt;li&gt;Ubiquity commands for invoking the above&lt;/li&gt; &lt;li&gt;Available as a &lt;a href=&quot;http://linkeddata.uriburner.com/ode&quot; id=&quot;link-id15a0d2b0&quot;&gt;Hosted Service&lt;/a&gt; or &lt;a href=&quot;http://ode.openlinksw.com&quot; id=&quot;link-id138b9fa8&quot;&gt;Firefox Extension&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Bundled with Virtuoso and ODS installations&lt;/li&gt; &lt;li&gt;etc.&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;Note:&lt;/h3&gt; &lt;p&gt;Of course you could have simply looked up &lt;a href=&quot;http://www.openlinksw.com/dataspace/organization/openlink&quot; id=&quot;link-id14ef2c10&quot;&gt;OpenLink Software&amp;#39;s FOAF based Profile page&lt;/a&gt; (*note the Linked Data Explorer tab*), or simply passed the &lt;a href=&quot;http://dbpedia.org/resource/Friend_of_a_friend&quot; id=&quot;link-id14cbf5c8&quot;&gt;FOAF&lt;/a&gt; profile page &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Locator&quot; id=&quot;link-id16453e28&quot;&gt;URL&lt;/a&gt; to a Linked Data aware client application such as: &lt;a href=&quot;http://linkeddata.uriburner.com/ode&quot; id=&quot;link-id15a80500&quot;&gt;OpenLink Data Explorer&lt;/a&gt;, &lt;a href=&quot;http://zitgist.com/about/&quot; id=&quot;link-id1586a360&quot;&gt;Zitgist&lt;/a&gt; &lt;a href=&quot;http://dataviewer.zitgist.com&quot; id=&quot;link-id16249f60&quot;&gt;Data Viewer&lt;/a&gt;, &lt;a href=&quot;http://beckr.org/marbles&quot; id=&quot;link-id15993fb0&quot;&gt;Marbles&lt;/a&gt;, and &lt;a href=&quot;http://dig.csail.mit.edu/2005/ajar/release/tabulator/0.8/tab.html&quot; id=&quot;link-id14d63048&quot;&gt;Tabulator&lt;/a&gt;, and obtained information. Remember, &lt;a href=&quot;http://www.openlinksw.com/dataspace/organization/openlink#this&quot; id=&quot;link-id138ba838&quot;&gt;OpenLink Software&lt;/a&gt; is an &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id1173e120&quot;&gt;Entity&lt;/a&gt; of Type: &lt;a href=&quot;http://xmlns.com/foaf/0.1/Organization&quot; id=&quot;link-id138b87b8&quot;&gt;foaf:Organization&lt;/a&gt;, on the burgeoning Linked Data Web :-)&lt;/p&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/Creating_Deploying_Exploiting_Linked_Data2_TimBL_v3.html&quot; id=&quot;link-id163a0c88&quot;&gt;Linked Data Planet Keynote&lt;/a&gt; (RDFa based remix edition)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://semanticbusiness.blogspot.com/2008/09/report-on-cusp-global-review-of.html&quot; id=&quot;link-id11471a40&quot;&gt;On The Cusp: A Global Review of the Semantic Web Industry.&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Transitivity and Graphs for SQL</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-09-08#1435</atom:id>
  <atom:published>2008-09-08T09:41:24Z</atom:published>
  <atom:updated>2008-09-08T15:43:07-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;Transitivity and Graphs for SQL&lt;/div&gt; &lt;h2&gt;Background&lt;/h2&gt; &lt;p&gt;I have mentioned on a couple of prior occasions that basic graph operations ought to be integrated into the &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xa1a18c58&quot;&gt;SQL&lt;/a&gt; query language.&lt;/p&gt; &lt;p&gt;The history of databases is by and large about moving from specialized applications toward a generic platform. The introduction of the DBMS itself is the archetypal example. It is all about extracting the common features of applications and making these the features of a platform instead.&lt;/p&gt; &lt;p&gt;It is now time to apply this principle to graph traversal.&lt;/p&gt; &lt;p&gt;The rationale is that graph operations are somewhat tedious to write in a parallelize-able, latency-tolerant manner. Writing them as one would for memory-based &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xaf8c730&quot;&gt;data&lt;/a&gt; structures is easier but totally unscalable as soon as there is any latency involved, i.e., disk reads or messages between cluster peers.&lt;/p&gt; &lt;p&gt;The ad-hoc nature and very large volume of &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0xae41ef0&quot;&gt;RDF&lt;/a&gt; data makes this a timely question. Up until now, the answer to this question has been to materialize any implied facts in RDF stores. If &lt;i&gt;a&lt;/i&gt; was part of &lt;i&gt;b&lt;/i&gt;, and &lt;i&gt;b&lt;/i&gt; part of &lt;i&gt;&lt;a href=&quot;http://dbpedia.org/resource/C_(programming_language)&quot; id=&quot;link-id0xac9d8790&quot;&gt;c&lt;/a&gt;&lt;/i&gt;, the implied fact that &lt;i&gt;a&lt;/i&gt; is part of &lt;i&gt;c&lt;/i&gt; would be inserted explicitly into the database as a pre-query step.&lt;/p&gt; &lt;p&gt;This is simple and often efficient, but tends to have the downside that one makes a specialized warehouse for each new type of query. The activity becomes less ad-hoc.&lt;/p&gt; &lt;p&gt;Also, this becomes next to impossible when the scale approaches web scale, or if some of the data is liable to be on-and-off included-into or excluded-from the set being analyzed. This is why with &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xb68f9d0&quot;&gt;Virtuoso&lt;/a&gt; we have tended to favor inference on demand (&amp;quot;backward chaining&amp;quot;) and mapping of relational data into RDF without copying.&lt;/p&gt; &lt;p&gt;The SQL world has taken steps towards dealing with recursion with the &lt;code&gt;WITH - UNION&lt;/code&gt; construct which allows definition of recursive views. The idea there is to define, for example, a tree walk as a &lt;code&gt;UNION&lt;/code&gt; of the data of the starting node plus the recursive walk of the starting node&amp;#39;s immediate children.&lt;/p&gt; &lt;p&gt;The main problem with this is that I do not very well see how a SQL optimizer could effectively rearrange queries involving &lt;code&gt;JOIN&lt;/code&gt;s between such recursive views. This model of recursion seems to lose SQL&amp;#39;s non-procedural nature. One can no longer easily rearrange &lt;code&gt;JOIN&lt;/code&gt;s based on what data is given and what is to be retrieved. If the recursion is written from root to leaf, it is not obvious how to do this from leaf to root. At any rate, queries written in this way are so complex to write, let alone optimize, that I decided to take another approach.&lt;/p&gt; &lt;p&gt;Take a question like &amp;quot;list the parts of products of category &lt;i&gt;C&lt;/i&gt; which have materials that are classified as toxic.&amp;quot; Suppose that the product categories are a tree, the product parts are a tree, and the materials classification is a tree taxonomy where &amp;quot;toxic&amp;quot; has a multilevel substructure.&lt;/p&gt; &lt;p&gt;Depending on the count of products and materials, the query can be evaluated as either going from products to parts to materials and then climbing up the materials tree to see if the material is toxic. Or one could do it in reverse, starting with the different toxic materials, looking up the parts containing these, going to the part tree to the product, and up the product hierarchy to see if the product is in the right category. One should be able to evaluate the identical query either way depending on what indices exist, what the cardinalities of the relations are, and so forth â regular cost based optimization.&lt;/p&gt; &lt;p&gt;Especially with RDF, there are many problems of this type. In regular SQL, it is a long-standing cultural practice to flatten hierarchies, but this is not the case with RDF.&lt;/p&gt; &lt;p&gt;In Virtuoso, we see &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0xb3bdcc0&quot;&gt;SPARQL&lt;/a&gt; as reducing to SQL. Any RDF-oriented database-engine or query-optimization feature is accessed via SQL. Thus, if we address run-time-recursion in the Virtuoso query engine, this becomes, &lt;i&gt;ipso facto&lt;/i&gt;, an SQL feature. Besides, we remember that SQL is a much more mature and expressive language than the current SPARQL recommendation.&lt;/p&gt; &lt;h2&gt; SQL and Transitivity &lt;/h2&gt; &lt;p&gt;We will here look at some simple social network queries. A later article will show how to do more general graph operations. We extend the SQL derived table construct, i.e., &lt;code&gt;SELECT&lt;/code&gt; in another &lt;code&gt;SELECT&lt;/code&gt;&amp;#39;s &lt;code&gt;FROM&lt;/code&gt; clause, with a &lt;code&gt;TRANSITIVE&lt;/code&gt; clause.&lt;/p&gt; &lt;p&gt;Consider the data:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;CREATE TABLE &amp;quot;knows&amp;quot; (&amp;quot;p1&amp;quot; INT, &amp;quot;p2&amp;quot; INT, PRIMARY KEY (&amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;) ); ALTER INDEX &amp;quot;knows&amp;quot; ON &amp;quot;knows&amp;quot; PARTITION (&amp;quot;p1&amp;quot; INT); CREATE INDEX &amp;quot;knows2&amp;quot; ON &amp;quot;knows&amp;quot; (&amp;quot;p2&amp;quot;, &amp;quot;p1&amp;quot;) PARTITION (&amp;quot;p2&amp;quot; INT); &lt;/code&gt; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;We represent a social network with the many-to-many relation &amp;quot;knows&amp;quot;. The persons are identified by integers.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;INSERT INTO &amp;quot;knows&amp;quot; VALUES (1, 2); INSERT INTO &amp;quot;knows&amp;quot; VALUES (1, 3); INSERT INTO &amp;quot;knows&amp;quot; VALUES (2, 4);&lt;/code&gt; &lt;/pre&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;k&amp;quot;.&amp;quot;p1&amp;quot; = 1;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;We obtain the result:&lt;/p&gt; &lt;blockquote&gt; &lt;table width=&quot;100&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;The operation is reversible:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;k&amp;quot;.&amp;quot;p2&amp;quot; = 4; &lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;100&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;Since now we give &lt;i&gt;p2&lt;/i&gt;, we traverse from &lt;i&gt;p2&lt;/i&gt; towards &lt;i&gt;p1&lt;/i&gt;. The result set states that 4 is known by 2 and 2 is known by 1.&lt;/p&gt; &lt;p&gt;To see what would happen if &lt;i&gt;x&lt;/i&gt; knowing &lt;i&gt;y&lt;/i&gt; also meant &lt;i&gt;y&lt;/i&gt; knowing &lt;i&gt;x&lt;/i&gt;, one could write:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM (SELECT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM &amp;quot;knows&amp;quot; UNION ALL SELECT &amp;quot;p2&amp;quot;, &amp;quot;p1&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k2&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;k&amp;quot;.&amp;quot;p2&amp;quot; = 4;&lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;100&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;Now, since we know that 1 and 4 are related, we can ask how they are related.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;, T_STEP (1) AS &amp;quot;via&amp;quot;, T_STEP (&amp;#39;step_no&amp;#39;) AS &amp;quot;step&amp;quot;, T_STEP (&amp;#39;path_id&amp;#39;) AS &amp;quot;path&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;p1&amp;quot; = 1 AND &amp;quot;p2&amp;quot; = 4;&lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;250&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;via&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;step&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;path&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;The two first columns are the ends of the path. The next column is the person that is a step on the path. The next one is the number of the step, counting from 0, so that the end of the path that corresponds to the end condition on the column designated as input, i.e., &lt;i&gt;p1&lt;/i&gt;, has number 0. Since there can be multiple solutions, the last column is a sequence number allowing distinguishing multiple alternative paths from each other.&lt;/p&gt; &lt;p&gt;For LinkedIn users, the friends ordered by distance and descending friend count query, which is at the basis of most LinkedIn search result views can be written as: &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT p2, dist, (SELECT COUNT (*) FROM &amp;quot;knows&amp;quot; &amp;quot;c&amp;quot; WHERE &amp;quot;c&amp;quot;.&amp;quot;p1&amp;quot; = &amp;quot;k&amp;quot;.&amp;quot;p2&amp;quot; ) FROM (SELECT TRANSITIVE t_in (1) t_out (2) t_distinct &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;, t_step (&amp;#39;step_no&amp;#39;) AS &amp;quot;dist&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;p1&amp;quot; = 1 ORDER BY &amp;quot;dist&amp;quot;, 3 DESC;&lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;150&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;dist&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;aggregate&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;h2&gt;How?&lt;/h2&gt; &lt;p&gt;The queries shown above work on Virtuoso v6. When running in cluster mode, several thousand graph traversal steps may be proceeding at the same time, meaning that all database access is parallelized and that the algorithm is internally latency-tolerant. By default, all results are produced in a deterministic order, permitting predictable slicing of result sets.&lt;/p&gt; &lt;p&gt;Furthermore, for queries where both ends of a path are given, the optimizer may decide to attack the path from both ends simultaneously. So, supposing that every member of a social network has an average of 30 contacts, and we need to find a path between two users that are no more than 6 steps apart, we begin at both ends, expanding each up to 3 levels, and we stop when we find the first intersection. Thus, we reach 2 * 30^3 = 54,000 nodes, and not 30^6 = 729,000,000 nodes.&lt;/p&gt; &lt;p&gt;Writing a generic database driven graph traversal framework on the application side, say in Java over &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xa8a9ef8&quot;&gt;JDBC&lt;/a&gt;, would easily be over a thousand lines. This is much more work than can be justified just for a one-off, ad-hoc query. Besides, the traversal order in such a case could not be optimized by the DBMS.&lt;/p&gt; &lt;h2&gt;Next&lt;/h2&gt; &lt;p&gt;In a future &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id0xb526a40&quot;&gt;blog&lt;/a&gt; post I will show how this feature can be used for common graph tasks like critical path, itinerary planning, traveling salesman, the 8 queens chess problem, etc. There are lots of switches for controlling different parameters of the traversal. This is just the beginning. I will also give examples of the use of this in SPARQL.&lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Transitivity and Graphs for SQL</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-09-08#1433</atom:id>
  <atom:published>2008-09-08T09:20:11Z</atom:published>
  <atom:updated>2008-09-08T15:43:04.000006-04:00</atom:updated>
  <atom:content type="html">&lt;h2&gt;Background&lt;/h2&gt; &lt;p&gt;I have mentioned on a couple of prior occasions that basic graph operations ought to be integrated into the &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xb1fe830&quot;&gt;SQL&lt;/a&gt; query language.&lt;/p&gt; &lt;p&gt;The history of databases is by and large about moving from specialized applications toward a generic platform. The introduction of the DBMS itself is the archetypal example. It is all about extracting the common features of applications and making these the features of a platform instead.&lt;/p&gt; &lt;p&gt;It is now time to apply this principle to graph traversal.&lt;/p&gt; &lt;p&gt;The rationale is that graph operations are somewhat tedious to write in a parallelize-able, latency-tolerant manner. Writing them as one would for memory-based &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x1cb37218&quot;&gt;data&lt;/a&gt; structures is easier but totally unscalable as soon as there is any latency involved, i.e., disk reads or messages between cluster peers.&lt;/p&gt; &lt;p&gt;The ad-hoc nature and very large volume of &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x1e1850a0&quot;&gt;RDF&lt;/a&gt; data makes this a timely question. Up until now, the answer to this question has been to materialize any implied facts in RDF stores. If &lt;i&gt;a&lt;/i&gt; was part of &lt;i&gt;b&lt;/i&gt;, and &lt;i&gt;b&lt;/i&gt; part of &lt;i&gt;&lt;a href=&quot;http://dbpedia.org/resource/C_(programming_language)&quot; id=&quot;link-id0xa1a08d38&quot;&gt;c&lt;/a&gt;&lt;/i&gt;, the implied fact that &lt;i&gt;a&lt;/i&gt; is part of &lt;i&gt;c&lt;/i&gt; would be inserted explicitly into the database as a pre-query step.&lt;/p&gt; &lt;p&gt;This is simple and often efficient, but tends to have the downside that one makes a specialized warehouse for each new type of query. The activity becomes less ad-hoc.&lt;/p&gt; &lt;p&gt;Also, this becomes next to impossible when the scale approaches web scale, or if some of the data is liable to be on-and-off included-into or excluded-from the set being analyzed. This is why with &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xa51bd10&quot;&gt;Virtuoso&lt;/a&gt; we have tended to favor inference on demand (&amp;quot;backward chaining&amp;quot;) and mapping of relational data into RDF without copying.&lt;/p&gt; &lt;p&gt;The SQL world has taken steps towards dealing with recursion with the &lt;code&gt;WITH - UNION&lt;/code&gt; construct which allows definition of recursive views. The idea there is to define, for example, a tree walk as a &lt;code&gt;UNION&lt;/code&gt; of the data of the starting node plus the recursive walk of the starting node&amp;#39;s immediate children.&lt;/p&gt; &lt;p&gt;The main problem with this is that I do not very well see how a SQL optimizer could effectively rearrange queries involving &lt;code&gt;JOIN&lt;/code&gt;s between such recursive views. This model of recursion seems to lose SQL&amp;#39;s non-procedural nature. One can no longer easily rearrange &lt;code&gt;JOIN&lt;/code&gt;s based on what data is given and what is to be retrieved. If the recursion is written from root to leaf, it is not obvious how to do this from leaf to root. At any rate, queries written in this way are so complex to write, let alone optimize, that I decided to take another approach.&lt;/p&gt; &lt;p&gt;Take a question like &amp;quot;list the parts of products of category &lt;i&gt;C&lt;/i&gt; which have materials that are classified as toxic.&amp;quot; Suppose that the product categories are a tree, the product parts are a tree, and the materials classification is a tree taxonomy where &amp;quot;toxic&amp;quot; has a multilevel substructure.&lt;/p&gt; &lt;p&gt;Depending on the count of products and materials, the query can be evaluated as either going from products to parts to materials and then climbing up the materials tree to see if the material is toxic. Or one could do it in reverse, starting with the different toxic materials, looking up the parts containing these, going to the part tree to the product, and up the product hierarchy to see if the product is in the right category. One should be able to evaluate the identical query either way depending on what indices exist, what the cardinalities of the relations are, and so forth â regular cost based optimization.&lt;/p&gt; &lt;p&gt;Especially with RDF, there are many problems of this type. In regular SQL, it is a long-standing cultural practice to flatten hierarchies, but this is not the case with RDF.&lt;/p&gt; &lt;p&gt;In Virtuoso, we see &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0xb4b3ce8&quot;&gt;SPARQL&lt;/a&gt; as reducing to SQL. Any RDF-oriented database-engine or query-optimization feature is accessed via SQL. Thus, if we address run-time-recursion in the Virtuoso query engine, this becomes, &lt;i&gt;ipso facto&lt;/i&gt;, an SQL feature. Besides, we remember that SQL is a much more mature and expressive language than the current SPARQL recommendation.&lt;/p&gt; &lt;h2&gt; SQL and Transitivity &lt;/h2&gt; &lt;p&gt;We will here look at some simple social network queries. A later article will show how to do more general graph operations. We extend the SQL derived table construct, i.e., &lt;code&gt;SELECT&lt;/code&gt; in another &lt;code&gt;SELECT&lt;/code&gt;&amp;#39;s &lt;code&gt;FROM&lt;/code&gt; clause, with a &lt;code&gt;TRANSITIVE&lt;/code&gt; clause.&lt;/p&gt; &lt;p&gt;Consider the data:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;CREATE TABLE &amp;quot;knows&amp;quot; (&amp;quot;p1&amp;quot; INT, &amp;quot;p2&amp;quot; INT, PRIMARY KEY (&amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;) ); ALTER INDEX &amp;quot;knows&amp;quot; ON &amp;quot;knows&amp;quot; PARTITION (&amp;quot;p1&amp;quot; INT); CREATE INDEX &amp;quot;knows2&amp;quot; ON &amp;quot;knows&amp;quot; (&amp;quot;p2&amp;quot;, &amp;quot;p1&amp;quot;) PARTITION (&amp;quot;p2&amp;quot; INT); &lt;/code&gt; &lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;We represent a social network with the many-to-many relation &amp;quot;knows&amp;quot;. The persons are identified by integers.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;INSERT INTO &amp;quot;knows&amp;quot; VALUES (1, 2); INSERT INTO &amp;quot;knows&amp;quot; VALUES (1, 3); INSERT INTO &amp;quot;knows&amp;quot; VALUES (2, 4);&lt;/code&gt; &lt;/pre&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;k&amp;quot;.&amp;quot;p1&amp;quot; = 1;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt; &lt;p&gt;We obtain the result:&lt;/p&gt; &lt;blockquote&gt; &lt;table width=&quot;100&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;The operation is reversible:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;k&amp;quot;.&amp;quot;p2&amp;quot; = 4; &lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;100&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;Since now we give &lt;i&gt;p2&lt;/i&gt;, we traverse from &lt;i&gt;p2&lt;/i&gt; towards &lt;i&gt;p1&lt;/i&gt;. The result set states that 4 is known by 2 and 2 is known by 1.&lt;/p&gt; &lt;p&gt;To see what would happen if &lt;i&gt;x&lt;/i&gt; knowing &lt;i&gt;y&lt;/i&gt; also meant &lt;i&gt;y&lt;/i&gt; knowing &lt;i&gt;x&lt;/i&gt;, one could write:&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM (SELECT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot; FROM &amp;quot;knows&amp;quot; UNION ALL SELECT &amp;quot;p2&amp;quot;, &amp;quot;p1&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k2&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;k&amp;quot;.&amp;quot;p2&amp;quot; = 4;&lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;100&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;Now, since we know that 1 and 4 are related, we can ask how they are related.&lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT * FROM (SELECT TRANSITIVE T_IN (1) T_OUT (2) T_DISTINCT &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;, T_STEP (1) AS &amp;quot;via&amp;quot;, T_STEP (&amp;#39;step_no&amp;#39;) AS &amp;quot;step&amp;quot;, T_STEP (&amp;#39;path_id&amp;#39;) AS &amp;quot;path&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;p1&amp;quot; = 1 AND &amp;quot;p2&amp;quot; = 4;&lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;250&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p1&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;via&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;step&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;path&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;The two first columns are the ends of the path. The next column is the person that is a step on the path. The next one is the number of the step, counting from 0, so that the end of the path that corresponds to the end condition on the column designated as input, i.e., &lt;i&gt;p1&lt;/i&gt;, has number 0. Since there can be multiple solutions, the last column is a sequence number allowing distinguishing multiple alternative paths from each other.&lt;/p&gt; &lt;p&gt;For LinkedIn users, the friends ordered by distance and descending friend count query, which is at the basis of most LinkedIn search result views can be written as: &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt;&lt;code&gt;SELECT p2, dist, (SELECT COUNT (*) FROM &amp;quot;knows&amp;quot; &amp;quot;c&amp;quot; WHERE &amp;quot;c&amp;quot;.&amp;quot;p1&amp;quot; = &amp;quot;k&amp;quot;.&amp;quot;p2&amp;quot; ) FROM (SELECT TRANSITIVE t_in (1) t_out (2) t_distinct &amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;, t_step (&amp;#39;step_no&amp;#39;) AS &amp;quot;dist&amp;quot; FROM &amp;quot;knows&amp;quot; ) &amp;quot;k&amp;quot; WHERE &amp;quot;p1&amp;quot; = 1 ORDER BY &amp;quot;dist&amp;quot;, 3 DESC;&lt;/code&gt; &lt;/pre&gt; &lt;table width=&quot;150&quot;&gt; &lt;tr&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;p2&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;dist&lt;/th&gt; &lt;th align=&quot;center&quot; width=&quot;50&quot;&gt;aggregate&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;h2&gt;How?&lt;/h2&gt; &lt;p&gt;The queries shown above work on Virtuoso v6. When running in cluster mode, several thousand graph traversal steps may be proceeding at the same time, meaning that all database access is parallelized and that the algorithm is internally latency-tolerant. By default, all results are produced in a deterministic order, permitting predictable slicing of result sets.&lt;/p&gt; &lt;p&gt;Furthermore, for queries where both ends of a path are given, the optimizer may decide to attack the path from both ends simultaneously. So, supposing that every member of a social network has an average of 30 contacts, and we need to find a path between two users that are no more than 6 steps apart, we begin at both ends, expanding each up to 3 levels, and we stop when we find the first intersection. Thus, we reach 2 * 30^3 = 54,000 nodes, and not 30^6 = 729,000,000 nodes.&lt;/p&gt; &lt;p&gt;Writing a generic database driven graph traversal framework on the application side, say in Java over &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xb595050&quot;&gt;JDBC&lt;/a&gt;, would easily be over a thousand lines. This is much more work than can be justified just for a one-off, ad-hoc query. Besides, the traversal order in such a case could not be optimized by the DBMS.&lt;/p&gt; &lt;h2&gt;Next&lt;/h2&gt; &lt;p&gt;In a future &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id0x1e4d4f18&quot;&gt;blog&lt;/a&gt; post I will show how this feature can be used for common graph tasks like critical path, itinerary planning, traveling salesman, the 8 queens chess problem, etc. There are lots of switches for controlling different parameters of the traversal. This is just the beginning. I will also give examples of the use of this in SPARQL.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Crunchbase &amp; Semantic Web Interview (Remix - Update 1)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-08-27#1424</atom:id>
  <atom:published>2008-08-27T18:16:37Z</atom:published>
  <atom:updated>2008-08-27T20:35:15-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;After reading &lt;a href=&quot;http://blog.crunchbase.com/2008/08/26/building-a-semantic-web-interview-with-benjamin-nowack/&quot; id=&quot;link-id16b8e0e0&quot;&gt;Bengee&amp;#39;s interview with CrunchBase&lt;/a&gt;, I decided to knock up a quick interview remix as part of my usual attempt to add to the developing discourse.&lt;/p&gt; &lt;blockquote&gt; &lt;cite&gt;&lt;a href=&quot;http://www.crunchbase.com/&quot; id=&quot;link-id17c8e7b8&quot;&gt;CrunchBase&lt;/a&gt;: When we released the &lt;a href=&quot;http://www.crunchbase.com/help/api&quot; id=&quot;link-id16681f68&quot;&gt;CrunchBase API&lt;/a&gt;, you were one of the first developers to step up and quickly released a &lt;a href=&quot;http://www.openlinksw.com/dataspace/kidehen@openlinksw.com/weblog/kidehen@openlinksw.com&#39;s%20BLOG%20%5B127%5D/1395&quot; id=&quot;link-id1016d5f0&quot;&gt;CrunchBase Sponger Cartridge&lt;/a&gt;. Can you explain what a CrunchBase Sponger Cartridge is?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id13243300&quot;&gt;Me&lt;/a&gt;: A Sponger Cartridge is a &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt; access driver for &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;Web&lt;/a&gt; Resources that plugs into our &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id17042f08&quot;&gt;Virtuoso&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Virtuoso_Universal_Server&quot; id=&quot;link-id1399b588&quot;&gt;Universal Server&lt;/a&gt; (DBMS and &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id137fd188&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id100b23d8&quot;&gt;Web&lt;/a&gt; Server combo amongst other things). It uses the internal structure of a resource and/or a web service associated with a resource, to materialize an RDF based &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id10418750&quot;&gt;Linked Data graph&lt;/a&gt; that essentially describes the resource via its properties (Attributes &amp;amp; Relationships). &lt;/blockquote&gt; &lt;br /&gt; &lt;img src=&quot;http://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/images/ldp4.png&quot; /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;blockquote&gt; &lt;cite&gt;CrunchBase: And what inspired you to create it?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id12fa60c0&quot;&gt;Me&lt;/a&gt;: Bengee built a new space with your data, and we&amp;#39;ve built a space on the fly from your data which still resides in your domain. Either solution extols the virtues of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id101a8d28&quot;&gt;Linked Data&lt;/a&gt; i.e. the ability to explore relationships across data items with high degrees of serendipity (also colloquially known as: following-your-nose pattern in &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id14a3ff30&quot;&gt;Semantic Web&lt;/a&gt; circles).&lt;/blockquote&gt; &lt;blockquote&gt; &lt;a href=&quot;http://cb.semsol.org/&quot; id=&quot;link-id182a0170&quot;&gt;Bengee&lt;/a&gt; posted a notice to the &lt;a href=&quot;http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData&quot; id=&quot;link-id131e8d10&quot;&gt;Linking Open Data Community&lt;/a&gt;&amp;#39;s public &lt;a href=&quot;http://lists.w3.org/Archives/Public/public-lod/2008Jul/0110.html&quot; id=&quot;link-id11dd0720&quot;&gt;mailing list announcing his effort&lt;/a&gt;. Bearing in mind the fact that we&amp;#39;ve been using &lt;a href=&quot;http://www.openlinksw.com/blog/~kidehen/?id=1144&quot; id=&quot;link-id117cf6e8&quot;&gt;middleware to mesh the realms of Web 2.0 and the Linked Data Web&lt;/a&gt; for a while, it was a no-brainer to knock something up based on the conceptual similarities between &lt;a href=&quot;http://wikicompany.org/wiki/Main_Page&quot; id=&quot;link-id13b87a68&quot;&gt;Wikicompany&lt;/a&gt; and CrunchBase. In a sense, a quadrant of orthogonality is what immediately came to mind re. Wikicompany, CrunchBase, Bengee&amp;#39;s RDFization efforts, and ours.&lt;/blockquote&gt; &lt;blockquote&gt;Bengee created an RDF based &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id133c8fc8&quot;&gt;Linked Data&lt;/a&gt; warehouse based on the data exposed by your API, which is exposed via the &lt;a href=&quot;http://cb.semsol.org/&quot; id=&quot;link-id1826f928&quot;&gt;Semantic CrunchBase&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id102d8890&quot;&gt;data space&lt;/a&gt;. In our case we&amp;#39;ve taken the &amp;quot;RDFization on the fly&amp;quot; approach which produces a transient &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id16a0b8d0&quot;&gt;Linked Data&lt;/a&gt; View of the CrunchBase data exposed by your APIs. Our approach is in line with our world view: all resources on the Web are data sources, and the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id1668e6c8&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id188e7da0&quot;&gt;Web&lt;/a&gt; is about incorporating HTTP into the naming scheme of these data sources so that the conventional &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Locator&quot; id=&quot;link-id13490710&quot;&gt;URL&lt;/a&gt; based hyperlinking mechanism can be used to access a structured description of a resource, which is then transmitted using a range negotiable representation formats. In addition, based on the fact that we house and publish a lot of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id169aa568&quot;&gt;Linked Data&lt;/a&gt; on the Web (e.g. &lt;a href=&quot;http://dbpedia.org/resource/DBpedia&quot; id=&quot;link-id10af10e8&quot;&gt;DBpedia&lt;/a&gt;, &lt;a href=&quot;http://www.pingthesemanticweb.com/about/&quot; id=&quot;link-id10a2b710&quot;&gt;PingTheSemanticWeb&lt;/a&gt;, and others), we&amp;#39;ve also automatically meshed Crunchbase data with related data in &lt;a href=&quot;http://dbpedia.org/resource/DBpedia&quot; id=&quot;link-id1403cd40&quot;&gt;DBpedia&lt;/a&gt; and Wikicompany data.&lt;/blockquote&gt; &lt;br /&gt; &lt;blockquote&gt; &lt;cite&gt;CrunchBase: Do you know of any apps that are using CrunchBase Cartridge to enhance their functionality?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id177d24c8&quot;&gt;Me&lt;/a&gt;: Yes, the &lt;a href=&quot;http://ode.openlinksw.com&quot; id=&quot;link-id10725ca0&quot;&gt;OpenLink Data Explorer&lt;/a&gt; which provides CrunchBase site visitors with the option to explore the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id17dedea8&quot;&gt;Linked Data&lt;/a&gt; in the CrunchBase &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id13f02a00&quot;&gt;data space&lt;/a&gt;. It also allows them to &amp;quot;Mesh&amp;quot; (rather than &amp;quot;Mash&amp;quot;) CrunchBase data with other &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id11fb3ba0&quot;&gt;Linked Data&lt;/a&gt; sources on the Web without writing a single line of code. &lt;/blockquote&gt; &lt;br /&gt; &lt;blockquote&gt; &lt;cite&gt;CrunchBase: You have been immersed in the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id12e18a00&quot;&gt;Semantic Web&lt;/a&gt; movement for a while now. How did you first get interested in the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id15132110&quot;&gt;Semantic Web&lt;/a&gt;?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id0xddaa9c8&quot;&gt;Me&lt;/a&gt;: We saw the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id188b3330&quot;&gt;Semantic Web&lt;/a&gt; as a vehicle for standardizing conceptual views of heterogeneous data sources via &lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id10350978&quot;&gt;context&lt;/a&gt; lenses (URIs). In 1998 as part of our strategy to expand our business beyond the development and deployment of &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id171d6798&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id138120a0&quot;&gt;JDBC&lt;/a&gt;, and OLE-DB data providers, we decided to build a &lt;a href=&quot;http://dbpedia.org/resource/Virtual_Database&quot; id=&quot;link-id13ea6618&quot;&gt;Virtual Database&lt;/a&gt; Engine (see: &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSHistory&quot; id=&quot;link-id11a4fa30&quot;&gt;Virtuoso History&lt;/a&gt;), and in doing so we sought a standards based mechanism for the conceptual output of the &lt;a href=&quot;http://dbpedia.org/resource/Federated_database_system&quot; id=&quot;link-id101a1248&quot;&gt;data virtualization&lt;/a&gt; effort. As of the time of the &lt;a href=&quot;http://www.w3.org/DesignIssues/Semantic.html&quot; id=&quot;link-id18882cf8&quot;&gt;seminal unveiling of the Semantic Web in 1998&lt;/a&gt; we were clear about two things, in relation to the effects of the Web and &lt;a href=&quot;http://dbpedia.org/resource/Internet&quot; id=&quot;link-id12fa2c58&quot;&gt;Internet&lt;/a&gt; data management infrastructure inflections: 1) Existing DBMS technology had reached it limits 2) Web Servers would ultimately hit their functional limits. These fundamental realities compelled us to develop &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id102b09a0&quot;&gt;Virtuoso&lt;/a&gt; with an eye to leveraging the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id11984d98&quot;&gt;Semantic Web&lt;/a&gt; as a vehicle from completing its technical roadmap.&lt;/blockquote&gt; &lt;br /&gt; &lt;blockquote&gt; &lt;cite&gt;CrunchBase: Can you put into laymanâs terms exactly what RDF and &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id1066dcf0&quot;&gt;SPARQL&lt;/a&gt; are and why they are important? Do they only matter for developers or will they extend past developers at some point and be used by website visitors as well?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt;Me: RDF (Resource Description Framework) is a Graph based Data Model that facilitates resource description using the &lt;a href=&quot;http://www.eslincanada.com/englishlesson2.html&quot; id=&quot;link-id178b94a8&quot;&gt;Subject, Predicate, and Object principle&lt;/a&gt;. Associated with the core data model, as part of the overall framework, are a number of markup languages for expressing your descriptions (just as you express presentation markup semantics in HTML or document structure semantics in XML) that include: &lt;a href=&quot;http://dbpedia.org/resource/RDFa&quot; id=&quot;link-id188db0a8&quot;&gt;RDFa&lt;/a&gt; (simple extension of HTML markup for embedding descriptions of things in a page), N3 (a human friendly markup for describing resources), RDF/XML (a machine friendly markup for describing resources).&lt;/blockquote&gt; &lt;blockquote&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id188c2030&quot;&gt;SPARQL&lt;/a&gt; is the query language associated with the RDF Data Model, just as &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id13f0ffe0&quot;&gt;SQL&lt;/a&gt; is a query language associated with the Relational Database Model. Thus, when you have RDF based structured and &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id166874d0&quot;&gt;linked data&lt;/a&gt; on the Web, you can query against Web using &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id1016cc98&quot;&gt;SPARQL&lt;/a&gt; just as you would against an &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id101c9708&quot;&gt;Oracle&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id11cb0b18&quot;&gt;SQL&lt;/a&gt; Server/&lt;a href=&quot;http://dbpedia.org/resource/IBM_DB2&quot; id=&quot;link-id10760ec0&quot;&gt;DB2&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/IBM_Informix&quot; id=&quot;link-id1066c8c0&quot;&gt;Informix&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/Ingres&quot; id=&quot;link-id18894f40&quot;&gt;Ingres&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-iddc9ebb0&quot;&gt;MySQL&lt;/a&gt;/etc.. DBMS using &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id1030d120&quot;&gt;SQL&lt;/a&gt;. That&amp;#39;s it in a nutshell.&lt;/blockquote&gt; &lt;br /&gt; &lt;blockquote&gt; &lt;cite&gt;CrunchBase: On your website you wrote that âRDF and &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id168e9ad0&quot;&gt;SPARQL&lt;/a&gt; as productivity boosters in everyday web developmentâ. Can you elaborate on why you believe that to be true?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt;Me: I think the ability to discern a formal description of anything via its discrete properties is of immense value re. productivity, especially when the capability in question results in a graph of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x179f6328&quot;&gt;Linked Data&lt;/a&gt; that isn&amp;#39;t confined to a specific host operating system, database engine, application or service, programming language, or development framework. RDF &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot;&gt;Linked Data&lt;/a&gt; is about infrastructure for the true materialization of the &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id13e475b8&quot;&gt;Information&lt;/a&gt; at Your Fingertips&amp;quot; vision of yore. Even though it&amp;#39;s taken the emergence of RDF Linked Data to make the aforementioned vision tractable, the comprehension of the vision&amp;#39;s intrinsic value have been clear for a very long time. Most organizations and/or individuals are quite familiar with the adage: &lt;a href=&quot;http://dbpedia.org/resource/Knowledge&quot; id=&quot;link-id13e38a30&quot;&gt;Knowledge&lt;/a&gt; is Power, well there isn&amp;#39;t any &lt;a href=&quot;http://dbpedia.org/resource/Knowledge&quot; id=&quot;link-id188b7348&quot;&gt;knowledge&lt;/a&gt; without accessible &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id140415d0&quot;&gt;Information&lt;/a&gt;, and there isn&amp;#39;t any accessible &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id11a976e8&quot;&gt;Information&lt;/a&gt; without accessible Data. The Web has always be grounded in accessibility to data (albeit via compound container documents called Web Pages).&lt;/blockquote&gt; &lt;blockquote&gt;Bottom line, RDF based Linked Data is about Open &lt;a href=&quot;http://dbpedia.org/resource/Reference_(computer_science)&quot; id=&quot;link-id1206bfb8&quot;&gt;Data access by reference&lt;/a&gt; using URIs (HTTP based &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-idfaa6ce0&quot;&gt;Entity&lt;/a&gt; IDs / Data Object IDs / Data Source Names), and as I said earlier, the intrinsic value is pretty obvious bearing in mind the costs associated with integrating disparate and heterogeneous data sources -- across intranets, extranets, and the &lt;a href=&quot;http://dbpedia.org/resource/Internet&quot; id=&quot;link-id188ecc68&quot;&gt;Internet&lt;/a&gt;.&lt;/blockquote&gt; &lt;br /&gt; &lt;blockquote&gt; &lt;cite&gt;CrunchBase: In his definition of Web 3.0, Nova Spivack proposes that the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id12e2d968&quot;&gt;Semantic Web&lt;/a&gt;, or Semanti&lt;a href=&quot;http://dbpedia.org/resource/C_(programming_language)&quot; id=&quot;link-id105744c0&quot;&gt;c&lt;/a&gt; Web technologies, will be force behind much of the innovation that will occur during Web 3.0. Do you agree with Nova Spivack? What role, if any, do you feel the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id13fa4218&quot;&gt;Semantic Web&lt;/a&gt; will play in Web 3.0?&lt;/cite&gt; &lt;/blockquote&gt; &lt;blockquote&gt;Me: I agree with Nova. But I see Web 3.0 as a phase within the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id188c9000&quot;&gt;Semantic Web&lt;/a&gt; innovation continuum. Web 3.0 exists because Web 2.0 exists. Both of these Web versions express usage and technology focus patterns. Web 2.0 is about the use of Open Source technologies to fashion Web Services that are ultimately used to drive proprietary Software as Service (SaaS) style solutions. Web 3.0 is about the use of &amp;quot;Smart Data Access&amp;quot; to fashion a new generation of Linked Data aware Web Services and solutions that exploit the federated nature of the Web to maximum effect; proprietary branding will simply be conveyed via quality of data (cleanliness, &lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id188d2ef8&quot;&gt;context&lt;/a&gt; fidelity, and comprehension of privacy) exposed by URIs.&lt;/blockquote&gt; &lt;p&gt;Here are some examples of the CrunchBase Linked Data &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id122756f8&quot;&gt;Space&lt;/a&gt;, as projected via our CruncBase Sponger Cartridge:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/rdfbrowser2/?uri=http%3A%2F%2Fwww.crunchbase.com%2Fcompany%2Famazon&quot; id=&quot;link-id13e0fd18&quot;&gt;Amazon.com&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/rdfbrowser2/?uri=http%3A%2F%2Fwww.crunchbase.com%2Fcompany%2Fmicrosoft&quot; id=&quot;link-id13eef9e0&quot;&gt;Microsoft&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/rdfbrowser2/?uri=http%3A%2F%2Fwww.crunchbase.com%2Fcompany%2Fgoogle&quot; id=&quot;link-id13fe47a0&quot;&gt;Google&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/rdfbrowser2/?uri=http%3A%2F%2Fwww.crunchbase.com%2Fcompany%2Fapple&quot; id=&quot;link-id170c73b8&quot;&gt;Apple&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Configuring Virtuoso for Benchmarking</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-08-25#1419</atom:id>
  <atom:published>2008-08-25T14:06:11Z</atom:published>
  <atom:updated>2008-08-25T15:29:06.000036-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;Configuring Virtuoso for Benchmarking&lt;/div&gt; &lt;p&gt;I will here summarize what should be known about running benchmarks with &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xc152cf0&quot;&gt;Virtuoso&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;Physical Memory&lt;/h2&gt; &lt;p&gt;For 8G RAM, in the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; NumberOfBuffers = 550000 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;For 16G RAM, double thisâ&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; NumberOfBuffers = 1100000 &lt;/code&gt; &lt;/blockquote&gt; &lt;h2&gt;Transaction Isolation&lt;/h2&gt; &lt;p&gt;For most cases, certainly all &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0xb7ba270&quot;&gt;RDF&lt;/a&gt; cases, &lt;i&gt;Read Committed&lt;/i&gt; should be the default transaction isolation. In the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; DefaultIsolation = 2 &lt;/code&gt; &lt;/blockquote&gt; &lt;h2&gt;Multiuser Workload&lt;/h2&gt; &lt;p&gt;If &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x1a40f308&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x1e003cf8&quot;&gt;JDBC&lt;/a&gt;, or similarly connected client applications are used, there must be more &lt;code&gt;ServerThreads&lt;/code&gt; available than there will be client connections. In the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; ServerThreads = 100 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;With web clients (unlike ODBC, JDBC, or similar clients), it may be justified to have fewer &lt;code&gt;ServerThreads&lt;/code&gt; than there are concurrent clients. The &lt;code&gt;MaxKeepAlives&lt;/code&gt; should be the maximum number of expected web clients. This can be more than the &lt;code&gt;ServerThreads&lt;/code&gt; count. In the &lt;code&gt;[HTTPServer]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [HTTPServer]&lt;br /&gt; ...&lt;br /&gt; ServerThreads = 100 &lt;br /&gt; MaxKeepAlives = 1000 &lt;br /&gt; KeepAliveTimeout = 10 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt; &lt;i&gt;&lt;b&gt;Note&lt;/b&gt; â The &lt;code&gt;[HTTPServer] ServerThreads&lt;/code&gt; are taken from the total pool made available by the &lt;code&gt;[Parameters] ServerThreads&lt;/code&gt;. Thus, the &lt;code&gt;[Parameters] ServerThreads&lt;/code&gt; should always be at least as large as (and is best set greater than) the &lt;code&gt;[HTTPServer] ServerThreads&lt;/code&gt;, and if using the closed-source Commercial Version, should not exceed the licensed thread count.&lt;/i&gt; &lt;/p&gt; &lt;h2&gt;Disk Use&lt;/h2&gt; &lt;p&gt;The basic rule is to use one stripe (file) per distinct physical device (not per file system), using no RAID. For example, one might stripe a database over 6 files (6 physical disks), with an initial size of 60000 pages (the files will grow as needed). &lt;/p&gt; &lt;p&gt;For the above described example, in the &lt;code&gt;[Database]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Database]&lt;br /&gt; ...&lt;br /&gt; Striping = 1&lt;br /&gt; MaxCheckpointRemap = 2000000 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;â and in the &lt;code&gt;[Striping]&lt;/code&gt; stanza, on one line per &lt;code&gt;SegmentName&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Striping]&lt;br /&gt; ...&lt;br /&gt; Segment1 = 60000 , /virtdev/db/virt-seg1.db = q1 , /data1/db/virt-seg1-str2.db = q2 , /data2/db/virt-seg1-str3.db = q3 , /data3/db/virt-seg1-str4.db = q4 , /data4/db/virt-seg1-str5.db = q5 , /data5/db/virt-seg1-str6.db = q6&lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;As can be seen here, each file gets a background IO thread (the &lt;code&gt;= q&lt;i&gt;xxx&lt;/i&gt;&lt;/code&gt; clause). It should be noted that all files on the same physical device should have the same &lt;code&gt;q&lt;i&gt;xxx&lt;/i&gt;&lt;/code&gt; value. This is not directly relevant to the benchmarking scenario above, because we have only one file per device, and thus only one file per IO queue.&lt;/p&gt; &lt;h2&gt; &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xc8b97c0&quot;&gt;SQL&lt;/a&gt; Optimization&lt;/h2&gt; &lt;p&gt;If queries have lots of joins but access little &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x193b2fa8&quot;&gt;data&lt;/a&gt;, as with the &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id0x1b283ca0&quot;&gt;Berlin SPARQL Benchmark&lt;/a&gt;, the SQL compiler must be told not to look for better plans if the best plan so far is quicker than the compilation time expended so far. Thus, in the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; StopCompilerWhenXOverRunTime = 1 &lt;/code&gt; &lt;/blockquote&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Configuring Virtuoso for Benchmarking</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-08-25#1418</atom:id>
  <atom:published>2008-08-25T14:05:46Z</atom:published>
  <atom:updated>2008-08-25T15:29:04-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;I will here summarize what should be known about running benchmarks with &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xc53af18&quot;&gt;Virtuoso&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;Physical Memory&lt;/h2&gt; &lt;p&gt;For 8G RAM, in the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; NumberOfBuffers = 550000 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;For 16G RAM, double thisâ&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; NumberOfBuffers = 1100000 &lt;/code&gt; &lt;/blockquote&gt; &lt;h2&gt;Transaction Isolation&lt;/h2&gt; &lt;p&gt;For most cases, certainly all &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0xc2f07a0&quot;&gt;RDF&lt;/a&gt; cases, &lt;i&gt;Read Committed&lt;/i&gt; should be the default transaction isolation. In the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; DefaultIsolation = 2 &lt;/code&gt; &lt;/blockquote&gt; &lt;h2&gt;Multiuser Workload&lt;/h2&gt; &lt;p&gt;If &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0xc1c7178&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xd16fb40&quot;&gt;JDBC&lt;/a&gt;, or similarly connected client applications are used, there must be more &lt;code&gt;ServerThreads&lt;/code&gt; available than there will be client connections. In the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; ServerThreads = 100 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;With web clients (unlike ODBC, JDBC, or similar clients), it may be justified to have fewer &lt;code&gt;ServerThreads&lt;/code&gt; than there are concurrent clients. The &lt;code&gt;MaxKeepAlives&lt;/code&gt; should be the maximum number of expected web clients. This can be more than the &lt;code&gt;ServerThreads&lt;/code&gt; count. In the &lt;code&gt;[HTTPServer]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [HTTPServer]&lt;br /&gt; ...&lt;br /&gt; ServerThreads = 100 &lt;br /&gt; MaxKeepAlives = 1000 &lt;br /&gt; KeepAliveTimeout = 10 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt; &lt;i&gt;&lt;b&gt;Note&lt;/b&gt; â The &lt;code&gt;[HTTPServer] ServerThreads&lt;/code&gt; are taken from the total pool made available by the &lt;code&gt;[Parameters] ServerThreads&lt;/code&gt;. Thus, the &lt;code&gt;[Parameters] ServerThreads&lt;/code&gt; should always be at least as large as (and is best set greater than) the &lt;code&gt;[HTTPServer] ServerThreads&lt;/code&gt;, and if using the closed-source Commercial Version, should not exceed the licensed thread count.&lt;/i&gt; &lt;/p&gt; &lt;h2&gt;Disk Use&lt;/h2&gt; &lt;p&gt;The basic rule is to use one stripe (file) per distinct physical device (not per file system), using no RAID. For example, one might stripe a database over 6 files (6 physical disks), with an initial size of 60000 pages (the files will grow as needed). &lt;/p&gt; &lt;p&gt;For the above described example, in the &lt;code&gt;[Database]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Database]&lt;br /&gt; ...&lt;br /&gt; Striping = 1&lt;br /&gt; MaxCheckpointRemap = 2000000 &lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;â and in the &lt;code&gt;[Striping]&lt;/code&gt; stanza, on one line per &lt;code&gt;SegmentName&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Striping]&lt;br /&gt; ...&lt;br /&gt; Segment1 = 60000 , /virtdev/db/virt-seg1.db = q1 , /data1/db/virt-seg1-str2.db = q2 , /data2/db/virt-seg1-str3.db = q3 , /data3/db/virt-seg1-str4.db = q4 , /data4/db/virt-seg1-str5.db = q5 , /data5/db/virt-seg1-str6.db = q6&lt;/code&gt; &lt;/blockquote&gt; &lt;p&gt;As can be seen here, each file gets a background IO thread (the &lt;code&gt;= q&lt;i&gt;xxx&lt;/i&gt;&lt;/code&gt; clause). It should be noted that all files on the same physical device should have the same &lt;code&gt;q&lt;i&gt;xxx&lt;/i&gt;&lt;/code&gt; value. This is not directly relevant to the benchmarking scenario above, because we have only one file per device, and thus only one file per IO queue.&lt;/p&gt; &lt;h2&gt; &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xc9fa298&quot;&gt;SQL&lt;/a&gt; Optimization&lt;/h2&gt; &lt;p&gt;If queries have lots of joins but access little &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xb4e0aa0&quot;&gt;data&lt;/a&gt;, as with the &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id0xb2de990&quot;&gt;Berlin SPARQL Benchmark&lt;/a&gt;, the SQL compiler must be told not to look for better plans if the best plan so far is quicker than the compilation time expended so far. Thus, in the &lt;code&gt;[Parameters]&lt;/code&gt; stanza of &lt;code&gt;virtuoso.ini&lt;/code&gt;, set â&lt;/p&gt; &lt;blockquote&gt; &lt;code&gt; [Parameters]&lt;br /&gt; ...&lt;br /&gt; StopCompilerWhenXOverRunTime = 1 &lt;/code&gt; &lt;/blockquote&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Response to: Whole Data Post (Update 3)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-08-15#1413</atom:id>
  <atom:published>2008-08-15T13:06:12Z</atom:published>
  <atom:updated>2008-08-15T18:31:48-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;This post is in response to &lt;a href=&quot;http://www.furia.com&quot; id=&quot;link-id107907b8&quot;&gt;Glenn McDonald&lt;/a&gt;&amp;#39;s post titled: &lt;a href=&quot;http://www.furia.com/page.cgi?type=log&amp;id=308&quot; id=&quot;link-id13dcf2d0&quot;&gt;Whole Data&lt;/a&gt;, where he highlights a number of issues relating to &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id1016c1f0&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; marketing communications and overall messaging, from his perspective.&lt;/p&gt; &lt;p&gt; By coincidence, Glenn and I presented at this month&amp;#39;s Cambridge &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-idd526f48&quot;&gt;Semantic Web&lt;/a&gt; Gathering.&lt;/p&gt; &lt;p&gt;I&amp;#39;ve provided a dump of Glenn&amp;#39;s issues and my responses below:&lt;/p&gt; &lt;h3&gt;Issue - RDF&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Ingenious &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt; decomposition idea, but: &lt;/li&gt; &lt;li&gt;too low-level; the assembly language of data, where we need Java or &lt;a href=&quot;http://dbpedia.org/resource/Ruby_programming_language&quot; id=&quot;link-id103f3dd0&quot;&gt;Ruby&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&amp;quot;resource&amp;quot; is not the issue; there&amp;#39;s no such thing as &amp;quot;metadata&amp;quot;, it&amp;#39;s all data; &amp;quot;meta&amp;quot; is a perspective &lt;/li&gt; &lt;li&gt;lists need to be effortless, not painful and obscure &lt;/li&gt; &lt;li&gt;nodes need to be represented, not just implied; they need types and literals in a more pervasive, integrated way. &lt;/li&gt; &lt;/ul&gt; &lt;h4&gt;Response:&lt;/h4&gt; &lt;p&gt;RDF is a Graph based Data Model it stands for Resource Description Framework. The Metadata data angle comes from it&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/Meta_Content_Framework&quot; id=&quot;link-id1690df60&quot;&gt;Meta Content Framework (MCF)&lt;/a&gt; origins. You can express and serialize data based on the RDF Data Model using: Turtle, N3, TriX, N-Triples, and RDF/XML.&lt;/p&gt; &lt;h3&gt;Issue - &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id10234b38&quot;&gt;SPARQL&lt;/a&gt; (and Freebase&amp;#39;s MQL)&lt;/h3&gt; &lt;p&gt;These are just appeasement: &lt;br /&gt;- old query paradigm: fishing in dark water with superstitiously tied lures; only works well in carefully stocked lakes &lt;br /&gt;- we don&amp;#39;t ask questions by defining answer shapes and then hoping they&amp;#39;re dredged up whole.&lt;/p&gt; &lt;h4&gt;Response:&lt;/h4&gt; &lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id16e45e50&quot;&gt;SPARQL&lt;/a&gt;, &lt;a href=&quot;http://www.freebase.com/view/freebase/api&quot; id=&quot;link-id13e7d468&quot;&gt;MQL&lt;/a&gt;, and &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb387145.aspx&quot; id=&quot;link-id1516fbd8&quot;&gt;Entity-SQL&lt;/a&gt; are Graph Model oriented Query Languages. Query Languages always accompany Database Engines. &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id13f8c100&quot;&gt;SQL&lt;/a&gt; is the Relational Model equivalent. &lt;/p&gt; &lt;h3&gt;Issue - &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id171dee68&quot;&gt;Linked Data&lt;/a&gt; &lt;/h3&gt; &lt;p&gt;Noble attempt to ground the abstract, but: &lt;br /&gt;- &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id1576d5f8&quot;&gt;URI&lt;/a&gt; dereferencing/namespace/&lt;a href=&quot;http://dbpedia.org/resource/Open_world_assumption&quot; id=&quot;link-id15f50180&quot;&gt;open-world&lt;/a&gt; issues focus too much technical attention on cross-source cases where the human issues dwarf the technical ones anyway &lt;br /&gt;- &lt;a href=&quot;http://dbpedia.org/resource/Friend_of_a_friend&quot; id=&quot;link-id105df458&quot;&gt;FOAF&lt;/a&gt; query over the people in this room? forget it. &lt;br /&gt;- link asymmetry doesn&amp;#39;t scale &lt;br /&gt;- identity doesn&amp;#39;t scale &lt;br /&gt;- generating RDF from non-graph sources: more appeasement, right where the win from actually converting could be biggest! &lt;/p&gt; &lt;h4&gt;Response:&lt;/h4&gt; &lt;p&gt;Innovative use of HTTP to deliver &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Reference_%28computer_science%29&quot; id=&quot;link-id13eeab20&quot;&gt;Data Access by Reference&lt;/a&gt;&amp;quot; to the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id13492610&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id105dfc10&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;When you have a Data Model, Database Engine, and Query Language, the next thing you need is a Data Access mechanism that provides &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Reference_(computer_science)&quot; id=&quot;link-id100ef2c0&quot;&gt;Data Access by Reference&lt;/a&gt;&amp;quot;. &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id16692e88&quot;&gt;ODBC&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id1699b970&quot;&gt;JDBC&lt;/a&gt; (amongst others) provide &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Reference_(computer_science)&quot; id=&quot;link-id16034b48&quot;&gt;Data Access by Reference&lt;/a&gt;&amp;quot; via Data Source Names. &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id16690118&quot;&gt;Linked Data&lt;/a&gt; is about the same thing (URIs are Data Source Names) with the following differences:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Naming is scoped to the &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id1195dc48&quot;&gt;entity&lt;/a&gt; level rather than container level&lt;/li&gt; &lt;li&gt;HTTP&amp;#39;s use within the data source naming scheme expands the referencability of the Named &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id10485760&quot;&gt;Entity&lt;/a&gt; Descriptions beyond traditional confines such as applications, operating systems, and database engines. &lt;/li&gt; &lt;/ul&gt; &lt;h3&gt; Issue - &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id104684d0&quot;&gt;Giant Global Graph&lt;/a&gt; &lt;/h3&gt; &lt;p&gt;Hugely motivating and powerful idea, worthy of a superhero (Graphius!), but: &lt;br /&gt;- giant and global parts are too hard, and starting global makes every problem harder &lt;br /&gt;- local projects become unmanageable in global &lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id12497088&quot;&gt;context&lt;/a&gt; (Cyc, Freebase data-modeling lists...). And my thus my plea, again. Forget &amp;quot;semantic&amp;quot; and &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;web&lt;/a&gt;&amp;quot;, let&amp;#39;s fix the database tech first: &lt;br /&gt;- node/arc data-model, path-based exploratory query-model &lt;br /&gt;- data-graph applications built easily on top of this common model; building them has to be easy, because if it&amp;#39;s hard, they&amp;#39;ll be bad &lt;br /&gt;- given good database tech, good web data-publishing tech will be trivial! &lt;br /&gt;- given good tools for graphs, the problems of uniting them will be only as hard as they have to be.&lt;/p&gt; &lt;h4&gt;Response:&lt;/h4&gt; &lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id144466d8&quot;&gt;Giant Global Graph&lt;/a&gt; is just another moniker for a &amp;quot;Web of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id15c2c738&quot;&gt;Linked Data&lt;/a&gt;&amp;quot; or &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id14e73520&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id10aef200&quot;&gt;Web&lt;/a&gt;&amp;quot;.&lt;/p&gt; &lt;p&gt;Multi-Model Database technology that meshes the best of the Graph &amp;amp; Relational Models exist. In a nutshell, this is what &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id13492e10&quot;&gt;Virtuoso&lt;/a&gt; is all about and it&amp;#39;s existed for a very long time :-)&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id105a4f58&quot;&gt;Virtuoso&lt;/a&gt; is also a Virtual DBMS engine (so you can see Heterogeneous Relational Data via Graph Model &lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id15845110&quot;&gt;Context&lt;/a&gt; Lenses). Naturally, it is also a &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id109e2c78&quot;&gt;Linked Data&lt;/a&gt; Deployment platform (or &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id1086d650&quot;&gt;Linked Data&lt;/a&gt; Sever). &lt;/p&gt; &lt;p&gt;The issue isn&amp;#39;t the &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id107f1ba8&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; moniker per se., it&amp;#39;s about how &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0xba72818&quot;&gt;Linked Data&lt;/a&gt; (foundation layer of &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id101dbf50&quot;&gt;Semantic Web&lt;/a&gt;) gets introduced to users. As I said during the MIT Gathering: &amp;quot;The Web is experienced via Web Browsers primarily, so any enhancement to the Web must be exposed via traditional Web Browsers&amp;quot;, which is why we&amp;#39;ve opted to simply add &amp;quot;View &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot;&gt;Linked Data&lt;/a&gt; Sources&amp;quot; to the existing set of common Browser options that includes:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;View page in rendered form (default)&lt;/li&gt; &lt;li&gt;View page source (i.e., how you see the markup behind the page)&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;By exposing the Linked Data &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id15a04b70&quot;&gt;Web&lt;/a&gt; option as described above, you enable the Web user to knowingly transition from the traditional Rendered (X)HTML page view to the Linked Data View (i.e., structured data behind the page). This simple &amp;quot;User Interaction&amp;quot; tweak makes the notion of exploiting a Structured Web becomes somewhat clearer.&lt;/p&gt; &lt;p&gt;The Linked Data &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id10a187d0&quot;&gt;Web&lt;/a&gt; isn&amp;#39;t a panacea. It&amp;#39;s just an addition to the existing Web that enrichens the things you can do with the Web. It&amp;#39;s predominance, like any application feature, will be subject to the degrees to which it delivers tangible value or matrializes internal and external opportunity costs.&lt;/p&gt; &lt;p&gt;Note: The Web isn&amp;#39;t ubiquitous today becuase all it&amp;#39;s users groked HTML Markup. It&amp;#39;s ubquitity is a function of opportunity costs: there simply came a point in the Web boostrap when nobody could afford the opportunity costs associated with being off the Web. The same thing will play out with Linked Data and the broader &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id10a97330&quot;&gt;Semantic Web&lt;/a&gt; vision.&lt;/p&gt; &lt;b&gt;Links:&lt;/b&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/Creating_Deploying_Exploiting_Linked_Data2_TimBL_v3.html(15)&quot; id=&quot;link-id137fc560&quot;&gt;Linked Data Journey part of my Linked Data Planet Presentation Remix&lt;/a&gt;(from slides 15 to 22 - which include bits from &lt;a href=&quot;http://www.w3.org/People/Berners-Lee/card#i&quot; id=&quot;link-id1048a968&quot;&gt;TimBL&lt;/a&gt;&amp;#39;s presentation)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://ode.openlinksw.com&quot; id=&quot;link-id1667df98&quot;&gt;OpenLink Data Explorer&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://ode.openlinksw.com/example.html&quot; id=&quot;link-id137ee860&quot;&gt;OpenLink Data Explorer Screenshots and examples&lt;/a&gt;.&lt;/li&gt; &lt;/ol&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>BSBM With Triples and Mapped Relational Data</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-08-06#1410</atom:id>
  <atom:published>2008-08-06T19:41:50Z</atom:published>
  <atom:updated>2008-08-06T16:29:44.000003-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;BSBM With Triples and Mapped Relational Data&lt;/div&gt; &lt;p&gt;The special contribution of the &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id10039db0&quot;&gt;Berlin SPARQL Benchmark&lt;/a&gt; (&lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id106b2538&quot;&gt;BSBM&lt;/a&gt;) to the &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id101a75f8&quot;&gt;RDF&lt;/a&gt; world is to raise the question of doing OLTP with &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0xae54170&quot;&gt;RDF&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Of course, here we immediately hit the question of comparisons with relational databases. To this effect, &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id0x1e847b08&quot;&gt;BSBM&lt;/a&gt; also specifies a relational schema and can generate the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id1206c378&quot;&gt;data&lt;/a&gt; as either triples or &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id1667f040&quot;&gt;SQL&lt;/a&gt; inserts.&lt;/p&gt; &lt;p&gt;The benchmark effectively simulates the case of exposing an existing &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id10a93518&quot;&gt;RDBMS&lt;/a&gt; as RDF. &lt;a href=&quot;http://www.openlinksw.com/dataspace/organization/openlink#this&quot; id=&quot;link-id13e46d80&quot;&gt;OpenLink Software&lt;/a&gt; calls this &lt;i&gt;RDF Views&lt;/i&gt;. &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id12027578&quot;&gt;Oracle&lt;/a&gt; is beginning to call this &lt;i&gt;semantic covers&lt;/i&gt;. The &lt;a href=&quot;http://www.w3.org/2005/Incubator/rdb2rdf/&quot; id=&quot;link-id161dc678&quot;&gt;RDB2RDF XG&lt;/a&gt;, a W3C incubator group, has been active in this area since Spring, 2008.&lt;/p&gt; &lt;h3&gt;But why an OLTP workload with RDF to begin with?&lt;/h3&gt; &lt;p&gt;We believe this is relevant because RDF promises to be the interoperability factor between potentially all of traditional IS. If &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x1e7119d8&quot;&gt;data&lt;/a&gt; is online for human consumption, it may be online via a &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id106a8908&quot;&gt;SPARQL&lt;/a&gt; end-point as well. The economic justification will come from discoverability and from applications integrating multi-source structured data. Online shopping is a fine use case.&lt;/p&gt; &lt;p&gt;Warehousing all the world&amp;#39;s publishable data as RDF is not our first preference, nor would it be the publisher&amp;#39;s. Considerations of duplicate infrastructure and maintenance are reason enough. Consequently, we need to show that mapping can outperform an RDF warehouse, which is what we&amp;#39;ll do here.&lt;/p&gt; &lt;h3&gt;What We Got &lt;/h3&gt; &lt;p&gt;First, we found that &lt;a href=&quot;http://www.openlinksw.com/dataspace/oerling/weblog/Orri%20Erling%27s%20Blog/1400&quot; id=&quot;link-id150ea748&quot;&gt;making the query plan took much too long&lt;/a&gt; in proportion to the run time. With BSBM this is an issue because the queries have lots of joins but access relatively little data. So we made a faster compiler and along the way retouched the cost model a bit.&lt;/p&gt; &lt;p&gt;But the really interesting part with BSBM is mapping relational data to RDF. For us, BSBM is a great way of showing that mapping can outperform even the best triple store. A relational row store is as good as unbeatable with the query mix. And when there is a clear mapping, there is no reason the &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0xae5aff0&quot;&gt;SPARQL&lt;/a&gt; could not be directly translated.&lt;/p&gt; &lt;p&gt;If Chris Bizer et al launched the mapping ship, we will be the ones to pilot it to harbor!&lt;/p&gt; &lt;p&gt;We filled two &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id12dbdc70&quot;&gt;Virtuoso&lt;/a&gt; instances with a BSBM200000 data set, for 100M triples. One was filled with physical triples; the other was filled with the equivalent relational data plus mapping to triples. Performance figures are given in &amp;quot;query mixes per hour&amp;quot;. (An update or follow-on to this post will provide elapsed times for each test run.)&lt;/p&gt; &lt;p&gt;With the unmodified benchmark we got:&lt;/p&gt; &lt;blockquote&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Physical Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt;1297 qmph&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Mapped Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt;&lt;b&gt;3144 qmph&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;In both cases, most of the time was spent on Q6, which looks for products with one of three words in the label. We altered Q6 to use text index for the mapping, and altered the databases accordingly. (There is no such thing as an e-commerce site without a text index, so we are amply justified in making this change.)&lt;/p&gt; &lt;p&gt;The following were measured on the second run of a 100 query mix series, single test driver, warm cache.&lt;/p&gt; &lt;blockquote&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Physical Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; 5746 qmph&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Mapped Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; &lt;b&gt;7525 qmph&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;We then ran the same with 4 concurrent instances of the test driver. The qmph here is 400 / the longest run time.&lt;/p&gt; &lt;blockquote&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Physical Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; 19459 qmph&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Mapped Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; &lt;b&gt;24531 qmph&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;The system used was 64-bit Linux, 2GHz dual-Xeon 5130 (8 cores) with 8G RAM. The concurrent throughputs are a little under 4 times the single thread throughput, which is normal for SMP due to memory contention. The numbers do not evidence significant overhead from thread synchronization.&lt;/p&gt; &lt;p&gt;The query compilation represents about 1/3 of total server side CPU. In an actual online application of this type, queries would be parameterized, so the throughputs would be accordingly higher. We used the &lt;code&gt;StopCompilerWhenXOverRunTime = 1&lt;/code&gt; option here to cut needless compiler overhead, the queries being straightforward enough.&lt;/p&gt; &lt;p&gt;We also see that the advantage of mapping can be further increased by more compiler optimizations, so we expect in the end mapping will lead RDF warehousing by a factor of 4 or so.&lt;/p&gt; &lt;h3&gt;Suggestions for BSBM&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Reporting Rules.&lt;/b&gt; The benchmark spec should specify a form for disclosure of test run data, TPC style. This includes things like configuration parameters and exact text of queries. There should be accepted variants of query text, as with the TPC.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Multiuser operation.&lt;/b&gt; The test driver should get a stream number as parameter, so that each client makes a different query sequence. Also, disk performance in this type of benchmark can only be reasonably assessed with a naturally parallel multiuser workload.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Add business intelligence.&lt;/b&gt; SPARQL has aggregates now, at least with &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id11a25ac0&quot;&gt;Jena&lt;/a&gt; and &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xb003180&quot;&gt;Virtuoso&lt;/a&gt;, so let&amp;#39;s use these. The BSBM business intelligence metric should be a separate metric off the same data. Adding synthetic sales figures would make more interesting queries possible. For example, producing recommendations like &amp;quot;customers who bought this also bought xxx.&amp;quot;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;For the SPARQL community&lt;/b&gt;, BSBM sends the message that one ought to support parameterized queries and stored procedures. This would be a &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-protocol/&quot; id=&quot;link-id109e2448&quot;&gt;SPARQL protocol&lt;/a&gt; extension; the SPARUL syntax should also have a way of calling a procedure. Something like &lt;code&gt;select proc (??, ??)&lt;/code&gt; would be enough, where &lt;code&gt;??&lt;/code&gt; is a parameter marker, like &lt;code&gt;?&lt;/code&gt; in &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id13febf48&quot;&gt;ODBC&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id120416a8&quot;&gt;JDBC&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Add transactions.&lt;/b&gt;Especially if we are contrasting mapping vs. storing triples, having an update flow is relevant. In practice, this could be done by having the test driver send web service requests for order entry and the SUT could implement these as updates to the triples or a mapped relational store. This could use stored procedures or logic in an app server.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h3&gt;Comments on Query Mix&lt;/h3&gt; &lt;p&gt;The time of most queries is less than linear to the scale factor. Q6 is an exception if it is not implemented using a text index. Without the text index, Q6 will inevitably come to dominate query time as the scale is increased, and thus will make the benchmark less relevant at larger scales.&lt;/p&gt; &lt;h2&gt;Next&lt;/h2&gt; &lt;p&gt;We include the sources of our RDF view definitions and other material for running BSBM with our forthcoming Virtuoso Open Source 5.0.8 release. This also includes all the query optimization work done for BSBM. This will be available in the coming days.&lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>BSBM With Triples and Mapped Relational Data</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-08-06#1409</atom:id>
  <atom:published>2008-08-06T19:35:27Z</atom:published>
  <atom:updated>2008-08-06T16:29:40-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;The special contribution of the &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id10039db0&quot;&gt;Berlin SPARQL Benchmark&lt;/a&gt; (&lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id106b2538&quot;&gt;BSBM&lt;/a&gt;) to the &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id101a75f8&quot;&gt;RDF&lt;/a&gt; world is to raise the question of doing OLTP with &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0xb230eb0&quot;&gt;RDF&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Of course, here we immediately hit the question of comparisons with relational databases. To this effect, &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/spec/index.html&quot; id=&quot;link-id0xa832da8&quot;&gt;BSBM&lt;/a&gt; also specifies a relational schema and can generate the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id1206c378&quot;&gt;data&lt;/a&gt; as either triples or &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id1667f040&quot;&gt;SQL&lt;/a&gt; inserts.&lt;/p&gt; &lt;p&gt;The benchmark effectively simulates the case of exposing an existing &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id10a93518&quot;&gt;RDBMS&lt;/a&gt; as RDF. &lt;a href=&quot;http://www.openlinksw.com/dataspace/organization/openlink#this&quot; id=&quot;link-id13e46d80&quot;&gt;OpenLink Software&lt;/a&gt; calls this &lt;i&gt;RDF Views&lt;/i&gt;. &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id12027578&quot;&gt;Oracle&lt;/a&gt; is beginning to call this &lt;i&gt;semantic covers&lt;/i&gt;. The &lt;a href=&quot;http://www.w3.org/2005/Incubator/rdb2rdf/&quot; id=&quot;link-id161dc678&quot;&gt;RDB2RDF XG&lt;/a&gt;, a W3C incubator group, has been active in this area since Spring, 2008.&lt;/p&gt; &lt;h3&gt;But why an OLTP workload with RDF to begin with?&lt;/h3&gt; &lt;p&gt;We believe this is relevant because RDF promises to be the interoperability factor between potentially all of traditional IS. If &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xabe48a0&quot;&gt;data&lt;/a&gt; is online for human consumption, it may be online via a &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id106a8908&quot;&gt;SPARQL&lt;/a&gt; end-point as well. The economic justification will come from discoverability and from applications integrating multi-source structured data. Online shopping is a fine use case.&lt;/p&gt; &lt;p&gt;Warehousing all the world&amp;#39;s publishable data as RDF is not our first preference, nor would it be the publisher&amp;#39;s. Considerations of duplicate infrastructure and maintenance are reason enough. Consequently, we need to show that mapping can outperform an RDF warehouse, which is what we&amp;#39;ll do here.&lt;/p&gt; &lt;h3&gt;What We Got &lt;/h3&gt; &lt;p&gt;First, we found that &lt;a href=&quot;http://www.openlinksw.com/dataspace/oerling/weblog/Orri%20Erling%27s%20Blog/1400&quot; id=&quot;link-id150ea748&quot;&gt;making the query plan took much too long&lt;/a&gt; in proportion to the run time. With BSBM this is an issue because the queries have lots of joins but access relatively little data. So we made a faster compiler and along the way retouched the cost model a bit.&lt;/p&gt; &lt;p&gt;But the really interesting part with BSBM is mapping relational data to RDF. For us, BSBM is a great way of showing that mapping can outperform even the best triple store. A relational row store is as good as unbeatable with the query mix. And when there is a clear mapping, there is no reason the &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x96bb5e0&quot;&gt;SPARQL&lt;/a&gt; could not be directly translated.&lt;/p&gt; &lt;p&gt;If Chris Bizer et al launched the mapping ship, we will be the ones to pilot it to harbor!&lt;/p&gt; &lt;p&gt;We filled two &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id12dbdc70&quot;&gt;Virtuoso&lt;/a&gt; instances with a BSBM200000 data set, for 100M triples. One was filled with physical triples; the other was filled with the equivalent relational data plus mapping to triples. Performance figures are given in &amp;quot;query mixes per hour&amp;quot;. (An update or follow-on to this post will provide elapsed times for each test run.)&lt;/p&gt; &lt;p&gt;With the unmodified benchmark we got:&lt;/p&gt; &lt;blockquote&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Physical Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt;1297 qmph&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Mapped Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt;&lt;b&gt;3144 qmph&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;In both cases, most of the time was spent on Q6, which looks for products with one of three words in the label. We altered Q6 to use text index for the mapping, and altered the databases accordingly. (There is no such thing as an e-commerce site without a text index, so we are amply justified in making this change.)&lt;/p&gt; &lt;p&gt;The following were measured on the second run of a 100 query mix series, single test driver, warm cache.&lt;/p&gt; &lt;blockquote&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Physical Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; 5746 qmph&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Mapped Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; &lt;b&gt;7525 qmph&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;We then ran the same with 4 concurrent instances of the test driver. The qmph here is 400 / the longest run time.&lt;/p&gt; &lt;blockquote&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Physical Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; 19459 qmph&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Mapped Triples:&lt;/i&gt; &lt;/td&gt; &lt;td&gt;Â  Â &lt;/td&gt; &lt;td&gt; &lt;b&gt;24531 qmph&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/blockquote&gt; &lt;p&gt;The system used was 64-bit Linux, 2GHz dual-Xeon 5130 (8 cores) with 8G RAM. The concurrent throughputs are a little under 4 times the single thread throughput, which is normal for SMP due to memory contention. The numbers do not evidence significant overhead from thread synchronization.&lt;/p&gt; &lt;p&gt;The query compilation represents about 1/3 of total server side CPU. In an actual online application of this type, queries would be parameterized, so the throughputs would be accordingly higher. We used the &lt;code&gt;StopCompilerWhenXOverRunTime = 1&lt;/code&gt; option here to cut needless compiler overhead, the queries being straightforward enough.&lt;/p&gt; &lt;p&gt;We also see that the advantage of mapping can be further increased by more compiler optimizations, so we expect in the end mapping will lead RDF warehousing by a factor of 4 or so.&lt;/p&gt; &lt;h3&gt;Suggestions for BSBM&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Reporting Rules.&lt;/b&gt; The benchmark spec should specify a form for disclosure of test run data, TPC style. This includes things like configuration parameters and exact text of queries. There should be accepted variants of query text, as with the TPC.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Multiuser operation.&lt;/b&gt; The test driver should get a stream number as parameter, so that each client makes a different query sequence. Also, disk performance in this type of benchmark can only be reasonably assessed with a naturally parallel multiuser workload.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Add business intelligence.&lt;/b&gt; SPARQL has aggregates now, at least with &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id11a25ac0&quot;&gt;Jena&lt;/a&gt; and &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xa83f490&quot;&gt;Virtuoso&lt;/a&gt;, so let&amp;#39;s use these. The BSBM business intelligence metric should be a separate metric off the same data. Adding synthetic sales figures would make more interesting queries possible. For example, producing recommendations like &amp;quot;customers who bought this also bought xxx.&amp;quot;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;For the SPARQL community&lt;/b&gt;, BSBM sends the message that one ought to support parameterized queries and stored procedures. This would be a &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-protocol/&quot; id=&quot;link-id109e2448&quot;&gt;SPARQL protocol&lt;/a&gt; extension; the SPARUL syntax should also have a way of calling a procedure. Something like &lt;code&gt;select proc (??, ??)&lt;/code&gt; would be enough, where &lt;code&gt;??&lt;/code&gt; is a parameter marker, like &lt;code&gt;?&lt;/code&gt; in &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id13febf48&quot;&gt;ODBC&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id120416a8&quot;&gt;JDBC&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;b&gt;Add transactions.&lt;/b&gt;Especially if we are contrasting mapping vs. storing triples, having an update flow is relevant. In practice, this could be done by having the test driver send web service requests for order entry and the SUT could implement these as updates to the triples or a mapped relational store. This could use stored procedures or logic in an app server.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h3&gt;Comments on Query Mix&lt;/h3&gt; &lt;p&gt;The time of most queries is less than linear to the scale factor. Q6 is an exception if it is not implemented using a text index. Without the text index, Q6 will inevitably come to dominate query time as the scale is increased, and thus will make the benchmark less relevant at larger scales.&lt;/p&gt; &lt;h2&gt;Next&lt;/h2&gt; &lt;p&gt;We include the sources of our RDF view definitions and other material for running BSBM with our forthcoming Virtuoso Open Source 5.0.8 release. This also includes all the query optimization work done for BSBM. This will be available in the coming days.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>CrunchBase gets hooked up with the Linked Data Web!</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-07-25#1395</atom:id>
  <atom:published>2008-07-25T14:01:01Z</atom:published>
  <atom:updated>2008-07-29T21:43:27-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;It&amp;#39;s getting really hot in &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id15eea8f8&quot;&gt;Linked Data&lt;/a&gt; land! Two days agoÂ &lt;a href=&quot;http://bnode.org/about&quot; id=&quot;link-id107e2f70&quot;&gt;Benjamin Nowack&lt;/a&gt;Â pinged the &lt;a href=&quot;http://community.linkeddata.org/dataspace/organization/lod#this&quot; id=&quot;link-id11b93670&quot;&gt;LOD&lt;/a&gt; community about hisÂ &lt;a href=&quot;http://lists.w3.org/Archives/Public/public-lod/2008Jul/0110.html&quot; id=&quot;link-id1022a270&quot;&gt;RDFization of Crunchbase&lt;/a&gt;Â (sample (X)HTML view: http://cb.semsol.org/company/opera-software) courtesy of Crounchbase releasing an API. As you know, I&amp;#39;ve always equated &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;Web&lt;/a&gt; Service API to Database CLIs (&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id16327528&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id1027f410&quot;&gt;JDBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id10683850&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id13beb9b8&quot;&gt;NET&lt;/a&gt; etc.) as both offer code level hooks into &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;Data&lt;/a&gt; Spaces.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Naturally, we&amp;#39;ve decided to join the Crunchbase RDFization party, and have just completed a &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id10282208&quot;&gt;Virtuoso&lt;/a&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html&quot; id=&quot;link-id10acf0f8&quot;&gt;Sponger&lt;/a&gt; Cartridge (an RDFizer) for Crouncbase. What we add in our particular cartridge is additional meshing with &lt;a href=&quot;http://dbpedia.org/resource/DBpedia&quot; id=&quot;link-id115e2a98&quot;&gt;DBpedia&lt;/a&gt; and Wikicompany &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id132f0568&quot;&gt;Linked Data&lt;/a&gt; Spaces, plus RDFizaton of the Crunchbase (X)HTML pages :-)&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;As I&amp;#39;ve postulated for a while, &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id13304010&quot;&gt;Linked Data&lt;/a&gt; is about data &amp;quot;Meshing&amp;quot; and &amp;quot;Meshups&amp;quot;. This isn&amp;#39;t a buzzword play. I am pointing out an important distinction between &amp;quot;Mashups&amp;quot; and &amp;quot;Meshpus&amp;quot;. Which goes as follows: &amp;quot;Mashups&amp;quot; are about code level joining devoid of structured modelling, hence the revelation of code as opposed to data when you look behind a &amp;quot;Mashup&amp;quot;. &amp;quot;Meshups&amp;quot; on the other hand, are about joining disparate structured data sources across the Web. And when you look behind a &amp;quot;Meshup&amp;quot; you see structured data (preferably &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id143bdb68&quot;&gt;Linked Data&lt;/a&gt;) that enables further &amp;quot;Meshing&amp;quot;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;I truly believe that we are now inches away from critical mass re. &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id14829640&quot;&gt;Linked Data&lt;/a&gt;, and because we are dealing with data, the network-effect will be sky-high! I shudder to think about the state of the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x1c41d150&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id133364e8&quot;&gt;Web&lt;/a&gt; in 12 months time. Yes, I am giving the explosion 12 months (or less). These are very exciting times.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Demo Links:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/ode/?uri%5B%5D=http%3A%2F%2Fcb.semsol.org%2Fcompany%2Fopera-software&amp;amp;&quot; id=&quot;link-id12fe1dc8&quot;&gt;Opera Software via Benjee&amp;#39;s Linked Data Space for Cunchbase&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/ode/?uri=http%3A%2F%2Fwww.crunchbase.com%2Fcompany%2Fopera-software&quot; id=&quot;link-id10739a18&quot;&gt;Opera Software via our Linked Data Space for Crunchbas&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;For best experience I encourage you to look at theÂ &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/8062&quot; id=&quot;link-id1499a0f8&quot;&gt;OpenLink Data Explorer extension&lt;/a&gt;Â for Firefox (2.x - 3.x). This enables you to go to Crunchbase (X)HTML pages (and other sites on the Web of course), and then simply use the &amp;quot;View | &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot;&gt;Linked Data&lt;/a&gt; Sources&amp;quot; main or &lt;a href=&quot;http://dbpedia.org/resource/Context_%28language_use%29&quot; id=&quot;link-id10051b50&quot;&gt;context&lt;/a&gt; menu sequence to unveil the Linked Data Sources associated with any Web Page.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Of course there is much more to come!&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Response to: Where&#39;s the Killer Semantic Web Application (Update #2)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-06-26#1391</atom:id>
  <atom:published>2008-06-26T18:28:14Z</atom:published>
  <atom:updated>2008-07-19T15:50:46-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;As is often the case these days, it&amp;#39;s much easier to drop a &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id13519b98&quot;&gt;blog&lt;/a&gt; post than it is to make a simple comment in an &amp;quot;old media&amp;quot; style&lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id134e92c8&quot;&gt; data space &lt;/a&gt;:-(&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt; &lt;cite&gt;My use of &amp;quot;old media&amp;quot; implies: a place that still seeks subscriber data (no OpenID etc..), for the umpteenth time, as the toll fee for discourse development and participation on the Web.&lt;/cite&gt; &lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Anyway, here is what I attempted to post as a comment to Dan Grigorovici&amp;#39;s post titled: &lt;a href=&quot;http://www.semanticweb.com/article.php/12160_3753806_2&quot; id=&quot;link-id134dfb80&quot;&gt;Where is the Semantic Web Killer App?&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Dan,&lt;/p&gt; &lt;p&gt;An intriguing post to say the least :-) &lt;/p&gt; &lt;p&gt;&amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id134265c0&quot;&gt;Linked Data&lt;/a&gt;&amp;quot; and &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id133d7048&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; aren&amp;#39;t synonymous, they are simply connected, infrastructure DNA-wise. You can have &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id1096cb70&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; style graphs (i.e RDF Data) and not have &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id133f0f48&quot;&gt;Linked Data&lt;/a&gt;&amp;quot; as per &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id134fc7c0&quot;&gt;Linked Data&lt;/a&gt; deployment tenets and best practices, a very important point.&lt;/p&gt; &lt;p&gt;I&amp;#39;ve stated repeatedly, the &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id134f03e8&quot;&gt;Linked Data&lt;/a&gt;&amp;quot; emphasis has more to do with focusing on a point of crystallization within the larger &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id134104f0&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; vision, so here is a quick recap:&lt;/p&gt; &lt;h3&gt;What is &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id133decd0&quot;&gt;Linked Data&lt;/a&gt;?&lt;/h3&gt; &lt;p&gt;A term coined by &lt;a href=&quot;http://www.w3.org/People/Berners-Lee/card#i&quot; id=&quot;link-id1340dd28&quot;&gt;TimBL&lt;/a&gt; that describes an application of HTTP to the time-tested process of &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Reference_(computer_science)&quot;&gt;Data Access by Reference&lt;/a&gt;&amp;quot;. &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10695c20&quot;&gt;Linked Data&lt;/a&gt;&amp;quot; adds vital items to the &amp;quot;Data Access by Reference&amp;quot; pattern that have been erstwhile unattainable:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; The use of a Data Source Naming scoped to Database / Data Container Records as opposed to Tables, Views, Stored Procedures, Databases, and other Record Container tuple collections. Example: in &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-idd9c8af8&quot;&gt;ODBC&lt;/a&gt; / &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id130b0df0&quot;&gt;JDBC&lt;/a&gt;, a Data Source Name&amp;#39;s scope stops at the Table / View level. In the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot;&gt;Linked Data&lt;/a&gt; realm you get an added layer of granularity due to record level name scope&lt;/li&gt; &lt;li&gt;Incorporation of HTTP into the Data Source Naming scheme, which injects the expanse of the Web into the Data Access Range of the Data Source Name (i.e. a Named Record); so you can reference a record&amp;#39;s description directly via HTTP which is simply a major deal (to put things mildly).&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;So we have HTTP based URIs as the Data Sources Names for a &amp;quot;Linked Data &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id1044a2d8&quot;&gt;Web&lt;/a&gt;&amp;quot; i.e a Web of inter-connected Data Source Names that de-emphasize the importance of their host containers (Compound Documents / &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id134e0d38&quot;&gt;Information&lt;/a&gt; Resources).&lt;/p&gt; &lt;p&gt;The business case or value proposition of &amp;quot;Linked Data&amp;quot; is synonymous with the value proposition of data access technologies such as &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id13400500&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id134f0250&quot;&gt;JDBC&lt;/a&gt;. &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id10923840&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id134ef878&quot;&gt;NET&lt;/a&gt;, OLE-DB, XMLA, and others (enterprise or consumer) in relation to the Individual and Enterprise pursuit of agility; in a realm where data is growing exponentially, and the maximum processing time in a single day remains 24 hrs. Data Access &amp;amp; Data Integration are timeless challenges due to the following constants:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; Structured Data Schema Heterogeneity - we will always model the same things differently&lt;/li&gt; &lt;li&gt;Dirtiness of Data within Structured Data Containers - we are error prone due to laziness / sloppiness, time constraints, and the inherent limitation of our DNA based CPUs when dealing with large volumes of data.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt; Note: The line between the Enterprise &amp;amp; Individuals continue to blur by the second, this is something I covered during my &lt;a href=&quot;http://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/Creating_Deploying_Exploiting_Linked_Data2.html&quot; id=&quot;link-id13479488&quot;&gt;Linked Data Planet keynote&lt;/a&gt;, which is like most things I put on the Web (via this &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id130ac870&quot;&gt;blog&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id10923ba8&quot;&gt;data space&lt;/a&gt;), is a live and practical demonstration of the virtues of Linked Data courtesy of &lt;a href=&quot;http://dbpedia.org/resource/RDFa&quot; id=&quot;link-id133fd270&quot;&gt;RDFa&lt;/a&gt;, the &lt;a href=&quot;http://bibliontology.com/&quot; id=&quot;link-id134248d8&quot;&gt;Bibliographic Ontology&lt;/a&gt;, and dereferencable URIs (i.e. HTTP based Data Source Names for Documents and the Entities they host).&lt;/p&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://zitgist.com/labs/linked_data.html&quot; id=&quot;link-id104778a8&quot;&gt;Linked Data FAQ&lt;/a&gt; - by &lt;a href=&quot;http://community.linkeddata.org/dataspace/person/mkbergman#this&quot; id=&quot;link-idd8e71b0&quot;&gt;Mike Bergman&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.wired.com/special_multimedia/2008/st_infoporn_1607&quot; id=&quot;link-id134c1e80&quot;&gt;The Planetary Computer&lt;/a&gt; from &lt;a href=&quot;http://www.wired.com&quot; id=&quot;link-id13416518&quot;&gt;Wired Magazine&lt;/a&gt; - which is basically the effect of Linked Data under a different label (note to Wired: &amp;quot;Tired of old Media repetitive Registrations&amp;quot; when seeking to make comments in the OpenID era!).&lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>The DARQ Matter of Federation</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-06-09#1381</atom:id>
  <atom:published>2008-06-09T14:02:19Z</atom:published>
  <atom:updated>2008-06-11T15:15:14-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;The DARQ Matter of Federation&lt;/div&gt; &lt;p&gt;Astronomers propose that the universe is held together, so to speak, by the gravity of invisible &amp;quot;dark matter&amp;quot; spread in interstellar and intergalactic space.&lt;/p&gt; &lt;p&gt;For the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x19dbf410&quot;&gt;data&lt;/a&gt; web, it will be held together by federation, also an invisible factor. As in Minkowski space, so in &lt;a href=&quot;http://dbpedia.org/resource/Cyberspace&quot; id=&quot;link-id0x9fc13ff8&quot;&gt;cyberspace&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;To take the astronomical analogy further, putting too much visible stuff in one place makes a black hole, whose chief properties are that it is very heavy, can only get heavier and that nothing comes out.&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://darq.sourceforge.net/&quot; id=&quot;link-id0x1d06bd88&quot;&gt;DARQ&lt;/a&gt; is Bastian Quilitz&amp;#39;s federated extension of the &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x1cf28f70&quot;&gt;Jena&lt;/a&gt; &lt;a href=&quot;http://jena.sourceforge.net/ARQ/&quot; id=&quot;link-id0x1cba22c8&quot;&gt;ARQ&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x171c7dc8&quot;&gt;SPARQL&lt;/a&gt; processor. It has existed for a while and was also presented at &lt;a href=&quot;http://www.eswc2008.org/&quot; id=&quot;link-id0x1ed53cd0&quot;&gt;ESWC2008&lt;/a&gt;. There is also SPARQL FED from Andy Seaborne, an explicit means of specifying which end point will process which fragment of a distributed SPARQL query. Still, for federation to deliver in an open, decentralized world, it must be transparent. For a specific application, with a predictable workload, it is of course OK to partition queries explicitly.&lt;/p&gt; &lt;p&gt;Bastian had split &lt;a href=&quot;http://dbpedia.org/resource/DBpedia&quot; id=&quot;link-id0x1ce846c0&quot;&gt;DBpedia&lt;/a&gt; among five &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x1cad0640&quot;&gt;Virtuoso&lt;/a&gt; servers and was querying this set with DARQ. The end result was that there was a rather frightful cost of federation as opposed to all the data residing in a single Virtuoso. The other result was that if selectivity of predicates was not correctly guessed by the federation engine, the proposition was a non-starter. With correct join order it worked, though.&lt;/p&gt; &lt;p&gt;Yet, we really want federation. Looking further down the road, we simply must make federation work. This is just as necessary as running on a server cluster for mid-size workloads.&lt;/p&gt; &lt;p&gt;Since we are convinced of the cause, let&amp;#39;s talk about the means.&lt;/p&gt; &lt;p&gt;For DARQ as it now stands, there&amp;#39;s probably an order of magnitude or even more to gain from a couple of simple tricks. If going to a SPARQL end point that is not the outermost in the loop join sequence, batch the requests together in one &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id0x19a48280&quot;&gt;HTTP&lt;/a&gt;/1.1 message. So, if the query is &amp;quot;get me my friends living in cities of over a million people,&amp;quot; there will be the fragment &amp;quot;get city where x lives&amp;quot; and later &amp;quot;ask if population of x greater than 1000000&amp;quot;. If I have 100 friends, I send the 100 requests in a batch to each eligible server.&lt;/p&gt; &lt;p&gt;Further, if running against a server of known brand, use a client-server connection and prepared statements with array parameters. This can well improve the processing speed at the remote end point by another order of magnitude. This gain may however not be as great as the latency savings from message batching. We will provide a sample of how to do this with Virtuoso over &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x1cf18278&quot;&gt;JDBC&lt;/a&gt; so Bastian can try this if interested.&lt;/p&gt; &lt;p&gt;These simple things will give a lot of mileage and may even decide whether federation is an option in specific applications. For the open web however, these measures will not yet win the day.&lt;/p&gt; &lt;p&gt;When federating &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1cf7d0e8&quot;&gt;SQL&lt;/a&gt;, colocation of data is sort of explicit. If two tables are joined and they are in the same source, then the join can go to the source. For SPARQL this is also so but with a twist:&lt;/p&gt; &lt;p&gt;If a foaf:Person is found on a given server, this does not mean that the Person&amp;#39;s geek code or email hash will be on the same server. Thus &lt;code&gt;{?p name &amp;quot;Johnny&amp;quot; . ?p geekCode ?g . ?p emailHash ?h }&lt;/code&gt; does not necessarily denote a colocated join if many servers serve items of the vocabulary.&lt;/p&gt; &lt;p&gt;However, in most practical cases, for obtaining a rapid answer, treating this as a colocated fragment will be appropriate. Thus, it may be necessary to be able to declare that geek codes will be assumed colocated with names. This will save a lot of message passing and offer decent, if not theoretically total recall. For search style applications, starting with such assumptions will make sense. If nothing is found, then we can partition each join step separately for the unlikely case that there were a server that gave geek codes but not names.&lt;/p&gt; &lt;p&gt;For Virtuoso, we find that a federated query&amp;#39;s asynchronous, parallel evaluation model is not so different from that on a local cluster. So the cluster version could have the option of federated query. The difference is that a cluster is local and tightly coupled and predictably partitioned but a federated setting is none of these.&lt;/p&gt; &lt;p&gt;For description, we would take DARQ&amp;#39;s description model and maybe extend it a little where needed. Also we would enhance the protocol to allow just asking for the query cost estimate given a query with literals specified. We will do this eventually.&lt;/p&gt; &lt;p&gt;We would like to talk to Bastian about large improvements to DARQ, specially when working with Virtuoso. We&amp;#39;ll see.&lt;/p&gt; &lt;p&gt;Of course, one mode of federating is the crawl-as-you-go approach of the Virtuoso &lt;a href=&quot;http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html&quot; id=&quot;link-id0x1e163140&quot;&gt;Sponger&lt;/a&gt;. This will bring in fragments following seeAlso or sameAs declarations or other references. This will however not have the recall of a warehouse or federation over well described SPARQL end-points. But up to a certain volume it has the speed of local storage.&lt;/p&gt; &lt;p&gt;The emergence of voiD (Vocabulary of Interlinked Data) is a step in the direction of making federation a reality. There is &lt;a href=&quot;http://www.openlinksw.com/weblog/oerling/?id=1377&quot; id=&quot;link-id1109a4c8&quot;&gt;a separate post&lt;/a&gt; about this.&lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>The DARQ Matter of Federation</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-06-09#1376</atom:id>
  <atom:published>2008-06-09T13:57:30Z</atom:published>
  <atom:updated>2008-06-11T15:15:00-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;Astronomers propose that the universe is held together, so to speak, by the gravity of invisible &amp;quot;dark matter&amp;quot; spread in interstellar and intergalactic space.&lt;/p&gt; &lt;p&gt;For the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x19bbd830&quot;&gt;data&lt;/a&gt; web, it will be held together by federation, also an invisible factor. As in Minkowski space, so in &lt;a href=&quot;http://dbpedia.org/resource/Cyberspace&quot; id=&quot;link-id0x19af2488&quot;&gt;cyberspace&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;To take the astronomical analogy further, putting too much visible stuff in one place makes a black hole, whose chief properties are that it is very heavy, can only get heavier and that nothing comes out.&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://darq.sourceforge.net/&quot; id=&quot;link-id0x19b7a9c8&quot;&gt;DARQ&lt;/a&gt; is Bastian Quilitz&amp;#39;s federated extension of the &lt;a href=&quot;http://jena.sourceforge.net/&quot; id=&quot;link-id0x19ce3da0&quot;&gt;Jena&lt;/a&gt; &lt;a href=&quot;http://jena.sourceforge.net/ARQ/&quot; id=&quot;link-id0xa569a258&quot;&gt;ARQ&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x1a8d2270&quot;&gt;SPARQL&lt;/a&gt; processor. It has existed for a while and was also presented at &lt;a href=&quot;http://www.eswc2008.org/&quot; id=&quot;link-id0x1aad1d00&quot;&gt;ESWC2008&lt;/a&gt;. There is also SPARQL FED from Andy Seaborne, an explicit means of specifying which end point will process which fragment of a distributed SPARQL query. Still, for federation to deliver in an open, decentralized world, it must be transparent. For a specific application, with a predictable workload, it is of course OK to partition queries explicitly.&lt;/p&gt; &lt;p&gt;Bastian had split &lt;a href=&quot;http://dbpedia.org/resource/DBpedia&quot; id=&quot;link-id0x1a8ac770&quot;&gt;DBpedia&lt;/a&gt; among five &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x19601d30&quot;&gt;Virtuoso&lt;/a&gt; servers and was querying this set with DARQ. The end result was that there was a rather frightful cost of federation as opposed to all the data residing in a single Virtuoso. The other result was that if selectivity of predicates was not correctly guessed by the federation engine, the proposition was a non-starter. With correct join order it worked, though.&lt;/p&gt; &lt;p&gt;Yet, we really want federation. Looking further down the road, we simply must make federation work. This is just as necessary as running on a server cluster for mid-size workloads.&lt;/p&gt; &lt;p&gt;Since we are convinced of the cause, let&amp;#39;s talk about the means.&lt;/p&gt; &lt;p&gt;For DARQ as it now stands, there&amp;#39;s probably an order of magnitude or even more to gain from a couple of simple tricks. If going to a SPARQL end point that is not the outermost in the loop join sequence, batch the requests together in one &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id0x19b94818&quot;&gt;HTTP&lt;/a&gt;/1.1 message. So, if the query is &amp;quot;get me my friends living in cities of over a million people,&amp;quot; there will be the fragment &amp;quot;get city where x lives&amp;quot; and later &amp;quot;ask if population of x greater than 1000000&amp;quot;. If I have 100 friends, I send the 100 requests in a batch to each eligible server.&lt;/p&gt; &lt;p&gt;Further, if running against a server of known brand, use a client-server connection and prepared statements with array parameters. This can well improve the processing speed at the remote end point by another order of magnitude. This gain may however not be as great as the latency savings from message batching. We will provide a sample of how to do this with Virtuoso over &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x17822258&quot;&gt;JDBC&lt;/a&gt; so Bastian can try this if interested.&lt;/p&gt; &lt;p&gt;These simple things will give a lot of mileage and may even decide whether federation is an option in specific applications. For the open web however, these measures will not yet win the day.&lt;/p&gt; &lt;p&gt;When federating &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1a651628&quot;&gt;SQL&lt;/a&gt;, colocation of data is sort of explicit. If two tables are joined and they are in the same source, then the join can go to the source. For SPARQL this is also so but with a twist:&lt;/p&gt; &lt;p&gt;If a foaf:Person is found on a given server, this does not mean that the Person&amp;#39;s geek code or email hash will be on the same server. Thus &lt;code&gt;{?p name &amp;quot;Johnny&amp;quot; . ?p geekCode ?g . ?p emailHash ?h }&lt;/code&gt; does not necessarily denote a colocated join if many servers serve items of the vocabulary.&lt;/p&gt; &lt;p&gt;However, in most practical cases, for obtaining a rapid answer, treating this as a colocated fragment will be appropriate. Thus, it may be necessary to be able to declare that geek codes will be assumed colocated with names. This will save a lot of message passing and offer decent, if not theoretically total recall. For search style applications, starting with such assumptions will make sense. If nothing is found, then we can partition each join step separately for the unlikely case that there were a server that gave geek codes but not names.&lt;/p&gt; &lt;p&gt;For Virtuoso, we find that a federated query&amp;#39;s asynchronous, parallel evaluation model is not so different from that on a local cluster. So the cluster version could have the option of federated query. The difference is that a cluster is local and tightly coupled and predictably partitioned but a federated setting is none of these.&lt;/p&gt; &lt;p&gt;For description, we would take DARQ&amp;#39;s description model and maybe extend it a little where needed. Also we would enhance the protocol to allow just asking for the query cost estimate given a query with literals specified. We will do this eventually.&lt;/p&gt; &lt;p&gt;We would like to talk to Bastian about large improvements to DARQ, specially when working with Virtuoso. We&amp;#39;ll see.&lt;/p&gt; &lt;p&gt;Of course, one mode of federating is the crawl-as-you-go approach of the Virtuoso &lt;a href=&quot;http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html&quot; id=&quot;link-id0x1dddce48&quot;&gt;Sponger&lt;/a&gt;. This will bring in fragments following seeAlso or sameAs declarations or other references. This will however not have the recall of a warehouse or federation over well described SPARQL end-points. But up to a certain volume it has the speed of local storage.&lt;/p&gt; &lt;p&gt;The emergence of voiD (Vocabulary of Interlinked Data) is a step in the direction of making federation a reality. There is &lt;a href=&quot;http://www.openlinksw.com/weblog/oerling/?id=1377&quot; id=&quot;link-id1109a4c8&quot;&gt;a separate post&lt;/a&gt; about this.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>ODBC &amp; WODBC Comparison</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-05-20#1364</atom:id>
  <atom:published>2008-05-20T19:37:53Z</atom:published>
  <atom:updated>2008-05-20T15:46:11-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id100eb550&quot;&gt;ODBC&lt;/a&gt; delivers open &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-idffd2338&quot;&gt;data&lt;/a&gt; access (by reference) to a broad range of enterprise databases via a &amp;#39;&lt;a href=&quot;http://dbpedia.org/resource/C_(programming_language)&quot; id=&quot;link-id104fd1d8&quot;&gt;C&lt;/a&gt;&amp;#39; based API. Thanks to the &lt;a href=&quot;http://www.iodbc.org&quot; id=&quot;link-id104721b0&quot;&gt;iODBC&lt;/a&gt; and &lt;a href=&quot;http://www.unixodbc.org&quot; id=&quot;link-id10954990&quot;&gt;unixODBC&lt;/a&gt; projects, &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id10494670&quot;&gt;ODBC&lt;/a&gt; is available across broad range of platforms beyond Windows.&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0xc900928&quot;&gt;ODBC&lt;/a&gt; identifies &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id10f82200&quot;&gt;data&lt;/a&gt; sources using &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xcaad080&quot;&gt;Data&lt;/a&gt; Source Names (DSNs). &lt;/p&gt; &lt;p&gt; WODBC (&lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;Web&lt;/a&gt; Open Database Connectivity) delivers open &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt; access to Web Databases / Data Spaces. The Data Source Naming scheme: &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id1009ce40&quot;&gt;URI&lt;/a&gt; or IRI, is &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id101fc1b0&quot;&gt;HTTP&lt;/a&gt; based thereby enabling data access by reference via the Web. &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot;&gt;ODBC&lt;/a&gt; DSNs bind ODBC client applications to Tables, Views, Stored Procedures. &lt;/p&gt; &lt;p&gt;WODBC DSNs bind you to a Data &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id10182a88&quot;&gt;Space&lt;/a&gt; (e.g. my &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen&quot; id=&quot;link-id105a7858&quot;&gt;FOAF based Profile Page&lt;/a&gt; where you can use the &amp;quot;Explore Data Tab&amp;quot; to look around if you are a human visitor) or a specific &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id10bd8578&quot;&gt;Entity&lt;/a&gt; within a Data &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id10780dc0&quot;&gt;Space&lt;/a&gt; (i.e &lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen#this&quot; id=&quot;link-id10848e08&quot;&gt;Person Entity Me&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;ODBC Drivers are built using APIs (DBMS Call Level Interfaces) provided by DBMS vendors. Thus, a DBMS vendor can chose not to release an API, or do so selectivity, for competitive advantage or market disruption purposes (it&amp;#39;s happened!).&lt;/p&gt; &lt;p&gt;WODBC Drivers are also built using APIs (Web Services associated with a Web Data &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id0xcbe6348&quot;&gt;Space&lt;/a&gt;). These drivers are also referred to as &lt;a href=&quot;http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&amp;q=rdf%20middleware&amp;type=text&amp;output=html&quot; id=&quot;link-id16564058&quot;&gt;RDF Middleware&lt;/a&gt; or RDFizers. The &amp;quot;Web&amp;quot; component of WODBC ensures openness, you publish Data with URIs from your &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id1064a768&quot;&gt;Linked Data&lt;/a&gt; Server and that&amp;#39;s it; your data &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot;&gt;space&lt;/a&gt; or specific data entities are live and accessible (by reference) over the Web!&lt;/p&gt; &lt;p&gt;So we have come full circle (or cycle), the Web is becoming more of a structured database everyday! What&amp;#39;s new is old, and what&amp;#39;s old is new! &lt;/p&gt; &lt;p&gt;Data Access is everything, without &amp;quot;Data&amp;quot; there is no &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id100a9de8&quot;&gt;information&lt;/a&gt; or &lt;a href=&quot;http://dbpedia.org/resource/Knowledge&quot; id=&quot;link-id10bb67e8&quot;&gt;knowledge&lt;/a&gt;. Without &amp;quot;Data&amp;quot; there&amp;#39;s not notion of vitality, purpose, or value.&lt;/p&gt; &lt;p&gt;URIs make or break everything in the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10a71638&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id10494400&quot;&gt;Web&lt;/a&gt; just as ODBC DSNs do within the enterprise. &lt;/p&gt; &lt;p&gt;I&amp;#39;ve deliberately left &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id10a05280&quot;&gt;JDBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id104e4a70&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id10215668&quot;&gt;NET&lt;/a&gt;, and OLE-DB out of this piece due to their respective programming languages and frameworks specificity. None of these mechanisms match the platform availability breadth of ODBC.&lt;/p&gt; &lt;p&gt;The Web as a true &lt;a href=&quot;http://dbpedia.org/resource/Model-view-controller&quot; id=&quot;link-id108ee598&quot;&gt;M&lt;/a&gt;-&lt;a href=&quot;http://dbpedia.org/resource/Model-view-controller&quot; id=&quot;link-id0xcda5e90&quot;&gt;V&lt;/a&gt;-C pattern is now crystalizing. The &amp;quot;M&amp;quot; (Model) component of M-V-C is finally rising to the realm of broad attention courtesy of the &amp;quot;&lt;a href=&quot;http://www.w3.org/DesignIssues/LinkedData.html&quot; id=&quot;link-id1024ff08&quot;&gt;Linked Data&amp;quot; meme&lt;/a&gt; and &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id1831b418&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; vision.&lt;/p&gt; &lt;p&gt;By the way, M-V-C lines up nicely with Web 1.0 (Web Forms / Pages), Web 2.0 (Web Services based APIs), and Web 3.0 (Data Web, Web of Data, or &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0xb6d0e90&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id0xb22a158&quot;&gt;Web&lt;/a&gt;) :-)&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>On &quot;Semantic&quot;, &quot;Semantic Web&quot;, and &quot;Linked Data Web&quot;</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-05-15#1360</atom:id>
  <atom:published>2008-05-15T14:11:13Z</atom:published>
  <atom:updated>2008-05-15T14:31:38.000004-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://novaspivack.typepad.com/&quot; id=&quot;link-id102f4e00&quot;&gt;Nova Spivack&lt;/a&gt; has just penned a post titled: &lt;a href=&quot;http://novaspivack.typepad.com/nova_spivacks_weblog/2008/05/on-the-differen.html&quot; id=&quot;link-id101a2300&quot;&gt;On the Difference Between &amp;quot;Semantic&amp;quot; and &amp;quot;Semantic Web&lt;/a&gt;&amp;quot;, where he covers the fundamental difference between &amp;quot;Semantic&amp;quot; (what I call &amp;quot;Semantics Inside&amp;quot;) and &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id11dd0578&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; applications. I would like to extend the distinctions further by adding the &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10b54ca0&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id106f73d0&quot;&gt;Web&lt;/a&gt;&amp;quot; distinctions to the developing discourse. &lt;/p&gt; &lt;p&gt;The &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id1089ff48&quot;&gt;Linked Data Web&lt;/a&gt; (aka. &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10653828&quot;&gt;Linked Data&lt;/a&gt;) describes &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id134abfb0&quot;&gt;RDF&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id140283a8&quot;&gt;data&lt;/a&gt; injected into the Web, where the &lt;a href=&quot;http://dbpedia.org/resource/Identity_(object-oriented_programming)&quot; id=&quot;link-id1029ebf0&quot;&gt;Data Object Identifiers&lt;/a&gt; (URIs) in an &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id1011b180&quot;&gt;RDF&lt;/a&gt; graph (collection of &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id103a4960&quot;&gt;RDF&lt;/a&gt; triples) are endowed with &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id104362d8&quot;&gt;HTTP&lt;/a&gt; based URIs. The net effect of this approach to &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id107963a0&quot;&gt;Data&lt;/a&gt; Object Identity is that it facilitates &amp;quot;Open &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id1331f640&quot;&gt;Data&lt;/a&gt; Access by Reference&amp;quot; on the Web (aka &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id10a3c608&quot;&gt;data&lt;/a&gt; dereferencing).&lt;/p&gt; &lt;p&gt;If you recall pre Web ubiquity, in the enterprise realm for instance, Open Database Connectivity (&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id12c6dd40&quot;&gt;ODBC&lt;/a&gt;) emerged as a mechanism for separating &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id13d6a5b0&quot;&gt;Data&lt;/a&gt; Access and &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id10b29488&quot;&gt;Data&lt;/a&gt; Management in the database oriented Client-Sever model. Although &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id106a8bd8&quot;&gt;ODBC&lt;/a&gt; gave you access to &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt;, the data access entry point took the form of a data access specific naming mechanism called a &amp;quot;Data Source Name&amp;quot; (DSN). &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id106eef18&quot;&gt;ODBC&lt;/a&gt; DSNs typically exposed Tables or Views. The same thing applies to &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id12c6dfe8&quot;&gt;JDBC&lt;/a&gt; where a non &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id104cb620&quot;&gt;HTTP&lt;/a&gt; based URN scheme applies.&lt;/p&gt; &lt;p&gt;Zip forward to where we are today on the Web; the Web is evolving from a Document centric Database to a Distributed &lt;a href=&quot;http://dbpedia.org/resource/Object_database&quot; id=&quot;link-id12d15268&quot;&gt;Object Database&lt;/a&gt;, and you should see that in &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10716bb8&quot;&gt;Linked Data&lt;/a&gt; we are now truly looking at the best of all worlds: Web Open Database Connectivity (WODBC) with the following advantages:&lt;/p&gt; &lt;ul&gt;- direct Access to a single Record (an &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id1037d530&quot;&gt;Entity&lt;/a&gt;) or Record Sets (&lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id10d48e98&quot;&gt;RDF&lt;/a&gt; based &lt;a href=&quot;http://dbpedia.org/resource/Entity&quot; id=&quot;link-id1402c8f0&quot;&gt;Entity&lt;/a&gt; Sets) by reference over &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id10bae7a8&quot;&gt;HTTP&lt;/a&gt; across disparate Data Spaces on the Web&lt;/ul&gt; &lt;ul&gt;- the ability to mesh disparate data sources without being impeded by back-end DBMS engine model, vendor, host operating development frameworks, or host operating system specificity&lt;/ul&gt; &lt;ul&gt;- an opportunity to learn from the enterprise DBMS market and Client-Server markets of yore with regards to the shape and form of next generation &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10fe4558&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id10153c98&quot;&gt;Web&lt;/a&gt; oriented solutions.&lt;/ul&gt; &lt;p&gt;To conclude, we now have &amp;quot;Semantics Inside&amp;quot; (&lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id109d1280&quot;&gt;RDF&lt;/a&gt; or non &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot;&gt;RDF&lt;/a&gt;), &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id106741a8&quot;&gt;Semantic Web&lt;/a&gt;&amp;quot; (RDF graphs with Object Identifiers that may or may not be &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id1011cc28&quot;&gt;HTTP&lt;/a&gt; based), and &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10793f70&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id149ecc10&quot;&gt;Web&lt;/a&gt;&amp;quot; (RDF graphs with Object Identifiers that must be &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id10a3b860&quot;&gt;HTTP&lt;/a&gt; based and dereferencable) oriented applications, in the emerging landscape associated with the &amp;quot;Semantics&amp;quot; moniker.&lt;/p&gt; &lt;p&gt;As per usual, this post is a record in my &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id1020e240&quot;&gt;Blog&lt;/a&gt; oriented &lt;a href=&quot;http://en.wikipedia.org/wiki/Data_Spaces&quot; id=&quot;link-id105cbf90&quot;&gt;Data Space&lt;/a&gt; on the Web. The permalink of this post is a &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id10ce53a8&quot;&gt;URI&lt;/a&gt; constructed with &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id1082f0f8&quot;&gt;Giant Global Graph&lt;/a&gt; enrichment in mind :-)&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>WWW 2008</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2008-04-29#1348</atom:id>
  <atom:published>2008-04-29T14:37:20Z</atom:published>
  <atom:updated>2008-04-29T13:35:23-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;WWW 2008&lt;/div&gt; &lt;p&gt;Following my return from WWW 2008 in &lt;a href=&quot;http://www2008.org/&quot; id=&quot;link-id0x9ff7d5d0&quot;&gt;Beijing&lt;/a&gt;, I will write a series of &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id0x9e4a7650&quot;&gt;blog&lt;/a&gt; posts discussing diverse topics that were brought up in presentations and conversations during the week.&lt;/p&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x9e7ae398&quot;&gt;Linked data&lt;/a&gt; was our main interest in the conference and there was a one day workshop on this, unfortunately overlapping with a day of W3C Advisory Committee meetings. Hence Tim Berners-Lee, one of the chairs of the workshop, could not attend for most of the day. Still, he was present to say that &amp;quot;&lt;a href=&quot;http://community.linkeddata.org/dataspace/organization/lod#this&quot; id=&quot;link-id0xa287d38&quot;&gt;Linked open data&lt;/a&gt; is the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id0x15372940&quot;&gt;semantic web&lt;/a&gt; and the web done as it ought to be done.&amp;quot; &lt;p&gt;For my part, I will draw some architecture conclusions from the different talks and extrapolate about the requirements on database platforms for linked data.&lt;/p&gt; &lt;p&gt;Chris Bizer predicted that 2008 would be the year of &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xa1454c58&quot;&gt;data&lt;/a&gt; web search, if 2007 was the year of &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0xa0f73c50&quot;&gt;SPARQL&lt;/a&gt;. This may be the case, as linked data is now pretty much a reality and the questions of discovery become prevalent. There was a birds-of-a-feather session on this and I will make some comments on what we intend to explore in bridging between the text index based semantic web search engines and SPARQL.&lt;/p&gt; &lt;p&gt;Andy Seaborne convened a birds-of-a-feather session on the future of SPARQL. Many of the already anticipated and implemented requirements were confirmed and a few were introduced. A separate blog post will discuss these further.&lt;/p&gt; &lt;p&gt;From the various discussions held throughout the conference, we conclude that plug-and-play operation with the major semantic web frameworks of Jena, Sesame, and Redland, is our major immediate-term deliverable. Our efforts in this direction thus far are insufficient and we will next have these done with the right supervision and proper interop testing. The issues are fortunately simple but doing things totally right require some small server side support and some &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xa5d4d5b8&quot;&gt;JDBC&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x9dc28d10&quot;&gt;ODBC&lt;/a&gt; tweaks, so to the interested, we advise to wait for an update to be published on this blog.&lt;/p&gt; &lt;p&gt;I further had a conversation with Andy Seaborne about using Jena reasoning capabilities with &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xa2754050&quot;&gt;Virtuoso&lt;/a&gt; and generally the issues of &amp;quot;impedance mismatch&amp;quot; between reasoning and typical database workloads. More on this later. &lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>WWW 2008</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2008-04-29#1345</atom:id>
  <atom:published>2008-04-29T11:59:16Z</atom:published>
  <atom:updated>2008-04-29T13:35:17-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;Following my return from WWW 2008 in &lt;a href=&quot;http://www2008.org/&quot; id=&quot;link-id0xa1901330&quot;&gt;Beijing&lt;/a&gt;, I will write a series of &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id0xd356660&quot;&gt;blog&lt;/a&gt; posts discussing diverse topics that were brought up in presentations and conversations during the week.&lt;/p&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0x1290cb78&quot;&gt;Linked data&lt;/a&gt; was our main interest in the conference and there was a one day workshop on this, unfortunately overlapping with a day of W3C Advisory Committee meetings. Hence Tim Berners-Lee, one of the chairs of the workshop, could not attend for most of the day. Still, he was present to say that &amp;quot;&lt;a href=&quot;http://community.linkeddata.org/dataspace/organization/lod#this&quot; id=&quot;link-id0xa2754050&quot;&gt;Linked open data&lt;/a&gt; is the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id0xa099dea8&quot;&gt;semantic web&lt;/a&gt; and the web done as it ought to be done.&amp;quot; &lt;p&gt;For my part, I will draw some architecture conclusions from the different talks and extrapolate about the requirements on database platforms for linked data.&lt;/p&gt; &lt;p&gt;Chris Bizer predicted that 2008 would be the year of &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x9e0f0a98&quot;&gt;data&lt;/a&gt; web search, if 2007 was the year of &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0xd9e64a0&quot;&gt;SPARQL&lt;/a&gt;. This may be the case, as linked data is now pretty much a reality and the questions of discovery become prevalent. There was a birds-of-a-feather session on this and I will make some comments on what we intend to explore in bridging between the text index based semantic web search engines and SPARQL.&lt;/p&gt; &lt;p&gt;Andy Seaborne convened a birds-of-a-feather session on the future of SPARQL. Many of the already anticipated and implemented requirements were confirmed and a few were introduced. A separate blog post will discuss these further.&lt;/p&gt; &lt;p&gt;From the various discussions held throughout the conference, we conclude that plug-and-play operation with the major semantic web frameworks of Jena, Sesame, and Redland, is our major immediate-term deliverable. Our efforts in this direction thus far are insufficient and we will next have these done with the right supervision and proper interop testing. The issues are fortunately simple but doing things totally right require some small server side support and some &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xacc8c7e8&quot;&gt;JDBC&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x9e48d258&quot;&gt;ODBC&lt;/a&gt; tweaks, so to the interested, we advise to wait for an update to be published on this blog.&lt;/p&gt; &lt;p&gt;I further had a conversation with Andy Seaborne about using Jena reasoning capabilities with &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x134b8e98&quot;&gt;Virtuoso&lt;/a&gt; and generally the issues of &amp;quot;impedance mismatch&amp;quot; between reasoning and typical database workloads. More on this later. &lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Linked Data enabling PHP Applications</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-04-10#1334</atom:id>
  <atom:published>2008-04-10T18:09:49Z</atom:published>
  <atom:updated>2008-04-10T14:12:47-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://myopenlink.net/dataspace/person/danieljohnlewis#this&quot; id=&quot;link-id10820610&quot;&gt;Daniel lewis&lt;/a&gt; has penned a variation of post about &lt;a href=&quot;http://vanirsystems.com/danielsblog/2008/04/10/simplified-adding-wordpress-blogs-into-the-linked-data-web-using-virtuoso/&quot; id=&quot;link-id10827948&quot;&gt;Linked Data enabling PHP applications&lt;/a&gt; such as: &lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id10426278&quot;&gt;Wordpress&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/PhpBB&quot; id=&quot;link-id13f431c0&quot;&gt;phpBB3&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/MediaWiki&quot; id=&quot;link-id10dd8760&quot;&gt;MediaWiki&lt;/a&gt; etc.&lt;/p&gt; &lt;p&gt;Daniel simplifies my post by using diagrams to depict the different paths for &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id10adcc08&quot;&gt;PHP&lt;/a&gt; based applications exposing &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id107b4e60&quot;&gt;Linked Data&lt;/a&gt; - especially those that already provide a significant amount of the content that drives &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id13b0ab48&quot;&gt;Web&lt;/a&gt; 2.0.&lt;/p&gt; &lt;p&gt;If all the content in &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id0x1d499470&quot;&gt;Web&lt;/a&gt; 2.0 &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id12bd3b10&quot;&gt;information&lt;/a&gt; resources are distillable into discrete &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id10962060&quot;&gt;data&lt;/a&gt; objects endowed with &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id176a30e8&quot;&gt;HTTP&lt;/a&gt; based IDs (URIs), with zero &amp;quot;&lt;a href=&quot;http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&amp;q=rdf%20tax&amp;type=text&amp;output=html&quot; id=&quot;link-id1098bcd8&quot;&gt;RDF handcrafting Tax&lt;/a&gt;&amp;quot;, what do we end up with? A &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-id1372ce88&quot;&gt;Giant Global Graph&lt;/a&gt; of &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0xa29f0658&quot;&gt;Linked Data&lt;/a&gt;; the &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot;&gt;Web&lt;/a&gt; as a Database.&lt;/p&gt; &lt;p&gt;So, what used to apply exclusively, within enterprise settings re. &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id12d91448&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/IBM_DB2&quot; id=&quot;link-id13dd27d8&quot;&gt;DB2&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/IBM_Informix&quot; id=&quot;link-id108e6b98&quot;&gt;Informix&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Ingres&quot; id=&quot;link-id13383708&quot;&gt;Ingres&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Sybase&quot; id=&quot;link-idfed8aa8&quot;&gt;Sybase&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Microsoft_SQL_Server&quot; id=&quot;link-id10b8b190&quot;&gt;Microsoft SQL Server&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-id13066ea8&quot;&gt;MySQL&lt;/a&gt;, PostrgeSQL, Progress Open Edge, &lt;a href=&quot;http://dbpedia.org/resource/Firebird_database_server&quot; id=&quot;link-id104f0a78&quot;&gt;Firebird&lt;/a&gt;, and others, now applies to the Web. The Web becomes the &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/federated_database_system&quot; id=&quot;link-id105a5340&quot;&gt;Distributed Database&lt;/a&gt; Bus&amp;quot; that connects database records across disparate databases (or &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xc706c68&quot;&gt;Data&lt;/a&gt; Spaces). These databases manage and expose records that are remotely accessible &amp;quot;by reference&amp;quot; via &lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-id0x1c8f7fe0&quot;&gt;HTTP&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;As I&amp;#39;ve stated at every opportunity in the past, Web 2.0 is the greatest thing that every happened to the &lt;a href=&quot;http://dbpedia.org/resource/Semantic_Web&quot; id=&quot;link-id13d65278&quot;&gt;Semantic Web&lt;/a&gt; vision :-) Without the &amp;quot;&lt;a href=&quot;http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&amp;q=Web%202.0%20%20conundrum&amp;type=text&amp;output=html&quot; id=&quot;link-id100d16d0&quot;&gt;Web 2.0 Data Silo Conundrum&lt;/a&gt;&amp;quot; we wouldn&amp;#39;t have the cry for &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;Data&lt;/a&gt; Portability&amp;quot; that brings a lot of clarity to some fundamental Web 2.0 limitations that end-users ultimately find unacceptable.&lt;/p&gt; &lt;p&gt; In the late &amp;#39;80s, the &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-idff4f0d0&quot;&gt;SQL&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/SQL_Access_Group&quot; id=&quot;link-id138fbd40&quot;&gt;Access Group&lt;/a&gt; (now part of &lt;a href=&quot;http://dbpedia.org/resource/X/Open&quot; id=&quot;link-id104ee010&quot;&gt;X&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/X/Open&quot; id=&quot;link-id0xac9eab8&quot;&gt;Open&lt;/a&gt;) addressed a similar problem with &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id106d2008&quot;&gt;RDBMS&lt;/a&gt; silos within the enterprise that lead to the SAG &lt;a href=&quot;http://dbpedia.org/resource/Call_Level_Interface&quot; id=&quot;link-id105d45d0&quot;&gt;CLI&lt;/a&gt; which is exists today as Open Database Connectivity.&lt;/p&gt; &lt;p&gt;In a sense we now have WODBC (Web Open Database Connectivity), comprised of Web Services based CLIs and/or traditional back-end DBMS CLIs (&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id13f58708&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id10aa81e0&quot;&gt;JDBC&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id5fddb68&quot;&gt;ADO&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x9f085a10&quot;&gt;NET&lt;/a&gt;, OLE-DB, or Native), Query Language (&lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id10adb5c8&quot;&gt;SPARQL&lt;/a&gt; Query Language), and a Wire Protocol (&lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot;&gt;HTTP&lt;/a&gt; based &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-protocol/&quot; id=&quot;link-id126fa068&quot;&gt;SPARQL Protocol&lt;/a&gt;) delivering Web infrastructure equivalents of &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1d0a5fc8&quot;&gt;SQL&lt;/a&gt; and RDA, but much better, and with much broader scope for delivering profound value due to the Web&amp;#39;s inherent openness. Today&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id0xc88ed68&quot;&gt;PHP&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Python_programming_language&quot; id=&quot;link-id10a70530&quot;&gt;Python&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Ruby_programming_language&quot; id=&quot;link-id13d9da18&quot;&gt;Ruby&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Tcl&quot; id=&quot;link-id10a3c2a8&quot;&gt;Tcl&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/Perl&quot; id=&quot;link-id13e1b6f0&quot;&gt;Perl&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/ASP.NET&quot; id=&quot;link-id10810388&quot;&gt;ASP&lt;/a&gt;.&lt;a href=&quot;http://dbpedia.org/resource/ASP.NET&quot; id=&quot;link-id0xa22ce378&quot;&gt;NET&lt;/a&gt; developer is the enterprise &lt;a href=&quot;http://dbpedia.org/resource/4GL&quot; id=&quot;link-id1396a500&quot;&gt;4GL&lt;/a&gt; developer of yore, without enterprise confinement. We could even be talking about &lt;a href=&quot;http://dbpedia.org/resource/5GL&quot; id=&quot;link-id1077f250&quot;&gt;5GL&lt;/a&gt; development once the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot;&gt;Linked Data&lt;/a&gt; interaction is meshed with dynamic languages (delivering higher levels of abstraction at the language and data interaction levels). Even the underlying schemas and basic design will evolve from &lt;a href=&quot;http://dbpedia.org/resource/Closed_world_assumption&quot; id=&quot;link-id10b280c8&quot;&gt;Closed World&lt;/a&gt; (solely) to a mesh of Closed &amp;amp; &lt;a href=&quot;http://dbpedia.org/resource/Open_world_assumption&quot; id=&quot;link-id104b9978&quot;&gt;Open World&lt;/a&gt; view schemas.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Adding Wordpress Blogs into the Linked Data Web using Virtuoso</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-04-09#1333</atom:id>
  <atom:published>2008-04-09T21:27:34Z</atom:published>
  <atom:updated>2008-04-10T12:33:05.000003-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id101103b0&quot;&gt;Wordpress&lt;/a&gt; is a Weblog platform comprised of the following: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;User Interface - &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id107ba368&quot;&gt;PHP&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Application Logic - &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id107066b8&quot;&gt;PHP&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id13968340&quot;&gt;Data&lt;/a&gt; Storage (&lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id104c5350&quot;&gt;SQL&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id1076d790&quot;&gt;RDBMS&lt;/a&gt;) - &lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-id109c4ea0&quot;&gt;MySQL&lt;/a&gt; via &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id133af570&quot;&gt;PHP&lt;/a&gt;-&lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-idf0b03b0&quot;&gt;MySQL&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Application_server&quot; id=&quot;link-id13217630&quot;&gt;Application Server&lt;/a&gt; - &lt;a href=&quot;http://dbpedia.org/resource/Apache&quot; id=&quot;link-id108219d8&quot;&gt;Apache&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;In the form above (the norm), &lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id105c6d88&quot;&gt;Wordpress&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id104938f8&quot;&gt;data&lt;/a&gt; can be injected into the &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id107a5f18&quot;&gt;Linked Data&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id177329c0&quot;&gt;Web&lt;/a&gt; via RDFization middleware such as the&lt;a href=&quot;http://virtuoso.openlinksw.com/Whitepapers/html/VirtSpongerWhitePaper.html&quot; id=&quot;link-id10531b50&quot;&gt;Virtuoso Sponger&lt;/a&gt; (built into all &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id10d7e710&quot;&gt;Virtuoso&lt;/a&gt; instances) and &lt;a href=&quot;http://triplr.org/&quot; id=&quot;link-id107dcab8&quot;&gt;Triplr&lt;/a&gt;. The downside of this approach is that the &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-id1055ab68&quot;&gt;blog&lt;/a&gt; owner doesn&amp;#39;t necessary possess full control over their contributions to the emerging &lt;a href=&quot;http://dbpedia.org/resource/Giant_Global_Graph&quot; id=&quot;link-idfed0358&quot;&gt;Giant Global Graph&lt;/a&gt; or &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id10d70668&quot;&gt;Linked Data&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Another route to &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id104c7f68&quot;&gt;Linked Data&lt;/a&gt; exposure is via &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xa255fb50&quot;&gt;Virtuoso&lt;/a&gt;&amp;#39;s Metaschema Language for producing &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id10968388&quot;&gt;RDF&lt;/a&gt; Views over &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id13f594c8&quot;&gt;ODBC&lt;/a&gt;/&lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id138f69a8&quot;&gt;JDBC&lt;/a&gt; accessible &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id1393c068&quot;&gt;Data&lt;/a&gt; Sources, that enables the following setup:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;User Interface - &lt;a href=&quot;http://dbpedia.org/resource/PHP&quot; id=&quot;link-id0x9fb9c478&quot;&gt;PHP&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Application Logic - PHP &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xc605960&quot;&gt;Data&lt;/a&gt; Storage (&lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xc2be608&quot;&gt;SQL&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0xc7a28a8&quot;&gt;RDBMS&lt;/a&gt;) - &lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-id0xc7228f0&quot;&gt;MySQL&lt;/a&gt; via the PHP-MySQL &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt; access interface &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Virtual_Database&quot; id=&quot;link-id134b1ee8&quot;&gt;Virtual Database&lt;/a&gt; linkage of MySQL Tables into Virtuoso &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-idfe31548&quot;&gt;RDF&lt;/a&gt; View generated over the Virtual SQL Tables &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Application_server&quot; id=&quot;link-id0xb8dfa68&quot;&gt;Application Server&lt;/a&gt; - Virtuoso which provides &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id0xc149518&quot;&gt;Linked Data&lt;/a&gt; Deployment such that &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id10ad9ca0&quot;&gt;RDF&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot;&gt;Linked Data&lt;/a&gt; is exposed when requested by &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-idfd352e0&quot;&gt;Web&lt;/a&gt; User Agents.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Alternatively, you can also exploit Virtuoso as the SQL DBMS, &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x9ec4f440&quot;&gt;RDF&lt;/a&gt; DBMS, Application Server, and Linked Data Deployment platform:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;User Interface - PHP &lt;/li&gt; &lt;li&gt; Application Logic - PHP &lt;/li&gt; &lt;li&gt;Data Storage (SQL RDBMS) - Virtuoso via PHP-&lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id14197218&quot;&gt;ODBC&lt;/a&gt; data access interface (* &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id103d1a80&quot;&gt;ODBC&lt;/a&gt; is Virtuoso&amp;#39;s native SQL CLI/API *) &lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot;&gt;RDF&lt;/a&gt; View generated over the Native SQL Tables &lt;/li&gt; &lt;li&gt;Application Server - Virtuoso which provides Linked Data Deployment such that RDF Linked Data is exposed when requested by &lt;a href=&quot;http://dbpedia.org/resource/World_Wide_Web&quot; id=&quot;link-id13918d68&quot;&gt;Web&lt;/a&gt; User Agents (e.g. &lt;a href=&quot;http://demo.openlinksw.com/rdfbrowser&quot; id=&quot;link-idff835f0&quot;&gt;OpenLink RDF Browser&lt;/a&gt;, &lt;a href=&quot;http://zitgist.com/about/&quot; id=&quot;link-id1372e510&quot;&gt;Zitgist&lt;/a&gt; &lt;a href=&quot;http://dataviewer.zitgist.com&quot; id=&quot;link-id109c3048&quot;&gt;Data Viewer&lt;/a&gt;, &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/rdf_browser&quot; id=&quot;link-id105d97f0&quot;&gt;DISCO Hyperdata Browser&lt;/a&gt;, and &lt;a href=&quot;http://dig.csail.mit.edu/2005/ajar/release/tabulator/0.8/tab.html&quot; id=&quot;link-id10cc20d8&quot;&gt;Tabulator&lt;/a&gt;). &lt;/li&gt; &lt;/ol&gt; &lt;h2 align=&quot;left&quot;&gt;Benefits?&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;Each user account gets a proper Linked Data &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id108c92b0&quot;&gt;URI&lt;/a&gt; (ID) that can me meshed/smushed with other IDs (so you add data from this new &lt;a href=&quot;http://dbpedia.org/resource/Blog&quot; id=&quot;link-idfd39648&quot;&gt;blog&lt;/a&gt; space to other linked data sources associated with you other URIs/IDs) &lt;/li&gt; &lt;li&gt;Each post gets a proper &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id10add540&quot;&gt;URI&lt;/a&gt; All data is now query-able via &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id101b98f0&quot;&gt;SPARQL&lt;/a&gt; Discoverability increases exponentially (without drop in relevance in either direction i.e. discovering or being discovered)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;How Do I map the &lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id12e448c0&quot;&gt;WordPress&lt;/a&gt; SQL Schema to RDF using Virtuoso? &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Determine the RDF Schema or Ontologies that define the Classes for which you will be producing instance data (e.g. SIOC and FOAF) &lt;/li&gt; &lt;li&gt;Declare &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-idfaf5c80&quot;&gt;URI&lt;/a&gt;/IRI generator functions (*special Virtuoso functions*) &lt;/li&gt; &lt;li&gt;Use &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id100436b8&quot;&gt;SPARQL&lt;/a&gt; Graph patterns to apply &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id0x9de74950&quot;&gt;URI&lt;/a&gt;/IRI generator functions to Tables, Views, Table Values mode Stored Procedures, Query Resultsets as part of RDBMS to RDF mapping &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; Read the &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSSQL2RDF&quot; id=&quot;link-idfaf5d58&quot;&gt;Meta Schema Language guide&lt;/a&gt; or simply apply our &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/WordPress&quot; id=&quot;link-id0x9ef73c78&quot;&gt;WordPress&lt;/a&gt; SQL Schema to RDF&amp;quot; script to your Virtuoso hosted instance. Of course, there are other mappings that cover other PHP applications deployed via Virtuoso:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/PhpBB&quot; id=&quot;link-id179f4870&quot;&gt;phpBB3&lt;/a&gt; SQL Schema to RDF &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/Drupal&quot; id=&quot;link-id10b263d8&quot;&gt;Drupal&lt;/a&gt; SQL Schema to RDF &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://dbpedia.org/resource/MediaWiki&quot; id=&quot;link-id10263a40&quot;&gt;MediaWiki&lt;/a&gt; SQL Schema to RDF &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;Live Demos?&lt;/h2&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/phpBB3&quot; id=&quot;link-id17761e88&quot;&gt;Virtuoso Hosting phpBB3&lt;/a&gt; (&lt;a href=&quot;http://demo.openlinksw.com/phpBB3/user/demo#this&quot; id=&quot;link-id10087e68&quot;&gt;example User URI&lt;/a&gt;)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/drupal&quot; id=&quot;link-id1091f1d8&quot;&gt;Virtuoso Hosting Drupal&lt;/a&gt; (&lt;a href=&quot;http://demo.openlinksw.com/drupal/user/demo#this&quot; id=&quot;link-id13e3d468&quot;&gt;example User URI&lt;/a&gt;)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/mediawiki&quot; id=&quot;link-id10531be0&quot;&gt;Virtuoso Hosting MediaWiki&lt;/a&gt; (&lt;a href=&quot;http://demo.openlinksw.com/mediawiki/user/KingsleyIdehen#this&quot; id=&quot;link-id109c5d40&quot;&gt;example User URI&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Linked Data Solution for Exposing OpenLink Product Portfolio</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-02-16#1317</atom:id>
  <atom:published>2008-02-16T21:08:17Z</atom:published>
  <atom:updated>2008-02-25T15:08:04-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;At &lt;a href=&quot;http://www.openlinksw.com&quot; id=&quot;link-id14a37688&quot;&gt;OpenLink Software&lt;/a&gt;, we&amp;#39;ve had an immense problem explaining the depth and breadth of our product porfolio via traditional Document Web pages. Thanks to &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id101bc330&quot;&gt;SPARQL&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Linked_Data&quot; id=&quot;link-id105d2d28&quot;&gt;Linked Data&lt;/a&gt;, we are now able to use &lt;a href=&quot;http://dbpedia.org/resource/Identity_%2528object-oriented_programming%2529&quot; id=&quot;link-id1341fbd0&quot;&gt;Web Data Object IDs&lt;/a&gt; (&lt;a href=&quot;http://dbpedia.org/resource/Hypertext_Transfer_Protocol&quot; id=&quot;link-idf101908&quot;&gt;HTTP&lt;/a&gt; based &lt;a href=&quot;http://dbpedia.org/resource/Uniform_Resource_Identifier&quot; id=&quot;link-id135cd8a0&quot;&gt;URI&lt;/a&gt;s) to produce super SKUs for every item in our product portfolio. Even better, we are able to handle the additional challenge of exposing features and benefits which by their very nature are mercurial across an array of fronts (products releases, product formats, and supported platforms etc). &lt;/p&gt; &lt;p&gt; Now I can simply state the following using Linked Data (hyperdata) links:&lt;/p&gt; &lt;a href=&quot;http://dbpedia.org/resource/OpenLink_Software&quot; id=&quot;link-idfafc070&quot;&gt;OpenLink Software&lt;/a&gt;&amp;#39;s product porfolio is comprised of the following product families: &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_family/uda#this&quot; id=&quot;link-idf856aa8&quot;&gt;Universal Data Access Drivers Suite (UDA)&lt;/a&gt; for &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-idfc5f498&quot;&gt;ODBC&lt;/a&gt;, JDBC, &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-idfc20120&quot;&gt;ADO.NET&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/OLE_DB&quot; id=&quot;link-id11579a08&quot;&gt;OLE-DB&lt;/a&gt;, and &lt;a href=&quot;http://dbpedia.org/resource/XML_for_Analysis&quot; id=&quot;link-id1067d098&quot;&gt;XMLA&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_family/dca#this&quot; id=&quot;link-id1318b3f8&quot;&gt;OpenLink Data Spaces&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_family/virtuoso#this&quot; id=&quot;link-idf8d7ea0&quot;&gt;Virtuoso&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt; We no longer have to explain (repeatedly) why our drivers exist in &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_format/express#this&quot; id=&quot;link-idf76e1f0&quot;&gt;Express&lt;/a&gt;, &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_format/st#this&quot; id=&quot;link-idf861be8&quot;&gt;Lite&lt;/a&gt;, and &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_format/mt#this&quot; id=&quot;link-id128da1e0&quot;&gt;Multi-Tier&lt;/a&gt; Edition formats, or why you ultimately need Multi-Tier Drivers over Single Tier Drivers (Express or Lite Editions) since you ultimately heed &lt;a href=&quot;http://data.openlinksw.com/oplweb/product_format_feature/RulesEngineBasedSecurity#this&quot; id=&quot;link-idf8d70b0&quot;&gt;high-performance, data encryption, and policy based security&lt;/a&gt; across each of the data access driver formats.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>SPARQL based RDF Store Benchmarks via DBpedia</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-01-17#1298</atom:id>
  <atom:published>2008-01-18T01:10:00Z</atom:published>
  <atom:updated>2008-05-05T08:06:45-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://christianhbecker.com/contact/&quot; id=&quot;link-id1436ad98&quot;&gt;Christian Becker&lt;/a&gt; has delivered the final cut of an initial iteration of his &lt;a href=&quot;http://dbpedia.org&quot; id=&quot;link-id143223c8&quot;&gt;DBpedia&lt;/a&gt; based &lt;a href=&quot;http://www4.wiwiss.fu-berlin.de/benchmarks-200801/&quot; id=&quot;link-id1729ebc8&quot;&gt;RDF Data Stores benchmark&lt;/a&gt;. This particular exercise brought some very interesting things to our attention re. &lt;a href=&quot;http://dbpedia.org/resource/Virtuoso_Universal_Server&quot; id=&quot;link-id17178108&quot;&gt;Virtuoso&lt;/a&gt;&amp;#39;s default mode of operation:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x1c519718&quot;&gt;Virtuoso&lt;/a&gt; is a Quad Store in a Triple Store world -- it supports &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x1cce9730&quot;&gt;RDF&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x1934f0b8&quot;&gt;data&lt;/a&gt; set storage partitioning via &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-query/#namedGraphs&quot; id=&quot;link-id13f6c948&quot;&gt;Named Graphs&lt;/a&gt; and it requires the use of the &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x1eeb1b28&quot;&gt;SPARQL&lt;/a&gt; FROM clause to scope query patterns to appropriate &lt;a href=&quot;http://dbpedia.org/resource/Data&quot;&gt;data&lt;/a&gt; sets. Otherwise, it looks across all hosted data sets for matching patterns&lt;/li&gt; &lt;li&gt;We should be able to use our server side configuration settings to make the Quad Store behave like a Triple Store (meaning we set the list of applicable named graphs as part of the session configuration)&lt;/li&gt; &lt;li&gt;Provide hints to users about missing POGS, PSOG, and SOPG bitmap indexes when &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot;&gt;SPARQL&lt;/a&gt; query patterns received by the server are deemed suboptimal (we do know the execution costs of each query)&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;How Do I create the missing Bitmap Indexes?&lt;/p&gt; &lt;p&gt;Go to the &lt;a href=&quot;http://dbpedia.org/resource/HTML&quot; id=&quot;link-id1733e248&quot;&gt;HTML&lt;/a&gt; based Virtuoso Conductor, iSQL command line interface, or an &lt;a href=&quot;http://dbpedia.org/resource/ODBC&quot; id=&quot;link-id1427f338&quot;&gt;ODBC&lt;/a&gt; / &lt;a href=&quot;http://dbpedia.org/resource/JDBC&quot; id=&quot;link-id16edfa08&quot;&gt;JDBC&lt;/a&gt; / &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id1716af90&quot;&gt;ADO.NET&lt;/a&gt; / &lt;a href=&quot;http://dbpedia.org/resource/OLE_DB&quot; id=&quot;link-id1725e5e0&quot;&gt;OLE DB&lt;/a&gt; client and execute:&lt;/p&gt; &lt;b&gt;&lt;pre&gt;CREATE BITMAP index &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot;&gt;RDF&lt;/a&gt;_QUAD_POGS on DB.DBA.RDF_QUAD (P,O,G,S); &lt;br /&gt;CREATE BITMAP index RDF_QUAD_PSOG on DB.DBA.RDF_QUAD (P,S,O,G); &lt;br /&gt;CREATE BITMAP index RDF_QUAD_SOPG on DB.DBA.RDF_QUAD (S,O,P,G); &lt;/pre&gt;&lt;/b&gt; &lt;h3&gt;Related&lt;/h3&gt; &lt;ul&gt; &lt;a href=&quot;http://esw.w3.org/topic/RdfStoreBenchmarking&quot; id=&quot;link-id14de2630&quot;&gt;RDF Store Benchamrking Wiki&lt;/a&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>OpenOffice.org, SPARQL, and the Linked Data Web</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2008-01-04#1288</atom:id>
  <atom:published>2008-01-05T02:50:00Z</atom:published>
  <atom:updated>2008-02-04T20:42:50.000004-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;Question posed by Dan Brickley via a blog post: SQL, OpenOffice: &lt;a href=&quot;http://danbri.org/words/2008/01/04/245&quot; id=&quot;link-id1689abd8&quot;&gt;would a JDBC driver for SPARQL protocol make sense?&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Writing a &lt;a href=&quot;http://dbpedia.org/resource/JDBC_driver&quot; id=&quot;link-id16a96580&quot;&gt;JDBC Driver&lt;/a&gt; for &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id1a908a70&quot;&gt;SPARQL&lt;/a&gt; is a little overkill. &lt;a href=&quot;http://dbpedia.org/resource/OpenOffice.org&quot; id=&quot;link-id16ae69a8&quot;&gt;OpenOffice.org&lt;/a&gt; simply needs to make &lt;a href=&quot;http://dbpedia.org/resource/XML&quot; id=&quot;link-id168d3880&quot;&gt;XML&lt;/a&gt; or Web Data (&lt;a href=&quot;http://dbpedia.org/resource/HTML&quot; id=&quot;link-id1a7f1f50&quot;&gt;HTML&lt;/a&gt;, &lt;a href=&quot;http://dbpedia.org/resource/XHTML&quot; id=&quot;link-id16c1ae60&quot;&gt;XHTML&lt;/a&gt;, and XML) bonafide data sources within its &amp;quot;&lt;a href=&quot;http://dbpedia.org/resource/Pivot_table&quot; id=&quot;link-id16665398&quot;&gt;Pivot Table&lt;/a&gt;&amp;quot; functionality realm. Then all that would then be required is a &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-query/#select&quot; id=&quot;link-id168bcbe8&quot;&gt;SPARQL SELECT Query&lt;/a&gt; transported via the &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-protocol/&quot; id=&quot;link-id16c1bbc0&quot;&gt;SPARQL Protocol&lt;/a&gt; with results sent back using the &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-XMLres/&quot; id=&quot;link-id1aa61118&quot;&gt;SPARQL XML results serialization&lt;/a&gt; format (all part of a single SPARQL Protocol URL).&lt;/p&gt; &lt;p&gt;Excel successfully consumes the following information resource URI: http://tinyurl.com/yvoccj (a tiny url for a SPARQL SELECT against my&lt;a href=&quot;http://myopenlink.net/dataspace/person/kidehen&quot; id=&quot;link-id16702ba8&quot;&gt; FOAF file&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Alternatively, and currently achievable, you could simply use &lt;a href=&quot;http://esw.w3.org/topic/SPASQL&quot; id=&quot;link-id1a1b6b78&quot;&gt;SPASQL&lt;/a&gt; (SPARQL within SQL) using a &lt;a href=&quot;http://dbpedia.org/resource/DBMS&quot; id=&quot;link-id1661f240&quot;&gt;DBMS&lt;/a&gt; engine that supports SQL, SPARQL, and SPARQL e.g. &lt;a href=&quot;http://dbpedia.org/resource/Virtuoso_Universal_Server&quot; id=&quot;link-id168bba60&quot;&gt;Virtuoso&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/rdfapiandsql.html&quot; id=&quot;link-id167d9508&quot;&gt;Virtuoso SPASQL support&lt;/a&gt; is exposed via it&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id16c62160&quot;&gt;ODBC&lt;/a&gt; and/or JDBC Drivers. Thus you can do things such as: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;Use a SPARQL Query in the FROM CLAUSE of a &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id1657a3a8&quot;&gt;SQL&lt;/a&gt; statement&lt;/li&gt; &lt;li&gt;Execute SPARQL via SQL processor by prepending SPARQL query text with the literals &amp;quot;sparql&amp;quot; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;BTW - My News Years Resolution: get my act together and shrink the ever increasing list of &amp;quot;simple &amp;amp; practical Virtuoso use case demos&amp;quot; on my todo which now spans all the way back to 2006 :-(&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Linked Data &amp; The Web Information BUS</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2007-07-20#1231</atom:id>
  <atom:published>2007-07-20T07:50:00Z</atom:published>
  <atom:updated>2007-08-08T18:26:55-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://www.wiwiss.fu-berlin.de/suhl/ueber_uns/team/chris_bizer.htm&quot;&gt;Chris Bizer&lt;/a&gt;, &lt;a href=&quot;http://richard.cyganiak.de/&quot;&gt;Richard Cyganiak&lt;/a&gt;, and &lt;a href=&quot;http://kmi.open.ac.uk/people/tom/html&quot;&gt;Tom Heath&lt;/a&gt; have just published a &lt;a href=&quot;http://sites.wiwiss.fu-berlin.de/suhl/bizer/pub/LinkedDataTutorial/&quot;&gt;Linked Data Publishing Tutorial&lt;/a&gt; that provides a guide to the mechanics of Linked Data injection into the Semantic Data Web.&lt;/p&gt; &lt;p&gt; On different, but related, thread, &lt;a href=&quot;http://www.mkbergman.com&quot;&gt;Mike Bergman&lt;/a&gt; recently penned a post titled: &lt;a href=&quot;http://feeds.feedburner.com/~r/AI3_AdaptiveInformation/~3/134989485/&quot;&gt;What is the Structured Web?&lt;/a&gt;. Both of these public contributions shed light on the &amp;quot;Information BUS&amp;quot; essence of the World Wide Web by describing the evolving nature of the payload shuttled by the BUS. &lt;/p&gt; &lt;h3&gt;What is an Information BUS? &lt;/h3&gt; &lt;p&gt;Middleware infrastructure for shuttling &amp;quot;Information&amp;quot; between endpoints using a messaging protocol.&lt;/p&gt; &lt;p&gt;The Web is the dominant Information BUS within the Network Computer we know as the &amp;quot;Internet&amp;quot;. It uses HTTP to shuttle information payloads between &amp;quot;Data Sources&amp;quot; and &amp;quot;Information Consumers&amp;quot; - what happens when we interact with Web via User Agents / Clients (e.g Browsers). &lt;/p&gt; &lt;h3&gt;What are Web Information Payloads?&lt;/h3&gt; &lt;p&gt;HTTP transported streams of contextualized data. Hence the terms: &amp;quot;Information Resource&amp;quot; and &amp;quot;Non Information&amp;quot; when reading material related to &lt;a href=&quot;http://www.w3.org/2001/tag/doc/httpRange-14/2007-05-31/HttpRange-14#iddiv2104118728&quot;&gt;http-range-14 and Web Architecture&lt;/a&gt;. For example, an (X)HTML document is a specific data context (representation) that enables us to perceive, or comprehend, a data stream originating from a Web Server as a Web Page. On the other hand, if the payload lacks contextualized data, a fundamental Web requirement, then the resource is referred to as a &amp;quot;Non Information&amp;quot; resource. Of course, there is really no such thing as a &amp;quot;Non Information&amp;quot; resource, but with regards to Web Architecture, it&amp;#39;s the short way of saying: &amp;quot;the Web Transmits Information only&amp;quot;. That said, I prefer to refer to these &amp;quot;Non Information&amp;quot; resources as &amp;quot;Data Sources&amp;quot;, are term well understood in the world of Data Access Middleware (ODBC, JDBC, OLEDB, ADO.NET etc.) and Database Management Systems (Relational, Objec-Relational, Object etc).&lt;/p&gt; &lt;p&gt;Examples of Information Resource and Data Source URIs:&lt;/p&gt; &lt;ul&gt; &lt;a href=&quot;http://demo.openlinksw.com/Northwind/Customer/ALFKI&quot;&gt;http://demo.openlinksw.com/Northwind/Customer/ALFKI&lt;/a&gt; (Information Resource)&lt;/ul&gt; &lt;ul&gt; &lt;a href=&quot;http://demo.openlinksw.com/sparql?query=CONSTRUCT+{+%3Chttp%3A//demo.openlinksw.com/Northwind/Customer/ALFKI%23this%3E+%3Fp+%3Fo+}+FROM+%3Chttp%3A//demo.openlinksw.com/Northwind%3E+WHERE+{+%3Chttp%3A//demo.openlinksw.com/Northwind/Customer/ALFKI%23this%3E+%3Fp+%3Fo+}&amp;format=application/rdf%2Bxml&quot;&gt;http://demo.openlinksw.com/Northwind/Customer/ALFKI#this&lt;/a&gt; (Data Source)&lt;/ul&gt; &lt;p&gt;Explanation: The Information Resource is a conduit to the Entity identified by Data Source (an entity in my RDF Data Space that is the Subject or Object of one of more Triple based Statements. The triples in question can that can be represented as an RDF resource when transmitted over the Web via an Information Resource that takes the form of a SPARQL REST Service URL or a Physical RDF based Information Resource URL). &lt;/p&gt; &lt;h3&gt;What about Structured Data?&lt;/h3&gt; &lt;p&gt;Prior to the emergence of the Semantic Data Web, the payloads shuttled across the Web Information BUS comprised primarily of the following:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;HTML - Web Resource with presentation focused structure (Web 1.0 dominant payload form)&lt;/li&gt; &lt;li&gt;XML - Web Resource with structure that separates presentation and data (Web 2.0&amp;#39;s dominant payload form).&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;The Semantic Data Web simply adds &lt;a href=&quot;http://blogs.usnet.private:8893/Resource_Description_Framework&quot;&gt;RDF&lt;/a&gt; to the payload formats that shuttle the Web Information BUS. RDF addresses formal data structure which XML doesn&amp;#39;t cover since it is semi-structured (distinct data entities aren&amp;#39;t formally discernible). In a nutshell, an RDF payload is basically a conceptual model database packaged as an Information Resource. It&amp;#39;s comprised of granular data items called &amp;quot;Entities&amp;quot;, that expose fine grained properties values, individual and/or group characteristics (attributes), and relationships (associations) with other Entities.&lt;/p&gt; &lt;h3&gt;Where is this all headed? &lt;/h3&gt; &lt;p&gt;The Web is in the final stages of the 3rd phase of it&amp;#39;s evolution. A phase characterized by the shuttling of structured data payloads (RDF) alongside less data oriented payloads (HTML, XHTML, XML etc.). As you can see, &lt;a href=&quot;http://linkeddata.org&quot;&gt;Linked Data&lt;/a&gt; and Structured Data are both terms used to describe the addition of more data centric payloads to the Web. Thus, you could view the process of creating a Structured Web of Linked Data as follows:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Identify or Create Structured Data Sources&lt;/li&gt; &lt;li&gt;Name these Data Sources using Data Source URIs&lt;/li&gt; &lt;li&gt;Expose Structured Data Sources to the Web as Linked Data using Information Resource (conduit) URIs&lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;Conclusions&lt;/h3&gt; &lt;p&gt;The Semantic Data Web is an evolution of the current Web (an Information Space) that adds structured data payloads (RDF) to current, less data oriented, structured payloads (HTML, XHTML, XML, and others).&lt;/p&gt; &lt;p&gt;The Semantic Data Web is increasingly seen as an inevitability because it&amp;#39;s rapidly reaching the point of critical mass (i.e. network effect kick-in). As a result, Data Web emphasis is moving away from: &amp;quot;What is the Semantic Data Web?&amp;quot; To: &amp;quot;How will Semantic Data Web make our globally interconnected village an even better place?&amp;quot;, relative to the contributions accrued from the Web thus far. Remember, the initial &amp;quot;Document Web&amp;quot; (Web 1.0) bootstrapped because of the benefits it delivered to blurb-style content publishing (remember the term electronic brochure-ware?). Likewise, in the case of the &amp;quot;Services Web&amp;quot; (Web 2.0), the bootstrap occurred because it delivered platform independence to Web Application Developers - enabling them to expose application logic behind Web Services. It is my expectation that the Data Integration prowess of the Data Web will create a value exchange realm for data architects and other practitioners from the database and data access realms.&lt;/p&gt; &lt;h3&gt;Related Items&lt;/h3&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://www.mkbergman.com/?p=153&quot;&gt;Mike Bergman&amp;#39;s post about Semi-Structured Data&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&amp;q=structured%20data&amp;type=text&amp;output=html&quot;&gt;My Posts covering Structured and Un-Structured Containers&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Enterprise 0.0, Linked Data, and Semantic Data Web</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2007-06-14#1224</atom:id>
  <atom:published>2007-06-14T15:28:26Z</atom:published>
  <atom:updated>2008-02-04T23:19:26.000001-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;Last week we &lt;a href=&quot;http://www.openlinksw.com/press/virt_501.htm&quot;&gt;officially released Virtuoso 5.0.1&lt;/a&gt; (in Commercial and Open Source Editions). The press release provided us with an official mechanism and timestamp for the current Virtuoso feature set.&lt;/p&gt; &lt;p&gt;A vital component of the new Virtuoso release is the finalization of our SQL to RDF mapping functionality -- enabling the declarative mapping of SQL Data to RDF. Additional technical insight covering other new features (delivered and pending) is provided by &lt;a href=&quot;http://www.openlinksw.com/weblogs/oerling/&quot;&gt;Orri Erling&lt;/a&gt;, as part of a series of post-Banff posts.&lt;/p&gt; &lt;h2&gt;Why is SQL to RDF Mapping a Big Deal?&lt;/h2&gt; &lt;p&gt;A majority of the world&amp;#39;s data (especially in the enterprise realm) resides in SQL Databases. In addition, Open Access to the data residing in said databases remains the biggest challenge to enterprises for the following reasons:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; SQL Data Sources are inherently heterogeneous because they are acquired with business applications that are in many cases inextricably bound to a particular DBMS engine &lt;/li&gt; &lt;li&gt; Data is predictably dirty &lt;/li&gt; &lt;li&gt; DBMS vendors ultimately hold the data captive and have traditionally resisted data access standards such as ODBC (*trust me they have, just look at the unprecedented bad press associated with ODBC the only truly platform independent data access API. Then look at how this bad press arose..*) &lt;/li&gt; &lt;/ol&gt; &lt;p&gt; Enterprises have known from the beginning of modern corporate times that data access, discovery, and manipulation capabilities are inextricably linked to the &amp;quot;Real-time Enterprise&amp;quot; nirvana (hence my use of 0.0 before this becomes 3.0).&lt;/p&gt; &lt;p&gt;In my experience, as someone whose operated in the data access and data integration realms since the late &amp;#39;80s, I&amp;#39;ve painfully observed enterprises pursue, but unsuccessfully attain, full control over enterprise data (the prized asset of any organization) such that data-, information-, knowledge-workers are just a click away from commencing coherent platform and database independent data drill-downs and/or discovery that transcend intranet, internet, and extranet boundaries -- serendipitous interaction with relevant data, without compromise!&lt;/p&gt; &lt;p&gt;Okay, situation analysis done, we move on.. &lt;/p&gt; &lt;p&gt;At our most recent (&lt;a href=&quot;http://esw.w3.org/topic/CambridgeSemanticWebGatherings/Meeting/2007-06-12_Gathering&quot;&gt;12th June&lt;/a&gt;) monthly &lt;a href=&quot;http://esw.w3.org/topic/CambridgeSemanticWebGatherings&quot;&gt;Semantic Web Gathering&lt;/a&gt;, I unveiled to &lt;a href=&quot;http://www.w3.org/People/Berners-Lee/card#i&quot;&gt;TimBL&lt;/a&gt; and a host of other attendees a simple, but powerful, demonstration of how &lt;a href=&quot;http://en.wikipedia.org/wiki/Linked_Data&quot;&gt;Linked Data&lt;/a&gt;, as an aspect of the &lt;a href=&quot;http://www.businessweek.com/technology/content/apr2007/tc20070409_961951.htm&quot;&gt;Semantic Data Web&lt;/a&gt;, can be applied to enterprise data integration challenges.&lt;/p&gt; &lt;h2&gt;Actual SQL to RDF Mapping Demo / Experiment&lt;/h2&gt; &lt;h4&gt;Hypothesis&lt;/h4&gt; A SQL Schema can be effectively mapped declaratively to RDF such that SQL Rows morph into RDF Instance Data (Entity Sets) based on the Concepts &amp;amp; Properties defined in a Concrete Conceptual Data Model oriented Data Dictionary (&lt;a href=&quot;http://www.w3schools.com/rdf/rdf_schema.asp&quot;&gt;RDF Schema&lt;/a&gt; and/or &lt;a href=&quot;http://www.w3schools.com/rdf/rdf_owl.asp&quot;&gt;OWL Ontology&lt;/a&gt;). In addition, the solution must demonstrate how &amp;quot;Linked Data in the Web&amp;quot; is completely different from &amp;quot;Data on the Web&amp;quot; or &amp;quot;Linked Data on the Web&amp;quot; (btw - &lt;a href=&quot;http://kasei.us/people/Tom_Heath/&quot;&gt;Tom Heath&lt;/a&gt; eloquently unleashed this point in his recent &lt;a href=&quot;http://blogs.talis.com/nodalities/2007/06/tom_heath_talks_with_talis_abo.php&quot;&gt;podcast interview with Talis&lt;/a&gt;). &lt;h4&gt;Apparatus&lt;/h4&gt; An Ontology - in this case we simply derived the &lt;a href=&quot;http://demo.openlinksw.com/DAV/home/demo/Public/Queries/SQLRDFIntegraton/Explore_Northwind_Ontology.isparql&quot;&gt;Northwind Ontology&lt;/a&gt; from the XML Schema based CSDL (&lt;a href=&quot;http://blogs.msdn.com/adonet/archive/2007/01/30/entity-data-model-part-1.aspx&quot;&gt;Conceptual Schema Definition Language&lt;/a&gt;) used by Microsoft&amp;#39;s public &lt;a href=&quot;http://astoria.mslivelabs.com/Default.aspx&quot;&gt;Astoria demo&lt;/a&gt; (specifically the &lt;a href=&quot;http://astoria.mslivelabs.com/termsOfUseNorthwind.aspx?returnURL=Northwind&quot;&gt;Northwind Data Services demo&lt;/a&gt;). SQL Database Schema - &lt;a href=&quot;http://www.microsoft.com/library/media/1033/technet/images/prodtechnol/sql/2000/maintain/sscpop07_big.gif&quot;&gt;Northwind&lt;/a&gt; (comes bundled with ACCESS, SQL Server, and Virtuoso) comprised of tables such as: &lt;a href=&quot;http://www.openlinksw.com/schemas/northwind#Customer&quot;&gt;Customer&lt;/a&gt;, &lt;a href=&quot;http://www.openlinksw.com/schemas/northwind#Employee&quot;&gt;Employee&lt;/a&gt;, &lt;a href=&quot;http://www.openlinksw.com/schemas/northwind#Product&quot;&gt;Product&lt;/a&gt;, &lt;a href=&quot;http://www.openlinksw.com/schemas/northwind#Category&quot;&gt;Category&lt;/a&gt;, &lt;a href=&quot;http://www.openlinksw.com/schemas/northwind#Supplier&quot;&gt;Supplier&lt;/a&gt;, &lt;a href=&quot;http://www.openlinksw.com/schemas/northwind#Shipper&quot;&gt;Shipper&lt;/a&gt; etc. &lt;a href=&quot;http://www.openlinksw.com/virtuoso/&quot;&gt;OpenLink Virtuoso&lt;/a&gt; - SQL DBMS Engine (although this could have been any &lt;a href=&quot;http://en.wikipedia.org/wiki/Open_Database_Connectivity&quot;&gt;ODBC&lt;/a&gt; or &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Database_Connectivity&quot;&gt;JDBC&lt;/a&gt; accessible Database), &lt;a href=&quot;http://www.openlinksw.com/virtuoso/Whitepapers/pdf/Virtuoso_SQL_to_RDF_Mapping.pdf&quot;&gt;SQL-RDF Metaschema Language&lt;/a&gt;, HTTP URL-rewriter, WebDAV Engine, and DBMS hosted XSLT processor Client Tools -&lt;a href=&quot;http://demo.openlinksw.com/isparql/&quot;&gt; iSPARQL Query Builder&lt;/a&gt;, &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/rdfbrowser/index.html&quot;&gt;RDF Browser&lt;/a&gt; (which could also have been &lt;a href=&quot;http://www.w3.org/2005/ajar/tab&quot;&gt;Tabulator&lt;/a&gt; or&lt;a href=&quot;http://sites.wiwiss.fu-berlin.de/suhl/bizer/ng4j/disco/&quot;&gt; DISCO&lt;/a&gt; or a standard Web Browser) &lt;h4&gt;Experiment / Demo&lt;/h4&gt; &lt;ol&gt; &lt;li&gt; Declaratively map the Northwind SQL Schema to RDF using the Virtuoso Meta Schema Language (see: &lt;a href=&quot;http://demo.openlinksw.com/DAV/home/demo/Public/Queries/SQLRDFIntegraton/northwind_sql_rdf.sql&quot;&gt;Virtuoso PL based Northwind_SQL_RDF script&lt;/a&gt;) &lt;/li&gt; &lt;li&gt; Start browsing the data by clicking on the URIs that represent the RDF Data Model Entities resulting from the SQL to RDF Mapping &lt;/li&gt; &lt;/ol&gt; &lt;h4&gt;Observations&lt;/h4&gt; &lt;ol&gt; &lt;li&gt; Via a single Data Link click I was able to obtain specific information about the Customer represented by the URI &lt;a href=&quot;http://demo.openlinksw.com/Northwind/Customer/ALFKI&quot;&gt;&amp;quot;ALFKI&amp;quot;&lt;/a&gt; (act of URI Dereferencing as you would an Object ID in an Object or Object-Relational Database) &lt;/li&gt; &lt;li&gt; Via a &lt;a href=&quot;http://demo.openlinksw.com/DAV/home/demo/Public/Queries/SQLRDFIntegraton/Explore_Northwind.isparql&quot;&gt;Dynamic Data Page &lt;/a&gt; I was able to explore all the entity relationships or specific entity data (i.e Exploratory or Entity specific dereferencing) in the Northwind Data Space &lt;/li&gt; &lt;li&gt; I was able to perform similar exploration (as per item 2) using our &lt;a href=&quot;http://demo.openlinksw.com/DAV/home/demo/Public/Queries/SQLRDFIntegraton/Explore_Northwind_Customer_ALFKI.wqx&quot;&gt;OpenLink Browser. &lt;/a&gt; &lt;/li&gt; &lt;/ol&gt; &lt;h4&gt;Conclusions&lt;/h4&gt; &lt;p&gt;The vision of data, information, or knowledge at your fingertips is nigh! Thanks to the infrastructure provided by the Semantic Data Web (URIs, &lt;a href=&quot;http://en.wikipedia.org/wiki/Resource_Description_Framework&quot;&gt;RDF Data Model&lt;/a&gt;, variety of RDF Serialization Formats[&lt;a href=&quot;http://www.dajobe.org/2004/01/turtle/&quot;&gt;1&lt;/a&gt;][&lt;a href=&quot;http://www.w3.org/DesignIssues/Notation3&quot;&gt;2&lt;/a&gt;][&lt;a href=&quot;http://www.w3.org/TR/2002/WD-rdf-syntax-grammar-20020325/&quot;&gt;3&lt;/a&gt;], and Shared Data Dictionaries / Schemas / Ontologies [&lt;a href=&quot;http://xmlns.com/foaf/spec/&quot;&gt;1&lt;/a&gt;][&lt;a href=&quot;http://rdfs.org/sioc/spec/&quot;&gt;2&lt;/a&gt;][&lt;a href=&quot;http://www.w3.org/TR/swbp-skos-core-guide/&quot;&gt;3&lt;/a&gt;][&lt;a href=&quot;http://musicontology.com/&quot;&gt;4&lt;/a&gt;][&lt;a href=&quot;http://bblfish.net/work/atom-owl/2006-06-06/AtomOwl.html&quot;&gt;5&lt;/a&gt;]) it&amp;#39;s now possible to Virtualize enterprise data from the Physical Storage Level, through the Logical Data Management Levels (Relational), up to a Concrete Conceptual Model (Graph) without operating system, development environment or framework, or database engine lock-in.&lt;/p&gt; &lt;h2&gt;Next Steps&lt;/h2&gt; &lt;p&gt;We produce a shared ontology for the CRM and Business Reporting Domains. I hope this experiment clarifies how this is quite achievable by converting XML Schemas to RDF Data Dictionaries (RDF Schemas or Ontologies). Stay tuned :-) &lt;/p&gt; &lt;p&gt;Also watch &lt;a href=&quot;http://news.com.com/1606-2-6189377.html&quot;&gt;TimBL amplify and articulate Linked Data value&lt;/a&gt; in a recent interview.&lt;/p&gt; &lt;h2&gt;Other Related Matters&lt;/h2&gt; &lt;p&gt;To deliver a mechanism that facilitates the crystallization of this reality is a contribution of boundless magnitude (as we shall all see in due course). Thus, it is easy to understand why even &amp;quot;her majesty&amp;quot;, the queen of England, simply had to get in on the act and &lt;a href=&quot;http://www.royal.gov.uk/output/Page1880.asp&quot;&gt;appoint TimBL to the &amp;quot;British Order of Merit&lt;/a&gt;&amp;quot; :-)&lt;/p&gt; &lt;p&gt;Note: All of the demos above now work with IE &amp;amp; Safari (a &amp;quot;remember what Virtuoso is epiphany&amp;quot;) by simply putting Virtuoso&amp;#39;s DBMS hosted XSLT engine to use :-) This also applies to my earlier collection of demos from the &lt;a href=&quot;http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&amp;q=hello%20data%20web&amp;type=text&amp;output=html&quot;&gt;Hello Data Web&lt;/a&gt; and other &lt;a href=&quot;http://www.openlinksw.com/weblog/public/search.vspx?blogid=127&amp;q=.isparql&amp;type=text&amp;output=html&quot;&gt;Data Web &amp;amp; Linked Data related demo style posts&lt;/a&gt;.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>OAT: OpenAjax Alliance Compliant Toolkit (Live Links Version)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2007-01-29#1129</atom:id>
  <atom:published>2007-01-29T16:16:14Z</atom:published>
  <atom:updated>2007-02-02T10:29:55-05:00</atom:updated>
  <atom:content type="html">&lt;blockquote&gt; &lt;p&gt; &lt;a href=&quot;http://ajaxian.com/archives/oat-openajax-alliance-compliant-toolkit&quot;&gt;OAT: OpenAjax Alliance Compliant Toolkit&lt;/a&gt;: &amp;quot;&lt;/p&gt; &lt;p&gt;Ondrej Zara and his team at Openlink Software have created a Openlink Software JS Toolkit, known as OAT. It is a full-blown JS framework, suitable for developing&lt;br /&gt; rich applications with special focus to data access.&lt;/p&gt; &lt;p&gt;OAT works standalone, offers vast number of widgets and has some rarely seen features, such as on-demand library loading (which reduces the total amount of downloaded JS code).&lt;/p&gt; &lt;p&gt;OAT is one of the first JS toolkits which show full OpenAjax Alliance conformance: see the appropriate &lt;a href=&quot;http://www.openajax.org/member/wiki/InteropFest_2007_March)&quot;&gt;wiki page&lt;/a&gt; and &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/openajax/HubTest-OATConformance.html&quot;&gt;conformance test page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;There is a lot to see with this toolkit:&lt;/p&gt; &lt;p&gt;You can see some of the widgets in a &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/demo/index.html&quot;&gt;Kitchen sink application&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Sample data access applications:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/qbe/index.html&quot;&gt;SQL Query By Example&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/formdesigner/index.html&quot;&gt;Forms designer&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/designer/index.html&quot;&gt;DB Designer&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;OAT is Open Source and GPLâed over at &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=168143&quot;&gt;sourceforge&lt;/a&gt; and the team has recently managed to incorporate our OAT data access layer as a&lt;br /&gt; module to &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/dojo-oatstore-demo/test_OATStore_in_FilteringTable.html&quot;&gt;dojo datastore&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;(Via &lt;a href=&quot;http://ajaxian.com&quot;&gt;Ajaxian Blog&lt;/a&gt;.)&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;This is a corrected version of the initial post. Unfortunately, the initial post was inadvertently littered with invalid links :-( Also, since the original post we have released &lt;a href=&quot;http://sourceforge.net/mailarchive/forum.php?thread_id=31568932&amp;amp;forum_id=49207&quot;&gt;OAT 1.2&lt;/a&gt; that includes integration of our iSPARQL QBE into the OAT Form Designer application.&lt;/p&gt; &lt;p&gt;Re. Data Access, It is important to note that OAT&amp;#39;s Ajax Database Connectivity layers supports data binding to the following data source types:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://www.w3.org/TR/rdf-primer/&quot;&gt;RDF&lt;/a&gt; - via &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/demo/index.html?dav&quot;&gt;SPARQL&lt;/a&gt; (Query Language, Protocol, and Resultset Serialization formats: &lt;a href=&quot;http://en.wikipedia.org/wiki/JDBC&quot;&gt;RDF/XML&lt;/a&gt;, &lt;a href=&quot;http://www.w3.org/DesignIssues/Notation3&quot;&gt;RDF/N3&lt;/a&gt;, &lt;a href=&quot;http://www.dajobe.org/2004/01/turtle/&quot;&gt;RDF/Turtle&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/XML&quot;&gt;XML&lt;/a&gt;, and &lt;a href=&quot;http://www.json.org/&quot;&gt;JSON&lt;/a&gt;)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/SQL&quot;&gt;SQL&lt;/a&gt; - via &lt;a href=&quot;http://www.xmla.org/faq.asp&quot;&gt;XMLA&lt;/a&gt; (somewhat forgotten &lt;a href=&quot;http://en.wikipedia.org/wiki/SOAP&quot;&gt;SOAP&lt;/a&gt; protocol for SQL Data Access that can sit atop &lt;a href=&quot;http://en.wikipedia.org/wiki/Open_Database_Connectivity&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/ADO.NET&quot;&gt;ADO.NET&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/OLE_DB&quot;&gt;OLE-DB&lt;/a&gt;, and even &lt;a href=&quot;http://en.wikipedia.org/wiki/JDBC&quot;&gt;JDBC&lt;/a&gt;)&lt;/li&gt; &lt;li&gt;XML - via SOAP or &lt;a href=&quot;http://en.wikipedia.org/wiki/Representational_State_Transfer&quot;&gt;REST&lt;/a&gt; style Web Services&lt;/li&gt; &lt;/ol&gt; In all cases, OAT also provides Data Aware controls for the above that include: &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlnksw.com/DAV/JS/demo/index.html?grid&quot;&gt;Tabular Grids&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/demo/index.html?pivot&quot;&gt;Pivot Tables&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlnksw.com/DAV/JS/demo/index.html?timeline&quot;&gt;TimeLines&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/demo/index.html?anchor&quot;&gt;Extended Anchor Tags&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlnksw.com/DAV/JS/demo/index.html?mashups&quot;&gt;Map Service Controls&lt;/a&gt; (Google, Yahoo!, OpenLayers, Microsoft Visual Earth)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/demo/index.html?rdf&quot;&gt;SVG based RDF Graph Control&lt;/a&gt; (Opera 9.x provides best viewing experience at the current time)&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;OAT also includes a number of prototype applications that are completely developed using OAT Controls and Libraries:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlnksw.com/isparql/&quot;&gt;Visual SPARQL Query Builder&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/qbe/index.html&quot;&gt;Visual SQL Query Builder&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/formdesigner/index.html&quot;&gt;Web Forms Designer&lt;/a&gt; (includes Drag-Drop usage of Data Aware Controls etc.)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/DAV/JS/designer/index.html&quot;&gt;Visual DB Designer&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Note: Pick &amp;quot;Local DSN&amp;quot; from page initialization dialog&amp;#39;s drop-down list control when prompted&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>SPARQL End Point Self Description</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2006-11-21#1085</atom:id>
  <atom:published>2006-11-21T14:30:45Z</atom:published>
  <atom:updated>2008-04-16T16:53:26.000002-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0xd750548&quot;&gt;SPARQL&lt;/a&gt; End Point Self Description&lt;/p&gt; &lt;p&gt;I was at the ISWC 2006 conference a week back. One of the items discussed there, at least informally, was the topic of SPARQL end point discovery. I have below put together a summary of points that were discussed and of my own views on their possible resolution.&lt;/p&gt; &lt;p&gt;This is intended as a start for conversation and as a summary of ideas.&lt;/p&gt; &lt;h4&gt;Use Cases&lt;/h4&gt; &lt;p&gt;Self-description of end points may serve at least the following purposes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Query composition - A client must know the capabilities of a server in order to compose suitable queries. &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x17692468&quot;&gt;ODBC&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xd65d538&quot;&gt;JDBC&lt;/a&gt; have fairly extensive metadata about each DBMS&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xd3993d0&quot;&gt;SQL&lt;/a&gt; dialect and other properties. These may in part serve as a model.&lt;/li&gt; &lt;li&gt;Content Discovery - What is the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xd6ef6a8&quot;&gt;data&lt;/a&gt; about? What graphs does the end point contain?&lt;/li&gt; &lt;li&gt;Query planning - When making an execution plan for federated queries, it is almost necessary to know the cardinalities of predicates and other things for evaluating join orders and the like.&lt;/li&gt; &lt;li&gt;Query targeting - Does it make sense to send a particular query to this end point? The answer may contain things like whether the query could be parsed in the first place, whether it is known to be identically empty, estimated computation time, estimated count of results, optionally a platform dependent query plan.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;We will look at each one in turn.&lt;/p&gt; &lt;h4&gt;End Point Data and Capabilities&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Server software name and version&lt;/li&gt; &lt;li&gt;Must the predicate be constant? Must a rdfs:type be given for a subject? Must a graph be given? Can the graph be a variable known at execution time only?&lt;/li&gt; &lt;li&gt;List of supported built-in SPARQL functions.&lt;/li&gt; &lt;li&gt;Language extensions - For example, whether there is a full text match predicate.&lt;/li&gt; &lt;/ul&gt; &lt;h4&gt;Content Discovery&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Name and general description of the purpose of the end point.&lt;/li&gt; &lt;li&gt;What organization/individual is maintaining the end point?&lt;/li&gt; &lt;li&gt;Contact for technical support, legal or administrative matters. Support and webmaster.&lt;/li&gt; &lt;li&gt;Ontologies used. This could be a list of graphs, each with a list of ontologies describing the data therein. Each graph would be listed with a rough estimate of size expressed in triples.&lt;/li&gt; &lt;li&gt;Topic - Each graph/ontology pair could have a number of identifiers drawn from standard taxonomies. Examples would be the Latin names of geni and species for biology, the HS code for customs, ISO code for countries, various industry specific classifications of goods and services.&lt;/li&gt; &lt;/ul&gt; &lt;h4&gt;Query Planning&lt;/h4&gt; &lt;p&gt;The end point should give a ballpark cardinality for the following combinations of G, S, P, O.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;G&lt;/li&gt; &lt;li&gt;G, P&lt;/li&gt; &lt;li&gt;G, P, O&lt;/li&gt; &lt;li&gt;G, S&lt;/li&gt; &lt;li&gt;G, S, P&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Based on our experience, these are the most interesting questions but for completeness, the entry point might offer an API allowing specifying a constant or wildcard for each of the four parts of a quad. If the &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id0x1a59ab78&quot;&gt;information&lt;/a&gt; is not readily available, &amp;quot;unknown&amp;quot; could be returned, together with the count of triples in the whole end point or the graph, if the graph is specified. Even if the end point does not support real time sampling of data for cardinality estimates, it would at least have an idea of the count of triples per graph, which is still far better than nothing.&lt;/p&gt; &lt;h4&gt;Query Feasibility&lt;/h4&gt; &lt;p&gt;Given the full SPARQL request, the end point could return the following data, without executing the query itself.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Syntax errors vs. parsed successfully?&lt;/li&gt; &lt;li&gt;Are there graph, predicate or subject literals which do not exist in this end point? Does this cause the query result to always be empty? What are these?&lt;/li&gt; &lt;li&gt;How many results are expected, according to the SPARQL compiler cost model? This is a row count, if the query is a construct or describe query, this is the count of rows that will go as input to the construct/describe.&lt;/li&gt; &lt;li&gt;What is the execution time, as guessed by the SPARQL compiler cost model?&lt;/li&gt; &lt;li&gt;Execution plan, in whatever implementation specific, in principle human readable format.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;All these elements would be optional.&lt;/p&gt; &lt;p&gt;This somewhat overlaps with the optimization questions but it may still be the case that it is more efficient to support a special interface for the optimization related questions.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>SPARQL End Point Self Description</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2006-11-21#1087</atom:id>
  <atom:published>2006-11-21T14:22:53Z</atom:published>
  <atom:updated>2008-04-16T16:53:46.000002-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;SPARQL End Point Self Description&lt;/div&gt; &lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/SPARQL&quot; id=&quot;link-id0x18b5cde0&quot;&gt;SPARQL&lt;/a&gt; End Point Self Description&lt;/p&gt; &lt;p&gt;I was at the ISWC 2006 conference a week back. One of the items discussed there, at least informally, was the topic of SPARQL end point discovery. I have below put together a summary of points that were discussed and of my own views on their possible resolution.&lt;/p&gt; &lt;p&gt;This is intended as a start for conversation and as a summary of ideas.&lt;/p&gt; &lt;h4&gt;Use Cases&lt;/h4&gt; &lt;p&gt;Self-description of end points may serve at least the following purposes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Query composition - A client must know the capabilities of a server in order to compose suitable queries. &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0x171af558&quot;&gt;ODBC&lt;/a&gt; and &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0xdf3ec80&quot;&gt;JDBC&lt;/a&gt; have fairly extensive metadata about each DBMS&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x1b5a6ec8&quot;&gt;SQL&lt;/a&gt; dialect and other properties. These may in part serve as a model.&lt;/li&gt; &lt;li&gt;Content Discovery - What is the &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xc518ac8&quot;&gt;data&lt;/a&gt; about? What graphs does the end point contain?&lt;/li&gt; &lt;li&gt;Query planning - When making an execution plan for federated queries, it is almost necessary to know the cardinalities of predicates and other things for evaluating join orders and the like.&lt;/li&gt; &lt;li&gt;Query targeting - Does it make sense to send a particular query to this end point? The answer may contain things like whether the query could be parsed in the first place, whether it is known to be identically empty, estimated computation time, estimated count of results, optionally a platform dependent query plan.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;We will look at each one in turn.&lt;/p&gt; &lt;h4&gt;End Point Data and Capabilities&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Server software name and version&lt;/li&gt; &lt;li&gt;Must the predicate be constant? Must a rdfs:type be given for a subject? Must a graph be given? Can the graph be a variable known at execution time only?&lt;/li&gt; &lt;li&gt;List of supported built-in SPARQL functions.&lt;/li&gt; &lt;li&gt;Language extensions - For example, whether there is a full text match predicate.&lt;/li&gt; &lt;/ul&gt; &lt;h4&gt;Content Discovery&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Name and general description of the purpose of the end point.&lt;/li&gt; &lt;li&gt;What organization/individual is maintaining the end point?&lt;/li&gt; &lt;li&gt;Contact for technical support, legal or administrative matters. Support and webmaster.&lt;/li&gt; &lt;li&gt;Ontologies used. This could be a list of graphs, each with a list of ontologies describing the data therein. Each graph would be listed with a rough estimate of size expressed in triples.&lt;/li&gt; &lt;li&gt;Topic - Each graph/ontology pair could have a number of identifiers drawn from standard taxonomies. Examples would be the Latin names of geni and species for biology, the HS code for customs, ISO code for countries, various industry specific classifications of goods and services.&lt;/li&gt; &lt;/ul&gt; &lt;h4&gt;Query Planning&lt;/h4&gt; &lt;p&gt;The end point should give a ballpark cardinality for the following combinations of G, S, P, O.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;G&lt;/li&gt; &lt;li&gt;G, P&lt;/li&gt; &lt;li&gt;G, P, O&lt;/li&gt; &lt;li&gt;G, S&lt;/li&gt; &lt;li&gt;G, S, P&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Based on our experience, these are the most interesting questions but for completeness, the entry point might offer an API allowing specifying a constant or wildcard for each of the four parts of a quad. If the &lt;a href=&quot;http://dbpedia.org/resource/Information&quot; id=&quot;link-id0x1891a2e0&quot;&gt;information&lt;/a&gt; is not readily available, &amp;quot;unknown&amp;quot; could be returned, together with the count of triples in the whole end point or the graph, if the graph is specified. Even if the end point does not support real time sampling of data for cardinality estimates, it would at least have an idea of the count of triples per graph, which is still far better than nothing.&lt;/p&gt; &lt;h4&gt;Query Feasibility&lt;/h4&gt; &lt;p&gt;Given the full SPARQL request, the end point could return the following data, without executing the query itself.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Syntax errors vs. parsed successfully?&lt;/li&gt; &lt;li&gt;Are there graph, predicate or subject literals which do not exist in this end point? Does this cause the query result to always be empty? What are these?&lt;/li&gt; &lt;li&gt;How many results are expected, according to the SPARQL compiler cost model? This is a row count, if the query is a construct or describe query, this is the count of rows that will go as input to the construct/describe.&lt;/li&gt; &lt;li&gt;What is the execution time, as guessed by the SPARQL compiler cost model?&lt;/li&gt; &lt;li&gt;Execution plan, in whatever implementation specific, in principle human readable format.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;All these elements would be optional.&lt;/p&gt; &lt;p&gt;This somewhat overlaps with the optimization questions but it may still be the case that it is more efficient to support a special interface for the optimization related questions.&lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Virtuoso&#39;s SQL Schema to RDF Ontology Mapping Language (1.0)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-10-18#1064</atom:id>
  <atom:published>2006-10-18T22:18:00Z</atom:published>
  <atom:updated>2006-11-17T18:24:25-05:00</atom:updated>
  <atom:content type="html">&lt;p&gt;A new technical white paper about our declarative language for SQL Schema to RDF Ontology Mapping has just been published.&lt;/p&gt; &lt;h2&gt;What is this?&lt;/h2&gt; &lt;p&gt;A declarative language adapted from SPARQL&amp;#39;s graph pattern language (N3/Turtle) for mapping SQL Data to RDF Ontologies. We currently refer to this as a Graph Pattern based RDF VIEW Definition Language.&lt;/p&gt; &lt;h2&gt;Why is it important?&lt;/h2&gt; &lt;p&gt;It provides an effective mechanism for exposing existing SQL Data as virtual RDF Data Sets (Graphs) negating the data duplication associated with generating physical RDF Graphs from SQL Data en route to persistence in a dedicated Triple Store. &lt;/p&gt; &lt;p&gt;Enterprise applications (traditional and web based) and most Web Applications (Web 1.0 and Web 2.0) sit atop relational databases, implying that SQL/RDF model and data integration is an essential element of the burgeoning &amp;quot;Data Web&amp;quot; (Semantic Web - Layer 1) comprehension and adoption process.&lt;/p&gt; &lt;p&gt;In a nutshell, this is a quick route for non disruptive exposure of existing SQL Data to SPARQL supporting RDF Tools and Development Environments.&lt;/p&gt; &lt;h2&gt;How does it work?&lt;/h2&gt; &lt;h3&gt;RDF Side&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;locate one or more Ontologies (e.g FOAF, SIOC, AtomOWL, SKOS etc.) that effectively defines the Concepts (Classes) and Terms (Predicates) to be exposed via your RDF Graph&lt;/li&gt; &lt;li&gt;Using the Virtuoso&amp;#39;s RDF View Definition Language declare a International Resource Identifier (or URI) for your Graph. Example:&lt;pre&gt;CREATE GRAPH IRI(&amp;quot;http://myopenlink.net/dataspace&amp;quot;)&lt;/pre&gt; &lt;/li&gt; &lt;li&gt;Then create Classes (Concepts), Class Properties/Predicates (Memb), and Class Instances (Inst) for the new Graph. Example: &lt;pre&gt;CREATE IRI CLASS odsWeblog:feed_iri &amp;quot;http://myopenlink.net/dataspace/kidehen/weblog/MyFeeds&amp;quot; ( in memb varchar not null, in inst varchar not null)&lt;/pre&gt; &lt;/li&gt; &lt;/ol&gt; &lt;h3&gt;SQL Side&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;If Virtuoso isn&amp;#39;t your SQL Data Store, Identify the ODBC or JDBC SQL data source(s) containing the SQL data to be mapped to RDF and then link the relevant tables into Virtuoso&amp;#39;s Virtual DBMS Layer&lt;/li&gt; &lt;li&gt;Then use the RDF View Definition Language&amp;#39;s graph pattern feature to generate SQL to RDF Mapping Template for your Graph. As shown in this &lt;a href=&quot;http://www.usnet.private:8889/wiki/main/Main/VOSSQLRDF#MappingOdsBlogToAtomOwlExample&quot;&gt;ODS Weblog -&amp;gt; AtomOWL Mapping example&lt;/a&gt;.&lt;/li&gt; &lt;/ol&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Object Relational Rediscovered?</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2006-07-13#1003</atom:id>
  <atom:published>2006-07-13T12:33:32Z</atom:published>
  <atom:updated>2008-04-16T16:13:26-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;Object Relational Rediscovered?&lt;/div&gt; &lt;p&gt;I have recently read some of Microsoft&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x173cea20&quot;&gt;ADO&lt;/a&gt; .NET 3 papers. I am reminded of the distant past when I designed Kubl, which later became OpenLink &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0x18bdfe68&quot;&gt;Virtuoso&lt;/a&gt;. So I will reminisce and speculate a little.&lt;/p&gt; &lt;p&gt;So now is the time when polymorphic queries and mixing relational style joins and object style navigation become politically acceptable and even recommended and there finally is a workable solution to having a foreign key in the database and a pointer or set of pointers in the client application. Not to mention change tracking so as to be able to update in-memory &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xd6f0ae0&quot;&gt;data&lt;/a&gt; structures and commit a delta against the database without explicit update statements.&lt;/p&gt; &lt;p&gt;All these questions existed already in the mid 90s and earlier. Since I was coming from OO and LISP into the database world, I even felt these questions to be important. The solution in the earliest Kubl was to have inheritance between tables, what became the &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xddcdac0&quot;&gt;SQL&lt;/a&gt; 2K &lt;code&gt;UNDER&lt;/code&gt; clause, and a virtual column called &lt;code&gt;_ROW&lt;/code&gt; that would select a serialization of the primary key entry. Then there was the function &lt;code&gt;row_key()&lt;/code&gt;, which when applied to a &lt;code&gt;_ROW&lt;/code&gt; virtual column would return a database-wide unique identifier of the row, containing the key info and the key part values plus which subtable of the table was at hand. Then there was a function for dereferencing a &lt;code&gt;row_key&lt;/code&gt; for getting the &lt;code&gt;_ROW&lt;/code&gt;. And one could store &lt;code&gt;row_keys&lt;/code&gt; into columns and dereference these in queries. Within SQL, one could use the &lt;code&gt;row_column&lt;/code&gt; function to extract individual column values from a &lt;code&gt;row_key&lt;/code&gt; or &lt;code&gt;_ROW&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;This was all fine server side. But we also had a client for Franz Inc.&amp;#39;s Allegro Common Lisp that talked to Kubl&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0xde2c348&quot;&gt;ODBC&lt;/a&gt; listener. This client had the basic statements and prepared statements and result sets, parameters and array parameters, a little like &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x156409f8&quot;&gt;JDBC&lt;/a&gt; does now. But the extra was that we could do a mapping between a Lisp struct or object and a database key, so the &lt;code&gt;_ROW&lt;/code&gt; would automatically materialize into the Lisp struct or class instance. And the mapping between these materializations and the &lt;code&gt;row_keys&lt;/code&gt; identifying them in the database were kept in a thread environment called object space. Updates could be relational-style &lt;code&gt;UPDATEs&lt;/code&gt; or consist of putting a &lt;code&gt;_ROW&lt;/code&gt; serialization in database format back into the Kubl store with a single SQL function.&lt;/p&gt; &lt;p&gt;This was different from just storing object serializations into LOB columns, as is often done, insofar as the object classes and data members were really database tables and columns, thus native to the DBMS, not just opaque data to be processed client-side only.&lt;/p&gt; &lt;p&gt;So it was then possible to program a little like is shown in the ADO .NET 3 demos today, some ten years later.&lt;/p&gt; &lt;p&gt;Some of these functions still exist in Virtuoso, albeit in a deprecated state, and there is no client that can use these to any advantage. Indeed, we dropped this line of work when Kubl became Virtuoso, mostly because there was no standard and no client applications that would use such features. Instead, we concentrated on virtual &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0x175a7b10&quot;&gt;RDBMS&lt;/a&gt;, transparently accessing any third party data via ODBC.&lt;/p&gt; &lt;p&gt;Now however, as objects, both native SQL and Java and .NET, have become mainstream citizens of relational databases in general, Virtuoso and otherwise, and as Microsoft has legitimized accessing whole objects and not only scalar columns in result sets as part of ADO .NET 3, these things might be worth a second look.&lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Object Relational Rediscovered?</atom:title>
  <atom:id>http://www.openlinksw.com/weblog/oerling/?date=2006-07-13#1002</atom:id>
  <atom:published>2006-07-13T11:38:41Z</atom:published>
  <atom:updated>2008-04-16T16:13:08.000001-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;I have recently read some of Microsoft&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/ADO.NET&quot; id=&quot;link-id0x151feed0&quot;&gt;ADO&lt;/a&gt; .NET 3 papers. I am reminded of the distant past when I designed Kubl, which later became OpenLink &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xd1e5a50&quot;&gt;Virtuoso&lt;/a&gt;. So I will reminisce and speculate a little.&lt;/p&gt; &lt;p&gt;So now is the time when polymorphic queries and mixing relational style joins and object style navigation become politically acceptable and even recommended and there finally is a workable solution to having a foreign key in the database and a pointer or set of pointers in the client application. Not to mention change tracking so as to be able to update in-memory &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0xd6877c0&quot;&gt;data&lt;/a&gt; structures and commit a delta against the database without explicit update statements.&lt;/p&gt; &lt;p&gt;All these questions existed already in the mid 90s and earlier. Since I was coming from OO and LISP into the database world, I even felt these questions to be important. The solution in the earliest Kubl was to have inheritance between tables, what became the &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0xc703880&quot;&gt;SQL&lt;/a&gt; 2K &lt;code&gt;UNDER&lt;/code&gt; clause, and a virtual column called &lt;code&gt;_ROW&lt;/code&gt; that would select a serialization of the primary key entry. Then there was the function &lt;code&gt;row_key()&lt;/code&gt;, which when applied to a &lt;code&gt;_ROW&lt;/code&gt; virtual column would return a database-wide unique identifier of the row, containing the key info and the key part values plus which subtable of the table was at hand. Then there was a function for dereferencing a &lt;code&gt;row_key&lt;/code&gt; for getting the &lt;code&gt;_ROW&lt;/code&gt;. And one could store &lt;code&gt;row_keys&lt;/code&gt; into columns and dereference these in queries. Within SQL, one could use the &lt;code&gt;row_column&lt;/code&gt; function to extract individual column values from a &lt;code&gt;row_key&lt;/code&gt; or &lt;code&gt;_ROW&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;This was all fine server side. But we also had a client for Franz Inc.&amp;#39;s Allegro Common Lisp that talked to Kubl&amp;#39;s &lt;a href=&quot;http://dbpedia.org/resource/Open_Database_Connectivity&quot; id=&quot;link-id0xdbceda0&quot;&gt;ODBC&lt;/a&gt; listener. This client had the basic statements and prepared statements and result sets, parameters and array parameters, a little like &lt;a href=&quot;http://dbpedia.org/resource/Java_Database_Connectivity&quot; id=&quot;link-id0x181a27b0&quot;&gt;JDBC&lt;/a&gt; does now. But the extra was that we could do a mapping between a Lisp struct or object and a database key, so the &lt;code&gt;_ROW&lt;/code&gt; would automatically materialize into the Lisp struct or class instance. And the mapping between these materializations and the &lt;code&gt;row_keys&lt;/code&gt; identifying them in the database were kept in a thread environment called object space. Updates could be relational-style &lt;code&gt;UPDATEs&lt;/code&gt; or consist of putting a &lt;code&gt;_ROW&lt;/code&gt; serialization in database format back into the Kubl store with a single SQL function.&lt;/p&gt; &lt;p&gt;This was different from just storing object serializations into LOB columns, as is often done, insofar as the object classes and data members were really database tables and columns, thus native to the DBMS, not just opaque data to be processed client-side only.&lt;/p&gt; &lt;p&gt;So it was then possible to program a little like is shown in the ADO .NET 3 demos today, some ten years later.&lt;/p&gt; &lt;p&gt;Some of these functions still exist in Virtuoso, albeit in a deprecated state, and there is no client that can use these to any advantage. Indeed, we dropped this line of work when Kubl became Virtuoso, mostly because there was no standard and no client applications that would use such features. Instead, we concentrated on virtual &lt;a href=&quot;http://dbpedia.org/resource/Relational_database_management_system&quot; id=&quot;link-id0xd06fd40&quot;&gt;RDBMS&lt;/a&gt;, transparently accessing any third party data via ODBC.&lt;/p&gt; &lt;p&gt;Now however, as objects, both native SQL and Java and .NET, have become mainstream citizens of relational databases in general, Virtuoso and otherwise, and as Microsoft has legitimized accessing whole objects and not only scalar columns in result sets as part of ADO .NET 3, these things might be worth a second look.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Contd: Ajax Database Connectivity Demos</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-06-01#988</atom:id>
  <atom:published>2006-06-02T02:48:00Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt; 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 (&lt;a href=&quot;http://www.openlinksw.com/oat/&quot;&gt;OpenLink Ajax Toolkit&lt;/a&gt;) and its Ajax Database Connectivity layer. &lt;/p&gt; &lt;p&gt; The screencasts covered the following functionality realms: &lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=982&quot;&gt;SQL Query By Example (basic)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=983&quot;&gt;SQL Query By Example (advanced - pivot table construction)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=981&quot;&gt;Web Form Design (basic database driven map based mashup)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=985&quot;&gt;Web Form Design (advanced database driven map based mashup)&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt; 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: &lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/queries/customer_qry1.xml&quot;&gt;Live XML Document produced using SQL Query By Example (basic)&lt;/a&gt; (you can use drag and drop columns across the grid to reorder and sort presentation)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/reports/Pivots/employee_sales_by_ship_country_pivot.xml&quot;&gt;Live XML Document produced using QBE and Pivot Functionality&lt;/a&gt; (you can drag and drop the aggregate columns and rows to create your own views etc..)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/reports/MapMashups/country_flags_google_frm2.xml&quot;&gt;Basic database driven map based mashup&lt;/a&gt; (works with FireFox, Webkit, Camino; click on pins to see national flag)&lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/reports/MapMashups/employee_sales_by_ship_country_pivot_google.xml&quot;&gt;Advanced database driven map based mashup&lt;/a&gt; (works with FireFox, Webkit, Camino; records, 36, 87, and 257 will unveil pivots via lookup pin)&lt;/li&gt; &lt;/ol&gt; &lt;p&gt; Notes: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;“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.&lt;/li&gt; &lt;li&gt;The “Ajax Call In Progress..” dialog is there to show live interaction with a remote database (in this case &lt;a href=&quot;http://virtuoso.openlinksw.com&quot;&gt;Virtuoso&lt;/a&gt; but this could be any ODBC, JDBC, OLEDB, ADO.NET, or XMLA accessible data source)&lt;/li&gt; &lt;li&gt;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&lt;/li&gt; &lt;/ul&gt; &lt;p&gt; You can see a full collection of saved documents at the following locations: &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/reports/MapMashups/&quot;&gt;My Mashups demo directory&lt;/a&gt; (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) &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/reports/Pivots/&quot;&gt;My Pivots demo directory&lt;/a&gt; (other Pivots will be added as I build and save them) &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/public_demos/queries/&quot;&gt;My Saved Queries&lt;/a&gt; (a collection of saved QBE generated queries)&lt;/li&gt; &lt;/ul&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Screencast: Yahoo! Maps variation of Ajax Database Connectivity Maps Mash-up</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#986</atom:id>
  <atom:published>2006-05-26T22:49:00Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">This is a Yahoo! maps variation of the &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=985&quot;&gt;Google Maps based Forms Designer mash-up screencast&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Screencast: Building Database Centric Web 2.0 Mash-ups using Ajax Database Connectivity</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#985</atom:id>
  <atom:published>2006-05-26T22:38:00Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">This screencast covers the actual codeless process of building a database centric Web 2.0 mash-up using OAT&amp;#39;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 &lt;a href=&quot;http://www.openlinksw.com/dataspace/%7Ekidehen/blog/public/Screencasts/oat-formdesigner-mashup-yahoo-maps-demo1.mov&quot;&gt;Yahoo! Mapping Service screencast demo&lt;/a&gt; that follows this post). Also note that fact that in this demonstration I actually incorporate the Pivot building functionality from an earlier &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=983&quot;&gt;Ajax based Pivot Building screencast&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Screencast: Using a Live Report (mash-up) that exploits AJAX Database Connectivity</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#984</atom:id>
  <atom:published>2006-05-26T22:27:00Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">Another demo. This time around you are looking at a quick and dirty mashup assembled using the &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=981&quot;&gt;OAT FormDesigner&lt;/a&gt;. There is a follow-on demo that shows how this was assembled (no coding whatsoever!).&lt;br /&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Building Pivot Tables using Ajax Database Connectivity</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#983</atom:id>
  <atom:published>2006-05-26T22:08:00Z</atom:published>
  <atom:updated>2008-02-04T20:43:35.000004-05:00</atom:updated>
  <atom:content type="html">This screencast demo (enclosure attached) is a continuation from my earlier &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=982&quot;&gt;Ajax and QBE screencast&lt;/a&gt; demo. This time the focus is on building Excel like Pivot tables using data exposed via Ajax Database Connectivity.&lt;br /&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Screencast: Ajax Database Connectivity and SQL Query By Example</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-26#982</atom:id>
  <atom:published>2006-05-26T21:59:00Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">AJAX Database Connectivity is the Data Access Component of OAT (&lt;a href=&quot;http://www.openlinksw.com/oat/&quot;&gt;OpenLink AJAX Toolkit&lt;/a&gt;). It&amp;#39;s basically an &lt;a href=&quot;http://www.xmla.org/&quot;&gt;XML for Analysis&lt;/a&gt; (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. &lt;br /&gt; &lt;br /&gt;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).&lt;br /&gt; &lt;br /&gt;AJAX Database connectivity only requires your target DBMS to be XMLA (direct), ODBC, JDBC, OLEDB, or ADO.NET accessible. &lt;br /&gt; &lt;br /&gt;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&lt;br /&gt; &lt;br /&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>SPARQL Parameterized Queries (Virtuoso using SPARQL in SQL)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-11#973</atom:id>
  <atom:published>2006-05-11T18:54:47Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;h2&gt;SPARQL with SQL (Inline) &lt;/h2&gt; &lt;p&gt;Virtuoso extends its SQL3 implementation with syntax for integrating SPARQL into queries and subqueries.Thus, as part of a SQL SELECT query or subquery, one can write the SPARQL keyword and a SPARQL query as part of query text processed by Virtuoso&amp;#39;s SQL Query Processor.&lt;/p&gt; &lt;h4&gt;Example 1 (basic) : &lt;/h4&gt; &lt;p&gt;Using Virtuoso&amp;#39;s Command line or the Web Based ISQL utility type in the following (note: &amp;quot;SQL&amp;gt;&amp;quot; is the command line prompt for the native ISQL utility): &lt;/p&gt; &lt;pre&gt;SQL&amp;gt; sparql select distinct ?p where { graph ?g { ?s ?p ?o } };&lt;/pre&gt; &lt;p&gt;Which will return the following: &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt; p varchar ---------- http://example.org/ns#b http://example.org/ns#d http://xmlns.com/foaf/0.1/name http://xmlns.com/foaf/0.1/mbox ... &lt;/pre&gt; &lt;/blockquote&gt; &lt;h4&gt;Example 2 (a subquery variation):&lt;/h4&gt; &lt;pre&gt;SQL&amp;gt; select distinct subseq (p, strchr (p, &amp;#39;#&amp;#39;)) as fragment from (sparql select distinct ?p where { graph ?g { ?s ?p ?o } } ) as all_predicates where p like &amp;#39;%#%&amp;#39; ;&lt;/pre&gt; &lt;blockquote&gt; &lt;pre&gt; fragment varchar ---------- #query #data #name #comment ...&lt;/pre&gt; &lt;/blockquote&gt; &lt;h3&gt;Parameterized Queries:&lt;/h3&gt; &lt;p&gt;You can pass parameters to a SPARQL query using a Virtuoso-specific syntax extension. &amp;#39;??&amp;#39; or &amp;#39;$?&amp;#39; indicates a positional parameter similar to &amp;#39;?&amp;#39; in standard SQL. &amp;#39;??&amp;#39; can be used in graph patterns or anywhere else where a SPARQL variable is accepted. The value of a parameter should be passed in SQL form, i.e. this should be a number or an untyped string. An IRI ID can not be passed, but an absolute IRI can. Using this notation, a dynamic SQL capable client (ODBC, JDBC, ADO.NET, OLEDB, XMLA, or others) can execute parametrized SPARQL queries using parameter binding concepts that are common place in dynamic SQL. Which implies that existing SQL applications and development environments (PHP, Ruby, Python, Perl, VB, C#, Java, etc.) are capable of issuing SPARQL queries via their existing SQL bound data access channels against RDF Data stored in Virtuoso. &lt;/p&gt; &lt;p&gt;Note: This is the Virtuoso equivalent of a &lt;a href=&quot;http://seaborne.blogspot.com/2006/05/parameterized-queries_07.html&quot;&gt;recently published example using Jena &lt;/a&gt;(a Java based RDF Triple Store).&lt;/p&gt; &lt;h3&gt;Example:&lt;/h3&gt; &lt;p&gt;Create a Virtuoso Function by execting the following: &lt;/p&gt; &lt;pre&gt;SQL&amp;gt; create function param_passing_demo (); { declare stat, msg varchar; declare mdata, rset any; exec (&amp;#39;sparql select ?s where { graph ?g { ?s ?? ?? }}&amp;#39;, stat, msg, vector (&amp;#39;http://www.w3.org/2001/sw/DataAccess/tests/data/Sorting/sort-0#int1&amp;#39;, 4 ), -- Vector of two parameters 10, -- Max. result-set rows mdata, -- Variable for handling result-set metadata rset -- Variable for handling query result-set ); return rset[0][0]; } &lt;/pre&gt; Test new &amp;quot;param_passing_demo&amp;quot; function by executing the following: &lt;br /&gt; &lt;pre&gt;SQL&amp;gt; select param_passing_demo (); &lt;/pre&gt; &lt;p&gt;Which returns: &lt;/p&gt; &lt;blockquote&gt; &lt;pre&gt; callret VARCHAR _______________________________________________________________________________&lt;/pre&gt; &lt;pre&gt;http://www.w3.org/2001/sw/DataAccess/tests/data/Sorting/sort-0#four&lt;/pre&gt; &lt;pre&gt;1 Rows. -- 00000 msec.&lt;/pre&gt; &lt;/blockquote&gt; &lt;h3&gt;Â &lt;/h3&gt; &lt;h3&gt;Using SPARQL in SQL Predicates:&lt;/h3&gt; &lt;p&gt;A SPARQL ASK query can be used as an argument of the SQL EXISTS predicate.&lt;/p&gt; &lt;pre&gt;create function sparql_ask_demo () returns varchar { if (exists (sparql ask where { graph ?g { ?s ?p 4}})) return &amp;#39;YES&amp;#39;; else return &amp;#39;NO&amp;#39;; }; &lt;/pre&gt; &lt;p&gt; &lt;br /&gt; Test by executing: &lt;/p&gt; &lt;pre&gt;SQL&amp;gt; select sparql_ask_demo (); &lt;/pre&gt; &lt;p&gt;Which returns:&lt;/p&gt; &lt;pre&gt;_________________________ YES&lt;/pre&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>&quot;Free&quot; Databases: Express vs. Open-Source RDBMSs</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2006-05-05#968</atom:id>
  <atom:published>2006-05-05T16:02:17Z</atom:published>
  <atom:updated>2006-07-21T07:21:57.000006-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;Very detailed and insightful peek into the state of affairs re. database engines (Open &amp;amp; Closed Source).&lt;/p&gt; &lt;p&gt;I added the missing piece regarding the &amp;quot;Virtuoso Conductor&amp;quot; (the Web based Admin UI for Virtuoso) to the original post below. I also added a link to our live SPARQL Demo so that anyone interested can start playing around with SPARQL and SPARQL integrated into SQL right away.&lt;/p&gt; &lt;p&gt;Another good thing about this post is the vast amount of valuable links that it contains. To really appreciate this point simply visit my Linkblog (excuse the current layout :-) - a Tab if you come in via the front door of this &lt;a href=&quot;http://www.infoworld.com/opinions/index.html&quot;&gt;Data Space&lt;/a&gt; (what I used to call &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/&quot;&gt;My Weblog Home Page&lt;/a&gt;).&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt; &lt;a href=&quot;http://oakleafblog.blogspot.com/2006/05/free-databases-express-vs-open-source.html&quot;&gt;&amp;quot;Free&amp;quot; Databases: Express vs. Open-Source RDBMSs&lt;/a&gt;: &amp;quot;&lt;span style=&quot;font-family: verdana;&quot;&gt;Open-source relational database management systems (RDBMSs) are gaining IT mindshare at a rapid pace. As an example, &lt;em&gt;BusinessWeek&lt;/em&gt;&amp;#39;s February 6, 2006 &amp;#39;&lt;/span&gt; &lt;a href=&quot;http://www.businessweek.com/technology/content/feb2006/tc20060206_918648.htm&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Taking On the Database Giants&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&amp;#39; article asks &amp;#39;Can open-source upstarts compete with Oracle, IBM, and Microsoft?&amp;#39; and then provides the answer: &amp;#39;It&amp;#39;s an uphill battle, but customers are starting to look at the alternatives.&amp;#39;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;There&amp;#39;s no shortage of open-source alternatives to look at. The &lt;em&gt;BusinessWeek&lt;/em&gt; article concentrates on &lt;a href=&quot;http://www.mysql.com/&quot;&gt;MySQL&lt;/a&gt;, which &lt;em&gt;BW&lt;/em&gt; says &amp;#39;is trying to be the Ikea of the database world: cheap, needs some assembly, but has a sleek, modern design and does the job.&amp;#39; The article also discusses &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;Postgre[SQL]&lt;/a&gt; and &lt;a href=&quot;http://www.ingres.com/products/Prod_Ingres_2006.html&quot;&gt;Ingres&lt;/a&gt;, as well as &lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt;, an Oracle clone created from PostgreSQL code*. Sun includes &lt;a href=&quot;http://www.sun.com/software/solaris/postgres.jsp&quot;&gt;PostgreSQL with Solaris 10&lt;/a&gt; and, as of April 6, 2006, with &lt;a href=&quot;http://docs.sun.com/app/docs/doc/819-2183/6n4g726uc?a=view&quot;&gt;Solaris Express&lt;/a&gt;.**&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;*Frank Batten, Jr., the investor who originally funded Red Hat, invested a reported &lt;/span&gt; &lt;a href=&quot;http://www.theinquirer.net/?article=28201&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;$16 million into Great Bridge&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt; with the hope of making a business out of providing paid support to PostgreSQL users. &lt;/span&gt; &lt;a href=&quot;http://news.com.com/2100-1001-272715.html&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;Great Bridge stayed in business only 18 months&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;, having &lt;/span&gt; &lt;a href=&quot;http://news.com.com/2100-1001-268915.html&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;missed an opportunity to sell the business to Red Hat&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt; and finding that selling &lt;/span&gt; &lt;a href=&quot;http://news.com.com/2100-1001-269729.html&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;$50,000-per-year support packages&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt; for an open-source database wasn&amp;#39;t easy. As Batten concluded, &amp;#39;We could not get customers to pay us big dollars for support contracts.&amp;#39; Perhaps EnterpriseDB will be more successful with a choice of &lt;/span&gt; &lt;a href=&quot;http://www.enterprisedb.com/shop.do?cID=10000&amp;pID=10001&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;$5,000, $3,000, or $1,000 annual support subscriptions&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;.&lt;/span&gt; &lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana; font-size: 85%;&quot;&gt;**Interestingly, &lt;a href=&quot;http://www.sun.com/smi/Press/sunflash/2005-11/sunflash.20051115.4.xml&quot;&gt;Oracle announced in November 2005&lt;/a&gt; that Solaris 10 is &amp;#39;its preferred development and deployment platform for most x64 architectures, including x64 (x86, 64-bit) AMD Opteron and Intel Xeon processor-based systems and Sun&amp;#39;s UltraSPARC(R)-based systems.&amp;#39;&lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;There is a surfeit of reviews of current MySQL, PostgreSQL andâto a lesser extentâIngres implementations. These three open-source RDBMSs come with their own or third-party management tools. These systems compete against free versions of commercial (proprietary) databases: &lt;a href=&quot;http://msdn.microsoft.com/vstudio/express/sql/&quot;&gt;SQL Server 2005 Express Edition&lt;/a&gt; (and its MSDE 2000 and 1.0 predecessors), &lt;a href=&quot;http://www.oracle.com/technology/products/database/xe/index.html&quot; target=&quot;_blank&quot;&gt;Oracle Database 10g Express Edition&lt;/a&gt;, &lt;a href=&quot;http://www-306.ibm.com/software/data/db2/udb/db2express/download.html&quot; target=&quot;_blank&quot;&gt;IBM DB2 Express-C&lt;/a&gt;, and &lt;a href=&quot;http://www.sybase.com/linux_promo&quot; target=&quot;_blank&quot;&gt;Sybase ASE Express Edition for Linux&lt;/a&gt; where database size and processor count limitations aren&amp;#39;t important. Click &lt;a href=&quot;http://www.ftponline.com/special/sqlserver/rjennings-overview/table4.aspx&quot;&gt;here&lt;/a&gt; for a summary of recent &lt;em&gt;InfoWorld&lt;/em&gt; reviews of the full versions of these four databases plus MySQL, which should be valid for Express editions also. The &lt;a href=&quot;http://www.ftponline.com/special/sqlserver/&quot;&gt;FTPOnline Special Report&lt;/a&gt; article, &amp;#39;Microsoft SQL Server Turns 17,&amp;#39; that contains the preceding table is &lt;a href=&quot;http://www.ftponline.com/special/sqlserver/rjennings-overview/&quot;&gt;here&lt;/a&gt; (requires registration.)&lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;SQL Server 2005 Express Edition SP-1 Advanced Features&lt;/span&gt; &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=4C6BA9FD-319A-4887-BC75-3B02B5E48A40&amp;displaylang=en&quot;&gt;SQL Server 2005 Express Edition with Advanced Features&lt;/a&gt; enhances SQL Server 2005 Express Edition (SQL Express or SSX) dramatically, so it deserves special treatment here. SQL Express gains full text indexing and now supports SQL Server Reporting Services (SSRS) on the local SSX instance. The SP-1 with Advanced Features setup package, which Microsoft released on April 18, 2006, installs the release version of SQL Server Management Studio Express (SSMSE) and the full version of Business Intelligence Development Studio (BIDS) for designing and editing SSRS reports. My &amp;#39;&lt;a href=&quot;http://www.ftponline.com/special/sqlserver/rjennings-sp1/&quot;&gt;Install SP-1 for SQL Server 2005 and Express&lt;/a&gt;&amp;#39; article for FTPOnline&amp;#39;s &lt;a href=&quot;http://www.ftponline.com/special/sqlserver/&quot;&gt;SQL Server Special Report&lt;/a&gt; provides detailed, illustrated installation instructions for and related information about the release version of SP-1. SP-1 makes SSX the most capable of all currently available Express editions of commercial RDBMSs for Windows.&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;OpenLink Software&amp;#39;s Virtuoso Open-Source Edition&lt;/span&gt; &lt;/strong&gt; &lt;br /&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;http://openlinksw.com/&quot;&gt;OpenLink Software&lt;/a&gt; announced an &lt;a href=&quot;http://virtuoso.openlinksw.com/wiki/main/Main/&quot;&gt;open-source version&lt;/a&gt; of it&amp;#39;s &lt;a href=&quot;http://virtuoso.openlinksw.com/&quot;&gt;Virtuoso Universal Server&lt;/a&gt; commercial DBMS on April 11, 2006. On the initial date of this post, May 2, 2006, Virtuoso Open-Source Edition (VOS) was virtually under the radar as an open-source product. According to &lt;a href=&quot;http://www.openlinksw.com/press/VOSPressRelease.htm&quot;&gt;this press release&lt;/a&gt;, the new edition includes:&lt;/span&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;/p&gt; &lt;blockquote&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;/blockquote&gt; &lt;blockquote&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;http://demo.openlinksw.com/sparql_demo/&quot;&gt;SPARQL compliant RDF Triple Store&lt;/a&gt; &lt;/li&gt; &lt;li&gt;SQL-200n Object-Relational Database Engine (SQL, XML, and Free Text) &lt;/li&gt; &lt;li&gt;Integrated BPEL Server and Enterprise Service Bus&lt;/li&gt; &lt;li&gt;WebDAV and Native File Server &lt;/li&gt; &lt;li&gt;Web Application Server that supports PHP, Perl, Python, ASP.NET, JSP, etc. &lt;/li&gt; &lt;li&gt;Runtime Hosting for Microsoft .NET, Mono, and Java &lt;/li&gt; &lt;/ul&gt;VOS only lacks the virtual server and replication features that are offered by the commercial edition. VOS includes a Web-based administration tool called the &amp;quot;Virtuoso Conductor&amp;quot; According to &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=951&amp;sid=&amp;realm=&quot;&gt;Kingsley Idehen&amp;#39;s Weblog&lt;/a&gt;, &amp;#39;The Virtuoso build scripts have been successfully tested on Mac OS X (Universal Binary Target), Linux, FreeBSD, and Solaris (AIX, HP-UX, and True64 UNIX will follow soon). A Windows Visual Studio project file is also in the works (ETA some time this week).&amp;#39;&lt;br /&gt; &lt;br /&gt; &lt;em&gt;InfoWorld&lt;/em&gt;&amp;#39;s Jon Udell has tracked Virtuoso&amp;#39;s progress since &lt;a href=&quot;http://www.infoworld.com/article/02/04/12/020415plvirtuoso_1.html&quot;&gt;2002&lt;/a&gt;, with an &lt;a href=&quot;http://www.infoworld.com/article/03/03/21/12virtuoso_1.html&quot;&gt;additional article in 2003&lt;/a&gt; and a &lt;a href=&quot;http://weblog.infoworld.com/udell/2006/04/28.html#a1437&quot;&gt;one-hour podcast with Kingsley Idehen&lt;/a&gt; on April 26, 2006. A major talking point for Virtuoso is its support for Atom 0.3 syndication and publication, Atom 1.0 syndication and (forthcoming) publication, and future support for Google&amp;#39;s &lt;a href=&quot;http://code.google.com/apis/gdata/overview.html&quot;&gt;GData protocol&lt;/a&gt;, as mentioned in &lt;a href=&quot;http://www.openlinksw.com/blog/%7Ekidehen/index.vspx?page=&amp;id=965&quot;&gt;this Idehen post&lt;/a&gt;. Yahoo!&amp;#39;s &lt;a href=&quot;http://jeremy.zawodny.com/blog/archives/006687.html&quot;&gt;Jeremy Zawodny&lt;/a&gt; points out that the &amp;#39;fingerprints&amp;#39; of &lt;a href=&quot;http://oakleafblog.blogspot.com/2005/11/adam-bosworth-learning-from-web-and.html&quot;&gt;Adam Bosworth&lt;/a&gt;, Google&amp;#39;s VP of Engineering and the primary force behind the development of Microsoft Access, &amp;#39;are all over GData.&amp;#39; Click &lt;a href=&quot;http://search.blogger.com/?as_q=bosworth&amp;ie=UTF-8&amp;ui=blg&amp;amp;bl_url=oakleafblog.blogspot.com&amp;x=50&amp;y=10&quot;&gt;here&lt;/a&gt; to display a list of all OakLeaf posts that mention Adam Bosworth.&lt;br /&gt; &lt;br /&gt;One application for the GData protocol is querying and updating the Google Base database independently of the Google Web client, as mentioned by Jeremy: &amp;#39;It&amp;#39;s not about building an easier onramp to Google Base. ... Well, it is. But, again, that&amp;#39;s the small stuff.&amp;#39; Click &lt;a href=&quot;http://search.blogger.com/?as_q=%22google+base%22&amp;ie=UTF-8&amp;x=50&amp;y=9&amp;q=%22google+base%22+blogurl:oakleafblog.blogspot.com&amp;filter=0&amp;ui=blg&amp;sa=N&amp;start=0&quot;&gt;here&lt;/a&gt; for a list of posts about my experiences with Google Base. Watch for a future OakLeaf post on the subject as the GData APIs gain ground.&lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;strong&gt;Open-Source and Free Embedded Database Contenders&lt;/strong&gt; &lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;Open-source and free embedded SQL databases are gaining importance as the number and types of mobile devices and OSs proliferate. Embedded databases usually consist of Java classes or Windows DLLs that are designed to minimize file size and memory consumption. Embedded databases avoid the installation hassles, heavy resource usage and maintenance cost associated with client/server RDBMSs that run as an operating system service.&lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;Andrew Hudson&amp;#39;s December 2005 &amp;#39;&lt;a href=&quot;http://www.theinquirer.net/?article=28201&quot;&gt;Open Source databases rounded up and rodeoed&lt;/a&gt;&amp;#39; review for The Enquirer provides brief descriptions of one commercial and eight open source database purveyors/products: Sleepycat, MySQL, PostgreSQL, Ingres, InnoBase, Firebird, IBM Cloudscape (a.k.a, Derby), Genezzo, and Oracle. Oracle &lt;a href=&quot;http://www.sleepycat.com/&quot;&gt;Sleepycat&lt;/a&gt;* isn&amp;#39;t an SQL Database, Oracle &lt;a href=&quot;http://www.innodb.com/index.php&quot;&gt;InnoDB&lt;/a&gt;* is an OEM database engine that&amp;#39;s used by MySQL, and &lt;a href=&quot;http://www.genezzo.com/&quot;&gt;Genezzo&lt;/a&gt; is a multi-user, multi-server distributed database engine written in Perl. These special-purpose databases are beyond the scope of this post.&lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;* Oracle &lt;a href=&quot;http://www.oracle.com/sleepycat/index.html&quot;&gt;purchased Sleepycat Software, Inc. in February 2006&lt;/a&gt; and &lt;/span&gt; &lt;a href=&quot;http://www.oracle.com/innodb/index.html&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;purchased Innobase OY in October 2005&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;. The press release states: &amp;#39;Oracle intends to continue developing the InnoDB technology and expand our commitment to open source software.&amp;#39; &lt;/span&gt; &lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana; font-size: 85%;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt; &lt;a href=&quot;http://db.apache.org/derby/&quot;&gt;&lt;strong&gt;Derby&lt;/strong&gt; &lt;/a&gt; is an open-source release by the &lt;a href=&quot;http://www.apache.org/&quot;&gt;Apache Software Foundation&lt;/a&gt; of the &lt;a href=&quot;http://www.infoworld.com/article/04/08/03/HNcloudscape_1.html&quot;&gt;Cloudscape Java-based database that IBM acquired&lt;/a&gt; when it bought Informix in 2001. IBM offers a commercial release of Derby as &lt;a href=&quot;http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0408cline/&quot;&gt;IBM Cloudscape 10.1&lt;/a&gt;. Derby is a Java class library that has a relatively light footprint (2 MB), which make it suitable for &lt;a href=&quot;http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0503stumpf/&quot;&gt;client/server synchronization&lt;/a&gt; with the IBM DB2 Everyplace Sync Server in &lt;a href=&quot;http://www-128.ibm.com/developerworks/library/wi-cloud/&quot;&gt;mobile applications&lt;/a&gt;. The IBM DB2 Everyplace Express Edition isn&amp;#39;t open source or free*, so it doesn&amp;#39;t qualify for this post. The same is true for the corresponding Sybase SQL Anywhere components.**&lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;p&gt; &lt;span style=&quot;font-family: verdana; font-size: 85%;&quot;&gt;* IBM DB2 Everyplace Express Edition with synchronization costs $379 per server (up to two processors) and $79 per user. DB2 Everyplace Database Edition (without DB2 synchronization) is $49 per user. (Prices are based on those when &lt;/span&gt; &lt;a href=&quot;http://news.earthweb.com/wireless/article.php/3107101&quot;&gt;&lt;span style=&quot;font-family: verdana; font-size: 85%;&quot;&gt;IBM announced version 8&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-family: verdana; font-size: 85%;&quot;&gt; in November 2003.)&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: verdana; font-size: 85%;&quot;&gt;** Sybase&amp;#39;s iAnywhere subsidiary calls SQL Anywhere &amp;#39;the industry&amp;#39;s leading mobile database.&amp;#39; A Sybase SQL Anywhere Personal DB seat license with synchronization to SQL Anywhere Server is $119; the cost without synchronization wasn&amp;#39;t available from the Sybase Web site. Sybase SQL Anywhere and IBM DB2 Everyplace perform similar replication functions.&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;Sun&amp;#39;s &lt;a href=&quot;http://developers.sun.com/prodtech/javadb/&quot;&gt;&lt;strong&gt;Java DB&lt;/strong&gt;&lt;/a&gt;, another commercial version of Derby, comes with the &lt;a href=&quot;http://www.sun.com/software/solaris/&quot;&gt;Solaris Enterprise Edition&lt;/a&gt;, which bundles Solaris 10, the Java Enterprise System, developer tools, desktop infrastructure and N1 management software. A recent Between the Lines blog entry by ZDNet&amp;#39;s David Berlind waxes enthusiastic over the use of &lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=2298&quot;&gt;Java DB embedded in a browser&lt;/a&gt; to provide offline persistence. RedMonk analyst &lt;a href=&quot;http://www.redmonk.com/jgovernor/archives/001151.html&quot;&gt;James Governor&lt;/a&gt; and &lt;em&gt;eWeek&lt;/em&gt;&amp;#39;s &lt;a href=&quot;http://www.eweek.com/article2/0,1895,1902407,00.asp&quot;&gt;Lisa Vaas&lt;/a&gt; wrote about the use of Java DB as a local data store when &lt;a href=&quot;http://www.sauria.com/blog/2005/12/13#1440&quot;&gt;Tim Bray announced Sun&amp;#39;s Derby derivative&lt;/a&gt; and &lt;a href=&quot;http://blogs.sun.com/roller/page/FrancoisOrsini?entry=derby_apachecon_demo&quot;&gt;Francois Orsini&lt;/a&gt; demonstrated Java DB embedded in the Firefox browser at the ApacheCon 2005 conference.&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt; &lt;a href=&quot;http://www.firebirdsql.org/&quot;&gt;&lt;strong&gt;Firebird&lt;/strong&gt; &lt;/a&gt; is derived from Borland&amp;#39;s InterBase 6.0 code, the first commercial relational database management system (RDBMS) to be released as open source. Firebird has excellent support for SQL-92 and comes in three versions: Classic, SuperServer and Embedded for Windows, Linux, Solaris, HP-UX, FreeBSD and MacOS X. The embedded version has a 1.4-MB footprint. Release Candidate 1 for Firebird 2.0 became available on March 30, 2006 and is a major improvement over earlier versions. &lt;a href=&quot;http://www.borland.com/us/products/interbase/index.html&quot;&gt;Borland continues to promote InterBase&lt;/a&gt;, now at version 7.5, as a small-footprint, embedded database with commercial Server and Client licenses.&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt; &lt;a href=&quot;http://www.sqlite.org/index.html&quot;&gt;&lt;strong&gt;SQLite&lt;/strong&gt; &lt;/a&gt; is a featherweight C library for an embedded database that implements most SQL-92 entry- and transitional-level requirements (some through the JDBC driver) and supports transactions within a tiny 250-KB code footprint. &lt;a href=&quot;http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers&quot;&gt;Wrappers&lt;/a&gt; support a multitude of languages and operating systems, including Windows CE, SmartPhone, Windows Mobile, and Win32. SQLite&amp;#39;s primary &lt;a href=&quot;http://www.sqlite.org/omitted.html&quot;&gt;SQL-92 limitations&lt;/a&gt; are lack of nested transactions, inability to alter a table design once committed (other than with RENAME TABLE and ADD COLUMN operations), and foreign-key constraints. SQLite provides read-only views, triggers, and 256-bit encryption of database files. A downside is the the entire database file is &lt;a href=&quot;http://weblogs.asp.net/jgalloway/archive/2006/04/12/442615.aspx&quot;&gt;locked when while a transaction is in progress&lt;/a&gt;. SQLite uses file access permissions in lieu of GRANT and REVOKE commands. Using SQLite involves no license; its code is entirely in the public domain.&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: Verdana; font-size: 85%;&quot;&gt;The Mozilla Foundation&amp;#39;s &lt;a href=&quot;http://wiki.mozilla.org/Mozilla2:Unified_Storage&quot;&gt;Unified Storage wiki&lt;/a&gt; says this about SQLite: &amp;#39;SQLite will be the back end for the unified store [for Firefox]. Because it implements a SQL engine, we get querying &amp;#39;for free&amp;#39;, without having to invent our own query language or query execution system. Its code-size footprint is moderate (250k), but it will hopefully simplify much existing code so that the net code-size change should be smaller. It has exceptional performance, and supports concurrent access to the database. Finally, it is released into the public domain, meaning that we will have no licensing issues.&amp;#39;&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;Vieka Technology, Inc.&amp;#39;s &lt;a href=&quot;http://vieka.com/esql.htm&quot;&gt;&lt;strong&gt;eSQL 2.11&lt;/strong&gt;&lt;/a&gt; is a port of SQLite to Windows Mobile (Pocket PC and Smartphone) and Win32, and includes development tools for Windows devices and PCs, as well as a .NET native data provider. A conventional ODBC driver also is available. eSQL for Windows (Win32) is free for personal and commercial use; eSQL for Windows Mobile requires a license for commercial (for-profit or business) use.&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt; &lt;a href=&quot;http://hsqldb.org/&quot;&gt;&lt;strong&gt;HSQLDB&lt;/strong&gt; &lt;/a&gt; isn&amp;#39;t on most reviewers&amp;#39; radar, which is surprising because it&amp;#39;s the default database for &lt;a href=&quot;http://www.openoffice.org/&quot;&gt;OpenOffice.org&lt;/a&gt; (OOo) 2.0&amp;#39;s &lt;a href=&quot;http://www.openoffice.org/product/base.html&quot;&gt;Base&lt;/a&gt; suite member. HSQLDB 1.8.0.1 is an open-source (BSD license) Java dembedded database engine based on Thomas Mueller&amp;#39;s original Hypersonic SQL Project. Using OOo&amp;#39;s Base feature requires installing the Java 2.0 Runtime Engine (which is not open-source) or the presence of an alternative open-source engine, such as Kaffe. My prior posts about OOo Base and HSQLDB are &lt;a href=&quot;http://oakleafblog.blogspot.com/2005/10/openoffice-base-20-vs-microsoft-access.html&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://oakleafblog.blogspot.com/2005/10/openoffice-base-20-vs-microsoft-access_22.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://oakleafblog.blogspot.com/2005/10/openoffice-20-base-matches-microsoft.html&quot;&gt;here&lt;/a&gt;.&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;The &lt;a href=&quot;http://hsqldb.sourceforge.net/web/hsqlDocsFrame.html&quot;&gt;HSQLDB 1.8.0 documentation&lt;/a&gt; on SourceForge states the following regarding SQL-92 and later conformance:&lt;/span&gt; &lt;/p&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt; &lt;blockquote&gt; &lt;p&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;HSQLDB 1.8.0 supports the dialect of SQL defined by SQL standards 92, 99 and 2003. This means where a feature of the standard is supported, e.g. left outer join, the syntax is that specified by the standard text. Many features of SQL92 and 99 up to Advanced Level are supported and here is support for most of SQL 2003 Foundation and several optional features of this standard. However, certain features of the Standards are not supported so no claim is made for full support of any level of the standards. &lt;/span&gt; &lt;/p&gt; &lt;/blockquote&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;Other less well-known embedded databases designed for or suited to mobile deployment are &lt;/span&gt; &lt;a href=&quot;http://www.mimer.com/leftright.asp?secId=172&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;Mimer SQL Mobile&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt; and &lt;/span&gt; &lt;a href=&quot;http://www.vistadb.net/&quot;&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;VistaDB 2.1&lt;/span&gt; &lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;. Neither product is open-source and require paid licensing; VistaDB requires a small up-front payment by developers but offers royalty-free distribution.&lt;/span&gt; &lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-family: Verdana;&quot;&gt;Java DB, Firebird embedded, SQLite and eSQL 2.11 are contenders for lightweight PC and mobile device database projects that aren&amp;#39;t Windows-only.&lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;strong&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;SQL Server 2005 Everywhere&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt; &lt;/strong&gt; &lt;br /&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;If you&amp;#39;re a Windows developer, SQL Server Mobile is the logical embedded database choice for mobile applications for Pocket PCs and Smartphones. Microsoft&amp;#39;s April 19, 2006 press release delivered the news that SQL Server 2005 Mobile Editon (SQL Mobile or SSM) would gain a big brotherâSQL Server 2005 Everywhere Edition. &lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;Currently, the SSM client is licensed (at no charge) to run in production on devices with Windows CE 5.0, Windows Mobile 2003 for Pocket PC or Windows Mobile 5.0, or on PCs with Windows XP Tablet Edition only. SSM also is licensed for development purposes on PCs running Visual Studio 2005.&lt;/span&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt; Smart Device replication with SQL Server 2000 SP3 and later databases has been the most common application so far for SSM.&lt;br /&gt; &lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;By the end of 2006, Microsoft will license SSE for use on &lt;em&gt;all&lt;/em&gt; PCs running any Win32 version or the preceding device OSs. A version of SQL Server Management Studio Express (SSMSE)âupdated to support SSEâis expected to release by the end of the year. These features will qualify SSE as &lt;em&gt;the universal embedded database&lt;/em&gt; for Windows client and smart-device applications. &lt;/span&gt; &lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-family: verdana;&quot;&gt;For more details on SSE, read &lt;a href=&quot;http://weblogs.asp.net/jgalloway/archive/2006/04/11/442451.aspx&quot;&gt;John Galloway&amp;#39;s April 11, 2006 blog post&lt;/a&gt; and my &amp;#39;&lt;a href=&quot;http://www.ftponline.com/special/sqlserver/rjennings-mobile/&quot;&gt;SQL Server 2005 Mobile Goes Everywhere&lt;/a&gt;&amp;#39; article for the &lt;a href=&quot;http://www.ftponline.com/special/sqlserver/&quot;&gt;FTPOnline Special Report on SQL Server&lt;/a&gt;.&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&amp;quot; &lt;p&gt;(Via &lt;a href=&quot;http://oakleafblog.blogspot.com&quot;&gt;OakLeaf Systems&lt;/a&gt;.)&lt;/p&gt; &lt;/span&gt; &lt;/blockquote&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Have RSS feeds killed the email star?</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2005-02-28#704</atom:id>
  <atom:published>2005-02-28T20:36:19Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;p&gt;&lt;a href=&quot;http://networks.silicon.com/webwatch/0,39024667,39128215,00.htm&quot;&gt;Have RSS feeds killed the email star? &lt;/a&gt;silicon.com Feb 28 2005 12:58PM GMT &lt;/p&gt;&lt;/blockquote&gt; &lt;div align=&quot;right&quot;&gt;[via &lt;a href=&quot;http://www.moreover.com/rss&quot;&gt;Moreover - XML and metadata news&lt;/a&gt;]&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.answers.com/topic/rss-protocol&quot;&gt;RSS&lt;/a&gt; and other &lt;a href=&quot;http://www.answers.com/main/ntquery?s=xml&amp;method=2&amp;gwp=13&quot;&gt;XML&lt;/a&gt; based syndication formats (&lt;a href=&quot;http://www.answers.com/main/ntquery?method=4&amp;dsid=2222&amp;dekey=Resource+Description+Framework&amp;gwp=8&amp;curtab=2222_1&quot;&gt;RDF&lt;/a&gt;, &lt;a href=&quot;http://www.answers.com/topic/atom-standard?hl=atom&amp;hl=syndication&quot;&gt;Atom&lt;/a&gt;, etc.)&amp;nbsp;allow organizations to syndicate their value propositions via feeds. Thus,&amp;nbsp;instead of,&amp;nbsp;depending solely on&amp;nbsp;sending out HTML based advertorial emails (which end up in Spam Folders 75% of the time anyhow) to targets such as; suspects, leads, and customers. You&amp;nbsp;can rely on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_2.0&quot;&gt;Web 2.0 &lt;/a&gt;fabric for &lt;a href=&quot;http://diveintomark.org/archives/2002/06/02/important_change_to_the_link_tag&quot;&gt;auto-discovery&lt;/a&gt; of syndicated feeds covering marketing collateral such as;&amp;nbsp;&lt;a href=&quot;http://rss.openlinksw.com/uda.xml&quot;&gt;features &amp;amp; benefits data&lt;/a&gt;, product documentation (ODBC/JDBC &lt;a href=&quot;http://docs.openlinksw.com/mt/mtdocs.opml&quot;&gt;Multi-Tier&lt;/a&gt;,&amp;nbsp;ODBC/JDBC &lt;a href=&quot;http://docs.openlinksw.com/st/litedocs.opml&quot;&gt;Single-Tier&lt;/a&gt;,&amp;nbsp;and &lt;a href=&quot;http://docs.openlinksw.com/virtuoso/virtdocs.opml&quot;&gt;Virtuoso&lt;/a&gt; ), &lt;a href=&quot;http://demo.openlinksw.com/tutorial/rss.vsp&quot;&gt;product functionality tutorials&lt;/a&gt;, and screencasts (&lt;a href=&quot;http://support.openlinksw.com/viewlets/uda_viewlets_rss.vsp&quot;&gt;UDA &lt;/a&gt;, &lt;a href=&quot;http://support.openlinksw.com/viewlets/virtuoso_viewlets_rss.vsp&quot;&gt;Virtuoso&lt;/a&gt;, and &lt;a href=&quot;http://support.openlinksw.com/viewlets/utilities_viewlets_rss.vsp&quot;&gt;ODBC Benchmark &amp;amp; Troubleshooting&amp;nbsp;Utilities&lt;/a&gt;) etc. &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Cognitive Dissonance</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2005-02-25#695</atom:id>
  <atom:published>2005-02-25T00:58:21Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;&lt;a href=&quot;http://www.answers.com/main/ntquery?s=definition+cognitive+dissonance&amp;method=2&amp;gwp=13&quot;&gt;Cognitive dissonance&lt;/a&gt; is how &lt;a href=&quot;http://blogs.msdn.com/dareobasanjo/archive/2005/02/17/375367.aspx&quot;&gt;Dare Obasanjo&lt;/a&gt;&amp;nbsp;aptly describes the emergence of some&amp;nbsp;of the &lt;a href=&quot;http://www.answers.com/main/ntquery?s=smart+tags&amp;method=2&amp;gwp=13&quot;&gt;Smart Tags &lt;/a&gt;concepts previously introduced by Microsoft and now emulated by the new google toolbar&#39;s autolink feature&amp;nbsp;(&lt;a href=&quot;http://glinden.blogspot.com/&quot;&gt;Greg Linden&lt;/a&gt; explains the problem with &lt;a href=&quot;http://glinden.blogspot.com/2005/02/autolink-in-google-toolbar.html&quot;&gt;clarity&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Anyway, back to cognitive dissonance. Could this be the reason for the following?&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Open Source products are increasingly database specific even though they could be database independent via Open Source ODBC SDK efforts such as &lt;a href=&quot;http://www.iodbc.org&quot;&gt;iODBC&lt;/a&gt; and &lt;a href=&quot;http://www.unixodbc.org&quot;&gt;unixODBC&lt;/a&gt;. We increasingly&amp;nbsp;narrowing our choices down to database specific &quot;Closed Source&quot; or database specific &quot;Open Source&quot; solutions and somehow deem this&amp;nbsp;to be&amp;nbsp;progress&lt;br&gt;&lt;/li&gt; &lt;li&gt;The prevalent use of free standards compliant data access&amp;nbsp;drivers (&lt;a href=&quot;http://en.wikipedia.org/wiki/ODBC&quot;&gt;ODBC&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/JDBC&quot;&gt;JDBC&lt;/a&gt;, and &lt;a href=&quot;http://en.wikipedia.org/wiki/ADO.NET&quot;&gt;ADO.NET&lt;/a&gt;) or their native counterparts that remain vulnerable to simple password hacks (there are databases behind those dynamic web sites!!) as none of these have any notion of &quot;rules based&quot; authentication and data access policy&lt;br&gt;&lt;/li&gt; &lt;li&gt;The time-tested fallacy that: &quot;select * from table&quot; defines a viable &lt;a href=&quot;http://en.wikipedia.org/wiki/RDBMS&quot;&gt;RDBMS&lt;/a&gt; engine since Transaction Atomicity, Concurrency, Isolation, and Durability (ACID) mean zip! Ditto scrollable cursors, stored procedures, and other presumably useless aspects of any marginably decent RDBMS engine&lt;br&gt;&lt;/li&gt; &lt;li&gt;Failing to comprehend that a &lt;a href=&quot;http://en.wikipedia.org/wiki/Weblog&quot;&gt;Weblog&lt;/a&gt; is your property (if you have a personal blog) not the property of the vendor hosting your service (that important issue of separating data ownership and data storage again). You may have&amp;nbsp;heard about, or experienced,&amp;nbsp;total loss of weblog and/or weblog&amp;nbsp;archives arising from weblog engine or blog service provider changeovers&lt;br&gt;&lt;/li&gt; &lt;li&gt;Failing to see the synergy between personal/group/corporate information stores (aka &lt;a href=&quot;http://www.openlinksw.com/blog/search.vspx?blogid=127&amp;q=infoBase&amp;type=text&amp;output=html&quot;&gt;infobase&lt;/a&gt;)&amp;nbsp;such as Wikis, Weblogs, and the burgeoning semantic web. &lt;a href=&quot;http://weblog.infoworld.com/udell/2005/02/22.html#a1183&quot;&gt;Jon Udell&lt;/a&gt;&amp;nbsp;for instance, is trying to get the point across via his tireless collection of&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/XML_query_language&quot;&gt;XQuery&lt;/a&gt;/&lt;a href=&quot;http://en.wikipedia.org/wiki/XPath&quot;&gt;XPath&lt;/a&gt; based queries aimed at the blogosphere section of the burgeoning semantic web. Here are some of mine (scoped to this weblog):&lt;br&gt;&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Security related posts to date (&lt;a href=&quot;http://www.openlinksw.com/blog/search.vspx?blogid=127&amp;q=//p[contains%28.%2C%27security%27%29]&amp;type=xpath&amp;output=html&quot;&gt;XPath&lt;/a&gt; query)&lt;br&gt;&lt;/li&gt; &lt;li&gt;Infobase related posts to date (&lt;a href=&quot;http://www.openlinksw.com/blog/search.vspx?blogid=127&amp;q=infoBase&amp;type=text&amp;output=html&quot;&gt;Free Text&lt;/a&gt; search)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt; &lt;p&gt;And more...&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Email As A Platform</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2005-02-10#680</atom:id>
  <atom:published>2005-02-10T17:01:57Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;p&gt;&lt;a href=&quot;http://techdirt.com/articles/20050209/1329235_F.shtml&quot;&gt;Email As A Platform&lt;/a&gt; It looks like more people are starting to realize that email is more than it seems. Especially given the drastic increase in storage size of web-based email applications, more people are realizing that &lt;a href=&quot;http://news.bbc.co.uk/2/hi/business/4167633.stm&quot;&gt;email is basically a personal database&lt;/a&gt;. People simply store information in their email, from contact information that was emailed to them to schedule information to purchase tracking from emailed receipts. Lots of people email messages to themselves, realizing that email is basically the best &quot;permanent&quot; filing system they have. That&#39;s part of the reason why good email search is so important. Of course, what the article doesn&#39;t discuss is the next stage of this evolution. If you have a database of important information, the next step is to build useful applications on top of it. In other words, people are starting to realize that email, itself, is a &lt;i&gt;platform&lt;/i&gt; for personal information management. &lt;/p&gt;&lt;/blockquote&gt; &lt;div align=&quot;right&quot;&gt;[via &lt;a href=&quot;http://www.techdirt.com/&quot;&gt;Techdirt&lt;/a&gt;]&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;Yep! And this is where the Unified Storage vision comes into play. Many years ago the same issues emerged in the business application realm, and at the time the issue at hand was: separating the DBMS engine from the Application logic. This is what the SQL Access Group (SAG) addressed via the CLI that laid the foundation for ODBC, JDBC, and recent derivatives; OLE DB and ADO.NET. &lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;Most of us live inside our email applications and the need to integrate the content of emails, address books, notes, calendars with other data sources (Web Portal,&amp;nbsp;Blogs, Wikis, CRM, ERP, and more)&amp;nbsp;as part of our application interaction cycles and domain specific workflow is finally becoming obvious.&amp;nbsp; There is a need for separation of the application/service layer&amp;nbsp;from the storage engine across each one of these functionality realms. XML, RDF, and Triple Stores (RDF / Semantic Data Stores) collectively provide a standards based framework for achieving this goal. On the other hand so does WinFS albeit total proprietary (by this I mean none standards compliant) at the current time.&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;As you can already see there&amp;nbsp;are numerous applications (conventional or hosted) that address email, address books, bookmarking, notes, calendars, blogs, wikis, crm etc. specifically, but next to none that address the obvious&amp;nbsp;need&amp;nbsp;for transparent integration across each functionality realm&amp;nbsp;- the ultimate goal.&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;Yes, you know what I am about to say! &lt;a href=&quot;http://virtuoso.openlinksw.com&quot;&gt;OpenLink Virtuoso&lt;/a&gt; is the platform for developing and/or implementing these next generation solutions. We have also decided to go one step further by developing a number of applications that demonstrate the&amp;nbsp;vision (and ultimate reality);&amp;nbsp;and each of these applications (and the inherent integration tapestry) will be the&amp;nbsp;subject of a future Virtuoso Application specific&amp;nbsp;post.&lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Preventable SQL DBMS Vulnerabilities</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2004-05-17#546</atom:id>
  <atom:published>2004-05-18T00:42:08Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;Here are some excerpts (inlined) with my comments (outlined)&amp;nbsp;from an &lt;a href=&quot;http://www.db2mag.com/showArticle.jhtml?articleID=18901175&quot;&gt;interesting article&lt;/a&gt;&amp;nbsp;on SQL DBMS exploits and vulnerabilities by &lt;a href=&quot;http://www.appsecinc.com/&quot;&gt;Aaron C. Newman&lt;/a&gt;, for &lt;a href=&quot;http://www.db2mag.com/show&quot;&gt;DB2 Magazine&lt;/a&gt;&amp;nbsp;titled &quot;6 Security Secrets Attackers don&#39;t want You To Know&quot;.&lt;/p&gt; &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;p&gt;How secure is your data? Looking at your information management resources through a would-be intruder&#39;s eyes can help you find (and fix) vulnerabilities.&lt;/p&gt;&lt;/blockquote&gt; &lt;p dir=&quot;ltr&quot;&gt;Naturally :-)&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;p&gt;When E. F. Codd developed his relational data model in 1970, the business world was a different place. Almost 35 years after his seminal work appeared, RDBMSs that sprung from Codd&#39;s ideas are the standard for storing corporate information. And, with government and industry regulations dictating what kinds of information companies have to store, manage, and audit (and for how long), protecting this information is more important than ever. Unfortunately, it&#39;s also more challenging&lt;/p&gt; &lt;p&gt;Even in 1985, when &lt;a href=&quot;http://www.databaseanswers.com/codds_rules.htm&quot;&gt;Dr. Codd published 12 guidelines for RDBMSs&lt;/a&gt;, there was little concern for data security. In those days, gaining access to a database was so difficult that advanced security features on the database were irrelevant. &lt;/p&gt; &lt;p&gt;Today, RDBMSs carry the lifeblood of every organization. Note the use of the plural: Organizations now have many databases that are decentralized in terms of use and security controls. E-business demands that data access be extended to customers, partners, suppliers, and other parties who were rarely considered in the early data management days. With all this availability ? not to mention pressure from an array of government and industry regulations (see the sidebar, &lt;a href=&quot;http://www.db2mag.com/showArticle.jhtml?articleID=18901175#sidebar&quot;&gt;&quot;Security and Compliance&quot;&lt;/a&gt;) ? the need to control exactly who can access or modify data is becoming paramount. &lt;/p&gt;&lt;/blockquote&gt; &lt;p dir=&quot;ltr&quot;&gt;Absolute facts, that are still partially understood at best. For instance we are still in a so called &quot;Information Age&quot; in which standards based data access remains an issue of contempt instead of absolute necessity. &lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;There are a number of prevailing myths about standards based data access that continue to cloak reality:&lt;/p&gt; &lt;ol dir=&quot;ltr&quot;&gt; &lt;li&gt; &lt;div&gt;ODBC, JDBC, ADO.NET, OLEDB all deliver poor performance (compared to their native, proprietary, and database specific counterparts; native interfaces)&lt;br&gt;&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div&gt;You can&#39;t really right generic database applications with these standards due to inconsistencies in the DBMS implementations of SQL (not true! there are many aspects of the specs that address these concerns if only a majority of driver vendors would implement these features, and the application developers actually used them by seeking drivers with full implementations).&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Even if the above were true (which I refute strongly), how about the general security vulnerabilities that affect both Native, and Standards compliant, data access interfaces?&lt;/p&gt; &lt;p&gt;Aaron&#39;s article does a good job of highlighting 6 areas of vulnerability:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;div&gt;DBMS Defaults (usernames and passwords)&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div&gt;Authentication (at connect time)&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div&gt;Database Privileges&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div&gt;Fixpaks &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div&gt;Buffer Overflows&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div&gt;SQL Injection&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;What I have been able to do very quickly (thanks to blogging, and the power of a blog engine that supports &lt;a href=&quot;http://www.openlinksw.com/blog/~kidehen/index.vspx?id=543&quot;&gt;WebDAV&lt;/a&gt;), is write a &lt;a href=&quot;http://www.openlinksw.com/blog/~kidehen/articles/uda_rule_book_sql_attacks.htm&quot;&gt;tabulated response to each of the items &lt;/a&gt;(bar Fixpaks) indicating how the &lt;a href=&quot;http://www.openlinksw.com/info/mtproduct.htm&quot;&gt;OpenLink Multi-Tier Data Access Drivers &lt;/a&gt;(for ODBC, JDBC, ADO.NET, and OLEDB) protect corporate databases from each of these vulnerabilities.&lt;/p&gt; &lt;p&gt;To cut a long story short, we are increasingly living a contradiction where the terms &quot;simple&quot; and &quot;free&quot; are supposed to lead us to products that can adequately handle the challenges of an increasingly sophisticated grid of inter-connecting point. &lt;/p&gt; &lt;p&gt;I have been asked on numerous occassions, &quot;How can you build a company and business based on data access technology?&quot;. My reply is the same as usual, &quot;because everything comes down to data&quot;. If the data is compromised in anyway, then kiss Information, Knowledge, and everything else goodbye!&lt;/p&gt; &lt;table align=&quot;right&quot; border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; width=&quot;336&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Enterprise Databases get a grip on XML</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2004-01-06#442</atom:id>
  <atom:published>2004-01-06T23:17:07Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;blockquote style=&quot;margin-right: 0px;&quot; dir=&quot;ltr&quot;&gt; &lt;p&gt;&lt;a class=&quot;listLinkLrg&quot; title=&quot;http://newsletter.infoworld.com/t?ctl=4FEDB6:1F3948D&quot; href=&quot;http://newsletter.infoworld.com/t?ctl=4FEDB6:1F3948D&quot; target=&quot;_new&quot;&gt;&lt;strong&gt;&lt;font face=&quot;Verdana&quot;&gt;Databases get a grip on XML&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;/font&gt;&lt;font face=&quot;Verdana&quot;&gt;From &lt;a href=&quot;http://newsletter.infoworld.com/t?ctl=4FEDB6:1F3948D&quot;&gt;Inforworld&lt;/a&gt;.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;Verdana,Geneva,Arial,sans-serif&quot; size=&quot;2&quot;&gt;The next iteration of the SQL standard was supposed to arrive in 2003. But SQL standardization has always been a glacially slow process, so nobody should be surprised that SQL:2003 ? now known as SQL:200n ? isn?t ready yet. Even so, 2003 was a year in which XML-oriented data management, one of the areas addressed by the forthcoming standard, showed up on more and more developers? radar screens.ÃÂ  &lt;a title=&quot;http://newsletter.infoworld.com/t?ctl=4FEDB6:1F3948D&quot; href=&quot;http://newsletter.infoworld.com/t?ctl=4FEDB6:1F3948D&quot; target=&quot;_blank&quot;&gt;&amp;gt;&amp;gt; READ MORE&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;This article rounds up product for 2003 in the critical area of Enterprise Database Technology. It&amp;#39;s certainly provides an apt reflection of how Virtuoso compares with offerings from some the larger (but certainly slower to implement) database vendors in this space. As usual Jon Udell&amp;#39;s quote pretty much sums this up:&lt;/font&gt;&lt;/p&gt; &lt;blockquote style=&quot;margin-right: 0px;&quot; dir=&quot;ltr&quot;&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;!--StartFragment --&gt;&lt;span class=&quot;artText&quot;&gt;&lt;em&gt;&amp;quot;While the spotlight shone on the heavyweight contenders, a couple of agile innovators made noteworthy advances in 2003. &lt;/em&gt;&lt;a class=&quot;regularArticleU&quot; href=&quot;http://www.infoworld.com/699&quot;&gt;&lt;em&gt;OpenLink Software?s Virtuoso 3.0&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, which we reviewed in March, stole thunder from all three major players. Like Oracle, it offers a WebDAV-accessible XML repository. Like DB2 Information Integrator, it functions as database middleware that can perform federated ?joins? across SQL and XML sources. And like the forthcoming Yukon, it embeds the .Net CLR (Common Language Runtime), or in the case of Linux, Novell/Ximian?s Mono.&amp;quot;&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;Albeit still somewhat unknown to the broader industry we have remained true our &amp;quot;innovator&amp;quot; discipline, which still remains our chosen path to market leadership. Thus, its worth a quick Virtuoso release history, and featuresÃÂ recap as we get set to up the ante even further in 2004:&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;a href=&quot;http://www.openlinksw.com/press/virtuoso.htm&quot;&gt;1998 - Virtuoso&amp;#39;s initial public beta&lt;/a&gt; release with functional emphasis on Virtual Database Engine for ODBC and JDBC Data Sources.&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;a href=&quot;http://www.openlinksw.com/press/virtuoso1.htm&quot;&gt;1999 - Virtuoso&amp;#39;s official commercial&lt;/a&gt; release, with emphasis stillÃÂ on Virtual Database functionality for ODBC, JDBC accessible SQL Databases.&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;a href=&quot;http://www.openlinksw.com/press/v2releas.htm&quot;&gt;2000 - Virtuoso 2.0&lt;/a&gt; adds XML Storage, XPath, XML Schema, XQuery, XSL-T, WebDAV, SOAP, UDDI, HTTP, Replication, Free Text Indexing (*feature update*), POP3, and NNTP support.&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;a href=&quot;http://www.openlinksw.com/press/v27releas.htm&quot;&gt;2002 - Virtuoso 2.7&lt;/a&gt; extends Virtualization prowess beyond data access via enhancements to its Web Services protocol stack implementation by enabling SQL Stored Procedures to be published as Web Services. It also debutsÃÂ its Object-Relational engine enhancements that include theÃÂ incorporation of Java and Microsoft .NET Objects into its User Defined Type, User Defined Functions, and Stored ProcedureÃÂ offerings.&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;a href=&quot;http://www.openlinksw.com/press/virt3beta.htm&quot;&gt;2003 - Virtuoso 3.0&lt;/a&gt; extends data and application logic virtualization into the Application Server realm (basically a Virtual Application server too!), by adding support for ASP.NET, PHP, Java Server Pages runtime hosting (making applications built using any of these languages deployable using Virtuoso across all supported platforms).&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;Collectively each of these releases have contributed to a very premeditated architecture and vision that will ultimately unveil the inherent power of critical I.S infrastructure virtualizationÃÂ along the following lines; data storage, data access , and application logic via coherent integration of SQL, XML, Web Services, and Persistent Stored Modules (.NET, Java, and other object based component building blocks).&lt;/font&gt;&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;ÃÂ &lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>A Virtuoso of a Server</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-10-23#395</atom:id>
  <atom:published>2003-10-23T21:57:48Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;font size=&quot;2&quot;&gt; &lt;p&gt;&lt;a href=&quot;http://www.nwfusion.com/index.html&quot;&gt;NETWORK WORLD&lt;/a&gt; NEWSLETTER: MARK GIBBS ON WEB APPLICATIONS &lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;Today&amp;#39;s focus: A Virtuoso of a server&lt;/font&gt;&lt;/p&gt; &lt;p&gt;By &lt;a href=&quot;http://www.nwfusion.com/columnists/gibbs.html&quot;&gt;Mark Gibbs&lt;/a&gt;&lt;/p&gt; &lt;p&gt;One of the bigger drags of Web applications development is that building a system of even modest complexity is a lot like herding cats - you need a database, an applications server, an XML engine, etc., etc. And as they all come from different vendors you are faced with solving the constellation of integration issues that inevitably arise.&lt;/p&gt; &lt;p&gt;If you are lucky, your integration results in a smoothly functioning system. If not, you have a lot of spare parts flying in loose formation with the risk of a crash and burn at any moment.&lt;/p&gt; &lt;p&gt;An alternative is to look for all of these features and services in a single package but you&amp;#39;ll find few choices in this arena.&lt;/p&gt; &lt;p&gt;One that is available and looks very promising is OpenLink&amp;#39;s Virtuoso (see links below).&lt;/p&gt; &lt;p&gt;Virtuoso is described as a cross platform (runs on Windows, all Unix flavors, Linux, and Mac OS X) universal server that provides databases, XML services, a Web application server and supporting services all in a single package.&lt;/p&gt; &lt;p&gt;OpenLink&amp;#39;s list of supported standards is impressive and includes .Net, Mono, J2EE, XML Web Services (Simple Object Application Protocol, Web Services Description Language, WS-Security, Universal Description, Discovery and Integration), XML, XPath, XQuery, XSL-T, WebDav, HTTP, SMTP, LDAP, POP3, SQL-92, ODBC, JDBC and OLE-DB.&lt;/p&gt; &lt;p&gt;Virtuoso provides an HTTP-compliant Web Server; native XML document creation, storage and management; a Web services platform for creation, hosting and consumption of Web services; content replication and synchronization services; free text index server, mail delivery and storage and an NNTP server.&lt;/p&gt; &lt;p&gt;Another interesting feature is that with Virtuoso you can create Web services from existing SQL Stored Procedures, Java classes,&lt;/p&gt; &lt;p&gt;C++ classes, and &amp;#39;C&amp;#39; functions as well as create dynamic XML&lt;/p&gt; &lt;p&gt;documents from ODBC and JDBC data sources.&lt;/p&gt; &lt;p&gt;This is an enormous product and implies a serious commitment on the part of adopters due to its scope and range of services.&lt;/p&gt; &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;p&gt;&lt;em&gt;Virtuoso is enormous by virtue of its architectural ambitions, but actual disk requirements are&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/font&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Howl is Rendezvous for Windows and Linux</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-08-05#232</atom:id>
  <atom:published>2003-08-05T19:18:55Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;p dir=&quot;ltr&quot;&gt;Very interesting, we have basically ported Zeroconfig as released by Apple (in Open Source) too, and used it in both our &lt;a href=&quot;http://www.openlinksw.com/virtuoso/whatis.htm&quot;&gt;Virtuoso&lt;/a&gt; 3.x and &lt;a href=&quot;http://www.openlinksw.com/product.htm&quot;&gt;UDA&lt;/a&gt; 5.x products.&lt;/p&gt; &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;p&gt;&lt;a href=&quot;http://www.swampwolf.com/products/&quot;&gt;Howl&lt;/a&gt; is Rendezvous for Windows and Linux. [via &lt;a href=&quot;http://www.scripting.com/&quot;&gt;Scripting News&lt;/a&gt;]&lt;/p&gt;&lt;/blockquote&gt; &lt;p dir=&quot;ltr&quot;&gt;In the case of UDA you can configure ODBC and JDBC consumable data source names that are hosted on the server. Users can nownbspsimply picknbspDSNs from anbspcombo box and they are ready to make connections to remote databases from any ODBC, JDBC, OLE DB, or ADO.NET application.nbspAnother benefit ofnbspZeroconfignbspis that it facilitates centralized server side configuration which further enhances our server side session rules book;nbspwhich serves all our Multi-Tier data access drivers.&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;In the case of Virtuoso you are able to bind to pre-configured Virtuoso instances in exactly the same way.&lt;/p&gt; &lt;p dir=&quot;ltr&quot;&gt;Our Zeroconfig support has beennbspimplemented across Solaris, AIX, Digital UNIX, IRIX, HP-UX amongst others, but this is a project of interest all the same, and we may end up contributing to this effort.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Tim O&#39;Reilly about network aware software</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-07-07#201</atom:id>
  <atom:published>2003-07-07T20:51:35Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;p&gt;&lt;a href=&quot;http://blog.bitflux.ch/p1077.html&quot;&gt;Tim O&#39;Reilly about network aware software&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Tim O&#39;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 ;) ) &lt;/p&gt; &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;div align=&quot;left&quot;&gt;&quot;&lt;i&gt;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.)&lt;/i&gt;&quot; -- &lt;strong&gt;Edd Dumbill&lt;/strong&gt; &lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;[via &lt;a href=&quot;http://blog.bitflux.ch/&quot;&gt;Bitflux Blog&lt;/a&gt;]&lt;/div&gt;&lt;/blockquote&gt; &lt;div align=&quot;left&quot;&gt;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).&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;&lt;/div&gt; &lt;div align=&quot;left&quot;&gt;Tim O&#39;Reilly added the following items to Edd&#39;s list:&lt;/div&gt; &lt;div align=&quot;left&quot;&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;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 &quot;phonester&quot; where you could automatically ask peers for contact information. Of course, that leads to guideline 2. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; &lt;p&gt;Another application is discovery of &lt;a href=&quot;http://www.openlinksw.com/info/docs/uda50/mt/features.html#features&quot;&gt;ODBC data sources&lt;/a&gt;, 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 &lt;a href=&quot;http://www.openlinksw.com/virtuoso/whatis.htm&quot;&gt;XML Databases&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you assume ad-hoc networking, you have to automatically define levels of access. I&#39;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 &quot;group&quot; with &quot;on my buddy list&quot;, you get something quite powerful. Which leads me to... &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Buddy lists ought to be supported as a standard feature of many apps, and in a consistent way. What&#39;s more, our address books really ought to make it easy to indicate who is in a &quot;buddy list&quot; and support numerous overlapping lists for different purposes. &lt;br&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;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&#39;d find a web server there. While it wasn&#39;t required, it made web addresses eminently guessable. We missed the opportunity for xml.foo.com to mean &quot;this is where you get the data feed&quot; but it&#39;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... &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;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 &lt;a href=&quot;http://www.openlinksw.com/virtuoso&quot;&gt;Virtuoso&lt;/a&gt;, 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).&lt;/p&gt; &lt;ul&gt; &lt;li&gt;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&#39;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&#39;s detail page for the book.) And that leads to: &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/li&gt; &lt;li&gt;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 &quot;liquidity&quot; and free movement of data that will fuel the next great revolution in computer functionality. (I&#39;m doing a panel on this subject at next week&#39;s Open Source Convention, entitled &quot;&lt;a href=&quot;http://conferences.oreillynet.com/cs/os2003/view/e_sess/4526&quot;&gt;We Need a Bill of Rights for Web Services&lt;/a&gt;.&quot;) &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/li&gt; &lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt; &lt;div align=&quot;left&quot;&gt;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. &lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>&lt;p&gt;We all know that the only benchmark that matters, is the one that you run in-house using the systems that comprise your IT infrastructure. &lt;/p&gt;</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-06-25#183</atom:id>
  <atom:published>2003-06-25T13:27:02Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;P&gt;We all know that the only benchmark that matters, is the one that you run in-house using the systems that comprise your IT infrastructure. &lt;/P&gt; &lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;P&gt;&lt;A href=&quot;http://c.moreover.com/click/here.pl?r77267478&quot;&gt;Apple&#39;s benchmarks under fire&lt;/A&gt; ZDNet Jun 25 2003 7:13AM ET &lt;/P&gt; &lt;P&gt;[via &lt;A href=&quot;http://www.moreover.com/&quot;&gt;Moreover - ZDNet&lt;/A&gt;]&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P&gt;OpenLink Software has provided an Open Source benchmark utility that support Mac OS X, Linux, and UNIX. Thus, if mission critical database oriented performance is what is most relevant to your needs (as opposed to Photoshop) then simply download either one, or both of the following:&lt;/P&gt; &lt;P&gt;&lt;A href=&quot;http://oplweb2.openlinksw.com:8080/download/util.vsp&quot;&gt;OpenLink ODBC Bench&lt;/A&gt; (you can test TPC-A and TPC-C like performance of the G5 and compare against other platforms) via ODBC)&lt;/P&gt; &lt;P&gt;&lt;A href=&quot;http://oplweb2.openlinksw.com:8080/download/util.vsp&quot;&gt;OpenLink JDBC Bench &lt;/A&gt;(same thing using JDBC)&lt;/P&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Ingres - A Forgotten Database, the untold story</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-06-17#279</atom:id>
  <atom:published>2003-06-17T11:18:57Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;P&gt;&lt;A href=&quot;http://www.it-director.com/article.php?articleid=10951&quot;&gt;Ingres - A Forgottent Database The Untold Story&lt;/A&gt;&lt;/P&gt; &lt;P&gt;&lt;EM&gt;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&lt;/EM&gt;. [From &lt;A href=&quot;http://www.it-director.com/article.php?articleid=10951&quot;&gt;IT-Director&lt;/A&gt;]&lt;/P&gt; &lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt; &lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;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. &lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;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).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;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.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;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.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;The biggest challenge before any RDBMS based infrastructure today isn&#39;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. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;This is another way of understanding the burgeoning market for Virtual Databases, which in my opiion present the new frontier in database technology.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Web-enable Your Business Intelligence Using XML/A and ASP.NET</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-05-29#338</atom:id>
  <atom:published>2003-05-29T20:01:48Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">0</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Web-enable Your Business Intelligence Using XML/A and ASP.NET</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-05-29#66</atom:id>
  <atom:published>2003-05-29T20:01:48Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;P&gt;Don&#39;t you sometimes wish that accessing database data were easier, and you didn&#39;t have to deal with such things as OLE DB, ODBC, and JDBCthat you could use just one uniform approach to access the data regardless of the location and type? &lt;/P&gt; &lt;P&gt;&lt;EM&gt;Yes, but I don&#39;t see how any of the data access mechanisms listed have anything to do with the problem as each serves a different application domain.&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;Well, guess what? You won&#39;t have to wait too much longer to see this dream become reality. All major vendors are not only working on this issue seriously but have already started releasing SDKs for exactly this purpose. The point of commonality between them is XML. Like it or not, XML is becoming a standard part of programmers&#39; lives because it&#39;s simple and easy to understand structure make it a suitable format for transferring data between disparate applications and platforms. But the real power of XML lies in its ability to not only extend itself, but also define itself.&lt;BR&gt;&lt;BR&gt;&lt;EM&gt;This is all well and good but it is XML, yes a uniforming technology, but the opening paragraph undermines the pont! &lt;/EM&gt;&lt;/P&gt; &lt;P&gt;&lt;EM&gt;XML For Analysis is just another addition to the pool of data access mechanisms, it is an XML./SOAP based data access mechanism for Tabular and Mulitdimensional Data and without our implementation XMLA simply offers little to anyone trying to get at tabular data (SQL Data) as many of the current implementers fall into the OLAP camp, and there is no standard query language for persistenf CUBES (MDX from Microsoft is de facto at best). Thus, without Virtuoso tabular data (where the real data actually resides) is out of the picture.&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;&lt;EM&gt;So we say goodbye to ODBC, JDBC, OLE DB to get what exactly? From our perspective, another showcase opportunity, but for the innocent readers of this article I haven&#39;t got the faintest idea.&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>&lt;big&gt;SQL Injection FAQ &lt;/big&gt;</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-05-21#319</atom:id>
  <atom:published>2003-05-21T22:27:45Z</atom:published>
  <atom:updated>2006-12-04T08:41:24.000003-05:00</atom:updated>
  <atom:content type="html">&lt;p align=&quot;center&quot;&gt;&lt;font color=&quot;#0080c0&quot; size=&quot;2&quot;&gt;&lt;big&gt;&lt;strong&gt;&lt;big&gt;SQL Injection FAQ &lt;/big&gt;&lt;/strong&gt;&lt;/big&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align=&quot;center&quot;&gt; &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;strong&gt;&lt;font color=&quot;red&quot;&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;font color=&quot;red&quot;&gt;Â &lt;/font&gt;&lt;/strong&gt;&lt;a href=&quot;http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&amp;tabid=3&quot;&gt;&lt;strong&gt;&lt;font color=&quot;red&quot;&gt;&lt;a href=&quot;http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&amp;amp;;tabid=3&quot;&gt;http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&amp;amp;;tabid=3&lt;/a&gt;&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color=&quot;red&quot;&gt;Â &lt;/font&gt;&lt;/strong&gt; &lt;br /&gt; &lt;div align=&quot;center&quot;&gt; &lt;center&gt; &lt;table width=&quot;80%&quot; border=&quot;0&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td width=&quot;100%&quot;&gt; &lt;p&gt;&lt;big&gt;&lt;strong&gt;&lt;font size=&quot;2&quot;&gt;Are other SQL Servers (Sybase, Oracle, DB2) subject to SQL injection?&lt;/font&gt;&lt;/strong&gt;&lt;/big&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;Yes, to varying degrees. Here is a site that can get you more details on some of the issues with other SQL Servers. &lt;/font&gt;&lt;a href=&quot;http://www.owasp.org/&quot; target=&quot;_blank&quot;&gt;&lt;a href=&quot;http://www.owasp.org/&quot;&gt;&lt;font size=&quot;2&quot;&gt;http://www.owasp.org&lt;/font&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;What is SQL Injection and why is all this information not included in the regular FAQ?&lt;/b&gt; &lt;/font&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;SQL Injection is simply a term describing the act of passing SQL code into an application that was not intended by the developer. Â  Since this topic is not specifically restricted to SQL Server it is not included in the normal FAQ.Â  In fact, much of the problems that allow SQL injection are not the fault of the database server per-se but rather are due to poor input validation and coding at other code layers.Â  However, due to the serious nature and prevalence of this problem I feel its inclusion in a thorough discussion of SQL Server security is warranted.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;big&gt;&lt;strong&gt;&lt;font size=&quot;2&quot;&gt;What causes SQL Injection?&lt;/font&gt;&lt;/strong&gt;&lt;/big&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;SQL injection is usually caused by developers who use &amp;quot;string-building&amp;quot; techniques in order to execute SQL code.Â  For example, in a search page, the developer may use the following code to execute a query (VBScript/ASP sample shown):&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face=&quot;Courier New&quot; color=&quot;#ff0000&quot; size=&quot;2&quot;&gt;Set myRecordset = myConnection.execute(&amp;quot;SELECT * FROM myTable WHERE someText =&amp;#39;&amp;quot; &amp;amp; request.form(&amp;quot;inputdata&amp;quot;) &amp;amp; &amp;quot;&amp;#39;&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;The reason this statement is likely to introduce an SQL injection problem is that the developer has made a classic mistake - poor input validation.Â  We are trusting that user has not entered something malicious - something like the innocent looking single quote (&amp;#39;).Â  Let&amp;#39;s consider what would happen if a user entered the following text into the search form:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;&amp;#39; exec master..xp_cmdshell &amp;#39;net user test testpass /ADD&amp;#39; --&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;Then, when the query string is assembled and sent to SQL Server, the server will process the following code:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face=&quot;Courier New&quot; color=&quot;#ff0000&quot; size=&quot;2&quot;&gt;SELECT * FROM myTable WHERE someText =&amp;#39;&amp;#39; exec master..xp_cmdshell &amp;#39;net user test testpass /ADD&amp;#39;--&amp;#39;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;2&quot;&gt;Notice, the first single quote entered by the user closed the string and SQL Server eagerly executes the next SQL statements in the batch including a command to add a new user to the local accounts database.Â  If this application were running as &amp;#39;sa&amp;#39; and the MSSQLSERVER service is running with sufficient privileges we would now have an account with which to access this machine.Â  Also note the use of the comment operator (--) to force the SQL Server to ignore the trailing quote placed by the developer&amp;#39;s code.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.sqlsecurity.com/faq-inj.asp&quot;&gt;&lt;font size=&quot;2&quot;&gt;More&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#000000&quot; size=&quot;2&quot;&gt;Very intresting that these are all Native Interface based exploits.Â  So the security issue isn&amp;#39;t ODBC, JDBC, ADO.NET, or OLE DB specific (although they certainly increase the potential damage that can be unleashed via metadata analysis en route to that huge Cartesian Product ; the mother of all Exploits!). Our Session Rules Book was devised in 1993 with many of these issues in mind, and to this date there are no other ODBC/JDBC/OLE DB products out there that even come close to acknowledging this reality.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;/div&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>&lt;big&gt;SQL Injection FAQ &lt;/big&gt;</atom:title>
  <atom:id>http://www.openlinksw.com/blog/kidehen@openlinksw.com/blog/?date=2003-05-21#48</atom:id>
  <atom:published>2003-05-21T22:27:45Z</atom:published>
  <atom:updated>2006-06-22T08:56:58-04:00</atom:updated>
  <atom:content type="html">&lt;P align=center&gt;&lt;FONT color=#0080c0 size=2&gt;&lt;BIG&gt;&lt;STRONG&gt;&lt;BIG&gt;SQL Injection FAQ &lt;/BIG&gt;&lt;/STRONG&gt;&lt;/BIG&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P align=center&gt; &lt;P align=center&gt;&lt;STRONG&gt;&lt;FONT color=red&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;STRONG&gt;&lt;FONT color=red&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;A href=&quot;http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&amp;amp;tabid=3&quot;&gt;&lt;STRONG&gt;&lt;FONT color=red&gt;&lt;A href=&quot;http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&amp;amp;;tabid=3&quot;&gt;http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&amp;amp;;tabid=3&lt;/A&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=red&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt; &lt;DIV align=center&gt; &lt;CENTER&gt; &lt;TABLE width=&quot;80%&quot; border=0&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TD width=&quot;100%&quot;&gt; &lt;P&gt;&lt;BIG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Are other SQL Servers (Sybase, Oracle, DB2) subject to SQL injection?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/BIG&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT size=2&gt;Yes, to varying degrees. Here is a site that can get you more details on some of the issues with other SQL Servers. &lt;/FONT&gt;&lt;A href=&quot;http://www.owasp.org/&quot; target=_blank&gt;&lt;A href=&quot;http://www.owasp.org/&quot;&gt;&lt;FONT size=2&gt;http://www.owasp.org&lt;/FONT&gt;&lt;/A&gt;&lt;/A&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;B&gt;What is SQL Injection and why is all this information not included in the regular FAQ?&lt;/B&gt; &lt;/FONT&gt; &lt;P&gt;&lt;FONT size=2&gt;SQL Injection is simply a term describing the act of passing SQL code into an application that was not intended by the developer. &amp;nbsp; Since this topic is not specifically restricted to SQL Server it is not included in the normal FAQ.&amp;nbsp; In fact, much of the problems that allow SQL injection are not the fault of the database server per-se but rather are due to poor input validation and coding at other code layers.&amp;nbsp; However, due to the serious nature and prevalence of this problem I feel its inclusion in a thorough discussion of SQL Server security is warranted.&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;BIG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;What causes SQL Injection?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/BIG&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT size=2&gt;SQL injection is usually caused by developers who use &quot;string-building&quot; techniques in order to execute SQL code.&amp;nbsp; For example, in a search page, the developer may use the following code to execute a query (VBScript/ASP sample shown):&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT face=&quot;Courier New&quot; color=#ff0000 size=2&gt;Set myRecordset = myConnection.execute(&quot;SELECT * FROM myTable WHERE someText =&#39;&quot; &amp;amp; request.form(&quot;inputdata&quot;) &amp;amp; &quot;&#39;&quot;)&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT size=2&gt;The reason this statement is likely to introduce an SQL injection problem is that the developer has made a classic mistake - poor input validation.&amp;nbsp; We are trusting that user has not entered something malicious - something like the innocent looking single quote (&#39;).&amp;nbsp; Let&#39;s consider what would happen if a user entered the following text into the search form:&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT size=2&gt;&#39; exec master..xp_cmdshell &#39;net user test testpass /ADD&#39; --&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT size=2&gt;Then, when the query string is assembled and sent to SQL Server, the server will process the following code:&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT face=&quot;Courier New&quot; color=#ff0000 size=2&gt;SELECT * FROM myTable WHERE someText =&#39;&#39; exec master..xp_cmdshell &#39;net user test testpass /ADD&#39;--&#39;&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT size=2&gt;Notice, the first single quote entered by the user closed the string and SQL Server eagerly executes the next SQL statements in the batch including a command to add a new user to the local accounts database.&amp;nbsp; If this application were running as &#39;sa&#39; and the MSSQLSERVER service is running with sufficient privileges we would now have an account with which to access this machine.&amp;nbsp; Also note the use of the comment operator (--) to force the SQL Server to ignore the trailing quote placed by the developer&#39;s code.&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;A href=&quot;http://www.sqlsecurity.com/faq-inj.asp&quot;&gt;&lt;FONT size=2&gt;More&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt; &lt;P&gt;&lt;EM&gt;&lt;FONT color=#000000 size=2&gt;Very intresting that these are all Native Interface based exploits.&amp;nbsp; So the security issue isn&#39;t ODBC, JDBC, ADO.NET, or OLE DB specific (although they certainly increase the potential damage that can be unleashed via metadata analysis en route to that huge Cartesian Product ; the mother of all Exploits!). Our Session Rules Book was devised in 1993 with many of these issues in mind, and to this date there are no other ODBC/JDBC/OLE DB products out there that even come close to acknowledging this reality.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;/DIV&gt;</atom:content>
 </atom:entry>
</atom:feed>