RDF API hooks

Last modified: February 17, 2008 - 05:57

The RDF API exposes the following Drupal hooks that third-party extension modules can implement to provide extended functionality:

hook_rdf()

Allows modules to take action when RDF statements are inserted or deleted.

Example of usage

<?php
/**
* Implementation of hook_rdf().
*/
function mymodule_rdf($op, $subject, $predicate, $object) {
  switch (
$op) {
    case
'insert':
     
// A new statement was asserted
     
break;
    case
'delete':
     
// An existing statement was unasserted
     
break;
  }
}
?>

hook_rdf_namespaces()

Defines URI abbreviations for use in CURIEs and QNames.

Example from the RDF API module

<?php
/**
* Implementation of hook_rdf_namespaces().
*/
function rdf_rdf_namespaces() {
  return array(
   
'_'        => 'http://bnode.net/',
   
'rdf'      => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
   
'rdfs'     => 'http://www.w3.org/2000/01/rdf-schema#',
   
'xsi'      => 'http://www.w3.org/2001/XMLSchema-instance#',
   
'xsd'      => 'http://www.w3.org/2001/XMLSchema#',
   
'owl'      => 'http://www.w3.org/2002/07/owl#',
   
'dc'       => 'http://purl.org/dc/elements/1.1/',
   
'dcterms'  => 'http://purl.org/dc/terms/',
   
'dcmitype' => 'http://purl.org/dc/dcmitype/',
  );
}
?>

hook_rdf_contexts()

Defines contexts, also known as named graphs.

Example from the RDF API module

<?php
/**
* Implementation of hook_rdf_contexts().
*/
function rdf_rdf_contexts() {
  return array(
   
url(NULL, array('absolute' => TRUE)),
  );
}
?>

hook_rdf_repositories()

Defines RDF repositories.

Example from the RDF DB module

<?php
/**
* Implementation of hook_rdf_repositories().
*/
function rdf_db_rdf_repositories() {
 
$repos = array();
  foreach (
rdf_db_get_repository_names() as $name => $table) {
   
$repos[$name] = array(
     
'title'      => $name,
     
'type'       => 'local',
     
'persistent' => TRUE,
     
'mutable'    => TRUE,
     
'enabled'    => TRUE,
     
'statements' => rdf_db_count_repository_triples($name),
     
'callbacks'  => array(
       
'insert'   => array(
         
'function' => 'rdf_db_rdf_insert',
         
'arguments' => array($table)
        ),
       
'delete'   => array(
         
'function' => 'rdf_db_rdf_delete',
         
'arguments' => array($table)
        ),
       
'query'    => array(
         
'function' => 'rdf_db_rdf_query',
         
'arguments' => array($table)
        ),
      ),
    );
  }
  return
$repos;
}
?>

hook_rdf_formats()

Defines RDF serialization formats.

Example from the RDF API module

<?php
/**
* Implementation of hook_rdf_formats().
*/
function rdf_rdf_formats() {
  return array(
   
'rdf+php' => array(
     
'title'       => t('RDF/PHP'),
     
'mime_type'   => 'application/vnd.php.serialized',
     
'encoding'    => 'ascii',
     
'file_ext'    => 'txt',
     
'serialize'   => 'rdf_serialize_php',
     
'unserialize' => 'rdf_unserialize_php',
    ),
  );
}
?>

 
 

Drupal is a registered trademark of Dries Buytaert.