This email is about how to integrate RDF store bindings into SMW on a 
coarse architectural level.

 From looking at the various extensions' code and at the previous 
emails, we seem to agree that we need some common interface to 
read/write RDF stores. Different bindings could then be done by 
implementing this interface.

Here is my proposal for the classes that will help to do this in the end 
(inspired by the existing code):

== SMWStore ==

SMW as such interacts with an object that implements the "SMWStore" 
interface. This interface will be extended with functions needed to do 
SPARQL queries. Details depend on how the mapping to SMWQueryResult 
objects will work and remain to be decided.

== SMWExternalStore ==

An SMWStore that has bindings to an external RDF store still uses the 
MySQL database backend for some of the data. Some requests are answered 
with the database, others are forwarded to the external store.

So any SMWExternalStore uses two backends: one RDF store binding and one 
(database-based) SMWStore class. In existing implementations, this is 
often realised by sub-classing SMWSQLStore2. But I think it would 
usually be better to use SMWSQLStoreLight.

To preserve the choice, SMWExternalStore could simply take two objects 
on initilaisation: one SMWStore object that is used for the basic 
storage tasks, and one RDFStore object that allows us to access the RDF 
store. Implementers would not have to change SMWExternalStore, but only 
adapt the RDFStore binding to a new RDF backend.

== RDFStore ==

This would be the backend to access RDF stores. It is similar to the 
SparqlTools static class in LinkedWiki. I propose to make it non-static, 
so that the endpoint and graph can be part of the object instance 
instead of being passed with each call.

The big question is, which functions are needed in the interface of 
RDFStore. I will send another email about this.

== Other RDF store bindings ==

For implementing bindings to RDF stores, it would be enough to implement 
the interface of RDFStore (hopefully just a few methods). So we could 
have a few rather small files for different backends.


Summary: To define an SMWStore backend that uses an RDF store, one only 
has to implement a new RDFStore subclass "MyRDFStore" that can 
communicate with the store. One then creates a new SMWStore as an 
instance of SMWExternalStore that is initialised with two objects: basic 
SMWStore (e.g. SMWSQLStoreLight) object and a MySQLStore object. The 
MySQLStore object would possibly need information about the service 
endpoint and graph name for initialisation (but this depends on the 
implementation; some stores do not support graph names, and others are 
not accessed by a service endpoint).


-- Markus

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel

Reply via email to