rdf_example.module in Examples for Developers 7
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.moduleView 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
Name | Description |
---|---|
rdf_example_help | Implements hook_help(). |
rdf_example_rdf_mapping | Implements hook_rdf_mapping(). |
rdf_example_rdf_namespaces | Implements hook_rdf_namespaces(). |