133 lines
3.7 KiB
Markdown
133 lines
3.7 KiB
Markdown
# Mapping Standards
|
|
|
|
Mapping Standards are declarations of standards of metadata. Once they are available and activated in your repository, you can map the metadata of your collections to them.
|
|
|
|
## Structure
|
|
|
|
A Mapping Standard has the following attributes.
|
|
|
|
### Name
|
|
|
|
String $name
|
|
|
|
The name of the Mapping Standard.
|
|
|
|
### Metadata
|
|
|
|
Array or false $metadata
|
|
|
|
A list of metadata, terms or attributes that this mapping have. These are the element you will be able to map your Collection's Metadata.
|
|
|
|
Each metadatum has the following attributes:
|
|
|
|
* slug - The metadatum name, that refers to the name of the attribute in the origin vocabulary or ontology (e.g. title)
|
|
* label - The human readable name
|
|
* URI - The URI of this term/attribute in the origin Ontoloy/Vocabulary
|
|
* metadata_type - The prefered type for the metadatum
|
|
|
|
Array of:
|
|
```
|
|
['slug'] => [
|
|
'URI' => 'http://...',
|
|
'label' => 'Label',
|
|
'metadata_type' => 'date',
|
|
]
|
|
```
|
|
### Allow additional custom metadata
|
|
|
|
Boolean $allow_extra_metadata
|
|
|
|
Boolen indicating wether this mapping allows additional custom metadata to be added.
|
|
|
|
### Context URL / Vocab URL
|
|
|
|
String $context_url
|
|
|
|
The URL of the Ontology or vocabulary. For example `http://schema.org` or `http://dublincore.org/documents/dcmi-terms/`
|
|
|
|
### Type
|
|
|
|
String $type
|
|
|
|
The Class of the ontology that this mapping refers to. For example `CreativeWork`, which is a class of Schema.org, if applied
|
|
|
|
### Header
|
|
|
|
String $header
|
|
|
|
The header to be append to API answer, like for Dublin Core, if we need to add RDF to xml header when using Dublin Core as mapper, so:
|
|
```
|
|
public $header = '<?xml version="1.0"?><!DOCTYPE rdf:RDF SYSTEM "http://dublincore.org/2000/12/01-dcmes-xml-dtd.dtd"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" ></rdf:RDF>';
|
|
```
|
|
|
|
### Prefix
|
|
|
|
String $prefix
|
|
|
|
The optional prefix for the key labels, like ```dc:``` for Dublin Core in XML exposing.
|
|
|
|
### Registering a new mapper
|
|
For register a new mapper, the action need to be added to `tainacan-register-exposer-mappers` hook, like:
|
|
```
|
|
function myNewMapper($exposers) {
|
|
$exposers->register_exposer_mapper('Tainacan\Exposers\Mappers\NewMapper');
|
|
}
|
|
add_action('tainacan-register-exposer-mappers', 'myNewMapper');
|
|
```
|
|
|
|
## Examples
|
|
|
|
```
|
|
namespace Tainacan\Exposers\Mappers;
|
|
|
|
/**
|
|
* Support Dublin Core Mapping
|
|
* http://purl.org/dc/elements/1.1/
|
|
*
|
|
*/
|
|
class Dublin_Core extends Mapper {
|
|
public $slug = 'dublin-core';
|
|
public $name = 'Dublin Core';
|
|
public $allow_extra_metadata = true;
|
|
public $context_url = 'http://dublincore.org/documents/dcmi-terms/';
|
|
public $header = '<?xml version="1.0"?><!DOCTYPE rdf:RDF SYSTEM "http://dublincore.org/2000/12/01-dcmes-xml-dtd.dtd"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" ></rdf:RDF>';
|
|
public $prefix = 'dc:';
|
|
public $metadata = [
|
|
'contributor' => [
|
|
'URI' => 'http://purl.org/dc/elements/1.1/contributor',
|
|
'label' => 'Contributor'
|
|
],
|
|
'coverage' => [
|
|
'URI' => 'http://purl.org/dc/elements/1.1/coverage',
|
|
'label' => 'Coverage'
|
|
],
|
|
'creator' => [
|
|
'URI' => 'http://purl.org/dc/elements/1.1/creator',
|
|
'label' => 'Creator'
|
|
],
|
|
...
|
|
```
|
|
|
|
```
|
|
namespace Tainacan\Exposers\Mappers;
|
|
|
|
class CreativeWorks extends Mapper {
|
|
public $name = 'Schema.org Creative Works';
|
|
public $slug = 'creative-works';
|
|
public $metadata = [
|
|
'name' => [
|
|
'label': 'Name',
|
|
'URI': 'http://schema.org/name'
|
|
],
|
|
'alternativeHeadline' => [
|
|
'label': 'Alternative Headline',
|
|
'URI': 'http://schema.org/alternativeHeadline'
|
|
],
|
|
... And so on...
|
|
],
|
|
public $allow_extra_fields = false;
|
|
public $context_url = 'http://schema.org';
|
|
public $type = 'CreativeWork';
|
|
}
|
|
```
|