content
| - %VOSWARNING%
%VOSNAV%
---+ An Introduction to the Virtuoso Sponger
%TOC%
---++ What is the Virtuoso Sponger?
The Sponger is a piece of built-in Virtuoso SPARQL Processor middleware, for extracting RDF "on the fly" from non-RDF Web Data Sources.
----++ Why Is It Important?
A majority of the world's data naturally resides in non-RDF form at the current time. The "Sponger" is middleware that accelerates the bootstrap of the Semantic Data Web by unobtrusively generating RDF from non-RDF data sources.
---++ How Does It Work?
When an RDF-aware client requests data from a network-accessible resource via the Sponger, the following events occur:
1 A request is made for data in RDF form, and if RDF is returned, no further transformation happens -- the RDF Entities are returned to the client
1 If RDF isn't returned, then the Sponger passes the data through a Metadata Extraction Pipeline process (using Metadata Extractors)
1 The extracted data is transformed to RDF via a Mapping Pipeline process (RDF is extracted by ontology matching and mapping) that generates RDF Entities (instance data)
1 RDF Entities are returned to the client
The imported data forms a local cache with invalidation rules conforming to those of traditional HTTP clients (Web Browsers). That is to say, expiration time is determined based on subsequent data fetches of the same resource (note: the first data load will record the '<code>expires</code>' header) with current time compared to expiration time stored in the local cache. If HTTP '<code>expires</code>' header data isn't returned by the source data server, then the Sponger will derive it's own invalidation time frame by evaluating the '<code>date</code>' header and '<code>last-modified</code>' HTTP headers. Irrespective of path taken, local cache invalidation is driven by an assessment of current time relative to recorded expiration time.
---+++ Sponger Architecture
Architecturally, the Sponger is comprised of Cartridges which are themselves comprised of RDF Extractors (RDFizers) and Ontology (Schema) Mappers.
The Schema Mappers are typically written with XSLT (e.g., GRDDL and other OpenLink Mapping Schemes) or Virtuoso PL. The Metadata Extractors may be developed in Virtuoso PL, C/C++, Java, or any other language that can be integrated into Virtuoso via its server extension APIs.
---++++ Sponger Components
* [[VirtSpongerCartridge][Cartridge]]
* [[VirtSpongerCartridgeExtractor][Ontology Mapper]]
* [[VirtSpongerCartridgeOntologyMapper][Target Ontology]]
* [[VirtSpongerCartridgeRDFExtractor][Data Extractor]], e.g., [[VirtProgrammerGuideRDFCartridge][RDF Cartridge Programmer Guide]]
* [[VirtSpongerProxyWebServiceRest][Proxy]]
* [[VirtSpongerCartridgeSupportedDataSources][OpenLink Cartridge-Supported Data Sources]]
---++++ Web Service Interface
The Sponger can be used also via a Virtuoso built-in REST style Web Service, through the [[VirtSpongerProxyWebServiceRest][Proxy]] endpoint of any Virtuoso installation.
<i>*Note*: The <code><nowiki>cartridges_filesystem.vad</nowiki></code> must be installed for the actual extraction and mapping to occur. </i>
The Sponger is very much like an implementation of cURL, exposed as a built-in Virtuoso Web Service (so you can interact with it as you do with Triples).
---++++ Packaging & Deliverables
The RDF Cartridges (mappers and extractors) are packaged as Virtuoso VAD packages, easily installed via Virtuoso's ISQL interface or the browser-based Virtuoso Conductor.
---+++ Simple Usage Examples
Enter the following URIs into 3rd Party RDF Client Application or Service:
* [[http://demo.openlinksw.com/proxy?url=http://fgiasson.com&force=rdf][Virtuoso Demo Server Proxy]] - same as using <code>[[http://fgiasson.com][http://fgiasson.com]]</code> as a URI in the OpenLink Browser (which has built-in support for /proxy)
* A Googlebase Query Service URI for Job vacancies - <code>[[http://www.google.com/base/feeds/snippets?bq=%20%5Bemployer:%20Hewlett-Packard%5D%20%20%5Bjob%20type:full-time%5D][http://www.google.com/base/feeds/snippets?bq=%20%5Bemployer:%20Hewlett-Packard%5D%20%20%5Bjob%20type:full-time%5D]]</code>
* [[http://flickr.com/search/?w=all&q=semanticweb&m=tags][Non-RDF URI ]] to demonstrate the Sponger via:
* <code>[[http://dpedia.openlinksw.com:8890/proxy][http://dpedia.openlinksw.com:8890/proxy]]</code>
* <code>[[http://dbpedia.openlinksw.com:8890/DAV/JS/rdfbrowser/index.html][http://dbpedia.openlinksw.com:8890/DAV/JS/rdfbrowser/index.html]]</code> -- click on the *Images* tab
---++Related
* [[http://www.openlinksw.com/blog/~kidehen/?id=1172][Kingsley Idehen Weblog Post about RDF Middleware]]
* [[http://fgiasson.com/blog/index.php/2007/03/28/making-the-bridge-between-the-web-and-the-semantic-web][Frederick Giasson Weblog Post about RDF Middleware and including examples of "/proxy" usage]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparqlprotocolendpoint.html#rdfproxyservice][Sponger Proxy Service Documentation]]
* [[RDFMappers][RDF Mappers Programmers Guide]]
* [[http://docs.openlinksw.com/virtuoso/rdfiridereferencing.html][Documentation - Dereferencing URIs & Linked Data]]
CategoryRDF CategoryVirtuoso
%VOSCOPY%
|