rdf_example.module

This is an example outlining how a module can be used to define RDF mappings. We define mappings for a node type defined in this module. We also customize mappings for a node type that is defined in another module, node_example.

File

rdf_example/rdf_example.module

View source
<?php


/**
 * @file
 * This is an example outlining how a module can be used to define RDF mappings.
 * We define mappings for a node type defined in this module. We also customize
 * mappings for a node type that is defined in another module, node_example.
 */

/**
 * @defgroup rdf_example Example: RDF
 * @ingroup examples
 * @{
 * Example RDF Mapping.
 */

/**
 * Implements hook_rdf_mapping().
 *
 * This hook should only be used to define the RDF mapping for an entity or
 * bundle that has been defined by this module. On installation, this mapping
 * will be saved to the database. To alter anything in this mapping after module
 * installation (or to alter bundles defined in another module), the RDF CRUD
 * functions should be used, as shown below.
 */
function rdf_example_rdf_mapping() {
    return array(
        array(
            'type' => 'node',
            'bundle' => 'recipe',
            'mapping' => array(
                'rdftype' => array(
                    'v:Recipe',
                ),
                // We don't use the default bundle mapping for title. Instead, we add
                // the v:name property. We still want to use dc:title as well, though,
                // so we include it in the array.
'title' => array(
                    'predicates' => array(
                        'dc:title',
                        'v:name',
                    ),
                ),
                'recipe_summary' => array(
                    'predicates' => array(
                        'v:summary',
                    ),
                ),
                // The photo URI isn't a string but instead points to a resource, so we
                // indicate that the attribute type is rel. If type isn't specified, it
                // defaults to property, which is used for string values.
'recipe_photo' => array(
                    'predicates' => array(
                        'v:photo',
                    ),
                    'type' => 'rel',
                ),
            ),
        ),
    );
}

/**
 * Implements hook_rdf_namespaces().
 *
 * This hook should be used to define any prefixes used by this module that are
 * not already defined in core by rdf_rdf_namespaces.
 *
 * @see hook_rdf_namespaces()
 */
function rdf_example_rdf_namespaces() {
    return array(
        // Google's namespace for their custom vocabularies.
'v' => 'http://rdf.data-vocabulary.org/#',
    );
}

/**
 * Implements hook_help().
 */
function rdf_example_help($path, $arg) {
    switch ($path) {
        case 'examples/rdf_example':
            return "<p>" . t("The RDF Example module provides RDF mappings for a custom node type and\n        alters another node type's RDF mapping.\n        You can check your RDF using a <a href='!parser'>parser</a> by copying\n        and pasting your HTML source code into the box. For clearest results,\n        use Turtle as your output format.", array(
                '!parser' => url('http://www.w3.org/2007/08/pyRdfa/#distill_by_input'),
            )) . "</p>";
    }
}

/**
 * @} End of "defgroup rdf_example".
 */

Functions

Title Deprecated Summary
rdf_example_help Implements hook_help().
rdf_example_rdf_mapping Implements hook_rdf_mapping().
rdf_example_rdf_namespaces Implements hook_rdf_namespaces().