The SPARQL Entity Storage module offers a
SPARQL backend for Drupal entities. The
module provides an entity storage and query. Simply enabling the module, doesn't
bring any user visible new feature, the module is a prerequisite for other
modules that are defining Drupal entities that requires a SPARQL triple-store
backend. A very simple example of such an entity is the sparql_test
entity
provided in the SPARQL Test testing module, included in this package (see
the SparqlTest class).
A more sophisticated module that uses the SPARQL backend, and runs already in
the wild, is the RDF Entity module.
The entity provided there (rdf_entity
) can be used as it is, can be extended
or, simply, used as an example when designing a new entity type.
A working SPARQL endpoint is needed. You could either use a remote SPARQL endpoint, or you could set one up locally. Virtuoso is one of the more robust triple store solutions available, but any solution would do.
@todo Create an example module that uses http://dbpedia.org/sparql
apt-cache search "^virtuoso"
will show you available packages.
$ apt-get install virtuoso-opensource
$ service virtuoso-opensource-6.1 start
(Set the password during installation)
- Install Homebrew (see http://brew.sh)
$ brew install virtuoso
- Start Virtuoso
# The version might be differnet than 7.2.4.2. $ cd /usr/local/Cellar/virtuoso/7.2.4.2/var/lib/virtuoso/db $ virtuoso-t -f &
- Administer at http://localhost:8890/conductor/. Login with dba/dba.
- Install the Virtuoso AUR package.
# systemctl start virtuoso
Go to http://localhost:8890/conductor/ and login in with: dba - yourpass.
- Grant 'update' rights to the SPARQL user:
- System admin -> Users -> SPARQL (edit)
- Account roles -> Put SPARQL_UPDATE in 'Selected'
The following example demonstrates the use with a local Virtuoso installation. To connect Drupal to the endpoint, the db connection should be added to the settings.php file.
$databases['sparql_default']['sparql'] = [
'prefix' => '',
'host' => '127.0.0.1',
'port' => '8890',
'namespace' => 'Drupal\\Driver\\Database\\sparql',
'driver' => 'sparql',
// Optional. This is actually the endpoint path. If omitted, 'sparql' will
// be used.
'database' => 'data/endpoint',
// If the connection to the endpoint should be HTTPS secured. If omitted,
// FALSE is assumed.
'https' => FALSE,
];
Entities using SPARQL storage support basic content translations. This is still WIP.
Note: If content translations are enabled, the 'langcode' property must be mapped, otherwise entity reference fields will not store information.